Давным-давно (я уже не помню когда, но давно) я собрался и запустил для себя сайт. Сначала он использовался просто как склад того, что нужно кому-то передать. Потом совершенно случайно образовалось свободное время и получилось заполнить сайт чем-то осмысленным и (надеюсь) полезным. И очень захотелось быть в курсе событий, происходящих на сайте. Самое простое решение — отсылать письма, что и было сделано. Однако через некоторое время появилось желание избавиться от писем с сайта так как поток служебной почты в течении дня превышает разумные пределы.
maxic @maxic
Пользователь
распараллеливаем выполнение задач с помощью stream_select()
7 min
5.3KНе так уж много кто знает о том, что некоторые задачи в PHP можно заставить выполняться параллельно — и для не этого не нужно прибегать к форкам. В PHP5 есть stream-functions, и среди них — stream_select().
Прочитав статью Cameron Laird (http://www.ibm.com/developerworks/opensource/library/os-php-multitask/index.html?S_TACT=105AGX44&S_CMP=EDU), каждый, кто еще этого не сделал, сможет научиться этой технике, я же в этом топике предлагаю вашему вниманию простой небольшой класс Parastreams, который собсно займется распараллеливанием — а уж что делать с полученными из потоков данными — вы решите сами, указав обработчики данных.
Прочитав статью Cameron Laird (http://www.ibm.com/developerworks/opensource/library/os-php-multitask/index.html?S_TACT=105AGX44&S_CMP=EDU), каждый, кто еще этого не сделал, сможет научиться этой технике, я же в этом топике предлагаю вашему вниманию простой небольшой класс Parastreams, который собсно займется распараллеливанием — а уж что делать с полученными из потоков данными — вы решите сами, указав обработчики данных.
+41
Кластеризация memcached и выбор ключа кэширования
4 min
24KСерия постов под общим заглавием “Web, кэширование и memcached” продолжается. В первом мы поговорили о memcached, его архитектуре и возможном применении.
Сегодня речь пойдет о:
Следующий пост будет посвящен атомарности операций и счетчикам в memcached.
Сегодня речь пойдет о:
- выборе ключа кэширования;
- кластеризации memcached и алгоритмах распределения ключей.
Следующий пост будет посвящен атомарности операций и счетчикам в memcached.
+61
Средства для визуального проектирования
2 min
63KВсем известно, что для успешной разработки веб-сайта/веб-сервиса/программы (нужное подчеркнуть) очень важен этап проектирования. Грамотный план разработки — это половина всего проекта. Понятно, что прежде всего необходимо техническое задание, в котором будут описаны требования, сроки, и т.п. Но еще большее значение имеет визуальное проектирование, а именно: UML-схемы, схемы БД, пользовательские интерфейсы, эскизы страниц…
+37
UML, Классы и Отношения
10 min
68KСуществует много разработанных теорий, задокументированных технологий и парадигм программирования. Перед тем как углубиться с головой в их изучение было бы мудро изучить сам принцип взаимодействия программ и их структур. UML предлагаем вам разработанный стандарт что бы сделать это.
+47
120 dpi и шрифты в em
8 min
12K
Шрифты в Em/% хороши всем — возможностью пользователей IE увеличивать кегль, заботой о пользователях, что предпочитают увеличивать размер шрифта браузера по-умолчанию, чтоб лучше видеть текст, да и просто являются нормой для профессиональных верстальщиков.
Минусы: … их вроде как нет, но!
А что если у пользователя разрешение экрана выставлено не в стандартное 96 dpi, а в 120?
Сайт с увеличенными шрифтами смотрится уже не так красиво, как нарисовал дизайнер — ведь масштабируются только шрифты, а не весь сайт! А разрешение 120dpi становится всё популярней, особенно на ноутбуках! Что же делать? Возвращаться к px?
Нет!
+143
jQuery Timers
3 min
64KПри проектировании интерфейсов пользователя когда-нибудь обязательно встанет задача использования таймеров, и в этой статье я хочу рассказать о замечательном плагине jQuery Timers, который значительно облегчит работу по созданию и применению таймеров в Ваших приложениях.
jQuery Timers — это высокоуровневая абстракция методов setTimeout и setInterval. Используя jQuery Timers, Вы сможете «прикреплять» таймеры к элементам непосредственно в Вашем коде и использовать еще некоторые возможности.
Как обычно, сначала посмотрим пример, а потом разберем исходный код.
Пример и исходный код скачать можно здесь

jQuery Timers — это высокоуровневая абстракция методов setTimeout и setInterval. Используя jQuery Timers, Вы сможете «прикреплять» таймеры к элементам непосредственно в Вашем коде и использовать еще некоторые возможности.
Как обычно, сначала посмотрим пример, а потом разберем исходный код.
Пример и исходный код скачать можно здесь
+53
Zend Framework и многоязычность
3 min
6.3KВозникла у меня надобность создать многоязычный сайт используя ZF. Создал. Под катом расскажу как.
+8
Закачка ролика на ruTube с использованием cURL
6 min
4KНа хабре уже были топики, посвященные открытому API для работы с сервисом ruTube. В примере, который можно скачать с сайта ruTube (http://rutube.ru/partners/phpapi.html), отправка ролика осуществляется следующим образом (код взят из примера без правок):
+1
Борьба с червём GetCodec
1 min
745Сегодня ко мне в слезах прибежала жена — говорит, все MP3 испортились.
Пошёл смотреть. В Windows Media Player файлы проигрываются нормально, а в Winamp, iTunes и на айподе квакают, хрюкают и ведут себя крайне неподобающе.
Натравил на файлы NOD32. Антивирус опознал червя GetCodec, о котором несколько месяцев назад уже писали на Хабре. NOD32 пошуршал, сказал, что всё получилось, но файлы не вылечил.
Я открыл Гугл и стал разбираться. Выяснилось, что червь не пережимает файлы в WMA, а засовывает MP3-поток в контейнер ASF, а потом переименовывает обратно.
В интернете советовали похимичить с тегами, но это, само собой, не помогло. Пережимать файл в MP3 — тоже не вариант. Только через полчаса понял, что поток-то никуда не делся.
Выручил FFmpeg. Лёгким движением руки достаём звук и сохраняем в новый файл:
Пошёл смотреть. В Windows Media Player файлы проигрываются нормально, а в Winamp, iTunes и на айподе квакают, хрюкают и ведут себя крайне неподобающе.
Натравил на файлы NOD32. Антивирус опознал червя GetCodec, о котором несколько месяцев назад уже писали на Хабре. NOD32 пошуршал, сказал, что всё получилось, но файлы не вылечил.
Я открыл Гугл и стал разбираться. Выяснилось, что червь не пережимает файлы в WMA, а засовывает MP3-поток в контейнер ASF, а потом переименовывает обратно.
В интернете советовали похимичить с тегами, но это, само собой, не помогло. Пережимать файл в MP3 — тоже не вариант. Только через полчаса понял, что поток-то никуда не делся.
Выручил FFmpeg. Лёгким движением руки достаём звук и сохраняем в новый файл:
ffmpeg -i ill.mp3 -vn -acodec copy healthy.mp3
+62
Вышла новая сборка бесплатного сниффера 0x4553-Intercepter
1 min
18KСписок изменений можно посмотреть на официальном сайте — intercepter.nerf.ru
[0x4553-Intercepter] позволяет:
# Перехватывать пароли следующих типов: ICQ\IRC\AIM\ftp\IMAP\POP3\SMTP\LDAP\BNC\SOCKS\HTTP\WWW\NNTP\CVS\TELNET\MRA\DC++\VNC\MySql\Oracle
# Перехватывать сообщения таких IM систем как: ICQ\AIM\JABBER\YAHOO\MSN\GADU-GADU\IRC\MRA
# Менять MAC адреса сетевых карт.
# Просматривать трафик в сыром виде, с возможностью фильтрации.
# Специальный eXtreme режим для перехвата данных на не определенных портах.
# Сохранять пакеты в файл pcap формата и проводить оффлайн анализ дампов.
# Удаленный анализ трафика через RPCAP демона.
# Встроенный ARP poison.
# Перехват и сохранение в eml формате POP3SMTP сообщений.
Работает на Windows 9xNT(2KXP2k3Vista).
Детали работы программы описаны в файле-помощи внутри архива программы. Демонстрация основных функций представлена в двух видео-туториалах:
intercepter.nerf.ru/intercepter_tutor1.zip
1. ARP Poison
2. Remote Capture
3. ARP Defender
intercepter.nerf.ru/intercepter_tutor2.zip
1. eXtreme mode
2. MAC Changing
3. PCAP Offline Analyzing
Скачать 0x4553-Intercepter — intercepter.nerf.ru/0x4553-Intercepter.v076.zip
UPD: Технические вопросы и баг-репорты просьба задавать на форуме программы intercepter.mybb3.org
или по почте intercepter.mail@gmail.com
[0x4553-Intercepter] позволяет:
# Перехватывать пароли следующих типов: ICQ\IRC\AIM\ftp\IMAP\POP3\SMTP\LDAP\BNC\SOCKS\HTTP\WWW\NNTP\CVS\TELNET\MRA\DC++\VNC\MySql\Oracle
# Перехватывать сообщения таких IM систем как: ICQ\AIM\JABBER\YAHOO\MSN\GADU-GADU\IRC\MRA
# Менять MAC адреса сетевых карт.
# Просматривать трафик в сыром виде, с возможностью фильтрации.
# Специальный eXtreme режим для перехвата данных на не определенных портах.
# Сохранять пакеты в файл pcap формата и проводить оффлайн анализ дампов.
# Удаленный анализ трафика через RPCAP демона.
# Встроенный ARP poison.
# Перехват и сохранение в eml формате POP3SMTP сообщений.
Работает на Windows 9xNT(2KXP2k3Vista).
Детали работы программы описаны в файле-помощи внутри архива программы. Демонстрация основных функций представлена в двух видео-туториалах:
intercepter.nerf.ru/intercepter_tutor1.zip
1. ARP Poison
2. Remote Capture
3. ARP Defender
intercepter.nerf.ru/intercepter_tutor2.zip
1. eXtreme mode
2. MAC Changing
3. PCAP Offline Analyzing
Скачать 0x4553-Intercepter — intercepter.nerf.ru/0x4553-Intercepter.v076.zip
UPD: Технические вопросы и баг-репорты просьба задавать на форуме программы intercepter.mybb3.org
или по почте intercepter.mail@gmail.com
+52
MemcacheDB и MemcacheQ — ключевые компоненты высокопроизводительной инфраструктуры
5 min
7.6KCегодня мы поговорим о компонентах для высокопроизводительной и масштабируемой архитектуре на основе сервера memcached, а именно — распределённой базе для хранения данных MemcacheDB и системы очередей сообщений MemcacheQ.

Сначала рассмотрим, а что у нас есть в распоряжении для создания распределённой инфраструктуры хранения данных для веб-приложения. Ну, первое, что приходит в голову — кластеризация базы данных, это теперь поддерживается во всех распространённых системах, а также различные технологии репликации. Например, самая популярная СУБД для веб-проектов, MySQL поддерживает как репликации так и кластеризацию. Ещё можно обратится к традиционным файловым система и хранить данные в файловой системе, к примеру, Apache Hadoop. Но часто это слишком высокоуровневое решение, обычно же требуется гораздо проще варианты — когда нужно хранить и оперировать просто парами ключ-значение. Если серьёзно посмотреть, такая функциональность позволит покрыть потребности 90% веб-приложений. А если мы прибавим к этому возможность очень и очень быстро оперировать данными, хранить их в виде распределённой многосерверной системе и возможность постоянного хранения, устойчивого к сбоям — получим очень привлекательную платформу.

Сначала рассмотрим, а что у нас есть в распоряжении для создания распределённой инфраструктуры хранения данных для веб-приложения. Ну, первое, что приходит в голову — кластеризация базы данных, это теперь поддерживается во всех распространённых системах, а также различные технологии репликации. Например, самая популярная СУБД для веб-проектов, MySQL поддерживает как репликации так и кластеризацию. Ещё можно обратится к традиционным файловым система и хранить данные в файловой системе, к примеру, Apache Hadoop. Но часто это слишком высокоуровневое решение, обычно же требуется гораздо проще варианты — когда нужно хранить и оперировать просто парами ключ-значение. Если серьёзно посмотреть, такая функциональность позволит покрыть потребности 90% веб-приложений. А если мы прибавим к этому возможность очень и очень быстро оперировать данными, хранить их в виде распределённой многосерверной системе и возможность постоянного хранения, устойчивого к сбоям — получим очень привлекательную платформу.
+50
MySQL Query Cache
5 min
112KВ MySQL есть очень полезная функциональность — кеш запросов. Кеш запросов доступен в MySQL начиная с версии 4.0.
Многие СУБД имеют подобную функциональность, но в отличие от MySQL они кешируют планы выполнения запросов, тогда как MySQL кеширует результаты запросов.
Дальше о том, как работает кеш запросов, как его настраивать и оптимально использовать.
Многие СУБД имеют подобную функциональность, но в отличие от MySQL они кешируют планы выполнения запросов, тогда как MySQL кеширует результаты запросов.
Дальше о том, как работает кеш запросов, как его настраивать и оптимально использовать.
+64
BullDoc — система разработки документации
3 min
2.2KДавайте знакомиться
Каждая разработка, если она хоть немного поэтичней, чем печать «hello world», требует документации. И как-то так получалось, что я начинал писать документацию и все время наталкивался на то, что мне это неудобно:
Документация в MS Word (Open Office) не имеет подсветки кода, держит все в одном длинном документе, его не положишь в систему контроля версий для отслеживания изменений. Такой документ невозможно без лишних трудностей сохранить в html-коде, который будет размещён на сайте.
Microsoft HTML Help Compiler позволяет все хранить в тексте, но не имеет подсветки синтаксиса, документ нельзя собрать в связанные html-страницы для выкладывания на сайт без active-x компонента
Формат Docbook тоже близок к желаемому, но XSLT трансформации сложны, подсветка синтаксиса — хоть и решаемая, но проблема.
PHPDocumentator нацелен на написание документации в виде комментариев к коду. Да, он поддерживает подключение нескольких страниц чистой документации к тому, что получилось (кажется это называется там термином тюториал). BullDoc направлен на написание документации в чистом виде — в виде книжки. Опрятной нормальной книжки с главами, разделами, оглавлением и индексом. То, что получается на выходе из PHPDoc это рабочий инструмент, никак не документация для конечного юзера.
В результате появился небольшой скрипт для документации, который был причесан, задокументирован и предложен обществу.
+29
jQuery sIFR Plugin — создаем flash-текст
1 min
1.8KTranslation
jQuery sIFR Plugin является аддоном для jQuery, который позволяет легко заменять текст на веб-странице на flash-текст (sIFR).

Как это работает?
Вы вызываете javascript-функцию, которая заменяет текст на веб-странице на sIFR (Scalable Inman Flash Replacement) текст, используя возможности jQuery расширенные jQuery Flash плагином. jQuery находит текст, который Вы хотите заменить. Затем, jQuery sIFR Plugin преобразовывает текст — меняет размер, цвет, шрифт и пр. jQuery sIFR Plugin полностью конфигурируем, и Вы можете настроить отображение текста не хуже чем при помощи CSS.

Как это работает?
Вы вызываете javascript-функцию, которая заменяет текст на веб-странице на sIFR (Scalable Inman Flash Replacement) текст, используя возможности jQuery расширенные jQuery Flash плагином. jQuery находит текст, который Вы хотите заменить. Затем, jQuery sIFR Plugin преобразовывает текст — меняет размер, цвет, шрифт и пр. jQuery sIFR Plugin полностью конфигурируем, и Вы можете настроить отображение текста не хуже чем при помощи CSS.
+27
MaxSite CMS — первые впечатления
1 min
15KВчера на одном из своих блогов поставил MaxSite CMS 0.22. Первые впечатления только положительные. Автор этой системы, Максим, долгое время занимался поддержкой русской версии WordPress, и вот к сентябрю этого года выпустил систему собственного изготовления, за что ему однозначный респект. Что можно отметить в первую очередь:
1. От тормознутости Вордпресса здесь не осталось и следа. Система легкая и ест совсем немного памяти.
2. В системе абсолютно ничего лишнего, по крайней мере, сразу возникает такое ощущение.
3. Настройки и вообще работа с CMS очень удобны и очевидны. У меня ушло не больше часа на то, чтобы поднять сайт, настроить его и скопировать туда свои старые тексты по теме.
4. Поддержка на очень хорошем уровне: на какие-то вопросы или замечания Максим отвечает очень быстро. Я вчера пожаловался на то, что немного некорректно работает плагин, создающий XML Sitemap, и уже буквально через час автор выложил исправленную версию.
Ну что ж, буду использовать дальше и тестировать прочие возможности. В ближайшее время планирую заняться созданием собственного темплейта.
1. От тормознутости Вордпресса здесь не осталось и следа. Система легкая и ест совсем немного памяти.
2. В системе абсолютно ничего лишнего, по крайней мере, сразу возникает такое ощущение.
3. Настройки и вообще работа с CMS очень удобны и очевидны. У меня ушло не больше часа на то, чтобы поднять сайт, настроить его и скопировать туда свои старые тексты по теме.
4. Поддержка на очень хорошем уровне: на какие-то вопросы или замечания Максим отвечает очень быстро. Я вчера пожаловался на то, что немного некорректно работает плагин, создающий XML Sitemap, и уже буквально через час автор выложил исправленную версию.
Ну что ж, буду использовать дальше и тестировать прочие возможности. В ближайшее время планирую заняться созданием собственного темплейта.
+28
Еще одна реализация многопоточности на PHP
8 min
7KИтак… Приступим.
В последнее время я встретил сразу 2 реализации многопоточности на Хабре. Немного подумав я решил написать и свой вариант.
Но так как у меня нет возможности использовать PCNTL библиотеку, то мне пришлось извратиться…
Задача: реализация многопоточности на PHP (threads)
Издержки: нет модуля PCNTL ( build w/o PCNTL )
Решение: чистый PHP + Unix ( pure PHP + Unix )
В последнее время я встретил сразу 2 реализации многопоточности на Хабре. Немного подумав я решил написать и свой вариант.
Но так как у меня нет возможности использовать PCNTL библиотеку, то мне пришлось извратиться…
Задача: реализация многопоточности на PHP (threads)
Издержки: нет модуля PCNTL ( build w/o PCNTL )
Решение: чистый PHP + Unix ( pure PHP + Unix )
+6
Засаливание паролей
2 min
33KИтак, каким же образом обеспечивается безопасность на нынешних веб-ресурсах? Хешированием паролей алгоритмом md5. Вроде бы всё здорово и замечательно — md5 есть функция необратимая и пароли, хранимые в виде таких хэшей, взломать нельзя, даже если злоумышленник получил доступ к базе. Ан нет! Вспоминаем про Rainbow-таблицы и прощаемся с мыслью о полной безопасности хранения паролей в таком виде. Та как же их тогда шифровать? Алгоритмы востановимого шифрования с ключами тоже не панацея, да и системных ресурсов сии функции кушают немало...
Вопрос: Так как же, не в ущерб производительности, обезопасить md5 хэши от Rainbow-таблиц?
Ответ: соль.
Вопрос: Так как же, не в ущерб производительности, обезопасить md5 хэши от Rainbow-таблиц?
Ответ: соль.
+141
Скриптлеты для Web-разработчика + подарок
41 min
6.4KДля начала. Что же такое скриптлет?
Скриптлет — яваскрипт, помещеный в закладку и выполняемый на открытой странице при нажатии на ту самую закладку.
С помощбю скриптлетов можно видоизменять страницу, редактировать или отлаживать дизайн, искать ошибки в своих скриптах и еще очень много чего…
Скриптлет — яваскрипт, помещеный в закладку и выполняемый на открытой странице при нажатии на ту самую закладку.
С помощбю скриптлетов можно видоизменять страницу, редактировать или отлаживать дизайн, искать ошибки в своих скриптах и еще очень много чего…
+100
Безбраузерные приложения на Javascript (HTA)
3 min
40KОдна из мощнейших средств Ослика (начиная с пятой (!) версии) — HTA или HTML Application (безбраузерные приложения), позволяет создавать Windows-приложения используя HTML, CSS и Javascript/VBscript. Сразу хочу заметить, что в этой статье используется исключительно Javascript.
С точки зрения пользователя, созданная «программа» ничем, кроме расширения (*.hta), не отличается от любой другой программы: заголовок окна, иконка, отображение на панели задач, а самое главное никаких предупреждений при доступе к файлам компьютера. При всем этом вам не придется устанавливать никаких отдельных приложений или плагинов, достаточно Internet Explorer-а!
С точки зрения пользователя, созданная «программа» ничем, кроме расширения (*.hta), не отличается от любой другой программы: заголовок окна, иконка, отображение на панели задач, а самое главное никаких предупреждений при доступе к файлам компьютера. При всем этом вам не придется устанавливать никаких отдельных приложений или плагинов, достаточно Internet Explorer-а!
+65
Information
- Rating
- Does not participate
- Location
- Сейшеллы, Сейшеллы
- Date of birth
- Registered
- Activity