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

Sun, Mar 9, 2014

Radio apparatus and unidentified operator circa 1930

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

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

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

Sun, Jun 17, 2012


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

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

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

Wed, Aug 3, 2011

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

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

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

Thu, Jul 21, 2011

[][1]

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

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

Thu, Jul 14, 2011

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

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

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

Tue, Jul 5, 2011

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

[][1]

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

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

Mon, Jun 27, 2011

[][1]

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

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

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

Mon, Jun 20, 2011

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

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

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

Sun, May 29, 2011

Введение

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

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

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

Wed, Mar 23, 2011

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

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

Модуль для простых миграций

Sun, Jan 16, 2011

В [предыдущем посте][1] я рассказывал о модулях миграций для Коханы 3. К сожалению ни один из модулей мне не понравился или по каким-то причинам не подошёл.

Сейчас же, я хочу представить свой форк модуля для миграций. Он основан на [kohana-3-migrations][2]. И получился сам по себе лёгкий и лишённый нескольких детских болезней своего родителя.

Итак, [встречайте][3] :) (он пока без нового названия и в экспериментальной ветке)

Вкратце, что он умеет:

Миграции в Kohana 3.0.*

Wed, Jan 5, 2011

Недавно восторженные апологеты «yii» опубликовали новость о том что теперь их [фреймворк поддерживает миграции к базе данных][1]. Имея опыт работы с миграциями в doctrine, я давно уже задумывался об использовании миграций в кохане. И решил что настал момент самостоятельно во всём разобраться.

Kohana 3.1 RC1

Tue, Jan 4, 2011

Все мы любим получать подарки, и наши любимые разработчики Kohana, похоже, решили нас [поздравить][1] по-своему, [выпустив][2] первый релиз-кандидат Kohana версии 3.1.

PHP Code Sniffer для Kohana 3

Wed, Sep 22, 2010

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

Понятно, что после строительства Вавилонской башни, общепринятых требований только увеличилось. В том числе и для Kohana появились [специальные соглашения][1].

Универсальный git репозитарий для Kohana

Tue, Sep 21, 2010

Наверное многие из вас мучались в поисках нового модуля для Kohana, и мучались с периодическими обновлениями то системного ядра, то каких-либо модулей.

Про всё это можно забыть, если подключиться к git репозитарию, [kohana-universe][1], который содержит external (тут сложно назвать это понятно по-русски) ссылки на актуальные репозитарии со сторонними модулями и ядром системы.

Т.е. каждый раз обновляя этот репозитарий, вы обновляете и системное ядро, и все те 150+ модулей для Kohana.

Jelly — Добавляем тип поля «Изображение»

Sun, Sep 19, 2010

В дополнение к [отличной статье о Jelly][1] я решил рассказать о реализации типа поля «Image».

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

Перед созданием нового типа, нужно немного изменить класс Field_File в файле /modules/jelly/classes/field/file.php