Pull to refresh
43
0
cachealot @cachealot

User

Send message

PHP модуль — это всё ещё просто. Часть вторая

Reading time7 min
Views6.2K
Пока nerezus сочиняет статью о встраивании PHP, я постараюсь продолжить его рассказ о написании расширений. Рассказано будет далеко не всё, поскольку я считаю, что сложность наращивать надо постепенно, иначе материал будет трудноусвояемым и совсем не питательным. В связи с этим я всё-таки не расскажу в этот раз, как подменить операторы в классе, кто захочет, может почитать исходники модуля Operator от Сары Големон — основного автора какой бы то ни было информации о разработке расширений PHP.
Поскольку разработку я веду исключительно в линуксе, то писать мы будем без всяких хитрых аддонов к Visual Studio, ручками, с нуля :) А что, лучше сразу разобраться, а потом уже упрощать свой труд.
Поехали?
Total votes 42: ↑36 and ↓6+30
Comments20

dklab_multiplexor: постоянное Javascript-соединение с сервером в условиях сотен тысяч онлайн-клиентов

Reading time4 min
Views6.7K
Dklab_multiplexor — это инструмент, который позволяет держать одновременно сотни тысяч долгоживущих открытых HTTP-соединений с сервером. Например, если на вашем сайте находится одновременно несколько сот тысяч посетителей, каждый из них может быть связан с сервером постоянным соединением, установленным из JavaScript. Это например, полезно при организации онлайн-чатов или мгновенных уведомлений.

Dklab_multiplexor не претендует на полную универсальность или исключительность (кстати, если знаете аналоги, близкие по простоте к multiplexor-у, пишите в комментариях). Это лишь простейший инструмент, который наконец-то дошли руки опубликовать.

Зачем это нужно?


Предположим, посетители вашего сайта могут посылать друг другу сообщения. Если получатель в момент отправки находится на сайте (просматривает какую-либо страницу), ему немедленно выдается уведомление (всплывающее окошко на JavaScript).

Данную задачу можно решить двумя способами.
  1. Неправильный способ. Раз в 10 секунд делать из JavaScript запрос на сервер для проверки, не появилось ли новых сообщений. Этот метод не работает, если на сайте одновременно находится очень большое количество пользователей, т.к. нагрузка на сервер растет слишком быстро. Кроме того, потребление трафика пользователем также оказывается крайне высоким.
  2. Правильный способ. Устанавливать постоянное и длительное соединение с сервером, ожидая поступления данных через него. Если сообщений нет, соединение просто держится открытым на протяжение нескольких минут. Если соединение по каким-либо причинам закрылось, оно вновь открывается. В итоге и трафика потребляется мало, и нагрузка на сервер оказывается невелика. Так работает GMail, Мой Круг и т. д., и именно на этом принципе построен dklab_multiplexor.
+-------------------+                    ------------------ 
| Сервер обработки  |                   |                  |   <===WAIT=== Клиент A
| и базы данных     |  ======IN=======> |   Мультиплексор  |   <===WAIT=== Клиент B
| (e.g Apache + PHP |                   |                  |   <===WAIT=== Клиент C
+-------------------+                    ------------------ 
(указаны направления установления TCP-соединений).
Читать дальше →
Total votes 103: ↑97 and ↓6+91
Comments108

Как я учил английский

Reading time3 min
Views39K
Добрый день!

На хабре уже имели место несколько статей о том, как нужно учить английский, напомню:
Хочу дополнить этот список своими наблюдениями по поводу эффективных и не очень методов изучении английского языка.
Читать дальше →
Total votes 78: ↑65 and ↓13+52
Comments66

Онлайн чат для сайта через джаббер (GTalk)

Reading time2 min
Views41K
image
Великолепная веб-программа позволяющая разместить на вашем сайте панель с чатом для ваших клиентов сообщения которого будут прилетать в ваш джаббер клиент.
Другими словами это способ организовать общения с посетителями сайта.

Написать подробную инструкцию меня сподвигнула обзорная заметка на сайте dikiy.com
Под катом так-сказать пошаговая инструкция как запустить онлайн чат на своем сайте
Читать дальше →
Total votes 80: ↑74 and ↓6+68
Comments78

6 простых способов увеличения фрилансерской продуктивности

Reading time6 min
Views2.3K
Лучшее в фрилансерской работе это то, что вы свободны в создании вашего собственного графика и правил. Однако это может быть и плохим фактором. Без нормально структурированного офисного пространства многие фрилансеры в конце дня могут задуматься – куда же делось все их время. Может быть трудно получить максимальную пользу от всего рабочего дня. Чтобы помочь таким фрилансерам, мы хотим представить некоторые простые пути для увеличения продуктивности.
Идем дальше...
Total votes 82: ↑55 and ↓27+28
Comments58

Кешируем блоки HTML при помощи nginx

Reading time3 min
Views7.1K
Не секрет, что пользователи любят, когда контент на сайте обновляется чаще, чем раз в год. Эту любовь пользователей к динамическим страничкам разделяют и поисковики. Google, например, умеет определять наличие обновляющихся блоков на страничке и добавляет ей немного кармы (читай, PR).

Однако динамический контент довольно плохо сочетается с большими нагрузками. Для веб-сервера, отдача статической странички — намного более простая задача, чем запуск кода, который сгенерит эту страничку динамически. В некоторых случаях может выручить прегенерация всех возможных вариантов странички, но это не спасёт, если их слишком много, или страница обновляется слишком часто.

продолжение
Total votes 81: ↑80 and ↓1+79
Comments60

vim + psql

Reading time3 min
Views5.2K
Уже пол года как перешели на vim. Работаем с RoR(ruby on rails) и javascript (Dojo).
Vim попищал недельку и стал служить верой и правдой.
Подкупает простота и в тоже время мощь этого редактора, особенно в *nix окружении.

в этой заметке я раскажу как легко подружить vim и psql (postgresql console client).
Читать дальше →
Total votes 30: ↑26 and ↓4+22
Comments23

VirtualBox. Удобное переключение между Host и Guest

Reading time2 min
Views22K
Те, кто работает админом и занимается тех.поддержкой пользователей в крупных конторах, часто сталкиваются с необходимостью держать на рабочей машине Windows наряду с любимой ОС — в данном случае Debian GNU/Linux. Задачи, вынуждающие ставить винду могут быть разными. Средства тоже: кто-то ставит VMWare, кто-то qemu, я пользуюсь VirtualBox. В общем виртуальными машинами сейчас никого не удивить. Я хочу поделиться с людьми небольшим, но очень удобным финтом.
Читать дальше →
Total votes 97: ↑96 and ↓1+95
Comments62

К вопросу о некоторых аспектах организации файловой системы UNIX/Linux

Reading time9 min
Views7.1K
1.0 Введение


После написания предыдущей статьи (Linux: Установка программ не входящих в дистрибутив при помощи менеджера xstow), у меня осталось двойственное впечатление. С одной стороны в статье все правильно, а с другой стороны, отзывы показали, что есть некоторые разночтения в назначении различных частей ФС UNIX. Получилось так, что я дал людям в руки молоток, дал инструкцию по применению молотка, а какие гвозди и куда забивать этим молотком, не сказал. Попытаюсь восполнить этот пробел. В данной статье я попытаюсь, насколько мне это удастся, рассказать, как организована ФС UNIX, зачем это сделано именно это так, для чего и как себя в этой системе вести.

Читать дальше →
Total votes 62: ↑55 and ↓7+48
Comments94

Плавающие якоря

Reading time1 min
Views9.2K
Верстал комменты для очередного проекта. Всегда напрягало, что якорь в комментариях опускал экран до нужного комментария «впритык», тогда как с эстетической точки зрения было бы приятно, если бы сверху от границы экрана до самого комментария все же был бы какой-то отступ.
image
Читать дальше →
Total votes 144: ↑125 and ↓19+106
Comments145

Хостинг на AWS (EC2, EBS, S3) для чайников

Reading time4 min
Views139K
На хабре уже проскакивали периодически заметки посвященные AWS (Amazon Web-Services) — так что тема не новая. Однако, если для меня лично (да и для многих моих знакомых как выяснилось) — этот термин был знаком — однако каких-либо деталей я не знал. Попробую на основании только-что полученного опыта рассказать немного подробней, а так же изложить основные шаги по организации хостинга сервера на AWS и его преимущества. Как и несколько ссылок, которые могут оказаться полезными.
image
Читать дальше →
Total votes 101: ↑98 and ↓3+95
Comments62

Где-же взять VPS/VDS?

Reading time1 min
Views49K
Снова напал на интернет с вопросом, у кого взять VPS качественно и за недорого.

Хочется небольшого: 500Mhz CPU, 256Mb RAM, >3Gb HDD, с Ubuntu LTS или Debian и неограниченным (разумно большим) трафиком.
Желательно: Xen, Россия, WM, до 20$, с возможностью расти по ресурсам.

Искал на:
www.hostobzor.ru/db/list_firm.php
hosting101.ru
1stat.ru/?show=providers
и потерялся…

Подскажите, пожалуйста, где граблей меньше.

Заранее спасибо за ваши мнения!
Total votes 58: ↑40 and ↓18+22
Comments224

Книга «Introduction to Information Retrieval»

Reading time1 min
Views6.2K
Оказывается, что есть отличная книжка по поисковым технологиям (Information Retrieval) от Cambridge University Press. Html и pdf версии лежат в свободном доступе. Работа над ней то ли еще ведется, то ли недавно закончена (последнее обновление — 7 апреля 2009). Книжка написана отличным английским языком, есть хорошие упражнения. В общем, рекомендую всем кому интересно как устроены Google и Yandex!

Html-версия — nlp.stanford.edu/IR-book/html/htmledition/irbook.html
PDF-версия (очень красивая, рекомендую!) — nlp.stanford.edu/IR-book/pdf/irbookonlinereading.pdf

А вот про Information Retrieval в википедии — en.wikipedia.org/wiki/Information_retrieval
Total votes 53: ↑52 and ↓1+51
Comments12

Как готовить SphinxQL

Reading time6 min
Views45K
По заявкам трудящихся, расскажу про две новых мега-фичи в Sphinx. Предложения тем для последующих рассказов можно засылать в комментарии.

Обе фичи добавлены в версии 0.9.9-rc2, опубликованной в начале апреля 2009го. Версия традиционно (слишком) стабильная, известных серьезных багов нету, тесты проходятся, итп. Отважные люди, а также коммерческие клиенты с контрактами про поддержку, уже успешно используют в продакшне, несмотря на отличный от «release» тег.

1я мега-фича. Теперь Sphinx поддерживает сетевой протокол MySQL (внутренней версии номер 10, которую поддерживают все версии сервера и клиента, начиная с MySQL 4.1 и по MySQL 5.x включительно).

Читать дальше →
Total votes 88: ↑86 and ↓2+84
Comments80

Как стать Zend PHP 5 Certified Engineer

Reading time3 min
Views27K
Свершилось, ура! Теперь я имею почетный статус ZCE :)

Поэтому хотел бы поделиться своим опытом подготовки к сертификации, ну и заодно провести небольшой ликбез на тему сертификации по PHP.

Читать дальше →
Total votes 117: ↑104 and ↓13+91
Comments93

10 рекомендаций по html-верстке электронных писем

Reading time4 min
Views107K
Рекомендация первая: забудьте про блочную верстку. Весь лэйаут должен быть на таблицах. При этом, без крайней необходимости — их тоже лучше не использовать. Также следует выкинуть из головы представления о семантике, сокращенных css-правилах, валидации, плавающих блоках — и прочее. Самый распространенный в РФ почтовый сервис на данный момент (mail.ru) вообще не понимает стили (css). Любые тэги/атрибуты style заменяются на xstyle и не работают. Вообще все.

Так что, фактически, при вёрстке html для почтовой рассылки надо мысленно переместиться в 90-ые годы прошлого века и смело использовать все распространенные приёмы того времени.

Для тех, кто с ними не знаком (как я был) — напомню:
Читать дальше →
Total votes 124: ↑111 and ↓13+98
Comments104

10 приемов, разрушающих хрупкую красоту кода

Reading time19 min
Views102K
Статья приводится в сокращении из-за ограничения на объем материала.

Для меня программирование — это не только технология, но и, во многом — искусство. И, поэтому, большое значение имеет красота кода.

