понедельник, 17 мая 2010 г.

ICANN разрешила в domain names кириллицу и другие алфавиты. А как же совместимость?!

Новые правила позволят использовать в доменных именах 100 тысяч новых символов. В ICANN новые правила наименования доменов называют крупнейшим техническим изменением Интернета за все время его существования. Но это изменение к лучшему ли?
Россия, по-моему, одна из первых начала регистрировать домены в зоне .РФ. Зашёл на правительственный сайт http://правительство.рф и уже это нововведение вызвало у меня улыбку.
Домен-то написан кириллицей, но все внутренние линки остались латиницей. =) Бред, имхо, всю затею и удобство свели на нет. Смешно смотрится адрес вида http://правительство.рф/staff/.

Ещё меня заинтересовало - как будут работать все современные браузеры с кириллицей в адресной строке. Проверил во всех основных, что у меня стояли на рабочем компьютере. Оказалось что нормально варит только Opera 10.53, не корёжит символы и отображает во всех URL-ах нормальное написание. Тот же Firefox и остальные собратья при вводе в адресную строку заветного адреса вели себя ненормально, но открыть сайт смогли. Firefox при вводе "правительство.рф" затем заменил этот адрес на ненормальный "http://xn--80aealotwbjpid2k.xn--p1ai/#", но сайт открыл успешно. А Google Chrome и вовсе неправильно отреагировал. Получив адрес "правительство.рф" он сразу пошёл искать его в поисковике гугл, вместо того, чтобы просто открыть этот адрес. Там, нажав на первой странице результатов поиска на соответствующей ссылке, я уже смог попасть на требуемый сайт.

Самое главное, что меня расстроило, это нюансы разработки сайтов и другого ПО, при таком нововведении. Представьте сколько проблем будет в заготовленных скриптах определения корректности введенного e-mail или валидации URL. Попробуйте в практически любой подобный скрипт внести русские символы. С мобильными устройствами тоже проблемы: не все смогут попасть на заветные сайты, так как вообще не предусмотрена возможность ввода символов отличных от латиницы. Вся интернациональность ломается на корню, люди с других стран, просто не смогут зайти на ваш сайт, даже зная язык, потому что у них на клавиатуре нет таких символов. А как же старые стандарты и реализации? Тот же RFC 2821 (Simple Mail Transfer Protocol), www.ietf.org/rfc/rfc2821.txt, что, тоже переписывать и создавать новые стандарты?!

Необходимо переписать тонны кода, который уже отлажен и работает годами!
Я против таких сомнительных прорыров в Интернете.

вторник, 11 мая 2010 г.

Странное поведение query builder-а Kohana

Не перестаю удивляться всяким мелочам и неприятностям из Kohana PHP 5 Framework. Я сравнительно недавно на него перешёл, до того использовал в основном CodeIgniter. Как известно, Кохана зародилась как форк от CodeIgniter, из-за недостаточно быстрого развития и исправления ошибок в CI. Вокруг Kohana образовалось своё новое, мощное, комьюнити, которое все время единогласно твердит что наш framework лучше чем CI, меньше ошибок, более оптимизированный, быстрый… но не так это всё, на практике, увы.
Я всё больше и больше разочаровываюсь в их документации, в отсутствии обратной совместимости от версии к версии в большинстве модулей. Это из того, что я уже могу с уверенностью сказать, после полутора месяцев её использования. Думаю, что ситуация исправится в ближайшее время в лучшую сторону, но главное чтобы у этого фреймворка были свои сторонники и не разбегались уже приобретённые.
Яркий пример, который я только что поймал, на ровном месте – это использование метода update() из query builder. Использовал такую вот нехитрую конструкцию:

$db->update("news", Array('status'=>0));

Куда уже проще запрос?! – Необходимо поставить всем элементам таблицы News статус равный 0. Но Кохана завалилась, с ошибкой:

> ttm/system/libraries/drivers/Database/Mysql.php [392]:
There was an SQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 - UPDATE `news` SET `status` = 0 WHERE


Понятное дело, но зачем where сюда приплели, если даже нет условия? Мне нужно сделать Update для всех элементов таблицы.
Решение тут, конечно, простое – использовать условие-пустышку, но неприятный осадок всё-таки остался:

$db->where('status', 1)->update("news", $data);

Я использую не самую свежую версию KOHANA_VERSION = 2.3.2, но не думаю что ситуация сильно поменялась в следующих. Боюсь обновляться, чтобы проект не завалился где-то в другом месте на финишной стадии разработки =)

Рекоммендую

Попробуйте надёжный хостинг от Scala Hosting