Обновить
8
0
crazyprog @crazyprog

Пользователь

Отправить сообщение

Иерархические структуры данных и Doctrine

Время на прочтение15 мин
Количество просмотров84K

Введение



Хранение иерархических данных (или попросту — деревьев) в реляционных структурах задача довольно нетривиальная и вызывает некоторые проблемы, когда разработчики сталкиваются с подобной задачей.

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

Тем не менее, задача «хранить деревья в базе данных» рано или поздно возникает перед любым разработчиком.

Ниже мы подробно рассмотрим, какие существуют подходы в организации хранения деревьев в реляционных БД, а также рассмотрим инструментарий, который нам предоставляет ORM Doctrine для работы с такими структурами.
Читать дальше →

Проверяем качество сайта

Время на прочтение5 мин
Количество просмотров38K
Итак, допустим, вы руководитель проектов, у вас есть команда (программист, верстальщик, дизайнер, кто то еще) и вы создаете сайты. Проблема в том, что руководителю проектов необходимо знать совершенно все аспекты создания сайта, начиная от дизайна, и кончая безопасностью, чаще всего – так не бывает. Если руководитель проектов бывший дизайнер, он справиться с такими аспектами как дизайн и юзабилити, но вот в техническом плане у него (у вас) будут проблемы. Бывает и так, что руководителем становиться менеджер, конечно, он великолепно управляет людьми, у него ярко выраженные лидерские способности… но в техническом аспекте ему приходиться полагаться на свою команду, это хорошо, если команда – настоящие профессионалы, а если нет, то спрос будет не с команды, а с ее руководителя. В этой статье, я постараюсь описать несколько моментов, которые помогут вам оценить качество создаваемых вами (вашей командой) сайтов.
Читать дальше →

Цель — привлечение клиентов

Время на прочтение3 мин
Количество просмотров5.2K
За последние 3-4 года я не встречал ни одного задания на разработку сайта, в котором бы не было такой цели. Стоит отметить что наша специализация — разработка корпоративных сайтов. Каждая компания хочет чтобы их сайт стал инструментом привлечения клиентов, но ни одна компания до конца не верит в то что это возможно. Не верят, потому что не могут совместить эту цель с реальностью.

Легко сказать: «Мы хотим привлекать клиентов через сайт». Но кто эти потенциальные клиенты? Где они? Что для них важно? Почему они выберут именно вас? Что они делают в интернете? Как они попадут на сайт?
Читать дальше →

Yii Framework

Время на прочтение2 мин
Количество просмотров40K
Случайно встретился ещё один PHP-фреймворк. Обычно новые фреймворки я просматриваю мельком, но этот меня очень заинтересовал.

Авторы (Qiang Xue, Xiang Wei Zhuo), возможно, известны вам по довольно гибкому, но и довольно тормознутому фреймворку Prado.

Итак, что же в нём такого интересного?
Читать дальше →

Удобное профилирование в Kcachegrind

Время на прочтение1 мин
Количество просмотров8.3K
открыл для себя ядерную фичу при профилировании с xdebug+kcachegrind) (для себя по крайней мере).
Вообщем нужно запустить дебаггер и остановить на первой строке, потом одновременно загрузить в kcachegrind файл, куда xdebug постепенно сливает результат профайлинга. Далее дебаггер нужно сдвинуть на след. строку, потом нажать «reload» в kcachegrind и вауля). Файл профилирования заново загружается и информация обновляется. Весь процесс работы php, шаг за шагом, виден в буквальном смысле как на картинке(вкладка call graph).
PS думаю, есть смысл прикрутить к этому делу анимацию и тогда процесс разработки вообще будет сравним с просмотром сериала)
PSPS негативным моментом была ошибка кэша kcachegrind(насколько я понял), что решилось корректированием файлов настройки в домашней папке.
Проверял на:
ОС Linux
Kcachegrind 0.4.6
Eclipse (PDT)
xdebug 2.0.0-2

Издержки больших проектов или взгляд на программирование в команде изнутри

Время на прочтение1 мин
Количество просмотров3.9K
Ни для кого не секрет, что разработка больших программных продуктов требует не только эффективного руководства, но и эффективных процессов, которым следуют все разработчики. На примере своей компании я постараюсь описать жизненный цикл проекта и цену его разработки и поддержки. Те, кто работает в небольших командах из нескольких человек, смогут сравнить и представить, что их ждет при увеличении штата или же чего они избежали, если расширяться не планируют. А в комментариях можно покритиковать, указать на ошибки и предложить альтернативы.

Итак, собственно, к делу.

