Показаны сообщения с ярлыком script. Показать все сообщения
Показаны сообщения с ярлыком script. Показать все сообщения

понедельник, 4 октября 2010 г.

Gnome tile windows. Или наводим порядок из окошек.

Вот наконецто я получил монитор, и первым делом вспомнил свою давнюю проблему, упорядочивание окошек. Ставить Compiz или подобное не совсем хотелось из за проблем совместимости с моими горячими кнопками, производительностью системы и лагами в java. Но проблема была серьезная и выход был найден.
Гугл нам выдал утилиту для управления окнами wmctrl простенький интерфейс, ничего лишнего. но забегая вперед скажу что есть недостатки
1. Через эту утилиту так и не смог добится стабильности в свертывании окон
2. В списке не видно минимального и максимального размера окна.
Из этого вытекли 2 проблемы (когда я считаю окошки, то в расчет идут свернутые) Когда я делаю ресайз, то такие приложения как например evolution, имеют минимальный размер окошка, поэтому результат не всегда красивый.


Ну ничего страшного, основное для чего делалось - это куча терминалов (c другими окошками будет работать тоже!) (тут кстати тоже небольшой косяк, но размер окошка считается не правильно. -при ресайзе gnome-terminal добавляет к размеру высоту контекстного меню
вобщем что было и что стало видно на правых скриншотах

как все это чудо заставить работать
1. Качаем wmctrl
$ sudo apt-get install wmctrl

2. Качаем скрипт
$ wget -O walign https://sites.google.com/site/nicloaynidvoray/filelist/walign?attredirects=0&d=1

3. Смотрим (на всякий случай :) ) на эту красоту, а то веть сейчас будем копировать с правами sudo.
$ cat walign

4. Если никакого криминала, то идем дальше (если хотите чтоб эта фича была доступна для всех юзеров, то логично положить скрипт в /usr/local/bin если же нет, то можно оставить в текущей папке
двигаем скрипт в /usr/local/bin
$ sudo mv walign /usr/local/bin/

5 Даем права на выполнение
$ sudo chmod a+x /usr/local/bin/walign

6 В этот момент нетерпеливый юзер уже тычет в кнопки и запускает walign в терминале и с радостью замечает как окошки оживают начинают красивый танец по монитору, выстраиваясь в стройные ряды.
Остальные же читают дальше и узнают самое главное! как это прикрутить к горячей клавише

идем в шоткаты.

7 Жмем кнопку Add

и добавляем запуск нашего скрипта (если всетаки вас мучают паронаидальные настроения и вы не решились двигать этот скрипт в /usr/local/bin то тут нужно будет вместо walign прописать полный путь к скрипту)

8 Ну и осталось самое простое- нажать напротив команды кнопку и выжать горячую комбинацию клавиш (я себе сделал ctrl-alt-A)


И вуаля!, вот оно :) по нажатию ctrl-alt-A у нас теперь окошки выстраиваются в различные комбинации :), единственное что могу сказать - на монитора с не традиционной ориентацие (portrait) данный скрипт загнется. если сильно будет нужно - починю, сейчас пока в лом.

четверг, 16 сентября 2010 г.

Медиа дека для Anki

этот мануал гораздо лучше, скрипт более гибкий и лаконичный
Итак .. немного вводная.
Anki программа для запоминания, Это Обычные карточки, но которые показываются по определенному алгоритму, и те карты которые сложно запомнить показываются чаще, которые легко реже.

Создавать деки можно самому, так и брать готовые с сайта.
Тема же сегоднешнего заняти, натырить картинок с тырнета и сделать из них красивую деку(набор карточек).
итак поехали
1. выберем жертв, в моем случае стали 2 сайта http://www.my-english-dictionary.com и www.pdictionary.com скачаем их через wget
$mkdir sites && cd sites
$wget -pdrc http://www.my-english-dictionary.com
$wget -pdrc www.pdictionary.com

2. Исследуем скачаные дириктории
2.1 в случае с pdictionary все просто , картинки лежат в папке images и носят названия того что на них изображено
$ls www.pdictionary.com/images/
a  b  c  d  e  f  g  h  i  j  k  l  m  misc  n  o  p  q  r  s  t  u  v  w  x  y  z
$ls www.pdictionary.com/images/z
zebra.gif  zero.gif  zigzag.gif  zipper.gif

2.2. c my-english-dictionary все гораздо интереснее
$ ls |head
eng100.htm
eng100.jpg
eng101.htm
eng101.jpg
eng102.htm
eng102.jpg
eng103.htm

тоесть на каждую картинку по отдельной страничке и с именем eng???.htm с картинкой eng???.jpg
слазив внутрь заметим что название картинок лежит в теге img с сылкой на наше изображение а имя картинки в атрибуте alt
$cat eng100.htm |grep 100.jpg
<img src = "eng100.jpg" alt= "drawer" border = 0>

Ну так как видно что все идет строго попарядку можно в цикле пройти по всем htm страничкам и переименовать файлы в вид name.jpg и положим их в папки result и result_small (кто его знает может thumbnail-ы тоже кому пригодятся)
$mkdir result&&mkdir result_small
$for i in `seq 1 408`;do NAME=`cat eng$i.htm|grep eng$i.jpg|sed 's|.*alt= "||g;s|".*||g'`;echo $NAME;cp eng$i.jpg result/$NAME.jpg;cp s-eng$i.jpg result_small/$NAME.jpg; done

итак.. мы получили картинки, но о боже.. большие картинки с большими черными подсказками :)

что же делать... "Доктор, нужно резать!"... да.. будем резать.. и резалку мы возьмем imagemagic, и резултат трудов положим еще в одну поддирикторию result
$mkdir result
$for i in *;do convert $i -crop 400x265+0+0 result/$i;done

можно посмотреть результат наших трудов - что все ок. ну и двинем дальше.
Насколько помнится мы загрузили изображения еще со 2го сайта, и внимательный телепат наверняка разглядел что изображения то там не jpg а gif - ну не будем портить всю малину через тот же image magic сконвертим их в jpg и двинем в текующую фотку где у нас уже есть изображения(перейдем в тот сайт и из дириктории image вфполним следующее
$cp */*.gif ../../www.my-english-dictionary.com/result/result/

это мы так скопировали, а теперь их переделаем в jpg (вернемся в ..../result/result и выполним вот это колдовство
$for i in *.gif;do convert $i ${i/gif/jpg};done

ну и избавимся от наших гифок

$rm *.gif

3. Самое интересное.. файлы у нас есть все называются как надо - осталось их загнать в деку анки. ну и конечно руками мы это делать не будем. что нам в конце концов - делать чтоль нечего
топаем на страничку http://ichi2.net/anki/wiki/FileImport которая нам рассказывает как можно создать файл вида
caption [tab] x-ray <img src="x-ray.jpg">[sound:x-ray.ogg]

левая часть это одна сторона карточки, а правая "Сюрприз!!!!" не только изображение но еще и произношение.
Я вспомнил про когда то скачаные словари для stardict с произношением, и подумал что вот он!, тот шанс :)... но на этом не остановился когда узнал что слов многих нету и на помощь пришел сайт http://www.answers.com который любезно согласился предоставить отсутствующие звуки.
упуская подробности (одной строкой выполнять все эти операции было тяжело) и я наваял небольшой скрптик, правда не отладил но главное работает
#!/bin/bash

DIRECTORY=/home/nikolay/sites/www.my-english-dictionary.com/result/result
EXTENSION=jpg
SOUND_EXTENSION="ogg mp3 wma wav"
SOUND_DIRS="(stardict|$DIRECTORY)"
SITE='http://www.answers.com'
OUT_MEDIA_DIR=$DIRECTORY/media
OUT_FILE=import

rm $OUT_FILE
if [ -d "$OUT_MEDIA_DIR" ];
then
rm -Rf "$OUT_MEDIA_DIR"
fi

mkdir "$OUT_MEDIA_DIR"


cd $DIRECTORY
for i in *$EXTENSION;
do
FULL_NAME=$i;
NAME="${i/.jpg/}";

SOUND_FILE_NAME=$(ls $NAME.*|egrep '(ogg|mp3|wma|wav)')
if [ -z "$SOUND_FILE_NAME" ];
then
for i in $SOUND_EXTENSION;
do
SOUND_FILE_PATH=$(locate "/$NAME.$i"|egrep "$SOUND_DIRS")

if [ -n "$SOUND_FILE_PATH" ];
then
SOUND_FILE_NAME=$NAME.$i
cp "$SOUND_FILE_PATH" "$SOUND_FILE_NAME"

break
fi
done
if [ -z "$SOUND_FILE_NAME" ];
then
#truing download from answer.com                            loca
wget -q $SITE/$NAME --output-document $NAME.tmp
SERVER_FILE_PATH=$(cat $NAME.tmp |grep playIt|grep wav|sed "s/.*playIt('//g;s/'.*//g"|sed q)
if [ -n "$SERVER_FILE_PATH" ];
then
wget -q $SERVER_FILE_PATH --output-document $NAME.wav
SOUND_FILE_NAME="$NAME.wav"
fi
rm $NAME.tmp
fi
fi
STRING="$NAME$(echo -e '\t')<img src=\"$FULL_NAME\">"
cp "$FULL_NAME" "$OUT_MEDIA_DIR/"
if [ -n "$SOUND_FILE_NAME" ];
then
STRING="$STRING[sound:$SOUND_FILE_NAME]"
cp "$SOUND_FILE_NAME" "$OUT_MEDIA_DIR"
fi
echo $STRING>>$OUT_FILE    
done;


эхх шит фокус с echo -e "\t" не удался.. придется подправить .. заменить все пробелы на таб
$ sed -i 's| |\t|' import


смысл в том что нужно поменять значение переменной DIRECTORY на то куда вы выложили файлы, SOUND_DIRS - это то где скрипт ищет произношение (не бязательно полный путь, так как идет все через grep)
ну и результат получаем файл import и папку media

открываем anki
жмем на create (name=mediadeck)
file->import выбираем наш файл "import"
saveas (mediadeck)
теперь нужно зайти в :~/.anki/decks
и создать там дирикторию mediadeck.media
$mkdir ~/.anki/decks/mediadeck.media

и копируем
$cp media/* /home/nikolay/.anki/decks/mediadeck.media/

после этого в анки нужно выполнить Tools>Advanced>Check Media DB (tag cards)

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


ну а это готовая дека, которая получилась, распаковать зип и импортировать shared.anki