Рейтинг
0.00
голосов:
0
avatar

Интересные методики  

Наложение watermark на изображение в консоли

В системе должен стоять пакет ImageMagick
В консоли делается так
$convert image.jpg -gravity SouthEast watermark.png -composite image.jpg

Из php соответственно так
exec('/usr/bin/convert '.$image_path.' -gravity SouthEast '.$watermark_path.' -composite '.$image_path)

Путь к бинарнику может отличатся в разных системах. В данном примере путь корректен для Linux. Для FreeBSD это будет /usr/local/bin/convert.

Еще одно решение для пуcтых папок в Mercurial

Продолжение темы поднятой в статьях Часть1 и часть2

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

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

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

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

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

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

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

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

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

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


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

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

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

?>


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

Реализация компонентов в Kohana

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

Конечно мы не можем себе позволить обращаться к области данных из шаблона, иначе это указывало бы на нашу неграмотность. Во многих фрейверках есть для этого свои решения. Но я проведу аналогию с symfony. В последнем имеется такое понятие как компонент. Выглядит это примерно так: вы вызываете в шаблоне статический метод с указанием названия компонентов, далее происходит обращение к одноименному контроллеру, извлекаются данные из области данных и передаются в фрагмент шаблона, последний рендерится и код вставляется в нативный шаблон. Таким образом получается архитектура MVC вложенная друг в друга. Я немного упростил эту схему, сразу говорю, но суть передал точно.

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

CodeIgniter??? Подумайте про Kohana

Так исторически сложилось что работаю я в основном с фреймверком Symfony. Но к сожалению она очень тяжела и не для всех проектов годится, поэтому помню каково же открытие для меня был CodeIgniter. Ведь в основном я использую только 20% возможностей symfony, и как раз то что мне чаще всего нужно было у CodeIgniter. А мне в основном от фреймверка нужно следующее:
  • Фронтконтроллер( +Routing )

  • MVC

  • ActivaRecord / ORM

  • 2-x проходное отображение

  • Система конфигов

  • I18N, L10N

  • Cache (Drivers)

  • Куча хелперов и либ



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

Проверка email регуляркой

Сейчас пишу для проверки email регулярное выражение. Вот что своял:

"/^[\w_\.-]*@[\w_-]*\.[\w_\.-]*[a-z]$/i"

Мне кажеться вроде охватывает все. Какие есть мнения?

Подключение FCKEditor к CodeIgniter

Делаеться это так:
Заливаеться редактор в корень проекта и в system/helpers/form_helper.php пишеться функция fcke()
Это на быструю руку, вообще пользовательские хелперы туда лучше не писать.
Цитата из доки:
Хелперы, как правило, хранятся в папке system/helpers. Так же вы можете создать папку с названием helpers внутри вашей папки application и хранить собственные хелперы там. CodeIgniter сначала будет искать хелпер в папке system/application/helpers. Если директория не существует, либо файла с таким названием не найдено, CI продолжит поиск в вашей папке system/helpers.


function fcke($value='',$name='FCKeditor1',$width='600px',$height='400px',$basePath='/fckeditor/')
    {
       include_once("fckeditor/fckeditor.php") ;        
        $oFCKeditor = new FCKeditor($name) ;
        $oFCKeditor->BasePath = $basePath;
        $oFCKeditor->Value = $value;
        $oFCKeditor->Width = $width;
        $oFCKeditor->Height = $height;
        return $oFCKeditor->CreateHtml();
    }
}

Вот и все дело с концом все очень просто. Пишеться за 30 сек.И удобно подключать.
В шаблоне пишем:

<?php echo fcke() ?>

Незабываем подключить хелпер в контроллере, а лучше прямо в шаблоне

$this->load->helper('form');