Как стать автором
Поиск
Написать публикацию
Обновить
29
0

Пользователь

Отправить сообщение

Отправка комментариев пользователей сайта вам на Jabbеr

Время на прочтение1 мин
Количество просмотров6K
Во время шумихи с аськой и предложениями перехода на jabber я решил разобраться: что же такое джаббер и как он мне может пригодиться кроме прямого общения.

Применение нашлось само собой – хочется получать комментарии с сайта себе в мессенжер. Этот подход оказался очень удобным и простым в реализации.

Поскольку я только начал разбираться с джаббером решил использовать готовую библиотеку для 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. Спасибо за приглашение на хабр! Решил перенести свою статью из песочницы в блог.

Проверка орфографии с помощью Google

Время на прочтение2 мин
Количество просмотров15K
Иногда в проекте требуется проверить данные на предмет орфографических ошибок, не полагаясь на познания пользователя по части языков. Тут нам сможет помочь компания Google, с таким их сервисом, как проверка орфографии, используемым в Google Toolbar. Но, к сожалению, Google не предоставляет открытого API для работы с ним.

Итак, краткое описание:
Для того, чтобы проверить текст нам нужно отослать его в POST на https://google.com/tbproxy/spell?lang=ru, где для смены языка следует заменить значение параметра lang на соответствующий по ISO 3166-1 alpha-2. Текст оформляется в XML вида:
<?xml version="1.0" encoding="UTF-8" ?><br/>
<spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1"><br/>
 <text>Текст для проверки</text><br/>
</spellrequest>
ignoredups — подсветка повторов
ignoredigits — считать цифры ошибками
ignoreallcaps — не проверять слова написанные капсом (подсказал pointum)

Если всё успешно, мы получаем ответ вида
<?xml version="1.0" encoding="UTF-8"?><br><spellresult error="0" clipped="0" charschecked="272"><br> <c o="27" l="13" s="0"></c><br> <c o="73" l="11" s="1">орфографии и орфографии</c><br> <c o="190" l="11" s="1">пользоваться</c><br> <c o="226" l="13" s="0">пред оставляет пред-оставляет</c><br></spellresult>
Атрибуты тега spellresult:
error — произошла ли ошибка
charschecked — количество проверенных символов

В нем идет перечисление допущенных ошибок (теги c), их параметры:
o — начало исходного слова в тексте
l — длина этого слова
s — точность результата

В самом теге c содержатся предполагаемые варианты написания слов, разделенные символом \t.

P.S. Когда этот текст уже был написан, случайно наткнулся на статью в блоге Paul Welter, которая, в принципе, описывает тоже самое…


UPD: Пользователь wayly написал на PHP класс для проверки текста с помощью этого сервиса, скачать можно по ссылке proxysoft.ru/files/spellchecker.zip (зеркало).

UPD2: mezhevikin подсказал ajax-решение с использованием этого сервиса — orangoo.com/labs/?page_id=3

UPD3: Список поддерживаемых языков

_________
Текст подготовлен в ХабраРедакторе
Код подсвечен в Source Code Highlighter

Инструкция по воплощению

Время на прочтение6 мин
Количество просмотров890
Полезная статья в журнале «Деньги» о том, «можно ли создать универсальный рецепт извлечения денег из идей?». Особенна полезна, как информация к размышлению тем, кто, как говорится, берется за дело, чтобы понять сколько и на каких усливиях можно за него получить.

Полная версия доступна здесь.
Читать дальше →

Осваиваем Python. Унция 2. Ветвления, циклы + практика.

Время на прочтение4 мин
Количество просмотров92K
image
Простые конструкции в языке Python: ветвления и циклы имеют свои особенности по сравнению с другими языками. Поэтому я всё же решил потратить на это время и рассказать. Материал совсем простой!
Так же по просьбам читающих добавил в конец статьи разбор простой программки для наглядной демонстрации пройденного материала.
Читать дальше →

Итерируем все и вся

Время на прочтение4 мин
Количество просмотров65K
image
Насколько я успел понять по собственному опыту, при переходе на Python с другого языка программирования порой сложно привыкнуть к его специфическому подходу к циклам. Например, взять тот же самый for, который работает совершенно по-другому, нежели в других языках. Возьму на себя смелость рассказать о том, что мне самому поначалу было сложно осознать, а тем более использовать в своем коде — итераторы. Вещь на самом деле очень полезная, надо только уметь правильно ей пользоваться! ;)

АПД: Только сейчас заметил, что тема функционального программирования сегодня популярна как никогда :) Спасибо товарищу uj2 за раскрытие такой интересной темы, поддерживаю!
Панеслася!

Функциональное программирование для землян — списки

Время на прочтение6 мин
Количество просмотров10K
Продолжаю свое небольшое введение в функциональное программирование. На этот раз речь пойдет о списках и методах их обработки в функциональном стиле.

Читать дальше →

PageRank предсказывает нобелевских лауреатов

Время на прочтение2 мин
Количество просмотров831
Ранжирование учёных по количеству ссылок на их работы — неблагодарное дело. Кто угодно может называть несколько уязвимых мест такой системы.

