Все мы прекрасно знаем как отлаживать JavaScript в FireFox — конечно же это FireBug. Какие же аналоги существуют в других браузерах…
3al @3al
User
Отправка комментариев пользователей сайта вам на Jabbеr
1 min
6KВо время шумихи с аськой и предложениями перехода на jabber я решил разобраться: что же такое джаббер и как он мне может пригодиться кроме прямого общения.
Применение нашлось само собой – хочется получать комментарии с сайта себе в мессенжер. Этот подход оказался очень удобным и простым в реализации.
Поскольку я только начал разбираться с джаббером решил использовать готовую библиотеку для php (так как мой сайт работает на нем).
Итак, на сайте протокола xmpp (jabber) xmpp.org/software/libraries.shtml я скачал баблиотеку xmpphp (она мне понравилось больше всех своей простотой в понимании) и закачал ее на свой хост.
В функцию добавления комментария на сайте я добавил строки:
Где: джабберовский сервер — сервер через который отправляются сообщения (я указал тот же на который и приходят сообщения).
Внимание! Текст сообщения должен быть с кодировке UTF-8.
Вот собственно и все…
P.S. Спасибо за приглашение на хабр! Решил перенести свою статью из песочницы в блог.
Применение нашлось само собой – хочется получать комментарии с сайта себе в мессенжер. Этот подход оказался очень удобным и простым в реализации.
Поскольку я только начал разбираться с джаббером решил использовать готовую библиотеку для php (так как мой сайт работает на нем).
Итак, на сайте протокола xmpp (jabber) xmpp.org/software/libraries.shtml я скачал баблиотеку xmpphp (она мне понравилось больше всех своей простотой в понимании) и закачал ее на свой хост.
В функцию добавления комментария на сайте я добавил строки:
include ‘XMPPHP/XMPP.php’; $conn = new XMPPHP_XMPP('джаберовский сервер', 5222, 'логин', 'пароль', 'xmpphp', 'jabber.ru', $printlog=false, $loglevel=XMPPHP_Log::LEVEL_INFO); try { $conn->connect(); $conn->processUntil('session_start'); $conn->presence(); $conn->message('ваш джаббер', 'текст сообщения'); $conn->disconnect(); } catch(XMPPHP_Exception $e) { die($e->getMessage()); }
Где: джабберовский сервер — сервер через который отправляются сообщения (я указал тот же на который и приходят сообщения).
Внимание! Текст сообщения должен быть с кодировке UTF-8.
Вот собственно и все…
P.S. Спасибо за приглашение на хабр! Решил перенести свою статью из песочницы в блог.
+145
Тривиальные задачи по вёрстке
4 min
60K
+228
Раздел «Песочница»
1 min
1.4KВсем привет.
То, что должно было случиться уже давно, наконец, случилось: отныне и во веки веков каждый гость Хабра имеет возможность на законных основаниях получить инвайт и зарегистрироваться на сайте.
Для этого не нужно искать знакомых на Хабре, выпрашивать инвайт на форумах, даже писать с просьбами в администрацию тоже не нужно. Достаточно пройти в специальный раздел «Песочница» и опубликовать там свой топик. Если пост понравится кому-то из имеющих инвайт пользователей, автор топика имеет все шансы получить приглашение и зарегистрироваться. Чтобы это произошло, топик должен быть интересным, укладываться в рамки тематик Хабра и быть абсолютно оригинальным. Спамеры, копипастеры и шутники могут проходить мимо, так как раздел модерируется. Даже если кому-то удастся проскочить, впоследствии этот негодяй будет отловлен и депортирован в Зимбабве. То же касается и любителей наплодить виртуалов, только в их случае депортировать будем сразу на Солнце, без сухого пайка.
Самим пользователям расслабляться и отдавать инвайт кому попало тоже не советуем: тайную взаимосвязь между приглашающим и приглашенным еще никто не отменял ;)
И да, механизм получения претендентами инвайтов может и будет меняться в зависимости от погоды на маленькой планетке в окрестностях Бетельгейзе.
То, что должно было случиться уже давно, наконец, случилось: отныне и во веки веков каждый гость Хабра имеет возможность на законных основаниях получить инвайт и зарегистрироваться на сайте.
Для этого не нужно искать знакомых на Хабре, выпрашивать инвайт на форумах, даже писать с просьбами в администрацию тоже не нужно. Достаточно пройти в специальный раздел «Песочница» и опубликовать там свой топик. Если пост понравится кому-то из имеющих инвайт пользователей, автор топика имеет все шансы получить приглашение и зарегистрироваться. Чтобы это произошло, топик должен быть интересным, укладываться в рамки тематик Хабра и быть абсолютно оригинальным. Спамеры, копипастеры и шутники могут проходить мимо, так как раздел модерируется. Даже если кому-то удастся проскочить, впоследствии этот негодяй будет отловлен и депортирован в Зимбабве. То же касается и любителей наплодить виртуалов, только в их случае депортировать будем сразу на Солнце, без сухого пайка.
Самим пользователям расслабляться и отдавать инвайт кому попало тоже не советуем: тайную взаимосвязь между приглашающим и приглашенным еще никто не отменял ;)
И да, механизм получения претендентами инвайтов может и будет меняться в зависимости от погоды на маленькой планетке в окрестностях Бетельгейзе.
+90
Системное администрирование. Начало
6 min
222KСуществует много пособий по настройке программ (Операционок, сервисов, сайтов и тд), но редко можно встретить мануал по организационным вопросам связанным с системным администрированием. Сразу скажу, опыт работы у меня достаточный. Рассматриваться предмет будет на моем личном примере работы, сразу скажу что любые аргументированные дополнения, и исправления приветствуются. Также поясню для господ минусующих: «Не нравится? Сделай лучше!», и обязательно пришли ссылку, почитаю с большим удовольствием.
+170
IE, Quirks mode и ошибки при отображении полей ввода в зависимости от того, вводятся латинские или кириллические символы
5 min
3.1KДобрый день всем
Старичок IE не перестает нас удивлять и подкидывать все новые проблемы, в самых неожиданных местах.
При работе над проектом столкнулся с неожиданным поведением полей ввода input и textarea при работе IE в режиме quirks mode. И все бы ничего, в общем-то — кого сегодня удивишь странностями и багами IE. Интересное заключается в том, при каких условиях проявляется проблема. В этот раз это происходит в зависимости от того, какие символы вводятся в поле ввода — кириллические или латинские. Кириллица вызывает проявляение проблемы, латинница вводится нормально и проблема не проявляется. Это показалось мне достаточно интересным и я решил поделиться наблюдением собщественностью.
Старичок IE не перестает нас удивлять и подкидывать все новые проблемы, в самых неожиданных местах.
При работе над проектом столкнулся с неожиданным поведением полей ввода input и textarea при работе IE в режиме quirks mode. И все бы ничего, в общем-то — кого сегодня удивишь странностями и багами IE. Интересное заключается в том, при каких условиях проявляется проблема. В этот раз это происходит в зависимости от того, какие символы вводятся в поле ввода — кириллические или латинские. Кириллица вызывает проявляение проблемы, латинница вводится нормально и проблема не проявляется. Это показалось мне достаточно интересным и я решил поделиться наблюдением собщественностью.
+3
Erlang. Что это, зачем, как и для кого.
2 min
83KСтатья короткая, если понравиться, попробую осветить этот язык программирования подробнее.
Erlang, это функциональный язык программирования с динамической типизацией, главной особенностью которого является программирование на уровне отдельных процессов(почти аналог threads в других ЯП), коммуникация между которыми реализуется с помощью MPI(Message Passing Interface).
Что
Erlang, это функциональный язык программирования с динамической типизацией, главной особенностью которого является программирование на уровне отдельных процессов(почти аналог threads в других ЯП), коммуникация между которыми реализуется с помощью MPI(Message Passing Interface).
+59
Хостинг для SVG изображений
1 min
3.4KНа http://petaimg.com можно выкладывать свои SVG и SVGZ изображения. Это значит, что есть место, куда можно выложить свои макеты, рисунки и прочие пряники в векторном формате.
Встраиваются куда угодно с помощью
Есть один минус у хостинга — картинки порой удаляются.
Встраиваются куда угодно с помощью
<img src="*.svg" alt=""/>
, но видны только в Опере и вебкитовых браузерах (проверял только в сафари). Ради безопасности в случае вставки через img браузеры не поддерживают интерактивность в таких изображениях.
Есть один минус у хостинга — картинки порой удаляются.
+24
Сайт как инструмент
4 min
4.3KОдин из стандартных вопросов, который задает (или по идее должна задавать) веб-студия на первой встрече с клиентом – зачем вам нужен сайт? Зачастую клиент с готовностью отвечает «нам нужен сайт как инструмент». Но, как показывает опыт, иногда это примерно то же самое, что прийти в магазин и купить дрель, чтобы была. Чтобы в доме был инструмент.
Вспомним классический пример, что покупая дрель, по сути человек покупает дырки, которые можно сделать с помощью этой дрели. Для того чтобы эти дырки появились, инструментом надо пользоваться, надо уметь с ним обращаться и работать. Сама по себе дрель (как и сам по себе сайт) особого смысла не имеют.
С учетом того, что создание сайта – удовольствие чаще всего не дешевое, что же нужно сделать, чтобы инструмент не лежал на полке, а использовался по своему прямому назначению? Декларируя, что мы заказываем сайт-инструмент, надо понимать, какие именно «дырки» мы хотим получить в результате.
Давайте рассмотрим постановку задачи на примере.
Вспомним классический пример, что покупая дрель, по сути человек покупает дырки, которые можно сделать с помощью этой дрели. Для того чтобы эти дырки появились, инструментом надо пользоваться, надо уметь с ним обращаться и работать. Сама по себе дрель (как и сам по себе сайт) особого смысла не имеют.
С учетом того, что создание сайта – удовольствие чаще всего не дешевое, что же нужно сделать, чтобы инструмент не лежал на полке, а использовался по своему прямому назначению? Декларируя, что мы заказываем сайт-инструмент, надо понимать, какие именно «дырки» мы хотим получить в результате.
Давайте рассмотрим постановку задачи на примере.
+35
Я бы в Джабберы пошёл…
5 min
36K… пусть меня научат.
Сначала я напишу пару вводных слов про джаббер, затем как быстро начать им пользоваться, чуть ниже как с ним познакомится, а в конце ссылки для любопытных. Не стесняйтесь прокручивать, если содержимое очередной части вам покажется известным.
Джаббер (Jabber) — протокол мгновенного обмена сообщениями. Хотя Jabber правильнее называть XMPP — расширяемый протокол обмена сообщениями и индикацией присутствия.
Сначала я напишу пару вводных слов про джаббер, затем как быстро начать им пользоваться, чуть ниже как с ним познакомится, а в конце ссылки для любопытных. Не стесняйтесь прокручивать, если содержимое очередной части вам покажется известным.
Введение и пара оговорок
Джаббер (Jabber) — протокол мгновенного обмена сообщениями. Хотя Jabber правильнее называть XMPP — расширяемый протокол обмена сообщениями и индикацией присутствия.
+165
Уроки «плохого» интерфейса
4 min
4KTranslation
В тот день, когда Грубер (Gruber) впервые опубликовал интерфейс TripLog/1040 от Stevens Creek, я был настроен неблагосклонно. Цвета — яркие, элементы управления казались расположенными в совершенно случайном порядке. Это шло вразрез со всем тем, за что ратуют наши дизайнеры. Просто бардак. Вскоре страница на Flickr превратилась в площадку для нападок и оскорблений. Но тут случилось нечто весьма интересное. Дизайнер TripLog Стив Патт (Steve Patt) посреди всего этого потока желчи опубликовал комментарий, в котором поделился той логикой, что в конечном счёте привела к такому варианту дизайна. Те, кто предпочёл его не слушать, ничему не научатся, но остальные могут многое почерпнуть из наводящего на интересные мысли объяснения и двадцатилетнего опыта мистера Пратта в разработке ПО.
+35
Что произошло с «аськой» (часть 2-я)
4 min
8.2KВчерашний эпический тред про происшествие, связанное с очередной сменой ICQ-протокола компанией AOL, вызвал небывалый интерес не только зарегистрированных пользователей Хабра, но и нескольких десятков тысяч гостей, пришедших на сайт. Хабр стал первым ресурсом в Сети, наиболее полно и достоверно описавший реальную ситуацию, сложившуюся вокруг сервиса ICQ. Благодарить за это нужно одного из разработчиков популярного ICQ-клиента Miranda IM Виталия Игонина (persei), который по моей просьбе подробно и, главное, очень оперативно рассказал всем нам о том, что, как и почему случилось с «аськой».
Поскольку написанный Виталием топик стал слишком тяжелым (более 1000 комментариев), приведу краткую ретроспективу событий:
— около 13:00 по московскому времени серверы AOL один а другим перестали подключать к себе все альтернативные ICQ-мессенджеры; сайт icq.com при условии захода на него с СНГ-шных IP выглядит так;
— спустя пару часов стало ясно, что серверы AOL блокируют альтернативные клиенты не во всех случаях, а будто бы выборочно: многие пользователи продолжают подключаться без каких-либо проблем;
— еще некоторое время спустя становится ясно, что блокировка подключения происходит только в случае использования IP стран СНГ. Очевидно, AOL намеренно борется, прежде всего, именно с российскими пользователями альтернативных ICQ-клиентов;
— около 19:00 МСК разработчик Miranda Виталий Игонин публикует на Хабре подробную статью о случившемся и сообщает о том, что совместно с разработчиками QIP идет поиск решения проблемы;
— около 22:00 МСК парни находят первые зацепки и обещают в ближайшее время побороть проблему целиком;
— около часа ночи разработчики QIP выпускают новую сборку QIP Infium (9022), подключающуюся к серверам AOL без проблем;
— следом команда разработчиков Miranda IM выпускает исправленную версию плагина Miranda IM ICQ+;
— очередная попытка AOL положить на лопатки альтернативные ICQ-клиенты терпит фиаско в течение суток!
А теперь — самое интересное: Виталий Игонин рассказывает, как им удалось победить AOL:
Поскольку написанный Виталием топик стал слишком тяжелым (более 1000 комментариев), приведу краткую ретроспективу событий:
— около 13:00 по московскому времени серверы AOL один а другим перестали подключать к себе все альтернативные ICQ-мессенджеры; сайт icq.com при условии захода на него с СНГ-шных IP выглядит так;
— спустя пару часов стало ясно, что серверы AOL блокируют альтернативные клиенты не во всех случаях, а будто бы выборочно: многие пользователи продолжают подключаться без каких-либо проблем;
— еще некоторое время спустя становится ясно, что блокировка подключения происходит только в случае использования IP стран СНГ. Очевидно, AOL намеренно борется, прежде всего, именно с российскими пользователями альтернативных ICQ-клиентов;
— около 19:00 МСК разработчик Miranda Виталий Игонин публикует на Хабре подробную статью о случившемся и сообщает о том, что совместно с разработчиками QIP идет поиск решения проблемы;
— около 22:00 МСК парни находят первые зацепки и обещают в ближайшее время побороть проблему целиком;
— около часа ночи разработчики QIP выпускают новую сборку QIP Infium (9022), подключающуюся к серверам AOL без проблем;
— следом команда разработчиков Miranda IM выпускает исправленную версию плагина Miranda IM ICQ+;
— очередная попытка AOL положить на лопатки альтернативные ICQ-клиенты терпит фиаско в течение суток!
А теперь — самое интересное: Виталий Игонин рассказывает, как им удалось победить AOL:
+203
Горизонтальное меню без float
3 min
20KКод и подробности под катом.
+53
Пароли: Гуманистический подход против Технократического
2 min
1.2KНаткнулся тут рядом на обширную статью про то, как придумывать пароли с введением, кучей абзацев, картинкой, чуть ли не эпиграфом — как тут это сейчас модно :)
Хотелось бы на этом примере показать, чем гуманистический подход отличается от гиковского, технократического.
Давайте вспомним, каковы требования к паролю (не слишком формализованные):
Из психологии известно, что человек легко запоминает абсурдные фразы. Абсурдные фразы кажутся человеку абсурдными именно потому, что представляют собой нетипичное, необычное и бессмысленное сочетание слов. Amazon.com использует редкочастотные сочетания слов (Statistically Improbable Phrases) для идентификации текстов.
Тогда, взяв словарь русских прилагательных и существительных (допустим, в каждом из них по 10 тыс. слов), можно выбирать оттуда случайным образом 2 прилагательных и 1 существительное, порождая в результате абсурдную, но запоминающуюся фразу.
Пример:
Осталось выполнить требование 4 — «трудно запомнить подглядевшему». Ну что же, набираем фразу в английской раскладке без пробелов:
Важное уточнение — если у вашего сервиса много мобильных пользователей, то операцию преобразования делать не стоит! (могут быть трудности при наборе + на мобильном устройстве риск 4 не так актуален).
Кто напишет онлайновую программку-генератор? :)
P.S. Представьте, как такой подход упростил бы задачу запоминания автоматически сгенерированных веб-сервисами паролей для «обычных пользователей» — секретарш, бухгалтеров и т.д.
Хотелось бы на этом примере показать, чем гуманистический подход отличается от гиковского, технократического.
Давайте вспомним, каковы требования к паролю (не слишком формализованные):
- Быстро создать
- Легко запомнить владельцу
- Легко воспроизвести
- Трудно запомнить случайно подглядевшему
- Трудно подобрать перебором
Из психологии известно, что человек легко запоминает абсурдные фразы. Абсурдные фразы кажутся человеку абсурдными именно потому, что представляют собой нетипичное, необычное и бессмысленное сочетание слов. Amazon.com использует редкочастотные сочетания слов (Statistically Improbable Phrases) для идентификации текстов.
Тогда, взяв словарь русских прилагательных и существительных (допустим, в каждом из них по 10 тыс. слов), можно выбирать оттуда случайным образом 2 прилагательных и 1 существительное, порождая в результате абсурдную, но запоминающуюся фразу.
Пример:
неистовый волшебный катализаторИтак, число вариантов для такой фразы — 1012, т.е. 1 триллион.
Осталось выполнить требование 4 — «трудно запомнить подглядевшему». Ну что же, набираем фразу в английской раскладке без пробелов:
ytbcnjdsqdjkit,ysqrfnfkbpfnjh(Конечно, существуют башедрочеры, которые наловчились читать русские слова и в английской раскладке, но вероятность того, что кто-то из них случайно увидит ваш пароль, в общем случае невелика. Напомним, что абсолютной защиты не существует и она не нужна).
Важное уточнение — если у вашего сервиса много мобильных пользователей, то операцию преобразования делать не стоит! (могут быть трудности при наборе + на мобильном устройстве риск 4 не так актуален).
Кто напишет онлайновую программку-генератор? :)
P.S. Представьте, как такой подход упростил бы задачу запоминания автоматически сгенерированных веб-сервисами паролей для «обычных пользователей» — секретарш, бухгалтеров и т.д.
+28
Функциональное программирование для землян — функции
5 min
9.2K
В статье про Python пользователь Xronos попросил рассказать о функциональном программировании (ФП). Поскольку я одно время довольно плотно занимался с Lisp, я хотел бы немножко рассказать об этом. Сразу хочу сказать, что о чистом ФП речь не идет. Я расскажу о более простых и более применимых приемах на примере языка Python.
+67
CSS counters
7 min
34K
Одной из редко используемых возможностей CSS2.1 являются счетчики. Описаны они в разделе спецификации, посвященной генерации контента. Что же это такое?
Приведу пример из спецификации, эмулирующий обычный нумерованый список с помощью счетчика и свойства content:
OL { counter-reset: item } LI { display: block } LI:before { content: counter(item) ". "; counter-increment: item }
Первым правилом мы назначаем элементам OL счетчик с именем «item», затем для всех LI меняем значение свойства display на block, вместо значения по умолчанию (list-item), чем отключаем стандартные маркеры-цифры. Наконец, в последнем правиле, мы инкрементируем счетчик для каждого элемента списка, а само его значение показываем перед элементом c помощью функции counter() и свойства content. Всё просто.
+76
Ribbon? Это просто! или Работаем с каскадными таблицами стилей (CSS) в Qt
6 min
24KНекоторое время назад в одном из обсуждений я упомянул о том, что контрол «a-la ribbon» (который был использован в MS Office 2007 для организации меню) легко и непринуждённо реализуется средствами Qt.
Я не хочу спорить о том, удобен ribbon или нет (сам я больше склоняюсь ко второму мнению). Но на его примере можно отлично раскрыть возможности каскадных таблиц стилей для Qt (которые были представлены в Qt 4.2), чем я и займусь. Сразу прошу прощения: я не дизайнер, поэтому с точки зрения эстетики мой QRibbon скорее всего не дотянет до своего собрата от МС, но дизайнеры в МС, полагаю, в своей области превосходят меня на 2 головы, да и человеко-часов, думаю, там было затрачено в слегка побольше. Я же всего лишь демонстрирую общий принцип и базовые возможности.
Так как я сейчас изучаю язык Python, то для демонстрации был выбран именно он, но для C++ всё делается абсолютно так же. Заранее прошу прощения: Python я только-только изучаю, поэтому код может быть полон корявостей, так что прошу больно не пинать :)
Итак, начнём!
Я не хочу спорить о том, удобен ribbon или нет (сам я больше склоняюсь ко второму мнению). Но на его примере можно отлично раскрыть возможности каскадных таблиц стилей для Qt (которые были представлены в Qt 4.2), чем я и займусь. Сразу прошу прощения: я не дизайнер, поэтому с точки зрения эстетики мой QRibbon скорее всего не дотянет до своего собрата от МС, но дизайнеры в МС, полагаю, в своей области превосходят меня на 2 головы, да и человеко-часов, думаю, там было затрачено в слегка побольше. Я же всего лишь демонстрирую общий принцип и базовые возможности.
Так как я сейчас изучаю язык Python, то для демонстрации был выбран именно он, но для C++ всё делается абсолютно так же. Заранее прошу прощения: Python я только-только изучаю, поэтому код может быть полон корявостей, так что прошу больно не пинать :)
Итак, начнём!
+67
О разбитых окнах.
2 min
2.1KУченые установили, что за ограду с табличкой «Не входить! Велосипеды не пристегивать!» все равно входят 27% желающих срезать путь, но если рядом пристегнуть велосипед, число вырастет до 82%.
Что же это, доктор?
+115
Модальность за рамками диалоговых окон
3 min
3.2KTranslation
Статью написал jagoterr. Если эта статья наберет +50 то автор получит инвайт на Хабрахабр.
Аза не так давно опубликовал заметку о модальных оверлеях (Здесь и далее по тексту используется именно такой перевод слова overlay, наименее “русский”, но зато не искажающий сути данного понятия). О тех самых диалоговых окошках, которые внезапно выскакивают и блокируют то, что находится позади них. Вы полностью свободны в своих действиях в рамках модального окна, но вы не можете использовать ни один “перекрытый” им элемент до тех пор, пока это окно не исчезнет.
Обычно, когда мы говорим о модальных окнах, мы говорим именно о диалогах, таких как на приведённом ниже фрагменте приложения Google Documents. Критика Аза относится как раз к модальным окнам такого рода. После того, как вы открыли диалог поиска/замены, вы не можете кликнуть мышью нигде, кроме как внутри этого диалога. Это означает, что вы не можете пролистать документ, находящийся под диалогом, или скопировать слово из документа и вставить его в строку поиска, не закрывая диалог.

Аза не так давно опубликовал заметку о модальных оверлеях (Здесь и далее по тексту используется именно такой перевод слова overlay, наименее “русский”, но зато не искажающий сути данного понятия). О тех самых диалоговых окошках, которые внезапно выскакивают и блокируют то, что находится позади них. Вы полностью свободны в своих действиях в рамках модального окна, но вы не можете использовать ни один “перекрытый” им элемент до тех пор, пока это окно не исчезнет.
Обычно, когда мы говорим о модальных окнах, мы говорим именно о диалогах, таких как на приведённом ниже фрагменте приложения Google Documents. Критика Аза относится как раз к модальным окнам такого рода. После того, как вы открыли диалог поиска/замены, вы не можете кликнуть мышью нигде, кроме как внутри этого диалога. Это означает, что вы не можете пролистать документ, находящийся под диалогом, или скопировать слово из документа и вставить его в строку поиска, не закрывая диалог.

+207
Кузявые ли бутявки, т.е. пишем морфологический анализатор на Python
8 min
54KМорфологический анализатор для русского языка — это что-то заумное? Программа, которая приводит слово к начальной форме, определяет падеж, находит словоформы — непонятно, как и подступиться? А на самом деле все не так и сложно. В статье — как я писал аналог mystem, lemmatizer и phpmorphy на Python, и что из этого получилось.
+103
Information
- Rating
- Does not participate
- Location
- Россия
- Date of birth
- Registered
- Activity