• phpDaemon и runkit: новый уровень

      Сегодня я поведаю о новых вкусных плюшках phpDaemon, в том числе предоставленных PHP-модулем runkit.

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

      Разверзнуть врата рая
    • Потратьте 10 минут — обезвредьте СПАМера

        Мне часто приходит русскоязычный ICQ-спам, хотя в информации нет ни единой русской буквы, указана Танзания, и аська — шестизнак из первой тыcячи.
        Сообщение:
        Запрос авторизации:
        Все виды противопожарных работ. Решение вопросов любой сложности в органах гос.пож.надзора. Тел. 34596<wipe>, Щекалёв Игорь Владимирович. г. Екатеринбург

        Только что я позвонил ему по Skype, спросил как относится к ICQ-спаму, и сказал что это некрасиво и т.д. Игорь Владимирович стал неумело бычить и спрашивать кто я такой буду и кого я представляю. После этого я разъяснил, что сам я из Москвы, и мне в *** не впился его гос. пож. надзор. И если он будет продолжать это делать — я запущу программу которая будет ему дозваниваться, слать на… и класть трубку, и так раз за разом. Человек переменился, сказал что это не он, а его компьютерщики наемные, которым он еще и за это деньги платит по результатам рекламы. Я тоже переключил тон на более доброжелательный, и рассказал ему что его обманывают, и эффективность нулевая… посоветовал обратиться в Google и Яндекс за контекстной рекламой. Мило пообщались и попрощались.

        Результат — здорово поднятое настроение, спасенный лемминг, и избавленные от данного СПАМа люди.

        Советую всем повторить скромный мой опыт! Также можно поэкспериментировать с программами по изменению голоса.

        Лозунг примерно такой: «Это операция СПАМ или кипячение! Вы всё еще спамите? Тогда мы звоним к вам!»
      • Официальный хабра-фотохостинг — Habrastorage.org

          Спешим Вас обрадовать, начал свою работу официальный хостинг картинок Хабрахабра — Habrastorage.org. Рекомендуется использовать именно его, поскольку он не накладывает ограничения на кол-во показов картинки. Загрузка главной странички не будет тормозиться медленными картинками, которые выше хабраката.
          Изображения по ширине превышающие 800 px автоматически скукоживаются до этой отметки. Превью делается размером 96x96.
          Также стоит отметить, что вы можете выбрать сразу несколько изображений в меню «Выбора файла» — и они все будут загружены.

          Удачного дня!
        • Starcraft II: сказ о том как можно абузить ладдер

            Вступление

            Сегодня наконец-то выходит StarCraft II: Wings of Liberty. За длительный период бета-тестирования выловлено огромное количество багов, исправлен баланс, сделаны исправления в безопасности.
            Однако, слона они всё-таки не заметили…
            Читать дальше →
          • phpDaemon: хорошие новости

              В Январе была опубликована статья phpDaemon — фреймворк асинхронных приложений. У многих она вызвала смешанные чувства: с одной стороны проект перспективен, с другой – было трудно вникнуть в недокументированный код, и хуже того – позиция автора была, скажем так, не совсем адекватной требованиям сообщества.
              Но позиция автора поменялась, а с ней и многое в проекте.
              Проект переехал на GitHub. Теперь методы и свойства задокументированы. API сделано более прозрачным и легким для работы, исправлено множество недочетов, повышена стабильность, изменена структура директорий.
              Заполняется WIKI. Добавлено много новых возможностей, включая клиент для Postgresql.
              Это принесло свои плоды: phpDaemon твердо обосновался на production-серверах многих проектов, и ведет себя стабильно, что не может не радовать.
              Также появилось время на реализацию общественно полезных модулей и других фич, будем рады дельным предложениям.

              Заранее благодарю за комментарии!
            • Заметка о том как лучше сидеть перед компьютером

                Большинство из нас, включая тебя, %username%, проводит много времени в сидячем положении перед монитором. Многие люди в то же время выполняют физические упражнения и занимаются в спортзале — это решает проблему, но лишь отчасти. Долго сидеть вообще вредно (противоестественно), но неправильно сидеть — на порядок вреднее. Поскольку большинство из нас не могут отказаться от долгих посиделок, мы поговорим о том как же все-таки правильно и удобно сидеть — так чтобы при этом не болели глаза, спина, и руки.
                Читать дальше →
              • phpDaemon — фреймворк асинхронных приложений

                  Сегодня речь пойдет о phpDaemon — асинхронном модульном демоне-фреймворке, который берёт на себя обработку I/O (libevent) и другие низкоуровневые задачи, присущие демонам. С его помощью легко писать правильные сетевые приложения с блэкджеком и шлюхами.
                  Из коробки идут сервера FastCGI, HTTP, CGI, FlashPolicy, Telnet, WebSocket (!) — да-да тот самый волшебный пендаль новый протокол от Google. И клиенты mysql, memcached, mongodb… И многое другое, полный список под катом. Работать с сетью действительно просто. Программист средней руки может написать, к примеру, IRC-бота за считанные часы.
                  В качестве наглядного примера я реализовал вот этот чат на phpDaemon + WebSocket + MongoDB + jQuery. Он наглядно демонстрирует преимущества этой технологии: доставка сообщений мгновенна, накладные расходы при обмене данными минимальны, высока производительность, приложение масштабируется горизонтально. Исходники этого чата (в данный момент 17 кб). Прошу заметить, чат тестировался и работает в Chrome, FF, IE6+, Iron, Safari.
                  Читать дальше →
                • МТС и ЯД: ошибочный платеж. В поисках здравого смысла

                    Для пополнения мобильного я давно пользуюсь Яндекс.Деньгами, там для проведения платежа необходимо заполнить Префикс, Номер, и имя владельца телефона. Соответственно, в моем броузере форма давно на авто-заполнении, и сегодня я по невнимательности указал «916» вместо «915» в префиксе.
                    Читать дальше →
                  • Делаем правильную платформу или Как повторить Google

                      Введение
                      Сегодня я расскажу о проектировании высоко-нагруженных отказоустойчивых систем. Акцент будет поставлен практическую разработку и жареные факты, а не на сухую теорию. После прочтения вы не испугаетесь разработки сервиса с миллиардом пользователей, если у вас будет достаточное количество серверов. Тема весьма обширна, но я постараюсь быть кратким и лаконичным.
                      Читать дальше →
                    • ХабраЛоггер — статистика для вас

                        Предлагаю вашему вниманию быстрый и простой способ собрать статистику посещаемости ваших (и не ваших) Хабратопиков да и вообще любых страниц.
                        Достаточно вставить в топик или в комментарий следующий код:

                        <img src="http://root.loopback.su/habralogger/empty.gif" />

                        Картинка — 1x1 прозрачный GIF. Теперь каждая загрузка страницы будет учтена в статистике.
                        Статистика доступна по адресу по аналогии с этим: _http://root.loopback.su/habralogger/?url=http://habrahabr.ru/blogs/statistics/74405/ (жмякать тут)
                        Список всех страниц на http://root.loopback.su/habralogger/

                        Изначально, он задумывался как пример к статье «MongoDB — варим хороший кофе», однако обрел практическое применение.

                        Помните что это Open Source, AS IS, near bird. Аминь. Если что-то вдруг сломается на моем сервере или счетчик вдруг будет выключен по каким-либо причинам, претензии не принимаются :-) Вы в любой момент можете скачать и поставить его к себе на сервер.
                      • MongoDB — варим хороший кофе

                          Введение

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

                          Сегодня мы поставим MongoDB, ниже рассмотрим свежеиспеченный ХабраЛоггер и пошпионим за главной страницей Хабра в реальном времени.
                          Читать дальше →
                        • MongoDB или как разлюбить SQL

                            Введение

                            Коллеги, при разработке приложений, мы каждый день сталкиваемся с потребностью в гибком хранении информации (обновлении, поиске по ней, и т.д.). Класс продуктов, которые решают этот круг задач, как все мы знаем — Базы данных. Но что это такое в нашем понимании? У многих «база данных» твердо ассоциируется с MySQL, таблицами и SQL-запросами. И это устраивает до определенного момента. Действительно, реляционные базы данных дают массу преимуществ в работе: поскольку данные имеют сильную связанность, не нужно контролировать целостность базы данных. Используя простой под-запрос можно выбрать количество комментариев к каждому посту в блоге. Используя JOIN нетрудно делать сложные связанные выборки и получать данные сразу о нескольких сущностях.
                            Читать дальше →
                          • phpFastCGI: настоящий FastCGI для PHP

                              — Добрый день. Вы наверняка уже наслышаны о протоколе FastCGI, он связывает Веб-сервер и сервер приложений, его реализации есть во множестве языков. Однако, в PHP реализация FastCGI до недавних пор была представлена лишь патчем PHP-FPM, который фактически не давал прироста производительности перед mod_php, поскольку он, вопреки идеологии FastCGI, перезапускает скрипт каждый раз заново. Идеология FastCGI подразумевает единовременную инициализацию приложения при запуске (подгрузку нужных классов, соединение с базой данных, и т.д.), и выполнение запросов один за другим.
                              phpFastCGI — правильная реализация FastCGI, которая позволяет добиться немыслимой производительности.
                              Разработка идёт очень активно, и новые фичи появляются очень быстро.
                              Страничка проекта — phpfastcgi.googlecode.com
                              Пример простого приложения — code.google.com/p/phpfastcgi/source/browse/trunk/example.php
                              В действии пример можно увидеть здесь — ya-tv.ru/phpfastcgid (может переодически лежать, это нормально, идёт тестирование). Страничка-пример легко выдерживает 5,000 запросов в секунду всего на 20-ти воркерах.
                              Проект пока в стадии тестирования и живёт только в SVN.
                              Приглашаю всех заинтересовавшихся принять в нем посильное участие!
                              $ svn checkout phpfastcgi.googlecode.com/svn/trunk phpfastcgi

                              Читать дальше →
                            • Действительно умные сессии и авторизация

                                Добрый день. Увидев статейку на тему «умных сессий», я решил поделиться действительно умной схемой, которая по всем параметрам превосходит предложенную.

                                Задача
                                Реализовать оптимальную систему пользовательских сессий и авторизации, с возможностью «Выйти на всех компьютерах». Защитить систему от сбоев (перезагрузки memcached), обеспечить эффективное использование памяти.

                                Читать дальше →
                              • phpThread: нити в PHP? Запросто

                                  Если вы хотите научиться писать многопоточные приложения на PHP или здорово упростить себе жизнь — статья для вас.

                                  Раньше для этих целей я пользовался либо запуском несколько копий скрипта, либо же использовал pcntl на более низком уровне, чем хотелось бы. Это, а от части и Java-идеология работы с потоками, побудили меня к написанию пакета phpThread.
                                  Читать дальше →
                                • PHP 5.3: обзор

                                    Дни идут чередой, погода улучшается, а между тем PHP 5.3 всё ближе и ближе — надо быть во всеоружии.
                                    Недавно вышел RC2, затем будет RC3, а затем Stable (примерно через месяц).
                                    Читать дальше →
                                  • IMemcacheClient: нереляционность как религия

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