Конфигурация сайта 2.1: совместная разработка (платформы)

В прошлой статье мы разобрались, как можно хранить конфигурацию системы и как её можно использовать.

Однако, мы подразумевали простейший вариант, когда система работает в единственной копии на сервере. Усложним положение:

Итак, бравые разработчики Вася, Петя, Миша и Гриша в поте лица разрабатывают очередную социальную сеть нового поколения. Каждый ведёт разработку в своей локальной версии на своём компьютере. Наработки они выкладывают на локальный тестовый сервер (где-нибудь в офисе в шкафу пылиться). Выкладывают, конечно, не по FTP, а с использованием какой-нибудь системы контроля версия, например, Mercurial.

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

Итого, система работает уже не в одной копии, а в восьми (4 разработчика, локальный сервер, 3 рабочих сервера). Назовём то, где работает конкретная копия системы платформой и дадим каждой имя (платформа server.1, платформа vasya, платформа local и т.д.).

Понятно, что конфигурация системы будет иметь одинаковую структуру для всех платформ, но вот на каждой конкретной значения параметров могут отличаться. То есть, у каждого из разработчиков могут быть свои параметры локальной БД. Или Вася захотел включить у себя вывод отладочной информации, а Петя этого не захотел. И так далее.

Подумаем, как это можно организовать.

Остальной текст под катом

Ping

Эх, прыгнуть бы с крыши,
Башкой об асфальт.
Но надо работать…

Эта чепуха тут только для проверки RSS.
Вчера обновил Feedburner-плагин до последней 1.42.
Сегодня опубликовал статью и, что цуко характерно, нет её в RSS.

Вернул старую версию, посмотрю что будет.

До кого не дошла ссылка на утреннюю статью, а дошла эта: Конфигурация сайта 1: введение.

Конфигурация сайта 1: введение

Сегодня заведём разговор на такую, казалось бы простую, тему, как конфигурация сайта. То есть поговорим о таких вещах, как параметры подключения к БД, различные настройки, как всё это хранить и как со всем этим работать.

Разобьём этот разговор на три части:

  • В текущей рассмотрим различные варианты организации конфига. Эта часть в первую очередь ориентирована на новичков.
  • Во второй задумаемся над более сложными вещами. Например, как поддерживать набор отличающихся конфигов для одной системы.
  • А в третьей части попробуем всё это высечь в коде.

Остальной текст под катом

Системный администратор (Unix), Петербург, 25-30 т.р

Спасибо, вакансия закрыта

Ноги

Требуется системный администратор unix-систем (в основном FreeBSD и/или Debian) для работы системным администратором.
Основное требование: разбираться в системном администрировании unix-систем.

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

Бюджет на данный момент: 25 000 — 30 000 рублей в месяц.

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

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

Остальной текст под катом

В новое десятилетие с новым goDB

goDB logo

Вот, наконец, и закончились праздники. Трудовые люди возвращаются с опостылевшего отдыха на свои любимые рабочие места. И, конечно же, большинство из них будет использовать на работе goDB.

goDB, это иновационная нано-библиотека для работы с MySQL из PHP.

И, несомненно, все воодушевлены благой вестью о том, что в новом году эта чудо-библиотека будет позволять работать не только с MySQL.

go\DB 2.0 на гугло-коде

  1. Система адаптеров позволяет адаптировать go\DB под любой тип СУБД
  2. Вы можете реализовать свой тип СУБД, написать к нему goDB-адаптер и выслать нам
  3. Требуется PHP 5.3
  4. go\DB 2.x ваще не совместима с goDB 1.x
  5. Переработаны системы плейсхолдеров и форматов представления результата
  6. Результат можно получать и сразу из query() и в виде объекта
  7. Ещё не реализованы по сравнения с 1.x транзакции, мультизапросы и подготовленные выражения
  8. Не все тёмные места до конца протестированы, так что на данный момент go\DB 2 находится в бете
  9. Ну и много всего интересного можно подробно узнать в документации

P.S. goDB 1.x продолжает развиваться параллельно и в ней пофикшен небольшой баг. Скачать goDB 1.3.1

Визуализация алгоритмов сортировки

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

Однако, вместо этого, я для непонятных целей сделал сравнение пары алгоритмов сортировки.

Сортируйте массивы различными способами всю новогоднюю ночь напролёт!

Паззл

Паззл

goDB 1.3: Транзакции и все, все, все

goDB 1.3: новый говнокод и ебическая сила природы в одном флаконе. Домохозяйки выбирают goDB.

В новой версии при сохранении совместимости с mysqli добавлены надстройки по следующим пунктам:

Транзакции

  1. Станартная схема: BEGIN + COMMIT(ROLLBACK)
  2. Вложенные транзакции, где транзакции нижних уровней не знают о верхних.
  3. Различные способы отката из вложенных транзакций и его обработки.
  4. Выполнение функций в транзакциях

Мультизапросы

  1. Мультизапросы по goDB-схеме: с шаблонами, данными и форматами разбора.
  2. Получение всех результатов сразу или получение только нужных
  3. Различные способы формирования мультизапроса
  4. Обработка ошибок на основе исключений
  5. Не нужно думать о выборке всех результатов и их очистке
  6. Мультизапросы в транзакциях и без них.

Подготовленные выражения

  1. goDB-схема (шаблон, данные, формат результата) вместо bind_param, bind_result
  2. Полная поддержка форматов представления результатов
  3. Обработка ошибок на основе исключений.
  4. Создание и выполнение подготовленного выражения одним запросов.
  5. Кэширование подготовленных выражений.
  6. Именованные подготовленные выражения.

Кроме того, добавлены следующие возможности:

Объект-ссылка

Объект ссылка разделяет подключение с основным объектом, но может иметь другие настройки (префикс, отладка, декоратор запросов).

По мелочи

Формат разбора bool.

Метод __invoke().
В PHP 5.3 запросы можно выполнять прямо так: $one = $db('SELECT 1', null, 'el');

Методы getPrefix(), getDebug() и т.д.

Реструктуризация юнит-тестов: теперь вместо одного файла папка с тестами.

@todo

Все предложения пишите на форуме или присылайте на мыло.

В ближайшее время возможно следующее:

  1. Макроподстановки
  2. Разбиение godb.php на несколько файлов
  3. Формат разбора: объект для разбора :)
  4. Начало работы над goDB 2.0
  5. Нормальные шрифты и цвета для доки

Взять себе

Взять себе
goDB 1.3.0 (zip, 31K)

goDB 1.2.2

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

В новой версии (1.2.2):

Плейсхолдер ?bool: вставка значения для столбца типа BOOL.

Формат представления результата kassoc и его подвид kassoc:$col.

Формат же vars теперь позволяет выборку по одному столбцу: его значение станет как ключём массива, так и его элементом.

Плюс добавлены исключения goDBExceptionFetchUnknown и goDBExceptionFetchUnexpected.
Также местами переписан код.

Сам класс теперь можно просмотреть прямо на сайте не скачивая архивов.

Ну и конечно, можно всё-таки скачать архив (ZIP, 5K)

goDB 1.2.1: теперь и в юнит-тестах

В версии 1.2.1 исправлен незначительный бажок.

А чтобы снизить вероятность незначительных бажков в будущем, добавлены unit-тесты.

Для юнит-тестов используется PHPUnit.

~/godb$ phpunit --colors goDBTest.php
PHPUnit 3.5.0 by Sebastian Bergmann.

............................................................ 60 / 60


Time: 4 seconds, Memory: 4.25Mb

OK (60 tests, 126 assertions)

~/godb$
По страницам: 123456789101112131415