Как стать автором
Обновить
164
0.3

Человек

Отправить сообщение

Zig для меня — это новый C

Время на прочтение9 мин
Количество просмотров18K

По случаю выхода версии 0.11.0 языка Zig я решил написать статью о том, что привлекло меня в языке, что мне в нём нравится. В Zig есть ряд интересных решений. И я рассматриваю его, как альтернативу языку C. Так собственно его позиционируют его создатели. И не без причин. Причина, по которой я решил изучать Zig - я не захотел полноценно учить C. Многое в C исторически устарело. И Zig для меня, как глоток свежего воздуха.

Читать далее
Всего голосов 31: ↑30 и ↓1+39
Комментарии111

Не как у людей — история проекта 1tracker

Уровень сложностиСредний
Время на прочтение23 мин
Количество просмотров4.8K

Весной 2012 года я опубликовал первую версию экспериментального мультисистемного кроссплатформенного музыкального редактора с интерфейсом типа «трекер» — 1tracker v0.1. Экспериментальность заключалась в проверке новых подходов и отказе от общепринятых стандартов для подобного рода программ. Прошло десять лет, редактор до сих пор экспериментальный, до сих пор мало кому известен, и до сих пор не добрался до версии 1.0. Тем не менее, он регулярно пригождается нескольким странным людям на планете, а новые концепции вполне успешно выдержали проверку временем, хотя вряд ли когда-нибудь станут новым стандартом. Пора выйти из сумрака и рассказать обо всём этом подробнее. И заодно про историю трекеров.
Читать дальше →
Всего голосов 64: ↑64 и ↓0+64
Комментарии15

sqlite-gui: еще один редактор SQLite для Windows

Время на прочтение7 мин
Количество просмотров16K
Всё начиналось как простое средство для выполнения запросов к SQLite базе с сохраняемой историей запросов и кода в редакторе, написанное по старинке на WinAPI. Потихоньку оно обросло функционалом, и, если бы я с самого начала знал во что это выльется, то не взялся бы.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии9

Бардак в идеальном мире. Часть 1

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров28K

Откуда берëтся динамический хаос в простейших механических системах? Как его изучать? А это настоящий хаос или просто что-то очень сложное?

Я начинаю мини-серию статей, в которой мы будем понемногу знакомиться с элементами теории хаоса. За последние полвека сформировался набор классических примеров, кочующих из одного популярного введения в другое: аттрактор Лоренца, логистическое уравнение, двойной маятник, подкова Смэйла и т.п. Я, конечно, их упомяну, но мне бы хотелось показать что, кроме классики, есть хаотические системы, обойдённые вниманием, но, тем не менее, имеющие малую размерность и вполне ясные физические модели, при этом способные порождать красивые и сложные, примеры хаотического поведения, поддающиеся объяснению.

Это пример небольшого исследования, доступного студентам младших курсов, поэтому я позволю себе привести некоторые подробности анализа, которые искушённому читателю могут показаться излишними. Моя задача показать, что даже очень простые системы могут быть очень интересными, красивыми и доступными для глубокого анализа. И, конечно же, это повод показать симпатичные картинки, как правило, фрактальные. Ведь все же любят фракталы, верно? Ну, поехали!

Читать далее
Всего голосов 153: ↑153 и ↓0+153
Комментарии60

Изучаем данные, собранные Xiaomi Mi Band за год

Время на прочтение3 мин
Количество просмотров83K

Введение


Люди носят фитнес-браслеты по разным причинам, я могу предположить некоторые из них:


  1. Для того, чтобы поддерживать себя в форме и выполнять цели по активности;
  2. Потому что это некая модная штучка;
  3. Чтобы ставить над собой эксперименты или узнать себя лучше.

Я ношу фитнес браслет по причине номер 3. В этой заметке я хочу рассказать о том, как можно извлечь данные из браслета и попробовать получить некоторые зависимости.


Методы для извлечения этих данных работают для Mi Band 1, 1S и, возможно, 2 (приложение для 2, кажется, такое же).

Читать дальше →
Всего голосов 53: ↑49 и ↓4+45
Комментарии74

