Pull to refresh
64
0
Андрей 'virus' Янцен @zvirusz

Backend developer

Send message

Настройка nginx

Reading time5 min
Views294K
Тема правильной настройки nginx очень велика, и, боюсь, в рамки одной статьи на хабре никак не помещается. В этом тексте я постарался рассказать про общую структуру конфига, более интересные мелочи и частности, возможно, будут позже. :)

Неплохой начальной точкой для настройки nginx является конфиг, который идёт в комплекте с дистрибутивом, но очень многие возможности этого сервера в нём даже не упоминаются. Значительно более подробный пример есть на сайте Игоря Сысоева: sysoev.ru/nginx/docs/example.html. Однако, давайте лучше попробуем собрать с нуля свой конфиг, с бриджем и поэтессами. :)
подробности
Total votes 88: ↑78 and ↓10+68
Comments53

Vanadium: семантическая валидация на клиенте

Reading time1 min
Views1.3K
Логотип Vanadium

Vanadium — новый валидатор для клиента, который позволяет вам определять логику семантической валидации через атрибут класса (class). На главной странице проекта есть такие примеры, как:
<input class=":required" type="text" />
<input class=":integer" type="text" />
<input class=":length;4" type="text" />
<input class=":min_length;4" type="text" />
<input class=":format;/^(vanadium)+$/i" type="text" />
<input id="pass" class=":ajax;/username_checker/check.json" type="text" />
<input id="pass" class=":email" type="text" />
<input id="pass" class=":required" type="password" /><input class=":same_as;pass" type="password" />


* This source code was highlighted with Source Code Highlighter.


Примечание от переводчика: Также поддерживается декларация правил валидации посредством JSON-определений и проверка на сервере (AJAX). Требуется jQuery.

Total votes 42: ↑31 and ↓11+20
Comments26

phpFastCGI: настоящий FastCGI для PHP

Reading time2 min
Views10K
— Добрый день. Вы наверняка уже наслышаны о протоколе FastCGI, он связывает Веб-сервер и сервер приложений, его реализации есть во множестве языков. Однако, в PHP реализация FastCGI до недавних пор была представлена лишь патчем PHP-FPM, который фактически не давал прироста производительности перед mod_php, поскольку он, вопреки идеологии FastCGI, перезапускает скрипт каждый раз заново. Идеология FastCGI подразумевает единовременную инициализацию приложения при запуске (подгрузку нужных классов, соединение с базой данных, и т.д.), и выполнение запросов один за другим.
phpFastCGI — правильная реализация FastCGI, которая позволяет добиться немыслимой производительности.
Разработка идёт очень активно, и новые фичи появляются очень быстро.
Страничка проекта — phpfastcgi.googlecode.com
Пример простого приложения — code.google.com/p/phpfastcgi/source/browse/trunk/example.php
В действии пример можно увидеть здесь — ya-tv.ru/phpfastcgid (может переодически лежать, это нормально, идёт тестирование). Страничка-пример легко выдерживает 5,000 запросов в секунду всего на 20-ти воркерах.
Проект пока в стадии тестирования и живёт только в SVN.
Приглашаю всех заинтересовавшихся принять в нем посильное участие!
$ svn checkout phpfastcgi.googlecode.com/svn/trunk phpfastcgi

Читать дальше →
Total votes 80: ↑74 and ↓6+68
Comments197

Азбука WEB-разработчика

Reading time4 min
Views13K
Небольшой список, самых, на мой взгляд, полезных сайтов для любого WEB-разработчика, интересующегося сферой веб дизайна, верстки и программирования. Думаю каждый среди этого списка найдет для себя сайты, которые надолго войдут в его ленту RSS.

AA List Apart




A List Apart содержит лучшие советы и мнения от лидирующих умов индустрии.
Читать дальше →
Total votes 140: ↑132 and ↓8+124
Comments47

Делаем собственную баннерную крутилку

Reading time4 min
Views4.9K
Делаем функционал, который позволит:

1. В одном месте хранить все баннеры
2. Выставлять страницы на которых будет показан баннер
3. Соблюдать лимит показа
4. Указывать для баннера адрес назначения (URL)

Будет точно работать на 0.9.6.3 (на версиях выше ничего не предвещает проблем), по времени интеграция должна занять около получаса, в зависимости от вашей подкованности при работе с MODx.

Необходимы начальные навыки работы с MODx и понимание терминов: сниппет (snippet), TV в контексте этой CMF.
Читать дальше →
Total votes 7: ↑4 and ↓3+1
Comments7

Список полезных инструментов для CSS разработчика

Reading time8 min
Views71K
Это не попытка создать список всех существующих инструментов для CSS разработки. Только некоторые, наиболее полезные были отобраны и размещены в соответствующих категориях.


Чтобы инструмент был по-настоящему полезен, у него должна быть хорошая документация и дружелюбный интерфейс. К сожалению, некоторые инструменты в списке не полностью попадают под данные критерии. Если кто-то знает лучшие альтернативы с более дружелюбным интерфейсом и большей функциональностью, пишите в комментариях.
Читать дальше →
Total votes 179: ↑170 and ↓9+161
Comments65

PHP_Exceptionizer: преобразование E_NOTICE в исключения (Exception)

Reading time2 min
Views2.7K
Очень простая, но полезная библиотека PHP_Exceptionizer позволяет преобразовывать нотисы (E_NOTICE), предупреждения (E_WARNING) и т. д. в исключения PHP.

// Где-то в начальном коде инициализации скрипта.
error_reporting(E_ALL);
if (<is debug mode active>) {
    $exceptionizer = new PHP_Exceptionizer(E_ALL);
    // И оставьте эту переменную, чтобы она не удалялась до окончания 
    // скрипта. Удаление переменной вызовет отключение PHP_Exceptionizer.
}
...
// Далее можно ловить нотисы как исключения:
try {
    echo $undefinedVariable;
} catch (E_NOTICE $e) {
    echo "Notice raised: " . $e->getMessage();
}
...
// Если вы ловите E_WARNING, то поймаете и E_NOTICE тоже:
try {
    echo $undefinedVariable;
} catch (E_WARNING $e) {
    echo "Warning or better raised: " . $e->getMessage();
}
...
// А можно и не ловить, тогда нотис вызовет завершение программы.
echo $undefinedVariable;

Читать дальше →
Total votes 68: ↑49 and ↓19+30
Comments97

Список полезных инструментов для php разработчика

Reading time10 min
Views148K
PHP один из самых широко используемых языков для создания вебсайтов. PHP фреймворки, такие как Zend, CakePHP, CodeIgniter и т.д и open source классы и библиотеки упростили разработку.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
Читать дальше →
Total votes 214: ↑200 and ↓14+186
Comments131

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

Reading time8 min
Views279K
Год назад мы с командой решили перейти с SVN на Git. Зачем это было надо — писать не буду, т.к. на эту тему уже и так много написано. А хочу я описать типичные алгоритмы работы, понятные человеку, который долгое время пользовался SVN. Ниже — памятка, написанная для команды год назад, чтобы легче было мигрировать. Надеюсь, кому-нибудь пригодится.
Читать...
Total votes 179: ↑175 and ↓4+171
Comments100

Full Hierarchy — иерархические структуры в базах данных

Reading time5 min
Views16K
Здравствуйте. В этой статье я хотел бы написать про один очень интересный способ хранения иерархических структур в базах данных, не относящийся при этом к общепринятым и общеизвестным трём (Adjacency List, Nested Set, Materialized Path). Я не встречал в интернете упоминания о нём, о чём очень удивлен, ведь, по моему мнению, — это лучший и единственный способ хранить иерархические структуры. При разработке console-like форума я воспользовался именно этим способом, о чём ни на грамм не жалею. Это авторская статья и ни одно предложение не было вставлено метотодом копипаста.

Под катом способ, который я назвал Full Hierarchy
Total votes 74: ↑65 and ↓9+56
Comments108

Иерархические структуры данных и Doctrine

Reading time15 min
Views82K

Введение



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

В первую очередь, это связано с тем, что реляционные базы не приспособлены к хранению иерархических структур (как, например, XML-файлы), структура реляционных таблиц представляет из себя простые списки. Иерархические же данные имеют связь «родитель-наследники», которая не реализована в реляционной структуре.

Тем не менее, задача «хранить деревья в базе данных» рано или поздно возникает перед любым разработчиком.

Ниже мы подробно рассмотрим, какие существуют подходы в организации хранения деревьев в реляционных БД, а также рассмотрим инструментарий, который нам предоставляет ORM Doctrine для работы с такими структурами.
Читать дальше →
Total votes 64: ↑63 and ↓1+62
Comments41

PHP Manual с комментариями пользователей в chm

Reading time3 min
Views5.6K
Навеяно вот этим: Похапе мануал обновился

Мне лично удобней пользоваться CHM версией руководства по PHP — быстрый поиск удобен, а интернет не всегда доступен. Но у официальной справки нет встроенных пользовательских комментариев, которые зачастую бывают очень полезны. Ранее они были в Extended-версии руководства, но сейчас она уже не поддерживается.

Полазив в гугле, я обновленной версии руководства с комментами не нашел. Пришлось сделать собственную, и этот процесс может повторить любой желающий.
Как именно?
Total votes 36: ↑34 and ↓2+32
Comments33

Работаем с банковскими (рабочими) днями

Reading time1 min
Views15K
Полгода назад при разработке системы финансового учета поднялся вопрос о идентификации банковский дней. Произошло это в следующем контексте — при выставлении счета отводится некий промежуток времени (в банковских днях) по истечению которого надо трубить тревогу, если счет еще не оплачен.
Читать дальше →
Total votes 34: ↑27 and ↓7+20
Comments42

Phemto и Паттерн Dependency Injection. Часть 1

Reading time6 min
Views24K
Я не встречал хорошего описания паттерна Dependency Injection применительно к PHP.

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

Я вспомнил еще об одной библиотеке для DI, Phemto. Ее автор, — Маркус Бэйкер, создатель SimpleTest. К сожалению на сайте содержится краткая и невнятная справка. тем не менее, проект развиавется, а внутри дистрибутива лежит статья с крайне хорошим объяснением про DI, ну и руководством конечно. Phemto, — очень миниатюрный проект, состоящий из трех не очень больших файлов.

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

Читать дальше →
Total votes 41: ↑38 and ↓3+35
Comments31

GIT для пользователей subversion (и др scm)

Reading time4 min
Views6.2K
Git это еще одна системы для управления исходным кодом, аналогичная subversion, cvs и другим. Почему аналогичная, а не «новая», «быстрая» и тп? SCM (source code management) прежде всего инструмент, который позволяет выполнять операции необходимые для одного разработчика и команды в целом. При каждый инструмент имеет свои достоинства и недостатки.

В этой статье мы сосредоточимся на основных функциях, без сравнительного анализа (чтобы не повторять миллионы заметок в web). И покажем пример, как применять git при работе с subversion.
Читать дальше →
Total votes 76: ↑71 and ↓5+66
Comments53

Домашняя бухгалтерия онлайн + оффлайн

Reading time2 min
Views5.7K
Как-то раз 4 года назад, исключительно для собственной нужды, сделал я сервис для ведения домашней бухгалтерии в интернете. Вот думаю, пускай жена из дома траты вносит, а я с работы. Может хоть так буду видеть сколько денег сейчас в семье осталось и куда они уходят.

Сделал, да и выложил в общий доступ, тогда ещё под доменом tinylife.ru, в довесок к личным сервисам типа закладок, дневников и т.п., на которые я возлагал надежды. Выкладываю, а сам про себя думаю — неужто найдутся люди, способные вести домашнюю бухгалтерию в интернете?

С тех пор прошло время, и вот что получилось сейчас.
Читать дальше →
Total votes 81: ↑77 and ↓4+73
Comments156

Information

Rating
Does not participate
Location
London, England - London, Великобритания
Date of birth
Registered
Activity