Двухпроходное View в Kohana

В Kohana я обычно использую класс Template_Controller. Очень удобно — layout один, изменяешь только контент. Но как быть если на одной какой-то странице нам понадобилось подключить CSS- или JS-файл?! C js- файлом еще ладно, его можно подключить посредине страницы (но это как-то некрасиво), а как же css?! — это невалидно. Подключать на весь layout тоже неохота. Хочу подключать не в контроллере, а в шаблоне к примеру так:
<?php head::addCSS('main')?>


( Читать дальше )

Создание файла с уникальным именем

Иногда нужно записывать файлы в одну папку, и нужно предусмотреть, что файлы могут иметь одинаковое имя, т.е. можно перезаписать старый файл. Существует много методик которыми пользуются веб-мастера для уменьшения вероятности коллизий (совпадений) — именовать файл основываясь на уникальной информации (user_id например), md5 времени и так далее. Эти же методики находят применение в большинстве фреймверков. В подавляющем большинстве случаев этих методик достаточно, но не всегда. Мне понадобилось придумать метод создания уникального имени файла, да так чтобы сохранять оригинальное имя файла и лишь в случае совпадения его изменить. Можно конечно перед созданием файла проверять существование «тески», — но как же быть в случае большого количества потоков? Решение есть

( Читать дальше )

Транслит: хелпер для Kohana

Данный фрагмент кода нашел где-то на просторах рунета и пишу скорее для себя чем для читателей. Предназначена функция для перевода русского текста в транслит. А вдруг кому-то еще пригодится:

( Читать дальше )

Хранение файлов

Советую этот сервис для хранения файлов. Бесплатно дается 2 Gb, но бесплатно можно увеличить этот объем до 5 Gb (каждый кто зарегется по вашей ссылке добавит вам 300 Mb). Можно выложить свои файлы, фотографии. При желании можно выложить файл в публичный доступ, причем с прямой ссылкой. Если зарегитесь по моей реферальной ссылке, то получите 2.3 Gb. Клиент под linux работает отлично. Обзор можно почитать тут http://habrahabr.ru/blogs/web_2_0/57164/
Моя ссылка — https://www.getdropbox.com/referrals/NTkzNjA5Njk

Настройка FTP

Долго же пришлось возится мне с настройкой FTP-сервера. Для админа — это конечно рутинная работа, но я то разработчик сайтов. Может кому-то пригодится мое решение. В сети мануалов полно, но вот законченного я так и не видел.
Сразу скажу что существует два основных сервера для ftp — это proftpd и vsftpd. Я ставил оба. Первый как-то мне сразу не понравился — слишком навороченный, много памяти занимает (оперативки). Для меня это очень критично, так как у меня VPS и так слабоват. Так что я остановил выбор на vsftpd. Последний очень легкий и как мне показалось основательно быстрее.
Поставил его из пакетного менеджера:
aptitude install vsftpd


( Читать дальше )

Переехали на новый движок

Устал от тормознутого Wordpress. Теперь буду обкатывать LiveStreet. Пока очень нравится. Быстрая как черт. Скорость стала критична, так как переехал на собственный VPS, а ресурсов очень мало. Скоро может чего напишу про настройку FTP на сервере. Так как именно это вызвало проблемы (потратил 2 часа). Сервер развернул на ubuntu server за 10 мин. От панели управления отказался, так как я и с консолью справлюсь. Зато знаю как настроена моя система до мелочей.

Интеграция Doctrine в Kohana

Интеграция doctrine(далее доктрины) осуществляеться с помощью создания модуля к Kohana (далее кохана). На исключительное авторство не претендую. Метод взял у какого-то буржуя и немного доточил.
Кто незнает что такое доктрина — это ORM. Намного более продвинутый чем в кохане. Один только ее исходный код раза в три больше чем вся кохана. Так например модели строятся автоматически из базы или конфига (схемы). Есть возможность начальный данные перегнать в текстовые файлы. Есть мигрирование. Полная поддержка связей (one to many, many to many, ono to one). Вобщем могу сказать что она сильно ускоряет разработку, работать с ней одно удовольствие. Но есть только один минус как по мне — тормознутость. По умолчанию она раз в 10 медленнее встроенного орма в кохане. При выполнении она занимает 5 Mb в памяти
После того как создадим модуль, для его корректоной установки понадобиться всего несколько действий:
  • Добавить в корень проекта папку modules (если ее еще нет) а в нее папку doctrine. Это и есть наш модуль.


( Читать дальше )

Обновился до ubuntu 9.04

Я работал на ubuntu 8.10 (вернее kubuntu). Решил обновится до последней версии. Но увы! После первого ребута машина отказалась запускаться. Зашел с LiveCD изменил конфиг menu.list что в грабе — запустил. Обнаружил что отвалился звук. Пересобрал из сорцов драйвер ALSA — звук завел. Теперь вроде работает.

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

Компоненты. Продолжение

Получив несколько комментариев на свой предыдущий пост, на хабре и здесь, возникли мысли написать этот пост.
Такое впечатление что я все это время чесал правое ухо левой рукой. Впредь компонент для меня — это класс со статическими методами лежащий в библиотеках. Теперь в шаблоне достаточно вызвать метод и сделать ему echo.
Пишем класс widget.php. Кидаем его в папку libraries:
<?php
class widget
{
    public static function example()
    {
        return View::factory('_example',array('var'=>'Привет мир'));
    }
}

?>


( Читать дальше )
Rambler's Top100