eddy_em: (Костерок)
Я решил набросать веб-морду для управления ИК-спектрометром IRBIS, для чего опять понадобилось прикручивать вебсокеты. И опять пришлось ковыряться в предыдущем коде (веб-морда для простой управлялки на raspberry Pi). Чтобы впредь не нужно было заниматься чисткой кода, я решил сделать минимальный пример, позволяющий общаться через очередь сообщений: код на гитхабе.

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

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

Остается теперь придумать метод авторизации/аутентификации. Простейшее, что приходит в голову — при соединении сервер отсылает "соль", клиент шифрует введенный пароль этой "солью" и отсылает серверу. А тот проверяет, все ли ОК.
Нужно лишь найти вменяемые MD5 или SHA на жабоскрипте.

P.S. Полдня убил на верстку базы веб-морды! Совсем уже этот HTML забыл. Пытался верстать блоками, но ничего не вышло. Решил по-старому — вложенными таблицами.
eddy_em: (Костерок)
Мой старый велосипед для обработки параметров командной строки перестал меня устраивать, т.к. не давал возможности указывать один и тот же параметр несколько раз (скажем, для сложных конвейеров), поэтому на его основе родился новый велосипед.
Велосипед изобилует ужасами вроде
void **aptr = *((void***)paptr);
...
result = (*((void**)aptr) = (void*)strdup(optarg));

и т.д., и т.п. (можно почитать код вместо принятия рвотных веществ ☺).
пример )
eddy_em: (Костерок)
Т.к. ЛОР-вики скоро канет в /dev/null, я решил кое-какие свои заметки перенести сюда.

Автоподключение модема huawei при помощи udev


Текст )

Звук по сети


Текст )

Локализация


Текст )

Монтирование разделов на сменных носителях при помощи udev


Текст )

Клавиатура Microsoft NEK 4000


Текст )

Инициализация генератора псевдослучайных чисел


Текст )
eddy_em: (Костерок)
Сегодня целый день провозился с реализацией простого интерфейса управления подвижкой 8MT175-150 при помощи подключаемого к компьютеру по USB драйвера SMSD-1.5. Одной из "особенностей" документации к драйверу была досадная "очепятка" в протоколе управления.
Теперь остается разобраться с узлом крепления диагонального зеркала (да и само зеркало заалюминировать), и можно будет собирать и юстировать наш БТА-комбайн для измерения поправок АСУ и оценки качества поверхности главного зеркала.
И не могу не похвастаться )
eddy_em: (hram nauki)
У меня появилось желание добить-таки наконец свой fitsview-hartmann, а для этого нужно добавить туда декомпозицию нормалей к волновому фронту по ортонормированному на кольце базису векторных полиномов. Для этого сначала надо реализовать разложение/восстановление волнового фронта по полиномам Цернике. Кстати, это еще пригодится мне в модели зеркала (можно будет помимо получения маски искажений формы зеркала из файла-изображения добавить возможность указания величины этих искажений коэффициентами Цернике).
немного кода )
eddy_em: (hram nauki)
Графики из предыдущей темы (блин, обнаружил, что я вчера все делал в /tmp, а перенести в ~/Dropbox забыл! Поэтому все изменения пошли коту под хвост, уцелело лишь то, что в ЖЖшке выложил, так что посчитать коэффициенты не могу, а тесты заново делать ломает) показывают, что зависимость скорости вычислений от количества пикселей на объекте (а также — количества объектов и их размера) имеет степенной вид, причем степень довольно плавно изменяется при изменении размера изображения.

Таким образом, если время вычислений T = Nm, где N - количество пикселей на изображении, то разбиение изображения на M кусков может позволить ускорить вычисления в том случае, если
T1 = M·[(N/M)m + t(sqrt(N/M))] < T.
Здесь t - время выполнения операции слияния границ соседних блоков с соответствующей ремаркировкой.

подробности )
eddy_em: (hram nauki)
Итак, как я уже говорил в предыдущей записи, алгоритм китайцев у меня заработал. Вот — сравнение с моим:
graph
Производительность, по вертикали — логарифм времени выполнения операции, по горизонтали — корень из количества пикселей на картинке. Синее, красное, розовое — мое; зеленое, голубое и желтое — китайцев. Верхняя пара кривых — для 50% соотношения пикселей изображения и фона; средняя — для 10%; нижняя — для 90%.
Подробности )
eddy_em: (hram nauki)
Итак, как я уже говорил в предыдущей записи, за время, бесцельно проведенное в Нижнем Новгороде, кое-что полезное я таки сделал. В этой записи расскажу о реализации операций эрозии и диляции.
Подробности )
В следующей заметке изложу эпопею поиска оптимального алгоритма выделения связанных областей. Но для начала надо отрихтовать "китайский" вариант, чтобы работал правильно. Ну и подумать насчет параллелизации (мало ли: вдруг на пару порядков быстрей будет).
eddy_em: (hram nauki)
А вот и простейшая реализация двоичных деревьев.
код )
Можно еще добавить операции вроде foreach, но пока лень.
eddy_em: (hram nauki)
Сегодня я увидел этот вопрос на stackexchange. Сначала просто сделал комментарий, но потом решил: а ведь стоит сделать реализацию дерева и двунаправленного списка, пригодится же когда-нибудь!
Для начала — то, что попроще: двунаправленный список. Реализация )
Деревья реализовал пока только поверхностно (сунул в ответ на stackoverflow), нужно еще воткнуть удаление узла + (возможно) построение пути до узла. А еще можно было бы над более сложными деревьями подумать.
P.S. Т.к. пока реализации тупо на уровне "сниппетов", в них нет самого важного — данных. Но это легко реализуется добавлением нужного типа данных в структуры.

September 2025

S M T W T F S
 123456
78910 111213
14151617181920
21222324252627
282930    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 14th, 2025 03:17 am
Powered by Dreamwidth Studios