dkLab.ru: новости Новости Лаборатории dk http://php5.dklab.ru/news/ ru-ru http://php5.dklab.ru/news/ http://php5.dklab.ru/img/dklab_logo_ru.gif Новости Лаборатории dk Dklab_Realplexor: Comet-сервер промышленного масштаба с API для PHP и JavaScript http://dklab.ru/lib/dklab_realplexor/ Dklab Realplexor (Realtime HTTP Connection Multiplexor; по-русски предлагаю произносить как "Реалплексор") — это Comet-сервер, позволяющий держать одновремено сотни тысяч долгоживущих открытых HTTP-соединений с браузерами пользователей. JavaScript-код, запущенный в браузере, подписывается на один или несколько каналов Realplexor-а и вешает обработчик на поступление данных. Сервер может в любой момент записать сообщение в один из таких каналов, и оно будет моментально передано всем подписчикам (хоть одному, хоть тысяче), в режиме реального времени и с минимальной нагрузкой для сервера. Дмитрий Котеров Mon, 21 Dec 2009 05:00:00 UT PHP-расширение dom_varimport: преобразования вложенных массивов в DOMDocument. http://php5.dklab.ru/news/#news109 <p>Представьте, что у нас есть контроллер, генерирующий некоторый вложенный PHP-список объектов для отображения на странице. Он должен этот массив преобразовать в XML, который потом пойдет на вход XSLT-шаблону. Хорошо бы, чтобы данное преобразование из структур PHP в XML выполнялось не вручную в каждом контроллере, а был некоторый промежуточный слой абстракции, который умеет применять XSLT-шаблон прямо к PHP-данным, минуя текстовое XML-представление. Так мы уменьшим вероятность ошибок, да и письмо сократится. Мы сможем работать с XSLT-шаблонами напрямую, минуя XML-представление данных.</p> <p>Некоторое время назад я написал на Си PHP-расширение dom_varimport. Оно содержит одноименную функцию, на вход которой подается объект DOMDocument и PHP-массив любой вложенности. Функция заполняет переданный ей DOMDocument XML-представлением входного массива, и делает она это очень быстро — примерно в 20 раз быстрее, чем делал бы код, написанный на чистом PHP. Большой документ размером около 1 МБ с тысячами вложенных свойств и объектов формируется примерно за 1-2 миллисекунды.</p> <p><a href="/lib/dom_varimport/">Читать дальше...</a></p> Дмитрий Котеров Thu, 17 Apr 2014 04:00:00 UT Утилита CacheLRUd: добавляет функцию LRU-очистки данных (как в memcached) в MongoDB. http://php5.dklab.ru/news/#news108 <p>Иногда (не всегда, но достаточно часто) бывает довольно удобно использовать какую-то базу данных (например, MongoDB) место старого-доброго memcached. Возможно, это ваш случай, если ваш кэш:</p> <ul> <li>имеет не очень большой объем (не более нескольких сотен гигабайт в каждом кластере репликации);</li> <li>содержит очень много "долгоживущих" ключей (время жизни измеряется днями);</li> <li>вы существенно используете тэгирование ключей, и надежность процесса централизованной очистки тэгов для вас очень важна;</li> <li>кэш должен реплицироваться на несколько машин, в том числе в разных датацентрах;</li> <li>кэш, возможно, использует sharding (как раз с sharding у MongoDB все просто великолепно).</li> </ul> <p>Если часть из этих пунктов находит отклик в вашей душе, то имеет рассмотреть MongoDB (или другую NoSQL-СУБД) в качестве системы хранения кэша. Однако, например, MongoDB не умеет сама сортировать ключи по редкости использования и удалять те их них, которые читаются реже всего (так называемый алгоритм LRU, Least Recently Used). Так что размер БД будет расти и расти.</p> <p>Демон CacheLRUd как раз и решает эту проблему: он следит за размером БД, удаляя из нее только наиболее редко читаемые ключи и не трогая "популярные", и при этом не имеет единой точки отказа, как и весь кластер MongoDB. Для сбора информации об использовании ключей используется асинхронный протокол, основанный на UDP.</p> <p><a href="/lib/cachelrud/">Читать дальше и скачать утилиту.</a></p> Дмитрий Котеров Thu, 10 Apr 2014 04:00:00 UT Библиотека DB_Micro: работа с РСУБД (PostgreSQL) с автоматическим отслеживанием запаздывания репликации. http://php5.dklab.ru/news/#news107 <p>DB_Micro</p> -- это слой абстракции для работы с реляционными СУБД (в настоящий момент в комплект входит драйвер для PostgreSQL, но могут быть добавлены и другие). Главные отличительные черты библиотеки -- прозрачная поддержка асинхронной master-slave репликации (статус запаздывания реплики привязывается к сессии пользователя), поддержка реконнектов и отслеживание "живучести" реплик, а также поддержка детальных логов запросов.</p> <p>Why yet another library for that? Because there are no good DB libraries which could seamlessly work with master-slave replication. Even stand-alone solutions (like pgpool-II for PostgreSQL) have insufficient slave lag detection mechanisms. Can you believe that? I couldn't too, but after hours of searching I've found nothing good enough for working in asynchronous replication environment transparently.</p> <p><a href="/lib/DB_Micro/">Читать дальше и скачать библиотеку...</a></p> Дмитрий Котеров Wed, 15 Jan 2014 05:00:00 UT Статья Настраиваем RAID1+LVM (для снапшотов файловой системы) в Hetzner и ServerLoft. http://php5.dklab.ru/news/#news106 <p>Завалялась у меня тут инструкция, как включить LVM для корневой файловой системы на двух популярных dedicated-хостингах: Hetzner и ServerLoft. Публикую ее здесь.</p> <p>Ни Hetzner, ни ServerLoft не позволяют включить LVM при первичном создании машины "при помощи одной лишь мышки". Вместо этого они дают возможность установить один из фиксированных образов ОС, максимум что - с включенным RAID-1. Ниже - две инструкции, как переключить такую "налитую" машину на использование LVM для корневой файловой системы, а потом - короткий пример того, как работать со снапшотами. Работать будем с Ubuntu Server 12.04 minimal (для других ОС конфигурация может отличаться).</p> <p><a href="/chicken/nablas/62.html">Читать дальше...</a></p> Дмитрий Котеров Thu, 11 Apr 2013 04:00:00 UT Утилита GoogleHangoutRenice: уменьшение "тормозов" при работе Google Hangout. http://php5.dklab.ru/news/#news105 <p>Если при запуске Google Hangout ваш компьютер начинает безбожно тормозить, попробуйте запустить эту утилиту. Она остается работать в фоновом режиме и, как только запускаются процессы Google Hangout, устанавливает им низкий приоритет выполнения и привязывает только к первому процессору, запрещая выполняться на остальных.</p> <p>Самое интересное, что самому Google Hangout-у это никак не вредит, а вот общая "отзывчивость" системы возрастает многократно. Зачем разработчики Google Hangout устанавливают его процессу повышенный приоритет по умолчанию?.. Это остается загадкой.</p> <p><a href="/lib/GoogleHangoutRenice/">Скачать GoogleHangoutRenice.</a></p> Дмитрий Котеров Fri, 29 Mar 2013 04:00:00 UT Утилита vzfailcnt: отправка на почту изменений failcnt в OpenVZ. http://php5.dklab.ru/news/#news104 <p>Я долго ждал, когда же наконец появится какой-нибудь более-менее сносный скрипт для мониторинга /proc/user_beancounters и отправки на почту изменений в failcnt. Не дождался. Почему-то все, что есть за последние 2 года, - это либо скрипты на Ruby (типа Yabeda; ну скажите мне на милость, откуда на хост-машине с OpenVZ взяться интерпретатору ruby, да еще последней версии?), либо же perl-скрипты с кучей совершенно ненужных зависимостей от модулей.</p> <p>В общем, я написал такую утилиту сам и выложил. Она простая, удобная, шлет красиво оформленные письма и не имеет зависимостей.</p> <p><a href="/lib/dklab_vzfailcnt/">Подробнее...</a></p> Дмитрий Котеров Sat, 06 Oct 2012 04:00:00 UT Система Notifus: уведомления о неотвеченных письмах в GMail. http://php5.dklab.ru/news/#news103 <p>Речь пойдет о бесплатном микросервисе "Notifus", который я вначале делал для собственного пользования, а затем выложил наружу. Notifus — это браузерное расширение, добавляющее новый функционал к GMail. Его главная цель — освободить нашу голову от беспокойства: ответят на письмо или нет? Расширение помогает вам "вспоминать" о письмах, на которые вы так и не получили ответа, перенося их обратно во Входящие и помечая непрочитанными.</p> Дмитрий Котеров Sat, 04 Aug 2012 04:00:00 UT Статья Тривиальное: заменяем первый (загрузочный) диск в RAID-1. http://php5.dklab.ru/news/#news102 <p>Сегодня произошел один случай, с которым лично мне раньше не приходилось сталкиваться. Возможно, данная выжимка команд сэкономит кому-то время на поиски информации в интернете и последующее объединение советов из разных источников в набор команд.</p> <a href="/chicken/nablas/60.html">Читать статью.</a> Дмитрий Котеров Wed, 15 Feb 2012 05:00:00 UT Статья Как починить интернет в ASUS WL-700GE паяльником. http://php5.dklab.ru/news/#news101 <p>Начал спонтанно перезагружаться роутер. Причем если выключить винчестер или вначале остудить пациента, то симптомы прекращались (но без винчестера он и не работает у меня). Я начал подыскивать в интернете другой роутер, но понял, что а) обязательно нужен роутер с винчестером, чтобы делать на него автоматические ежедневные бэкапы, и б) по сути с 2006 года ничего лучше, чем WL-700GE, так и не придумали.</p> <p>Поэтому я вооружился паяльником и... <a href="/chicken/nablas/59.html">читать дальше</a>.</p> Дмитрий Котеров Thu, 26 Jan 2012 05:00:00 UT Утилита dkLab RealSync: realtime-синхронизатор исходников с локальной машины на разработческий web-сервер. http://php5.dklab.ru/news/#news100 <p>RealSync allows you to establish one-way directory synchronization from your folder at the local machine (typically with site's source code) to remote directory at a server (typically - development web-server). </p> <p>When you create, change or delete any file at your local folder, it will automatically be created, modified or deleted at the remote side, in realtime. </p> <p><b>Why use RealSync?</b></p> <p>Today there are no network filesystems exist which perform good caching on a slow or unstable internet connection. If you mount a remote directory from a development web server into yor local machine using Samba, NFS, sshfs etc., it becomes extremely slow when you perform e.g. a full project searching or update files using SVN or GIT directly at your local machine.</p> <p>RealSync allows you do use other method. You create a folder at your local machine and then say RealSync to replicate all changes in this folder to a remote web server. So you work at your local machine, you modify files as you like (using multiple text editors if you want to), perform deep searhes through all the files etc. And you sure that the latest version of the directory is always at the remote side.</p> <p>So you edit your site locally, but view changes at the remote web server.</p> <p><a href="/lib/dklab_realsync/">Читать документацию, инструкцию по установке и т.д.</a> Дмитрий Котеров Sat, 22 Oct 2011 04:00:00 UT Библиотека DB_Type 2.0: преобразование сложных типов PostgreSQL (ARRAY, ROW, HSTORE) в PHP и обратно. http://php5.dklab.ru/news/#news99 <p>Вышла новая версия библиотеки (2.0), несовместимая со старой версией DB_Pgsql_Type. Главным образом, переименовались классы (было - DB_Pgsql_Type_*, стало - DB_Type_* и DB_Type_Pgsql_*), добавились юнит-тесты, а также были исправлены незначительные баги.</p> <p>Рекомендуем всем, кто пользуется, обновиться. В папке utils лежит скрипт MIGRATE_100_TO_200.pl, который переименует старые классы в новые, если запустить его для вашего проекта.</p> <p><a href="/lib/DB_Type/">Читать описание и скачать библиотеку.</a> Дмитрий Котеров Sun, 07 Aug 2011 04:00:00 UT Утилита dklab_logreplica: сбор логов со всего кластера в единую точку в реальном времени. http://php5.dklab.ru/news/#news98 <p>Этот простой, но очень удобный и мощный инструмент позволяет "вытягивать" (реплицировать) логи со всего кластера на централизованный сервер логов, причем в реальном времени. В дальнейшем логи могут быть использованы для просмотра, аггрегации или анализа.</p> <p><a href="/lib/dklab_logreplica/">Читать подробности и скачать утилиту.</a> Дмитрий Котеров Wed, 29 Jun 2011 04:00:00 UT Утилита dklab_pgmigrator: миграции схемы PostgreSQL с сервера разработки в продакшен. http://php5.dklab.ru/news/#news97 <p>This tool allows you to keep in sync a production database scheme with a develpoment database scheme. Any changes you made in development database may be deployed to production database in almost automatical way, and you take control over the whole process. <p>Нужно еще заметить, что ничего подобного не только для PostgreSQL, но и для других СУБД, я не видел. Правда, конфигурировать может быть сложновато (есть еще моменты, которые можно упростить в этой утилите), но все равно, проблему миграции схемы в сложных базах данных эта штука снимает полностью. <p><a href="/lib/dklab_pgmigrator/">Читать дальше...</a> Дмитрий Котеров Mon, 11 Apr 2011 04:00:00 UT Библиотека dklab_vzset: интерактивное увеличение UBC-лимита для OpenVZ. http://php5.dklab.ru/news/#news96 <p>Vzset is a very tiny utility which allows you to view current UBC option value of OpenVZ container and type+apply a new value to this option. This is useful when you receive a "limit exceeded" notification by mail (e.g. over Yabeda or vzwatchd) and want to increase an option fast. <p><a href="http://dklab.ru/lib/dklab_vzset/">Читать дальше...</a> Дмитрий Котеров Sat, 13 Nov 2010 05:00:00 UT Библиотека dklab_vzmem: визуальное непротиворечивое распределение памяти для OpenVZ. http://php5.dklab.ru/news/#news95 <p>Vzmem is a pseudo-graphical tool which allows you to distribute physical memory among all VEs consistently. It shows all physical memory blocks graphically in /etc/vz/conf/MEM-MAP text file and lets you to move these blocks from one VE to another to redistribute the memory. Also you may specify "additional" memory personally for each VE: such memory will be obtained from system's free memory or swap (it is reflected as modifying of privvmpages parameter). <p><a href="http://dklab.ru/lib/dklab_vzmem/">Читать дальше...</a> Дмитрий Котеров Fri, 05 Nov 2010 04:00:00 UT Библиотека dklab_rowlog: row-level логирование изменений в таблицах PostgreSQL. http://php5.dklab.ru/news/#news94 <p>This library allows you to add a row logging capability to any table in PostgreSQL database. You may: <ul> <li>Add row-log capability to any table in 1 minute, with 1 DDL statement. <li>Specify which columns to log and monitor; do not log a row change if no monitored columns are modified. <li>Specify dedicated column which holds an author of row change. <li>Specify columns which are always logged, even if they are unchanged. </ul> <p><a href="http://dklab.ru/lib/dklab_rowlog/">Читать дальше...</a> Дмитрий Котеров Mon, 01 Nov 2010 04:00:00 UT Библиотека Debug_ErrorHook: перехват ошибок PHP (даже фатальных) и их обработка - например, отправка по E-mail. http://php5.dklab.ru/news/#news93 <p>Эта библиотека позволяет перехватывать ошибки PHP (самое главное - включая фатальные!) вместе с красиво оформленным контекстом их возникновения (имя файла, строка, стек-трейс, переменные окружения, параметры HTTP-запроса и т.д.) и выполнять те или иные действия с этой информацией. На ошибки можно повесить функции обратного вызова (даже на Fatal Error). <p>Наиболее полезное применение библиотеки - отправлять нотисы, варнинги и даже фатальные ошибки PHP на адрес электронной почты разработчика. Естественно, эта отправка - "умная": если эта же самая ошибка уже происходила за последние N секунд, она не будет повторно отправлена на почту. Таким образом, ящик не зафлудится, а почтовый сервер и sendmail - не подвесит всю систему, если ваш сайт весьма популярен, но вдруг на продакшен "проскочил" какой-нибудь нотис, возникающий на каждой странице. <p><a href="/lib/Debug_ErrorHook/">Узнать подробности и посмотреть примеры.</a> Дмитрий Котеров Thu, 13 May 2010 04:00:00 UT Библиотека HTTP_ImageResizer: загрузка и ресайз картинок "на лету" с кэшированием nginx. http://php5.dklab.ru/news/#news92 <p>Хотя для этой библиотеки и нет подробной документации, она используется в нескольких продакшен-проектах достаточно долгое время, поэтому вы также можете ее использовать. Ниже приводится содержимое файла README.txt. <p>This library is used to load static image content from anywhere (e.g. from a database, from remote storage etc.), resize it and return to browser. Fetching and resizing is performed "on demand": images are resized when a request arrives, but resized result is stored to nginx (or similar) cache, so there is no performance bottleneck. <p><a href="/lib/HTTP_ImageResizer/">Читать дальше и скачать библиотеку.</a> Дмитрий Котеров Sat, 08 May 2010 04:00:00 UT Утилита dklab vzfirewall: простое управление firewall-ом в OpenVZ. http://php5.dklab.ru/news/#news91 <p>Dklab vzfirewall — это утилита для OpenVZ, позволяющая конфигурировать firewall без утомительного ввода iptables-правил и без "завязки" на множество IP-адресов виртуальных машин. Главный принцип утилиты — быть настолько простой в использовании, насколько это возможно. <p><a href="/lib/dklab_vzfirewall/">Читать дальше и скачать утилиту.</a> Дмитрий Котеров Tue, 16 Mar 2010 04:00:00 UT Сервер Realplexor теперь работает с EV, а не libevent. http://php5.dklab.ru/news/#news90 <p>Библиотека libevent для Perl, как оказалось, имеет не самую лучшую производительность. К тому же в ней есть утечки памяти. Теперь Realplexor работает на более производительной библиотеке EV: в ней утечек памяти нет. Дмитрий Котеров Sat, 27 Feb 2010 05:00:00 UT Инструмент Dklab_Realplexor: Comet-сервер промышленного масштаба с API для PHP и JavaScript. http://php5.dklab.ru/news/#news89 <p>Dklab Realplexor — это Comet-сервер, позволяющий держать одновремено сотни тысяч долгоживущих открытых HTTP-соединений с браузерами пользователей. JavaScript-код, запущенный в браузере, подписывается на один или несколько каналов Realplexor-а и вешает обработчик на поступление данных. Сервер может в любой момент записать сообщение в один из таких каналов, и оно будет моментально передано всем подписчикам (хоть одному, хоть тысяче), в режиме реального времени и с минимальной нагрузкой для сервера. <p>Хотя идейным вдохновителем Realplexor-а был предыдущий проект, dklab_multiplexor, код Realplexor-а не имеет с ним практически ничего общего. Поэтому я и решил сменить название. Несопоставимы также возможности продуктов (см. ниже), да и размер кода увеличился в 7 раз. <p><a href="/lib/dklab_realplexor/">Читать документацию.</a> Дмитрий Котеров Mon, 28 Dec 2009 05:00:00 UT Статья Автоматический resize высоты IFRAME, загруженного с другого домена. http://php5.dklab.ru/news/#news88 <p>Как известно, при работе с фреймами для обеспечения безопасности браузеры не позволяют JavaScript-коду обращаться со страницы одного домена на страницу другого домена. В этой статье мы рассмотрим аспекты кросс-доменной работы в JavaScript и опишем один из «хороших» частных случаев. <p>Но вначале я приведу решение задачи автоматического изменения высоты IFRAME, загружаемого с другого домена. (Resize height of an IFRAME from a different domain.) <p><a href="/chicken/nablas/58.html">Читать дальше и смотреть примеры.</a> Дмитрий Котеров Sun, 20 Dec 2009 05:00:00 UT Библиотека HTTP_UrlSigner: безопасная передача параметров в URL и его цифровое подписывание. http://php5.dklab.ru/news/#news87 <p>HTTP_UrlSigner позволяет динамически строить URL, защищенный от подделки злоумышленниками. Имея такой URL, вы можете убедиться, что он составлен именно вашей системой, а не кем-то еще, и извлечь из него ранее записанные параметры, не опасаясь, что их могут подменить. <p><a href="/lib/HTTP_UrlSigner/">Читать дальше и смотреть примеры.</a> Дмитрий Котеров Fri, 18 Dec 2009 05:00:00 UT Статья OAuth: не так страшен черт... http://php5.dklab.ru/news/#news86 <p>OAuth — популярный протокол, который позволяет социальным сервисам интегрироваться между собой и дает безопасный способ обмена персональной информацией. OAuth может связать между собой 2 сервиса, каждый из которых имеет свою пользовательскую базу — именно их я в данном случае называю "социальными". Когда начинаешь работать с OAuth, первое ощущение — что протокол весьма сложен и избыточен. В этой статье я попытаюсь объяснить основы OAuth человеческим языком. <p><a href="/chicken/nablas/57.html">Читать дальше...</a> Дмитрий Котеров Tue, 08 Dec 2009 05:00:00 UT Статья Подводные камни при использовании кэширования в nginx. http://php5.dklab.ru/news/#news85 <p>В web-сервер и reverse-proxy nginx встроены очень мощные возможности по кэшированию HTTP-ответов. Однако в ряде случаев документации и примеров не хватает, в результате не все получается так легко и просто, как хотелось бы. Этой статьей я попробую немного улучшить ситуацию. <p>Если выбирать, кэшировать ли страницу на стороне PHP или на стороне nginx, я выбираю nginx. Во-первых, это позволяет отдавать 5-10 тыс. запросов в секунду без каких-либо сложностей и без умных разговоров о "высокой нагрузке". Во-вторых, nginx самостоятельно следит за размером кэша и чистит его как при устаревании, так и при вытеснении нечасто используемых данных. <p>Многие строки этой статьи написаны буквально кровью... <a href="/chicken/nablas/56.html">Продолжить чтение</a>. Дмитрий Котеров Fri, 16 Oct 2009 04:00:00 UT Сервер dklab_multiplexor: постоянное JavaScript-соединение с сервером в условиях сотен тысяч онлайн-клиентов. http://php5.dklab.ru/news/#news84 <p>Dklab_multiplexor — это инструмент, который позволяет держать одновременно сотни тысяч долгоживущих открытых HTTP-соединений с сервером. Например, если на вашем сайте находится одновременно несколько сот тысяч посетителей, каждый из них может быть связан с сервером постоянным соединением, установленным из JavaScript. Это например, полезно при организации онлайн-чатов или мгновенных уведомлений. <p><a href="/lib/dklab_multiplexor/">Читать дальше...</a> Дмитрий Котеров Sat, 12 Sep 2009 04:00:00 UT Утилита dklab_vzenter: vzctl enter по части имени хоста (для OpenVZ). http://php5.dklab.ru/news/#news83 <p>dklab_vzenter — это простейшая утилита для системных администраторов, позволяющая вам входить в тот или иной контейнер OpenVZ (vzctl enter), указав <i>минимальную непротиворечивую часть</i> его доменного имени. Теперь нет необходимости запоминать CTID или постоянно набирать команду vzlist. <p><a href="/lib/dklab_vzenter/">Посмотреть примеры использования и скачать утилиту.</a> Дмитрий Котеров Thu, 10 Sep 2009 04:00:00 UT Статья Причины стремительного успеха PHP. http://php5.dklab.ru/news/#news82 <p>8 июня 1995 года, 14 лет назад, Расмус Лердорф выпустил первый публичный релиз технологии PHP/FI 2.0. И хотя современный PHP имеет весьма мало общего со старым PHP/FI, он по прежнему завоевывает популярность у программистов теми же самыми маркетинговыми средствами. <p>Возникает вопрос: как же г-н Лердорф и компания сумели затмить величие Perl (имеющего к тому времени многолетнюю историю и множество поклонников) и вывести PHP/FI (а затем и PHP) на лидирующие позиции? Для этого они сделали три очень точных шага, а также выбрали оптимальное позиционирование продукта. Об этом — речь ниже. <p><a href="/chicken/nablas/55.html">Читать дальше...</a> Дмитрий Котеров Sun, 12 Jul 2009 04:00:00 UT Новая версия HTTP_StaticMerger 2.0: безопасность и nginx. http://php5.dklab.ru/news/#news81 <p>Вышла версия 2.0 библиотеки HTTP_StaticMerger. Теперь поддерживается <i>цифровое подписывание</i> URL склеенных файлов, а в случае несовпадения цифровой подписи выдается ошибка 404. Это особенно удобно, когда библиотека используется в связке с nginx и директивой proxy_store: теперь злоумышленник даже теоретически не сможет "зафлудить" временную директорию кэш-файлами. <p><a href="/lib/HTTP_StaticMerger/">Читать документацию и скачать библиотеку</a>. Дмитрий Котеров Tue, 07 Jul 2009 04:00:00 UT Утилита plainmerge для скоростного слияния веток в Subversion. http://php5.dklab.ru/news/#news80 <p>Plainmerge — это простая и быстрая утилита для Subversion (Windows), позволяющая вам авторитарно сливать ветки в проектах с очень большим числом файлов. Ее удобно применять, если в вашем проекте есть 2 основные ветки: <ol> <li>trunk: ветка для ведения разработки. <li>RELEASE: ветка, которая работает на продакшен-версии проекта. При выполнении полного релиза в эту ветку копируется все содержимое trunk. Если же нужно "прокинуть" критический багфикс, он переносится в нее в индивидуальном порядке. </ol> <p><a href="/lib/plainmerge/">Читать дальше.</a> Дмитрий Котеров Sun, 28 Jun 2009 04:00:00 UT Библиотека DB_Pgsql_Type для преобразования сложных типов данных PostgreSQL в PHP-массивы и обратно. http://php5.dklab.ru/news/#news79 <p>DB_Pgsql_Type — это фреймворк для преобразования сложных типов PostgreSQL 8.3+ в их аналоги на PHP и обратно. С ее помощью вы можете работать с полями сложного типа (к примеру, двумерным массивом композитных типов) так же просто, как с привычными массивами PHP. <p>Поддерживаются следующие типы данных и любые их вложенные комбинации: <ul> <li>Массивы элементов произвольного типа (в том числе многомерные). <li>Композитные типы и ROWTYPE (в частности, сами содержащие композитные поля или поля-массивы). <li>Hstore (в том числе содержащие сложные элементы). <li>Прочие типы: TIMESTAMP (преобразуется в Unix time), DATE, TIME, BOOLEAN и т. д. </ul> <p><a href="/lib/DB_Pgsql_Type/">Читать дальше...</a> Дмитрий Котеров Fri, 03 Apr 2009 04:00:00 UT Библиотека Dklab_ShortXSLT: упрощенный синтаксис для XSLT с операторами вставки, if, else и т.д. http://php5.dklab.ru/news/#news78 <p>Библиотека <b>Dklab_ShortXSLT</b> -- это система для поддержки упрощенного синтаксиса XSLT, написанная на чистом PHP. Фактически это компилятор с диалекта XSLT в стандартный XSLT, запускаемый "на лету" и "прозрачно" для вызывающего кода. Там, где вы используете XSLT в PHP-скриптах, вы можете подключить Dklab_ShortXSLT, написав несколько дополнительных строчек кода. <p>Стандартный синтаксис XSLT весьма громоздок, что оказывается неудобным при его использовании в Web-программировании. Библиотека позволяет облегчить эту проблему. <p><a href="/lib/Dklab_ShortXSLT/">Читать дальше...</a> Дмитрий Котеров Sat, 28 Feb 2009 05:00:00 UT Важное дополнение к статье PostgreSQL и задача параллельной многопроцессной обработки очереди. http://php5.dklab.ru/news/#news77 <p>Если не применить одну хитрость, реализовывая обработку очереди по статье <a href="/chicken/nablas/53.html#cont6">PostgreSQL и задача параллельной многопроцессной обработки очереди</a>, то можно столкнуться с серьезным багом. Теперь он подробно описан в статье. <p><a href="/chicken/nablas/53.html#cont6">Перейти к разделу с решением проблемы.</a> Дмитрий Котеров Fri, 13 Feb 2009 05:00:00 UT Библиотека Dklab_SoapClient: параллельные запросы, реконнект, обработка тайм-аутов. http://php5.dklab.ru/news/#news76 <p>Dklab_SoapClient — это расширенная версия стандартного PHP-класса SoapClient, предназначенная для параллельного удаленного вызова процедур в высоконагруженных проектах. <p>По сравнению со встроенным в PHP SoapClient, поддерживаются дополнительные возможности: <ul> <li>Одновременное выполнение запросов к нескольким удаленным процедурам — ключевая особенность библиотеки. Если страница на вашем сайте собирается из 5 удаленных блоков, каждый из которых генерируется по 100ms, их можно запустить параллельно и получить всю страницу целиком не за 500ms, а за те же самые 100ms. <li><a href="/lib/Dklab_SoapClient/">Читать дальше...</a> </ul> Дмитрий Котеров Wed, 04 Feb 2009 05:00:00 UT Набла про удачу и везение. http://php5.dklab.ru/news/#news75 <p>Удача, победа, правильный выбор, верная стратегия — все это почти синонимы, но с разной окраской. И вот то, что я хочу сказать: "удача" автоматически возникает там, где количество вариантов выбора стабильно велико день ото дня. В этом отношении удача — всего лишь иллюзия. <p><a href="/chicken/nablas/54.html">Читать дальше...</a> Дмитрий Котеров Sun, 01 Feb 2009 05:00:00 UT Библиотека PHP_Exceptionizer: преобразование E_NOTICE в исключения (Exception). http://php5.dklab.ru/news/#news74 <p>Простая, но весьма полезная библиотека PHP_Exceptionizer позволяет преобразовывать нотисы (E_NOTICE), предупреждения (E_WARNING) и т. д. в исключения PHP. <p><a href="/lib/PHP_Exceptionizer/">Читать дальше.</a> Дмитрий Котеров Wed, 21 Jan 2009 05:00:00 UT Набла PostgreSQL и задача параллельной многопроцессной обработки очереди. http://php5.dklab.ru/news/#news73 <p>Иногда встречается ситуация, которую можно обобщить фразой "задача параллельной обработки очереди". В данной статье я кратко расскажу, почему для эффективного решения этой задачи удобнее всего использовать PostgreSQL, а не какую-либо другую СУБД (типа MySQL или FireBird). <p><a href="/chicken/nablas/53.html">Читать дальше...</a> Дмитрий Котеров Sun, 14 Dec 2008 05:00:00 UT Библиотека HTTP_StaticMerger: автоматическая "склейка" CSS- и JS-файлов для быстрой загрузки. http://php5.dklab.ru/news/#news72 <p>Библиотека HTTP_StaticMerger позволяет автоматически "сливать" набор статических файлов (CSS и JS) и, таким образом, ускорять загрузку страницы, экономя HTTP-запросы. Библиотеку рекомендуется применять совместно с кэширующим reverse proxy для минимизации времени ответа. Возможности: <ul> <li>Обработка директив @import и удаление комментариев из кода, что экономит трафик. <li>"Слитый" URL зависит от времени модификации входящих в него файлов. <li>Поддержка заголовков HTTP If-Modified-Since, If-None-Match, Etag. <li>Работа под очень высокой нагрузкой (при использовании reverse-proxy сервера с модулем кэширования, например, nginx). </ul> <p><a href="/lib/HTTP_StaticMerger/">Читать дальше.</a> Дмитрий Котеров Sun, 23 Nov 2008 05:00:00 UT Unit-test фреймворк PGUnit получил существенные улучшения. http://php5.dklab.ru/news/#news71 <pre>2008-11-07 - Great speed-up while running a bunch of test with a single setUp block. In this case setUp is executed ONLY ONCE, and the effect of its execution is stored in a savepoint which is used for all individually-rollbacked tests. (All tests are still running independently and are not intersected with each other.) - Time measurnment of each test execution (thanks to Garrynja). - Supress NOTICEs generated by a setUp or test code to keep the execution log clean.</pre> Дмитрий Котеров Fri, 07 Nov 2008 05:00:00 UT PGUnit: unit-test фреймворк для хранимых процедур PostgreSQL 8.3. http://php5.dklab.ru/news/#news70 <p>PGUnit работает точно так же, как и любые xUnit-фреймворки (например, PHPUnit). Так что, научившись работать с тем же PHPUnit, вы легко поймете и принципы PGUnit. <p>"А как же pgTAP? Зачем еще один тестовый фреймворк?" - спросите вы. Дело в том, что pgTAP для нас оказался недостаточно прозрачным. Например, он не заботится на внутреннем уровне об откате тестовых транзакций и не поддерживает блок setUp, разделяемый несколькими unit-тестами (как это принято в xUnit). Он заставляет разработчика БД использовать утилиту psql и SQL-файлы (если разработчик предпочитает GUI-клиент, а не psql, это составляет некоторую проблему). Также pgTAP не умеет сканировать БД в поисках тестовых процедур. Но обратите внимание, что в настоящий момент pgTAP имеет гораздо больше проверочных функций, чем PGUnit. Возможно, вам следует использовать pgTAP, а не PGUnit - изучите его тоже. <p><a href="/lib/dklab_pgunit/">Перейти на страницу библиотеки</a> Дмитрий Котеров Tue, 04 Nov 2008 05:00:00 UT Статья Адресную строку браузера — на помойку? (Спустя 6 лет.) http://php5.dklab.ru/news/#news69 <p>В далеком 2002 году, когда в ходу были еще модемы, на замечательном форуме XPoint я опубликовал заметку, которую и хочу сейчас здесь перепечатать. Как выяснилось, она ничуть не потеряла своей актуальности за это время. <p><a href="/chicken/nablas/52.html">Читать статью.</a> Дмитрий Котеров Tue, 04 Nov 2008 05:00:00 UT Multi-get оптимизация прозводительности в Dklab_Cache (бета-версия). http://php5.dklab.ru/news/#news68 <p>Выложена пока еще неофициальная версия Dklab_Cache с оптимизацией числа запросов на чтение из memcached. Теперь число запросов на чтение не зависит от количества тэгов, которым помечен некоторый ключ, и в худшем случае равно двум. <p>Хотя новая версия полностью совместима со старой и покрыта тестами, требуется тестирование энтузиастами. Подробности <a href="http://forum.dklab.ru/viewtopic.php?p=159170#159170">в форуме</a>. Дмитрий Котеров Tue, 19 Aug 2008 04:00:00 UT Библиотека: PostgreSQL 8.3, эмуляция ALTER ENUM: добавление/удаление элемента возможно. http://php5.dklab.ru/news/#news67 <p>Хорошо известно, что конструкции ALTER TYPE для удобного типа ENUM PostgreSQL 8.3 не существует (по крайней мере, в версии 8.3.3). Таким образом, вы можете написать: <pre> CREATE TYPE my_enum AS ENUM('first', 'second'); </pre> <p>но после этого — не имеете возможности добавить новый элемент в данный ENUM, если на тип ссылается некоторая таблица. И даже если на какой-то элемент my_enum нет внешних ссылок, вы все равно не можете его удалить стандартными средствами. <p>К счастью, решение существует, и вы можете им воспользоваться. <p><a href="/lib/dklab_postgresql_enum/">Читать дальше</a> Дмитрий Котеров Wed, 13 Aug 2008 04:00:00 UT Вышла набла о срочных задачах. http://php5.dklab.ru/news/#news66 <a href="/chicken/nablas/51.html">Читать.</a> Дмитрий Котеров Sun, 06 Jul 2008 04:00:00 UT Статья Заметки про фронтенды, бэкенды, балансировщики и тому подобное. http://php5.dklab.ru/news/#news65 <p>Предыдущая набла вызвала некоторые дебаты в форуме, часть которых я решил теперь выделить в отдельную статью. Надеюсь, это будет полезно тем, кто занимается высоконагруженными проектами. <p><a href="/chicken/nablas/50.html">Читать дальше...</a> Дмитрий Котеров Sun, 25 May 2008 04:00:00 UT dkLab PostgreSQL patch: быстрые функции на C для работы с огромными массивами. http://php5.dklab.ru/news/#news64 <p>dkLab PostgreSQL patch — это небольшой набор патчей для PostgreSQL 8.3, а именно, для расширений ("контрибов") intarray и intagg. Он добавляет 3 написанные на C (а потому быстрые) функции для работы с очень большими наборами предварительно отсортированных массивов. <p><a href="/lib/dklab_postgresql_patch/">Читать дальше...</a> Дмитрий Котеров Tue, 20 May 2008 04:00:00 UT Статья Оптимизируем загрузку PHP-кода в 22 раза, или почему FastCGI не ускоряет PHP. http://php5.dklab.ru/news/#news63 <p>Большинство традиционных языков Web-программирования (Perl, Ruby, Python и т. д.) поддерживают написание скриптов, работающих в так называемом "FastCGI-режиме". Более того, Ruby on Rails, к примеру, вообще невозможно использовать в CGI-режиме, т.к. он тратит на подключение всех своих многочисленных библиотек десятки секунд. <p>Ниже я расскажу о методе, который позволяет в ряде случаев ускорить загрузку объемного PHP-кода более чем в 20 раз, не получая при этом побочных эффектов и значительных неудобств. Но вначале давайте поговорим об основах... <p>Вероятно, вы слышали, что PHP тоже можно запускать в режиме FastCGI, и что так делают многие нагруженные проекты (Мамба, некоторые проекты Mail.Ru и т. д.). Это якобы дает "существенный прирост" производительности, потому что FastCGI экономит время инициализации скрипта и подключения библиотек. <p>Не верьте! В действительности поддержка FastCGI в PHP имеет чисто номинальный характер. Точнее, она не дает преимуществ в том смысле, в котором ей привыкли оперировать для уменьшения времени инициализации скрипта. <p><a href="/chicken/nablas/49.html">Читать дальше.</a> Дмитрий Котеров Sun, 11 May 2008 04:00:00 UT Новые статьи про кэширование в сложных проектах: первая и вторая. http://php5.dklab.ru/news/#news62 <p>В высоконагруженных системах данные добавляются в таблицы по нескольку (сотен) раз в секунду. Поэтому логика отслеживания зависимостей и проверки, какие ячейки кэша нужно очищать, а какие — нет, становится крайне сложной (а то и вовсе нереализуемой). Тэгирование предоставляет решение этой проблемы. Каждый раз, когда данные записываютя в некоторую ячейку кэша, мы помечаем их тэгами — пометками, представляющими зависимости этих данных от других частей системы. Тэги как бы позволяют объединять ячейки в множественные пересекающиеся группы. В дальнейшем мы можем дать команду "очистить все ячейки, помеченные определенным тэгом". <a href="/chicken/nablas/47.html">Читать дальше.</a> <p>Что это за зависимости в коде при работе с кэшем? В типичном случае нам приходится несколько раз ссылаться за ключ кэширования, чтобы эффективно работать с данными. Особенно это актуально, если мы напрямую используем backend-классы кэширования. Каркас Dklab_Cache_Frontend позволяет решить проблему лишних зависимостей, упростить код системы и сделать его более строгим. Каждый тип кэширования должен быть представлен в виде отдельного Slot-класса, а данные, на основе которых генерируется ключ кэширования, передаются в его конструкторе. Слоты, помимо прочего, поддерживают тэгирование. <a href="/chicken/nablas/48.html">Читать дальше.</a> Дмитрий Котеров Wed, 23 Apr 2008 04:00:00 UT Библиотека Dklab_Cache в Конструкторе: тэги в memcached, framework для кэширования. http://php5.dklab.ru/news/#news61 <p><b>Dklab_Cache — это (в основном) библиотека поддержки тэгирования ключей для memcached</b>, использующая интерфейсы <a href="http://framework.zend.com/manual/ru/" target="_blank">Zend Framework</a>. Вот полный список возможностей библиотеки: <ul> <li>Backend_TagEmuWrapper: тэги для memcached и любых других backend-систем кэширования Zend Framework; <li>Backend_NamespaceWrapper: поддержка пространств имен для memcached и др.; <li>Backend_Profiler: подсчет статистики по использованию memcached и др. backend-ов; <li>Backend_MemcachedTag: поддержка еще весьма "сырого" патча <a href="http://code.google.com/p/memcached-tag/">memcached-tag</a>; <li>Frontend_Slot, Frontent_Tag: каркас для высокоуровневого построения систем кэшиирования в сложных проектах. </ul> Дмитрий Котеров Wed, 23 Apr 2008 04:00:00 UT Статья Теория: модерируемые справочники в БД. http://php5.dklab.ru/news/#news60 <p>В данной статье я попытался описать опыт последних нескольких лет работы над сложной и высоконагруженной системой, к которой предъявляются повышенные требования к "чистоте" и качеству данных. При этом сами данные пополняются не столько администраторами системы, сколько ее пользователями, что входит в серьезное противоречие с требованием "чистоты". Ведь известно, что основная масса пользователей склонна вводить всякий "мусор" в поля, где предполагается наличие качественных данных. <p>Статья, вероятно, получилась нескольпо абстрактной и наукообразной. Тем не менее, я уверен, что, взяв за основу изложенные в ней идеи, каждый сможет реализовать в своей системе качественную и универсальную работу с "чистыми" справочниками, пополняемыми "некачественными" пользователями. <p><a href="/chicken/nablas/46.html">Читать дальше.</a> Дмитрий Котеров Fri, 25 Jan 2008 05:00:00 UT Вышла официальная версия Денвера-3. http://php5.dklab.ru/news/#news59 Денвер-3 вышел из стадии альфа- и бета-тестирования. Также обновился сайт Денвера. Всем пользователям рекомендуется <a href="http://www.denwer.ru/faq/migrate.html">обновить Денвер на новую версию</a>. Нововведения и отличия от Денвера-2: <ul> <li>Совместимость с Windows Vista. <li>Теперь в базовом пакете новые версии apache2, mod_php5 и mysql5. <li>Полноценная поддержка SSL для всех виртуальных хостов. <li>Полноценный Perl 5.8 идет в полноценном пакете расширения (урезанная версия больше не мешается в базовом пакете). <li>Увы, размер Денвера вырос: apache2, php5, mysql5 требуют больше места. <li>Пакет расширения Parser обновлен до последней версии. </ul> Дмитрий Котеров Sun, 06 Jan 2008 05:00:00 UT Статья Про перехват и обработку фатальных ошибок (Fatal Error) в PHP. http://php5.dklab.ru/news/#news58 <p>Принято ошибочно считать, что фатальные ошибки в PHP (те, что отображаются как Fatal Error) невозможно перехватить и обработать программно. На самом деле, это не так. <p><a href="/chicken/nablas/45.html">Читать статью.</a> Дмитрий Котеров Sun, 05 Aug 2007 04:00:00 UT Открылся Web-интерфейс системы Orphus. http://php5.dklab.ru/news/#news57 <p><a href="http://orphus.ru">Orphus</a> - система, суммирующая некоторую часть естественного интеллекта посетителей сайта в целях обнаружения орфографических (и других) ошибок на нем. Система крайне проста: любой посетитель сайта, где она установлена, имеет возможность выделить "не понравившийся" ему кусочек текста мышкой и нажать Ctrl+Enter. После этого выделенный фрагмент (вместе с окружающим текстом и другой полезной информацией) немедленно отсылается вебмастеру сайта (например, на почту), а для пользователя это выглядит совершенно прозрачно - ему больше ничего не надо делать. <p>Сегодня открылся Web-интерфейс, позволяющий вебмастеру обрабатывать ошибки без помощи почтового клиента. В настоящий момент реализованы только самые базовые возможности (многоязычность, группировка ошибок по посетителям, AJAX-обработка сообщений и т.д.), однако даже это уже гораздо удобнее, чем использование почты. <p>В дальнейшем планируется серьезное развитие системы в сторону эвристических методов приоритезации опечаток. Дмитрий Котеров Mon, 18 Jun 2007 04:00:00 UT Система dkLab Apache: запуск виртуальных хостов под владельцами аккаунтов. http://php5.dklab.ru/news/#news56 <p>dkLab Apache - это дистрибутив для тех, кто собирается использовать Apache в Unix для обслуживания нескольких полностью независимых друг от друга сайтов, работающих под <i>разными</i>, полностью разграниченными друг от друга пользователями Unix. <p>По сути это Apache 1.3.34, на который наложены некоторые "самодельные" патчи. Вот функциональность, которую они добавляют: <ul> <li><b>Запуск различных виртуальных хостов под различными Unix-пользователями.</b> Это работает даже для mod_php. То, под каким пользователем работает виртуальный хост, задается в его стандартных директивах <a href="http://httpd.apache.org/docs/1.3/mod/core.html#user">User</a> и <a href="http://httpd.apache.org/docs/1.3/mod/core.html#group">Group</a>. <li><b>Возможность создавать виртуальные хосты по шаблону: ABC.example.com -&gt; /home/example/ABC.</b> Вы можете ссылаться в директиве <a href="http://httpd.apache.org/docs/1.3/mod/core.html#documentroot">DocumentRoot</a> на нужную часть доменного имени, например, так: C</home/example/\$-3+> (в данном примере это будет C</home/example/ABC>). <li><b>Модуль mod_rewrite защищен от любого рода "зацикливаний".</b> Неосторожно или злонамеренно написанные директивы в .htaccess не могут "подвесить" весь сервер. </ul> <a href="/lib/dklab_apache/">Прочитать статью и скачать дистрибутив</a>. Дмитрий Котеров Sat, 31 Mar 2007 04:00:00 UT Вышла новая версия JsHttpRequest 5.0: еще лучшая кроссбраузерность! http://php5.dklab.ru/news/#news55 <p>Главные нововведения по сравнению с версией 4.x: <ul> <li>Код frontend-части практически полностью переписан. Теперь он модульный: можно самостоятельно отключать ненужные загрузчики. <li>Еще большая кроссбраузерность (в частности, решена проблема с падениями в IE 5.0). <li>Автоматический framework для тестирования библиотеки в различных браузерах (JsTest). <li>Дополнительные отладочные возможности (например, централизованное хранение всех текстов ошибок). <li>В backend-части используется встроенная в PHP5 функцию json_encode() (если она недоступна, то работает старый способ, который в 3 раза медленнее). <li>Юрий Насретдинов написал сокращенную версию статьи о библиотеке, адаптированную "для буржуев". <li>Появилась полная спецификация протокола обмена данными между backend и frontend (на английском языке). <li>Код библиотеки оптимизирован по размеру при помощи утилит из Dojo Toolkit (соответственно, размер библиотеки уменьшился). </ul> Дмитрий Котеров Mon, 12 Mar 2007 04:00:00 UT Age of Web + Dk Lab = Rise and shine! http://php5.dklab.ru/news/#news54 Лаборатория dk и агентства «Эпоха» договорились о совместной поддержке и развитии популярного сайта «Эпоха Веба» (<a href="http://ageofweb.ru">http://ageofweb.ru</a>), который некоторое время назад находился в кризисном техническом состоянии (возможно, в связи с затяжными праздниками) и даже чуть было не закрылся. Будем надеяться, это продолжит славное шествие данного ресурса по просторам Рунета. Заходите в гости! Дмитрий Котеров Tue, 16 Jan 2007 05:00:00 UT Открылся Subversion-доступ к библиотекам Конструктора. http://php5.dklab.ru/news/#news53 <p>Теперь вы можете скачивать все примеры и библиотеки, а также отслеживать изменения в исходных кодах при помощи Subversion: <ul> <li>воспользовавшись интерфейсом WebSVN: <a href="/wsvn/lib/">http://dklab.ru/wsvn/lib/</a> <li>используя анонимный доступом к SVN: <tt>svn://dklab.ru/lib</tt> </ul> Дмитрий Котеров Sun, 10 Dec 2006 05:00:00 UT Вышла версия 2 библиотеки DbSimple (поддержка MySQL, PostgreSQL, FireBird). http://php5.dklab.ru/news/#news52 <p>Библиотека DbSimple является удобным инструментом для тех, кто пишет скрипты с использованием большого разнообразия сложных SQL-запросов. Ее основная черта — простота и лаконичность повседневного применения. А вот и другие два плюса библиотеки: расширенная поддержка placeholder-ов и условные макроблоки (появились в версии 2). <p>В настояший момент поддерживаются: MySQL, PostgreSQL, FireBird. <p><a href="/lib/DbSimple/">Читать статью и документацию.</a> Дмитрий Котеров Sun, 10 Dec 2006 05:00:00 UT Вышла версия 4.0 библиотеки JsHttpRequest с поддержкой upload-а файлов. http://php5.dklab.ru/news/#news51 <p>JsHttpRequest (лицензия LGPL) реализует загрузку данных методом <a href="http://en.wikipedia.org/wiki/AJAX">AJAX</a> (<a href="http://www.google.ru/search?q=Remote+Scripting">Remote Scripting</a>). Вот краткий перечень ее ключевых возможностей и отличий от аналогов: <ul> <li><b>Кроссбраузерность</b>. Библиотека работает в IE5.0+, Mozilla 1.7+, FireFox 1.0+ и Opera 7.3+, Safari (здесь "+" означает "в этой и более новых версиях"). Кроме того, код может работать без поддержки ActiveX и XMLHttpRequest (однако, если эти возможности включены в браузер, они автоматически задействуются). <li><b>Закачка файлов</b> (upload) из браузера на сервер без перезагрузки страницы. <li><b>Полная поддержка отладочных возможностей PHP</b>. Если в скрипте на серверной стороне происходит ошибка (включая фатальную, например, вызов неопределенной функции), клиентская часть имеет возможность корректно ее обработать и вывести диагностику. Помимо данных ответа, ей передается выходной поток скрипта, содержащий текст ошибки PHP. <li><b>Передача многомерных структур</b> (аналог <a href="http://json.org/">JSON</a>) в данных запроса и ответа сервера. При этом используются стандартные средства PHP — многомерные массивы (данные запроса можно получить из C<\$_REQUEST>, данные ответа записываются в C<\$_RESULT>), а также стандартные средства JavaScript — вложенные объекты и свойства. Никакого XML на уровне API: работа происходит "родными" средствами языков. <li><b>Поддержка сессий PHP</b> стандартными средствами. <li><b>Выбор оптимального метода загрузки</b> данных (XMLHttpRequest, Microsoft.XMLHTTP, &lt;SCRIPT&gt;, &lt;IFRAME&gt;) в зависимости от браузера. В частности, возможность загружать данные с других хостов. <li><b>Интерфейс</b>, совместимый с XMLHttpRequest. </ul> <p>Читать статью <a href="/lib/JsHttpRequest/">JsHttpRequest: динамическая подкачка данных с поддержкой upload-а (AJAX)</a>. Благодаря Юрию Насретдинову доступен также английский перевод статьи: <a href="http://en.dklab.ru/lib/JsHttpRequest/">JsHttpRequest: dynamic data loading and file upload support (AJAX)</a>. Дмитрий Котеров Tue, 24 Oct 2006 04:00:00 UT Уникальная технология и библиотека HTML_MetaForm вышла из стадии бета-версии! http://php5.dklab.ru/news/#news50 <p>После почти полутора лет разработки концепции, около десятка переработок и шлифовок мне наконец-то удалось устранить все идеологические сложности и выпустить финальный релиз библиотеки HTML_MetaForm. Пользуйтесь! <p>Библиотека HTML_MetaForm, а также сопутствующая библиотека HTML_MetaFormAction позволяют свести различия между Web- и GUI-формами к минимуму, не изменяя при этом традиционную структуру Web-скриптов. Вот полный список возможностей комплекса: <ul> <li>Автоматическое извлечение полной информации о структуре формы (метаданные) прямо из HTML-потока с последующей передачей ее обработчику формы. <li>Цифровое подписывание формы: обработчик может быть уверен, что полученные метаданные достоверны, а не подделана злоумышленником. Обеспечение соответствий: обработчика атрибуту C<action> формы, выбранного значения элементу выпадающего списка, допустимости теста скрытого поля. <li>Сохранение сведений о структуре (тексты и значения) выпадающих списков, radio-кнопок и checkbox-ов. <li>Передача в обработчик различных мета-атрибутов, задаваемых прямо в HTML-коде формы (например, сведения о валидаторах). <li>Накопление сообщений об ошибках валидации, привязанных прямо к полям формы, с возможностью последующего отображения в настраиваемом дизайне. При этом данные, введенные в поля ранее, автоматически остаются на своих местах. <li>Автоматический (возможен и ручной) запуск валидаторов, привязанных прямо к HTML-полям формы. <li>Запуск реакции на ту или иную кнопку формы, если ошибок валидации не было. </ul> <p><a href="/lib/HTML_MetaForm/">Читать статью...</a> Дмитрий Котеров Sun, 24 Sep 2006 04:00:00 UT Статья Debug_HackerConsole: «хакерская» консоль, упрощающая отладку сайтов. http://php5.dklab.ru/news/#news49 <p>Класс Debug_HackerConsole_Main предназначен для временного вывода отладочной информации в виде, не загромождающей окно браузера и логи сервера. <p>Особенно удобно использовать консоль для вывода лога всех SQL-запросов, выполненных скриптом. Если работа вашего сайта с СУБД идет через централизованную библиотеку, достаточно добавить вызов Debug_HackerConsole_Main::out() в функцию, осуществляющую SQL-запрос, чтобы получить хороший инструмент диагностики (особенно если вы будете логировать не только запросы, но также и результаты их выполнения в краткой форме вида «запрос возвратил X строк» или «запрос вернул ошибку Y»). <p><a href="/lib/Debug_HackerConsole/">Читать дальше</a>. Дмитрий Котеров Sun, 04 Sep 2005 04:00:00 UT Новый раздел сайта — Конструктор. Статьи снабжены zip-архивами исходников. http://php5.dklab.ru/news/#news48 В последнее время в статьях Куроводства появляется все больше описаний законченных библиотек на PHP, Perl и JavaScript. Большинство этих библиотек используются во множестве проектов, разработанных автором, и поддерживаются им (происходит отладка и исправление ошибок). Я решил выделить все такие библиотеки в отдельный раздел Дмитрий Котеров Sat, 30 Jul 2005 04:00:00 UT Статья HTML_FormPersister: новый взгляд на построение форм. http://php5.dklab.ru/news/#news47 <p>Модуль <tt>HTML_FormPersister</tt> позволяет сильно упростить разработку скриптов, использующих сложные и большие формы. Особенно удобно его применять при модификации уже написанных скриптов (таких как, например, phpBB). <p>В этой статье затрагиватся лишь аспекты <i>создания</i> форм, но <i>не</i> аспекты их приемы и обработки. <p><a href="/chicken/nablas/43.html">Читать статью</a>. Дмитрий Котеров Tue, 26 Apr 2005 04:00:00 UT Префильтрация: статья про перехват фатальных (E_ERROR) ошибок в PHP-программах. http://php5.dklab.ru/news/#news46 <p>С применением метода, реализованного в модуле PHP_CodeFilter, процесс написания шаблонных языков выходит на качественно новую ступень, ранее доступную только в языке Perl. Например, появляется возможность создания Smarty-подобного транслятора, допускающего удобную отладку шаблонных файлов. <p>Преобразование (трансляцию) файла с некоторого мета-языка шаблонов в PHP-код с последующим его запуском я назвал префильтрацией кода (по аналогии с известным модулем для Perl Filter::Util::Call). С использованием этой идеологии можно «запускать» некоторый шаблон, как будто бы он является обычным PHP-кодом, но проводить в нем предварительную обработку — например, «разворачивать» собственные директивы в «чистый» PHP-код. <p><a href="/chicken/nablas/42.html">Читать статью.</a> Дмитрий Котеров Sat, 23 Apr 2005 04:00:00 UT Новый пакет расширений для Денвера — FireBird 1.5. http://php5.dklab.ru/news/#news45 <p>Пакет расширения включает в себя СУБД FireBird, а также утилиту администрирования IBExpert.</p> <p><a href="http://www.firebirdsql.org">FireBird</a> — это СУБД (Система Управления Базами Данных), основанная на ядре <a href="http://www.borland.com">Borland InterBase</a>. Она представляет собой полнофункциональный SQL-сервер. <p><a href="http://www.ibexpert.info">IBExpert</a> — мощная утилита администрирования СУБД FireBird. Она позволяет не только полностью управлять структурами баз данных, но также и создавать хранимые процедуры, триггеры, а также отлаживать их <i>в пошаговом режиме</i>, как это принято в «обычных» языках программирования (C++, Delphi, Java, PHP и т.д.). <p><a href="http://denwer.ru/packages/firebird.html">Инструкции по установке</a>.</p> Дмитрий Котеров Thu, 21 Apr 2005 04:00:00 UT Статья про новый подход к динамической подгрузке данных. http://php5.dklab.ru/news/#news44 <p>В отличие от ActiveX-компоненты IE <tt>Microsoft.XMLHTTP</tt> и Mozilla-класса <tt>XMLHttpRequest</tt>, используемых в <a href="http://www.google.com/webhp?complete=1&hl=en">Google Suggest</a>, предлагаемая библиотека <tt>JSHttpRequest</tt> кроссбраузерна: она <i>не опирается</i> на особенности браузеров и работает в IE5.0+, Mozilla 0.7+, FireFox 1.0+ и Opera 7.3+ (здесь «+» означает «в этой и более новых версиях»). Код не использует ни ActiveX, ни &lt;IFRAME&gt;, а построен на базе динамической генерации тэга &lt;SCRIPT&gt;. <p>Текст статьи <a href="/chicken/nablas/41.html">JSHttpRequest: динамическая подкачка данных без перезагрузки страницы</a>. Дмитрий Котеров Thu, 03 Feb 2005 05:00:00 UT Новый пакет расширений для Денвера — ActivePython. http://php5.dklab.ru/news/#news43 <p>Python — свободный интерпретируемый объектно-ориентированный расширяемый язык программирования сверхвысокого уровня. Пакет расширений ActivePython позволяет установить интерпретатор Python в Денвер-систему. <p>Начальную версию пакета предоставил <a href="http://forum.dklab.ru/users/Tit/">tIT</a>. Спасибо! <p><a href="http://www.denwer.ru/dis/ActivePython">Скачать пакет ActivePython</a>. Дмитрий Котеров Wed, 19 Jan 2005 05:00:00 UT Денвер перешел на использование MySQL 4.1! http://php5.dklab.ru/news/#news42 <p>Отныне в состав Денвера входит последняя версия MySQL — 4.1. Полный список изменений <pre> * Денвер-2 2005-01-12 - Переход к PHP версии 4.3.10. - Переход к MySQL версии 4.1 (с поддержкой Unicode). ВНИМАНИЕ! НЕ УДИВЛЯЙТЕСЬ, если сразу же после установки новой версии Денвера MySQL перестанет обнаруживать созданные ранее базы данных! Они все сохранились и находятся в директории /usr/local/mysql/data. Т.к. совместимость MySQL 3.x и MySQL 4.1 недостаточно хорошая, возможно, вам придется повозиться, перенося старые базы на новое место. Для переноса КАЖДОЙ БД необходимо: - завести пользователя и БД в новом MySQL 4.1, воспользовавшись скриптом http://localhost/Tools/addmuser/ - скопировать файлы данных из /usr/local/mysql/data/ИМЯ_БАЗЫ на новое место - /usr/local/mysql4/data/ИМЯ_БАЗЫ ПОМНИТЕ: вы всегда можете переключиться назад на использование MySQL 3, для чего достаточно поменять путь к MySQL в файле /etc/CONFIGURATION.txt. - Переход к phpMyAdmin 2.6.1. - Переход к Parser 3.1.4. * Денвер-2 2005-01-18 - Теперь, если ПОЛНОЕ доменное имя некоторого виртуального хоста содержит часть вида NN.NN.NN.NN (т.е. IP-адрес), Денвер привязывает данный виртуальный хост именно к этому адресу. Например, /home/test/192.168.0.1/ доступен по адресам: * http://192.168.0.1 (IP-адрес), * http://192.168.0.1.test (доменное имя), а /home/192.168.0.1/www - по адресам: * http://192.168.0.1 (IP-адрес) * http://www.192.168.0.1 (доменное имя) </pre> Дмитрий Котеров Tue, 18 Jan 2005 05:00:00 UT Проект Денвер переехал на отдельный домен. http://php5.dklab.ru/news/#news41 <p>Новое (и постоянное) "место жительства" Денвера — сайт <a href="http://denwer.ru">Denwer.Ru</a>. Он расположен на машине генерального спонсора проекта, компании <a href="http://www.net.ru">Net.Ru</a>. <p>Теперь сайт работает на базе системы управления шаблонами Templier, описанной в книге автора <a href="http://bhv.ru/books/book.php?id=6643">PHP5</a> (исходные коды на <a href="http://php5.dklab.ru">сайте книги</a>). Проведен редизайн с использованием стандартов XHTML и CSS. Все старые ссылки вида <a href="http://dklab.ru/chicken/web/dis/">http://dklab.ru/chicken/web/dis/</a> по-прежнему работают, но переадресуют уже на новый сайт. <p>Добро пожаловать! Дмитрий Котеров Tue, 28 Dec 2004 05:00:00 UT Первый тираж новой книги «PHP5» (серия «В подлиннике» — не путать с «Самоучителем PHP5»!). http://php5.dklab.ru/news/#news40 <p><a href="http://php5.dklab.ru">Перейти на сайт книги</a> (пока находится в разработке, но тексты листингов уже доступны для скачивания). <p>Рассмотрен один из самых популярных в Интернете языков — PHP. Книга адресована как профессиональным Web-разработчикам, так и новичкам, владеющим лишь базовыми навыками программирования и не знакомым с PHP. Изложены основы функционирования Web-серверов, синтаксис и стандартные функции языка, техника разделения кода и дизайна сценариев. Приведено описание функций PHP для работы с файлами, СУБД MySQL, регулярными выражениями формата PCRE, графическими примитивами, почтой. Особое внимание уделено новым возможностям PHP 5 работе с XML-документами и полноценному объектно-ориентированному программированию.</p> <p><b>Внимание:</b> ни сайт, ни автор не занимаются продажами книги. Если вы хотите ее приобрести, пожалуйста, зайдите в книжный магазин либо на <a href=http://yandex.ru>Yandex</a>. <p><b>Внимание:</b> не путайте данную книгу с «Самоучителем PHP5» (авторы: Кузнецов М., Симдянов И.)! Хотя все три книги — «Самоучитель PHP4», «PHP5» и «Самоучитель PHP5» и вышли в одном издательстве — BHV, — лишь первые две имеют отношение к данному сайту. Дмитрий Котеров Fri, 10 Dec 2004 05:00:00 UT Вышла статья про использование прототипов и наследование в JavaScript. http://php5.dklab.ru/news/#news39 <p>В Интернете масса литературы, описывающей, что такое prototype, и в каком контексте его обычно используют. Однако львиная доля статей страдает одним большим недостатком: там не разъясняется детально, как именно работают прототипы, когда их можно применять, а когда — нельзя. <p><a href="/chicken/40.html">Полная версия статьи</a>. Дмитрий Котеров Thu, 02 Dec 2004 05:00:00 UT Новая разновидность базового пакета Денвера — Денвер+PHP5. Обновлены версии компонентов. http://php5.dklab.ru/news/#news38 <p>Создана специальная разновидность базового пакета Денвера - <tt>Base_PHP5</tt>. Дистрибутив содержит: Apache, PHP5, Perl, MySQL, phpMyAdmin, sendmail-заглушка, однако в нем <i>нет</i> PHP версии 4; вместо него -- PHP5. В остальном архивы совпадают. Достоинство данного дистрибутива в том, что PHP5 работает <i>в виде модуля Apache</i>, а не в виде CGI-обработчика. Если вы планируете использовать только PHP5, то вам, вероятнее всего, будет удобнее всего скачать именно данную версию Денвера. <p>Список изменений: <pre> * Денвер-2 2004-11-06 - Скрипт запуска Apache автоматически настраивается на версию mod_php, так что теперь для подключения mod_php5 достаточно изменить лишь директиву LoadModule в httpd.conf. Также при помощи этой директивы можно ссылаться на внешнюю инсталляцию PHP, не входящую в Денвер, и даже расположенную на другом диске. [2004-11-06] - Переход к PHP 4.3.9 [2004-11-06]. - Переход к PHP 5.0.2 [2004-11-06]. - Создана PHP5-версия базового пакета (Base_PHP5), включающая в себя полный дистрибутив PHP5 вместо PHP4 [2004-11-06]. - Переход к phpMyAdmin 2.6.0-pl2 [2004-11-06]. - Шаблоны виртуальных хостов теперь могут ссылаться на DocumentRoot, расположенные на другом диске, вне /home Денвера (например, на C:/CustomDomains) [Mike Frolov, 2004-11-06]. </pre> Дмитрий Котеров Sun, 07 Nov 2004 05:00:00 UT Вышла новая версия Денвера-2. http://php5.dklab.ru/news/#news37 <p>Выход Денвера-3 несколько откладывается в связи с далеко идущими планами по развитию проекта и вероятным привлечением к делу спонсора. Вместо этого продолжает развиваться ветка Денвер-2. <p>Список изменений: <pre> * Денвер-2 2004-09-06 - Теперь путь к директории WebServers может содержать пробелы. - Исправлена ошибка в механизме обработки "одноразовых" пользовательских шаблонов виртуальных хостов. Теперь пользователь может просто скопировать "обычный" блок VirtualHost в httpd.conf, предварить каждую его строку комментарием и заменть DocumentRoot на DocumentRootMatch. После этого получится шаблон, совпадающий с одним-единственным хостом, и этот хост будет обрабатываться Денвером (в частности, вноситься в vhosts.conf и, что самое главное, в hosts) [2004-07-13]. - Исправлена ошибка в http://localhost/addmuser.php [baev, 2004-08-23]. - Добавлен синтаксис $&{X:-default} и $^{X:-default} в шаблонах хостов [2004-09-05]. - Добавлена возможность "вешать" хосты на другой IP-адрес и порт (см. /home/custom/.htaccess и http://custom-host:8648/ - не забудьте отключить или настроить фаервол!) [2004-09-05]. </pre> Дмитрий Котеров Mon, 06 Sep 2004 04:00:00 UT Вышел пакет Альфа-версия Parrot и Perl6 для Денвера. http://php5.dklab.ru/news/#news36 <p>Учтите, что на данный момент официальной версии <a href="http://perl6.ru">Perl6</a> ещё не существует. Таким образом, Perl6 в данном пакете может содержать ошибки и временами работать не так, как нужно. <p><b>Внимание!</b> Для функционирования Perl 6 необходимо наличие в системе Perl 5 <i>вместе с библиотеками</i>. Поэтому прежде, чем ставить данный пакет, поставьте <a href="perl.html">расширение с модулями ActivePerl</a>, расположенное на сайте Денвера. <p><a href="/chicken/web/dis/Parrot/latest">Загрузить пакет</a>. Дмитрий Котеров Sat, 07 Aug 2004 04:00:00 UT Вышел пакет расширения PHP 5.0.0 для Денвера. http://php5.dklab.ru/news/#news35 <p>Наконец-то вышла официальная версия PHP 5.0. Соответственно, создан и пакет для Денвера. <ul> <li>Прямая ссылка для скачивания пакета: <a href=/chicken/web/dis/PHP5/latest>http://dklab.ru/chicken/web/dis/PHP5/latest</a>. <li>Описание новых возможностей PHP5: <a href="http://www.zend.com/php5/articles/engine2-php5-changes.php">http://www.zend.com/php5/articles/engine2-php5-changes.php</a>. </ul> Дмитрий Котеров Wed, 21 Jul 2004 04:00:00 UT Вышла новая версия Orphus 3.1. http://php5.dklab.ru/news/#news34 Изменения версии Orphus 3.1: <ul> <li>Главный скрипт переписан с нуля в лучших традициях современного JavaScript. Его объем сильно уменьшился. <li>Теперь вместо JS-скрипта в IFRAME подключается сразу HTML-страница. <li>Главный скрипт проходит валидацию в соответствии со стандартами <a href="http://validator.w3.org/check?uri=$orphus_url/src/orphus.htm">XHTML&nbsp;1.0</a> и <a href="http://jigsaw.w3.org/css-validator/validator?uri=http://orphus.dklab.ru/src/orphus.htm">CSS&nbsp;1.0</a>. <li>Выделенный контекст теперь также указывается и в теме письма. <li>Добавлено кодирование E-mail получателя писем, чтобы его не обнаруживали спам-роботы. <li>Оптимизирована многоязыковая поддержка. <li>Приходящие от Orphus-а письма соответствуют стандарту RFC на E-mail (все заголовки кодируются при помощи base64), что теоретически должно уменьшить число ``ложных срабатываний'' на них антиспам-систем. <li>Значительно улучшена устойчивость системы к различным кодировкам сайтов (письма всегда приходят в читаемом виде). <li>Теперь Orphus работает и в Опере -- выжимая все, на что она способна (но не более того). <li>Улучшена форма на данной странице -- скачивать кнопки в экзотических браузерах стало проще. <li>Добавлено множество новых кнопок. </ul> Несмотря на значительные изменения как скрипта, так и серверной части, совместимость со старыми версиями JS-кода сохранена. Дмитрий Котеров Wed, 14 Apr 2004 04:00:00 UT Вышла новая версия Денвера-2. http://php5.dklab.ru/news/#news33 <p>Вероятно, это последняя версия Денвера-2 перед выходом Денвера-3. Я очень не хотел ее выпускать (потому что сейчас Денвер-3 уже практически закончен, и возвращаться ко второй версии — проделывать одну и ту же работу повторно), но столько народу желали видеть новый Parser и PHP, что в конце концов я уступил. <p>Список изменений: <pre> * Денвер-2 2004-04-08 - переход к Parser 3.1.2 [Игорь Светликов]. - Переход к phpMyAdmin 2.5.6 (сильно увеличился размер дистрибутива). - Переход к PHP 4.3.4 (версия 4.3.5 нестабильна в Windows 98). - Улучшена проверка, запущен ли Apache. Просто проверяется, можно ли открыть его exe-файл на запись: если можно, значит, не запущен. - Добавлен скрипт поиска по документации и другим директориям [(C) Антон Сущев, 2004-01-16]. - Улучшена отладочная заглушка sendmail: теперь каждое письмо помещается в файл с расширением .eml в директории /tmp/!sendmail, так что его можно открывать Outlook-ом [Vladimir Shishkin, baev, Антон Сущев, 2004-01-10]. - Исправлены неточности в скриптах http://localhost (в том числе при register_globals off) [Дмитрий Эсс, 2004-01-18]. - Улучшен механизм обработки шаблона виртуальных хостов. В качестве иллюстрации штатно поддерживаются следующие схемы (примеры отображений): /home/somehost/abc.def -> http://abc.def.somehost /home/somehost/domains/abc -> http://abc.somehost /var/www/html/~somehost/abc -> http://abc.somehost /home/somehost/public_html -> http://somehost [Vitj0k, 2004-01-18] - Добавлен "виртуальный хост по умолчанию" - несуществующая директория, к которой производится обращение, если не удается найти запрошенный домен. - Добавлена проверка наличия SYSTEM32-директории в инсталляторе [Евгений Ковалев, 2004-02-29]. </pre> Учтите, что данная версия уже <i>почти не оптимизирована</i> по размеру, и он увеличился примерно на 400 КБ. Это объясняется переходом к новой версии phpMyAdmin, а также GD2 в PHP. Дмитрий Котеров Thu, 08 Apr 2004 04:00:00 UT Новые статьи про тонкости JavaScript. http://php5.dklab.ru/news/#news32 Вполне возможно, что после этой и следующей наблы вы почувствуете себя глупо. Вы будете ощущать себя так же, как программист для Windows, всю жизнь рисовавший круги, прямоугольники, кнопки и т.д. вручную (по точкам -- например, через DirectDraw), и вдруг обнаруживший, что в этой ОС существует куча готовых средств для отрисовки элементов интерфейса. <br><a href="http://www.dklab.ru/chicken/nablas/38.html">http://www.dklab.ru/chicken/nablas/38.html</a><br> <a href="http://www.dklab.ru/chicken/nablas/39.html">http://www.dklab.ru/chicken/nablas/39.html</a> Дмитрий Котеров Fri, 05 Mar 2004 05:00:00 UT Вышел модуль CGI::WebIn v2.00, переработанный и дополненный. http://php5.dklab.ru/news/#news31 <pre> 2.00 Sun Feb 14 22:40:00 2004 - Fixed bug with autoarrays (QUERY_STRING is like test[]=a&test[]=b). - Merged with old 2.0 frozen project. - AutoLoader and Exporter is not used now. - Function loading no demand (as in CGI.pm). - Improved QUERY_STRING parser: test{'aa\'bc'}, test{'a\\b'} etc. - Error reporting system now silent (GetError() function added). - Autoarray handling improved: test[]{abc}=xxx, test[-10] and test[12345678] are bad and generate errors. </pre> Дмитрий Котеров Sat, 14 Feb 2004 05:00:00 UT Новая версия пакета PHP5 для Денвера. http://php5.dklab.ru/news/#news30 В самой последней версии PHP разработчики серьезно изменили структуру директорий. Теперь все необходимые dll-библиотеки располагаются рядом с php.exe, что снимает необходимость добавлять в PATH дополнительные пути поиска. Кроме того, директория extensions с расширениями переименована в ext. Наконец, php.exe — отныне консольная версия; в CGI-окружении необходимо использовать php-cgi.exe. Дмитрий Котеров Tue, 03 Feb 2004 05:00:00 UT Вышел пакет расширения PHP5 для Денвера. http://php5.dklab.ru/news/#news29 <p align=justify>Вскоре PHP версии 4 будет вытеснен своим более совершенным потомком — PHP5. В числе новых возможностей — улучшенная (я бы сказал, уже похожая на человеческую) поддержка ООП, исключения, встроенная СУБД sqLite, полностью переделанный механизм работы с XML. Полный список изменений можно найти в <a href="http://www.php.net/ChangeLog-5.php">PHP Changelog-е</a> и в кратком описании новой <a href="http://www.php.net/zend-engine-2.php">Zend Engine 2</a>. <p align=justify>Обо всех неточностях и ошибках в пакете расширения просьба сообщать в форум по адресу <a href="http://forum.dklab.ru/denwer/">http://forum.dklab.ru/denwer</a>. Дмитрий Котеров Wed, 14 Jan 2004 05:00:00 UT Добавлены наблы 36 и 37 про работу с CPAN. http://php5.dklab.ru/news/#news28 В <a href=/chicken/nablas/36.html>тридцать шестой набле</a> вкратце описывается, как устанавливать модули при помощи CPAN.pm. В <a href=/chicken/nablas/37.html>тридцать седьмой набле</a> приведены руководства к действию для разработчиков, желающих опубликовать свои модули на <a href=http://cpan.org>CPAN.org</a> — сайте всемирного Perl-архива. Дмитрий Котеров Thu, 01 Jan 2004 05:00:00 UT Некоторые модули из Куроводства опубликованы на CPAN.org. http://php5.dklab.ru/news/#news27 Модули CGI::WebOut, CGI::WebIn, Apache::Scriptor и Apache::Scriptor::Simple теперь доступны на сайте CPAN (Comprehensive Perl Archive Network): <a href=http://search.cpan.org/~koterov/>http://search.cpan.org/~koterov/</a> Дмитрий Котеров Thu, 01 Jan 2004 05:00:00 UT Статья про устранение проблем в Windows: Чиним Windows своими руками. http://php5.dklab.ru/news/#news26 Речь в данной набле пойдет о том, как можно «починить сломавшийся Windows», не запачкавшись при этом машинным маслом по самые уши. Особенно советы помогут тем людям, которые рискнули установить себе на домашнюю машину Windows 2003 Server, не подозревая, какие проблемы ждут их с драйверами... Дмитрий Котеров Wed, 22 Oct 2003 04:00:00 UT Исправлены ошибки в модуле CGI::WebOut. http://php5.dklab.ru/news/#news25 Выдержка из CHANGELOG-а: <pre> 2.00 Sat Aug 23 21:00:00 2003 - code rewritten by 80% - now module is fully tie-safe (see comments inside and POD) - fixed bug: now module works in Perl 5.8 too - module is now fully transparent for caller code even if it uses tie(*STDOUT) - a number of comments is translated from Russian to English - no AutoLoader in new version - use strict </pre> Подробнее читайте в <a href=/chicken/33.html>тридцать третьей набле</a>. Дмитрий Котеров Sun, 24 Aug 2003 04:00:00 UT Полностью отключена старая версия системы Orfo: теперь вместо нее Orphus. http://php5.dklab.ru/news/#news24 К сожалению, в новой версии утеряна совместимость со старой. Всем пользователям Orfo, чьи сайты проявляли активность на протяжение последних двух месяцев, было разослано письмо с предупреждением о закрытии старой версии (в течение двух недель). Сегодня старая Orfo окончательно канула в лету. Ее заменила более прогрессивная система — <a href=http://orphus.dklab.ru>Orphus</a>. Помимо всего прочего, в ней теперь возможен выбор кнопки. Дмитрий Котеров Sat, 02 Aug 2003 04:00:00 UT Вышло продолжение наблы об удобной работе с SQL-функциями в PHP. http://php5.dklab.ru/news/#news23 В результате обсуждений в форуме стало ясно, что библиотеку <a href=/chicken/nablas/demo/placeholder/ Placeholde.php</a> необходимо усовершенствовать, что и было сделано. Дмитрий Котеров Fri, 02 May 2003 04:00:00 UT Открылся форум: forum.dklab.ru. http://php5.dklab.ru/news/#news22 <p>Ядро форума постоянно развивается и совершенствуется. Обо всех замеченных неточностях и откровенных ошибках просьба сообщать прямо в форум. <p>Сейчас в полную мощность работает <a href=http://forum.dklab.ru/search.php>поиск по форуму</a>. База данных содержит более семи тысяч сообщений и писем пользователей. Прежде, чем задавать вопрос в форуме, пожалуйста, поищите в нем готовый ответ. Дмитрий Котеров Mon, 10 Mar 2003 05:00:00 UT Новая версия Денвера. Вышел (пока неофициально) Денвер+Parser «в одном флаконе». http://php5.dklab.ru/news/#news21 Полная сводка изменений: <ul> <li>В инсталлятор добавлена проверка наличия всех необходимых драйверов. <li>Небольшие изменения в интерфейсе инсталлятора. <li>Возможность инсталлировать Денвер в корневой каталог существующего диска БЕЗ создания виртуального диска. <li>Теперь при инсталляции поверх жизненно важные файлы (такие как файлы конфигурации PHP, Apache, MySQL) не переписываются. Это позволяет делать более-менее безопасный апгрейд. <li>Опять этот злополучный include_path. Теперь оказалось, что там еще и кавычки нужны, а то ; воспринимается, как комментарий [Yuri Safonov, 2003-02-04]. <li>Добавлена директива RewriteEngine On в httpd.conf. <li>Из дистрибутива базового пакета исключена утилита mysqladmin.exe. В результате: <ul> <li>уменьшился размер дистрибутива; <li>теперь можно задавать root-пароль для MySQL, скрипту останова сервера он не нужен (используется kill для процесса). </ul> Вся функциональность mysqladmin-а доступна через phpMyAdmin. <li>Вышла новая разновидность базового пакета с включенной поддержкой Parser. <li>Улучшена система поиска и удаления старых dll-библиотек, которые делают сервер неработоспособным. </ul> Дмитрий Котеров Mon, 10 Feb 2003 05:00:00 UT Разработчики PHP 4.3.0 отказались от поддержки Windows 95. http://php5.dklab.ru/news/#news20 Эта ужасная новость еще не успела облететь мир. Насколько я понимаю, EXE-версия PHP в Windows 95 больше не работает из-за сущей мелочи. Вот подробности: <a href=http://bugs.php.net/bug.php?id=21390>http://bugs.php.net/bug.php?id=21390</a>. Впрочем, пользователи новых версий <a href=http://web.dklab.ru>Денвера</a>, включающего PHP как модуль, все еще могут работать в Windows 95, однако, вероятно, этому скоро также будет положен конец. Если ваши скрипты настроены для использования EXE-модуля PHP (<tt>/usr/local/php</tt>), вам придется устанавливать себе более старую версию вручную. Дмитрий Котеров Sat, 01 Feb 2003 05:00:00 UT Новая версия Денвера-2 — улучшена совместимость с Unix-хостингом. http://php5.dklab.ru/news/#news19 Изменения в Денвер-2 2003-01-03: <ul> <li>ВНИМАНИЕ: php.ini теперь расположен в директории /usr/local/php, а не в /usr/local/apache! Этот путь прописывается в переменной окружения PHPRC в скрипте старта apache.pl. <li>Добавлена возможность использования PHP-скриптов с первой строчкой:<br> #!/usr/local/bin/php или<br> #!/usr/local/sbin/php или<br> #!/usr/bin/php или<br> #!/usr/sbin/php<br> Такие скрипты нужно помещать в CGI-директорию, а не в директорию документов [Sergey, 2003-01-02]. <li>Ссылки на Sendmail и Perl помещены в указанные выше четыре директории (для лучшей совместимости с Unix-хостингом). <li>Исправлена ошибка - PHP3 не находил свой php3.ini. </ul> Скачать новую версию можно по адресу <a href=http://web.dklab.ru/dis/>http://web.dklab.ru/dis</a>. Дмитрий Котеров Fri, 03 Jan 2003 05:00:00 UT Обновлены черная и белая страницы Денвера. http://php5.dklab.ru/news/#news18 В двух статьях приводятся лестные и нелестные отзывы пользователей Денвера (или его противников). Дмитрий Котеров Mon, 30 Dec 2002 05:00:00 UT Вышла новогодняя версия Денвера, а также новая версия пакета поддержки PHP4. http://php5.dklab.ru/news/#news17 Изменения в базовом пакете Денвер-2 2002-12-30: <ul> <li>Косметическое исправление - убран один warning в Tools.pm, когда send() оканчивается неуспешно [Махно Юрий, 2002-12-04]. <li>В регулярные выражения директивы DocumentRootMatch добавлена возможность использования \. Для этого его нужно удваивать, например: DocumentRootMatch "\home\(?!\\.)(.*)^1\(?!cgi)(.*)" [Алексей Степаненко, 2002-12-05]. Также чуть подправлен httpd.conf - a то cgi-bin считалась поддоменом. <li>Добавлены пиктограммы для ярлыков Денвера на Рабочем столе [Алексей Степаненко, 2002-12-05]. <li>Переход к новой версии PHP: 4.3.0. <li>В базовый пакет добавлен модуль поддержки отладчика PHP. Правда, для полноценной отладки скриптов нужно использовать какую-нибудь IDE. <li>Добавлена команда установки переменной окружения для php_openssl. </ul> <p>Изменения в пакете поддержки полной версии PHP4: <ul> <li>Добавлен конфигурационный файл для openssl. <li>Добавлен автоматический инсталлятор модулей PEAR. </ul> Дмитрий Котеров Mon, 30 Dec 2002 05:00:00 UT Вышла новая версия Денвера-2. http://php5.dklab.ru/news/#news16 Список изменений: <ul> <li>Исправлена ошибка перехвата выходного потока команд, когда имя временной директории содержит пробелы. В общем-то, ошибка практически ни на что не влияла, но все равно. <li>В пути подключения include_path PHP добавлена директория ".". <li>Проверка, запущен ли Apache, теперь производится не по наличию активного 80 порта, а по файлу в /usr/local/apache/logs/httpd.pid. Это может помочь на системах Windows XP, в которых порт 80 часто оказывается "занятым". <li>Отказ от php_gd2 в пользу php_gd. Первая по непонятным причинам не работает на некоторых системах. В результате уменьшился размер дистрибутива. <ul> Дмитрий Котеров Fri, 13 Dec 2002 05:00:00 UT Переработана статья про Orfo. http://php5.dklab.ru/news/#news15 Наиболее используемые блоки статьи переставлены на первое место (ибо их, похоже, не вся видят). Добавлены <a href=/chicken/nablas/24.html#humour>критические заметки</a>. Дмитрий Котеров Tue, 10 Dec 2002 05:00:00 UT Вышла новая версия базового пакета Денвера-2. http://php5.dklab.ru/news/#news14 Выдержка из CHANGELOG-а: <ul> <li>Исправлена ошибка в php.ini, приводящая к неработоспособности sendmail-заглушки в Windows 95 ... ME ("/" заменены на "\"). <li>Переход к более стабильной версии PHP: 4.3.0RC2. </ul> <p>Новая версия доступна, как обычно, в директории дистрибутивов (читайте <a href=/chicken/web/base.html>статью</a>, если не знаете, где она). Дмитрий Котеров Thu, 28 Nov 2002 05:00:00 UT Орфо 2.1: улучшен механизм подключения к пользовательским страницам http://php5.dklab.ru/news/#news13 Вышла версия 2.1 системы <a href=http://orfo.dklab.ru>Орфо</a>. Улучшен механизм подключения Орфо к пользовательским страницам. Теперь даже в случае сбоя на сервере <tt>http://orfo.dklab.ru</tt> страницы, использующие Орфо, продолжают отображаться, а не «тормозят». То же происходит и в случае слишком медленного соединения с сервером Орфо. Подробности здесь: <a href="http://orfo.dklab.ru">http://orfo.dklab.ru</a>. (Пользователям версии 2.0 необходимо обновить код подключения скрипта на своих страницах.) Дмитрий Котеров Wed, 27 Nov 2002 05:00:00 UT Вышли пакеты расширений для Денвера-2: модули Apache и библиотеки PHP4. http://php5.dklab.ru/news/#news12 Пакет PHP4 включает следующие расширения: bz2, cpdf, crack, curl, db, dba, dbase, dbx, domxml, exif, filepro, gd, gd2, gettext, hyperwave, iconv, imap, interbase, java, mhash, ming, msql, mssql, openssl, pdf, pgsql, shmop, sockets, w32api, xmlrpc, zip, zlib, ldap, xslt, а также библиотеки <a href=http://pear.php.net>PEAR</a>. <a href=/chicken/web/packages/php4.html>Читать дальше...</a> <p align=justify>Пакет с Apache включает все стандартные модули Apache: mod_auth_anon, mod_auth_dbm, mod_auth_digest, mod_cern_meta, mod_digest, mod_expires, mod_headers, mod_info, mod_mime_magic, mod_proxy, mod_rewrite, mod_speling, mod_status, mod_unique_id, mod_usertrack, mod_vhost_alias. <a href=/chicken/web/packages/apache.html>Читать дальше...</a> Дмитрий Котеров Sun, 24 Nov 2002 05:00:00 UT Вышел Денвер-2 (новая версия со множеством изменений). http://php5.dklab.ru/news/#news11 Вышла новая, переработанная версия комплекса <a href=http://web.dklab.ru>Джентльменский набор Web-разработчика</a> — Денвер-2. (Старая версия будет доступна <a href=/chicken/web/denwer1/>здесь</a> еще несколько месяцев.) Базовый пакет теперь включает: <ul> <li>Apache, SSI, mod_rewrite, mod_php. <li>PHP4 с поддержкой GD и MySQL. <li>MySQL с поддержкой транзакций (mysqld-max). <li>phpMyAdmin — система управления MySQL через Web-интерфейс. Полностью заменяет командную строку MySQL. <li>Ядро Perl без стандартных библиотек (они поставляются отдельно). <li>Эмулятор sendmail (отладочная Lзаглушка?, складывающая приходящие письма в /tmp/); работает и в Perl, и PHP. <li>Система управления виртуальными хостами, основанная на шаблонах. Чтобы создать новый хост, вам нужно лишь добавить директорию в каталог /home, править конфигурационные файлы не требуется. <li>Система управления запуском и завершением. <li>Инсталлятор (нечто вроде InstallShield). </ul> <p>Ознакомиться с полным списком изменений можно по адресу <a href=/chicken/web/dis/Base/LAST_README.txt>http://dklab.ru/chicken/web/dis/Base/LAST_README.txt</a>. Дмитрий Котеров Sun, 24 Nov 2002 05:00:00 UT Вышла версия 2.0 системы Orfo. http://php5.dklab.ru/news/#news10 <i>Список изменений в версии 2.0</i>: <li>Ядро системы переехало на отдельный домен (<tt>http://orfo.dklab.ru/orfo.js</tt>). Пожалуйста, <b>как можно скорее обновите</b> адреса на своих страницах, ибо через некоторое время старый адрес будет недоступен. <li>Благодаря идее Виктора Ганского (<a href=mailto:gunsky@digiskycorp.com>gunsky@digiskycorp.com</a>) пользователю теперь посылается текст ошибки вместе с окружающим его контекстом (15 слов в обе стороны). Это позволит легко отличать ложные сообщения от истинных. Дмитрий Котеров Thu, 22 Aug 2002 04:00:00 UT Города Денвера теперь отображаются на карте Земли. http://php5.dklab.ru/news/#news9 Сделать визуализацию городов, в которых установлен <a href="/chicken/web/">Денвер</a>, помогла программа <a href="http://www.hewgill.com/xearth/index.html">XEarth</a>. На сервере использована ее сильно модифицированная <a href="http://www.cs.colorado.edu/~tuna/xearth/">UNIX-версия</a>. Пришлось несколько перелопатить исходники (добавить отображение пометок, а также выдачу пиксельных координат городов по широте и долготе). Дмитрий Котеров Sat, 17 Aug 2002 04:00:00 UT Ведется статистика городов, в которых устанавливался Денвер. http://php5.dklab.ru/news/#news8 Теперь вы можете посмотреть, что называется, «в реальном времени», как идет распространение <a href=http://web.dklab.ru>проекта Денвер</a> по всему миру (в основном — по России). Сейчас показывается имя города с координатами, страна и число пользователей Денвера, живущих в этом городе. В ближайшей перспективе — отображение точек на карте земного шара. Статистика ведется на основе данных лог-файлов. Дмитрий Котеров Thu, 15 Aug 2002 04:00:00 UT Вышла новая версия пакета Parser с поддержкой XML и MySQL. http://php5.dklab.ru/news/#news6 Не успели мы добавить в Денвер пакет поддержки Parser, как разработчики этой технологии... существенно ее улучшили. В новой версии — 3.0.0005 — сильно упрощено конфигурирование. Теперь нет необходимости устанавливать никакие переменные окружения в <tt>.htaccess</tt>. Кроме того, все настройки из <tt>parser3.conf</tt> перекочевали в <tt>auto.p</tt>. Имеются и другие нововведения, о которых вы можете узнать на сайте <a href=http://parser.ru>http://parser.ru</a>. Благодаря Игорю Светликову, теперь новая версия доступна и в «Джентльменском наборе». Мы рады сообщить, что Parser стал еще более независим, и это как нельзя кстати в рамках Денвера. Дмитрий Котеров Mon, 12 Aug 2002 04:00:00 UT Установка системы Orfo стала крайне простой. http://php5.dklab.ru/news/#news7 Система <b>Orfo</b> — это оригинальное средство, которое позволит вам полностью избавить свои сайты от орфографических ошибок и опечаток. С помощью несложной программки на JavaScript каждый может, нажав сочетание клавиш <b>Ctrl+Enter</b>, немедленно отправить выделенный кусок текста администратору сайта (попробуйте, если еще этого не сделали, — система установлена и на этом сайте). Важно, что пользователь остается <i>на той же самой</i> странице, а отправка происходит совершенно незаметно. И лишь мигающее в статусной строке сообщение «Спасибо за сотрудничество!» подтверждает действие и одновременно вознаграждает «доброго самаритянина». Главная особенность системы — то, что она действительно работает. Подробнее об этом читайте в <a href=/chicken/nablas/24.html>двадцать четвертой</a> (установка системы) и <a href=/chicken/nablas/25.html>двадцать пятой</a> (вопросы юзабилити) наблах. Дмитрий Котеров Sun, 11 Aug 2002 04:00:00 UT Подключена новостная система. http://php5.dklab.ru/news/#news4 Теперь вы можете более удобно отслеживать изменения на сайте, используя систему новостей, которую вы видите перед собой. Дмитрий Котеров Tue, 30 Jul 2002 04:00:00 UT Вышел пакет расширения для Денвера: Parser3 с поддержкой XML и MySQL. http://php5.dklab.ru/news/#news3 Идея добавить поддержку популярной технологии студии Лебедева под названием <a href=http://parser.ru>Parser</a> принадлежит Игорю Светликову (<a href=mailto:mwiz@design.ru>mwiz@design.ru</a>). Он же разработал первую версию дистрибутива этого пакета, которая, пройдя тестирование и некоторые доработки Дмитрия Котерова, предлагается теперь вашему вниманию. Следуя хорошо зарекомендовавшей себя традиции, пакет полностью автономен и не изменяет ничего вне основной директории Денвера. <a href=/chicken/web/packages/parser.html>Перейти на страницу пакета</a>. Дмитрий Котеров Tue, 30 Jul 2002 04:00:00 UT Вышла новая версия Денвера, исправлены некоторые ошибки старых версий. http://php5.dklab.ru/news/#news5 <i>Список изменений в новой версии:</i> <style><!-- li { text-align:justify } --></style> <li>Как сообщил Igor Svetlickov, в некоторых ОС команды `...` вызывают зависание инсталлятора. Все такие команды заменены на system(...). <li>Несколько изменена стартовая страница http://localhost. Надеемся, это поможет пользователям избежать распространенной ошибки - включенного прокси-сервера при работе с комплексом. <li>Теперь комплекс можно инсталлировать и запускать не только под Администратором, но и под обычным пользователем (выдается соответствующее предупреждение). Однако при этом не работают виртуальные хосты, за исключением localhost (из-за невозможности записи в файл hosts). <li>Изменена система обработки ошибок в менеджере серверов, что должно улучшить устойчивость при возникновении ошибок. <li>Теперь инсталлятор проверяет наличие start.exe и выдает осмысленное сообщение, если эта утилита не найдена (для Windows 9x). <li>Исправлены недочеты в скрипте addmuser.php. <li>Режим контроля ошибок по умолчанию в PHP изменен на E_ALL для более удобной отладки скриптов начинающими. Дмитрий Котеров Sat, 27 Jul 2002 04:00:00 UT Открылся проект Денвер. http://php5.dklab.ru/news/#news2 Сегодня, в международный день потребителя, в рамках проекта <a href=/chicken>Куроводство</a> наконец-то увидел свет <a href=/chicken/web>Джентльменский набор Web-разработчика</a>. Его ядро — универсальный дистрибутив, включающий Apache, PHP4, Perl и MySQL, а также дружественный инсталлятор. Потрясают новые возможности сервера Apache. Теперь вам не нужно вообще исправлять <tt>httpd.conf</tt> и файл <tt>hosts</tt> — система сделает это за вас. Не требуется также возиться с созданием виртуального диска для директорий документов виртуальных хостов. Исчезли сложности при добавлении новых виртуальных хостов ? все, что нужно сделать, это просто создать директорию документов в <tt>/home</tt>. Окно консоли Apache отныне не занимает места на экране, а PHP работает в виде модуля Apache. MySQL уже настроен, вы можете администрировать его при помощи последней версии phpMyAdmin. Дистрибутив занимает <font color=red><b>менее двух мегабайт</b></font>, полностью автономен, не изменяет ничего в системной директории Windows и может располагаться в любом каталоге. Дмитрий Котеров Fri, 15 Mar 2002 05:00:00 UT