Обновить
0
Павел Рыбкин@DualFishread⁠-⁠only

QA Engineer

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

SQLite — не игрушка

Время на прочтение7 мин
Охват и читатели92K

Рассказываю, почему SQLite отлично подойдет вам в повседневной работе. И неважно, разработчик вы, аналитик, тестировщик, админ или продакт-менеджер.

Читать далее

Видеомонтаж, машинное обучение и взломанный xml — все в одной программе

Время на прочтение5 мин
Охват и читатели4.4K

По профессии я режиссер монтажа, а прикладное программирование как увлечение в свободное время.

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

Дело в том что почти треть работы видеомонтажера  заключается  в рутинном поиске видеоряда из исходников, которые надо каждый раз шерстить в поиске контекстного плана под закадровый текст, по моему это не несет никакой творческой составляющей, особенно когда ты занимаешься этим 15 лет). Ну и подумал я, а что если написать софтину, которая будет проходится по папке с исходниками, распознавать объекты, аккуратненько «складывать» их в БД. Далее, в момент поиска видео фрагментов для так называемой «джинсы», вводится поисковое слово, например «Солнце», и все что находится каким то образом передается в монтажную систему.

Идея зрела, собирался стёк, писать решил на Swift, обученные модели собственно Core ML, база данных SQLite. На первый взгляд идея казалась легко реализуемой, вроде ничего сложного.  

Очень быстро накидал основной код, который вытаскивает кадры из видео, распознает обьекты с помощью модели Resnet50, которую рекомендовали яблочники у себя на сайте, она очень шустро работала и позволяла настраивать процент при котором считать объект распознанным. Сам код спокойно раздается на том же apple.com  для всех желающих. Подключил библиотеку SQLite.swift, обернул ее функции в свои методы, все работает! 

Потом еще пришлось неплохо повозиться с алгоритмами создания очереди обработки списка файлов и в этот момент я обратил внимание что программа то разрослась! 

Читать далее

Кодирование Рида-Соломона для чайников

Время на прочтение14 мин
Охват и читатели45K

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

этой статьи

Радиация: детекторы. Часть первая, газоразрядная

Время на прочтение14 мин
Охват и читатели20K

Недавняя статья про опарафиненный детектор нейтронов побудила меня поднять старую тему и написать еще парочку статей на тему радиации. А именно -- про детекторы ионизирующих излучений.

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

Читать далее

Персональный экзокортекс, Зеттелькастен и программы для его реализации

Время на прочтение4 мин
Охват и читатели44K

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

Пока что мы далеки от проводов и чипов в голове, но уже сейчас имеем возможность использовать компьютер как эффективный внешний мозг.

Читать далее

Systemd для продолжающих. Part 2 — Триггеры на различные события

Время на прочтение5 мин
Охват и читатели22K

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

Попробовать стащить сыр!

Визуализация пересечений и перекрытий с помощью Python

Время на прочтение6 мин
Охват и читатели15K

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


Преобладающая задача в любом анализе данных — сравнение нескольких наборов чего-либо. Это могут быть списки IP-адресов для каждой целевой страницы вашего сайта, клиенты, которые купили определённые товары в вашем магазине, несколько ответов из опроса и многое другое.

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


Диаграмма Венна
Приятного чтения!

Как устроена силовая установка пассажирского самолета

Время на прочтение8 мин
Охват и читатели78K
Всем привет. Недавно я читал ликбез очередному студенту на тему общего устройства оборудования самолёта. Вводный рассказ, хоть и отработанный до автоматизма, отнял пару часов времени и выявил необходимость ещё в двух-трёх вводных. Но лень — двигатель прогресса и я наконец дозрел до оформления всех этих «лекций» в печатном виде. А там, где есть внутренняя методичка, недалеко и до публикации на Хабре: вдруг, кому ещё интересно почитать будет. 

Перед началом изложения хочу оговориться, что моя основная специализация — бортовое оборудование, так что из моего описания может вполне получиться «идеальный самолёт для технолога». Тех, кого этот подход не пугает, а также всех тех, кому интересно зачем в кабине экипажа нужны все эти кнопки и ручки — прошу оценить первую публикацию «Силовая установка».

Изучаем RISC-V с нуля, часть 1: Ассемблер и соглашения

Время на прочтение19 мин
Охват и читатели34K


Издеваться мы будем над микросхемой GD32VF103CBT6, являющейся аналогом широко известной STM32F103, с небольшим, но важным отличием: вместо ядра ARM там используется ядро RISC-V. Чем это грозит нам, как программистам, попробуем разобраться.


Кратко перечислю характеристики контроллера:


  • Напряжение питания: 2.6 — 3.6 В
    • Максимальная тактовая частота: 108 МГц
    • Объем ПЗУ (flash): 128 кБ
    • Объем ОЗУ (ram): 32 кБ
    • Объем Backup регистров (сохраняемых после сброса): 42 х 16 бит = 84 байта.
    • АЦП+ЦАП: 2 штуки АЦП по 10 каналов и 12 бит каждый плюс 2 ЦАП по 12 бит.
    • Разумеется, куча прочей периферии вроде таймеров, SPI, I2C, UART и т. д.

Видео вещание с OvenMediaEngine, до свидания nginx rtmp module

Время на прочтение8 мин
Охват и читатели35K


Когда Роман Арутюнян (rarutyunyan) выпустил модуль nginx-rtmp-module, это сильно перевернуло взгляд на доступность организации видеовещания. До этого, это казалось каким-то дорогим и сложным делом.

