Рубрика «ненормальное программирование» - 105

Вдохновившись проектом Google Glass, я подумал, как хорошо было бы сделать крайне простой, но мощный инструмент дополненной реальности специально для таких очков. И почему бы не сделать его на основе такой широко используемой технологии как QR-коды. Так родилась задумка языка QuRava — набора байтов, записанных в QR-коде и интерпретируемого в полноценную программу, реализующую часть возможностей языка Java.

Хочу сразу предупредить, что все нижеизложенное — альфа-версия, сделано за несколько вечеров. Поэтому по поводу маленьких возможностей сильно не ругайтесь и вопросов про отсутствие лямбда-исчисления не задавайте.
Пишем свой интерпретируемый шестнадцатиричный язык программирования для QR кодов
Читать полностью »

Шведский студент Джестер Огвист (Jesper Öqvist) получил в универе домашнее задание: написать самую маленькую программу C, которая вылетает с ошибкой (segfault). Обычно студенты в таких ситуациях используют деление на ноль.

int main()
{
    return 1/0;
}

Из этого кода ещё можно удалить пару байтов, если вместо инструкции использовать присвоение значения переменной.

int main()
{
    i=1/0;
}

Читать полностью »

VNC через GIFПолгода назад на Хабре излагалась идея GIF-сокетов — коммуникаций в реальном времени, используя анимированный GIF в качестве транспорта.

Идея в том, что в формате анимированного GIF'а не указывается количество фреймов, так что после отображения картинки браузер ждёт новых фреймов с сервера до тех пор, пока не получит сигнальные биты о конце файла. Другими словами, сервер легко может пушить в браузер сообщения по открытому каналу в GIF.

Сегодня на гитхабе опубликована программка vnc-over-gif, которая элегантно использует этот принцип. Программа снимает скриншоты экрана и транслирует их через анимированный gif.
Читать полностью »

Википедия о Драконе.
Дракон иногда называют правильными блок-схемами. Но в первую очередь он отлично подходит для записи алгоритмов.
Внутри НПЦ АП (Научно-производственный центр автоматики и приборостроения) Дракон используется с помощью закрытой технологии ГРАФИТ-ФЛОКС. За рамками НПЦ АП есть открытые технологии, на которых можно писать реальные программы на гибридных языках Дракон-Си, Дракон-Delphi, Дракон-1С, Дракон-ASM, Дракон-Erlang и т.д.

Доклад читает Владимир Паронджаров в Институте проблем управления РАН им.Пилюгина.

Текстовая версия данного доклада
Читать полностью »

Вступление

Добрый день уважаемые читатели!

Описанные ниже способ поможет сократить количество рутинной работы при настройке коммутаторов (например Planet, D-Link и др.) в случаях, когда необходимо выполнить несколько десятков — сотен однотипных операций вроде объявления виланов, добавления их на интерфейсы, экспорта конфигурационных файлов на tftp сервер. Безусловно решение далеко не оптимальное и рациональное, но, надеюсь, имеет право на жизнь.
Настройка производится через подключение по протоколу telnet. Увы, не смотря на то что современные свитчи поддерживают ssh и snmp, многие старые железки разумеют только telnet. Способ подойдет для среднего пользователя Windows, не программиста, т.к. используется всего лишь блокнот и пакетные bat файлы (просьба неровнодышащим к параолимпийским играм программистов дальше не читать).
Читать полностью »

Немного обо мне

Я занимаюсь промышленной автоматикой. Буквально от головы до задницы, т.е. от полевого уровня (датчики/исполнительные механизмы) до верхнего (программирование ПЛК/разработка SCADA). Так получилось, что больше всего я занимался наладкой, но последний год — преимущественно разработкой. Кроме того, для меня программные и аппаратные средства делятся на Siemens и всё остальное.

О проекте

Суть проекта заключается в обновлении систем автоматики на довольно большом количестве насосных станций (водонапорных и канализационных). Кроме собственно обновления, была поставлена задача собирать и передавать текущие значения ряда параметров в общую диспетчерскую для централизованного архивирования и наблюдения. Территориально всё это хозяйство находится в Нижней Галилее, в Израиле.
На момент начала работ средства автоматики на разных станциях представляли собой весьма разнообразный зоопарк: от контроллеров ET-200S CPU на более свежих станциях до релейной логики на более старых. На текущий момент на разных станциях работают контроллеры Siemens, Twido (Schneider), Koyo, GE Fanuc.
Получилось так, что формально этот проект реализует Schneider Electric, наша компания является субподрядчиком. Это определило выбор SCADA для диспетчерской (Vijeo Citect) и контроллеров для станций, где требуется их замена.

Читать полностью »

Игра Жизнь и преобразование ФурьеМногие слышали о великом и ужасном быстром преобразовании Фурье (БПФ / FFT — fast fourier transform) — но как его можно применять для решения практических задач за исключением JPEG/MPEG сжатия — зачастую остается неясным вопросом.

Недавно я наткнулся на интересную реализацию игры «Жизнь» Конвея, использующую быстрое преобразование Фурье(!!!) — и надеюсь, оно поможет вам понять всю силу и универсальность этого алгоритма.Читать полностью »

Тёплый деревянный звук

Аманда Гассей, которая несколькими месяцами ранее умудрилась распечатать на 3D-принтере работающую грампластинку, продолжает безумствовать. Опираясь на наработки из предыдущей серии экспериментов, теперь она с помощью скриптов на Python и Processing преобразовала файл MP3 в программу для 120-ваттного лазерного резака Epilog Legend 36EXT и смогла вырезать грампластинку из дерева и даже из плотной бумаги. Характеристики несколько хуже, чем у записей, распечатанных на 3D-принтере — 4-5 бит и 4,5 кГц. Как и в прошлый раз, подробное описание эксперимента и все использованные скрипты опубликованы на Instructables.

Читать полностью »

imageВ предыдущем топике я обещал подробнее описать особенности программирования промышленных PLC, и почему такое программирование все больше напоминает разработку обычного софта. О языке IEC61131-3 (промышленном диалекте Паскаля) я уже писал, также хорошим вступлением можно считать вот этот хабратопик. Этот пост — о компиляторах PLC, средах разработки, особенностях программирования и эволюции языка и экосистемы.
Читать полностью »

Задача: Язык javascript. Имеется большой массив объектов. Нужно выбрать из массива некоторые объекты, в зависимости от значений свойств этих объектов.

Внимание! Всё нижеследующее возможно дикий баян и скорее всего стрёмный велосипед. Приведённый код опытным программистам отрубает пальцы, а неопытных разрывает в клочья.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js