Вывод дерева с сортировкой без рекурсии

Перед web-разработчиком довольно часто встает задача обработки древовидных структур. Естественно, использовать рекурсию при выборке данных из базы данных в такой ситуации никак не хочется. Вот и я долго ломал голову над тем, как вывести список сообщений форума таким образом, чтобы сообщения, оставленные в ответ на другое сообщение, были его потомками и отображались бы непосредственно за ним, в не в конце всего списка. Пока что мне известно два способа выборки деревьев из БД без рекурсии: materialized path и nested sets. ... читать далее

Бэкап с подстраховкой

Как показывает практика, обычного резервного копирования данных (когда бэкап храниться на той же машине, что и копируемая информация) может быть недостаточно. Поэтому, если Вы очень дорожите информацией, хранимой на сервере, лучше перестраховаться и сделать двойной бэкап. Если кто-то решит, что средств web-панели для резервного копирования будет достаточно, пусть вспомнит историю с Hosting.ua. ... читать далее

Vhosts на автомате 2.0

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

Lighttpd, cURL и localhost

Как-то понадобилось мне в PHP-скрипте с помощью cURL'а обратиться к сайту, который располагался на локальной машине, как, собственно, и сам скрипт. Запустив скрипт я получил ошибку таймаута. Пытаясь разобраться в чём дело, я предположил, что cURL'у не удается зарезолвить адрес сайта, прописанного в /etc/hosts. Однажды я сталкивался с подобной проблемой: когда у меня сайты были на apache, cURL выдавал ошибку разрешения имен. Эта проблема решалась перезапуском apache. Сейчас у меня установлен Lighttpd, и я начал гуглить на тему «почему lighttpd не коннектится к localhost'у». ... читать далее

Что ни делается — все к лучшему

Уже довольно давно я написал простенькую игру-головоломку, под названием «Числа». Сделал я её как расширение для Firefox (это, кстати сказать, был первый опыт создания плагинов к Firefox). Т.к. игра была еще недостаточно отлажена, на сайт Мозиллы я её не заливал. ... читать далее

Девочки — налево, мальчики — направо

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

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

Ху из ху?

«Черт возьми! Как же называлась та тулза?». Чтобы не задавать более себе таких вопросов, я решил составить небольшой список приложений для linux, в котором я буду делать короткие заметки о том, для чего может понадобиться та или иная утилита. В течение некоторого времени я постараюсь сделать этот список наиболее полным. ... читать далее

Сравнение версий без SVN

Допустим у Вас есть сайт: версия для посетителей где-нибудь на хостинге и рабочая копия на локальной машине. Последние несколько дней Вы вносили правки в рабочую версию и теперь Вам все изменения нужно выложить в паблик. Вопрос: как обновить только измененные файлы быстро и без особых усилий? Если файлов два-три, то это, конечно, не составит труда. А если их от десяти и более? Один забытый файл может негативно сказаться на работу Вашего сайта. SVN на хостинге недоступен. Перебросить все сразу — тоже не вариант (так конечно можно сделать, но, допустим, некоторые файлы новее локальных и их нужно сохранить). Решение есть, но к сожалению, оно подойдет только для пользователей Linux и на хостинге/сервере должен быть доступен ssh. ... читать далее

Арифметика простая и не очень

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

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

Ловим баги

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