Звучащий код — пишем музыку на языке ByteBeat

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров8.5K

Дорогой Хабр, через два месяца мне предстоит организовать и провести фестиваль компьютерного искусства, поэтому я уже сейчас собираю информацию про необычные проявления демосцены, на которые обычно никто не обращает внимания. Язык программирования для генеративной музыки ByteBeat — это как раз то, что я ищу.

Как вы догадались, глядя на заглавную картинку, сейчас будет нечто, очень похожее на язык программирования Lisp. Все примеры рабочие, их можно запустить прямо в браузере.

Послушать пример из заглавной картинки: [sarpnt][greggman]

Читать далее
Всего голосов 25: ↑25 и ↓0+25
Комментарии13

21 фича современного C++, которые вам обязательно пригодятся

Время на прочтение10 мин
Количество просмотров32K

Итак, судьба снова свела вас с C++, и вы поражены его возможностями с точки зрения производительности, удобства и выразительности кода. Но вот незадача: вы теряетесь в этом многообразии замечательных новых фич и, как следствие, затрудняетесь сходу определить, что из этого всего вам действительно стоило бы взять на вооружение в своей повседневной работе по написанию кода. Не стоит расстраиваться, в этой статье вашему вниманию будут представлены 21 новая фича современного C++, которые помогут сделать ваш проект лучше, а работу над ним легче.

Сообщество C++ дополняет стандарт чаще, чем Apple выпускает новые iPhone. Благодаря этому C++ теперь больше похож на большого слона, а съесть целого слона за один присест невозможно. Вот почему я решил написать эту статью, чтобы дать вашему путешествию по современному C++ своего рода отправную точку. Моя целевая аудитория здесь — люди, которые переходят со старого (т.е. 98/03) С++ на современный (т.е. 2011 и далее) С++.

Я отобрал ряд фич современного C++ и постарался объяснить их на лаконичных примерах, чтобы вы научились определять места, где их можно использовать.

Читать далее
Всего голосов 52: ↑47 и ↓5+53
Комментарии160

Альбом биперной музыки Ear Shaver и история его создания

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров3.5K

Этой весной выпустил свой новый альбом биперной музыки для ZX Spectrum 48K — Ear Shaver. Послушать без дополнительных прелюдий можно в прикреплённом видео или на разнообразных музыкальных площадках.

Читать далее
Всего голосов 37: ↑37 и ↓0+37
Комментарии38

taichi.js: Программируем на WebGPU без боли

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров3.4K

Привет, Хабр! Сегодня хочу предложить вашему вниманию перевод на русский язык статьи моего коллеги и хорошего приятеля Dunfan Lu. Он создал taichi.js - open-source фреймворк для программирования графики на WebGPU, и написал подробный туториал как его использовать на примере знаменитой "Игры жизни". Уверен, эта сложная и красивая работа на стыке технологий рендеринга и компиляции не оставит вас равнодушными. - пр. переводчика.

Читать далее
Всего голосов 14: ↑14 и ↓0+14
Комментарии1

Как принять сигнал мобильной связи на приёмник цифрового телевидения: теория и практика

Уровень сложностиСредний
Время на прочтение20 мин
Количество просмотров26K
image

Несмотря на вроде бы абсурдный заголовок, принять и декодировать сигналы мобильной связи действительно можно на телевизионный приёмник, хотя и с некоторыми оговорками. Не все и не на любой приёмник, но такая возможность есть. Чтобы вам это выполнить самим, понадобятся:

  • ноутбук,
  • DVB-Т-приёмник в виде USB-брелока,
  • свободный флеш-накопитель для записи дистрибутива Linux на него.

Чтобы лучше разобраться в работе GSМ, нужно два мобильных телефона или телефон и GSM-модем.

Если вас заинтересовала эта тема, и вы хотите расширить свои знания, добро пожаловать под кат.
Читать дальше →
Всего голосов 124: ↑124 и ↓0+124
Комментарии22

Пишем игру от первого лица в 2КБ на Rust

Уровень сложностиСредний
Время на прочтение21 мин
Количество просмотров14K

Введение


