Search
Write a publication
Pull to refresh
1
0
Andrew @Bonch

User

Send message

Doctrine, расширяем возможности любимого ORM-фреймворка! Часть 1.а (I18n, быстрый доступ к переводимым атрибутам)

Reading time9 min
Views2.7K
Я думаю многие со мной согласны, что Doctrine — один из самых мощных и удобных ORM для PHP, но с недавнего времени возможностей оного мне перестало хватать. Начнем с того что невозможно использовать ассоциации с условиями фильтрации, «волшебный» поиск с учетом перевода через I18n и много другого.

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

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

Как открыть студию без стартового капитала

Reading time5 min
Views76K
Здравствуйте коллеги!
Представляю вам некую «шпаргалку» для будущих руководителей студий.

У многих появляется желание открыть свою студию, но есть мысли, которые вас останавливают. Это «нет инвесторов», «нет клиентов», «не знаю как буду рекламироваться» и многие другие. Некоторые из них мы разберем в этой статье.

Открыть свою студию можно при любых условиях и исходных данных, в том числе и не имея стартового капитала. Главное – наличие твердого желания и готовности тратить все свое время и силы на развитию. Правда, проблем в этом случае может быть чуть больше, но зато и ценного опыта набежит с избытком.
Если денег нет, а счастья хочется… (с)
Читать дальше →

HTML 5 в Internet Explorer

Reading time3 min
Views58K
image

Вкратце: как заставить новые теги из HTML 5 работать в Internet Explorer.

Любой веб-разработчик смотря на HTML 5 плачет от счастья, которое наконец-то пришло в наш дом. Для большинства функций (такие как WebGL, многопоточность и веб-сокеты) придётся ждать поддержки от браузеров (а в самых правильных эти возможности уже есть), но новые удобные теги мы можем использовать уже сейчас.

Однако Internet Explorer (даже последней, 8-ой версии) и тут сумел споткнуться — новые теги вне HTML 4 он просто не замечает — на них нельзя повесить стили.

В IE проблем даже две — отдельно нужно включать поддержку HTML 5 тегов в обычном документе, и отдельно в содержимом, которое добавляется динамически (например, через AJAX).
Читать дальше →

Введение в Zend_Auth

Reading time14 min
Views7K
В статье приведен обзор возможностей компоненты Zend_Auth, дающий общее представление о реализации пользовательской авторизации в приложениях на базе Zend Framework. В качестве основы приводимых примеров, использованы материалы статьи «Введение в Zend Framework». Примеры протестированы на Zend Framework версий 0.9, 0.9.1 и 0.9.2, и скорее всего будут работать с более поздними версиями, но не с более ранними.
Читать дальше →

Версионирование структуры БД в MySQL: MySQL Migration with PHP

Reading time3 min
Views13K
Когда БД проекта вырастает за пределы трех-пяти таблиц, продолжая при этом постоянно изменяться, на свет рождаются неудобства обмена изменениями между разработчиками. Проблема стара как мир, но инструмента удовлетворяющего мои требования я в ноябре 2009го найти не сумел.

Мои требования к инструменту очень просты:
  • Как бы я не издевался над структурой данных в приложении, инструмент должен уметь изменить структуру в другой инсталляции приложения так, чтобы она была идентична моей.
  • System requirements: PHP и MySQL — не более того.
  • Бесплатность.
  • Открытость.


Читать дальше →

Английский язык онлайн с LinguaLeo.ru: рожден в джунглях Таиланда!

Reading time3 min
Views45K
В конце августа 2009 года мы приняли окончательное решение о месте разработки веб-сервиса: остров Ко Чанг, Таиланд. Команда была собрана за 1.5 месяца с разных уголков нашей необъятной Родины: Москва, Киров, Пермь. Была поставлена единственная цель поездки в эту замечательную страну: общими усилиями создать самый удобный и популярный онлайн сервис для изучения и практики иностранных языков.
В команду стартапа вошло пять человек: два PHP разработчика, дизайнер-юзабилист, молодой и талантливый специалист по маркетингу и основатель проекта. 17 октября 2009 уже вся команда уже приехала на остров с твердым намерением реализовать проект.

Мы оказались в исключительных условиях: море, солнце, +35 градусов жары, все дела и заботы привычной городской жизни остались далеко позади.

LinguaLeo Island -- остров Ко Чанг...

Читать дальше →

Якоб Нильсен :: Прокрутка и внимание

Reading time7 min
Views7K
image

Представляю вашему вниманию мой второй перевод — новую статью Якоба Нильсена, вышедшую вчера.

Пользователи интернета тратят 80% времени, изучая информацию на «первом экране». Несмотря на то, что прокруткой они тоже пользуются, только 20% их внимания приходится на то, что расположено ниже «первого экрана».

В веб дизайне существует большая неразбериха с т.н. «первым экраном» и важностью показа самой главной информации в области, изначально видимой пользователем. (Т.е., фактически определение таково: «первый экран» обозначает «видимый без дополнительных действий».)

Читаем дальше?

Когда картинка красноречивее 1024 слов – прототипирование с MockingBird

Reading time2 min
Views7.3K
image Для написания ТЗ я задался вопросом поиска простого и удобного средства создания прототипов веб-страниц. Хотелось чего-то бесплатного и в онлайне, некой альтернативы Axure. Такой сервис удалось найти, его я и предлагаю вашему вниманию. Итак, встречайте www.gomockingbird.com – сервис, позволяющий создавать очень красивые прототипы легко и удобно.
Помимо представления самого сервиса, этим постом хотелось также привлечь внимание общественности к полезной практике прототипирования.
Читать дальше →

Объём и перспектива в Inkscape

Reading time1 min
Views5.9K
В прошлом уроке (обсуждение на Хабре), на примере создания картинки со снеговиком, я рассказывал о рисовании объёмных изображений в Inkscape. Но тогда я раскрыл далеко не все приёмы, которыми хотелось бы поделиться. Без внимания остались и некоторые инструменты программы, имеющие прямое отношение к 3D.

В этот раз мы будем рисовать аптечку.
Аптечка. Нарисовано в Inkscape. Автор — Юрий Апостол.
Статья опубликована на Linuxgraphics.ru. Читайте, пожалуйста, там.

20 причин проводить обзоры кода

Reading time6 min
Views5.3K
(прим. перев. Перевод немного вольный, но я попытался максимально точно сохранить смысл текста, в то же время отыгравшись на некоторых некритичных моментах, просьба не судить строго :)
Должен также отметить, что я не по всем пунктам согласен с автором (в конце он уже начинает зарываться) и, разумеется, обзоры кода — это не серебряная пуля, но, тем не менее, очень и очень полезная практика.)

Я затвитил эту статью о 5 причинах проводить обзоры кода на CIO.com на прошлой неделе и понял, что на самом деле причин гораздо больше, чем те пять, о которых там написано. Так что к концу дня у меня их было уже больше 20. Это коллекция тех твитов с некоторыми подробностями, описанными здесь.

Причина №1. Достаточно быстрая ответная реакция, чтобы подстегнуть разработчика.
Так как обзор кода производится после кодирования и перед интеграционными и системными тестами, разработчикам не надо ждать столько же, сколько и ответа от отдела по качеству кода (QA). Обеспечив конкретный, своевременный ответ, разработчики могут подстраивать свои навыки кодирования для избежания общих ошибок.
Читать дальше →

Doctrine Behavior на примере собственного плагина

Reading time8 min
Views378
Здравствуй, хабралюд.

Вступление


С выходом symfony 1.4 разработчики фреймворка фактически обязали нас использовать вместо привычного Propel, новую, мною неизведанную ORM Doctrine. Нет, конечно они не заставляют использовать Doctrine, при желании в 1.4 можно подключить и Propel, но как мне показалось — если разработчики такого масштаба сделали Doctrine по–умолчанию в своём фреймворке, то значит это говорит о большей пригодности нежели Propel. Я не стал противиться ещё по той причине, что просто напросто хотелось чего–нибудь нового и стал работать с Doctrine.

В связи с появившейся задачей, с желанием повысить собственную квалификацию и просто из интереса решил попробовать на себе, что такое Doctrine Behaviors, а полученным опытом поделиться с вами. Как писать плагины для symfony framework'a я уже рассказывал, на этот раз хотелось бы рассказать о написании плагина, который использует «Doctrine Behavior».
Читать дальше →

ProgressBar — Javascript Canvas2d

Reading time4 min
Views6.4K

Здравствуйте. Последнее время я достаточно часто имею дело с JavaScript-canvas, особенно написание всяких игрушек, которые требовательны к трафику в силу необходимости загрузки множества картинок.
Обычно сначала загружается около 50-100кб сжатого JavaScript, после чего — энное количество картинок(например, 500кб, 2мб, 10мб и т.п.) и только после этого запускается сама игра. Можно, конечно, загружать по ходу, но отсутствие текстур врядли порадует игрока.
Потому я решил, что необходимо сделать какой-то приличный, симпатичный, легко-настраиваемый(чтобы быстро менять от проекта к проекту) прогресс-бар, но, обязательно без использования картинок. Под катом исходники под лицензией LGPL, небольшая инструкция, как это сделать и внизу статьи — ссылка на результат.
Читать дальше →

Готовая команда под ваш интернет-стартап

Reading time2 min
Views970
Многие компании сталкиваются с проблемой подбора новой команды под проект, и очень многие знают как не легко сейчас найти действительно сильную команду с опытом работы, способную эффективно решать поставленные задачи.
Однако бывают счастливые совпадения — готовая команда сама ищет компанию. Почему?
Читать дальше →

PHPUnit. Автоматические тесты

Reading time4 min
Views63K
Предисловие переводчика:
Недавно начал изучать PHPUnit (framework семейства xUnit) и с удивлением обнаружил, что на русском языке нет статей про автоматические тесты для самых-самых чайников.
В первой главе документации по PHPUnit на примерах очень доступно рассказывается, что такое автоматическое тестирование.


Даже хорошие программисты допускают ошибки. Разница между хорошим программистом и плохим заключается в том, что хороший программист как можно чаще использует тесты, чтобы найти свои ошибки.
Чем раньше Вы начнете тестировать, тем выше Ваши шансы найти ошибку, и тем ниже цена исправления.
Это объясняет, почему откладывание тестирования до момента передачи программы заказчику является очень плохой практикой. Большинство ошибок так и не будет найдено, а цена исправления станет такой высокой, что Вам придется составить большой график работы, т.к. сразу Вы не сможете их все исправить.
Читать дальше →

Всем по сообщению

Reading time6 min
Views15K
В сегодняшних веб-приложениях часто требуется выдать посетителю некоторое оповещение. Будь то «Ваш комментарий сохранён и ожидает модерации» или же «Благодарим за проявленный интерес, мы обязательно вышлем Вам приглашение, как только откроемся», эти небольшие сообщения появляются то тут, то там постоянно, так что весьма здорово иметь удобный интерфейс для отображения их пользователю.

Идущее в поставке с Django приложение аутентификации и авторизации (django.contrib.auth) всегда включало базовый функционал для отображения всплывающих сообщений пользователю, но он имел несколько досадных недостатков. В Django 1.2 же теперь есть совершенно новый фреймворк для таких сообщений, написанный в первую очередь Тобаясом Макналти (Tobias McNulty).

Читать дальше →

Одноврéменно || Одновремéнно

Reading time2 min
Views933
image

Введение


ZendX_Console_Process_Unix позволяет разработчикам создавать объекты под видом процессов, и таким образом параллельно выполнять несколько задач. Из-за особенностей реализации на текущий момент эта возможность доступна только на *nix системах, таких как Linux, Solaris, Mac / OSX и другие в CLI или CGI режиме. Кроме того для работы этого компонента необходимы следующие модули: Shared Memory, Process Control и POSIX. Если одно из требований не выполняется, то будет брошено исключение.

Основы использования ZendX_Console_Process_Unix


ZendX_Console_Process_Unix это абстрактный класс, который должен быть расширен пользователем. В нем находится единственный абстрактный метод _run(), который должен описывать реализуемый алгоритм обработки тех или иных данных. Так же в классе определенны методы для проверки состояния процесса и обмена переменными между основным и дочерними процессами.

Метод _run(), а так же каждый метод вызванный внутри него будет выполняться в отдельном процессе. Любой другой метод, вызванный в вашем приложении будет выполняться в родительском процессе.

Методы setVariable () и getVariable () могут быть использованы для передачи переменных между родительским и дочерними процессами. Для наблюдения за статусом дочернего процесса следует вызывать внутри него метод _setAlive () через короткие промежутки времени, таким образом родительский процесс сможет получить информацию о состоянии дочернего процесса посредством вызова метода getLastAlive (). Чтобы получить PID дочернего процесса, родитель может вызвать getPid().
Читать дальше →

Строительные блоки Ruby

Reading time13 min
Views19K
Хвастаясь классными особенностями Ruby перед непосвященными (или перед партнером по языковому спаррингу), возбужденный рубист часто хватается за «мощный синтаксис блоков» в Ruby. К сожалению, для питониста или джависта остаются непонятными возможности пресловутого «мощного блочного синтаксиса» из-за отсутствия соответствующих механизмов в их языках.

Начнем с того, что мы обычно указываем на Rake, RSpec или Sinatra в качестве примеров удивительного использования блочного синтаксиса:
Читать дальше →

Сервис для сборки Zend Framework в один файл

Reading time1 min
Views1.3K
Здравствуйте, уважаемые хабрачитатели!
Сей краткий пост посвящен небольшому сервису по сборке Zend Framework-a в один файл.
Зачем это делать, не раз уже писалось на хабре (например, тут), но если кому-то лень читать, я передам основной тезис: при использовании кэшера опкода (к примеру, eaccelerator) сборка фреймворка в один файл дает большой прирост производительности.
Сервис находится здесь. Кроме меня, его никто не тестировал, так что прошу сообщать о найденных багах.
На данный момент исходным материалом для сборок служит Zend Framework версии 1.10.2.
Буду рад, если кому-то это окажется полезным.

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity