вторник, 26 октября 2010 г.

Anki English Irregular verbs + Russian translate

Дошли наконец руки до важной части английского языка - неправильных глаголов.
Изменил немного старый скрипт и собрал деку.
Собирается примерно как в этой статье, за исключением что все делает скрипт, плюс качает перевод и произношение (правда есть небольшой косяк, в некоторых карточка для одно неправильного глагола есть несколько прошлых времен и т.п., - для них произношение не качается)

Работает следующим образом.
создаем в папке 3 файла v1,v2,v3 соответственно Infinitive, Simple Past, Past Participle. (в том же порядке, тоесть слову из n-й строчки соответствуют слова из n-й строчки 2го и 3го файла)
далее выкачиваем скрипт в эту же папку

$ wget https://sites.google.com/site/nicloaynidvoray/filelist/ivdeckgen

даем права на выполнение

$ chmod a+x ivdeckgen

запускаем

$ ./ivdeckgen

по завершению импортируем result/anki_deck в анки
копируем все из папки result/sound в ~/.anki/decks/DECK_NAME.media (где DECK_NAME имя которое дали деке)
Запускаем checkDB в анки. (tools->advanced->check media database) и все

вот так это выглядит



Скачать готовую деу можно жимкнув на
вот эту подчеркнуют надпись :)

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

Anki. Читаем текст без словаря

Хочу сразу огорчить, волшебного вмешательства высших сил через TCP/IP не будет :).

А произойдет вот что.
  1. Возьмем текст который хотим прочитать без словаря
  2. Сохраним его в файл
  3. Приведем его к виду, когда в каждой строчке будет по одному слову, и удалим все знаки препинания и цыфры
  4. сохраним его дважды, и в одном файле удалим все слова которые незнаем, оставив лишь те которые знаем и предлоги. типа "a" "to" и прочие ништяки
  5. скачаем волшебный скрипт, который сделает нам из этих 2х файлов (слова из текста и слова которые мы знаем) деку, с произношением переводом и картинками
  6. Симпортируем результат в Anki.
  7. Ну а тут уже все зависит от вас, как долго вы эту деку будете мусолить в anki =)
также скрипт будет полезен тем кто хочет например скачать произношения из консоли с сайта, скачать перевод с консоли или скачать и трансформировать несколько изображений с гугла и собрать гифку.
Внизу данной статьй есть видео, как это все в конечном итоге будет выглядеть.

Ну чтож. начнем.
  1. Установим необходимые пакеты (curl, imagemagick)
    $ sudo apt-get install curl imagemagick
    
  2. создадим папку в которой будем работать и проследуем в нее
    $ mkdir ankideck&&cd ankideck
    
  3. выкачаем скрипты (один который работает с поисковиком гугл по картинкам и 2й основной который и создаст деку)
    $ wget https://sites.google.com/site/nicloaynidvoray/filelist/google_collector && wget https://sites.google.com/site/nicloaynidvoray/filelist/deckgen
    
    и дадим им права на выполнение
    $ chmod a+x deckgen&& chmod a+x google_collector 
    
  4. Выберем текст, я же возьму слова из предыдущей статьи про phrasal verbs c данного сайта
    • Обычным копипастом (чтоб не мучатся с тегами ) копируем это в новый файл и сохраняем в папку которую создали например с именем src
    • получилось что то типа этого (показывает несколько первых строчек)
      $ head src     
      Phrasal Verbs - Ordered List by Verbs
      
       
      
      Phrasal Verb
      
      Meaning
      
      Examples
      
      
    • ничего страшного что есть куча пустых строчек и т.п., это все уберется далее
  5. Если хотите составить список слов которые вы знаете вручную, то формат прост (новая строка отдельное слово), я же покажу как взять текущие слова вывести список уникальных и убрать все лишнее
    • выводим список слов в файл known.words
      $ cat src|tr '1234567890!@#$%^&*()-=+_?/}{[]—£"' ' '|sed 's|  *| |g;s| |\n|g'|sed "s|^'||g;s|'$||g; s|^.$||g"|tr "[:upper:]" "[:lower:]"|sort|uniq >known.words
      
    • посмотрим сколько тут слов
      $ cat known.words|wc -l                                                                                                                
      2271
      
      мда... не утешительно.. всю ноч придется учить.. как бы не полярную :)
      ну да ладно..
    • открываем файл known.words в любом редакторе и удаляем от туда все незнакомые слова
      у меня получилось около 10 слов.
  6. Вобщем то все. Вот что у нас лежит в папке: 2 скрипта и 2 файла
    ls
    deckgen  google_collector  known.words    src
    
    все что нужно, запускаем
    $ ./deckgen -i src -k known.words
    
    
    
    и идем пить, чай, потом смотрим что все это будет не быстро :) и идем спать. :)
  7. После импорта гегенируется файл anki_deck в папке result вот его то и нужно указать когда нажмете на import в anki. и Все бы хорошо.. но линки на медиаресурсы не совсем правильные инужно нажать на
    tools->advanced->Check Media Database и жимкнуть на Tag Cards

