Pull to refresh
135
0
Алексей @UA3MQJ

Инженер программист

Send message

Десять лет программирования на Erlang

Reading time 14 min
Views 20K

Я присоединился к сообществу Erlang около 10 лет назад, посреди первой фазы хайпа. Нам говорили, что Erlang — это будущее конкурентности и параллелизма. Реализовать их на этом языке проще и быстрее всего, и вы ещё получите бесплатную распределённость. В то время будущее казалось невероятным. Виртуальная машина недавно получила поддержку SMP, но чтобы действительно использовать все процессоры, приходилось запускать на одном компьютере несколько виртуальных машин.

Я хочу поразмышлять о прошедшем десятилетии. В этой статье я расскажу о фазах хайпа в отношении Erlang, о лестнице идей в языке и о её возможном влиянии на распространение языка, о том, через какие перемены я прошёл за эти 10 лет. И в заключение поделюсь своими мыслями о том, что Erlang ещё предстоит привнести в сообщество программистов в целом.
Total votes 71: ↑69 and ↓2 +67
Comments 11

Где в ZX Spectrum системный монитор? Загадка ПЭВМ Дуэт

Reading time 6 min
Views 21K
ПЭВМ Дуэт — это российский клон ZX Spectrum 48k, производился Лианозовским электромеханическим заводом (ЛЭМЗ). Это мой самый первый компьютер и он со мной до сих пор. С юного возраста я начал постигать на нем азы программирования, микропроцессорных архитектур и проектирования цифровых схем. Но с тех пор мне не давал покоя вопрос: где системный монитор? Ведь он упоминается в документации. В стандартном ZX Spectrum я не припомню наличия какого-либо системного монитора. И в документации про системный монитор больше ни слова. Существует Монитор для 48к в ПЗУ версии от 1990г. Однако, после включения, ПЭВМ Дуэт выводит на экран вместо стандартного приветствия — "(с) 1982 sinclair research ltd" другое приветствие: "(с) DUET". А это значит, что ПЗУ там всё же изменено. А может быть есть аппаратные возможности мониторинга? К примеру, клон Орель БК-08 имеет целый ряд доработок: теневое ОЗУ, кнопка NMI и монитор MZ80. Было бы очень интересно, спустя столько лет, найти какие-то скрытые возможности своей железки.

Наконец-то я нашел ответ на вопрос, который меня периодически волновал все эти годы.

image
Заняться цифровой археологией
Total votes 32: ↑32 and ↓0 +32
Comments 35

Простейший HTTP сервер на Golang и Elixir. Сравнение производительности

Reading time 10 min
Views 32K

image
Пару недель назад, я решил взять простейший пример HTTP сервера на Go и измерить его производительность. Потом я смело взял Phoenix, прогнал на тех же тестах, и расстроился. Результаты были не в пользу Elixir/Erlang (45133 RPS у Go и всего 3065 RPS у Phoenix). Но Phoenix — это тяжело. Надо что-то хотя бы примерно равное по простоте и логике разработки тому, что есть на Go: когда есть путь — "/" и handler для него. Логичной аналогией мне показалось решение cowboy + plug, где у нас есть Router, который так же ловит "/" и отвечает на него. Результаты убили — Elixir/Erlang опять оказался медленнее:


Golang
sea@sea:~/go$ wrk -t10 -c100 -d10s http://127.0.0.1:4000/
...
  452793 requests in 10.03s, 58.30MB read
Requests/sec:  45133.28
Transfer/sec:      5.81MB

elixir cowboy plug
sea@sea:~/http_test$ wrk -t10 -c100 -d10s http://127.0.0.1:4000/
...
  184703 requests in 10.02s, 28.57MB read
Requests/sec:  18441.79
Transfer/sec:      2.85MB

Как жить дальше? Две недели я не спал и не ел (почти). Все, во что я верил все эти годы: совершенство vm erlang, ФП, зеленые процессы, было растоптано разорвано, сожжено и пущено по ветру. Немного отойдя от шока, успокоившись, и подтерев сопли я решил разобаться, в чем дело.

Читать дальше →
Total votes 55: ↑44 and ↓11 +33
Comments 42

Отладочная плата ПЛИС — Франкенштейн. Контроллер елочных гирлянд

Reading time 5 min
Views 7.9K

Очередная серия про ПЛИС и отладочную плату Френки. Предыдущие серии 1, 2, 3.


