Пропустил новость, что в июле 2011 года появился новый IM-клиент "Рамблер-Контакты". Поддерживает протоколы Jabber, MMP (Mail.ru Agent), GoogleTalk, ICQ, умеет подключаться к FaceBook, вКонтакте, Яндекс.Онлайн и QIP. Сейчас (в ноябре 2011) всё ещё в статусе бета, оно и понятно,- при установке ругается на отсутствие прав, показывает какие-то каракули, однако устанавливается. После установки пытается запуститься и падает с грохотом. Ручной запуск удаётся,- однако,- для входа требуется логин на Рамблере, дальше не пошёл. Дизайн явно навеян макосью, но достаточно приятный, по крайней мере не такой кривой, как у мультифона.
Дождёмся стабильной версии?
icq, im, jabber
Редко приходится работать с PHP, но всё-же иногда приходится. Чуть не сошёл с ума в попытке найти ошибку в чужом коде. На тестовой системе всё летало, а на боевой,- пустая страница. Закономерно оказалось, что версии PHP на тестовом и боевом серверах разные, а в коде используются классы с объявленными конструкторами в стиле PHP5. PHP4 про то, что нужно вызывать метод __construct() в качестве конструктора ничего не знает, пришлось уговаривать
В самом общем случае вариант универсального конструктора класса (для 4-й и 5-й версии PHP) выглядит вот так:
<?php
class Foo{
# конструктор для всех версий
function __construct($arg){
# сделать что-нибудь при создании объекта
}
# конструктор для PHP < 5.0
function Foo($arg){
# сюда мы попадаем по умолчанию в ранних версиях PHP
if(version_compare(PHP_VERSION,"5.0.0","<")){
# вызываем конструктор
$this->__construct($arg);
# регистрируем деструктор
register_shutdown_function(array($this,"__destruct"));
}
}
# деструктор для всех версий
function __destruct(){
# сделать что-нибудь перед уничтожением объекта
}
}
?>
php, программирование, сайтостроение
Много раз сталкивался с ситуацией, когда надо сделать ячейку таблицы, объединяющую все столбцы (например для подзаголовка группы строк или как footer для всей таблицы). Если наперёд знаешь сколько столбцов,- не проблема, есть стандартный атрибут colspan, указываешь количество объединяемых ячеек, например colspan="2", всё работает.
А если страница выводится скриптом и количество столбцов наперёд неизвестно? И нет возможности посчитать в шаблонизаторе? В последний раз такая задача возникла при использовании Django, там шаблоны очень удобные,но с математикой там туго, а писать собственный template tag или filter казалось излишеством. Выкручивался либо изменением шаблона (чтобы такое объединение ячеек вообще не было нужно) либо городил в коде дополнительный подсчёт количества столбцов, пока не надоело. А когда надоело,- полез гуглить.
Оказалось, что не я один "хочу странного", куча народу уже сталкивалась с такой-же проблемой. Пробовали писать colspan="all" или colspan="0", - не во всех браузерах работает. На stackoverflow даже народ упёрся,- и там нашлось решение,- рекомендуют писать colspan="100%".
Попробовал на доступных браузерах,- работает везде.
html, программирование
Буквально вчера (16 мая 2011 года) в интернете запустился проект jslinux (эмулятор PC с Linux на javascript в браузере) от уважаемого мужчины по имени Фабрис Беллар. Эмулятор для запуска Linux полностью написан на JavaScript. При входе на страницу отображается консоль, на которой начинается загрузка Linux с нуля до момента отображения рутовой консоли. В консоли работает куча стандартных команд, вплоть до компилятора TCC. И всё это работает прямо в браузере. Крутизна необыкновенная.
javascript, linux, программирование
Нашёл несколько веб-сервисов для создания анимированных гифов для индикации процесса загрузки в ajax-приложениях. Записываю в закладки, чтобы не потерялось:
- AjaxLoad.info. Простенький, но шустрый сервис, для выбора есть пара десятковразличных индикаторов и возможность настройки цвета
- loadInfo.net. Ещё одна вариация на тему, красивый, хотя и мрачноватый сайт, выбор тоже небольшой, есть возможность настройки цветов и выбор размеров (16x16, 24x24, 48x48).
- preLoaders.net. Самый функциональный сайт, несколько типов картинок (горизонтальные, круговые, трёхмерные), есть возможность настройки цвета, настройки скорости анимации. Размеры рисунка можно выбирать произвольные. Сделано в России.
Пользуйтесь на здоровье!
сайтостроение, Штоп Не Потер Ять
Столкнулся с необъяснимым на первый взгляд явлением,- на одной из страниц Django'вского приложения необъяснимо разваливалась разметка страницы. Только на одной. Смотрю исходник страницы,- на первый взгляд всё в порядке, только какая-то чёрточка странная и посторонняя в самом начале HTML кода. Причём эта самая необъяснимая чёрточка видна далеко не во всех редакторах. В попытке вяснить причину добрался аж до просмотра в HEX,- оказалось, что там целые 3 байта EF BB BF, а не чёрточка. Остальное дело техники: эти байты,- признак ByteOrderMark. Осталось просмотреть все шаблоны, из которых генерируется страница, поскольку BOM может быть в любом из файлов, даже вложенном. У меня оказалось, что BOM присутствует в файле шаблона аж на третьем уровне вложенности шаблонов. Не забывайте проверять, в каком формате сохраняете файлы
django, IDE, python, программирование, сайтостроение
Гугл прислал письмо. Разводка в чистом виде,- типа халявные 1400 рублей для протестировать AdWords. Всё хорошо, кроме того, что письмо приходит на день позже, чем заканчивается действие рекламного предложения. В жж народ пишет, что не в первый раз уже такое
google, мошенники, реклама
Обнаружил полезный документ,- полный список заголовков SIP и других параметров (Session Initiation Protocol (SIP) Parameters):
В документе описаны:
Registries included below:
- Заголовки (Header Fields)
- Протоколы причин (Reason Protocols)
- Опциональные теги (Option Tags)
- Коды уведомлений (Warning Codes (warn-codes))
- Методы и коды ответов (Methods and Response Codes)
- Значения приватных заголовков (SIP Privacy Header Values)
- Имена механизмов безопасности (Security Mechanism Names)
- Схемы сжатия (Compression Schemes)
- Параметры URI (SIP/SIPS URI Parameters)
- Параметры и значения полей заголовков (Header Field Parameters and Parameter Values)
- Назначения и форматы URI (URI purposes)
- Пространства имён приоритетов (Resource-Priority Namespaces)
- Значения приоритетов (Resource-Priority Priority-values)
- Параметры идентификационной информации (Identity-Info Parameters)
- Параметры алгоритма идентификационной информации (Identity-Info Algorithm Parameter Values)
- Параметры настройки User-Agent (SIP Forum User Agent Configuration Parameters)
rfc, sip, стандарты
Ну вот, дожили: вКонтакте начал открытое тестирование XMPP-протокола. Насколько я понимал до сих пор бизнес-модель социальной сети,- это была прибыль от рекламы на веб-интерфейсе. А тут вКонтакте сам у себя откусывает кусок? Не понимаю. Вполне возможно, что акцент уже давно сместился с баннерной рекламы на встроенные игрушки и приложения, с доходов которых вКонтакте получает свои 2%? Тогда это всё объясняет, более того, открытие джаббера выглядит вполне логичным шагом, особенно на фоне того, что фейсбук поддерживает XMPP уже давно. Кроме всего прочего, вКонтакте позволяет транслировать статусы из клиента в твиттер,- чёрт, эту идею я придумал ещё год назад :-\ Следующими прорывными шагами будет поддержка s2s (возможности общаться с пользователями других сервисов), потом объединение с одноклассниками и внедрение SIPовой или проприетарной звонилки,- и получится национальная социальная сеть с самой большой абонентской базой.
jabber, социальные сети
Иногда, когда пишешь на C (С++), бывают такие ситуации, что скорость разработки гораздо важнее скорости выполнения программы. В таком случае вместо постоянной компиляции и линковки выгоднее использовать интерпретатор С (С++). Язык С традиционно считается компилируемым, но, тем не менее, интерпретатор для него существует. И даже не один, встречайте:
Читать далее...
программирование, Штоп Не Потер Ять