К сожалению деку всю выложить не получится, получилась около 500 метров, пока нет идей как ее можно пошарить.

А выглядит это все вот так:

воскресенье, 17 октября 2010 г.

Anki phrasal verbs

И так, кто не в курсе что это за "phrasal verbs", это важная часть английского языка, так как народ у них там ленивый, они используют как можно меньше слов в своей речи и различные комбинации часто употребляемых слов и есть "phrasal verbs" что то типа нашего "дать по тыкве".

Началось все как обычно с гугления списка этих глаголов. Сначала мне казалось что придется мержить списки с нескольких сайтов. но вот попался http://www.cad.ntu-kpi.kiev.ua/~demch/friends/esl4rus/pvlist.html список из целых 450 phrasal verbs, думаю этого с головой для обычного смертного вроде меня.

Вот и прорисовалась наша миссия, импортировать эту таблицу в anki


1. Можно конечно было бы распарсить html, но мы пойдем более простым путем, скопируем таблицу в OoO Calc. и каждую колонку сохраним в отдельный файлы verbs1, verbs2, verbs3

2. Ну вот.. самая сложная часть работы позади :) осталось взять по каждой строчке из файла и в нужном порядке положить в файл. Для этого выполним серию комманд, прямо из терминала
$ COUNT=$(cat verbs1|wc -l);for i in $(seq 1 $COUNT);do \
echo -e $(cat verbs1|sed -n $i'p') \
"\t"$(cat verbs2|sed -n $i'p') \
"<br /><br /><span style='font-style:italic;'>" \
$(cat verbs3|sed -n $i'p')"</span>" >>anki_deck; \
echo -e $(cat verbs2|sed -n $i'p') \
"\t"$(cat verbs1|sed -n $i'p') \
"<br /><br /><span style='font-style:italic;'>" \
$(cat verbs3|sed -n $i'p')"</span>" >>anki_deck; \
done

3. В итоге мы получили файл anki_deck, который мы должны импортировать в anki. в процессе импорта, получил несколько ошибок.

Importing complete. 895 facts imported from anki_deck.
Log of import:
Fact is missing field 'Front': , hand over <br /><br /><span style='font-style:italic;'> </span>
Fact has duplicate 'Front': review / study thoroughly for a short time , brush up on (inseparable) <br /><br /><span style='font-style:italic;'> If you're going to travel to Peru, you'd better brush up on your Spanish.</span>
Fact has duplicate 'Front': distribute , pass out (2. separable) <br /><br /><span style='font-style:italic;'> Everyone in the room needs one of these information sheets. Who will help me pass them out?</span>
Fact has duplicate 'Front': return something to the proper place , put back (separable) <br /><br /><span style='font-style:italic;'> I've finished with these books. Do you want me to put them back on the shelves?</span>
Fact has duplicate 'Front': return something to the proper place , put up (1. separable) <br /><br /><span style='font-style:italic;'> Your toys are all over the floor, Timmy. Please put them up.</span>
Fact has duplicate 'Front': discard; put in the garbage , throw out (1. separable) <br /><br /><span style='font-style:italic;'> This food smells bad. You'd better throw it out.</span>
Fact has duplicate 'Front': turn out , come to a meeting or to form a crowd <br /><br /><span style='font-style:italic;'> Thousands of fans turned out to welcome the team.</span>

что говорит 'duplicate' вроде понятно., идем в файлы (verbs1,verbs2,verbs3), ищем там дубликаты строчки и добавляем им индексы (1) (2) и т.п., так же видим что "hand over" остался сиротой, без описания и примера., восполним это результатом из переводчика

4. Так как мы получили ошибки, и подправили файлы. удаляем файл anki_deck, и переходим к пункту 2, получаем красивый результат
Importing complete. 900 facts imported from anki_deck.
что говорит что все ок. жимкаем Ctrl-S (выбираем куда сохранить) и вуаля.. - дека готова

выглядит очень красиво :).
а главное полезно :).

для ленивых товарищей, готовую деку можно скачать жмакнув сюда, либо посмотреть shared deck в интерфейсе анки

понедельник, 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) данный скрипт загнется. если сильно будет нужно - починю, сейчас пока в лом.