Сделать контроллер елочных гирлянд не просто, а очень просто! Hello World на ПЛИС — это помигать светодиодом. А "С новым годом" на ПЛИС — это помигать несколькими светодиодами. Принцип прост, как и в предыдущих статьях: создаем счетчик, который делит частоту тактового генератора, выбираем биты из слова счетчика, для получения нужной скорости. Несколько бит из этого слова дадут нам определенный шаг отображения (в зависимости от количества выбранных бит 1, 2, 4, 8 и т.д. шагов). В зависимости от номера шага задаем значения для N светодиодов.


Для управления реальной гирляндой, можно взять какой-нибудь shield с электромагнитным реле. У меня оказался вот такой, на 8 реле. Схема подключения. Принципиальная схема.


Дальше
Total votes 18: ↑15 and ↓3 +12
Comments 19

Отладочная плата ПЛИС — Франкенштейн. Звуки и музыка

Reading time 8 min
Views 8.5K

Сегодня у нас самая предновогодняя серия про ПЛИС и отладочную плату Френки. Предыдущие серии 1, 2.


Мы уже передавали тоновые сигналы по радио с помощью нашей платы Франкенштейн. Теперь попробуем воспроизводить звуки и музыку.


Для этого подключим к ПЛИС обычный динамик. К Френки подключен генератор на 25.175 МГц. Если поделить эту частоту до диапазона слышимых частот и подать на вывод ПЛИС, то мы можем услышать звук. Меня частоту мы можем получить разные звуки.


Тестировать качество звучания будет самый лучший слухач в доме — Маша. Диапазон частот в 60 КГц — это вам не шутки! )))


Разовьем эту идею
Total votes 15: ↑15 and ↓0 +15
Comments 19

Отладочная плата ПЛИС — Франкенштейн. Часы. Altera EPM7064 VS Lattice LC4064v

Reading time 4 min
Views 7.8K

Продолжение предновогодней серии приключений маленькой ПЛИС Altera EPM7064 на отладочной плате — Франкенштейн. В предыдущей серии...


Настала пора сравнить две ПЛИС из одной весовой категории: Altera EPM7064 и Lattice LC4064v. Хотя, один у них — только вес — это 64 макроячейки. В остальном, судя по параметрам, у этих ПЛИС совсем разные назначения. ПЛИС от Altera, судя по документации 2005 года, является просто не молодой, от этого и обладает низким количеством ячеек. Так же, обладает популярным по тем временам напряжением питания — 5 вольт. Максимальная рабочая частота не превышает 200 МГц. В то же время Lattice может работать до частот в 400 МГц, но при этом, питается от напряжения — 3.3 вольта. Да, это не так удобно, как 5 вольт, если мы хотим взаимодействовать со старыми схемами (однако, заявлена толерантность к 5В). В документации на Lattice этой серии указан 2014 год, поэтому я предположу, что это современные высокоскоростные ПЛИС, но малого объема, и судя по "SuperFAST CPLD" в описании, позиционируются они несколько иначе.


Как нам их сравнить? Попробуем решить на них одну и ту же задачу. Часы на Lattice LC4064v мы уже попробовали сделать и у нас получилось. Теперь попробуем сделать часы на Altera EPM7064 — на нашем Франкенштейне.


Узнать, что вышло
Total votes 16: ↑15 and ↓1 +14
Comments 5

Отладочная плата ПЛИС — Франкенштейн. Телеграфный передатчик

Reading time 6 min
Views 14K
Бегут последние деньки уходящего года. Предновогодняя суета. А для тех, у кого выдалась свободная минутка на работе, я предлагаю серию статей про самодельную отладочную плату на базе ПЛИС Altera EPM 7064.



Недавно мне потребовалось найти пару 1U корпусов под мой проект. И в качестве альтернативы новым, мы решили поискать старые приборы в 1U формате, внутренности выкинуть, а корпус использовать по назначению. Но, открыв корпус, я был приятно удивлен! Целых четыре ПЛИС от Altera, да к тому же 5 вольтовых. Я не смог удержаться, чтобы одну из них не попробовать в деле!

