Консольный английский. Урок 1. "Награбить" английских фраз
Люблю когда написанная программа делает именно то, ради чего создавалась, и затраченное на нее время со всей очевидностью окупается (бывает такое очень и очень… не всегда). Вот сегодня, например, написал скрипт, вытягивающий с полезного сайта нужные ресурсы.
Сайт этот — audio-class.ru/. Он помогает быстро освоить или подтянуть разговорный английский. Я туда зашел как раз с этой целью: понадобилось освежить речевые навыки. Чтобы не выглядеть наглым пиратом и неблагодарной скотиной, искренне хочу поспособствовать посещаемости этого отличного ресурса, который его авторы развивают, как говорится, не за страх, а за совесть. Отличный контент, с юмором всё сделано, доброжелательно и без всякой рекламы. Спасибо, чуваки, энергии вам в вашем благородном деле!
Теперь о шкурном интересе. Одной из самых важных фишек вышеупомянутого сайта является сборник озвученных фраз, запоминание которых на слух и является, как известно, залогом успеха в изучении языка. Всё там прекрасно работает: небольшие аудиофрагменты звучат прямо с веб-страницы, только успевай глазами соответствующий текст читать. Всего 8 страниц по 50 фраз, итого 400. Но есть недостаток. Память у меня пока еще довольно цепкая и при повторном прослушивании я поймал себя на том, что помню не саму фразу, а ее положение на странице. А хотелось бы рандомно… Вот эта мысль и толкнула на небольшое «преступление»: решил выкачать все аудиофрагменты и прослушивать локально.
( Читать дальше )
Сайт этот — audio-class.ru/. Он помогает быстро освоить или подтянуть разговорный английский. Я туда зашел как раз с этой целью: понадобилось освежить речевые навыки. Чтобы не выглядеть наглым пиратом и неблагодарной скотиной, искренне хочу поспособствовать посещаемости этого отличного ресурса, который его авторы развивают, как говорится, не за страх, а за совесть. Отличный контент, с юмором всё сделано, доброжелательно и без всякой рекламы. Спасибо, чуваки, энергии вам в вашем благородном деле!
Теперь о шкурном интересе. Одной из самых важных фишек вышеупомянутого сайта является сборник озвученных фраз, запоминание которых на слух и является, как известно, залогом успеха в изучении языка. Всё там прекрасно работает: небольшие аудиофрагменты звучат прямо с веб-страницы, только успевай глазами соответствующий текст читать. Всего 8 страниц по 50 фраз, итого 400. Но есть недостаток. Память у меня пока еще довольно цепкая и при повторном прослушивании я поймал себя на том, что помню не саму фразу, а ее положение на странице. А хотелось бы рандомно… Вот эта мысль и толкнула на небольшое «преступление»: решил выкачать все аудиофрагменты и прослушивать локально.
( Читать дальше )
Вытащить базы данных из устройства с Android
Если подключить рутованный аппарат с Андроидом к ПК USB-шнуром, то с помощью штатной утилиты из комплекта Android SDK можно слить базу контактов такой командой:
Чтобы вытащить все СМС можно использовать
Источник.
$ adb pull /data/data/com.android.providers.contacts/databases/contacts2.db ; sqlite3 -batch <<EOF contacts2.db <CR> .header on <CR> .mode tabs <CR> select * from data; <CR> EOF
Чтобы вытащить все СМС можно использовать
adb pull /data/data/com.android.providers.telephony/databases/mmssms.db ; sqlite3 -batch <<EOF contacts2.db <CR> .header on <CR> .mode tabs <CR> select * from sms; <CR> EOF
Источник.
Графический интерфейс в bash скриптах
Сегодня приведу небольшой пример того, как можно сделать графический интерфейс выбора из списка с помощью bash и т.н. zenity (gtk).
Окно выбора представляет собой список из 2х организаций, например (названия замазаны квадратиками)
Если нажать «Отмена» скрипт просто прекратит работу, если нажать «ОК» выбрав филиал, или просто 2 раза щелкнуть на названии филиала — сработает та или иная часть скрипта.
Сам скрипт:
( Читать дальше )
Окно выбора представляет собой список из 2х организаций, например (названия замазаны квадратиками)
Если нажать «Отмена» скрипт просто прекратит работу, если нажать «ОК» выбрав филиал, или просто 2 раза щелкнуть на названии филиала — сработает та или иная часть скрипта.
Сам скрипт:
( Читать дальше )
10 случайных обоев из командной строки
Удивительно, до чего иной раз додумываются гении консоли:
А почему бы и не испытать этот трюк? Скопипастить строку в консоль и дождаться результата закачки при хорошем соединении займет не более 3 минут. Вот такой получился «улов».
Остальное под катом.
( Читать дальше )
for i in {1..10}; do wget $(wget -O- -U "" "http://images.google.com/images?imgsz=xxlarge&hl=en&q=wallpaper&sa=N&start=$(($RANDOM%700+100))&ndsp=10" --quiet | grep -oe 'http://[^"]*\.jpg' | head -1);done
А почему бы и не испытать этот трюк? Скопипастить строку в консоль и дождаться результата закачки при хорошем соединении займет не более 3 минут. Вот такой получился «улов».
Остальное под катом.
( Читать дальше )
Qr-код из текста
Сгенерировать можно так:
vcs — текстовой формат для обмена визитными карточками.
$ qrencode -o contact.png ?`cat contact.vcs`?
vcs — текстовой формат для обмена визитными карточками.
Рекурсивное добавление расширения к именам файлов.
Возникла проблема — сотни файлов раскиданные по директориям не имеют правильного расширения, при этом их невозможно загрузить в Alfresco.
Рекурсивно в bash можно добавить расширение так:
Источник
Рекурсивно в bash можно добавить расширение так:
find . -type f -not -name "*.doc" -exec mv "{}" "{}".doc \;
Источник
Список каталогов и файлов в виде дерева
Выводится на консоль такой остроумной командой:
Источник.
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
Источник.
Вывести содержимое веб-ресурса на экран
Понадобилось скачать исходник на Java из Сети, причем в консольном режиме. Решение простое: команда
выведет поток не в файл, а на экран. Только вот вспомогательный аутпут wget'а всё дело портит:
Наверно, у этой утилиты есть ключи, позволяющие подавить ненужный текст, но мне, почему-то, подумалось, что он направлен в поток сообщений об ошибках, т.е. всё на ту же консоль. Предчувствия не обманули:
Юниксвей, фигли.
wget -O - http://docs.oracle.com/javase/jndi/tutorial/ldap/connect/src/Timeout.java
выведет поток не в файл, а на экран. Только вот вспомогательный аутпут wget'а всё дело портит:
$ wget -O - http://docs.oracle.com/javase/jndi/tutorial/ldap/connect/src/Timeout.java
--2012-05-03 18:54:32-- http://docs.oracle.com/javase/jndi/tutorial/ldap/connect/src/Timeout.java
Resolving docs.oracle.com... 77.109.171.186, 77.109.171.152
Connecting to docs.oracle.com|77.109.171.186|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2514 (2.5K) [text/plain]
Saving to: `STDOUT'
0% [ ] 0 --.-K/s
/*
* "@(#)Timeout.java 1.1 02/11/01 SMI"
*
* Copyright 2002 Sun Microsystems, Inc. All Rights Reserved.
* и т.д.
Наверно, у этой утилиты есть ключи, позволяющие подавить ненужный текст, но мне, почему-то, подумалось, что он направлен в поток сообщений об ошибках, т.е. всё на ту же консоль. Предчувствия не обманули:
$ wget -O - http://docs.oracle.com/javase/jndi/tutorial/ldap/connect/src/Timeout.java 2>/dev/null
/*
* "@(#)Timeout.java 1.1 02/11/01 SMI"
*
* Copyright 2002 Sun Microsystems, Inc. All Rights Reserved.
*
* Sun grants you ("Licensee") a non-exclusive, royalty free,
* license to use, modify and redistribute this software in source and
* binary code form, provided that i) this copyright notice and license
Юниксвей, фигли.
- —
- 03 мая 2012, 23:05
- комментировать
Замена пробелов на нижние подчеркивания в именах файлов
for file in *; do echo mv "${file}" "${file// /_}"; done
Не забудьте убрать слово echo, которое предохраняет от реального переименования на период отладки
Или даже так:
for file in "* *"; do mv "${file}" "${file// /_}"; done
Ох уж эти пробелы в именах файлов…
Отсюда.
- —
- 25 апреля 2012, 10:27
- комментировать
Автоматическая разметка жесткого диска
Прикольно: создается единственный раздел на диске, причем это работает даже если диск уже размечен.
Кажется, есть способ сделать это и более кошерным способом не входя в интерактивный режим, но неходчивость консольных гуру безгранична
$ echo -e "o\nn\np\n1\n\n\nw\n" | fdisk /dev/sdX
Кажется, есть способ сделать это и более кошерным способом не входя в интерактивный режим, но неходчивость консольных гуру безгранична