Главная   Новости   Поиск   
Азбука программиста




Яндекс.Метрика

Устанавливаем и подготавливаем Bug Tracker

Устанавливаем и подготавливаем Bug Tracker

Продолжим говорить о разработке собственной системы отслеживания ошибок.Считается, что с инструментами мы определились: используем PHP, MySQL и jQuery, фреймворк CodeIgniter.

На данный момент необходимо их правильно установить и настроить.

Web сервер, MySQL и PHP  уже давно настроены, потому необходимо только скачать CodeIgniter и jQuery.После чего нужно распакованные архивы залить в любую созданную папку на сервере. В итоге должна получиться приблизительно последующая структура папок.

index.php
.htaccess
system/ js/ jquery-1.3.2.min.js
css/

Файл index.php и папка system – из дистрибутива CodeIgniter.

.htaccess – берем самый обыденный.

Основное его предназначение – автоматом подставлять index.php в ссылки. Т.е. ссылка вида

bugtracker.local/bugtracker/page/2

будет автоматически переделанна в

bugtracker.local/index.php/bugtracker/page/2

При всем этом происходит это не всегда, а только тогда если обозначенного в URL файла по сути не существует вообще. Т.е. если запрос будет к js либо css файлу, то index.php подставляться не будет.

Если есть непреодалимое желание чтобы приложение находилось в какой-либо папке (к примеру, mysite.domen/bugtracker/), то необходимо будет поменять параметр RewriteBase.

На настройке CodeIgniter тщательно останавливаться не будем. Просто перечислим файлы, в которые необходимо внести конфигурации. Все конфигурационные файлы находятся в папке system/application/.

autoload.php, config.php – тут нужно указать адрес самого приложения.

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

routes.php – здесь необходимо указать только заглавие контроллера, который будет употребляться по-умолчанию. Назовём его bugtracker.

$route['default_controller'] = "bugtracker";

database.php – здесь нужно заполнить массив с параметрами подключения к БД.

 

Переходим к упражнению следующему: создаём БД.

Нам потребуются три таблицы:

1) bugs – употребляется для хранения инфы о отысканных багах и комментах к ним.

title – естественно это заголовок;
id – первичный ключ;
uname – имя юзера, который оставил сообщение;
categoryid – id той самой категрии к которой относится найденный баг (он обьязательно должен совпадать с подходящим полем в таблице categories);
description – описание бага;
status – тут будет храниться информация о состоянии бага (по-умолчанию, «не исправлено»);
replyto – это поле устанавливает связь меж багами и комментами к ним (подробнее на этом мы остановимся чуток позднее).

2) categories – перечень категорий.

id – первичный ключ;
link – ссылка на категорию (латинскими знаками);
name – заглавии категории.

3) users – информация о юзерах. В этом случае этими юзерами будут только админы баг трекера. Оставлять сообщения и комменты сумеет кто угодно без авторизации.

id – первичный ключ;
name – имя юзера;
pass – пароль.

Напишем sql-запросы, которые помогут нам в нашей нелегкой работе по созданию этих таблиц:

CREATE TABLE `bugs` ( `id` int(11) NOT NULL auto_increment, `title` varchar(300) NOT NULL, `uname` varchar(100) NOT NULL, `categoryid` int(11) default NULL, `description` text NOT NULL, `status` varchar(100) NOT NULL default 'не исправлено', `replyto` int(11) default NULL, PRIMARY KEY (`id`), KEY `replyto` (`replyto`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `bugs` ADD CONSTRAINT `bugs_ibfk_1` FOREIGN KEY (`replyto`) REFERENCES `bugs` (`id`) ON DELETE CASCADE; CREATE TABLE `categories` ( `id` int(11) NOT NULL auto_increment, `link` varchar(100) NOT NULL, `name` varchar(300) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE `users` ( `id` int(11) NOT NULL auto_increment, `name` varchar(100) NOT NULL, `pass` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Где живет Ривз и почему Киану можно встреить в мето? Вот сайт zvezd-info.ru в этом разобрался.

Самый увлекательный момент тут касается таблицы bugs и её поля replyto. Оно даёт возможность отличить комментарий к багу от самого бага. Если значение в нём не равно NULL, то это комментарий, если равно – баг. При всем этом число, записанное в поле replyto, показывает, к какому багу относится данный комментарий.

К примеру, в таблице есть четыре последующий записи:

id title … replyto 1 Bug 1 … NULL 2 Comment 1 … 1 3 Comment 2 … 1 4 Bug 2 … NULL

Это значит, что мы имеем два бага (записи 1 и 4) и два комментария (записи 2 и 3), которые относятся к первому багу.

Кстати, значение поля categoryid для всех комментариев равно NULL.

Здесь появляется неувязка. Что будет с комментами, если мы удалим баг к которому они относятся? Можно, естественно, решить эту делему так:

  • отыскать все комменты, которые относятся к данному багу;
  • удалить их;
  • собственно, удалить сам баг.

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

Для этого мы берем и объявляем наше поле replyto наружным ключом (т.е. связываем его с полем id) и указываем опцию ON DELETE CASCADE (каскадное удаление) (строчки 13-15). Сейчас при удалении записи у которой поле id = 3 движок БД будет находить в этой же таблице все записи у каких replyto = 3 и удалять их.

Именно это поле (replyto) мы и будем использовать при выводе сообщений о багах на страничках нашего баг трекера.



Безопасность

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

Читать далее