Как стать автором
Обновить
16
0
Павел @nod

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

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

Как исправить ошибку в Node.js и нечаянно поднять производительность в 2 раза

Время на прочтение8 мин
Количество просмотров44K
Началось все с того, что я оптимизировал отдачу ошибки HTTP 408 Request Timeout в сервере приложений Impress, работающем на Node.js. Как известно, у нодовского http.Server есть событие timeout, которое должно вызываться для каждого открытого сокета, если тот не закрылся за указанное время. Хочу уточнить, что не для каждого запроса т.е. не для каждого события request, функция которого имеет два аргумента (req, res), а именно для каждого сокета. Через один сокет может последовательно поступить много запросов в режиме keep-alive. Если мы задаем это событие, через server.setTimeout(2 * 60 * 1000, function(socket) {...}) то должны сами уничтожать сокет socket.destroy(). Но если не установить свой обработчик, то http.Server имеет встроенный, который уничтожит сокет через 2 минуты автоматически. На этом самом таймауте можно отдать ошибку 408 и считать инцидент исчерпанным. Если бы не одно но… С удивлением я обнаружил, что событие timeout вызывается и для тех сокетов, которые подвисли и для уже получивших ответ и для закрытых клиентской стороной, вообще для всех, находящихся в режиме keep-alive. Это странное поведение оказалось достаточно сложным, и я расскажу об этом ниже. Можно было бы вставить одну проверку в событие timeout, но со своим идеализмом я не удержался и полез исправлять баг на уровень глубже. Оказалось, что в http.Server режим keep-alive реализован не то что не по RFC, а откровенно не дописан. Вместо отдельного timeout для соединения и отдельного keep-alive timeout, там все на одном таймауте, который реализован на быстрых псевдо-таймерах (enroll/unenroll), но задан по умолчанию в 2 минуты. Это было бы не так страшно, если бы браузеры хорошо работали с keep-alive и переиспользовали его эффективно или закрывали бы неиспользуемые соединения.
Читать дальше →
Всего голосов 98: ↑97 и ↓1+96
Комментарии36

Практическое применение DNSSEC

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


В статье описываются недостатки существующей структуры DNS, полный процесс внедрения DNSSEC на примере доменов .com и .org, процедура создания валидного самоподписанного SSL-сертификата подписанного с помощью DNSSEC.

Читать дальше →
Всего голосов 76: ↑75 и ↓1+74
Комментарии31

Сервис для удобного встраивания контента 200+ сервисов в свой сайт/блог

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


Сегодня утром наткнулся на информацию об интересном сервисе Embedly (забегая наперед, скажу, что протестировал этот сервис на своем блоге на Wordpress, все работает), который позволяет легко встраивать контент большинства известных сервисов (включая Tumblr, Twitter и прочие). Этот сервис работает с технологией oEmbed, которая существует уже несколько лет. Вероятно, этот сервис первым начал масштабное внедрение данной технологии. К слову, большинство известных сервисов и CMS имеют поддержку oEmbed, так что команде сервиса Embedly оставалось лишь наладить «мостик» между источником контента и площадкой, которая желает разместить контент у себя. Что и было сделано.

Читать дальше →
Всего голосов 37: ↑32 и ↓5+27
Комментарии9

Делаем Desire HD из Desire

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


Буквально пару дней назад я прочитал пост Вторая жизнь HTC HD2 и задумался, а можно ли сделать Desire HD из моего Desire? Как оказалось, можно, и даже не очень сложно. В общем, поразмыслив некоторое время о плюсах и минусах перехода на HD, я приступил к превращению. После всех действий я получил все возможности Desire HD в корпусе Desire. Никаких проблем и ошибок не возникло.
Читать дальше →
Всего голосов 109: ↑96 и ↓13+83
Комментарии139

OAuth: описание протокола простым и понятным языком

Время на прочтение16 мин
Количество просмотров190K
OAuth — популярный протокол, который позволяет социальным сервисам интегрироваться между собой и дает безопасный способ обмена персональной информацией. OAuth может связать между собой 2 сервиса, каждый из которых имеет свою пользовательскую базу — именно их я в данном случае называю «социальными». Когда начинаешь работать с OAuth, первое ощущение — что протокол весьма сложен и избыточен. В этой статье я попытаюсь объяснить основы OAuth человеческим языком.

Пример кросс-авторизации


Вернемся в 2005-й год и представим, что мы пишем социальную сеть. В ней имеется форма импорта контактов из адресной книги GMail. Что нужно для доступа к контактам GMail? Конечно, логин и пароль от ящика. Но если мы попросим ввести их на нашем сайте, пользователь заподозрит неладное. Где гарантия, что мы не сохраняем на сервере введенные пароли? Поэтому нам хочется, чтобы пароль вводился только на сайте GMail, и после этого доступ к контактам через API GMail предоставлялся нашей социальной сети (возможно, на время).
Под катом - повествование с примерами
Всего голосов 134: ↑124 и ↓10+114
Комментарии34

Вебдванольные сайты и рейтинги на них. Попытка переосмысления

Время на прочтение3 мин
Количество просмотров728
Всегда считал себя ретроградом. Не успеваешь продифференцировать рост свечек на торте, а мониторы из чёрно-зелёных стали цветными, затем цветными и плоскими, килобайты сменились теми же числами в мегабайтах, гигабайтах, терабайтах… Где-то вдалеке крах доткомов, и вот уже начали желтеть семейные фотографии первых вебдванольных сайтов. Молодой стандарт вебдванольности, не успев вырасти и остепениться, был признан классикой, незаметно переходя в категорию устаревающего ретро. Самое время остановиться и полистать фотоальбом, вернее, ту его часть, где фигурируют рейтинги.
Читать дальше →
Всего голосов 60: ↑53 и ↓7+46
Комментарии86

Яндекс.Склонятор

Время на прочтение2 мин
Количество просмотров25K
Яндекс выпустил XML-склонятор русских имен. Сервис по адресу export.yandex.ru/inflect.xml?name=Вася%20Пупкин берет имя и выдает его склонения в такой форме:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <inflections>
  3.   <original>&#1042;&#1072;&#1089;&#1103; &#1055;&#1091;&#1087;&#1082;&#1080;&#1085;</original>
  4.   <inflection case="1">&#1042;&#1072;&#1089;&#1103; &#1055;&#1091;&#1087;&#1082;&#1080;&#1085;</inflection>
  5.   <inflection case="2">&#1042;&#1072;&#1089;&#1080; &#1055;&#1091;&#1087;&#1082;&#1080;&#1085;&#1072;</inflection>
  6.   <inflection case="3">&#1042;&#1072;&#1089;&#1077; &#1055;&#1091;&#1087;&#1082;&#1080;&#1085;&#1091;</inflection>
  7.   <inflection case="4">&#1042;&#1072;&#1089;&#1102; &#1055;&#1091;&#1087;&#1082;&#1080;&#1085;&#1072;</inflection>
  8.   <inflection case="5">&#1042;&#1072;&#1089;&#1077;&#1081; &#1055;&#1091;&#1087;&#1082;&#1080;&#1085;&#1099;&#1084;</inflection>
  9.   <inflection case="6">&#1042;&#1072;&#1089;&#1077; &#1055;&#1091;&#1087;&#1082;&#1080;&#1085;&#1077;</inflection>
  10. </inflections>
Пользуйтесь на здоровье :)

Склонятор стал 17-м мини-проектом сборника Яндекс.Нано.

P. S. Обнаружил на Хабре единственную девушку-участницу разработки проекта :)
Всего голосов 119: ↑114.5 и ↓4.5+110
Комментарии64

Краткий обзор лучших средств для построения графиков и диаграмм.

Время на прочтение1 мин
Количество просмотров3.7K
Из всех наведенных примеров мне больше всего понравился Open Flash Chart. Который я заслужено поставил на первое место. Все остальные, мне показались тоже не плохими но для работы я выбрал именно Open Flash Chart.
Open Flash Chart – FLASH компонент для построения диаграмм. Он имеет много настроек и легко взаемодействует с PHP, Perl, Python, Java, Ruby on Rails, and .Net. Также может читать данные с .txt файлов.

смотреть другие скрипты для построения графиков и диаграмм
Всего голосов 21: ↑21 и ↓0+21
Комментарии14

Open Flash Chart — построение «чартов» или бесплатное решение «Активного графика» на PHP+ActionScript3

Время на прочтение3 мин
Количество просмотров2.5K
На статью натолкнула соседний топик про pChart — pChart — строим графики и диаграммы на PHP
Сразу опишу со своей стороны минусы:
1) Он не активный — тоесть не кликабельный
2) У некоторых как говорится «дизайн желает лучшего»
3) Меньше нагрузка на сервер (график строится на клиентской части)
4) Так как индексации нету, график всегда в РеалТайме

Минусы ActionScript3 графика:
1) Нельзя сделать snapshot (грубо говоря состояние графика, 2-3-4 часа назад или чтоб уменьшить нагрузку на сервере сделать импорт графика в image)


Вот пример не «кликабельного» графика на примере pChart:
pChart
А вот пример Open Flash Chart'a:

Живой пример — Индексация WMZ кошелька (для тех кому интересен как это было реализовано, будет описано если этот топик прокатит. У меня в написании статьей почти 0-лвл :) )

Читать дальше →
Всего голосов 26: ↑16 и ↓10+6
Комментарии10

11 порталов для выбора Иконок

Время на прочтение1 мин
Количество просмотров5.4K
Коллекция ссылок больших порталов и поисковиков, для выбора всевозможных Иконок(Icons) разного типа. Практически на всех есть широкий выбор размеров.

В этой коллекции я уверен что вы найдете что вам нужно ;)

Ну интересное так точно!!!

1. http://www.iconspedia.com
Читать дальше →
Всего голосов 100: ↑99 и ↓1+98
Комментарии32

PHP класс для сборки инклюдов в один файл

Время на прочтение2 мин
Количество просмотров1.1K
по мотивам коммента mocksoul из темы PHP: Введение в Zend Framework

Проблема


В кратце, речь шла о том, что одним из недостатков фреймворка является его концепция «один класс – один файл». И хотя, с моей точки зрения, это не является недостатком архитектуры ZF, это является недостатком PHP. Проблемы начинаются когда PHP начинает инклюдить десятки и сотни файлов, да еще проверять их на once.

Предложенное решение – сборка всех инклюдов в один файл.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии16

Китайцы создали собственный картографический сервис

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


И вновь китайцы отличились — руководство страны решило, что Поднебесной нужен собственный картографический сервис, по какой-то причине Google Earth китайцам не подходит, и этот сервис на днях был анонсирован. Он получил нехитрое название Map World. Создавали его, в отличии от большинства картографических сервисов, не частные компании, а Государственное бюро геодезии и картографии Китая. Как детище Google, Map World позволяет видеть мир в 2D и 3D, конечно, в данном случае гораздо больше внимания уделялось картографированию Китая, и потом уже других стран.

Читать дальше →
Всего голосов 27: ↑20 и ↓7+13
Комментарии20

Как не стать спамером со своей уютной рассылочкой

Время на прочтение1 мин
Количество просмотров67K
image
Пользователь когда-то подписался на рассылку, но уже забыл когда, и главное зачем. Теперь ежедневно к нему падает спам, а по собственному опыту он знает, для того чтобы отписаться нужно зайти по ссылке свой профиль, найти и снять там какую-то галку а главное, помнить свой логин и пароль на давно забытом им сайте.
Его действия? «В спам!»

А по другую сторону баррикад находитесь Вы с вашей уютненькой подписочкой, полезной информацией и очень удобной системой отписки, о которой пользователь так никогда и не узнает.

И вот, с десяток таких «отписок» и гугл будет удобно отсортировывать ваши рассылки в папочку Спам (584), у ВСЕХ ваших подписчиков.

Однако многие из нас уже успели заметить: некоторые письма в Gmail при попытке отметить их «В спам!» САМИ предлагают отписаться от рассылки в один клик.

Эта фича была введена google более года назад, но лишь единицы рассылок научились ей пользоваться. И не удивительно. В рекомендациях по осуществлению массовых рассылок, лишь косвенно упоминается о том, что Вам нужно сделать.
А сделать нужно не многое.
Читать дальше →
Всего голосов 238: ↑230 и ↓8+222
Комментарии60

Старые карты по новому

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

Порядка 4х месяцев назад мы решили немного обновить карты. Это, вроде бы как, один из разделов на который мы сильно обращаем внимание пользователей.
Это случилось 4 месяца назад, но только сегодня мы, Евгений johnny_palec Емельянов и Антон kashey Корзунов хотели бы рассказать историю создания сервиса «На карте» портала gdeetotdom.ru. В чем-то мы были первопроходцами, в чем-то догоняющими, но в любом случае граблей было собрано немало, а в конечном итоге получился уникальный в своем роде сервис (не слишком заметно, что мы им гордимся?).
Своими изысканиями, ошибками и находками мы и хотели бы поделиться с сообществом хабра-веб-разработчиков. Но, обо всем по порядку.
Читать дальше →
Всего голосов 11: ↑8 и ↓3+5
Комментарии9

Ускорение загрузки JavaScript и CSS

