Хочу показать свой базовый класс, который я использую для PHP скриптов.
Приемущество его в том, что легко можно «распараллелить» работу.
Используется pcntl_fork() со всеми «вытекающими».
Кандидаты — «Senior PHP», с опытом, до собеседования проходят первичный отбор по резюме\сопроводительному письму, то есть на собеседование попадают лишь те, кто выглядят как приличные программисты. Собеседования проводятся удалённо — Skype/ICQ (без голоса). Т.е. теоретически можно гуглить, хоть я и прошу этого не делать.
Итак, тесты, которые отсетвают «типа программистов»:
Вы скорее всего не являетесь целостным существом, если мы говорим о мыслительном процессе. У Вас есть логичные вещи в жизни? А креативные? А эмоциональные? Уверен что всё есть. А есть ли что-то креативное и логичное одновременно? Немного, правда? А что-то, где полно эмоций, креативности и конструктивизма? Сложно сказать.
Занимаясь одбором кандидатов на вакансию программиста, столкнулся с проблемой — подобрать хорошее тестовое задание. Цель — увидеть, программист ли передо мной или человек, хорошо знающий фреймворк\язык\технллогию. Поясню — программист, это человек, которые может решить нетривиальную проблему. Сделать сайт-блог, даже e-commerce сейчас является тривиальной проблемой, на это способен любой junior. Natural-born программистдумает по-другому.
Проблема — нужно обновлять сайт (ака «svn up») плюс обновить схему БД — добавить таблицы, индексы и т.п.
SQL запросы на обновление БД хранятся в репозитории, необходимо запустить нужный SQL после обновления кода приложения.
Сложность: 1) нельзя, чтобы один и тот же SQL выполнился два раза. 2) выполнять запросы нужно в определенной последовательности (нельзя сделать ALTER TABLE до создания).
Цель этой статьи — дать краткий, очень сжатый обзор движков, для того, чтобы статьей можно было пользоваться при выборе движка на этапе проектирования \ создания \ оптимизации таблицы. Предполагается, что читатель знает суть вопроса по крайней мере поверхностно и способен сам отыскать всю дополнительную информацию (вопросы в комментах можно задавать всегда :) )
Один из самых простых способов определить качество кода приложения — посмотреть на подсказки IDE (например ZendStudio). На первый взгляд простой приём несет в себе вполне определённый и рациональные моменты.
«прозрачность» кода
следование стандартам именования
правильное использование модификаторов видимости
использование ООП
отсутсвие «волшебства» в коде
документирование методов и функций
Посмотрев на подсказки IDE, можно сделать очень даже обоснованное заключение о качестве кода.
Хочу разобраться и обсудить, насколько выгодна «Доменная модель» (Domain Model) архитектуры WEB-приложений (в частности PHP), с различной точки зрения. Какие вы видите в ней недостатки, приемущества и что можно ей противопоставить.
Требуется, чтобы несколько взаимодействующих между собой объектов могли управлять логикой определенных методов.
Например: каждый из объектов имеет метод Data(), который возвращает данные, необходимые для отображения объекта на странице (данные для шаблонизатора). Например объект $news класса News должен возвратить 5 последних новостей в приемлемом для шаблонизатора виде, например в виде массива. В свою очередь News::Data() обращается поочередно к объектам $newsPost->Data() (к вложенным объектам) для получения данных, касающихся отдельной новости (заголовок, дата и т.д.). Однако в некоторых случаях требуется, чтобы NewsPosе::Data() возвращал не полные данные, а лишь заголовок (например на главной странице сайта), а в другом случае требуется, чтобы вернулись все данные, включая ссылки на «новости по теме».
Я долго пытался выразить словами зачем мне всё это нужно но потом отказался от этой идеи. Кому интересно — отвечу в комментариях. Итак суть:
Существует несколько web-сайтов с похожей базой данных, с похожим функционалом (допустим магазины, продающие одни и те же товары (один владелец).
Нужно: добавить новый товар на все магазины одновременно. Или не добавлять никуда в случае ошибки хотя бы на одном. Если уж совсем по-простому, то ID записей в определенных таблицах должны совпадать на всех сайтах. Например product_id. Опять же скажу — я упростил задачу, на деле все намного сложнее.