Онлайн радио на Raspberry Pi

Radio apparatus and unidentified operator circa 1930

Так получилось, что с появлением телевидения и интернета, радио никуда не исчезло, а ушло в совершенно новый — иной формат, в формат потокового вещания.

У меня давно появилась идея создать приёмник онлайн радио, который был бы всегда доступен, и не зависел от компьютера. Для этого идеально подошёл мини компьютер Raspberry Pi B и старые, уже не нужные, 20-ваттные колонки.

Читать далее

Функции pack и unpack. Работа с бинарными данными.


Вероятно большинство веб-программистов никогда не работали напрямую с бинарными данными из php.

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

Сокеты — введение


Ещё один вид транспорта в unix системах, про который я пока не успел ничего рассказать — это сокеты.

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

Читать далее

Принимаем аргументы из командной строки

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

Консольные программы для работы с ipc функциями

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

Так как эти функции из php только транслируются на уровень ядра системы, поэтому многие инструменты уже разработаны и служат системным программистам верой и правдой уже много лет :-)
Читать далее

Демоны, shared memory и семафоры

Итак, продолжим тему системного программирования на php.

Мы уже научились работать с очередями, по которым можно пересылать небольшие системные сообщения, и наверняка, столкнулись с задачей передавать большие объёмы данных. В наших любимых системах типа System V уже давно решена задача быстрой передачи и сохранения больших данных в памяти. И этот механизм называется Shared Memory.

Читать далее

Демоны — очереди сообщений

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

В мире unix, существует немыслимое множество способов передать команду или сообщение от демона к веб-скрипту и наборот. Но сейчас я хочу рассказать только про очереди сообщений — «System V IPC Messages Queues».
Читать далее

Демоны — сигналы

Сигналы — введение

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

Демоны — Основы

Введение

Сегодня я расскажу один удивительный факт:

Большинство веб-разработчиков ни разу в своей жизни не писали демонов. И не то что бы им это было не нужно, они просто никогда не задумывались о том что бы написать демона.
Читать далее

Jelly — Пишем сложные запросы

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

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