delete

Обработка ответа от MySQL в Perl и Template Toolkit

Буду периодически писать о Perl и Template Toolkit. Информации в интернете чуть более, чем достаточно, а я буду собирать то, что нужно мне здесь.

При работе с БД получая данные с помощью fetchall_hashref ($key) шаблоны надо парсить так:

Получаем ответ от БД

$res->fetchall_hashref($key_field);

, где $key_field ключ, который будет использоваться для дальнейшей обработки.
Подробнее про функцию тут.

После в шаблоне организуем foreach:

                [% FOREACH variable IN variables.pairs %]
                    [% variable.value.field %]<br />
                [% END %]

, где variables — хэш, .pairs — обработчик Template Toolkit, который присвоит variable ключи и значения без потерь. После этого к любому полю в строке можно будет получить доступ указав variable.value.field, заменив .field на название своего поля в таблице.
Подробнее про pairs тут.
(далее…)

delete

Pe (a) rl

Сегодня поступило предложение с кафедры пойти на испытательный срок в одну небезызвестную компанию в качестве Perl программиста. Если учесть, что на нашем потоке его никто в глаза не видел и у нас несколько не «программистская» специальность, а больше железная — странно было услышать это от него. Но, чем черт не шутит. Начальные требования — знание MySQL (а желательно Oracle), Perl (базовый синтаксис) и желание обучаться. Пораскинул я мозгами и решил попробовать. Сейчас сижу и осваиваю тот самый базовый синтаксис, что необходим для работы.

P.S. Хочу все таки попробовать перегнать все записи (и комментарии) в самописный движок. Думаю он будет сделан с помощью Codeigniter. Осталось только за него взяться.

delete

DevConf

Иногда я жалею, что живу не в Москве или не в Питере.
Вот как, например, в тех ситуациях, когда в Москве происходит DevConf (особенно заинтересовала PhpConf ()). С удовольствием бы посетил, но тратить такое количество денег пока не готов... :(

delete

Самый простой хак линукса

Тут намедни делать было нечего и я решил пошариться в структуре ОС. В качестве «подопытного» взял centos на виртуалке. Все началось ещё в грабе. Вот вы думаете — поставили линукс и вы мегазащишены? Ан нет! Стоит получить доступ к самому компьютеру (физический или через kvm) начинается самое интересное. Я не рассматривал варианты использования LiveCD (хотя так ещё проще и уже спасет только пароль на биос, который, ко всему прочему скидывается батарейкой), а хотел использовать что-нибудь интересное.

Как известно Linux начинает загрузку с одного из вариантов, которые описаны в файле /etc/inittab, в котором то и находятся правила, которые будут понятны машине что и как грузить.

Так вот. Есть такая «переменная» init. Она содержит в себе ссылку на программу, которая выполняется сразу же при загрузке системы.
Недолго думая меняем в грабе переменную init=/bin/bash:

И в итоге после загрузки ОС получаем полноценного рута. А там дело техники — запустить програмку passwd для смены пароля на рута, сменить пароль, получить полный доступ к машине.
А после того, как мы выйдем из баша — нам конечно же вылезет kernel panic (да, это ещё и самый простой способ получить эту ошибку). Ибо система просто не знает что ей делать без инита.

«Проблема» решается достаточно просто — установкой пароля на grub (или лило). А часто вы ставили пароль на граб после установки? Могу поспорить — нет. Возможно даже никогда.

Второй вариант — загрузиться в однопользовательском режиме. Тут мы так же получаем привелегированный root доступ до машины. С таким же функционалом. Разве что с ограниченностью по сети, но эту проблему можно очень быстро решить.

Второй хак перекрывается редактированием /etc/inittab с отключением всех ненужных режимов загрузки. А какие способы хака линукса знаете вы?

delete
Оптимизация Wordpress

Оптимизация Wordpress

Решил заняться сабжем для своего блога. Нужно удалить кучу плагинов, которыми не пользуюсь, поставить таки Nginx перед Apache'м для снижения нагрузки на второго. В общем заняться ускорением работы как блога, так и нескольких других сайтов сидящих на хосте.
Кстати, в теме, как наверное многи заметили, есть такая фича, как «картинка к каждой записи». У меня есть подозрения, что скрипт, который генерирует превьюшки достаточно нагружает сервер, что мешает его нормально работе. Надо будет отказаться от него в пользу ручного обрезания картинок и подгон из под размеры темы.

Обновил, кстати, Wordpress до последней версии (2.9.1). Как обычно все взял у своего земляка — LeCactus'a, за что ему спасибо. Новая версия мало чем отличается от старых 2.8.х, разве что небольшими фиксами движка в пользу безопасности. Итак, за дело. Установка nginx, может быть откопаю ещё пару полезных плагинов для него (кто-нибудь что-то толковое для уменьшения нагрузки посоветует?).

(далее…)

delete

Учебное

Таня сдала программирование на 5 (вот только что звонила). Сама! Молодец!! :) Ещё осталась ей физика и все, а у меня дела немного похуже — сдал только базы данных, получил допуск по всем предметам, ни одного автомата (это у меня нормально. Ни одного автомата за всю историю института :D). Учится нет никакого желания, но надо. Так что скоро сяду за лекции, учить и решать билеты, писать очередные шпоры. В прочем я начинаю по этому скучать :)

