PHPLinq

На хабре написали про реализацию Linq на PHP для выборок из массивов.

Про реализацию — пока не будет сишного расширения, реализации на самом PHP, по большому счёту бессмысленны из-за низкого быстродействия. Про идею — с одной стороны хуйня, с другой, в принципе забавно, нужно будет последить.

json_encode сосёт

В новой версии PHP, как уже было сказано, пофиксено множество неприятных вещей. Среди них и баг за номером 42 090, опубликованный аж в июле 2007. Баг этот позволял грохнуть процесс посылкой непотребного JSON-запроса. Хотя, видимо, работало это только под Ubuntu (мне не на windows ни на freebsd воиспроизвести не удалось), всё же исправление данной ошибки, несомненно, радует.

А вот json_encode() продолжает огорчать. В документации к нему написано This function only works with UTF-8 encoded data. И правда, от любых других кодировок он просто отплёвывается. Но мне это до без разницы, неприятно то, что и с UTF-8, работает он через жопу.

Вызов json_encode("русский текст") выдаёт гомосятину вида \u0440\u0443\u0441\u0441\u043a… Какого хера? Зачем работая only with UTF, выдавая строку для JS, которая так же работает всегда only UTF, кодировать всё этими идиотскими мнемониками?

Мало того, что вывод превращается в кашу, в которой не разобраться визуально при отладке, так ещё вместо 2-х байт на символ, шлём 6. Вот вам и экономия трафика за счёт ajax’а.

Так что нужно или мириться с этим или извращаться самим на PHP, как это делают люди в комментариях к документации.

Если для каких-то высоких целей универсальности и сохранения совместимости это и необходимо, почему не ввести второй аргумент функции, типа, $mneNahuyNeNujnaSovmestimost? Впрочем второй аргумент там есть: [, int $options=0], как написано, это Bitmask consisting of PHP_JSON_HEX_QUOT, PHP_JSON_HEX_TAG, PHP_JSON_HEX_AMP, PHP_JSON_HEX_APOS. Что означают все эти мракобесные константы не уточняется. Впрочем и уточнение тут не поможет — на любой вызов со вторым аргументом функция ругается json_encode() expects exactly 1 parameter, 2 given и Use of undefined constant PHP_JSON_HEX_QUOT.

Вобщем, ждём, когда adw0rd напишет новое расширение. :)

PHP 5.2.9 Релизед!

Нежданно-негаданно вышел PHP 5.2.9..

Основной упор сделан на исправление ошибок — в новой версии их задавленно аж 50 штук. Неизвестно стоит радоваться по этому поводу или тихо охуевать: в ченчлоге два экрана про «Fixed a crash».

ЧПУ-ПУ-ПУ

Или вот допустим ЧПУ. Человекопонятные URL. Есть URL: www.site.com/news.php?action=archive&year=2009&month=2.
Он человеконепонятный и человеконенавистнеческий.
А вот так понятный: www.site.com/news/archive/2009/02/. Всем видно — это архив новостей за февраль 2009. Более того, если стереть 02, получим архив за весь 2009, сотрём его, получим полный архив, сотрём и archive — окажемся в корне раздела новостей, добавим в конце 27, получим список новостей за день.

Остальной текст под катом

Memcache vs Memcached

Под шумок, в начале года, вышло новое расширение для работы с memcached из php. Было php_memcache, стало php_memcached.

Как пишет Андрей Змиевский новая версия использует библиотеку libmemcached, и, если в предыдущем расширении взаимодействие с мемкэшем велось через жопу, то теперь всё будет неимоверно круто.

Среди новых примочек, наиболее полезная — получение нескольких ключей одним запросом.

К сожалению, пока нет готовой dll для Windows. В русскоязычном интернете про новое расширение вообще ничего не видно, и даже google заявляет возможно, вы имели в виду: php_memcache.

Кавычки, на

Откуда повелась эта ёбаная радость заменять обычные двойные кавычки на эти ущербные косые «недокавычки»?

Я отрубил визуальный редактор, я написал сообщение в чистом html в своём редакторе и скопировал на сайт. Там не было этого говна — («), там были нормальные программистские кавычки — (").

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

Они что красивее? Семантически вернее? Помогают в SEO? Песдеc…