Последние несколько лет я собирал приемы программирования, разрушающие в программном коде его утонченную красоту:
  1. Объявление всех переменных в начале программы;
  2. Возврат результата функции через ее параметр;
  3. Отсутствие локальных функций;
  4. Отсутствие else if;
  5. Использование параллельных массивов;
  6. Хранение размера массива в отдельной переменной;
  7. Доступ к свойствам объекта через obj.getProperty() и obj.setProperty(value);
  8. Использование рекурсии для вычисления факториалов и Чисел Фибоначчи;
  9. Отсутствие именованных параметров функции;
  10. Невозможность объявления объектов «на лету».
Наверняка, в некоторых местах вы будете со мной несогласны — ведь чувство красоты у всех разное.


Объявление всех переменных в начале программы


В двух словах:

Переменные должны объявляться в начале логического блока, в котором они используются, а НЕ в начале функции или программы.


Читать дальше →
Total votes 402: ↑324 and ↓78+246
Comments411

Настройка отладчика в Nusphere PhpEd для удаленной отладки веб-сервисов

Reading time3 min
Views13K
В Nusphere PhpEd есть отладчик для php-скриптов, который позволяет отлаживать и профилировать веб-сервисы любой сложности и с любой структурой на удаленном сервере. Единственный требования для его нормальной работы — это открытый порт на компьютере, с которого происходит отладка, и подключение модуля отладчика, который идет в поставке с PhpEd, к php.

How it's made?
Total votes 24: ↑17 and ↓7+10
Comments7

Реализация отправки sms-уведомлений

Reading time3 min
Views16K
В виду достаточно большого парка серверов/свитчей/модемов и иного активного оборудования в конторе, была установленная система мониторинга zabbix и успешно использовалась продолжительное время. Zabbix имеет замечательную возможность отправки уведомлений о возникших проблемах.
Для этого был написан скрипт отправки sms сообщений через шлюз email-to-sms оператора связи, ограничение по количеству смс с одного адреса в сутки было обойдено путем ротации исходящих адресов, работало более или мение сносно, но в последнее время смс сообщения через данный шлюз начали доходить с задержкой порядка 10-15 минут, что уже не очень нравилось.
Итак, было решено организовать отправку уведомлений через собственный GSM-терминал, порывшись в прайсах поставщиков и не обнаружив там подходящих по цене и характеристикам GSM модемов весьма огорчился.
И тут вспомнилось что дома валяется старый Siemens CX65 да еще и data-кабель к нему, после подключения телефона и курения доков по отправке sms сообщений пришел к не очень радостному выводу, оказывается siemens не поддерживает отправку sms в текстовом режиме, команда AT+CMGF=1 возвращает error.
Отправка сообщений в данных аппаратах возможна только в режиме PDU, ради спортивного интереса и для размятия мозгов было решено реализовать эту систему, был написан скрипт для перекодировки в PDU формат сообщений и отправки через телефон.
Читать дальше →
Total votes 46: ↑42 and ↓4+38
Comments44

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity