Pull to refresh
60
0.1
Александр @la0

User

Send message

Горячая замена кода (code hot swapping) в РНР

Reading time10 min
Views3K
Погода за окном просто требует чего-то горяченького, поэтому воспользовавшись возможностью что-то по исследовать в свободное время, я решил подумать — а можно ли не останавливая скрипт, подменить функцию, которая выполняется? С таким требованием я встретился чуть ранее, при разработке нашего стартапа. У нас был один из внутренних серверов, который заведовал всеми действиями между пользователями в реальном времени. Это обычный РНР-демон-роутер, который обрабатывал запросы от клиентских запросов (внутри сервера), но была одна сложность — в случае, когда я что-либо изменял в коде сервера или обработчиков отдельных команд, демон приходилось перезагружать, что означало отключение текущих клиентов и потеря информации о состоянии сервера (этот вопрос решаемый, конечно). То же самое было в случае ошибки в коде — все подключенные пользователи сразу это чувствовали на себе (хорошо, что все они такие же разработчики, а не реальные клиенты). Можно ли этого избежать?

Конечно можно, например, отказавшись от скриптов-демонов, как мы и сделали. Однако это проблему не сняло, просто переместило ее в другую плоскость. Ведь остались другие сервисы-демоны, которые также должны работать непрерывно, хоть их значимость меньше, однако перезагружать каждый раз не очень то хочется. Поэтому решил я поискать возможность на лету подключать новый код и сразу его исполнять. Минимальным кодом будет функция, но вполне возможно подключать и методы классов.
Читать дальше →
Total votes 38: ↑27 and ↓11+16
Comments59

Тюнинг nginx

Reading time8 min
Views96K
Статья написана по материалам моего доклада на CodeCamp 2009.

Для многих из нас настает тот долгожданный день, когда аудитория сайта начинает стремительно расти. Каждое утро мы, затая дыхание, смотрим на графики google analitycs и расплываемся в улыбке, когда взят рубеж в очередную тысячу посетителей в день. Как правило, рост посещаемости не совпадает с ростом технической базы и сайт начинает тормозить. Тут в игру вступает сисадмин...

У любого проекта всегда есть что оптимизировать: можно почитать советы по оптимизации на webo.in, установить eaccelerator, memcache, проиндексировать поисковые поля в базе данных. Я предполагаю, что все это уже проделано, а сайт по прежнему тормозит.

Пришло время оптимизировать nginx...

Читать дальше →
Total votes 102: ↑100 and ↓2+98
Comments69

Использование 7zip для бэкапа данных. Продолжение

Reading time8 min
Views14K
Статью публикую по просьбе знакомого, не имеющего пока аккаунта на Хабре, если у кого есть лишний инвайт, — просьба поделиться evgeny.sementsov [песик] gmail.com

Идея написать свои «напильниковые труды» родилась после прочтения статьи об использовании 7Zip для бэкапа данных.
Нужно сказать, что идея «изобрести велосипед» пришла не просто так. На начальном этапе все-таки планировалось использование внешнего средства.
Были следующие требования, рожденные опытом:
  • бесплатность
  • копирование в фоновом режиме, незаметно для пользователя
  • возможность полноценно работать на компьютере во время выполнения бэкапа (т.е. выполнение бэкапа не должно критически сказаться на производительности)
  • возможность гибкой настройки целей копирования (от файлов, директорий до реестра), пользователей, которым нужно делать бэкап
  • возможность для пользователя управлять выполнением бэкапа (т.е. прервать, — это в крайнем случае), возможность для администратора узнать — целый ли бэкап.
  • «умное бэкапирование», т.е. возможность на ходу (при указании четких критериев) решать что копировать, а что нет. Например, не копировать профиль The Bat!, если есть профиль Thunderbird.
  • возможность управлять частотой бэкапов для различных пользователей
  • распределение времени бэкапа по рабочему времени, дабы не забивать канал на сервере бэкапов
  • возможность управлять количеством бэкапов, дабы не заполнить сервер бэкапов полностью
  • легкость нахождения нужного бэкапа и извлечения нужных файлов

Читать дальше →
Total votes 46: ↑38 and ↓8+30
Comments20

Linux Mint: продолжаем разговор

Reading time3 min
Views34K
Linux Mint
Всем доброго времени суток.
Сегодня исполняется ровно неделя с тех пор, как я сменил Windows 7 на Linux Mint. За это время я открыл для себя кучу возможностей этой системы. Но в данной статье речь пойдет не о возможностях, а о проблемах, которые у вас могут возникнуть в начале адаптационного периода. Ориентирована статья на тех, кто перешел на Linux совсем недавно. А если Вы только собираетесь это сделать, то статья вам тем более пригодится.

Нажимая сюда, вы соглашаетесь дочитать статью до конца!
Total votes 129: ↑95 and ↓34+61
Comments223

Склад бесплатных иконок

Reading time1 min
Views164K
Прошелся по закладкам и образовалась такая толстенькая подборочка ресурсов с бесплатными и качественными иконками, с которой спешу поделиться с тобой %username%!

Iconfinder


image


Читать дальше →
Total votes 168: ↑151 and ↓17+134
Comments39

Mini-FAQ по Perl (Частые вопросы, ЧаВо)

Reading time4 min
Views19K
Меня часто спрашивают, как я учил Perl — какие книги читал, какие сайты посещал и так далее. Многие считают, что Perl имеет сложный синтаксис, и потому не хотят или бояться его учить. В этом FAQ я хотел бы поделиться своим мнением относительно языка Perl.
Читать дальше →
Total votes 71: ↑58 and ↓13+45
Comments182

«Делаем стартап гостеприимным» или «Как использовать OpenID на своем сайте»

Reading time3 min
Views3.4K
Как использовать OpenID на своем сайте
Уверен, вам не раз подалась на глаза аббревиатура OpenID. Вполне возможно у вас сложилось мнение, что это эдакая модная штуковина, о поддержке которой все чаще заявляют различные популярные проекты. По большому счету так и есть, но зачем эта технология на самом деле нужна? Предположим, вы заядлый блоггер, у вас имеется учетная запись на wordpress.com, но случилось вам прочесть сообщение в чужом дневнике и возникло непреодолимое желание оставить автору комментарий. Но вот незадача – чужой дневник оказался на livejournal.com. Неужели только для того, чтобы оставить комментарий вам придется регистрироваться на «вражеском» блог-хостинге?!
Читать дальше →
Total votes 53: ↑51 and ↓2+49
Comments100

Защищаемся от HTTP DDoS и прочих Хабраэффектов

Reading time5 min
Views10K
Простой способ защиты от HTTP DDoS — включить syn-cookies и заблокировать подонков. Но что делать если атакует 5к-10к хостов да еще и с динамическими IP? Тут нам на помощь придет frontend-backend архитектура c промежуточным кэшированием! Почему с промежуточным кэшированием? А потому что в моем случае от шквала запросов от frontend'а backend умирал унося за собой систему.
Читать дальше →
Total votes 160: ↑152 and ↓8+144
Comments55

Основы декларативного программирования на Lua

Reading time12 min
Views49K
Луа (Lua) — мощный, быстрый, лёгкий, расширяемый и встраиваемый скриптовый язык программирования. Луа удобно использовать для написания бизнес-логики приложений.

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

Луа — мультипарадигменный язык программирования. Одна из сильных сторон Луа — хорошая поддержка декларативного стиля. В этой статье я кратко опишу базовые декларативные средства, предоставлямые языком Луа.
Читать дальше →
Total votes 69: ↑64 and ↓5+59
Comments18

10 способов побороть проблемы в IE6

Reading time3 min
Views2.6K

1. Используйте DOCTYPE


Лучше всегда прописывать доктайп в заголовке каждой html-страницы, причем, строгий режим рекомендуется:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

для XHTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

от себя добавлю, что недопускайте никаких сторонних символов перед доктайпом. Ни пробелов, ни переносов строки — иначе появятся странные поля у body и html
Читать дальше →
Total votes 133: ↑88 and ↓45+43
Comments100

Вращение объектов в 3D

Reading time2 min
Views5K
Приветствую тебя, %username.
image



Сегодня я хочу продемонстрировать возможности замечательного IMagick, и показать как с легкостью можно получить анимированное 3D gif изображение. Это может пригодиться, например в магазинах, которые продают мобильные телефоны, и хотят продемонстрировать покупателям телефон в 3D, без использования Flash.


Читать дальше →
Total votes 102: ↑79 and ↓23+56
Comments37

Как защитить сервер от посетителей из нежелаемых стран

Reading time3 min
Views9.9K
Ко мне очень часто поступают довольно интересные и нестандартные задачи по настройке серверов.

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

В моем случае — надо было заблокировать CN полностью, на RU отдавать полный канал, а на остальные страны — в два раза меньше.

Разумеется, вбивать полностью все подсети руками неудобно, да и они часто меняются. Логичнее всего было сделать это с помощью geoip.
Решение на уровне ядра и на уровне приложения
Total votes 46: ↑41 and ↓5+36
Comments30

Вычисляем плохих ботов

Reading time1 min
Views2.8K
image
Это ничуть не руководство к действию, а только лишь некоторые мои умозаключения, которые не являются истиной в последней инстанции.
Итак, давайте рассмотрим ситуацию, когда по сайту лазят боты и занимаются там разными неприглядными делами: сканируют, спамят через формы, грабят контент и так далее. Но по сайту могут пройтись и хорошие роботы — с поисковых систем, которых обижать нельзя. Необходимо определить плохих ботов и заблокировать их.

Итак, ряд простых, но полезных советов
Total votes 78: ↑62 and ↓16+46
Comments52

Выравнивание полей формы с помощью CSS

Reading time2 min
Views164K

Задача


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

forms_1

Читать дальше →
Total votes 230: ↑203 and ↓27+176
Comments241

Information

Rating
3,479-th
Location
Россия
Registered
Activity