Время на прочтение3 мин
Количество просмотров960
Незнаю знаете вы или не знаете, но
1.Пока не загрузятся стили — страница отображаться не будет
2.Пока не загрузиться(и не выполниться) скрипт который вы инклюдите — дальше страница отображаться не будет
3.Из пункта 2 следует что в один момент времени грузиться( и исполняется) только один скрипт.
*Но в зависимости от написания второй скрипт тоже может грузиться(но не исполняться) одновременно с первым… но
4.Один браузер в один момент времени держит только два(или четыре?) соединения с одним хостом.
Тоесть в среднем за загрузку 6ти скриптом браузер сделает 6 запросов к серверу один за другим.
К картинкам это в общем плане не относиться, мозила вроде 4 картинки одновременно тащит.
НО НЕ БОЛЕЕ!

Что же делать?
Читать дальше →
Всего голосов 11: ↑7 и ↓4+3
Комментарии6

Получаем уведомления от Zabbix в WhatsApp

Время на прочтение5 мин
Количество просмотров63K
В сети можно найти множество способов получения уведомлений от Zabbix. Мне показалось удобным получать алерты в WhatsApp — это дешевле, чем sms и, в моем случае, удобнее, чем почта — для получения уведомлений у нас используется корпоративный почтовый аккаунт, доступ к которому извне ограничен, к тому же, алерт может затеряться среди остальных писем.
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии16

OAuth на практике. Аутентификация и авторизация пользователей сайта через популярные социалки

Время на прочтение14 мин
Количество просмотров345K
Думаю, не мне одному чрезвычайно надоели ресурсы, требующие регистрации по каждому поводу и без. С обязательной капчей, которая правильно введется только с пятого раза, с подтверждением по е-мейлу, которое обязательно свалится в спам и то — только через сутки. Придумывать каждый раз новую пару логин-пароль — забудется, вводить одно и то же на всех сайтах — небезопасно. Местами прокатывают пары вида «qwerty:qwerty» или «login:password», но, увы, далеко не везде. Надоело. Не счесть, сколько раз я, увидев надпись «только зарегистрированный пользователь может ****», просто кривился и закрывал вкладку, чтобы больше ни разу на этот сайт не заходить. Неужели администраторы ресурсов сами этого не понимают?
Читать дальше →
Всего голосов 126: ↑116 и ↓10+106
Комментарии180

Vzmem: визуальное непротиворечивое распределение памяти для OpenVZ

Время на прочтение3 мин
Количество просмотров2.1K
В какой-то момент мне надоело высчитывать с калькулятором значения VMGUARPAGES и PRIVVMPAGES для OpenVZ и следить, чтобы они были согласованы для разных виртуальных машин (например, чтобы физическая память распределялась между машинами непротиворечивым образом, и одна машина не могла «отъесть» физическую память у другой и увести ее в своп, например). И я написал небольшую, но очень удобную «псевдографическую» утилитку, — vzmem, — которой сейчас и хочу поделиться. Надеюсь, она кому-нибудь пригодится.

Как использовать dklab_vzmem


Vzmem — это утилита командной строки, которая позволяет «визуально» распределять физическую память между несколькими виртуальными машинами OpenVZ так, чтобы одна машина «не залезала» на другую. Т.е. если нужно увеличить память для какой-то из машин, всегда видно, откуда эту память требуется «откусить»: от одной из существующих машин или от пула свободных блоков.
Читать дальше →
Всего голосов 27: ↑25 и ↓2+23
Комментарии3

Сумбурные заметки про python и django

Время на прочтение5 мин
Количество просмотров47K
Накопилось несколько маленьких заметок/советов про python и django, которые на отдельные топики не тянут, поэтому публикую все сразу.

Под катом:
  • как упростить код вьюх ровно в 2 раза
  • легкий способ рисования графиков
  • почему Ian Bicking воскликнул «Cool!»
  • приложения для ВКонтакте на django за 5 минут
  • хорош ли pymorphy?
  • пара фишек насчет выкладки пакетов на pypi
  • что общего между декораторами и with-контекст-менеджерами
  • принимаем оплату на django-сайтах
  • показываем Яндекс.Карту для заданного адреса

Читать дальше →
Всего голосов 159: ↑153 и ↓6+147
Комментарии37

Веб-консоль на PHP

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

Как-то я уже писал о веб-консоли через которую можно управлять Git-ом. Теперь же я решил развить её и сделать универсальную консоль.

Читать дальше →
Всего голосов 43: ↑33 и ↓10+23
Комментарии43
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Казахстан
Дата рождения
Зарегистрирован
Активность