Bug Tracker: установка фреймворка и создание базы данных (часть вторая)

1 марта, 2009
bug_tracker_logo_part2

Сегодня я продолжаю рассказывать о разработке собственной системы отслеживания ошибок. В прошлой статье только вкратце была описана общая идея и возможности, а также показан предварительный эскиз приложения.

Но прежде чем переходить к основной теме, хочу поблагодарить всех комментаторов и особенно AmdY, Big_Shark и Алексея Качаева за советы!

Первоначально я планировал доделать приложение полностью, и только потом опубликовать этот цикл постов. Но так получается даже лучше. Всегда есть шанс, что читатели найдут недостатки, и мне не придется переделывать все приложение чтобы их исправить ;)

В прошлый раз с инструментами мы определились (используем PHP, фреймворк CodeIgniter, MySQL и jQuery).

Сейчас нам нужно их установить и настроить.
Читать дальше »

Опубликовано в Ajax, CodeIgniter, JavaScript, MySQL, PHP, Web разработка, htaccess | Комментарии (22) »

Создаем собственную систему отслеживания ошибок на PHP

26 февраля, 2009
bug_tracker_logo

Приветствую всех!

Это первая статья о создании полнофункционального web приложения, которое будет представлять собой систему отслеживания ошибок (bug tracking system).

О том, что представляют собой такие системы и какие они бывают можно рассказывать долго, но пока я ограничусь только определением из википедии.

Система отслеживания ошибок (англ. bug tracking system) — прикладная программа, разработанная с целью помочь разработчикам программного обеспечения (программистам, тестировщикам и др.) учитывать и контролировать ошибки (баги), найденные в программах, пожелания пользователей, а также следить за процессом устранения этих ошибок и выполнения или невыполнения пожеланий.

Почему именно баг трекер?

Очень хороший вопрос :) Вообще-то, причин две.

Первая – это приложение не «hello world». И на его примере можно показать совместное использование PHP, JavaScript, AJAX, работу с базой данных и т.д.

Вторая – такое web приложение можно сделать достаточно простым (реализовать минимум функций), но в то же время вполне работоспособным. Ведь основная задача этого цикла статей – показать пример создания полноценного приложения, но в тоже время хотелось бы удержать его объем в каких-то разумных рамках ;)

Постановка задачи.
Читать дальше »

Опубликовано в Ajax, CodeIgniter, JavaScript, MySQL, PHP, Web разработка | Комментарии (23) »

Использование нескольких баз данных в CodeIgniter

6 февраля, 2009
codeigniter multiple db

В этой статье я хочу рассказать о возможностях, которые предоставляет PHP фреймворк CodeIgniter для одновременной работы с несколькими базами данных. Кроме того, я провел небольшое исследование производительности.

Прежде всего, поясню общий принцип. В работе с несколькими базами данных нет ничего необычного и исключительного. Если вы пишите обычный PHP скрипт (без использования фреймворков и библиотек), то для работы с двумя БД нужно просто создать два соединения.

Т.е. вызвать два раза функцию mysql_connect (если, конечно, используете MySQL).

Каждый вызов этой функции вернет указатель на соединение, используя который вы сможете отправлять запросы базам данных.

Это была теория, а на практике гораздо удобнее использовать встроенные библиотеки фреймворков для работы с базами данных. Принцип работы при этом, конечно, не меняется, но работать с ними значительно удобнее.

Я расскажу о подключении и использовании нескольких баз данных в CodeIgniter. Но, естественно, это не единственный фреймворк, который имеет встроенные библиотеки для работы с несколькими БД. Например, недавно я читал статью «Работа с несколькими базами данных при помощи ORM в Zend Framework».

В качестве примера рассмотрим подключение к двум БД.
Читать дальше »

Опубликовано в CodeIgniter, PHP, Web разработка | Комментарии (8) »

Ограничиваем доступ к файлам на сервере

15 января, 2009
file download logo

В этой статье я хочу рассказать о нескольких вариантах ограничения доступа к файлам на сервере.

Т.е. мы сделаем так, чтобы посетитель перед загрузкой в обязательном порядке выполнил какие-то действия (например, вводил captcha).

Существует два основных варианта решения задачи.

1) Скачиванием файлов будет управляет PHP скрипт.

2) Скачивание происходит через web сервер, но только в том случае, если у посетителя есть соответствующее разрешение.

Прежде всего, разберем достоинства и недостатки обоих методов.

Первый вариант. Вообще-то единственное его достоинство – это возможность реализации на shared-хостинге.

Зато недостатки очень серьезные. Файл отправляется пользователю через PHP скриты, т.е. работают все ограничения, действующие на них. Например, если для скриптов установлено максимальное время работы 15 сек, то значит, файл должен быть загружен за это время. Тоже самое и с максимально допустимым объемом памяти.

Проще говоря, никаких больших файлов отдавать таким способом не получится.

К тому же скрипты будут потреблять память, что увеличит нагрузку на сервер и скажется на производительности.

Второй вариант выглядит значительно привлекательнее. Ситуация с достоинствами и недостатками полностью противоположная. Отдавать файлы будет Apache без использования PHP. Но чтобы реализовать проверку посетителей, нужно иметь доступ к конфигу сервера (httpd.conf).

Рассмотрим общий принцип загрузки файла

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

