Здравствуйте. Я хочу рассказать о решении достаточно простой задачи, с которой я столкнулся и не сразу получил нужный результат. Необходимо реализовать дерево, источником данных для которого выступает таблица вида
Id Parent
1 Null
2 1
3 2
4 1Читать полностью »
Рубрика «php» - 203
Простой php-класс для реализации деревьев
2013-02-28 в 8:21, admin, рубрики: jstree, php, деревья, класс, метки: jstree, PHP, деревья, классПроцесс разработки в Badoo
2013-02-27 в 13:18, admin, рубрики: badoo, Git, jira, php, teamcity, баду, Блог компании Badoo, Веб-разработка, процесс разработки, разработка, метки: badoo, Git, jira, PHP, teamcity, баду, процесс разработки, разработкаСегодня мы проведём экскурсию по цеху разработки Badoo, в котором создаётся новый функционал нашего сайта, расскажем о самом процессе — от постановки задачи и до момента выкладки в боевое окружение.
За время существования компании её рабочий процесс эволюционировал от стохастического к хорошо контролируемому и понятному. Ещё полтора-два года назад никто точно не мог ответить на вопрос, какие задачи попали в сегодняшнюю выкладку, а менеджер опрашивал программистов, кто и что выложил. Сейчас же процесс максимально автоматизирован, таск-трекер тесно связан с системой контроля версий, задачи проходят несколько стадий проверки. При этом сохранилась высокая скорость разработки: нормальной считается ситуация, когда задача появилась утром, а после обеда новый функционал уже доступен пользователям на сайте.
Читать полностью »
Как сделать свой сервер для приема, обработки и передачи смс
2013-02-27 в 12:37, admin, рубрики: linux, php, shell, велосипедостроение, Нетбуки, метки: PHP, shell, велосипедостроение
Доброго времени суток!
Недавно в универе мне была поставлена задача создать сервис смс-рассылки уведомлений старостами (деканатом и прочими) своим группам.
Основные требования к сервису были следующими:
— Сервис должен быть многопользовательским (старост более 1) с возможностью одновременной обработки запросов
— Не должен быть привязан к online сервисам рассылки (дабы не утекли базы пользователей)
— Должен быть достаточно легким и мобильным
— Максимально малозатратным
— Должен использовать только открытое программное обеспечение
— Должен обеспечивать отправку уведомлений, даже если у отправляющей стороны нет доступа к Интернету и/или компьютеру. (т.е. не только отправлять, но и принимать входящие смс сообщения от старост + определять от кого конкретно они поступили и делать рассылку по их группам)
Как удалось это реализовать — смотрите под катом.Читать полностью »
PHP: Кэширование вызовов на грани фола
2013-02-26 в 10:50, admin, рубрики: php, кеширование, трюки, метки: PHP, кеширование, трюкиСидел я как-то вечером и переписывал тонны кода в рамках расширения функционала.
Код старый, кое-где костыли, но куда же без них. Бывает.
Читать полностью »
Laravel 4. Отличия и сравнения
2013-02-26 в 10:21, admin, рубрики: framework, laravel, laravel 4, php, метки: framework, laravel, laravel 4
Относительно не давно была выпущена первая Beta фреймворка «Laravel». Товарищ rsvasilyev начал публикацию статей о разработке на 4-й версии, я в свою очередь хочу описать новые преимущества и сравнить с его предыдущей версией.
Если вы заинтересованы в этом, прошу под кат.
Читать полностью »
Экспорт избранного Хабра в FB2 — скоростная PHP-версия
2013-02-26 в 8:56, admin, рубрики: api, fb2, php, избранное, хабрахабр, Хабрахабр API, экспорт, электронные книги, метки: api, fb2, PHP, избранное, Хабрахабр, экспорт В своё время я уже видел такой конвертер здесь же на Хабре, написанный на питоне, но он на моей машинке сжирал много-много-много ресурсов и ни разу не смог моё избранное (а это 400+ постов) до конца сохранить, падая то на некорректном файле, то на «кривой» статье. Пришлось переписать, результаты трудов под катом.
Читать полностью »
HMVC в пространстве имен
2013-02-26 в 8:42, admin, рубрики: cms, hmvc, php, Песочница, пространство имен, метки: hmvc, PHP, пространство именВ последнее время очень много говорится о схеме проектирования MVC, почти все популярные PHP-фреймворки уже давно перешли на эту схему. Что же касается Kohana, то начиная с версии 3, реализована иерархическая схема MVC – HMVC. Преимущества HMVC, всем понятны и мы не будем их здесь обсуждать.
Я, как желающий сменить статус «программиста-любителя» на «программиста-профессионала» решил, что уже достаточно изучил PHP и пора начинать работать с фреймворками, выбор моего самого первого фреймворка пал на именно Kohana, т.к. в нем реализуется HMVC, ну и вообще, его много хвалят за простоту.
В реальности все оказалось не просто, но особенно напрягало отсутствие изолированности триад MVC, триады разбивались на части и помещались в разные папки. В моем понимании, триада Model-View-Controller, должны быть изолированны от других триад, и находиться в одной папке, конечно, это можно было реализовать в Kohana, но все будет выглядеть очень «коряво» и запутанно. Еще было не понятно, почему не используется такая замечательная возможность PHP как пространство имен? Просмотрел еще несколько HMVC-фреймворков, но не к одному «душа не легла». Тогда я решил самостоятельно реализовать HMVC.
Сразу установил несколько директив:
- Должно использоваться пространство имен
- Автозагрузка классов работает на пространстве имен
- В автозагрузку можно добавлять несколько папок
- Каждое приложение имеет свою папку, на которую устанавливается автозагрузка
- Каждая триада, в том числе и шаблоны, помещается в отдельную папку, соответственно, находятся в своем пространстве имен
- По умолчанию, части MVC называются своими именами, Controller, Model и View, в каждой папке триады должна быть папка templates для шаблонов
- Очень простой роутинг, URI просто разбивается в массив
- Controller похож на Kohana_Controller
- Controller получает информацию о том, что от него хотят в конструкторе, разбирает информацию URI-массива, после чего запускает метод action()
- Метод action() проверяет методы объекта и запускает соответственно action_действие()
- Генерация HTML, осуществляется методом контроллера render()
Потом добавил еще несколько:
- Роутинг осуществляет расширенный контроллер, он разбивает URI в массив, сначала проверяет свои actions, если не находит, то ищет зарегистрированный контроллер
- Результат работы модели сохраняется в контроллере, передается в View, при создании в методе контроллера render()
- Метод action() публичный, созданный контроллер можно еще раз запустить и сгенерировать HTML
- View похож на Kohana_View, для приложения, View необходимо «вытащить» в глобальное пространство имен при помощи наследования, заодно немного настроив, все остальные View должны быть наследниками глобального View
- Контроллеры и View должны знать в какой папке и в каком пространстве имен они находятся, для этого они наследуются от специального класса NameSpaceAdapter, это нужно для правильного поиска View из контроллера, а так же папки templates из родительского View
- Главный шаблон для каждой триады — template.php
- Контроллеры автоматически передают в View свой action, на основании этой информации View из главного шаблона template.php самостоятельно ищет нужный шаблон action.php, поэтому не должно быть action_template(), это приведет к зацикливанию шаблонов
- Для администрирования можно создать шаблоны с префиксом admin_action.php, которые можно вызвать только если установлена константа ADMIN
В итоге получилась небольшая HMVC структура, Model не играет роли, поэтому код не привожу, скажу только, что склоняюсь к статическому классу.
Читать полностью »
Фильтр Блума на PHP
2013-02-26 в 6:58, admin, рубрики: bloom, bloom filter, php, Алгоритмы, метки: bloom, bloom filter, PHP, АлгоритмыЧто это?
Это вероятностная структура данных, придуманная Бёртоном Блумом в 1970 году, позволяющая компактно хранить множество элементов и проверять принадлежность заданного элемента к множеству. При этом существует возможность получить ложно-положительное срабатывание (элемента в множестве нет, но структура данных сообщает, что он есть), но не ложно-отрицательное.
А попроще
Это способ проверки существования элемента в огромной выборке.
Читать полностью »
Знакомимся с аспектно-ориентированным программированием в PHP
2013-02-25 в 18:27, admin, рубрики: aop, architecture, aspect oriented programming, php, Веб-разработка, Программирование, метки: aop, architecture, aspect oriented programming, PHP, ооп При разработке программного обеспечения программисты и архитекторы пользуются декомпозицией — представлением объектов и взаимосвязей между ними в виде классов, объектов, их свойств и методов.
Проводя декомпозицию, удается получить более точное представление объектов из реальной жизни в виде программного кода. Именно благодаря этому принципу, объектно-ориентированное программирование получило столь широкую популярность во всех языках программирования. Модель представления объектов реальной жизни в виде инстансов классов очень удобна: мы можем наделять класс набором методов и свойств, позволяя взаимодействовать с окружающей средой.
Читать полностью »
Вышла последняя RC-версия Symfony 2.2
2013-02-25 в 13:59, admin, рубрики: php, symfony, symfony2, метки: PHP, symfony2Собственно, вчера (24-го февраля) вышла Symfony 2.2 RC3. Если верить Фабиену, на этой неделе должны выпустить финальную версию (он написал в блоге). Рекомендую всем проверить проекты на совместимость.
Касательно графика обновлений SF2.2: Schedule Update
Также учтите, что в конце апреля 2013 прекращается поддержка Symfony 2.1, так что пора бы задуматься об обновлении (пусть даже тестовом).
Читать полностью »