Подшефные ребята осваивают вэб-программирование, в частности, PHP.
Одной из первых задач на освоение таблиц <table> они получают задание отрисовать на PHP таблицу умножения, эдак 25х25.
Далее начинаются простые «навороты» — например, выкрасить в полученной таблице клетки с четными числами. Как выяснилось, наворотами можно наслаждаться часами.
Читать полностью »
Рубрика «php» - 180
Функция «ковра»
2013-11-17 в 8:53, admin, рубрики: php, забавно, математика, Программирование, теория чисел, метки: забавно, Программирование, теория чиселPHP Console 3.0 — важнейшее обновление за 3 года
2013-11-17 в 0:34, admin, рубрики: Google Chrome, php, Веб-разработка, метки: Google Chrome, PHP, Веб-разработкаПрошло 3 года с момента выхода первой версии, о которой вы могли читать в статье Как подружить PHP с консолью Google Chrome. За это время расширение набрало 43`000 активных пользователей, и, что не менее важно, в ноябре 2013 обновилось до версии 3.0. Несколько месяцев разработки, и получилась полностью переписанная, в несколько раз более функциональная версия.
Новый функционал PHP Console 3.0
- Отладка PHP ошибок и исключений (было в v1.1)
- Дамп переменных любого типа
- Выполнение PHP кода удалённо
- Защита соединения по паролю
- Группировка данных отладки по URL запроса
- Открытие файла-строки ошибки в вашей IDE по клику на кнопку в уведомлении
- Копирование данных ошибки/дампа в буфер обмена(для тестеров)
- Новый клиент-сервер протокол без ограничений на размер данных
- Новая PHP библиотека на GitHub
- Новое расширение для Yii
- И многое другое...
В статье:
- Скриншоты
- Видео
- Список функций Google Chrome расширения
- Список функций PHP библиотеки
- Голосование за партирование на другие языки
Диспетчер событий с фильтрацией по шаблону
2013-11-15 в 9:34, admin, рубрики: Events, php, Программирование, фильтрация, метки: Events, фильтрацияНедавно у меня появилась необходимость в простом и функциональном диспетчере событий. После непродолжительных поисков на Packagist-е я нашел пакет Evenement, который почти полностью подходил под мои требования. Но все же отбор он не прошел из-за двух параметров:
- была нужна возможность порождать события по шаблону;
- интерфейс библиотеки визуально не понравился.
Конечно же, я принял решение доделать и причесать библиотеку «под себя».
Порождение событий по шаблону
Мне нужна была возможность с помощью шаблона порождать нужные события, имена которых представляют собой иерархические ключи (foo.bar.baz).
Например, для такого списка событий:
some.eventanother.eventyet.another.eventsomething.new
Нужно породить все события, заканчивающиеся на «event». Или начинающиеся на «yet» и заканчивающиеся на «event», и не важно, что в середине.
Читать полностью »
Continuous Delivery hecho en Alawar
2013-11-15 в 8:18, admin, рубрики: continuous delivery, continuous integration, php, Блог компании «Alawar Entertainment», Веб-разработка, метки: continuous delivery, continuous integration, PHPОколо года назад перед нашей командой была поставлена задача стартовать разработку серверных частей ряда игровых MMO проектов. Специфика такого рода проектов помимо требований к гибкости, стабильности и масштабируемости также включает в себя:
- необходимость A/B-тестирования разных версий одной и той же игры
- возможность по максимуму переиспользовать функционал от одной игры в другой
- высокую вероятность географической удаленности от разработчиков занимающихся клиентским функционалом
Более того, в дальнейшем нашу команду предполагалось расширить, возможно за счет аутсорс разработчиков, в том числе и для задач поддержки. В этих условиях для успешной реализации было решено наравне с версионированием проектов, пакетированием и стандартизацией ряда шагов разработки внедрить и практику continuous delivery.
Цель данной статьи – рассказать о проделанных шагах, принятых решениях и описать полученный результат.

SonataMediaBundle. Русская версия перевода файла xliff
2013-11-14 в 10:17, admin, рубрики: php, symfony, symfony 2, админка, метки: symfony 2, админка Доброго времени сутоке. Во время работы над админ частью одного русскоязычного ресурса, появилась необходимость, что бы вся админка была на русском языке. В самой SonataAdminBundle файлик такой есть, и это не вызвывает сложностей. Но как оказалось, подключенная к AdminBundle другой Сонатовский бандл, а именно SonataMediaBundle не обладает таким интерфейсом. Собственно появилось необходимость перевести его, так как не нашел в сети. Что из этого получилось? Прошу под кат.
Читать полностью »
Новое в Symfony 2.4: компонент ExpressionLanguage
2013-11-13 в 19:34, admin, рубрики: 2.4, expression language, php, symfony, symfony components В Symfony 2.4 появится новый компонент — ExpressionLanguage. Компонент является движком для компиляции и исполнения «выражений».
Этот язык является урезанной версией твига. Выражения укладываются в одну строку и обычно возвращают булево значения, но не ограничиваются этим.
В отличии от твига, ExpressionLanguage работает в двух режимах:
- Компиляция: выражение компилируется в PHP код для последующего исполнения (код не зависит от среды выполнения)
- Исполнение: выражение исполняется без предварительной компиляции
Чтобы было возможно компилировать выражения в PHP код, не нуждающийся в модификации во время выполнения, оператор . должен быть явным и означать лишь одно возможное поведение: foo.bar — для свойств объекта, foo['bar'] для доступа к массиву, foo.getBar() для вызова методов.
Использование компонента просто на сколько это возможно:
use SymfonyComponentExpressionLanguageExpressionLanguage;
$language = new ExpressionLanguage();
echo $language->evaluate('1 + 1');
// echo 2
echo $language->compile('1 + 2');
// echo "(1 + 2)"
Язык выражений поддерживает все то же что и твиг: математические операторы, строки, числа, массивы, хеши, булевы переменные… Выражения могут рассматриваться как очень ограниченная PHP-песочница, в которой невозможны внешние воздействия, все переменные должны быть объявлены заранее до компиляции или исполнения выражения.
$language->evaluate('a.b', array('a' => new stdClass()));
$language->compile('a.b', array('a'));
Последнее, но не по значению — вы можете легко расширить функциональность языка. Они работают точно также как их аналоги в твиге (для подробного ознакомления посмотрите метод register())
Как на счет примеров использования? Мы встроили компонент во множество других компонентов, используемых в Symfony.
Читать полностью »
В России появился бесплатный Jelastic
2013-11-13 в 9:15, admin, рубрики: infobox, java, jelastic, php, Блог компании Jelastic, Облачные вычисления, Платформа, хостинг, метки: infobox, java, jelastic, PHP, платформа, хостингС момента первого появления нашей Java & PHP платформы, одно из самых больших пожеланий, которые мы слышали было: «дайте бесплатную версию». Мы сами, конечно, такую дать не можем – хостинг предоставляют наши партнеры. Но вот один из наших российских партнеров – Инфобокс – начал опробовать такую модель. Давайте мы вам расскажем, как они это делают.
Freemium – это модель, позволяющая использовать какой-то продукт до определенных объемов совершенно бесплатно. Уже потом – когда проект вырастет и станет большим и серьезным – клиенту и заплатить будет не жалко.
Загвоздка всегда в том, как правильно очертить границы, чтобы и пользователи были довольны, и хорошие проекты в итоге действительно приносили производителю деньги.
В реализации Инфобокса, ограничение достаточно простое – по потребляемым ресурсам.
До 3 клаудлет (то есть до 128 МБ * 3 = 384 МБ оперативной памяти) тарификация не идет. Но требуется, чтобы деньги на балансе были.
Т.е. вы регистрируетесь здесь: http://infoboxcloud.ru/jelastic/ — это дает вам пятидневный совершенно бесплатный тестовый период.
«Кракозябры» в БД или когда «Думать надо было раньше»
2013-11-12 в 7:18, admin, рубрики: php, Администрирование баз данных, базы данных, кодировки, метки: PHP, базы данных, кодировки На днях столкнулся с глупейшей ситуацией. Запустили один веб-проект, все работает, код пишется и дополняется, базы данных наполняются. Разработка идет на тестовом хосте, затем изменения заливаются на сервер, вся проверка сводится к заходу на сам сайт и тесту всего и всея. Вдруг, выясняется, что буква «ш» не отображается на сайте, а вместо неё два ничего не значащих символа.
Читать полностью »

Мне часто приходилось сталкиваться с нодовыми интерфейсами в программах. Начиная с музыкальных модульных приложений, заканчивая пакетами для создания трехмерной графики.
Идея графического управления логикой программы мне всегда казалась очень элегантным, а в некоторых случаях, единственным удачным решением. Позже, когда помимо музыки и видео я увлекся программированием (в основном PHP, так уж сложилось), мне захотелось попробовать, пусть даже в качестве эксперимента, создать графическую оболочку для выполнения тех нехитрых задач, с которыми я сталкивался в своей работе.
Читать полностью »