Страницы: 1 2 3

Опубликовано в CodeIgniter, PHP, Web разработка | Комментарии (2) »

Разработка с CodeIgniter: включаем автодополнение кода в Eclipse

2 января, 2009
codeigniter pdt

Автодополнение кода, наверно, один из лучших способов защиты от механических ошибок. Если вы привыкли его использовать, то можете определить, что допустили ошибку ещё до того как увидите её. Отсутствие окошка с вариантами автодополнения – первый признак опечатки.

Eclipse, как и большинство других IDE, поддерживает эту функцию. Но автодополнение работает только для тех объектов, которые Eclipse может найти. И очень удобно, когда к таким объектам относятся не только стандартные функции PHP, но и все библиотеки и фреймворки, которые вы используете.

В этой статье я расскажу о нескольких способах подключения автодополнения кода для сторонних библиотек. В качестве примера рассмотрим фреймворк CodeIgniter.

Прежде всего, рассмотрим самый простой вариант.
Читать дальше »

Опубликовано в CodeIgniter, Eclipse, PHP, Web разработка | Комментарии (17) »

Подключаем FCKeditor к CodeIgniter

22 ноября, 2008
fckeditor codeigniter

FCKeditor, на мой взгляд, один из лучших online редакторов. И в теории его можно подключить практически к любому сайту, независимо от того какой движок/фреймворк/CMS используется.

Но, естественно, всегда существует несколько нюансов, которые немного усложняют жизнь :-)

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

Дело вот в чем. Плагины и библиотеки (пользовательские) обычно находятся в папке application, которая не обязательно должна находиться внутри DOCUMENT_ROOT. Точнее, с точки зрения безопасности, эту папку лучше убрать за пределы DOCUMENT_ROOT чтобы исключить любую возможность прямого доступа к скриптам сайта (т.е. скрипты будут доступны только через index.php).

Но FCKeditor содержит файлы картинок, стилей и т.п., к которым нужно обеспечить прямой доступ. Т.е. его нужно разместить внутри DOCUMENT_ROOT.

Как оказалось, обойти эту проблему совсем не сложно.
Читать дальше »

Опубликовано в CodeIgniter, PHP, Web разработка | Комментарии (71) »

Генератор форм для новой версии CodeIgniter

26 октября, 2008
codeigniter form generator 1.7

Думаю, все кто работает с CodeIgniter в курсе – на этой недели вышла его очередная версия (1.7).

Изменения довольно интересные и существенные (на русском здесь). Самое главное – добавлена новая библиотека для проверки форм (Form Validation).

Предыдущая версия поддерживается, но использовать её не рекомендуется. Насколько я понял, разработчики не гарантируют, что она останется в будущих версиях фреймворка.

То же самое касается и моего генератора форм. Работать со старой версией можно, но код будет совместим только с версиями 1.6 и более ранними.

Т.к. отставать от развития не правильно, я написал новую версию генератора.
Читать дальше »

Опубликовано в CodeIgniter, PHP, Web разработка | Комментарии (11) »

Генератор форм для CodeIgniter

6 октября, 2008
ci form generator

Создание форм – достаточно рутинная задача. Процесс подробно описан в документации, но можно легко сделать множество механических ошибок. Например, имена и id полей формы нужно указывать несколько раз – в контроллере и представлении.

Самое главное, что в некоторых случаях вы не получите сообщения об ошибках, а значит, найти их можно будет только с помощью тщательного тестирования. Речь идет о правилах проверки полей формы. Эти правила задаются в массиве, и при этом ключ элемента массива должен совпадать с id поля. Но если вы неправильно запишите название, то CodeIgniter будет считать, что для данного поля правила просто не заданы.

Естественно, что даже частичная автоматизация процесса может значительно сэкономить ваше время.

Сначала я пробовал использовать шаблоны для создания форм, но это было не удобно. Код должен быть размещен в разных файлах, да и количество и тип полей постоянно изменяются.

Поэтому я написал небольшой генератор форм для CodeIgniter.
Читать дальше »

Опубликовано в CodeIgniter, Web разработка | Комментарии (20) »

Кэширование части страницы в CodeIgniter

20 сентября, 2008
codeigniter partial cache

CodeIgniter имеет встроенную библиотеку кэширования страниц. Но она работает только с целыми страницами, т.е. вы не можете кэшировать часть страницы.

Представьте такую ситуацию. Большинство страниц сайта формируется на основе запроса пользователя, например, вы показываете результаты поиска. Кэшировать такие страницы нет никакого смысла, т.к. вероятность того, что посетители будут искать одно и тоже, довольно низкая.

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

Специально для таких случаев я написал небольшую библиотеку (ссылка на архив с ней находится внизу страницы).
Читать дальше »

Опубликовано в CodeIgniter, PHP, Web разработка | Комментарии (42) »

Облако тегов для сайта (кластеризация)

18 сентября, 2008
tag cloud clustered

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

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

Я кратко поясню, в чем основной недостаток облака тегов. Представьте, что у вас есть парочка тегов, которые вы используете очень часто и несколько других тегов, которые встречаются от случая к случаю. Каким шрифтом будут написаны имена тегов?
Читать дальше »

Опубликовано в CodeIgniter, PHP, Web разработка | Комментарии (11) »