delete
CodeIgniter — Вступление

CodeIgniter — Вступление

Я решил тоже начать писать об этом безусловно отличном фреймворке на PHP, т.к. вот уже 2 месяца мой проект разрабатывается именно на нем. Мой выбор пал на этот фреймворк из-за его скорости, удобства применения, множественной документации (как на русском, созданной поклонниками этого фреймворка, так и официальной, английской). Итак — этот пост начало моим постам посвященным этому фреймворку.

delete

jQuery. Продвинутый JavaScript

Не удержался на фоне такого поста и тоже заказал. Ждем через пару дней. Будем прокачивать свой JavaScript и jQuery. Надеюсь, что удачно.

delete

Не работают уведомления на почту

Пока ещё не разобрался в чем проблема может быть. Может быть просто по дефолту выключена функция mail () в php, т.к. я сильно не копался в конфигах. У кого какие есть соображения?

P.S. Сегодня в первый раз сидел за рулем собственного авто. Выезд в город. Пока документы оформляли, пока то, пока се. Короче затянулось это все хозяйство. Но теперь я уже почти на колесах (т.к. эту машину забираю я, а родители, надеюсь, в ближайшем будущем купят себе новую). Отдал часть денег за машину родителям (на новую), но когда будет — хз.

delete

Переезд окончен

Болезненно, конечно, но все равно — переезд сайта progger.ru окончен чуть более, чем полностью. Теперь он довольствуется достаточно мощным сервером с неограниченным траффиком и без ограничений по процессорному времени. Работает он тоже теперь на порядок выше, чем на унылом 1gb.ru. Итак. Осталось только несколько штрихов и все будет работать идеально :)

P.S. Луч поноса в сторону r01, который так долго обновлял информацию о домене.

delete

Переезд сервера

Итак, все мои домены (основные и мои личные) переезжают на выделенный сервер в германии, к кейвебу. В связи с чем в ближайшем будущем (примерно 3-4 дня) возможны проблемы с плагинами, может что-нибудь подглючивать — значит я все ещё настраиваю сервер. В прочем apache, php, mysql и несколько твиков для защиты от кулхацкеров я уже поставил. Осталось допинать апач, чтобы еррор лог был поменьше.

Так что если кто-то заметит какие-то баги в работе сайта (в частности этого) — сообщайте — буду только рад =]

И ещё — какие плагины к пхп подключить бы в первую очередь? Перечислите, кому не сложно =]

P.S. В скором времени я закрываю свой блог на лиру и отключаю кросспостинг туда. Не вижу смысла держать 10 блогов.

delete

Рабочие моменты

Поинтересовался тут у мамы — нужен ли их компании сайт. Сказала, что уже пора бы. Теперь надо заняться. Подобрать домен, нарисовать дизайн (oh, my god!), сверстать все это чудо заняться раскруткой.

delete

Lici → официальная версия 0.4

Lici.ru
Наконец-то мы дождались — вышел новый плагин кросспостинга для LiveInternet.ru, который называется Lici. Точнее вышла его новая версия — 0.4. Разработка длилась очень долго только потому, что и мне было лень и у других не было времени. Но на позапрошлой неделе я решил, что пора взяться за дело и... читайте описание то, что теперь плагин умеет (далее…)

delete

Опять про lici

За один вечер он научился:

  • Нормально кросспостить в несколько блогов с разными настройками и т.д.
  • Поимел ещё одну строку в бд
  • Научился кросспостить до more по галке, а не жестко. Т.е. если мы выбираем «Кросспостить до <!--more-->» в настройках плагин будет кросспостить только до <!--more-->. Не выбираем — <!--more--> игнорируется (а будет и вообще обрезаться) и кросспостинг на лирушечку идет полный.

Здесь мы должны закричать «Слава попугаям» и пуститься в танец, но дел с плагином ещё по горло, но, думаю, версия 0.4 уже близко. А это значит — нормально работающий кросспостинг без проблем и танцев с бубном :)

delete

Про lici

Немного обновил dev версию плагина. Убрал шлакокод который написал пару дней назад и сделал по человечески. Теперь буду использовать эту сборку и здесь. Работа опять кипит. Сейчас узнаю как делать cron средствами wordpress и можно вставлять. Правда я уже приблизительно понимаю, как оно должно обрабатывать запросы, но все же меня пока что это мало устраивает. В прочем, отсрочка кросспостинга — дело символическое. Не обязательно заботится о точной отправке (т.е. время отправки на блог liveinternet может и не совпадать с временем в которое был написан пост. Главное — это то, что он кросспостится через 7 дней (по умолчанию 7. Не настраиваемое время. Задано четко и в коде.). В будущем же хотелось бы, чтобы оно кросспостилось через то количество дней, которые будет заданно в настройках аккаунта. Для этого нужно добавлять в бд строку, а это переписывать добрую сотню строк, на что нет времени.

Так же будет статистика. Статистика простая — мы будем собирать статистику об активности пользователей. Думаю 4Eki одобрит эту идею, как таковую. Просто один запросик на сервер в котором мы будем узнавать ваш никнейм на liveinternet и то, что вы отправили сообщение в свой дневник :) Мило, не правда ли? Зато вы будете учавствовать в рейтинге пользователей.

А на данный момент доступен для скачивания плагин lici версии 0.3.

« Previous Entries