Search
Write a publication
Pull to refresh
0
0

User

Send message

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

Reading time4 min
Views6.8K
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-соединений).
Читать дальше →

День знаний — Рекрутинг студентов

Reading time3 min
Views2.5K
Многие, даже средние компании, зачастую не прочь заняться выращиванием специалистов с нуля. Встает вопрос о том, как проводить отбор. При должной рекламе по окрестным университетам и хорошей репутации компании, желающих может оказаться достаточно много. А проводя традиционное интервью, нацеленное на проверку практических навыков, не всегда можно корректно оценить главные качества, которые хочется получить от стажера — умение учиться и желание работать.

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

Я хочу поделится с хабрасообществом опытом проведения интервью и списком вопросов. Cвежепринятые сотрудники еще стесняются критиковать старожилов, надеюсь получить какие-то возражения, или альтернативные идеи по механизму отбора здесь.
Читать дальше →

Черная дыра рынка в диапазоне стоимости сайтов?

Reading time3 min
Views16K
На сегодняшний день диапазон цен на рынке веб-сайтов колеблется от 500 рублей до 50 000 евро и выше. Давайте разберемся, сколько стоит сайт и почему. Простой расчет поможет убедиться в справедливой стоимости профессионально выполненного сайта и наведет заказчиков на несколько полезных жизненных выводов. Выводы навеяны опытом работы и отзывами наших клиентов. Интервалы цен приведены, по большей части, для региона «Центр».
Читать дальше →

Улучшаем формы или Веб-Восемь-Ноль-Сто-Три

Reading time13 min
Views1.4K
Итак, мы выбрали браузер вместо отдельно стоящего толстого клиента. Пользователь очень хочет вводить данные. Однако, обычные формы плохие. Потому, что:

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

Учебник по языку программирования Python (хабраиндекс)

Reading time1 min
Views314K

Серия статей «Основы Python»


I, Начало
II, Строки
III, Списки, кортежи, файлы
IV, Генераторы списков
V, Определение функций, основы
VI, Расширенное определение функций

Об основах языка Python в сжатой форме

Продвинутый уровень


Сила и красота декораторов Короткий экскурс в метапрограммирование.
Итерируем все и вся Специфика циклов в Питоне.
Как я учился работать с XML
Консервация объектов в Python Использование модуля Pickle.
Memoization в Python Оптимизация работы программ.
Простейшее рисование с помощью PIL
Regexp и Python: извлечение токенов из текста
Как писать маленькие приложения на python с графическим интерфейсом (библиотека Qt).

http://netsago.org/ru/docs/1/12/
Одеваем скрипты Python с помощью EasyGui (добавляем простой диалоговый интерфейс)

http://djbook.ru/
Учебник по Django (Python-фреймворк для веб-приложений)

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

10 шагов к постижению форм в Друпале

Reading time1 min
Views3K

Этот урок создан специально для начинающих и средне-продвинутых Друпал-разработчиков. Он должен быстро дать понятие об азах Forms API, а также показать возможность создаия более сложных вещей на примере пошаговых форм.

Когда я только начинал подготовку этого урока, у меня был соблазн поставить под каждым куском кода ссылку для скачивания готового примера, но в послествии, я отказался от этого. Будет намного полезнее, если вы сами будете вставлять код в свои модули, тестируя и набираясь опыта в реальных условиях.

И прежде чем начать, я расскажу вам как все-таки заставить любой из этих кусков кода работать. Предположим, вы уже имеете установленный тестовый сайт на Друпал 6. Вам прийдется проделать следующие действия:
  1. Создать новую директорию в sites/all/modules, например my_module
  2. Создать файл my_module.info в директории my_module, содержащий это:
  3. Создать файл my_module.module. Полностью скопировать отсюда первый пример и вставить в my_module.module.
  4. Включить модуль «My module» на странице модулей (admin/build/modules).
  5. Перейти на страницу my_module/form для запуска кода.
  6. Далее вам предстоит провести для каждого примера, полную замену содержимого my_module.module на код последующего примера. Не забывайте после этого переходить на страницу my_module/form для того, чтобы увидеть результаты своей работы.

А дальше огромная куча кода »

Drupal как MVC Framework

Reading time3 min
Views6.3K
«Архитектура программного обеспечения» — эти слова обычно пугают большинство веб-разработчиков фрилансеров. 3-Tier, MVC, Singleton, Factory… «Стойте! прекратите! зачем всё усложнять?» — сказали бы вам в ответ, — «Вот есть же, например, Drupal — темку сверстали, модули докрутили-настроили и в принципе сайт готов.» Действительно, CMS Drupal предоставляет отличную платформу для быстрой разработки, требуя при этом минимальное количество вложенных усилий.

Многие наверняка слышали о таком понятии, как «идеология Drupal» — это как раз то, благодаря чему данная CMS стала такой удобной и эффективной платформой. Но возможно немногие догадываются, что в основе упомянутой идеологии лежит широко известный паттерн MVC, или Model-View-Controller.

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

Создание сайта из готовых компонентов на примере сайта заказа еды в офис

Reading time14 min
Views8.7K
В окрестностях нашего офиса нет приличного общепита, поэтому обеды нам привозят на заказ из одного кафэ. Заказ осуществляется за день (на понедельник заказ делается с пятницы), по телефону, с перечислением всех блюд и их количества (в случае если заказ не изменился относительно вчерашнего достаточно просто сказать это). Как компания, занимающаяся разработкой ПО, преимущественно веб, мы до недавнего времени жили по принципу «Сапожник без сапог», и весь учет заказов велся ответсвенным за заказ еды человеком на листочке, в случае изменения заказа нужно было писать письмо этому ответственному человеку, а он уже пересчитывал общий заказ.

Выкроив немного свободного времени в перерыве между проектами реализовал (именно реализовал, а не написал — почему именно так, расскажу немного ниже) систему для заказа еды. За основу, как нетрудно догадаться исходя из тематики блога, была взята CMS Drupal, которая является моим основным инструментом уже около полутора лет.

Цели данного топика:
  • Показать новичкам на довольно простом примере, как создается сайт невысокой сложности на CMS Drupal
  • Кратко расказать про несколько основных модулей — как правило они применяются в 90% проектов на друпале
  • Показать как можно собрать сайт на друпале из готовых компонентов, не написав при этом ни одной строчки кода (на самом деле будет пара строк кода, но немного не в том виде, как он обычно пишется =))


Итак, что должно быть реализовано в проекте:
  • Меню — список блюд, разделенных на категории, с возможностью описания блюд
  • Индивидуальные заказы — пользователь может сделать и заказ, просмотреть его содержимое и изменить
  • Сводный заказ — список всех заказаных пользователями блюд с указанием их количества
  • Возможность делиться впечатлениями о блюдах — тут просто возможность комментирования и рейтингования

Поехали

Расширения для Firebug

Reading time2 min
Views4.1K
Последнее время появляется все больше и больше различных дополнений для Firebug'a. Решил сделать краткое описание для этих плагинов.
Здесь были описаны только 4 плагина.
Постараюсь описать все известные плагины для Firebug'a
Статья на украинском языке
Читать дальше →

Simpla — движок для великолепных интернет-магазинов

Reading time7 min
Views14K


Последние 5 лет я создавал интернет-магазины. Много магазинов. Хороших и разных. Я был сам себе программистом, верстальщиком, дизайнером и менеджером.

Нельзя быть профессионалом в нескольких областях сразу, скажете вы. И, наверное, будете правы. Я не профессионал в дизайне и окучивании клиентов. Но интерес к этим областям и необходимость соответствующей деятельности дали мне кое-что. Тысячи вопросов за техподдержкой, бесконечные консультации клиентов и их контент-менеджеров, изучение чужих целевых аудиторий, общение с программистами, дизайнерами и верстальщиками от заказчиков подарили мне неплохой опыт. И главное — опыт не в одной области, а опыт во всех гранях процесса создания интернет-магазина. От программирования и дизайна, до общения с клиентом и анализа его бизнес-процессов.

Обычная история


Думаю, многим знакома ситуация, когда после создания сайта, на протяжении нескольких месяцев вам звонят с вопросом «как вставить картинку на сайт» сначала заказчик, потом его секретарша, потом новая секретарша, потом менеджер по продажам (секретарша в отпуске). А потом звонит их новый «компьютерщик», чтобы узнать какой файл ковырять, чтобы вставить красную бегущую строку справа от логотипа. И так далее, и тому подобное.

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

Используем любой шрифт с Javascript.

Reading time3 min
Views25K
Все мы знаем прекрасные библиотеки sIFR3 и FLIR, которые на лету помогают использовать любой шрифт на веб-страницах.
Правда, с моей точки зрения, их использование (а именно установку и настройку) нельзя считать легким трудом.

Сегодня я расскажу о библиотеке Typeface.js, которая, как видно из названия, работает на чистом JavaScript.

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

Вместо тэга <noscript> стили .script и .noscript в CSS

Reading time1 min
Views5K
Иногда, крайне редко нужно скрыть, либо показать часть тегов в том случае если javascript включён, либо выключен.
Конечно, есть <noscript> но он реализует только часть логики — он скрывает часть кода если javascript включён. Скрыть часть кода, если javascript выключен стандартной возможности нет.
Точнее есть возможность добавить некий код при помощи скрипта, но не совсем то.
Что можно сделать вместо этого?

Стенсилы для проектирования интерфейсов

Reading time2 min
Views19K
Продолжая выкладывать на блоге Amazing Development всё, что может понадобиться компаниям или специалистам начать заниматься проектированием и работами над повышением юзабилити своих продуктов и проектов, опубликовал коллекцию стенсилов. Стенсилы – примитивы используемые для графического представления чего-либо. Ниже представлены стенсилы для программ Microsoft Visio, Adobe InDesign и OmniGraffle. Если Вы знаете ссылки на другие стенсилы, которые можно использовать в проектировании, то сообщите о них в комментариях.

Microsoft Visio


Стенсилы Nick Finck


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

Про правильную посадку в кресле

Reading time5 min
Views76K
Навеяно постами про подлокотники. Это сборник разных советов, которые я потихонечку собирал в записную книжку, когда впервые столкнулся с проблемами, которые может вызвать неправильная посадка в компьютерном/водительском кресле и дополнял собственным опытом и знаниями.

Что есть правильная посадка в кресле?

Это такое положение, которое решает две задачи: обеспечение максимального удобства для работы и обеспечение физиологически удобной позы, препятствующей возникновению боли в спине.

Пара слов о физиологии: главная задача вашего организма — это обеспечение подвижности и работоспособности «здесь и сейчас». Почти всегда — с жертвами в будущем. Что же происходит, когда мы сидим в кресле? Современный офисный человек физически плохо развит (это правда), поэтому долгая напряженная поза (голова вытянута вперед, глаза вглядываются в монитор, спина скруглена и перекошена вбок, потому что одна рука лежит безвольно, а вторая активно шевелит мышкой) приводит к тому, что его спинные мышцы не могут удерживать правильное положение позвоночника больше чем полтора-два часа — они просто расслабляются и отпускают связочно-суставный аппарат. Чтобы не произошло травмы — организм включает экстренный режим сохранения подвижности и перераспределяет вертикальную нагрузку так, чтобы компенсировать ее изгибом самого позвоночника и натяжение связок и мелких мышц.

Это не страшно, это нормально, но проблема в том, что мы не замечаем смены условий и продолжаем сидеть в такой позе еще час, два и больше. Как результат — нагрузка приходится не на большие и сильные мышцы, а на суставы, сухожилия и множество мелких мышц, что в будущем гарантировано приводит к целому букету болезней с общим корнем «хондрозы».

Решение — правильная поза. Как ее достичь? Причем совершенно штатными средствами, без адских подлокотников или кресел за полторы тысячи евро?

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

Сравнение средств проектирования

Reading time3 min
Views92K

Учёба в универе и работа наложили свой отпечаток, оказалось, что нужно не только «кодить», но и уметь проектировать те или иные «задачи». Знакомство моё с UML началось с State Machine(конечный автомат, если по русски и приближённо).
Читать дальше →

Используем GPS в Ubuntu

Reading time3 min
Views24K
Многим сисадминам нравится телефон нокиа Е61. Для своего времени, напичканый разными форматами связи, помимо стандартного GSM/UMTS, ИК, блютус и WiFi, (push-to-talk). QWERTY-клавиатура (полная). Большой яркий экран. Качественная сборка и металлическая спинка. Было в телефончике и несколько минусов, некоторые считают их несущественными. Итак: нет камеры, большой размер, нет FM, и нет GPS. Кроме размера, все остальные проблемы решаемы. Для GPS я приобрел nokia LD-3W.
Дальше

Деревья, двоичные деревья

Reading time1 min
Views9.2K

5й выпуск медленно, но двигающегося вперед видеопроекта Computer Science Student. На этот раз — небольшая «лекция» о такой структуре данных, как деревья.
Видео доступно в HD-качестве, но, как всегда, придется идти на vimeo.com.

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

ASP.NET MVC + jQuery = рай для AJAX

Reading time3 min
Views50K
Я никогда раньше не имел дело ни с одним AJAX Toolkit от Microsoft, но недавно у меня появилась необходимость добавить картографический функционал к проекту, который я веду. Нам нужно было, чтобы у пользователей появилась возможность перемещать маркер по карте, а у нас получать его новые координаты на сервере. Очевидно, что нам для этого придется использовать AJAX в каком-либо виде. Сегодня я вам покажу насколько просто использовать связку ASP.NET MVC на сервере и jQuery на клиенте. Так как jQuery теперь включен в поставку ASP.NET MVC, то больше нет оправдания его не использовать.
Читать дальше →

UNetbootin — Universal Netboot Installer

Reading time1 min
Views17K

UNetbootin позволяет устанавливать различные Linux / BSD дистрибутивы на раздел жёсткого диска или флешку. А также создание загрузочных образов Parted Magic, Super Grub Disk, Backtrack, NTPasswd, Smart Boot Manager (SBM), FreeDOS, и других

скачать для windows

скачать для linux

unetbootin.sourceforge.net
www.teamteabag.com/2008/08/13/howto-linux-from-usb-the-easy-way-with-unetbootin

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Registered
Activity