Блог пользователя Nelex

Хостинг с которым я работаю. Так что это даже как-бы не реклама

Хостинг unihost.com плюс домен бесплатно
Пользовательский поиск

Понравилось? Поделитесь с знакомыми и друзьями!

Kohana 3 framework + Smarty 3 = i18n веб сайт

Локализация

И снова приветствую тебя, уважаемый читатель!

Локализация приложения вполне часто может быть необходимой. Тоже дело касается и сайтов. Но одно дело когда на сайте не используется шаблонизатор, другое - когда используется. В моем случае стало необходимостью создать локализацию сайт, за базу были взяты фреймворк Kohana 3 и шаблонизатор Smarty 3.

Небольшой отступ.

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

Вернемся к делу.

Установка шаблонизатора Smarty 3 на Kohana 3.3 у меня вызвала достаточно много проблем, аж пока я не вспомнил про то что начиная с версии 3.3 в Kohana все файлы классов должны начинаться с большой буквы... До этого момента у меня начал сильно закипать мозг и я потратил пару часов времени. Но, если будут пожелания, процесс подгонки модуля Smarty 3 для Kohana 3.3 я напишу отдельной статьей.

Итак, есть как минимум три варианта локализации веб-сайта.

eSubscribes версия 0.99a-RC1 для Drupal CMF/CMS

eSubscribes версия 0.99a-rc1

Всего пару багфиксов.

  • Отправка оповещения об новом материале только в том случае если она опубликована. Теперь вы сможете спокойно
    добавить материал и при публикации материала(событие "Обновление ноды") будет отправляться рассылка.
  • Незначительные фиксы в коде.

Что будет дальше?

Дальше будет работа над юзабилити модуля. Все будет приводиться к наиболее удобному использованию. Если у вас есть какие-то пожелания к работе модуля, пишите.

Мой переход с MySQL на MariaDB в Debian GNU\Linux

MariaDB Logo

Приветствую, читатель!

Сейчас я расскажу как я легко и быстро перешел с MySQL на MariaDB. Если у вас стоял MySQL то MariaDB подхватит его базы, но на всякий случай лучше все-таки сделайте бекап.
В общих чертах все ну очень просто.

Как я ставил Nginx+php-fpm на Debian GNU\Linux вместо Apache2

Привет, читатель!

Pre

Сейчас я опишу процесс как я устанавливал и настраивал связку Nginx+PHP-fpm для использования вместо Apache2 который стоял у меня до того. Естественно ставил я все это на локалхосте, на котором и занимаюсь веб-девом. Процесс не тривиальный и достаточно прост. Более полный мануал на который я ориентировался в описан статье Nginx+php-fpm+perl под Debian Squeeze. У меня же несколько короче и с некоторыми изменениями, в виду того что большую часть настроек майтейнеры пакетов и так уже взяли на себя.

eSubscribes версия 0.99a

Приветствую читатель!

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

eSubscribes для CMS/CMF Drupal 7

eSubscribes - модуль подписки на новые материала сайта/модуль подписки на новости сайта.

Что нового

  1. Поправлено меню. Теперь в админ. части Конфигурации вы можете видеть блок eSubscribes и видеть ссылки на нужные части модуля.
  2. Можно темизировать html-шаблон для отправки на email-ы в подпапке дефолтной темы, достаточно создать папку в папке с темой с названием esubscribes и в ней файлик template.html. По сути это тот же обычный html файл в котором нужно просто вывести два тега {subject} и {body}, соответственно тема и тело письма. Так же тот же файл можно скопировать из папки с модулем. Если в папке с темой нет нужного файла, используется файл в папке с темой.
  3. Очень полезная плюшка - настройка инстанса для SwiftMailer, теперь вы в конфигурации модуля можете спокойно настроить использовать вам для отправки функцию PHP mail(), или же использовать SMTP, или команду для локального MTA. Здесь же можно указать использовать SSL, авторизованный доступ к SMTP, ограничения на отправку количества писем в минуту и ограничение на количество переданных байт в минуту.
  4. Поправлена отправка по событию, теперь при наступлении события(добавление/обновление) статьи отправляется шаблонизированное письмо, использующее файлы из п.2. Так же теперь на добавленный материал в письме отправляется ссылка на конкретный материал.
  5. Поправлено удаление рассылки.
  6. Добавлена тестовая отправка на указанный email. Сделано оно для того чтобы вам было проще тестировать работает ли нужный инстанс(PHP Mail(), Sendmail,..) и проверки темизации шаблона.

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

Ссылка на скачивание внутри.

Новая версия eSubscribes - модуля подписки/рассылки email новостей/статей

Привет, читатель!

Pre

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

eSubscribes

eSubscribes - модуль подписки на новые материала сайта/модуль подписки на новости сайта.

Скачать модуль можно по ссылке: Ссылка.

Что было сделано:

  • Поправлены несколько багов, включая баг с подпиской/отпиской через блок с счетчиком подписавшихся.
  • Рефакторинг структуры модуля. Модуль разбит на файлы по функциональности
  • Новая возможность. Создание рассылки, выбор материалов для отправления в рассылке. Отправка самой рассылки подписавшимся.

Остальное под катом.

Mod-tmp для сессий, или количество свободных нод на диске исчерпалось

low disk space

Привет, читатель моего блога или случайно зашедший!

Иногда бывает такая ситуация, когда папка хранящая сессии заполняется что казалось бы невообразимо большим количество нод на диске исчерпывается и команда du -ih показывает следующую картину:

~# df -ih
Файловая система Iнодов IИспользовано IСвободно IИспользовано% Cмонтировано в
/dev/md1           5,9M          5,7M      141K            98% /home

Печально выглядит, правда? Для начала освободим место на диске. Так как команда rm -R /path/mod-tmp/* вам не поможет скорее всего, так как само количество в 5М сайтов нагрузит команду так что ее выполнения придется ждать весьма не скоро, если она вообще не выпадет с ошибкой. Так вот

Подключаемся к WiFi(WPA2) через консоль в Debian Linux

WiFi

Привет уважаемый читатель!

Надоели в последнее время мне проблемы с wicd и wifi-radar для подключения к Wi-Fi в Linux, и я решил что пора бы подключаться через консоль, минуя все эти надстройки в виде программ для подключения. На самом деле все оказалось еще проще чем я предполагал. И сейчас я покажу как это делается. А тем кому пока не надоело подключатся через программы стоит добавить эту заметку в Избранное, в дальнейшем пригодиться.

Подключаемся к роутеру/точке доступа

Итак, предполагаем что подключение происходит с шифрованием WPA2, так как сейчас это самое популярное и наиболее безопасное решение, чем к примеру устаревший WPA.

Drupal 7: пишем собственный модуль подписки на рассылку по Email!

Здравствуй, дорогой читатель!

В этой статье я покажу тебе как создать простой и эффективный модуль подписки на рассылку по Email для CMS Drupal 7, но в принципе все тоже в большей степени можно будет использовать и для других CMS, или даже просто как часть кода собственного проекта с небольшим изменением! Все будет просто и легко для понимания! Не сложный код и комментарии к нему. Ранее я написал статью, которая содержит большую часть присутствующего здесь кода, но... Эта статья полнее и содержит приятные плюшки. Для желающих посмотреть различия - смотреть тут.
Более того, дорогой читатель, в этой же статье ты увидишь еще несколько ссылок на другие статьи, в которых восполнишь или закрепишь часть пробелов в знаниях, а может быть просто увидишь еще одну точку зрения на написание модулей, что тоже не будет лишним! Ведь каждая прочтенная статья расширяет кругозор!

Сам модуль скачать можно по ссылке: eSubscribes
Более свежую версию модуля и описание изменений в его работе смотрите в статье Новая версия eSubscribes - модуля подписки/рассылки email новостей/статей.
Может быть когда-нибудь выложу на Drupal.org, но это будет немного позже.

Итак...

Почему я начал писать этот модуль?

Потому что ни один модуль для Drupal 7 рассылки по email не показался мне удобным, слишком много настроек не понятно для чего, нам же нужен просто удобный модуль, который позволяет:

  1. Подписаться на добавления материалов на сайте
  2. Отписаться с добавления материалов на сайте
  3. Отправлять рассылку при добавлении новых материалов на сайте
  4. Вывести блок подписки/отписки в нужном нам месте

Все. Более того, в следующей статье плюшек будет намного больше! И сам материал я постараюсь сделать на столько доступным к пониманию, чтобы прочитать его было легко и приятно, ну а пользу, дорогой читатель, ты оценишь сам для себя.
Приятного чтения, дорогой читатель!

Zen-kernel или Дзен-ядро для Debian GNU\Linux

Привет, дорогой читатель!

В этот раз я кратко расскажу тебе о замечательной пропатченной сборке ядра, под названием Zen Kernel!

Zen Kernel

Вот поставил вместе с официальными Linux ядрами из дистрибутива так же пропатченое проектом Zen Kernel ядро. Памяти стало кушать меньше и отзывчивость стала больше! Есть ради чего ставить! Ставить ядро нынче легко, не то что в былые седые годы... Хотя я их тоже не застал! Все очень просто, и все так же просто как и с установкой ядра из официального источника, такого как дистрибутив или kernel.org!

Что из себя представляет Zen Kernel?

Zen Kernel - набор патчей на официальное ядро Linux, которые вносит изменения для получения лучшей отзывчивости и производительности системы. Автоматически Zen Kernel получает исходные коды официального ядра через Git и синхронизирует патчи с ним. Так что получаем свежее ядро с патчами от Zen Kernel.
Zen Kernel использует комбинацию нескольких проектов, обновляет код через git-репозиторий, а также имеет несколько специфичных для Zen вещей, стремящихся удовлетворить большинство потребностей пользователей, реализовав их в одном ядре. Некоторые возможности патча: drm-next, wireless-testing, выбор планировщиков CPU (CFS/BFS), BFQ-планировщик ввода-вывода, aufs, unionfs, reiser4, tuxonice, PHC и многие другие вещи, которые замечательно подойдут для оптимизации настольных систем или ноутбуков. Всё это доступно в виде одного патча к ванильному ядру.(с) nixp.ru

Как ставить?

Качай архив с ядром, на текущий момент это версия 3.6.10 и ставишь по стандартному Debian-мануалу.
Скачать Zen-kernel
А вот и сам Debian-мануал, в котором нам нужно всего пару пунктов.
Мануал по установке

Поставили! Теперь можно наслаждаться производительностью!

Ошибка: Установка после сборки в Debian Sid ванильного ядра версии 3.6.8

Не буду описывать весь процесс установки, это первый вариант по мануалу находящемуся Здесь. Скачал я исходники ядра версии 3.6.8, собрал deb пакеты headers и image, но headers не установился выдав ошибку во время установки:

Распаковывается замена для пакета linux-headers-3.6.8-goreotuma …
Настраивается пакет linux-headers-3.6.8-goreotuma (3.6.8-goreotuma-10.00.Custom) …
Examining /etc/kernel/header_postinst.d.
run-parts: executing /etc/kernel/header_postinst.d/dkms 3.6.8-goreotuma /boot/vmlinuz-3.6.8-goreotuma
dkms.conf: Error! No 'BUILT_MODULE_NAME' directive specified for record #0.
Error! Bad conf file.
File:
does not represent a valid dkms.conf file.

Кратким и вполне закономерным решением оказалось удаление dkms на момент установки хедеров и установки dkms после обратно. Все стало и все настроено.

Kohana 3 framework: роутинг(routing) из базы данных mysql

Привет, дорогой читатель!

И вот он снова я. А снова я расскажу тебе о том как быстро и просто сделать динамический роутинг для фреймворка Kohana 3! Немного пошаманив и написав каких-нибудь пару десятков строк кода мы впихнем весь роутинг коханы в базу MySQL, а при желании и в любую другую! Для чего? Ну хотя бы для того чтобы постоянно не дергать bootstrap.php для добавления путей! А если у нас еще и CMS или что-то в этом роде, модульное, сделанное на базе Kohana 3, то динамически изменяемый роутинг нам сильно пригодиться!

Содержание

  • Что мы будем делать?
  • Для чего это нужно?
  • Еще один SQL коннект при загрузке каждой страницы, дополнительная нагрузка на сайт...
  • А сможем ли мы использовать ту же гибкость как и в файлах?
  • Идеально ли такое решение для использования?
  • Схема таблице в базе данных
  • Добавляем первый роут в базу данных MySQL
  • Добавляем код-обработчик роутинга загружаемого из базы данных MySQL
  • Итог

Что мы будем делать?

В этой статье мы научим Kohana 3 framework считывать данные о роутинге из базы данных. В нашем случае это будет MySQL, но не думаю что портировать на другие СуБД представит хоть какую-то сложность.

Для чего это нужно?

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

Еще один SQL коннект при загрузке каждой страницы, дополнительная нагрузка на сайт...

При правильном подходе нет. У нас не будет частого обращения к MySQL с нашего сайта. Мы не будем делать выборки при запросе пользователем каждой страницы. Вместо этого мы сделаем выборку всех значений роутинга и закешируем на нужное нам достаточно большое время, к примеру 60 секунд или больше. За эти 60 секунд к базе мы обратимся единожды. На все время жизни кеша данные будут получаться из кеша, что может быть нам еще выгоднее, к примеру если кеш храниться в памяти, а не на жестком диске. Производительность только увеличиться. Более того мы закешируем весь роутинг. Не менее важно то что мы в нашем случае сможем использовать как базу данных , так и файловое содержимое роутинга в файле bootstrap.php, например для критически важных моментов сайта, чтобы при отключении базы мы могли ссылаться на страницу, к примеру "Сайт находиться на техническом обслуживании."

А сможем ли мы использовать ту же гибкость как и в файлах?

Легко. Мы просто сделаем подстановку значений из базы в стандартный для нас синтаксис. Сможем так же использовать регулярные выражения. Более того, используя базу данных мы указываем хранить уникальные значения для имени роутинга и самого регулярного выражения роутинга, таким образом ограждая себя от ошибки из-за невнимательности - добавление роутов с одинаковыми именами или же одинаковыми регулярными выражениями, указывающими на одинаковый путь обработки.

Идеально ли такое решение для использования?

Нет идеальных решений. Это только технический пример, как использовать Kohana 3 framework и при этом брать данные о роутинге из базы данных MySQL. Наверняка есть что улучшать.

Vim: плагин интеграции с Git

Предисловие

Последних несколько месяцев использую Vim как IDE. Материалов по расширяемости в ру-язычном инете хватает. А вот с интеграцией его с системой контроля версий практически нету. Так как использую Git, про интеграцию Vim+Git и напишу маленькую заметку.

Для чего это?

Действительно, по началу задаешься вопросом "Для чего? Ведь все тоже легко сделать через консоль.". Можно, но на то он и vim чтобы используя его как можно меньше переключаться куда-то и делать что-то.

Страницы

Subscribe to RSS - Блог пользователя Nelex