воскресенье, 19 июня 2011 г.

WL500G настройка роутера как принт-сервера для HP LaserJet P1005

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


суббота, 21 мая 2011 г.

N810 прошивка

Первая поломка произошла после добавления девелоперского репозитария maemo и попытки установить gcc на таблетку. После перезагрузки аппарат перестал загружаться и было похоже что вошёл в бесконечный цикл перезагрузок.

Было принято решение обновить прошивку. Тем более что в наличие была более свежая версия Maemo Diablo 5.2

среда, 18 мая 2011 г.

Nokia N810

Приобрёл давеча интересный гаджет - интернет планшет Nokia N810.

Nokia N810

Главная прелесть девайса - наличие Линукса "по дефолту" за смешные деньги. Сейчас взял с рук по цене почти на порядок меньшей чем в 2008м, когда устройство только появилось.


суббота, 12 марта 2011 г.

Ubuntu. Как создать swap файл подкачки

При работе с vps хостингом честенько бывает необходимо создать swap, т.к. по дефолту его нет. Swap раздел создавать не дают, приходится выкручиваться с файлом. Итак... небольшой манулаьчик как добавить swap файл подкачки.

Ubuntu. Создание пользователя

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

sudo useradd --home /home/newuser --create-home newuser
sudo passwd newuser

Флаг --home указывает на домашний каталог пользователя. Если указанного каталога нет, то создан он не будет. Для того чтобы создать его используем флаг --create-home

понедельник, 14 февраля 2011 г.

Прелести Цепочек (chain) в фреймворке Catalyst

Цепочки в Catalyst это последовательность методов, позволяющая работать с сотавными урлами вида
 
/somewhere/*/somewhat/new
/somewhere/*/somewhat/*/edit
/somewhere/*/somewhat/list
/somewhere/*/somewhat/*/delete

среда, 9 февраля 2011 г.

DBIx::Class переопределение основных методов класса

Довольно часто возникает необходимость вместе с запросом к базе произвести ещё какие либо действия. Причём произвести их для любого запроса данного типа (INSERT, SELECT и пр.). Ну например, нужно налету преобразовывать кодировку таблицы или столбца таблицы или при сохранении записи закодировать одно из полей, а при считывании раскодировать. Ну или подсунуть время с изменённым часовым поясом... в общем много применений.

Так вот, всё это очень легко делается для DBIx классом DBIx::Class::Row Он содержит все низкоуровневые вызовы основных методов работы с DBIx::Class::ResultSource объектами.

вторник, 25 января 2011 г.

Postgres Внесение изменений в тип ENUM

Как оказалось в Postgres внести изменения в перечислимый тип ENUM не так то просто! В Postgres ENUM это именно создаваемый пользователем новый тип данных, который можно использовать сразу в нескольких таблицах. Состоит он из статических упорядоченных списков. Тип занимает 4 байта на диске, а текстовая метка зависит от настроек (параметр NAMEDATALEN), по умолчанию 63 бита.

суббота, 22 января 2011 г.

Catalyst. Генератор ссылок $c->uri_for Часть 1

Вольный перевод документации

$c->uri_for()

Одной из полезных способностей фреймворка Catalyst является способность тасовать страницами приложения не опасаясь что всё поломается, т.е. проще говоря, - болье нет проблем со ссылками в шаблонах страниц. Например, у вас есть приложение работающее по адресу http://www.domain.com/Calendar и у этого приложение большая вложенность "/Calendar/2010", "/Calendar/2011/01" и т.д. Если вы переносите своё приложение на другой домен, а может быть ещё вдобавок меняете расположение приложения отностительно корня "http://www.mydomain.com/Tool/Calendar" то раньше все ссылки ломались.

среда, 12 января 2011 г.

Ubuntu 10.10 Восстановление удалённых фотографий с флешки с помощью foremost

Возникла необходимость восстановить данные с флешки от фотика. Флешка Sony MemoryStick PRODuo (2Gb), Со слов пострадавшей проблема в том, что "внезапно стёрлись все фотки с фотоаппарата" . О фотоаппарате ничего не известно. Заниматься восстановлением мёртвой флешки будем на Ubuntu 10.10

Чтобы не мучить и без того умирающую флешку скопируем с неё всю информацию командой dd на жёсткий диск компьютера. Чтобы знать откуда копировать нужно подсмотреть путь к устройству, выполнив нехитрую команду fdisk (перед этим конечно же вставив флешку в картридер)

sudo fdisk -l

Зная что наш флэш диск размером 2Gb легко находим его. У меня он называется /dev/mspblk0 Монтировать подключённое устройство не нужно. После этого запускаем процесс копирования.

sudo dd if=/dev/mspblk0 of=photo.dd

Процесс копирования не быстрый, на моём ноуте ушло 1166,91 сек на скорости 1,7 MB/c Можно было поэкспериментировать с флагом cbs=bytes который позволяет конвертировать за раз указанное количество байт, но чем проще метод, тем больше вероятность получить назад наши потерянные данные.

Команда dd простая как пять копеек. Всё что она делает это копирует данные с стандартного ввода на стандартный вывод. При этом можно менять размер блока и ещё несколько мелочей вроде пропуска указанного количества блоков.

Теперь самое важное. Качаем и запускаем команду foremost

sudo aptitude install foremost
mkdir ./out
foremost -t jpg -o ./out photo.dd

Для того чтобы восстановить не только jpg файлы, а вообще всё подряд, нужно вместо -t jpg указать -t all

ps: На данный момент foremost поддерживает (может восстанавливать) следующие форматы файлов jpg, gif, png, bmp, avi, exe, mpg, wav, riff, wmv, mov, pdf, ole, doc, zip, rar, htm, cpp

вторник, 11 января 2011 г.

Perl и динамические регулярные выражения

Нашёл тут у себя старый код, который решал интересную задачу поиска произвольно вложенных конструкций с помощью регулярных выражений. Эх! За что люблю Perl, так это за то что в нём такие мощные regexp'ы. Решение было подсмотрено в книге Дж.Фридла "Регулярные выражения" и называется это решение "Динамические регулярные выражения".

Regexp для проверки правильности вложенности скобок в строке текста выглядит вот так

my $regex;
$regex = qr/ (?:[^()]+ | \( (??{ $regex }) \) )* /x;

if ( $text =~ m/$regex/ ) {
    print "строка валидна\n";
}

понедельник, 10 января 2011 г.

Как разбить tar.gz архив на тома и как его потом склеить

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

tar czf - ./backup | split -d -b 10m - backup.tar.gz.

В результате получится несколько файлов по 10 Мб с окончанием .01 .02 .03 и т.д.

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

cat backup.tar* | tar xzf -