User
phpFastCGI: настоящий FastCGI для PHP
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
Redis — высокопроизводительное хранилище данных
Что такое Redis?
Redis — это высокопроизводительное нереляционное распределённое хранилище данных. В отличие от Memcached, который может в любой момент удалить ваши данные, вытесняя старые записи новыми, Redis хранит информацию постоянно, таким образом он похож на MemcacheDB.
Чем Redis отличается от существующих решений?
API для работы с Memcached (MemcacheDB) позволяет хранить массивы, но эти массивы будут сериализованы и сохранены как строки, таким образом атомарные операции над такими массивами не возможны.
Redis позволяет хранить как строки, так и массивы, к которым можно применять атомарные операции pop / push, делать выборки из таких массивов, выполнять сортировку элементов, получать объединения и пересечения массивов.
Производительность
110000 запросов SET в секунду, 81000 запросов GET в секунду на Linux-сервере начального уровня (тесты).
Высокая скорость работы Redis обеспечивается тем, что данные хранятся в оперативной памяти и сохраняются на диск либо через равные промежутки времени, либо при превышении определённого количества не сохранённых запросов. Из этого вытекает, что используя Redis, вы можете потерять результаты нескольких последних запросов, что вполне приемлимо для большинства веб-приложений, учитывая, что обращение к Redis по скорости сравнимо с обращением к оперативной памяти. Тем не менее, потерь можно избежать через избыточность — Redis поддерживает неблокирующую master-slave репликацию.
Sharding
Redis, как и Memcached, может работать как распределённое хранилище на многих физических серверах. Такой функционал реализуется в клиентских библиотеках, и к сожалению, «из коробки» этот функционал реализован пока только в Ruby API, однако это не мешает вам хешировать ключ самостоятельно и получать ID сервера, к которому с этим ключом обращаться.
API
API доступно для следующих языков:
- Ruby
- Python
- PHP
- Erlang
- Tcl
- Perl
- Lua
- Java
API для PHP доступно как в виде модуля, написанного на C, так и в виде PHP5 класса, который общается с Redis-сервером через сокеты, таким образом не требуется устанавливать модуль.
Кроме того существует PHP5 класс от отечественного разрабочика (с именем, заслуживающим доверия. Я серьёзно.) — IMemcacheClient. (Спасибо DYPA за наводку)
Перспективы развития
Разработка ведётся очень активно, комиты происходят почти каждый день, сейчас доступна версия Redis 0.900 (1.0 release candidate 1), которая очень скоро станет версией 1.0
В ближайшем будущем авторы обещают внедрить разные интересные фичи, в том числе и сжатие данных.
Лицензия и поддерживаемые платформы
Redis — написан на ANSI C и работает на большинстве POSIX-систем (Linux, MacOS X). Это бесплатное открытое ПО под BSD лицензией =)
Up: Rediska — удобный PHP-клиент для key-value базы Redis. Оф.сайт.
Прекрасные шрифты посредством @font-face
Использовать @font-face для гиперсвязи со шрифтом — сравнительно несложно. Внутри стилевого файла каждое свойство
/* Graublau Sans Web (www.fonts.info) */
@font-face {
font-family: Graublau Sans Web;
src: url(GraublauWeb.otf) format("opentype");
}
body {
font-family: Graublau Sans Web, Lucida Grande, sans-serif;
}
Браузеры, поддерживающие @font-face, отобразят текст при помощи Graublau Sans Web, тогда как более старые браузеры отобразят его при помощи либо Lucida Grande, либо начертания по умолчанию
![[Grumpy Grandpas!]](http://hacks.mozilla.org/wp-content/uploads/2009/06/graublausanswebdemo.png)
Делайте грамотные сайты с API Яндекс.Спеллера
Яндекс предоставил открытый доступ к API сервиса Яндекс.Спеллер, созданного для проверки правописания. Теперь каждый желающий может установить этот сервис у себя на сайте.
Технология Яндекс.Спеллера применяется в Яндекс.Почте и в Яндекс.Баре. Инструмент содержит самый большой в Рунете словарь русского языка – 3,6 млн словоформ.
Анализ статистики употребления слов, лежащий в основе сервиса, помогает максимально точно проверять слова и выбирать варианты для подсказки. У Спеллера – очень широкий для интернет-приложений набор опций, благодаря чему вы можете выбрать удобные для себя настройки.
Одной из особенностей Спеллера, как и других API-инструментов Яндекса, является простота в использовании и управлении. Чтобы встроить на свой сайт веб-клиент, требуется выполнить несколько несложных действий.
Язык – живая система, поэтому в будущем функционал инструмента будет расширяться и дополняться.
Сделайте свой сайт не только интересным, но и грамотным.
Алексей Байтин и команда исправления опечаток
Выравнивание полей формы с помощью CSS
Задача
Добиться, чтобы поля ввода находились друг под другом, и при этом их положение определялось максимальной длиной заголовка поля слева. Решение не должно использовать таблиц и JavaScript.

Поддержка HTML 5 Networking Events

Скругленные углы на чиcтом CSS без JS без картинок с анти-аллиасингом
Хочу заметить, что это не улучшение какого-то из существующих методов, а совершенно новый (по крайней мере, я нигде не смог найти — наверное, плохо искал ;) метод. В статье 38 статей о создании закругленных углов на сайтах данный метод также не был упомянут.
Итак, что же мы имеем: чистый CSS, без единой картинки, без JavaScript (хотя и с ним, для демонстрации, тоже сделаем), с анти-аллиасингом (то есть плавные переходы), прозрачные углы (то есть в фоне может быть что угодно), тянущийся по высоте и ширине и, конечно же, кроссбраузерный метод.
Хостинг-Центр РБК Украина vs Infoset.com.ua. Кто же адекватен? Официальный ответ хостера
Так как я не представляю здесь интересы ни одной из сторон (не считая помощи в публикации материалов), хочу, чтобы ради справедливости официальный ответ от Хостинг-центра РБК Украина был озвучен на Хабре.
Кроме того официальный ответ мне, как стороннему наблюдателю, показался не менее забавным, чем сам пост с претензией ^_^
Извините, в некоторых моментах насколько феерично, что я не удержался и выделил это в цитате жирным шрифтом и подчеркиванием.

Nested Sets + MySQL TRIGGER
Задача
Задача такая же как и в предыдущей статье, только применимо к MySQL.
Грабли
Хорошая новость ребята! В MySQL нет проблемы с рекурсивными триггерами! Разработчики MySQL просто тупо лочат изменяемую таблицу даже на уровне триггера, вот редиски. Но, собственно, нас может остановить только отключение электричества.
Есть небольшая лазейка, с… объединенными таблицами. Хотя я не нашел в документации подтверждения того, что это так специально было задумано, но и отрицания тоже не было. Правда есть вероятность того, что эту лазейку могут прикрыть, хотя я не вижу в этом смысла.
Увы, механизм триггеров в MySQL новый и довольно сырой, что накладывает некоторые ограничения на его использование, но все же его достаточно для решения нашей задачи.
Шпаргалка => Cross Domain AJAX. Dynamic script Tag Hack
Есть море хаков чтобы обойти это ограничение, но самый популярный это Dynamic Script Tag Hack. Именно через этот хак организован доступ к многим API современных веб-приложений.
Средства создания горячих BackUp`ов MySQL
Установка Web Optimizer версии 0.5

Шаг 1: загрузка архива
Web Optimizer поставляется в двух вариантах: ZIP-архив и мини-установщик. Для загрузки первого варианта идем по адресу code.google.com/p/web-optimizator/downloads/list и выбираем Featured версию 0.5 или выше.
Google App Engine и High load
Slow Lori атака на веб-сервер Apache

Данный тип атаки был обнародован специалистом по безопасности RSnake 17 июня и подробно описан на странице http://ha.ckers.org/blog/20090617/slowloris-http-dos
Атака заключается в очень медленной посылке все новых и новых HTTP заголовков в рамках одного HTTP запроса, никогда его не завершая.
Поскольку Apache выделяет ресурсы для запроса очень рано, то на один такой запрос тратится «полноценное» кол-во ресурсов. Такое же, как и для обычного запроса.
Как известно, Apache использует для обработки запросов или процессы или смесь процессов с нитями. Использование нитей позволит отсрочить смерть, но так или иначе Apache упрется в ограничение по памяти или ограничение, заданное администратором.
Что самое неприятное, Slowlori атака не оставляет никаких следов, кроме огромного количества открытых cоединений со статусом ESTABLISHED. Не будет никаких записей даже в access_log-е.
Первоначально разработчики Apache не очень активно отреагировали на сообщение RSnake в список рассылки, ответив ему что данная атака давно известна и является минусом не самого веб-вервера, а скорее TCP-стека. Однако, в дальнейшем разработчики веб-сервера Apache зашевелились и начали активно обсуждать пути решения проблемы.
Веб-серверы основанные на state machine не подвержены данной атаке. Таким образом простейшим способом обезопасить себя от Slowlori атаки является использование двухуровневой архитектуры, когда первым на пути является веб\прокси сервер, основанный на state machine, такой как nginx.
Другими возможными решениями являются Access HTTP фильтры в FreeBSD, использование хитрых правил на файрволе, которые, в то же время, могут отсечь и легитимных медленных пользователей.
Кроме собственно изменения архитектуры, разработчики Apache согласны в необходимости внедрения более мелких, локальных таймаутов. На данный момент в Apache 2.2 реализован один обший таймаут, влияющий на практически все IO действия.
Более подробную информацию можно получить в списке рассылки httpd-dev и в пока не открытой для публичного доступа статье на LWN.
prettyPrint

«prettyPrint» — браузерный дампер переменных для JavaScript аналогичный cfdump для ColdFusion. Он позволяет выводить на экран объекты любого типа в виде таблиц для просмотра во время отладки.
Посмотреть пример.
Действительно умные сессии и авторизация
Задача
Реализовать оптимальную систему пользовательских сессий и авторизации, с возможностью «Выйти на всех компьютерах». Защитить систему от сбоев (перезагрузки memcached), обеспечить эффективное использование памяти.
Как влияет кеш на многопоточные приложения
Так сложилось, узким местом во многих компьютерах является интерфейс оперативная память — процессор. Связано это со значительным временем формирования запроса в память и с тем что частота работы памяти ниже частоты процессора. В общем случае на время получения данных из памяти исполнение программы останавливается. Для улучшения ситуации используется специализированная высокоскоростная память – кеш.
При наличии кеша, если процессору требуется обратиться к определенному байту в оперативной памяти, то сначала выбирается область памяти содержащая этот байт (размер области зависит от процессора) в кеш, а затем происходит считывание данных из кеша процессором. Если процессор записывает данные в память, то они сначала попадают в кеш, а затем в оперативную память.
В многоядерной и многопроцессорной системах у каждого ядра или процессора есть свой персональный кеш. В случае модификации данных в кеше одним процессором, изменения должны быть синхронизированы с другими процессорами, использующими пересекающееся адресное пространство.
Если изменения происходят часто и области данных сильно пересекаются, то будет падать производительность.
У меня возник вопрос насколько все может быть плохо. Кроме того, интересно было посмотреть как влияет длина данных.
Сохранение исходных пропорций видео

Вы когда-нибудь хотели изменять размеры видео на лету, масштабировать его как изображение? Используя внутренние пропорции для видео, можно. Эта техника позволяет броузерам устанавливать размеры видео, основываясь на ширине родительского блока. С внутренними пропорциями, новая ширина вызывает новое вычисление высоты, что позволяет изменять размеры видео и дает возможность для масштабирования его, так же, как изображения. Пример 1.
Information
- Rating
- Does not participate
- Location
- Ровенская обл., Украина
- Date of birth
- Registered
- Activity