Паяльной станции у меня нет, ЛУТ технологию я не практикую. Поэтому я взял строительный фен на 250 градусов и отковырял микросхему ПЛИС от платы. Переходной платы для такого корпуса у меня тоже не было, поэтому я взял обычную макетку, впаял в нее стойки и с помощью накрутки и пайки, соединил выводы микросхемы со стойками. Вывел разъем JTAG и питания, прикрутил генератор. Это все, что нужно для начала работы с микросхемой

Что можно сделать из такой маленькой ПЛИС? Радиолюбители решают такую проблему очень просто: в любой непонятной ситуации мы делаем передатчики! Из чего? Да из чего угодно, что под руку попало в данный момент! А сегодня у нас Altera EPM7064.
V - Я люблю трэш!
Total votes 27: ↑26 and ↓1 +25
Comments 11

Занимательная задачка «Несчастливый билет» (Elixir edition)

Reading time 10 min
Views 6K
Я не смог пройти мимо поста о несчастливом билете. Это одна из моих любимых задач. К тому же, комбинации в решении были запрограммированы вручную, а было бы интересно перебрать все варианты алгоритмически. Я захотел решить эту задачу, используя Elixir.

Если вам интересно, что из этого вышло или даже установить и повторить, то я прошу вас под кат.
Подробнее
Total votes 11: ↑10 and ↓1 +9
Comments 16

Информация для адмиралов космических флотилий

Reading time 4 min
Views 16K


Докладная записка


Мой Адмирал, ваш флот насчитывает сотни, а может и тысячи кораблей. Все они действуют, как единый организм, действуя в одном информационном поле. В качестве канала связи используется радиоэфир, либо лазерная связь в случае работы в условиях радиоподавления (либо радиомолчания). Вероятнее всего, в качестве базового программного обеспечения, на кораблях используется Erlang, а каждый корабль является Нодой вычислительного кластера вашей космической армады. Благодаря этому, боевые программы, выполняемые на флагманском корабле, могут управлять ресурсами любого корабля армады, как своими собственными, координируя боевое взаимодействие. В условиях ведения космической битвы в окрестностях нашей солнечной системы, такой подход показал высокую эффективность, как на испытаниях, так и в реальном бою. Однако, партия ставит перед нами новую задачу: не допускать проникновения противника в пределы нашей солнечной системы, обнаружение противника и борьбу с ним вести на дальних рубежах.

В условиях субсветовых скоростей и огромных расстояний нас подстерегает новый враг. На этот раз технический. Этого врага зовут «временной разрыв» (Time Warp). Что это такое и как с ним бороться (используя Erlang версии 18 и выше), изложено в данной докладной записке. Записка основана на технической документации — Time and Time Correction in Erlang.
Читать дальше →
Total votes 37: ↑36 and ↓1 +35
Comments 27

Hello, World! На ПЛИС. Мигаем светодиодом

Reading time 1 min
Views 13K
Мигаем светодиодом, с помощью ПЛИС Altera Cyclone iv, ПО Quartus и языка Verilog.
В этом видео я рассказываю о том, как сделать мигалку светодиодом: создам проект, напишу модуль, назначу выводы ПЛИС и прошью микросхему.

Пожалуйста, прибавьте громкость.



PS. Как выяснилось, Хабр не любит смотреть видео. Статья оставлена, как пример для других хаброписателей.
Total votes 15: ↑7 and ↓8 -1
Comments 11

Часы на ПЛИС Lattice

Reading time 19 min
Views 33K
Некоторое время назад, хаброжитель DmitrySpb79 написал статьи о создании электронных часов. В них он рассмотрел источники точного времени, а так-же элементную базу для создания электронных часов. Были упомянуты Arduino, STM, Raspberry PI, ESP8266, но совсем забыли про ПЛИС.

Давайте заполним этот небольшой пробел. Узнаем, на сколько просто сделать часы на ПЛИС и какие аппаратные ресурсы для этого потребуются. К тому же, мне подарили микросхему ПЛИС очень малого объема — 64 макроячейки. Это ПЛИС LC4064v фирмы Lattice с которыми я до этого никогда не работал. Я думаю, будет интересно!

Цели:

  • попытаться уместить логику работы часов в ПЛИС малого размера (64 макроячейки);
  • освоить статическую либо динамическую светодиодную индикацию на ПЛИС для вывода времени;
  • собрать кучу граблей, связанных с самостоятельной разработкой схем и получить новый опыт;
  • освоить новую среду разработки и программирования для ПЛИС фирмы Lattice, оценить сложность перехода

