Bug Tracker: создание страниц (часть шестая)

16 марта, 2009
bug_tracker_logo_part6

Мы продолжаем разработку собственной системы отслеживания ошибок. И сегодня подробно рассмотрим создание страниц нашего приложения.

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

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

Количество записей на одной странице мы задаем в файле конфигурации (application\config\config.php).

$config['bugs_per_page'] = 5;

Получить значение этого параметра можно так:

$this->config->item('bugs_per_page');

Теперь определимся с названиями методов контроллера и структурой URL.

По-умолчанию, URL в CodeIgniter имеют такой вид:

sitename.domen/index.php/имя_контроллера/имя_метода/параметр1/параметр2/…

Контроллер у нас будет называться bugtracker, а метод, показывающий страницы с багами – page. В результате получим URL с такой структурой:

…/bugtracker/page/номер_записи

В последнем сегменте адреса указываем номер первой записи на текущей странице. Кстати, это не id бага в базе данных, это его индекс в массиве с результатами поиска по БД.

Создаём контроллер (application\controllers\bugtracker.php)
Читать дальше »

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

Bug Tracker: изменения в проекте (часть третья)

5 марта, 2009
bug_tracker_logo_part3

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

В этой статье продолжения рассказа о разработке собственной системы отслеживания ошибок. Предыдущие части вы найдете здесь и здесь.

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

База данных.

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

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

В общем, я решил, что лучше изменить базу данных сейчас, чем морочить себе голову потом :)

Новая структура базы данных выглядит следующим образом.
Читать дальше »

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

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

1 марта, 2009
bug_tracker_logo_part2

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

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

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

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

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

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

Создаем собственную систему отслеживания ошибок на 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 разработка | Комментарии (48) »

Создаем собственный сервис геотаргетинга

9 февраля, 2009
wipmania

Некоторое время назад я рассказывал об использовании Яндекс.Карт и сервиса IPLoc, который позволяет определить географические координаты посетителя по его IP адресу.

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

Конечно, проблемы бывают у всех. Но если не работает собственный ресурс, можно попытаться что-то сделать, а тут остается только ждать.

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

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

В результате я остановился на сервисе WIPmania.com. Он предоставляет и API для получения данных, и базу данных.
Читать дальше »

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

История одного мини теста или почему не стоит изобретать велосипед

15 сентября, 2008
db file test

О том, что кэширование может значительно увеличить скорость работы сайта, знают все. Но в некоторых случаях создание кэша – не самый лучший вариант.

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

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

Выполнить поиск в базе – не проблема. Но меня заинтересовал другой вопрос. Не будет ли быстрее искать данные в текстовом файле, а не базе?
Читать дальше »

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

Как получить информацию о базе данных

29 августа, 2008
mysql database info

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

Большинство учебников почему-то обходят эту тему. Но на самом деле здесь нет ничего сложного. Достаточно выполнить всего несколько запросов.

Получение списка баз данных. Всего один запрос:

SHOW DATABASES;

В результате получите названия всех существующих баз данных.

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

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

Уязвимости в MySQL и SQL запросах

21 августа, 2008
mysql vulnerabilities

Эта заметка – вольный перевод статьи Stefan Esser MySQL and SQL Column Truncation Vulnerabilities.

SQL-инъекции (SQL-injection) на сегодняшний день остаются наиболее обсуждаемыми проблемами безопасности web приложений.

В тоже время, другие уязвимости SQL запросов, например, связанные со слишком длинными входными данными, обычно игнорируются, хотя могут привести ко всем видам проблем безопасности.

Первая уязвимость касается движка MySQL
Читать дальше »

Опубликовано в MySQL, PHP, Web разработка, Безопасность | Комментарии (35) »