Nov 28

Да, да, я знаю, что в наш век все уже давно перешли на использование utf-8 при построении веб-сайтов, но остались еще и такие, которые пользуються “допотопными”, “отстойными”, и вообще “не-тру” кодировками типа CP1251 (также известной как Windows-1251), KOI8-R и прочих.

Ни для кого ни секрет, что кодировкой получаемых через Ajax данных по-умолчанию принимается UTF-8. Не все знают, что это умолчание можно изменить, указав кодировку явно через заголовок “Content-Type: text/html; charset=cp1251″. Сегодня вот столкнулся с интересным багом, на который убил довольно много времени.

Сервер отдает некоторый текст по запросу (ajax) в кодировке CP1251, предварительно установив соответствующий заголовок - “Content-Type: text/html; charset=cp1251″. На клиенте использовалась библиотека jQuery:

$('#books').load('books.php', {action: 'list'});

Всё работало замечательно… До тех пор, пока я не открыл страничку в IE7. Как ни странно, но ничего не загрузилось. После длительных раздумий, установки alert-ов куда нужно, и куда нет код был заменен следующим кодом:

$.ajax({
  method: 'get',
  url: 'books.php',
  success: function(data) {
    $('#books').html(data);
  },
  error: function(xhr, textStatus, errorThrown) {
    alert(textStatus);
  },
  data: {action: 'list'}
});

В FF всё продолжало работать, а вот IE начал выдавать странную надпись “parsererror”. Гугление никаких результатов не дало - ни одного похожего случая… После, примерно, 10 минут попыток “запустить” страничку в IE, что-то меня дернуло посмотреть на серверный код. Глаза сразу упали на строку установки Content-Type-а. Недолго думая, я поставил charset=utf-8, и, о чудо, IE загрузил всё как положено (правда в неправильной кодировке, но всё же - уже плюс). Догадавшись в чем может быть дело, я установил кодировку в “windows-1251″, после чего всё заработало на ура.

Собственно, мораль сей басни такова - юзайте, люди, юникод, и будет вам счастье.

written by fxposter \\ tags: , ,

May 29

Авось, кто-то еще не догадался… :)

Самый простой способ использования своих скриптов совместно с Google AJAX Libraries API:

google.load("jquery", "1");

google.setOnLoadCallback(function() {
  $('<script type="text/javascript" src="_url_вашего_скрипта_"></script>').appendTo('head');
  $('<script type="text/javascript" src="_url_вашего_другого_скрипта_"></script>').appendTo('head');
  // ...
});

Аналогичным образом подключаются, например, плагины для jQuery.

written by fxposter \\ tags: , , ,

Sep 29

Сегодня впервые побывал в нашем Start Up Coffee. Причиной моего сегодняшнего похода туда была презентация очередного Web 2.0 портала Trashbox.ru. Сейчас портал находится в конечной стадии разработки, а открытие должно произойти 8-го октября.

Начну издалека… О портале я знал давно, еще с самого начала разработки (было это, если я не ошибаюсь, около полутора лет назад), его тематика - мобильные телефоны, программы для них, их обзоры и т.д. Сейчас проект наконец-то стал приобретать более-менее законченный вид и можно уже делать первые выводы.

Трэшбокс будет собой представлять некую смесь хабрахабра (блоги, коллективные блоги, комментарии, рейтинги, коментарии, голосования и прочее) и DimonVideo (файловый архив), приправленную офигенной, по словам разработчика, системой навигации (ой ли…), малым размером страниц и офигеннейшим (по крайней мере по слайдам) дизайном.

Я не зря выделил навигацию и размер страниц - почти вся презентация была построена на том, что аналогичные сайты обладают очень плохой навигацией по меню, неудобно искать какую-то определенную программу/статью, да и к тому же очень много весят. В трэшбоксе все иначе. Страница представляет из себя практически сплошной JavaScript, и довольно много работы выполняется на клиентской машине по постройке страницы, что позволяет существенно (по словам разработчиков - в 5 раз) уменьшить обьем передаваемых данных. Новые страницы подгружаются через Ajax, что также экономит траффик. Насчет навигации - 100% ничего сказать пока не могу, рабочей версии показано не было, а из всех слайдов всего на одном был скриншот странички портала. Главное меню состоит из 4-х разделов, из них был показан, насколько я помню, раздел “Программы”. Под главным меню находятся 2 облака тегов/категорий (теги фиксированные, пользователем не добавляются, добавлять их могут только админы): типы программ и ОС. Можно выбрать сразу несколько подразделов из каждого облака, например, ((ICQ + Browser) + (Symbian 8 + Windows Mobile 6)), и программы, соответствующей тематики и работающие в указанных ОС будут динамически подгружены в текущую страницу. По рассказам - смотрится интересно (хотя отсутствие пользовательских тегов огорчает), а на практике - возможно будет удобно. Поживем - увидим.

Все это касалось версии “для компьютеров”, еще планируется версия для телефонов, но о ней пока что почти ничего не известно кроме того, что wap/wml посланы нафиг, а разработка ведется под телефоны с поддержкой HTML.

Планы проекта - до НГ собрать 10000 хостов в сутки. Ну что ж - пожелаем удачи и будем с нетерпением ждать открытия.

Это была, так сказать, “информация для прессы”. Теперь хочу посвятить в некоторые технические детали, они в презентации почему-то упомянуты не были, но тем не менее, мне они известны. Проект пишется на PHP. Все пишется с нуля - и JS и PHP-коды. Фреймворки не используются за их “ненадобностью”. Комментарии разработчика явно показывают, что человек хочет и изобретает в очередной раз колесо: “У нас 120-140кб JS-кода, фреймворки нам только бы увеличили размеры этого кода и на капельки бы нам не помогли.”, “Не нужен мне этот ваш Zend Framework, у меня свой фреймворк - тут все зашибись, а питон и руби - вообще х##ня”.

Вывод у меня один - в будущее проекта я не верю. И буду очень рад, если мое мнение окажется ошибочным. А по поводу 10000 хостов в сутки - по-моему, за 3 месяца это просто невозможно.

UPD: Слайды с презентации можно посмотреть здесь.

UPD2: Появилось еще видео с презентации.

written by fxposter \\ tags: , , ,