Меня ожидает несколько очень приятных вечеров, посвященных разработке на ПЛИС!

Добро пожаловать под кат!
Total votes 31: ↑31 and ↓0 +31
Comments 13

Коммутатор видеосигналов для ТВ

Reading time 2 min
Views 25K
Мой друг очень любит старые приставки: Dendy, Sega, PS и т. д. Однако, когда приставок много, а телевизор один, встает проблема постоянных переключений. Поэтому на день рождения я решил сделать для него подарок своими руками.

Китай предлагает коммутаторы, схемотехнические решения часто используют дорогие или редкие в наших краях микросхемы ВЧ-коммутаторов. А я решил проявить оригинальность и смастерить коммутатор на электромагнитных реле. Плюсы реле очевидны: гальваническая развязка; как и минусы: потребляемый ток. Изначально я хотел сделать коммутацию с помощью реле, а управление на ТТЛ логике, но в наличии были только 12В реле. Мне было лень делать два питания, согласовывание, поэтому и саму логику включения входов я сделал тоже на реле. Таким образом, получился коммутатор, собранный полностью на реле, без микроконтроллеров и даже логических микросхем.
Подробности
Total votes 20: ↑19 and ↓1 +18
Comments 22

Функциональный DDS rенератор на ПЛИС

Reading time 11 min
Views 73K
Недавно я увидел проект генератора сигналов на микроконтроллере AVR. Принцип генерации — DDS, на базе библиотеки Jesper максимальная частота — 65534 Гц (и до 8 МГц HS выход с меандром). И тут я подумал, что генератор — отличная задача, где ПЛИС сможет показать себя в лучшем виде. В качестве спортивного интереса я решил повторить проект на ПЛИС, при этом по срокам уложиться в два выходных дня, а параметры получить не строго определенные, а максимально возможные. Что из этого получилось, можно узнать под катом

Что получилось?
Total votes 26: ↑26 and ↓0 +26
Comments 36

ПЛИС — мои первые шаги

Reading time 11 min
Views 152K
Недавно я все-таки сделал свой первый шаг к ПЛИС и призвал вас за собой. Мое фанатическое увлечение ПЛИС и идея о том, что ПЛИС является лучшей платформой для создания любых устройств приобрела религиозный характер. Моя секта ПЛИСоводов проповедует полный отказ от микроконтроллеров, а особо экстремистская ветвь проповедует отказ не только от софт процессоров, но и вообще от последовательных вычислений!

Как всегда, постижению истин помогло решение реальных задач. В сегодняшней проповеди я хотел бы рассказать об испытаниях, которые выпадают на долю молодого ПЛИСовода. Преодолевая испытания мы постигаем истину. Но остаются вопросы, на которые я не нашел ответов. Поэтому я бы очень хотел, чтобы братья-хабровчане — ПЛИСоводы с опытом, поучаствовали в обсуждении, протянули руку помощи своим младшим собратьям.

Эта статья для новичков. В ней я опишу типичные проблемы, вопросы, заблуждения, ошибки, которые могут появиться в самом начале обучения (потому что они появились у меня). Однако, контекст статьи ограничен тем, что разработка ведется на ПЛИС от Altera в среде Quartus на языке Verilog.

Подробности
Total votes 37: ↑36 and ↓1 +35
Comments 41

Танки на ZX Spectrum

Reading time 1 min
Views 17K
Тема WOT сейчас очень популярна. Каюсь, сам грешен…

Давным давно, в 1984-м году, когда большинства современных танкистов еще не было даже в проекте, на ZX Spectrum вышла игра Tank Duel 3D!

Вид от первого лица, трехмерная графика, несколько видов танков! Мультиплеера, конечно, не было, но у нас тогда был только магнитофон. Особенностью физики игры является то, что снаряды летят медленно. Это дает возможность уворачиваться от них, как Нео (нажимаем назад и влево/вправо).

Совсем немного подробностей
Total votes 29: ↑27 and ↓2 +25
Comments 18

APRS

Reading time 12 min
Views 58K

APRS [1, 2] это протокол цифровой радиолюбительской связи. На базе этого протокола построена глобальная система связи. Её основные задачи: передача информации о координатах объектов в пространстве, обмен сообщениями, передача данных с погодных станций и многое другое.

О чем эта статья? Вообще APRS — большая, сложная и непонятная тема даже для большинства радиолюбителей. Но на Хабре радиолюбителей не очень много. Поэтому я бы хотел показать, что сам стандарт очень хорош и может применяться за пределами любительского радио. Существует много систем, где вопрос обмена сообщениями о координатах изобретается снова и снова (транспорт), придумываются форматы передачи информации, например, о погоде с погодных станций, разрабатываются способы передачи текстовых сообщений. Однако, если бы создатели этих систем знали о стандарте APRS то смогли бы не только сэкономить время(как минимум на разработку протокола), но и применить ряд уже готовых программных и аппаратных решений.

Большую часть своих знаний о системе я получил не из практического использования существующих программ и оборудования, а из разработки собственных программ и утилит для работы с ней [3, 4]. Информацию черпал из стандарта [5], исходных кодов Xastir[6], радиолюбительских форумов [7, 8] и из общения с радиолюбителями (всех и не счесть).

Если вы делаете:
  • погодную станцию;
  • систему двухстороннего обмена текстовыми сообщениями через интернет или радиоканал в виде децентрализованной системы с использованием других пейджеров, как ретрансляторов;
  • спутниковую сигнализацию;
  • мониторинг телеметрии удаленных станций;
  • запускаете воздушный шар;

Да и почти в любом случае, когда вы хотите построить систему передачи данных по радиоканалу и изобретаете для этого протокол, то у радиолюбителей есть наработки в виде различных цифровых видов связи и протокол APRS.

Интересно? Добро пожаловать под кат
Total votes 36: ↑36 and ↓0 +36
Comments 19

GOFUNDME — платформа для сбора средств на личные цели

Reading time 3 min
Views 235K


Существует несколько всем известных мировых краудфандинговых платформ. Первое место по сборам на проекты занимают Kickstarter и Indiegogo. После успешных сборов подразумевается, что проект должен быть выполнен.

Но есть другой вид сборов — на личные цели. Первое место среди таких площадок занимает GoFundMe. «Люди используют GoFundMe для того, чтобы собрать деньги на свадьбы, похороны и все, что происходит между этими событиями» [1]. И действительно, парнишка собирает деньги на свой первый PC, сбор на дизельный двигатель для дома на колесах, а у музыканта Мишеля украли макбук.

В русских источниках [2] пишут, что платформа общемировая, и можно начать сбор из любой точки мира. Если вы живете в США, то получить свои деньги можно через платежную систему WePay. Все остальные работают через PayPal. А если так, что я тоже решил попробовать организовать сбор на личные цели.

Хотите узнать ответ сразу?
Платформа не работает с Россией
Постараемся сохранить интригу до конца
Total votes 11: ↑7 and ↓4 +3
Comments 7

Монтаж накруткой. Самодельная макетная плата

Reading time 3 min
Views 99K

В прошлой статье мы рассмотрели технологию монтажа накруткой. Но практика — критерий истины. К тому же DIHALT задал конкретный вопрос о том, как же быть с деталями? Ясно, что детали ставятся на плату с одной стороны, а все соединения происходят с другой стороны (вроде бы логично, но как?). Для монтажа накруткой есть готовые платы, но они очень дорогие.

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

Читать дальше →
Total votes 41: ↑38 and ↓3 +35
Comments 33

Монтаж накруткой. Технология

Reading time 5 min
Views 183K

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

Есть и другие способы макетирования, но сегодня я напомню о монтаже накруткой [1, 2] — технологии, проверенной временем, удобной и надежной для макетирования и прототипирования. Более того, по этой технологии можно создавать конечные устройства, которые будут надежно работать много лет.

Читать дальше →
Total votes 121: ↑120 and ↓1 +119
Comments 49

Сделай шаг к ПЛИС

Reading time 7 min
Views 262K


Ты ждал знак? Вот он!

Много лет я не решался начать программировать ПЛИС, потому что это сложно, дорого и больно (как мне казалось). Но хорошо, когда есть друзья, которые помогают сделать первый шаг. И теперь я не понимаю одного — ПОЧЕМУ Я ЖДАЛ ТАК ДОЛГО?

Сейчас я помогу сделать первый шаг и тебе!

Я готов!
Total votes 69: ↑60 and ↓9 +51
Comments 90
1

Information

Rating
Does not participate
Location
Рыбинск, Ярославская обл., Россия
Date of birth
Registered
Activity