Поначалу кажется, что создать игру от первого лица без движка или графического API практические невозможно. В этом посте я расскажу, как это сделать при помощи алгоритма под названием ray casting.

Моя цель — показать, что сложную задачу можно разбить на более простые части, и если я всё сделаю правильно, то у вас появится ощущение, что вы сами открыли, как работает игра.

Для начала разберёмся, как работает алгоритм, а затем построчно напишем его. Затем мы пересмотрим код, добавим несколько возможностей и оптимизируем его размер. Я постарался сделать пост максимально доступным и дружелюбным, но вам поможет приличное знание программирования, Rust и основ геометрии.
Читать дальше →
Всего голосов 61: ↑60 и ↓1+76
Комментарии10

Идеи для тех, кто хочет собрать свои часы

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров20K
Картинка twizz.ru

Каждый самодельщик рано или поздно приходит к тому, что ему вот прямо сейчас необходимо создать свои часы. Зачем, почему — никто не знает. Если вы пришли к такому же пониманию, «их есть у меня». А именно — собственный хит-парад самодельных часов, которые позволят как комплексно прокачать скиллы в сборке, программировании и т. д., так и украсят любой дом своим присутствием.

В этой статье умышленно будут обойдены вниманием известные проекты часов, изготовленные из радиоламп или вращающейся линейки светодиодов, установленной на диске вышедшего из строя старого HDD, так как мы постараемся остановиться на более неизвестных и эффектных экземплярах, и если известные проекты и будут затронуты, то совсем чуть-чуть :-)
Читать дальше →
Всего голосов 63: ↑57 и ↓6+73
Комментарии31

Путешествие в космос или введение в симплекс-метод для школьников

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров9.5K

На Хабре уже были публикации о симплекс-методе раз и два. И они очень даже хороши. Но это не те публикации, которые расчитаны на школьников или учителей школ. Я же хотел обратить внимание на одну довольно старую статью, вышедшую в журнале "Юный техник" в августе 1985 года. Естественно, она была нацелена на школьников. И мне давно хотелось разобрать её детально...

Ключ на старт!
Всего голосов 56: ↑56 и ↓0+56
Комментарии15

Шпионские устройства для контактного и бесконтактного получения информации

Время на прочтение7 мин
Количество просмотров48K


Делаем шпионское устройство своими руками из подручных средств


Существует множество различных способов шпионажа. Наверняка каждый из вас слышал о прослушивании с помощью лазера, либо через батареи отопления, либо при помощи микрофонов вмонтированных в стены здания. И всё это окутано каким-то мистическим смыслом, хотя на самом деле это просто и доступно для понимания и повторения каждым. А главное, все собирается из подручных средств.
Всего голосов 53: ↑49 и ↓4+64
Комментарии29

Как собрать самодельный принтер/плоттер

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров21K
Картинка youtube-канал «stefanopadoan art»

Есть один весьма примечательный вид ЧПУ-устройств, который не оставит равнодушным никого — самодельный принтер.

Мало того, что он является хорошим демонстратором принципов числового программного управления, задействуя все основные его элементы, но может также применяться для конкретных практических задач.

И именно об интересных путях создания подобного устройства мы и поговорим в этой статье.
Читать дальше →
Всего голосов 48: ↑47 и ↓1+66
Комментарии41

Технология ABENICS: революция в области механики?

Время на прочтение5 мин
Количество просмотров36K

Прорыв в инженерии, о котором говорит весь интернет. Почему-то на Хабре нет, так что решил рассказать.

Итак, ABENICS — это Active Ball Joint Mechanism. Проект разработан Университетом Ямагата в Японии, и являет собой специальную сферическую механическую конструкцию для возможных новых сервоприводов с шаровым шарниром. По сути, это новая форма шестеренки, которая стала возможна благодаря развитию технологий и повышению точности производства.

Читать далее
Всего голосов 83: ↑81 и ↓2+104
Комментарии103

Как создать свою СУБД с нуля и не сойти с ума. Практическое пособие начинающему некроманту. Часть первая

Время на прочтение43 мин
Количество просмотров29K

Наступил Апокалипсис.

Нет, не стоит бежать запасаться банками с консервами и крышками отечественной бай-колы! Апокалипсис произошёл только в нашей фантазии и с определённой целью — чтобы проверить, а может ли человек, обладающий только книгами по теме и стандартной библиотекой языка, воссоздать инструмент, который будет служить ему верой и правдой?

Так родился учебный проект SicQL, реляционная СУБД, чей символ — сова — это олицетворение силы знаний и мудрости. Олицетворение тех знаний и той мудрости, которые мы получим, создав с нуля то, чем мы пользуемся каждый день, может, не осознавая всей сложности таких инструментов.

Приглашаю присоединиться к увлекательному путешествию!

Принять приглашение на борт
Всего голосов 54: ↑53 и ↓1+64
Комментарии62

Раскрываем секреты загрузочных ISO-образов

Время на прочтение20 мин
Количество просмотров91K


В этой статье я хочу поговорить об ISO-файлах, на которых, как известно, распространяются дистрибутивы операционных систем. Начиная писать статью, я немного сомневался в её актуальности, так как я ассоциировал ISO-образы с оптическими дисками, которые, ввиду ряда причин, уходят в прошлое. У меня было стойкое понимание, что ISO-файлы в основном нужны только для хранения образов оптических дисков, которые содержат установщик операционной системы. Но, как оказалось, всё гораздо сложнее и интереснее, особенно применительно к современному железу.
Читать дальше →
Всего голосов 193: ↑193 и ↓0+193
Комментарии73

Краткий справочник по «всем-всем» командам Linux

Уровень сложностиСредний
Время на прочтение74 мин
Количество просмотров163K

Периодически меня на начальном курсе просят дать "список всех-всех команд с кратким описанием что делает"... Ну прям "всех-всех". И ведь если искать в интернете "такие" справочники существуют - либо про "20-30 команд, но самых важных", либо с неточностями и устаревшей информацией. Так что предлагаю вашему вниманию свою версию такого "краткого" справочника (на 300, 515, 612, 716, 842, 1005, 1110 команд) с ссылками на wiki-описание и на cheat.sh-примеры наиболее важных команд.

Справочник по всем-всем командам LINUX
Всего голосов 105: ↑102 и ↓3+120
Комментарии114

Давайте уберём кватернионы из всех 3D-движков

Время на прочтение13 мин
Количество просмотров30K
image

Для записи трёхмерных поворотов программисты графики используют кватернионы. Однако в кватернионах сложно разобраться, потому что изучают их поверхностно. Мы просто принимаем на веру странные таблицы умножения и другие загадочные определения, и используем их как «чёрные ящики», поворачивающие векторы так, как нам нужно. Почему $\mathbf{i}^2=\mathbf{j}^2=\mathbf{k}^2=-1$ и $\mathbf{i} \mathbf{j} = \mathbf{k}$? Почему мы берём вектор и превращаем его в «мнимый» вектор, чтобы преобразовать его, например $\mathbf{q} (x\mathbf{i} + y\mathbf{j} + z \mathbf{k}) \mathbf{q}^{*}$? Да кому это интересно, если всё работает, правда?

Существует способ описания поворотов под названием ротор, который относится к области и комплексных чисел (в 2D), и кватернионов (в 3D), и даже обобщается до любого количества измерений.

Мы можем создавать роторы практически полностью с нуля, вместо того, чтобы определять из ничего кватернионы и пытаться объяснить, как они работают задним числом. Это занимает больше времени, но мне кажется, что это стоит того, потому что их гораздо легче понять!

Кроме того, для визуализации и понимания трёхмерных роторов не нужно использовать четвёртое пространственное измерение.

Было бы здорово, если бы начали вытеснять использование и изучение кватернионов, заменяя их роторами. Заменить их очень просто, а код останется почти таким же. Всё, что можно делать с кватернионами, например, интерполяцию и устранение блокировки осей (Gimbal lock), можно сделать и с роторами. Но понимать мы начинаем гораздо больше.
Читать дальше →
Всего голосов 54: ↑53 и ↓1+52
Комментарии85

Информация

В рейтинге
2 153-й
Откуда
Россия
Работает в
Зарегистрирован
Активность