1. Не все ссылки одинаковы. Значимость ссылающейся работы — это важный фактор.
2. Учёные из разных областей науки пользуются цитатами и ссылками по-разному. Работа в области наук о жизни цитируется шесть раз, работа по физике — три раза, а по математике — всего один.
3. Прорывные работы могут цитироваться реже обычного, потому что они затрагивают нишевые научные области на раннем этапе их развития.
4. Важные работы часто прекращают цитировать, когда они попадают в учебники.

Паттерн перекрёстных ссылок между научными работами формирует сложную сеть, похожую на сеть гиперссылок в интернете. Может быть, именно в этом состоит ключ к открытию лучшего способа оценки значимости конкретной работы?

Сергей Маслов из Брукхейвенской национальной лаборатории в Нью-Йорке и Сидни Реднер из Бостонского университета задали себе такой же вопрос и предположили, что алгоритм Google PageRank может помочь немного разобраться в проблеме.
Читать дальше →

Уроки «плохого» интерфейса

Время на прочтение4 мин
Количество просмотров4K
В тот день, когда Грубер (Gruber) впервые опубликовал интерфейс TripLog/1040 от Stevens Creek, я был настроен неблагосклонно. Цвета — яркие, элементы управления казались расположенными в совершенно случайном порядке. Это шло вразрез со всем тем, за что ратуют наши дизайнеры. Просто бардак. Вскоре страница на Flickr превратилась в площадку для нападок и оскорблений. Но тут случилось нечто весьма интересное. Дизайнер TripLog Стив Патт (Steve Patt) посреди всего этого потока желчи опубликовал комментарий, в котором поделился той логикой, что в конечном счёте привела к такому варианту дизайна. Те, кто предпочёл его не слушать, ничему не научатся, но остальные могут многое почерпнуть из наводящего на интересные мысли объяснения и двадцатилетнего опыта мистера Пратта в разработке ПО.

Читать дальше →

Функциональное программирование для землян — функции

Время на прочтение5 мин
Количество просмотров9.2K


В статье про Python пользователь Xronos попросил рассказать о функциональном программировании (ФП). Поскольку я одно время довольно плотно занимался с Lisp, я хотел бы немножко рассказать об этом. Сразу хочу сказать, что о чистом ФП речь не идет. Я расскажу о более простых и более применимых приемах на примере языка Python.

Читать дальше →

Кунг-фу: стиль JavaScript

Время на прочтение5 мин
Количество просмотров2.2K
Эта статья начиналась как комментарий к другой статье на habrahabr. После написания первого листа, я понял, комментарий слишком обширный получился :). Я решил написать, потому что хочу заострить внимание на моментах, которые, на мой взгляд, были упущены. Ограничение этой статьи — моя цель изложить всё максимально доступно, не ищите здесь математической точности в определении терминов, и всё же я прилагаю ссылки где математики найдут высококлассные понятные только им определения :)

Наверно каждую статью по JS принято начинать со слов о его недооцененности :) Это правда :) Когда я пару лет назад говорил о том что JS мой любимый язык на меня смотрели, как на школьника-переростка, который только что написал свою первую страницу на HTML, а те кто меня знал, как на гроссмейстера, который сказал что он только и знает как фигуры ходят :). Таких людей не стало намного меньше, увы :(

Итак, ...

Интервально-ассоциативный массив

Время на прочтение2 мин
Количество просмотров4.8K
Замечательная вещь — ассоциативный массив. Самые разные задачи решаются с его помощью легко, приятно и быстро. А как быть когда значение должно принадлежать не одному ключу, а быть «размазанным» на некоторый интервал?
Представьте, что вам нужно сделать программу для составления расписания дежурства менеджеров интернет-магазина. Работа с ним должна была максимально простой, примерно так:
# легко назначить
>>> timetable['08:00' : '12:00'] = 'Иванов'
>>> timetable['12:00' : '16:00'] = 'Петров'

# как узнать кто дежурил в 13:51 ?
>>> print timetable['13:51']
Петров

# легко просмотреть поэлементо полный список
>>> for interval, person in timetable.items(): print interval, person
('08:00', '12:00') Иванов
('12:00', '16:00') Петров

# ...или одной строкой
>>> print timetable
{['08:00', '12:00'] => 'Иванов', ['12:00', '16:00'] => 'Петров'}


Дальше - больше!

Пишем модуль расширения для Питона на C

Время на прочтение9 мин
Количество просмотров27K
OMFG! — может воскликнуть читатель. Зачем писать что-то на С когда есть Python, и будет во многом прав. Однако, к счастьюсожалению наш зелёный друг не всесилен.
Итак...

Консольные хитрости Питон: история команд + автодополнение

Время на прочтение3 мин
Количество просмотров19K
Если вы разрабатываете программы на Питоне, то, уверен, вы хорошо знакомы с работой с ним в интерактивном режиме. Это самый простой и удобный способ проверить пришедшую в голову идею, запустить библиотечную функцию, пошагово прогнать какой-то алгоритм и т.п. без создания лишних мусорных файлов. Вобщем питоновская консоль — очень мощная и удобная вещь. У меня постоянно напрашивается сравнение с юникс-шеллом в языке. Если бы не две ложки дегтя в этой бочке меда: команду каждый раз приходится набирать заново, вместо того, чтобы просто нажать стрелку вверх и подправить команду, а также приходится писать много лишнего, что только добавляет опечаток и необходимости повторного набора. Вобщем я хочу как в баше: история + автодополнение.
Я удивлен почему это еще не сделано по умолчанию. Кстати, очень может быть, что это уже реализовано в вашей системе, и вам это совершенно неактуально — тогда можете совершенно смело пропустить эту статью. Возможно это пригодится кому-то другому. На попавшихся мне Macos, Freebsd, Debian и Fedora этого не было.

К счастью, это легко исправить.

Сила и красота декораторов

Время на прочтение5 мин
Количество просмотров83K
Одним из самых сложных для понимания и осознания элементов языка является декоратор, хотя по сути это очень простая вещь, доступная для понимания даже начинающему программисту. Новых Эверестов я не открываю, а лишь предлагаю краткий обзор возможностей и несколько типичных примеров использования. Этакий короткий экскурс в метапрограммирование на питоне.

Upd 1: изменил несколько категоричное утверждение о несходстве паттерна Декоратор и одноимённой языковой конструкции на более мягкое.

Читать дальше →

10 причин для перехода на Ruby

Время на прочтение7 мин
Количество просмотров87K
Я познакомился с Ruby сравнительно недавно, благодаря чудесному фреймворку Ruby on Rails. Я не считаю себя экспертом в Ruby, но я прочитал PickAxe, написал несколько утилит на Ruby для личного пользования, а также разрабатываю на Rails в свободное время.
Читать дальше →

Portable Python — все свое ношу с собой!

Время на прочтение2 мин
Количество просмотров58K
Если встретить linux-дистрибутив без интерпретатора python почти невозможно, то по отношению к Windows ситуация диаметрально противоположная. А питон ведь кроссплатформенный!
Конечно, можно поставить интерпретатор и на windows, но если хочеться запустить любимый скрипт на чужом/рабочем компьютере, под управлением данной ос?
Что, тоже мучиться с установкой? А если на машину нельзя/нецелесообразно ставить ПО. Да и время на это тратить, ради запуска одного скрипта не хочется?
Тогда, на помощь нам придет Portable Python!

Нет, не нужно идти на сайт и покупать на нем специальную флешку, достаточно скачать архив, и установить питон на свою.
Читать дальше →

Книга о Django вышла в свет

Время на прочтение1 мин
Количество просмотров5K
На прошлой неделе вышла книга о фреймворке Django — «The Definitive Guide to Django: Web Development Done Right». Её можно купить на Амазоне или почитать в онлайне.

Черновик был опубликован в сети около года назад. С тех пор читатели добавили около двух с половиной тысяч комментариев. Авторы книги (Adrian Holovaty и Jacob Kaplan-Moss) высоко оценивают качество и количество замечаний и благодарны всем, кто участвовал в совершенствовании текста.

Django — это замечательный веб-фреймворк, написанный на языке Python. Важнейшее отличие Django от общеизвестного RoR состоит в том, что модели определяются на языке программирования и структура БД генерируется автоматически, а не наоборот. От основных собратьев по языку Django отличается в первую очередь монолитностью. (Разумеется, все отличия имеют свои положительные и отрицательные стороны.)

Кэширование в Django

Время на прочтение5 мин
Количество просмотров29K
В продолжение моей статьи про шаблоны, хочу рассказать про реализацию кэширования в Django. Основной упор будет сделан на кэширование частей шаблона – этот вопрос был затронут тут и послужил причиной написания этих двух статей. В предыдущей статье я слишком увлекся описанием самих шаблонов, так что постараюсь исправиться в этой.

Читать дальше →

Google App Engine: шаблоны и статика (css, js, картинки)

Время на прочтение2 мин
Количество просмотров3.3K
В предыдущем посте было рассказано, как создать простейший проект на GAE + Django. Сейчас давайте попробуем подключить к проекту шаблоны Django и поддержку статических файлов — таблиц стилей, скриптов и картинок.

Наш Django проект будет называтся dvk, и содержать приложение main. В папке приложения создаем каталог для шаблонов templates:
dvk/
main.py
app.yaml
    dvk/
    manage.py
    settings.py
    urls.py
      main/
      __init__.py
      models.py
      views.py
        templates/


Читать дальше →

Разные варианты отображения для одних и тех же данных

Время на прочтение2 мин
Количество просмотров1.5K
Опыт «забавностей» становится всё больше и больше. Вот очередной случай маразма. Коротко суть:
Существует сайт, на котором нужно выводить одни и те же объекты с разными условиями выборки (по категории, по тегу, «захабареные» и т.п.) и разными отображениями (список, подробно и т.п.).

Некоторые индивиды, создают в каждом view замысловатую структуру из if-ов, и каждый раз она повторяется. Запомните:
  1. Рефакторинг
  2. Рефакторинг
  3. Рефакторинг
  4. view — это просто функция!

И так, по последнему пункту.
Читать дальше →

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность