Как стать автором
Обновить
271
0
Владимир Казанов @VlK

Программист

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

Хабраподсветка или эксперименты в изолированном окружении Python

Время на прочтение4 мин
Количество просмотров5K
Протестировать свежую версию любимого фреймоврка. Запустить приложение со специфичным набором библиотек. Установить необходимые библиотеки по списку зависимостей. Как решить все эти задачи не затронув системные файлы? В этой статье речь пойдет об утилитах virutalenv и pip.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии11

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

Время на прочтение4 мин
Количество просмотров6.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-соединений).
Читать дальше →
Всего голосов 103: ↑97 и ↓6+91
Комментарии108

Где растут деньги (как мы зарабатываем на Клумбе)

Время на прочтение6 мин
Количество просмотров59K
Как и большинство людей, я долгое время не представлял, что в интернете можно зарабатывать. Два года назад пришел работать в интернет-компанию, и удивился — можно. К сожалению, про зарабатывание денег на интернет-проектах очень мало пишут. Людей, которые действительно зарабатывают в нашем интернете, мало, а зарабатывающих не на баннерах — единицы, и все молчат, как партизаны.

А время идет, опыт накапливается, хочется им делиться. Расскажу, как мы учимся зарабатывать на нашей Клумбе.


Читать дальше →
Всего голосов 138: ↑121 и ↓17+104
Комментарии82

MS Doloto: оптимизация загрузки Ajax-приложений

Время на прочтение1 мин
Количество просмотров1.1K
В MSDN DevLabs выложили программу Doloto, предназначенную для оптимизации любых Ajax-приложений. В соответствии со своим названием, Doloto отсекает код до необходимого минимума, так что приложение быстрее загружается клиенту и быстрее начинает выполняться.

Программа анализирует исходники и выделяет тот фрагмент кода JavaScript, который непосредственно необходим для инициализации программы. Профилирование функций осуществляется на клиентской машине через локальный прокси-сервер http://localhost:8888 во время исполнения Ajax-приложения в браузере. При этом все «ненужные» функции помечаются метками (таймстампы). Прямо на клиентской машине генерируется оптимизированный код Ajax-приложения, в котором «ненужные» функции заменяются маленькими заглушками. Этот код потом будет загружаться в фоновом режиме или по мере необходимости, уже после инициализации основного скрипта. Оптимизированный код сохраняется на жёстком диске клиентского компьютера. Таким образом, можно оптимизировать чужие приложения, даже не имея доступа к их серверам, см. Doloto FAQ.

Программку протестировали на популярных Ajax-интерфейсах и получили впечатляющий результат.
Читать дальше →
Всего голосов 38: ↑32 и ↓6+26
Комментарии25

Асинхронная загрузка javascript файлов. Ускорение и оптимизация процесса, увеличение производительности

Время на прочтение8 мин
Количество просмотров31K
Продолжаем цикл статей на тему построения сайтов (веб-приложений) ориентируясь на максимальное применение AJAX технологии. Зачастую, при работе сайтов и приложений использующих AHAH требуется вместе с подгружаемым HTML контентом догружать файлы скриптов, которые не использовались ранее на страницах сайта. Одним из моментов обработки догружаемого AJAX-ом контента является выделение из получаемого контента файлов скриптов, с последующим их применением к текущему документу (DOM). Благо, на данный момент практически все основные библиотеки умеют это делать. Однако, если копнуть глубже в реализацию процесса обработки догружаемых скриптов, то текущая ситуация совсем «не радужная». Не все хорошо известные библиотеки умеют это делать хорошо, а тем более оптимально. Давайте рассмотрим указанный процесс изнутри, разберем существующие проблемы и узнаем пути их решения.
Читать дальше →
Всего голосов 58: ↑52 и ↓6+46
Комментарии39

Видео уроки по бодибилдингу и фитнесу или расфасовка информации с помощью DLE

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

Хочу рассказать о своем первом мини-проекте, о сборнике видео по бодибилдингу и фитнесу.
image

Предыстория


После пары лет занятий в тренажерном зале и наблюдений во время тренировок за окружающими коллегами, были сделаны выводы, что очень многие допускают серьезные ошибки в технике выполнения упражнений, особенно новички. Я и сам поначалу допускал грубые и не очень ошибки, которые выливались в зря потраченное время, силы, деньги и некоторые травмы. Как этого избежать?
Читать дальше →
Всего голосов 177: ↑142 и ↓35+107
Комментарии70

zenity + wget = GUI wget

Время на прочтение5 мин
Количество просмотров8.9K
Топик посвящается тем, кто не любит качать тяжелые файлы браузером из файлообменников, а также для тех кто хочет получше понять работу zenity.

В Linux есть много различных качальщиков от консольных до тяжелых java-приложений и мой скрипт это не еще один новый качальщик, это всего лишь приятная для глаз (eye-candy) обертка для стандартного Wget. Хотя в потенциале он умеет все что умеет Wget, но я реализовал только самые его основные функции. Цель данного скрипта — запустить закачку через wget (отвязав ее от браузера) и показывать ход ее выполнения.
Читать дальше →
Всего голосов 73: ↑63 и ↓10+53
Комментарии62

Про Git на пальцах (для переходящих с SVN)

Время на прочтение8 мин
Количество просмотров279K
Год назад мы с командой решили перейти с SVN на Git. Зачем это было надо — писать не буду, т.к. на эту тему уже и так много написано. А хочу я описать типичные алгоритмы работы, понятные человеку, который долгое время пользовался SVN. Ниже — памятка, написанная для команды год назад, чтобы легче было мигрировать. Надеюсь, кому-нибудь пригодится.
Читать...
Всего голосов 179: ↑175 и ↓4+171
Комментарии100

Сравнение эффективности способов запуска веб-приложений на языке Python

Время на прочтение8 мин
Количество просмотров16K
Последнее время в области веб-разработок стал набирать популярность язык программирования Python. Однако, массовому распространение Python мешает проблема эффективного запуска приложений на этом языке. Пока, в большинстве случаев, это удел выделенных или виртуальных серверов. Модульные языки в отличии от монолитного в базовой функциональности php на каждый запрос подгружают как минимум runtime-библиотеку, а как максимум — ещё несколько десятков запрашиваемых пользователем модулей. Поэтому классический подход наподобие mod_php для Python и Perl не очень уместен, а держать приложение постоянно в памяти было дороговато. Но время движется, техника стала мощнее и дешевле, и уже достаточно давно можно спокойно говорить о постоянно запущенных процессах с приложением в рамках массового хостинга.

О чём тут

Время от времени, в сети появляются различные предложения как запустить приложение на Python. Например, недавно хостинг Джино уникально поправил mod_python и предложил хостинг именно с его помощью. Следом за ним, некий хостинг Locum вообще отринул mod_python с его безопасностью (создаётся впечатление, что суть самобытная безопасность — это единственная проблема АйТи на пути к нирване) и провёл победоносное тестирование modwsgi против fastcgi. Комьюнити же, судя по проведённому мною поиску, разрывается между mod_python и FastCGI. Причём, FastCGI обычно имеется ввиду тот, что идёт в поставке Django — flup. Являясь популярным хостингом Python-приложений, мы не смогли пройти мимо и решили внести свою лепту в эту священную войну.
Читать дальше →
Всего голосов 57: ↑49 и ↓8+41
Комментарии91

LVM — это просто!

Время на прочтение4 мин
Количество просмотров639K
Собственно, хочется просто и доступно рассказать про такую замечательную вещь как Logical Volume Management или Управление Логическими Томами.
Поскольку уже давно пользуюсь LVM-ом, расскажу что он значит именно для меня, не подглядывая в мануалы и не выдёргивая цитаты из wiki, своими словами, чтобы было понятно именно тем кто ничего о нем не знает. Постараюсь сразу не рассказывать о всяческих «продвинутых» функциях типа страйпов, снапшотов и т.п.
Читать дальше →
Всего голосов 58: ↑54 и ↓4+50
Комментарии75

Сверхплавное передвижение объектов

Время на прочтение2 мин
Количество просмотров7.1K
Иногда у веб-разработчиков возникает задача, которая требует плавного движения объекта по экрану. Это может быть строка загрузки, какой-то спрайт (например, машинки на клавогонках) или что-то ещё. Проблема возникает, когда сдвиг даже на одну точку кажется слишком резким и портит общее ощущение от происходящего. Как этого избежать? Использовать приёмы антиалиасинга.

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

Как это сделано?
Читать дальше →
Всего голосов 217: ↑212 и ↓5+207
Комментарии103

Распараллеливание задач в Linux

Время на прочтение2 мин
Количество просмотров11K
Потребовалось мне перекодировать некоторое количество видео-файлов. Для этого я написал следующий сценарий:

#!/bin/bash

recode() {
mencoder -o $2 $1 -ovc x264 -x264encopts bitrate=22000:keyint=50 -oac mp3lame -lameopts vbr=3:br=320 -fps 50
}
recode input/00108.mts 00108.avi
recode input/00109.mts 00109.avi
...
...


Казалось-бы все готово, но я заметил, что загружен только один процессор из двух, а это значит, что этот процесс можно ускорить, раза в два.
Читать дальше
Всего голосов 103: ↑95 и ↓8+87
Комментарии58

Автоматизация работы *nix системного администратора

Время на прочтение3 мин
Количество просмотров2.6K
О ssh и системных администраторах:

С давних пор *nix системные администраторы используют ssh для удаленного управления серверами.
Некоторые из них делают себе готовые наборы скриптов для обновлений софта, раскладки из репозитория, и так далее.
До определенных размахов бедствия можно обходить парк машин одну за одной. Однако рано или поздно парк машин вырастет до вполне себе солидных размеров и тогда простейшая раскладка по фронтэндам новых скриптов становится головной болью нескольких часов.

Вот здесь вот и начинается самое интересно:
одни системные администраторы запускают свои скрипты в несколько потоков, другие придумывают как отмазаться от части машин.

Однако теперь есть универсальное решение
Всего голосов 66: ↑59 и ↓7+52
Комментарии46

Теории мотиваций

Время на прочтение8 мин
Количество просмотров41K
image

На написание меня сподвигли пара топиков про теории мотивации X и Y.

В качестве предисловия

Проблема мотивирования труда является одной из самых острых проблем, стоящих перед современным российским предприятием. Как правило, отечественные руководители рассматривают систему мотивации как инструмент, базирующийся на персональных выплатах работнику.
Согласно принятым системам мотивации на отечественных предприятиях работник получает:
• Базовую заработную плату в зависимости от иерархического уровня управления;
• Премии и бонусы по результатам деятельности подразделения за отчетный период;
• Премии и бонусы по результатам личной деятельности работника (личные бонусы и доплаты за исполнение проектов, комиссионные, поддержка обучающихся, и т.д.);
• Премии и бонусы по результатам деятельности организации в целом (годовые бонусы);
Но подобные схемы теряют свою эффективность
Читать дальше →
Всего голосов 63: ↑53 и ↓10+43
Комментарии68

Я — специалист, или «водить машину и лечить людей умеет каждый»

Время на прочтение5 мин
Количество просмотров14K
Жена готовит яичницу на завтрак.
Вдруг на кухну вбегает муж:
— Осторожно, — он говорит, — ОСТОРОЖНО! Положи больше масла!
Боже мой! Ты жаришь очень много яиц сразу! СЛИШКОМ МНОГО!!!
Переверни их! ПЕРЕВЕРНИ ИХ ПРЯМО СЕЙЧАС!!! Нужно больше масла! О Боже мой!
ГДЕ нам взять БОЛЬШЕ МАСЛА? Сейчас они ПРИЛИПНУТ!!!
Осторожно! ОСТОРОЖНО! Я сказал — Осторожно!
Ты НИКОГДА меня не слушаешь когда делаешь яичницу!!! НИКОГДА!!!
Переверни их! БЫСТРО!!! Да ты что, психованная?!!!
Ты совсем спятила?!!! Не забудь посолить!
Ты всегда забываешь посолить! Используй СОЛЬ!
ИСПОЛЬЗУЙ СОЛЬ! С-О-О-О-О-ЛЬ!!!

Жена удивленно смотрит на мужа:
— Да что с тобой сегодня?!
Ты думаешь я не в состоянии приготовить элементарную яичницу?
Муж спокойно объясняет:
— Я хотел показать тебе, что Я испытываю, когда вожу машину…


Навеяно вот этим постом «95% сделано».
За четыре года работы фрилансером (переводчик и программист) у меня только один или два раза были недовольные заказчики.

Что для этого нужно делать
Всего голосов 129: ↑98 и ↓31+67
Комментарии95

3 типа рыночных сегментов для стартапов

Время на прочтение4 мин
Количество просмотров2.2K
В последнее время на Хабре возник всплеск интереса к созданию стартапов и их развитию. Многое было сказано про поиск инвестора и упаковку, чтобы подороже ему продаться, но про позиционирование и определение своего рынка, на мой взгляд, информации еще недостаточно.

Мы сейчас сами делаем стартап carbucks.ru (поиск автокредитов и специальных предложений при покупке машины), поэтому понимание потребностей клиентов для нас очень важно. В качестве основной модели исследования рынка мы решили использовать Customer Development от Стива Блэнка (Steven Blank), известного в Долине серийного предпринимателя, автора книги 4 Steps to the Epiphany. По ходу развития стартапа мы будем описывать совершаемую нами работу. Сегодняшняя статья – про определение своего рынка, первой вещи, которую стоит сделать при создании проекта.
Читать дальше →
Всего голосов 48: ↑39 и ↓9+30
Комментарии19

pv — маленькая, но очень полезная утилита

Время на прочтение2 мин
Количество просмотров83K
Один мой друг сказал по поводу pv следующее «Я админю семь лет, мне нужна была эта тулза десятки раз, а я даже не знал что она существует». В размышлениях над тем как заполучить инвайт на Харбе, я набрал в поиске pv. И ничего не нашел.
Читать дальше →
Всего голосов 290: ↑280 и ↓10+270
Комментарии94

Практический JS: проблемы innerHTML

Время на прочтение3 мин
Количество просмотров41K
Примечание: ниже перевод статьи Julien Lecomte «The Problem With innerHTML», в которой автор рассматривает проблемы при использовании метода innerHTML в современных браузерах и предлагает ряд советов, как ее можно избежать. Мои комментарии далее курсивом

Свойство innerHTML крайне популярно среди веб-разработчиков в силу своей простоты и удобства, поскольку оно совершено элементарно позволяет заменить HTML-содержание у конкретного тега. Можно также воспользоваться DOM Level 2 API (removeChild, createElement, appendChild), но использование innerHTML гораздо более простой и эффективный способ для модификации DOM-дерева. Однако, есть ряд проблем при использовании innerHTML, которых следует избегать:

  • Неправильная обработка свойства innerHTML может привести к атакам, связанным со script-инъекциями (XSS) в Internet Explorer, когда HTML-строка содержит вызов <script>, помеченного как отложенный: <script defer>...</script>
  • Выставление свойства innerHTML уничтожит все текущие вложенные HTML-элементы со всеми обработчиками событий, что потенциально может вызвать утечки памяти в некоторых браузерах.


Есть и еще несколько более мелких недостатков, которые тоже стоит упомянуть:

  • Нельзя получить ссылку на только что созданные элементы, вам приходится добавлять код для получения ссылки на них вручную (используя DOM API).
  • Вы не можете выставить innerHTML для всех HTML-элементов во всех браузерах (к примеру, Internet Explorer не позволяет выставить innerHTML для строки таблицы (tr)).


Читать дальше →
Всего голосов 35: ↑33 и ↓2+31
Комментарии50

Интервью с Саймоном Пейтоном-Джонсом, одним из создателей языка Haskell

Время на прочтение2 мин
Количество просмотров1.9K
Во время недавнего визите в Москву Саймона Пейтона-Джонса, одного из создателей языка Haskell, мне удалось взять у него небольшое спонтанное видеоинтервью, которое и предлагаю Вашему вниманию.

Читать дальше →
Всего голосов 40: ↑34 и ↓6+28
Комментарии17

25 советов по улучшению вашего кода jQuery

Время на прочтение15 мин
Количество просмотров29K
Это перевод статьи, написанной Jon Hobbs-Smith. Я счел ее довольно интересной и решил выложить в своем блоге, а также поделиться им с хабрапользователями, также как и я заинтересованными в библиотеке jQuery. Перед тем как начать хочу отметить, что написана она (как и переведена) далеко не экспертом в jQuery, поэтому если вы найдете в ней ошибку, пожалуйста, сообщите. Итак, начнем.
Читать дальше →
Всего голосов 97: ↑86 и ↓11+75
Комментарии78

Информация

В рейтинге
Не участвует
Откуда
Bromley, England - London, Великобритания
Дата рождения
Зарегистрирован
Активность