31 декабря Adobe официально хоронит флешплеер и убирает ссылки на скачивание с сайта. Это, конечно, не может не радовать. Эти засранцы то и дело подсовывали включенные по умолчанию галочки, так что даже продвинутому пользователю прилетал вместе с флешплеером еще и какой-то антивирус в лучшем случае. То, что это чудовище бесконечно просило обновлений ручками через браузер, знают все. Ходил даже анекдот, предлагающий создателям флешплеера законодательно ограничить паспорта сроком на 1 неделю с возможностью бесконечной перевыдачи.
Читать дальше →

Реверсим и улучшаем SATA контроллер

Время на прочтение14 мин
Охват и читатели49K

Вы когда-нибудь задумывались, как много вокруг умной электроники? Куда ни глянь, натыкаешься на устройство, в котором есть микроконтроллер с собственной прошивкой. Фотоаппарат, микроволновка, фонарик... Да даже некоторые USB Type C кабели имеют прошивку! И всё это в теории можно перепрограммировать, переделать, доработать. Вот только как это сделать без документации и исходников? Конечно же реверс-инжинирингом! А давайте-ка подробно разберём этот самый процесс реверса, от самой идеи до конечного результата, на каком-нибудь небольшом, но интересном примере!

Читать далее

Производительность приложений, работающих с Video и Audio

Время на прочтение5 мин
Охват и читатели2K


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


  1. Как работать с Video и Audio с максимальной точностью.
  2. Как оптимально обрабатывать данные с такой скоростью.
  3. Как оптимально обрабатывать данные, приходящие по websocket.

Перед рассмотрением каждого вопроса, хочу дать немного контекста.

Читать дальше →

Возможности SQLite, которые вы могли пропустить

Время на прочтение8 мин
Охват и читатели50K
Если вы используете SQLite, но не следите за его развитием, то возможно некоторые вещи, позволяющие сделать код проще, а запросы быстрее, прошли незамеченными. Под катом я постарался перечислить наиболее важные из них.
Читать дальше →

Команда find в Linux – мощный инструмент сисадмина

Время на прочтение5 мин
Охват и читатели456K


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


Команда find – это невероятно мощный инструмент, позволяющий искать файлы не только по названию, но и по:


  • Дате добавления.
  • Содержимому.
  • Регулярным выражениям.

Данная команда будет очень полезна системным администраторам для:


  • Управления дисковым пространством.
  • Бэкапа.
  • Различных операций с файлами.

Команда find в Linux производит поиск файлов и папок на основе заданных вами критериев и позволяет выполнять действия с результатами поиска.

Читать дальше →

Elite: Dangerous и CosmosDB

Время на прочтение25 мин
Охват и читатели15K

image


o7 cmdr!


Теплым карантинным вечером, в одном из телеграмных чатиков по Elite: Dangerous разгорелась дискуссия на тему: а у какого типа звезд чаще всего встречаются землеподобные планеты?


Дело в том, что исследование планет является одной из основных механик игры. А в иерархии полезности планет, землеподобные стоят на самом верху. Но и редкость их довольно высока. Так что командеры захотели узнать: на какие звезды прежде всего обращать внимание, при перемещении по млечному пути?


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

Читать дальше →

Как работает лазерная рулетка: реверс-инжиниринг

Время на прочтение22 мин
Охват и читатели122K
image Ранее в своей статье я рассказывал о том, как устроены фазовые лазерные дальномеры. Теперь пришло время разобраться с тем, как работают бытовые лазерные рулетки. Разобраться — это не просто заглянуть, что же там внутри, а полностью восстановить всю схему и написать собственную программу для микроконтроллера.
Читать дальше →

Создание тайлов из растровых карт

Время на прочтение6 мин
Охват и читатели5.7K
Как-то я озадачился вопросом создания карт, пригодных для использования в OsmAnd и OpenLayers. О ГИС я тогда вообще не имел ни малейшего понятия, поэтому разбирался со всем с нуля.

В статье расскажу о результатах своих «исследований», составим алгоритм преобразования произвольной растровой карты в тайлы, понятные для приложений и попутно познакомимся с такими понятиями как эллипсоид, датум, система координат, проекция.
Читать дальше →

G-code, потерявшийся брат Assembler-а

Время на прочтение11 мин
Охват и читатели46K
Про язык управления промышленными CNC-станками и всевозможными любительскими устройствами вроде 3D-принтеров написано очень много статей, но почитать о том, какова идеология этого языка и как она связана с аппаратной реализацией — почти негде. Поскольку моя работа связана непосредственно с программированием станков и автоматизацией производства, я попробую заполнить этот пробел, а также объяснить, почему выбрал такой странный заголовок.
Читать дальше →

Вы не можете сделать всё, и это нормально

Время на прочтение6 мин
Охват и читатели4.8K

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

Читать дальше →

ShareJS или как сделать свой Google Wave c OT и NodeJS

Время на прочтение4 мин
Охват и читатели10K


После двух лет работы над OT (техника разрешения конфликтов при совместном доступе к данным) для Google Wave, Джозефу(Joseph Gentle) пришла в голову идея, что для тех, кто захочет сделать аналогичный продукт, потребуется ни чуть не меньше времени. Чтобы как-то помочь этим людям и поделиться знаниями была написана библиотека ShareJS, представляющая собой реализацию OT на основе NodeJS. Также есть C-реализация.


Дак как мне уже запилить свой Wave?

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность