Архив рубрики «Холивары»

Смена базы данных на php-проектах

27.05.2009
Новинки кино. Новые фильмы. Описания фильма. DVD. Новый фильм дизеля. . Новое оборудование - канаты стальные ГОСТ 16853

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

Суть ситуации в том, что люди намеряно сводят работу с базой данных до уровня insert, update, select, delete, создавая особо извращенные варианты доступа к этим самим данным. Любые - лишь бы не SQL. В итоге, понятное дело, без извращений в таких вещах очень сложно сделать простые с точки зрения запросов вещи. Ну например, счетчик посещений сайта и например ORM.

Алгоритм какой будет?

1. Выбрали данные;

2. Увеличили на 1;

3. Сохранили данные.

А что если на сайт почти одновременно зайдут 2 пользователя? :) Причем до шагов этого алгоритма они дойдут параллельно и в одно время. Т.е. 1-й делает выбор данных, потом второй, потом первый - увеличивает счетчик и т.п.? понимаете? :)

В самой базе все проще - UPDATE четотам SET `count`=`count`+1 WHERE четотам. И никаких глюков - потому что запросы будут выполняться последовательно.

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

Если заказчик захочет сменить базу данных скажем с MySQL на Oracle - то мы всего лишь переписали бы конфиг и все запалило на ура вместо того, чтобы переколбашивать весь сайт.

Я однажды не выдержал и поспрашивал всех кого знал, а сталкивался ли кто-нить из них с такой задачей - и оказалось что такое всплыло 1 раз на примерно 500-700 проектов, в которых участвовали опрошенные :)

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

Надеюсь, кому-то этот пост поможет перестать наступать себе на яйца при разработке. Помните: какой бы ни была по сложности задача смены СУБД - вы или фирма все равно на ней нагреетесь - заказчик хочет - заказчик платит :)

Запчасти для полиграфии: полиграфическое оборудование. Продажа печатной машины б/у.

Объявление объекта без скобок

01.05.2009

Иногда встречаю вот такую вот запись создания нового объекта:

$obj = new Typed;

Вначале мне казалось, что это просто от криворукости программистов и работает также как и массивы, в которых индексы пишутся без кавычек типа $a[index], где автоматом заводится константа с тем же значением и это на удивление работает. Оказалось констант никаких не заводится - а это просто особенность языка.

Оказалось, что такая манера создания классов была описана в мануале по классам и объектом самими разрабочиками php для php4 на php.net.

Вопрос, нафига? В самых распространенных языках программирования везде пишутся скобки после имени класса. IDE от тех же Зендов тоже подсказывает $obj = new Typed(); По-моему, это только запутывает.

P.S. Кстати и в 5-м php та же фигня в описании...

Жесткая табуляция vs. Мягкая табуляция

01.05.2009

Чтобы немного прояснить для тех кто не в курсе, напишу определения обоих вещей. Итак:

Жесткая табуляция (hard tabs)— это обычные символы табуляции.

Мягкая табуляция (soft tabs) в действительности вообще не является табуляцией; каждый отступ в мягкой табуляции фактически представлен определенным количеством обычных пробелов.

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

(далее…)

Указание типов в параметрах методов vs phpDoc

03.04.2009

php5 подарил нам всем много классных и удобных вещей, однако многие из них как обычно у ребят из Зенда - просто недоделаны до конца. Одна из таких вещей - это подобие строгой типизации, точнее возможность такую сделать. Как правило, люди, которые долго программируют в пхп и так пишут типы принимаемых в методах переменных (ну и возвращаемых тоже) - в основном для того, чтобы это подхватывалось IDE - и можно было вызывать посказки и не париться.

(далее…)

Когда private поля начинаются с подчеркивания :(

01.04.2009

Мир php такой, каким мы видим его сейчас очень во-многом из-за того, что славные ребята из Зенда, создав язык программирования бросили разработчиков на полпути, так и не сделав своего фреймворка или cms-ки вовремя, породив множество различного рода (как правило кривых) решений от кучи разработчиков - ну и разумеется кучу различных стандартов написания кода. Одним из больных мест стали private поля и методы. Если вспомнить php4, то там объекты по сути были массивами, к которым кое-как прикрутили функции, поэтому ессественно, что указать область видимости там было невозможно. Так родился костыль :)

(далее…)


Информеры с тИЦ и PR: получить код для сайта
Антивирусные продукты Доктор Веб: доктор веб. Меньше кода, больше эффекта.