Мы занимаемся системами электронной биржевой торговли, аналитикой рынка и поставкой маркет-данных в реальном времени. К таким системам предъявляются повышенные требования по надежности — каждая ошибка может привести к потере больших денег.
Читать дальше →

Оптимизация изображений, часть 4: последовательные JPEG — быть или не быть?

Время на прочтение1 мин
Количество просмотров6.2K
Примечание: ниже перевод заметки «Image Optimization, Part 4: Progressive JPEG…Hot or Not?» из блога YUI. В ней уже известный по прошлым статьям Stoyan Stefanov рассматривает использование последовательных (progressive) JPEG с точки зрения клиентской оптимизации. Мои комментарии далее курсивом.

В своей предыдущей статье «Оптимизация изображений, часть 3: 4 шага для уменьшения размера файлов» последовательные JPEG-файлы были вскользь упомянуты как одна из возможностей для оптимизации JPEG. Эта статья рассматривает данный вопрос более глубоко, включая результаты проведенного эксперимента над 10000 изображений.

Базовые (baseline) и последовательные JPEG



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

Загрузка базовых JPEG

Загрузка базового JPEG-файла в браузере. По нажатию откроется полная версия.

Последовательные JPEG являются другой разновидностью данного формата: они загружаются (как можно понять из названия) последовательно. Сначала вы увидите картинку низкого качества. Затем, по мере поступления графической информации, качество изображения будет постепенно улучшаться.

Загрузка последовательных JPEG

Загрузка последовательных JPEG. По нажатию откроется полная версия.

Читать дальше на webo.in →

Онлайн-курс оптимизации производительности MySQL

Время на прочтение1 мин
Количество просмотров2.1K
На Хабре некоторое время назад спрашивали про курсы по оптимизации MySQL. Мы разработали такой курс и проводим его дистанционно через интернет. Вот программа курса.

Курс продолжается 2 месяца (начать можно в любое время) и построен на выполнении практических заданий под руководством преподавателя. Все задания взяты из реальной практики, преподаватель ответит на все возникающие вопросы. Действует гарантия 100% возврата средств в течение первых двух недель по первому требованию.

Кризис не самое оптимальное время, чтобы пиарить новую услугу, но это оптимальное время для получения новых знаний. Получить знания можно не только на нашем курсе, но и используя открытые источники:
I. Видеозаписи докладов на Highload++:II. Статьи по оптимизации MySQL на webew.ru
III. Задать интересующий вопрос на форуме SQLinfo.ru

Веб-сервисы в теории и на практике для начинающих

Время на прочтение9 мин
Количество просмотров635K

Что такое веб-сервисы?



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

Если посмотреть на веб-сервисы в разрезе стека сетевых протококолов, мы увидим, что это, в классическом случае, не что иное, как еще одна надстройка поверх протокола HTTP.

С другой стороны, если гипотетически разделить Интернет на несколько слоев, мы сможем выделить, как минимум, два концептуальных типа приложений — вычислительные узлы, которые реализуют нетривиальные функции и прикладные веб-ресурсы. При этом вторые, зачастую заинтересованы в услугах первых.

Но и сам Интернет — разнороден, т. е. различные приложения на различных узлах сети функционируют на разных аппаратно-программных платформах, и используют различные технологии и языки.

Чтобы связать все это и предоставить возможность одним приложениям обмениваться данными с другими, и были придуманы веб-сервисы.
Читать дальше →

5 советов для стартапов и предпринимателей

Время на прочтение3 мин
Количество просмотров768
Стартапы! Хотите быть инновационными? Возвращайтесь в гараж! Таков лозунг, предложенный венчурными капиталистами во время Конференции Dow Jones VentureWire Technology Showcase, которая недавно прошла в Рэдвуд-Сити, Калифорния.

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

Контроль скалярных типов в PHP 5

Время на прочтение3 мин
Количество просмотров3.1K
[Обновлено]: Внесены некоторые изменения в код. Спасибо ithilion и LoneCat

Все уже знают что в PHP 5 в аргументах функций можно указывать их тип, за исключением… скалярных типов, т.е.: integer, string, boolean, float, и т.д.

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

Ниже я попытаюсь рассказать, как можно оптимизировать это решение, а также стоит ли им пользоваться, в принципе, в продакшн релизах.
Читать дальше →

Умный экспорт из SVN с помощью консоли

Время на прочтение2 мин
Количество просмотров5.1K
Использовать svn я начал, работая в windows и соответственно в качестве клиента использовал TortoiseSVN.
В то время я был очень рад новой возможности, описанной в статье Умный экспорт из SVN при помощи TortoiseSVN.
Совсем недавно сделал то, что давно не находилось времени сделать — поставил на свой рабочий компьютер linux.
И вот незадача, ни в одном из графических клиентов, опробованных мной, не обнаружил схожей функциональности.
Мало того. Почитав svn --help не нашёл опции, дающий такой результат.
Обидно. Учитывая, что приучил уже отдел делать такие экспорты для плавного обновления проектов.
В-общем, не буду тянуть: написал на bash скрипт, реализующий сравнение и экспорт отличий между двумя ревизиями.

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

Безопасность (шифрование) трафика

Время на прочтение5 мин
Количество просмотров102K
SSLПараллельно с развитием технологий защиты интернет-трафика от несанкционированного доступа развиваются и технологии перехвата защищенного трафика. Перехватить и изучить незашифрованный трафик пользователя уже давно не составляет труда даже для рядового юзера. Практически каждому известно слово «сниффер». Теоретически, защищенные SSL/TSL-соединения перехватить обычными средствами невозможно. Но так ли это?
Читать дальше →

Быстрая перекраска вещей на сайте

Время на прочтение2 мин
Количество просмотров2K
image
Существуют моменты когда необходимо предоставить пользователям выбор цвета какой либо вещи. Есть несколько способов выхода из этой ситуации.

Здесь я покажу очень простой и незамысловатый способ быстрой перекраски, на примере iPod Shuffle.
Читать дальше →

Делаем полноценный JS-прелоадер для AJAX-приложения

Время на прочтение5 мин
Количество просмотров39K
Многие программисты оптимизируют JavaScript и CSS-код, чтобы страница грузилась быстрее.
Но не все они делают прелоадеры, которые дают пользователю эффект субъективно более быстрой загрузки.
хочу продолжения

Форматирование длинных SQL-запросов

Время на прочтение1 мин
Количество просмотров16K
Вступил недавно в локальный оффлайн-холивор на тему форматирования длинных SQL-запросов.

Собственно, весь холивор сводится к тому, что удобнее читать — INNER JOIN ДО таблицы, или ПОСЛЕ неё, а так же — AND — до или после обьявления условия.

Два варианта и вопрос к хабровчанам под катом:

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

(a)Slideshow — jQuery плагин для организации слайд-шоу

Время на прочтение4 мин
Количество просмотров5.4K

Решился потренироваться в написании jQuery плагинов, и вот предлагаю на суд общественности мой первый плагин…
Читать дальше →

RESTful PHP — 5 простых советов

Время на прочтение4 мин
Количество просмотров84K
REST (Representational state transfer) — это архитектурный стиль или свод соглашений для web-приложений и сервисов, основанный на манипулировании ресурсами и спецификацией HTTP. Впервые об этом заговорил Рой Филдинг (Roy Fielding) — один из отцов основателей HTTP (Hypertext Transfer Protocol).

Web-приложения зачастую игнорируют спецификацию HTTP и двигаются вперёд используя полюбившиеся возможности: GET и POST, 200 OK и 404 NOT FOUND. Так как используются программируемые web-приложения, со своими собственными API, то решение игнорировать спецификацию HTTP, может создать проблемы в дальнейшем. Как следствие — имеем множество приложений с интерфейсами GET и POST. Например интерфейс удаления пользователя: GET /user/1/delete против POST /user/delete {id=1}; в случае REST можно указать /user/1 это ресурс, а удаление HTTP метод DELETE.
Читать дальше →

Тюнинг Zend Framework + Doctrine

Время на прочтение8 мин
Количество просмотров2.6K

Скрещиваем двух «зверей»



В принципе, скрестить Zend Framework с Doctrine не так уж сложно. Но прежде поговорим о подготовительной работе. По мнению автора, предлагаемую по умолчанию структуру файлов проекта Zend Framework можно сделать чуть более оптимальной.

Так выглядит структура файлов проекта Zend Framework по умолчанию:

/
  application/
    default/
      controllers/
      layouts/
      models/
      views/
  html/
  library/

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

Три первых шага к оптимизации LAMP

Время на прочтение2 мин
Количество просмотров5.5K
Бытует мнение, что связка LAMP (Linux+Apache+Mysql+PHP) не требует особой настройки и работает «из коробки». Это далеко не так. После того, как я долго убеждал товарища установить кеширующий акселератор PHP xcache, я решил провести небольшой эксперимент и попробовать выключить xcache на своём виртуальном сервере, находящемся под небольшой нагрузкой (около хита в секунду). В реальной жизни нагрузка на процессор мала, а вот память загружена сильно, т.к. её немного (256МБайт).

Результаты эксперимента превзошли все ожидания.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Зеленоград, Москва и Московская обл., Россия
Зарегистрирован
Активность