Firebug и отсутствие места на диске C:.

Наткнулся на интересное сообщение Firebug, которое выдается каждый раз когда на диске C (Windows) нет свободного места….

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

Будьте внимательнее!

Codeigniter vs Kohana

VS

Раунд 1 MVC.

Kohana

При объявлении собственного конструктора в контроллере, необходимо вызвать конструктор базового класса, так как Kohana основан на ООП и PHP 5 синтаксис этого вызова следующий:

parent::__construct()!

в отличии от

parent::Controller()

в Codeigniter.

В отличии от Codeigniter, Kohana требует что бы в наименование класса контроллера присутствовал постфикс «_Controller», не указав который, при обращении к контроллеру получаем сообщение об ошибке «Fatal error: Cannot redeclare class ».

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

Для обозначения методов, доступных только внутри контроллера (не доступных с сайта), Codeigniter предлагает использовать префикс «_» в названии метода.

Пример:

   public function _some_action() - метод недоступный для вызова через URL сайта.

Kohana предлагает два варианта решения этой проблемы (один из которых наиболее интуитивен, по моему мнению), а именно:

можно объявить метод как privateтакой метод недоступен через URL сайта

Пример:

  private function some_action() -  приватный метод контроллера.

как и в Codeigniter можно объявить закрытый метод с префиксом «_»

Пример:

 public function _some_action()

— так же приватный метод.

Можно комбинировать два этих способа и объявить метод следующим образом:

 private function _some_action()

Контроллер в Codeigniter может содержать еще две функции, аналога которых пока нет в Kohana:

_remap($method) — данная функция предназначена для локального роутинга, т.е. перенаправления на другие контроллеры приложения. В качестве параметра ей передается запрошенный в URL метод.

_output($out) — функции передается обработанное отображение, предназначенное для отсылки браузеру. Данная функция может быть использована для конечной обработки вывода.

Отображения (VIEW)

В обоих фреймворках отображения (или предстваления, или view) — это просто PHP сценарии, содержащие в основном HTML-код. Однако способ работы с отображениями кардинально отличается в этих фреймворках.

Codeigniter

Для загрузки файла отображения из контроллера используется вызов метода:

  $this->load->view(«view_file»);

view_fileимя файла отображения без расширения «php».

В Codeigniter одновременно с загрузкой происходит и вывод отображения в браузер пользователя.

Для передачи параметров в представление, используется следующий вызов:

 $this->load->view(«view_file»,$some_data);

где $some_dataассоциативный массив содержащий параметры для отображения.

Пример:

 $some_data['user_fname'] = 'Андрей';
 $some_data['user_lname'] = 'Опейкин';

Если файл отображения будет содержать следующий код:

<html>

<body>

<h1>Привет $user_fname $user_lname!</h1>

</body>

</html>

То «отрендеренное» отображение (страничка, которую увидит пользователь) будет выглядеть так:

<html>

<body>

<h1>Привет Андрей Опейкин!</h1>

</body>

</html>

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

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

 $page = $this->load->view(«view_file»,$some_data,TRUE); // содержимое присваивается переменной $page

Kohana

Для загрузки файлов отображений существует два способа:

Использование конструктора класса View

Пример:

 $view = new View(«view_file»);

Вызов статичного метода (метод фабрики)

Пример:

 $view = View::factory(«view_file»);

В обоих случаях «view_file» — имя файла отображения.

Использование любого из этих способов, приводит лишь к созданию объекта отображения, вывод содержимого отображения в браузер пользователя НЕ происходит.

Воспользуемся примером отображения, описанного выше.

Для передачи параметров в отображение используется объектный подход.

 $view->user_fname = 'Андрей';
 $view->user_lname = 'Опейкин';

Так же можно передать параметры методом set();

 $view->set('user_fname','Андрей');
 $view->set('user_lname','Опейкин');

Установка параметров отображения так же как и создание объекта отображения НЕ приводит к пересылке информации пользователю.

Для отправки вывода пользователю необходимо вызвать метод render() отображения

 $view->render(TRUE);

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

Модели (Models)

В обоих фреймворках использование моделей НЕ является обязательным. При желании можно обойтись контроллерами и представлениями.

Kohana

Как и в случае с контроллерами, требует, чтобы класс модели имел определенный постфикс — «_Model».

Пример:

 class User_Model extends model

.........

}

Для загрузки модели из контроллера, необходимо просто создать экземпляр класса модели:

 $user = new User_model();

После этого можно обращаться ко всем методам и свойствам данного объекта.

Если в конструкторе модели вызывается родительский конструктор, т.е. конструктор имеет вид:

 public function __construct(){
 parent::_construct();
  ...............................
}

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

 $this->db

Codeigniter

Для загрузки класса модели необходимо использовать следующий код:

 $this->load->model(«model_name») ;

После этого к методам модели можно обращаться следующим образом:

 $this->model_name->some_method();

Объект для работы с базой данных НЕ создается автоматически при загрузке модели, для того что бы объект все таки создался, необходимо передать значение TRUE в качестве третьего аргумента:

 $this->load->model(«model_name»,'',TRUE) ;

Второй аргумент определяет псевдоним модели, по которым она будет доступна в контроллере.

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

SEO и я

Занимаясь разработкой web-приложений, я как-то не задумывался, о таких вещах как „раскрутка“ и „оптимизация“ (в основном из-за того что приходилось разрабатывать интранет-проложения). Однако впоследствии, данные темы, меня очень заинтересовали.

Я решил уделить немного времени изучению данного материала.

Для начала мне хотелось почерпнуть какие то базовые сведения о том, что такое SEO и „с чем его едят“. Поискав материал, я наткнулся на интересную книгу
, которую и решил взять за основу.

В качестве «объекта» для раскрутки, я выбрал собственный блог, который был создан не так давно!

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

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

  1. Регистрация доменного имени заведение блога и начальное наполнение блога (куда же без этого!).

  2. Регистрация блога в поисковых системах.

  3. Оптимизация контента для поисковиков.

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

Статистика по каждому из этапов будет собираться в течении недели (или двух), результаты, полученные с помощью Google Analytics, буду публиковать в этом блоге.

Автосалон 2008

Вчера мне посчастливилось побывать на Автосалоне 2008. Не могу сказать, что это событие вызвало у меня море эмоций, однако кое что интересное там все таки было!

Предлагаю Вашему вниманию несколько фотографий….но не автомобилей, а их отдельных частей — а именно — колесные диски! Диски всех автомобилей, которые были представлены на выставке, сфотографировать практически нереально (да и нет особого смысла), поэтому я снимал и выкладываю здесь только то, что мне самому пришлось по душе.

Lexus

Lexus

cadillac

cadillac

Porsche

Porsche

Mazda

Mazda

Honda

Honda

Peugeot

Peugeot

Наш ответ хамеру....

Наш ответ хамеру….

купе Laguna

купе Laguna

Mitsubishi

Mitsubishi

Mitsubishi

Mitsubishi

Suzuki

Suzuki

Alfa Romeo

Alfa Romeo

Citroen

Citroen

Honda

Honda

и я туда же….)))

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

Надеюсь блог будет «живым» и интересным!

Поживем, увидим!