
luit -encoding "KOI8-R" ssh google.com
Стоит задача после объединение сетей через vpn объединить DNS зоны этих сетей так чтобы компьютеры из сети .xxx были доступны по именам в сети .a и наоборот. Простое добавление NS серверов другой сети в настройки DHCP не поможет, так как сервера указанные первыми не знают про зоны .a и .xxx, поэтому необходимо создать на DNS серверах .a и .xxx slave зоны и разрешить доступ для внешних DNS серверов
Для начала расширяем ACL:
acl "a_net" { 127.0.0.1; 192.168.0.0/24; 192.168.80.76; };
acl "xxx_net" { 127.0.0.1; 192.168.80.0/24; 192.168.0.78; };
Здесь я добавил в список доступа помимо компьютеров сети .a NS сервер сети .xxx, в сети .xxx нужно сделать тоже самое. Это необходимо для ограничение доступа, пускай только NS сервера могут выполнять запросы друг к другу
Затем добавляем slave зоны, для этого в /etc/bind/named.conf.local в сети .a добавляем инструкции
zone "xxx" {
type slave;
masters {192.168.80.76;};
allow-query { any; };
};
ну и в сети .xxx тоже самое только с учётом зоны и адреса. Перезапускаем bind (sudo rndc reload) и проверяем
$ hostname -d
a
$ nslookup aw.xxx
Server: 192.168.0.78
Address: 192.168.0.78#53
Name: aw.xxx
Address: 192.168.80.79
$ nslookup aw.xxx 192.168.80.76
Server: 192.168.80.76
Address: 192.168.80.76#53
** server can't find aw.xxx.a: REFUSED
Всё, первая команда показывает собственную зону(домен), вторая проверяет dns имя через NS своей зоны, а третья через NS зоны .xxx. Третья команда, как и положено, возвращает ошибку

Ну что, все «Аватар» посмотрели? Ну, как же, как же, 9 номинаций на «Оскар», самый кассовый фильм в истории, думаю, надо смотреть, хотя бы в торрентах
. Не скажу, что это шедевр всех времён и народов, но фильм мне понравился — динамично, красиво, временами вообще забываешь, что находишься в кино. Спецэффекты, все дела. Ну, а теперь посмотрим, где здесь зарыт пингвин
(...)
Read the rest of «Аватары» и пингвины (342 words)
© flycat for Блог FlyCat.Info: КОТорый летает..., 2010. |
Permalink |
No comment |
Add to
del.icio.us
Post tags: linux, видео, интересно, кино
Feed enhanced by Better Feed from Ozh
Похоже, российское подразделение корпорации Microsoft нашло новый интересный способ создавать дурной имидж открытому и свободному программному обеспечению — с помощью крупнейшей русскоязычной социальной сети «В Контакте».
Несколько недель назад в «контактовской» группе «Open Source», посвященной ПО с открытым кодом, было замечено появление девушки, которая начала недвусмысленную провокацию в теме, посвященной обращению к Президенту РФ насчет свободного ПО. Приверженцы FLOSS оперативно отреагировали, но у девушки были припасены красивые маркетинговые реплики на любые заявления сторонников Open Source…
Беглый анализ ситуации выявил весьма интересные подробности. В социальной сети «В Контакте» существует группа под безобидным и весьма общим названием «IT-сообщество (перезагрузка)». В ее руководстве помимо обозначенной девушки (Татьяны Макаровой) и, по всей видимости, ее коллеги (Нины Мирадовой) можно увидеть и двух заметных представителей Microsoft Россия, не скрывающих свою принадлежность к корпорации.
В этой группе регулярно заводятся «обсуждения», посвященные Open Source, в которых под предлогом образования населения рассказывается про свободное и открытое ПО, после чего, обычно уже в ходе дискуссий, делаются замечательные выводы о неприменимости такой бизнес-модели ПО — причем, как правило, со ссылками на «подтверждения» из различных сетевых источников. Так, например, в недавнем (январь 2010 года) обсуждении вопросов надежности Linux-систем приводится ссылка на статью 2001 года, где утверждается, что «cбoй питaния мoжeт пpивecти к paзpyшeнию фaйлoвoй cиcтeмы, пoлнoй нepaбoтocпocoбнocти oпepaциoнки и пoтepe дaнныx».
Инициаторы этой затеи заботливо собирают всю информацию, которую можно подать в виде негативных выводов о свободном и открытом ПО, после чего «обрабатывают» каждого комментатора в своем и других сообществах крупнейшей русскоязычной социальной сети.
Источник: Дмитрий Шурупов (nixp.ru)
В то время, как мы с нетерпением ждём выхода KDE SC 4.4, Marco «notmart» Martin экспериментирует с внешним видом уведомлений в следующих версиях. Предварительные результаты его усилий можно увидеть на приведённом ниже ролике (OGG-версия):
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" height="344" width="425"><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><param name="src" value="http://www.youtube.com/v/1Z31MLWMOuU&color1=0xb1b1b1&color2=0xcfcfcf&hl=en_US&feature=player_embedded&fs=1"/><param name="allowfullscreen" value="true"/><embed allowfullscreen="true" allowscriptaccess="always" height="344" src="http://www.youtube.com/v/1Z31MLWMOuU&color1=0xb1b1b1&color2=0xcfcfcf&hl=en_US&feature=player_embedded&fs=1" type="application/x-shockwave-flash" width="425"></embed></object>
Как видите, теперь множество появляющихся друг за другом уведомлений не будут занимать слишком много экранного пространства, зато при нажатии на символ «i» в системном лотке, вы увидите окно со всеми уведомлениями, разбитыми на категории
Релиз KDE SC 4.4 состоится совсем скоро, и многие пользователи уже активно пользуются RC-сборками. Стоит отметить, что многие пользователи, установившие KDE SC 4.4 с Qt 4.6.0 наблюдали нестабильную работу приложений, что связано с ошибками в этой версии Qt. Эти ошибки исправлены в версии Qt 4.6.1, вышедшей 19 января (в ближайшее время также должна выйти Qt 4.6.2). Некоторые дистрибутивы всё ещё предоставляют версию Qt 4.6.0, но в ряде случаев в их сборки библиотеки включены исправления из следующих версий.
Также стоит отметить эту ошибку в системной библиотеке glibc, которая также уже была исправлена, и для большинства дистрибутивов был выпущен обновлённый пакет, однако некоторые пользователи KDE всё ещё пользуются старой версией.
Перевод статьи «Should Ubuntu include proprietary software?» Стивена Воган-Николса (Steven J. Vaughan-Nichols)
Каноникал, компания стоящая за Ubuntu, возможно самого популярного из всех дистрибутивов Линукс, спрашивает своих пользователей, какое новое проприетарное программное обеспечение они хотели бы видеть в качестве дополнительных программ Ubuntu.
Заметьте, я сказал «новые». Ведь с апреля 2007 года Ubuntu содержит патентованное программное обеспечение в виде драйверов оборудования. Тогда разработчики Ubuntu решили разместить в дистрибутиве бинарные драйвера графических карт ATI и nVidia, потому что «значительной доле людей использующих Ubuntu — в том числе 70%-80% имеющих новые компьютеры — нуждаются в несвободном драйвере для нормальной работы их графических адаптеров, карт беспроводной связи, или модемов, потому что свободные драйвера не обеспечивают полной поддержки оборудования, да и выбирать-то особо было не из чего».
Тем не менее, когда дело коснулось конечных пользователей программного обеспечения, Ubuntu вообще поддерживал политику о не включении в состав дистрибутива проприетарного ПО. Например, вы не найдёте Adobe Flash 10.x в Ubuntu, хотя это обычно включается в состав такого дистрибутива, как openSuse.
Однако, есть несколько других дистрибутивов, такие как Mint, пожалуй один из самых известных дистрибутивов по включению в дистрибутив проприетарного ПО, которые Ubuntu отказались включать в состав дистрибутива. До сих пор.
Член администрации Ubuntu Форума Мэтью Хельмке (Matthew Halmke) написал сообщение: «Мы пытаемся собрать данные о приложениях, какие пользователи хотели бы видеть в следующих релизах Ubuntu. Хотя мы все верим в силу открытого программного обеспечения, но мы также заинтересованы в том, чтобы конечные пользователи получали выбор программного обеспечения, которое они хотят использовать. Есть несколько весомых приложений, которые в данный момент не доступны пользователям Ubuntu, и Каноникал хотел бы знать приоритеты пользователей, которым это ПО нужно.»
Однако, Ubuntu тут же подстраховывается. Хельмке доступно и основательно объясняет: «Речь идёт не о приложениях, которые будут включены в дистрибутив по умолчанию, а лишь о тех, что мы попытаемся сделать более доступными для наших пользователей Ubuntu. И установка таких приложений будет производится только с наших официальных репозиториев.»
И что же это за приложения, которые Каноникал рассматривает в качестве варианта предоставления конечному пользователю Ubuntu? В этом опросе программного обеспечения, вы найдёте довольно-таки странный список ПО. Некоторые из них популярны, такие как Pandora, благодаря которой можно наслаждаться потоковой онлайн музыкой, а с другой стороны, такие непонятные программы, как Spotify, весьма странный выбор.
Особенно меня восхитило, что некоторые программы из «списка желаний» долгое время представлял собой список Windows и Mac программ — таких как Adobe Photoshop, World Of Warcraft и Apple iTunes, которые никогда не были нативно доступны в Линуксе. В тоже время, есть возможность запуска Photoshop'а и World Of Warcraft в Линуксе с помощью Wine или с помощью его «больших коммерческих братьев» CodeWeaver's CrossOver Games и CrossOver Linux, тогда как производители этих программа из «списка желаний» никогда не проявляли серьёзного интереса для портирования на Линукс.
Тем не менее, другие программы из списка, такие как Google Picasa и Skype, доступны на Линуксе, но являются исключительно проприетарны ПО. Конечно же, вы можете в своём «листке хотелок» написать любую необходимую вам проприетарную программу.
И всё же, будет ли Ubuntu делать некоторые из этих программы доступными пользователям? Я уверен, что они это сделают. Хотя есть много людей, которые всё ещё настаивают на свободном программном обеспечении или которые не используют проприетаное ПО на своих компьютерах, большинство Desktop-пользователей Линукс, кажется, просто использует проприетарные программы и всё — они, может быть, и не использовали их, если бы у них был выбор.
Тем не менее, считает ли Ubuntu это нормальным или нет, я сильно сомневаюсь, что мы увидим нативные версии Adobe Photoshop или Apple iTunes на наших компьютерах в ближайшее время. Хотя, черт его знает.
А что вы думаете по этому поводу? Заполните анкету Ubuntu и делитесь своим мнением.
Коллега solshark в очередной раз обновил свою сборку Qt-версии Firefox, и рассказал, что из этого вышло. К выводам он пришёл не очень оптимистичным.
Так как VPN может использоваться для объединения не только компьютер клиент + компьютер сервер, а для объединения сетей необходимо обеспечить автоматическую настройку маршрутизации. В прошлой заметке у меня это делается вручную после подключения, а это совсем не удобно при автоматическом подключении, поэтому пришлось разбираться как работает эта система
Итак для создания специфических маршрутов при подключение к VPN серверу необходимо создать файл /etc/ppp/ip-up.d/pptp_vpn со следующим текстом (ниже описано как правильно называть файл с маршрутами)
cat /etc/ppp/ip-up.d/pptp_vpn
#!/bin/sh
# мой маршрут пересылающий пакеты из локальной сети в сеть 192.168.80.0/24
route add -net 192.168.80.0/24 gw 192.168.100.2
Это файл должен быть исполняемым, для удаления маршрута необходимо использовать файл: /etc/ppp/ip-down.d/pptp_vpn со следующими командами ( и pptpd - для VPN сервера)
cat /etc/ppp/ip-down.d/pptp_vpn
#!/bin/sh
route add -del 192.168.80.0/24 gw 192.168.100.2
Тут видно, что мои скрипты настройки маршрутизации чрезвычайно примитивны и не учитываю множество ситуаций, но меня они устраивают. Но если потребуется большее, например на сервере необходимо выдавать маршруты в зависимости от имени подключаемого пользователи или имени интерфейса или добавлять правила фаервола, то придётся применять условия и обрабатывать переменные окружения которые формирует pptpd.
Чтобы узнать какие формируются переменные при создании нового соединения нужно добавить в созданные файлы вот такую команду:
env > /tmp/env.vpn
На моём VPN сервере я получаю вот такие переменные
cat /tmp/env.vpn
PPP_TTY=/dev/pts/0
IFNAME=ppp1
PPPLOGNAME=root
IPLOCAL=192.168.100.1
PPP_REMOTE=192.168.100.2 # IP на другом конце тонеля
PPP_IFACE=ppp1 # название интерфейса
PPP_TTYNAME=0
ORIG_UID=0
SPEED=115200 # индикатор скорости подключения, можно игнорировать
PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
IPREMOTE=192.168.100.2
PPP_LOCAL=192.168.100.1
PPP_IPPARAM=92.255.239.93 # IP хоста откуда произошло подключение
PPPD_PID=331 # PID текущего процесса
PWD=/
PPP_SPEED=115200
PEERNAME=mywork # имя под которым подключился клиент
DEVICE=/dev/pts/0
Думаю этих переменных достаточно чтобы организовать довольно сложные конфигурации
Следует обратить внимание на то как называть файлы скриптов дополнительных маршрутов.
При создании или удалении ppp, pptp интерфейсов запускаются файлы: /etc/ppp/ip-up /etc/ppp/ip-down соответственно. Эти файлы являются скриптами которые определяют дальнейшее поведение соединения. Например, если создать файл /var/log/ppp-ipupdown.log то в нём будет отображаться некоторые переменные поясняющие дальнейшее действие скрипт, затем эти переменные используются для вызова утилиты run-parts. Вот пример поясняющий работу этой утилиты
ffsdmad@ffsdmad-home:~$ run-parts --list --regex 'vpn' /etc/ppp/ip-up.d
/etc/ppp/ip-up.d/99_pptpd_vpn
ffsdmad@ffsdmad-home:~$ run-parts --list --regex '[0-9]+vpn' /etc/ppp/ip-up.d
ffsdmad@ffsdmad-home:~$
Тоесть эта утилита запускает скрипты соответствующие регулярному выражени из указанной директории
В моём случае , да вообще по умолчанию, запускаются все скрипты из директории ip-up.d и ip-down.d, так как не задано регулярное выражение для отбора нужного скрипта:
run-parts /etc/ppp/ip-up.d --arg=ppp1 --arg= --arg=38400 --arg=192.168.100.2 --arg=192.168.100.1 --arg=vpn
В случае когда потребуется запуск разных файлов для разных соединения и это будет невозможно сделат внутри самих скриптов с помощью переменных окружения можно использовать механизм отбора нужного скрипта по регулярному выражению

Утилита checkinstall предлагает заменять команду make install. Т.о. сборка выглядит так:
./configure
make
sudo checkinstall
После чего checkinstall установит, создаст .deb пакет и сохранит его в этой же директории.
Подробности как всегда
man checkinstall
Преимущества: можно удалять стандартными средствами (synaptic, aptitude remove, aptitude purge и т.д.), создается DEB, RPM, Slackware пакет.
sudo dpkg -i kernelcheck_1.2.5-3_all.deb
sudo kernelcheck
Как известно, команда kill, несмотря на своё «кровожадное» название, предназначена всего лишь для того, чтобы посылать процессам «нужные» сигналы. Частными случаями этих сигналов являются сигналы завершения (которые, тем не менее, используется чаще всех — видимо, поэтому команда и получила такое «убийственное» название). Обычно мы используем её в виде kill -SIGNAL PID, где PID — идентификатор процесса.
Но есть и другие способы эффективно «кильнуть» процесс — по имени, по части имени, просто показав на него курсором, и т.д. Рассмотрим несколько из них.
(...)
Read the rest of Kill, killall, pkill, xkill — пособие для начинающего «киллера» (436 words)
© flycat for Блог FlyCat.Info: КОТорый летает..., 2010. |
Permalink |
17 comments |
Add to
del.icio.us
Post tags: bash, linux, shell, новичкам, сисадм, узелки на память
Feed enhanced by Better Feed from Ozh
/etc/firefox-3.x», где 3.x - версия браузера./etc/firefox-3.x/pref/firefox.js» и в конец файла добавляем эти строки// Отключаем Safe Browsing
pref ("browser.safebrowsing.enabled", false);
pref ("browser.safebrowsing.malware.enabled", false);
Недавно приобрел себе игрушку — MSI Wind U120. Дешевый и непритязательный, батарейка дохлая, АТОМ тормозной, как смертный грех, но мне много не надо чтобы книжки читать в кровати и в дороге.
Так вот, на этом девайсе есть поддержка WiMAXа, и я, естественно, тут же ринулся ее настраивать.
В качестве системы на девайс я вкатил ubuntu netbook remix на базе 9.10, дабы не заморачиваться с кросс-компиляцией в Gentoo (ясно, что собирать на тормозном атоме много не насобираешь), поэтому инструкции и файлы для нее.
Итак, во-первых, в ядре с 2.6.29 есть WiMAX-стек, что спасает от необходимости патчить ядро/собирать сторонние модули. Тем не менее, суппликанта и набора утилит по умолчанию в системе не наблюдается, их придется брать отсюда:
http://linuxwimax.org/Download
Конкретно нас интересуют WiMAX Network Service и Intel WiMAX Binary Supplicant.
И то, и другое, как водится, нужно скачать и распаковать. При сборке из исходников понадобятся заголовки libnl (то есть, пакет libnl-dev). Подробная инструкция по сборке и установке несколько выходит за рамки заметки, поэтому отсылаю либо к первоисточнику, либо к ссылкам в конце статьи. Для ленивых к посту прицеплены deb-пакеты, ебилды для любопытных можно найти в соответствующем баге
Дабы включить поддержку йоты, в интернетах старательно рекомендуют использовать специальные файлы настроек (прилагаются вместе со скриптом инсталляции, см. в конце статьи), однако у меня все, вроде как, работает и без них.
После, собственно, установки всего упомянутого, добиться желаемого (включения/выключения вимакса) можно следующим образом:
./start.sh #!/bin/bash modprobe -r iwlagn #Turn off Wi-Fi wimaxcu ron #Turn WiMax on wimaxll-wait-for-state-change wmx0 wimaxcu connect network 15 #Yota
./stop.sh #!/bin/bash ifconfig wmx0 down #Stop interface wimaxcu dconnect #Disconnect network wimaxcu roff #Turn WiMAX off modprobe iwlagn #Turn Wi-Fi on
После старта я еще руками запускаю поключение wmx0 в Network-Manager, дабы он получил адрес по dhcp. Можно из стартового скрипта в конце делать dhclient wmx0
Ну, и в заключение, приложния.
Intel Wimax Binary Supplicant 1.4.0 i386 deb
Wimax Network Service 1.4.0 i386 deb
Yota Config
start-stop scripts
И ссылки по теме:
Статья на хабре
comnote.blogspot.com/..ubuntu-910-yota-wimax-vs.html
P.S. Для любопытствующих еще добавлю, что при сборке WiMAX Network Service правильная строка для configure будет выглядеть так:
./configure --prefix=/usr --with-i2400m=/usr/src/linux-headers-$(uname -r) --localstatedir=/var --sysconfdir=/etcСвязанные посты:

arbtt-capture и заниматься своими делами*. arbtt-capture будет записывать когда и какие программы были запущены и какие у окон были заголовки.* Авторarbttрекомендует сразу добавитьarbtt-captureв автоматически запускаемые приложения.
arbtt-dump, но это не очень полезно. Для просмотра статистики удобнее использовать использовать утилитку arbtt-stats.arbtt-stats могла выдавать осмысленные результаты, нужно вначале задать свою классификацию запущенных программ. Эти правила вписываются в файл ~/.arbtt/categorize.cfg. Пример и описание формата правил есть в документации. Приведу свой (сокращённый) пример с комментариями по-русски:-- правила имеют вид:
-- [условие ==>] tag [категория_тега:]тег,
-- в условиях и тегах можно использовать несколько специальных переменных,
-- почти все они встречаются в примерах ниже
-- Не учитывать время простоя
$idle > 60 ==> tag inactive,
-- Все записи за последние 24 часа пометить тегом last-day
$sampleage <= 24:00 ==> tag last-day,
-- Пометить тегом last-hour все записи за последний час
$sampleage <= 1:00 ==> tag last-hour,
-- Все типы окон Firefox учитывать в одном теге program:web (program — это категория тега)
current window $program == "Navigator" ==> tag program:web,
current window $program == "firefox-bin" ==> tag program:web,
current window $program == "gecko" ==> tag program:web,
-- Общий тег для всех видов терминалов (на будущее)
current window $program == "gnome-terminal" ==> tag program:terminal,
-- Пометить все остальные программы пометить тегами вида program:имя_программы
tag program:$current.program,
-- Классифицировать заголовки Firefox с помощью регулярных выражений. Тут у каждого будут свои шаблоны.
-- Присваивать теги категории web.
current window ($program == "Navigator" && $title =~ /^Gmail.*/) ==> tag web:Gmail,
current window ($program == "Navigator" && $title =~ /.*Google Search.*/) ==> tag web:Google,
current window ($program == "Navigator" && $title =~ /^Twitter.*/) ==> tag web:Twitter,
current window ($program == "Navigator" && $title =~ /.* on Twitter - Iceweasel$/) ==> tag web:Twitter,
current window ($program == "Navigator" && $title =~ /^Springer.*/) ==> tag web:Papers,
current window ($program == "Navigator" && $title =~ /^Wiki - Editing.*/) ==> tag web:Papers,
-- ...
--
current window $program == "Navigator" ==> tag web:$current.title,
-- Теги категории time-of-day для классификации по времени суток
$time >= 2:00 && $time < 8:00 ==> tag time-of-day:night,
$time >= 8:00 && $time < 12:00 ==> tag time-of-day:morning,
$time >= 12:00 && $time < 14:00 ==> tag time-of-day:lunchtime,
$time >= 14:00 && $time < 18:00 ==> tag time-of-day:afternoon,
$time >= 18:00 && $time < 22:00 ==> tag time-of-day:evening,
$time >= 22:00 || $time < 2:00 ==> tag time-of-day:late-evening,
-- Помечать над каким проектом работаю судя по заголовку окна.
-- Присваивать теги категории project.
current window $title =~ m!~/work/projectA! ==> tag project:projectA,
current window $title =~ m!~/work/projectB! ==> tag project:projectB,
-- ...
--
-- Помечать, какой тип текста я редактирую судя по заголовку окна.
-- Присваивать теги категории edit.
current window ($title =~ /^[^ ]+\.c .* - G?VIM.*$/) ==> tag edit:c,
current window ($title =~ /^[^ ]+\.py .* - G?VIM.*$/) ==> tag edit:python,
current window ($title =~ /^[^ ]+\.hs .* - G?VIM.*$/) ==> tag edit:haskell,
-- Когда использую suduedit
current window ($title =~ m!.*\(/var/tmp\) - G?VIM.*$!) ==> tag edit:config,
-- Когда редактирую что-то онлайн в Its All Text
current window ($title =~ m!.*/itsalltext\) - G?VIM.*!) ==> tag edit:itsalltext,
$ arbtt-stats -c имя_категорииДля просмотра отчётов по всем категориям:
$ arbtt-stats --each-categoryДля ограничения выборки только записями с определённым тегом, например,
last-hour, есть опция -o. Всё вместе: $ arbtt-stats -o last-hour -c program -c editВ последнем примере я показал примерный вывод программы. Сразу видно, сколько времени за последний час я что-то редактировал и что именно и какие программы использовал. Писал эту заметку, в общем.
Statistics for category program
===============================
_____________Tag_|___Time_|_Percentage_
program:terminal | 29m00s | 48.33
program:gvim | 17m00s | 28.33
program:web | 13m00s | 21.67
program:Pidgin | 1m00s | 1.67
Statistics for category edit
============================
_____________Tag_|___Time_|_Percentage_
edit:itsalltext | 17m00s | 28.33
edit:haskell | 4m00s | 6.67
(unmatched time) | 39m00s | 65.00
arbtt есть не только в линуксовых репозиториях, но в скором времени (а может и уже) будет доступна и пользователям Windows.arbtt-stats при печати портит заголовки окон с уникодом (патчем на 20 строк исправляется, должно быть ОК при сборке новым GHC), пока нельзя классифицировать по дням недели или по месяцам, сообщения о синтаксических ошибках в правилах очень невнятны.Не так давно, я внезапно понял, что mpd для меня огромен. И правда зачем мне музыкальный демон, когда я музыку слушаю довольно редко? Посмотрел сначала mocp, но мне не понравился его mc like интерфейс, да и я слишком привык к vim like управлению. В ncmpcpp с этим было проще, там хотя бы j\k работали. Единственный плеер который уподоблял моим нуждам – это cmus. К слову сказать, плеер этот прекрасен! Кроме vim like управления, cmus ещё крайне быстр и хорошо настраиваемый.
Что меня крайне удивило, так это малое количество русской документации по cmus. Есть лишь куча упоминаний о том что такое есть, и оно вот такое вот. Не более. Вот собственно поэтому, я и решил написать про него.
Cmus имеет семь режимов(окон, как будет удобнее) переключение между которыми осуществляется с помощью цифр 1,2,3,4,5,6 и 7. Нет, тут не режимы как в vim. Тут несколько другое (картинки кликабельны):
1. Музыкальная библиотека
Режим просмотра вашей фонотеки. Перемещение привычными vim like «хоткеями». Добавляется музыка в библиотеку командой :add. Например так:
:add /home/username/music
Перемещение между директорией и её содержимым с помощью кнопки tab. Посмотреть альбомы исполнителя (если их несколько) – пробел (space). Обновить фонотеку – u.
Так же, неплохо сохранять содержимое медиатеки в файл, дабы каждый раз cmus не сканировал её снова:
:save -l
2. Сортированная музыкальная библиотека
По умолчанию это просто список всех песен из библиотеки только отсортированный по авторам и альбомам. В этом режиме можно применять различные фильтры для сортировки.
3. Плэйлист
Думаю, здесь всё понятно без лишних объяснений. Одно лишь дополнение: если в play queue есть треки, то они проиграются первыми.
Плэйлист можно так же сохранять:
:save -p ~/playlist.pls
И соответственно загружать:
:load -p ~/playlist.pls
4. Очередь воспроизведения.
Сюда добавляются треки для одноразового прослушивания так сказать. После того, как трек начался, он сразу же удаляется из этого списка. Воспроизводиться всегда в первую очередь именно play queue. Например если слушали музыку из плэйлиста, и добавили в play queue, то cmus после того, как закончит играть трек из библиотеки, начнёт играть содержимое play queue. Когда содержимое play queue закончится, cmus продолжит играть из плэйлиста.
5. Файловый браузер
Это то, за что я очень сильно люблю cmus, и чего нет в mpd. Таким образом, удобно слушать подкасты, или песню которую принёс друг на заценить не засоряя при этом свою музыкальную библиотеку.
6. Показ всех имеющихся фильтров.
В этом режиме, cmus показывает все имеющиеся фильтры которые применяются ко второму режиму отображения.
7. Окно настроек cmus’а.
Здесь доступны все опции которые есть в cmus. Редактировать лучше не через конфигурационный файл как многие привыкли, а через его интерфейс. Cmus в процессе работы постоянно зачем-то изменяет файл конфигурации. Так же все опции можно менять через командную строку. Например:
:set passwd=mypassword
Настройки сохраняются «на лету».
Пересказывать ман, я не вижу смысла, поэтому ниже лишь основные команды управления cmus:
Так же, cmus поддерживает цветовые схемы которые можно менять с помощью команды :colorscheme. Например я использую green-mono-88:
:colorscheme green-mono-88
Можно просто написать :colorscheme и полистать имеющиеся с помощью кнопки tab. А можно самому сделать свою тему или написать :set color и дальше с помощью клавиши tab пролистать доступные опции и выбрать подходящие на свой вкус.
Cmus’у можно так же давать команды с помощью cmus-remote. Например:
cmus-remote -p # Играть
cmus-remote -v 60 # Сделать громкость равную 60%
cmus-remote -f file.mp3 # играть файл.
Подробнее cmus-remote –help
По мимо всего этого, cmus’ом можно управлять удалённо (привет mpd! ☺). По умолчанию, cmus создаёт socket в /tmp. Можно указать слушать порт, через который потом можно им управлять.
cmus –listen localhost:1055
А затем с помощью cmus-remote управлять:
cmus-remote –server localhost:1055 –passwd password –play
Кстати, было бы не лишним при этом, установить пароль. Сделать это можно в окне настроек (7), или :set passwd=вашпароль
Ещё рекомендую включить softvol дабы не регулировать громкостью cmus’а, громкость PCM. Кстати в cmus делается это лёгким движением руки:
:set softvol=true
Cmus, так же как и mpd умеет скроблинг на lastfm и вывод текущей играющей песни и статуса. Точнее, не сам cmus умеет. Cmus просто может выполнять команду при смене песни\состояния. За это ответственен параметр status_display_program которой в качестве аргумента передаётся путь до скрипта. Например для скроблинга на lastfm можно использовать вот этот скрипт last-cmus.py. Или для вывода текущего исполнителя и трека во временный файл в /tmp, можно использовать cmus-status-display.
За всеми остальными, более детальными подробностями: man cmus и man cmus-remote
Похожие записи:
В предыдущем посте — небольшая история о том, как в Linux была улучшена поддержка устройств экстра-маленького размера благодаря покупки Линусом Торвальдсом вышивальной машинки :) В письме Линуса в рассылку util-linux-ng@kernel.org было упомянуто, что для управления этой машинкой он использует Eee PC с Fedora 12 на борту. Как пользователь Eee PC 701g с почти двухлетним стажем, я заинтересовался и написал Линусу письмо с несколькими вопросами о его опыте использования этих компьютеров. Получилось мини-интервью, которое и предлагается вашему вниманию.
Q: Какие модели Eee PC Вы используете?
A: У меня их две штуки: 701 и 901.
Q: Это основной компьютер или один из дополнительных?
A: Нет, конечно же, это не основной компьютер. Atom тормозной как грех. Я считаю, что процессоры с прямым выполнением команд (in-order execution) — преступление против человечности, и я уверен в том, что если Intel не предпримет значительных шагов (т.е. сделает Atom out-of-order), ARM Cortex A9 захватит рынок low-end машин.
У меня есть пара нетбуков, потому что я люблю маленькие компьютеры и использую их в поездках. Но они никогда не могли бы служить основными машинами для разработки или чем-то вроде этого.
701 слишком мелкий для того, чтобы быть полезным. Экран крошечный и у него непозволительно маленькое разрешение. Клавиатуру едва можно использовать. 901 намного лучше и мог бы быть неплохим помощником в поездках, но разрешение тоже слишком маленькое (9 дюймов нормально, но 1024×600 юзабельно только для смартфонов, а для лэптопов подошло бы как минимум 1366×768, как мне кажется)
Поэтому я не использую ни один из них ни для чего, кроме тестирования. 901 используется моей женой для её вышивальной машинки, и для такого, обычного использования он подходит очень хорошо.
ВНИМАНИЕ! Наверно, следует заметить, что мои требования могут быть завышенными по сравнению с требованиями многих других людей. Моя основная машина — Nehalem 3.2 GHz c 6 GB RAM и двумя быстрыми SSD-дисками от Intel. Поэтому мои представления о том, какая производительность может считаться «приемлемой», могут не совпадать с представлениями других.
Q: какие задачи Eee PC помогает Вам выполнять?
A: Сейчас 701 работает тестовым стендом для совершенно различных вещей — я держу его поблизости в основном как 32-битный x86-стенд (все мои основные машины — x86-64, поэтому, если мне нужно проверить, что 32 бита еще работают, я использую 701).
901 я иногда использовал в поездках как лэптоп, и в основном он меня удовлетворял, но, откровенно говоря, существуют нормальные ноутбуки, которые намного-намного-намного лучше.
Например, я немного поигрался с машинами, основанными на CULV Core 2 Duo (вместо Atom) с экраном 1366×768 и внезапно обнаружил, что может быть намного более мощная (чем eeepc — прим.пер.) сборка. Она больше по размерам (10 дюймов), потребляет больше энергии, но оно того стоит.
Q: приобрели ли Вы эти нетбуки самостоятельно или они были подарены?
A: Оба Eee PC были подарены. 10″ CULV Core2 было самым достойным приобретением, на которое я потратил свои деньги.
Q: сколько времени Вы проводите перед этим нетбуком? Достаточен ли его размер для Вас?
A: См. выше. 701 и близко не стоял. 901 вполне пригоден к использованию, и если бы у него не было такое маленькое разрешение, он мог бы быть неплохим помощником в путешествиях.
Q: производились ли какие-нибудь аппаратные модификации?
A: в оба добавил памяти, вроде сейчас в обоих по 2 Гб (возможно, 701 был с 512 мегабайтами, и я проапгрейдил до гигабайта, слишком лениво проверять). И еще в оба добавил ПЗУ: в 701 — быструю SD-карточку (понятие «быстрая» тут весьма относительно, но для SD-карточки неплохой результат), в 901 — Mini-PCI SSD.
Мне нравятся high-end SSD (например, интеловские замены жестким дискам), но те, что используются в low-end нетбуках, страдают от ужасающе отвратительной скорости записи. Поэтому SSD в этих нетбуках, как правило, медленнее, чем реальные диски.
Q: и еще один, более общий вопрос. Как Ваше рабочее время распределено между кодированием и административной/политической/социальной деятельностью?
A: Сейчас кодирую очень мало. Практически всё время занято обсуждениями с другими разработчиками и внесением их изменений в ядро.
Часть первая.
На Рождество Санта Клаус подарил Туве Торвальдс машинку для вышивания. Среди прочих достоинств эта машинка имеет USB-интерфейс, по которому можно закачивать заранее приобретённые шаблоны вышивки в специальном закрытом формате. При подключении к компьютеру это чудо техники через минуту определяется как USB mass storage с файловой системой FAT12, при этом закачивание небольших файлов происходит очень долго и зачастую не приводит ни к каким результатам: о возникающих ошибках пользователю ничего не сообщается. Таково всё проприетарное ПО, — сетует Линус, — закрытые форматы, кривые прошивки, невнятные ошибки… Проблема предпросмотра шаблонов вышивок в формате PES на компьютере оказалась самой простой и теперь на git.kernel.org имеется специальная программа pesconvert для обслуживания вышивальных машинок.
Часть вторая.
Линус пишет письмо в рассылку util-linux-ng@vger.kernel.org с детальным описанием длительного процесса определения типов разделов и ФС на маленьком, медленном и подглючивающем блочном устройстве. После активного обсуждения (которое, несмотря на явную гиковость, можно читать как захватывающий детектив) было найдено несколько узких мест в утилите blkid, пытающейся определить более чем 50 типов файловых систем по их сигнатурам, что приводит к неоднократному чтению 69 килобайт с устройства, и в сумме объём прочитанных данных, с учётом упреждающего чтения, составляет около половины объёма всего устройства. Учитывая тот факт, что скорость обмена данными у этой штуки составляет 16 килобайт в секунду, простое определение единственного fat-раздела занимает около 30 секунд (всё это нужно для того, чтобы udev смог корректно примонтировать это устройство).
Совместными усилиями задержка была сведена к рекордному минимуму в полсекунды. Для этого Karel Zak (главный мейнтейнер util-linux-ng) добавил в blkid несколько опций, ограничивающих количество возможных ФС и объём читаемых данных для очень маленьких устройств (зачем пытаться определить raid на диске размером с полдискеты?), Линус немного оптимизировал кое-какие системные вызовы и теперь в ближайшем выпуске util-linux-ng будет заявлена поддержка очень маленьких дисков, а в ядре Linux, чем черт не шутит — частичная поддержка неких вышивальных машинок.
Часть третья последует, не пропустите.
К выходу KDE SC 4.5 летом этого года планируется завершить портирование всех PIM-приложений (почта, календарь, заметки и т. д.) на Akonadi. Среди прочего, это облегчит поддержку различных groupware-серверов, поскольку реализовав один раз Akonadi-плагин, нет необходимости даже вносить изменения в клиентские приложения на его основе.
Один из таких серверов, Open-Xchange, поддерживался ещё в приложениях KDE3, а теперь соответствующий плагин был создан и для Akonadi. Вот так, например, выглядит календарь, открытый в веб-интерфейсе Open-Xchange и этот же календарь, синхронизированный с KOrganizer:
Quanta Plus остаётся довольно популярным средством веб-разработки для среды KDE3 даже сейчас. К сожалению, создатели приложения больше не занимаются её разработкой, а потому судьба порта Quanta на KDE4 долгое время была под вопросом. В конце концов, разработчики KDevelop решили подобрать упавшее знамя, и объявили о том, что Quanta4 будет переписана с нуля на основе разработок KDevPlatform. Это значит, что с одной стороны, Quanta4 будет строиться на той же кодовой базе, что и KDevelop 4, а значит, бесплатно получит все возможности последнего, а с другой — для KDevelop будут реализованы плагины для работы с HTML, CSS, JavaScript и PHP (в том числе, и для отладки).
Придётся, конечно, учитывать, что будучи полностью переписанной, первые релизы Quanta4 вряд ли будут охватывать все возможности, которые были заложены в версии для KDE3. Тем не менее, развиваясь в рамках KDevPlatform, Quanta наверняка получит дальнейшее развитие.
Первую стабильную версию KDevPlatform планируется выпустить 31-го марта 2010 года, а пока что регулярно выходят бета-релизы (седьмая бета вышла 16-го декабря). Разработчики сообщают, что поддержка PHP уже сейчас реализована на высоком уровне, а в настоящее время Niko Sams работает над плагинами для CSS.
Началась эта история с того, что к нам (админам) прибежал программер. «… он прибежал взволнован крайне и сообщеньем нас потряс…» Оказывается, что на наших Linux web-backend-ах наблюдаются стабильные потери пакетов на сетевых картах. В ходе разбирательства выяснилось, что теряются RX-пакеты.(...)
Read the rest of В поисках потерянных сетевых пакетов (378 words)
© flycat for Блог FlyCat.Info: КОТорый летает..., 2010. |
Permalink |
2 comments |
Add to
del.icio.us
Post tags: IT, linux, SLES, soft, SuSE, был ещё случай, опыты
Feed enhanced by Better Feed from Ozh
Вспомнил что ровно два года назад, в этот день, я первый раз поставил Linux. За это это время, прошёл много всего. Перепробовал кучу разных дистрибутивов и софта. Главное понял, что Linux, это моё, и «мне тут нравится». Кстати первый дистрибутив у меня был ASPLinux. Интересно, у многих ли он был тоже первым дистрибутивом? Закончил (надеюсь) на Gentoo Linux.
В общем, больше мне рассказывать на сей счёт нечего. Да пост ни о чём. Да и для себя. Просто захотелось поделиться :)
Кстати говоря, вообще компьютерами начал «заниматься» два с половиной года назад. Извиняюсь перед теми, кому говорил что два. Я и сам так думал до вчерашнего дня.
Нет похожих записей.
По умолчанию, в bash и zsh включен режим совместимости с emacs. Т.е. такие же клавиатурные сочетания как в нём. Например ctrl-a для перехода в начало строки, или ctrl-e для перехода в конец строки и т.д. (Подробнее например тут). Почему-то, мало кто знает, что там так же есть режим совместимости с vi (не путать c vim. Различия есть. Особенно для опытных vim’еров). Т.е.после запуска терминала сразу попадаем в insert mode в котором вводим команду. Нажав на esc переходим в командный режим. В нём работает большинство команд vi. Например поиск по / или удаление слова dw и многие другие.
Использовать так:
set -o vi
В терминале в котором выполнили будет включен режим совместимости с vi. Если открыть новый и закрыть тот, в котором ввели, то вернётся старый режим.
Чтобы использовать этот режим постоянно, в случае с zsh надо добавить следующее в ~/.zshrc
bindkey -v
В случае с bash, надо создать файл ~/.inputrc и добавить в него следующее:
set editing-mode vi
set keymap vi
Многие могут сказать что это не удобно. Возможно это и так, но мне удобнее vim like управление чем emacs. Поэтому я очень быстро приноровился, и в старый режим возвращаться не желаю :)
Похожие записи:

Совет АНО «Координационный центр национального домена сети Интернет» 30 сентября 2009 года принял решения об отмене специальных типов доменных имен в домене .RU
А именно отменить специальный тип:
На практике это означает, что указанные домены не будут поддерживаться РосНИИРОС (ака ripn), и с хорошими шансами этих доменов мы можем лишиться совсем.
Насколько все на самом деле печально должно стать ясно летом этого года. Возможно, паниковать рано. Возможно, конечный пользователь не заметит разницы.
Но я зарегистрировал себе запасные домены на co.cc — ибо, зная нашу рашку, все это может закончиться весьма плачевно.
Ссылка на оригинал: http://cctld.ru/ru/domaintypes/
Нет связанных постов.
Несколько месяцев назад заинтересовался причинами появления управляющих кодов ASCII в их нынешнем виде. Раскопки привели меня к первым терминалам в Multics, терминалы — к телетайпам, телетайпы — к телеграфным аппаратам. Тема чрезвычайно интересная, но полноценного поста у меня так и не вышло по разным причинам. Просто накидаю сюда ссылок для интересующихся (в основном на английском).
Unix и его предшественники
Multicians.org — один из основных сайтов по предыстории Unix. В основном описывает различные аспекты ОС Multics (включая рекламную брошюру (4 Мб)), но содержит также массу сведений и о ранних вариантах Unix, и о CTSS.
Unix history — основной сайт по истории Unix.
Концепция иерархической файловой системы впервые была описана в 1965 году и сильно отличалась от ныне используемой. В частности, в качестве разделителя каталогово предлагалось использовать двоеточие, а на уровень выше можно было ссылаться как на *; у каждого файла присутствовал специальный атрибут TRAP, в котором можно было указать свою процедуру проверки прав доступа к этому файлу. Но уже в Multics реализация файловой системы значительно отличалась от данного проекта иной, а в Unix и вовсе приняла привычный нам вид.
The Evolution of the Unix Time-sharing System (Dennis M. Ritchie, 1979) — краткая история Unix, рассказанная одним из её создателей.
The Restoration of Early UNIX Artifacts — опыт восстановления файлов с древней ленты, содержащей один из самых первых релизов Unix. В конце документа несколько интересных ссылок.
Исходный код Unix — отсканированная распечатка тщательно прокомментированных ассемблерных кодов Unix. Датируется 1972 годом. 11 мегабайт.
Excavating ancient abbreviations in Linux — история происхождения некоторых аббревиатур, используемых в UNIX/Linux (для чтения оригинала требуется
регистрация, поэтому ссылка на кэш гугла).
Буду благодарен за PDF/DJVU версию книги «A quarter century of Unix» by Peter Salus :)
Терминалы
Коллекция информации о текстовых терминалах, отправная точка исследований.
Рассказ одного из создателей Multics о первых терминалах и опыте удалённой домашней работы (70-е годы, суперкрутые модемы на 1200 бод) (en)
Краткая история терминалов DEC (в т.ч. VT100)
Что такое «smart terminal» и чем он отличается от «dumb terminal». В
основном тем, что умеет проверять пользовательский ввод уже на стороне терминала, а не передаёт его серверу.
Телеграф
К вопросу о возникновении телеграфа множество интересных сведений из истории телеграфной связи
Телеграфное дело. Пособие для сержантов и старших специалистов войск связи — раритет :) Книжка 1946 года выпуска, доступно и понятно описывает теорию электротехники и электроники по состоянию на момент окончания Великой Отечественной войны, а также знакомит читателя с основными понятиями телеграфной связи.

wm-session-end --end (logout)
wm-session-end --shutdown (shutdown)
wm-session-end --reboot (reboot)
wm-session-end --hibernate (suspend to disk)
wm-session-end --suspend (suspend to ram)
XBMC Media Center является преемником популярного Xbox Media Player (XBMP). Развитие Xbox Media Player остановилось 13 декабря 2003 года, когда XBMC был готов к выходу и переименован из "player" в "center" для воспроизведения мультимедиа. Первый стабильный релиз увидел свет 29 июня 2004 года с официальным выпуском XBoxMediaCenter 1.0.0. В анонсе разработчики призывали всех, кто использует XBMP или бета-версию XBMC обновиться в связи с прекращением поддержки предыдущих версий. В XBMC 1.0.0 включили FileZilla FTP Server, поддержку DHCP и новую версию MPlayer. Встроенный Python позволил реализовать отрисовку элементов интерфейса.sudo add-apt-repository ppa:team-xbmc
sudo aptitude update && sudo aptitude install xbmc

pdfcrop на перле (не путать с одноимённым скриптом на питоне), который умеет обрезать поля автоматически. В Debian он входит в состав пакета texlive-extra-utils.$ pdfcrop --clip --margin 5 исходный.pdf обрезанный.pdf
--margin 5), иначе касающиеся края буквы могут не отображаться на экране читалки.pdfcrop очень медленно работает с большими документами (сотни страниц), нельзя автоматически отрезать колонтитулы и заметки на полях (в некоторых случаях проще обойтись без номеров страниц и названия главы сверху, зато получить более крупное изображение основного текста), конкретно моя читалка иногда аварийно перегружается на полученных таким способом PDF, на некоторых файлах pdfcrop неправильно определяет границы текста, на некоторых портит шрифты.pdftoppm) → разрезание страниц на части и обрезка полей (использую convert из ImageMagick) → сборка нового PDF или DjVu из обрезанных страниц.-trim ImageMagick, но можно задать параметры обрезки и вручную (приходилось). Например, чтобы принудительно обрезать по 3% с каждой стороны, в опции convert можно вставить -shave 3%x3% +repage.convert -define pdf:use-trimbox=true `ls -v *.ppm` -density разрешение_в_dpi книжка.pdfЕсли страниц много, такой способ будет очень медленным (и прожорливым), лучше конвертировать каждую отдельно (можно тем же
convert, если качество устраивает, можно специально для этих целей предназначенным sam2p), а потом объединять страницы вместе. Для объединения PDF-страниц в PDF-документ я использую pdftk: $ pdftk *.pdf cat output книжка.pdf

Довольно давно, я использую torrent клиент deluge. Всем замечательная качалка торрентов, но вот постоянно меня раздражало то, что когда пытаешься из него открыть папку, она открывалась в браузере вместо pcmanfm например. В gnome\kde\xfce с этим проще, в них не используется xdg-open, там свои утилиты. Та же ситуация была и с dropbox, и думаю ещё с многими программами. Долго я мучился с этим. Пока в один день, не вспомнил что nixtrian, не так давно решал схожую проблему. С ним мы довольно быстро нашли решение, которое оказалось весьма тривиальным.
Открываем файл /usr/bin/xdg-open и находим следующие строки:
open_generic()
{
IFS=":"
for browser in $BROWSER; do
if [ x"$browser" != x"" ]; then
IFS=' '
browser_with_arg=${browser//'%s'/"$1"}
if [ x"$browser_with_arg" = x"$browser" ]; then "$browser" "$1";
else $browser_with_arg;
fi
if [ $? -eq 0 ]; then exit_success;
fi
fi
done
exit_failure_operation_impossible "no method available for opening '$1'"
}
Нам нужно добавить в самом начале одну функцию, которая собственно и будет открывать ссылки на файлы в pcmanfm.
if [ -d "$1" ]; then
pcmanfm $1
exit
fi
После добавления, будет выглядеть примерно так:
open_generic()
{
if [ -d "$1" ]; then
pcmanfm $1
exit
fi
IFS=":"
for browser in $BROWSER; do
if [ x"$browser" != x"" ]; then
IFS=' '
browser_with_arg=${browser//'%s'/"$1"}
if [ x"$browser_with_arg" = x"$browser" ]; then "$browser" "$1";
else $browser_with_arg;
fi
if [ $? -eq 0 ]; then exit_success;
fi
fi
done
exit_failure_operation_impossible "no method available for opening '$1'"
}
Pcmanfm можно заменить на любой другой файловый менеджер по вкусу.
Всё бы было гораздо проще, если бы была хоть какая либо вменяемая документация по xdg-open. Хотя, возможно, я её просто не нашёл. Зато, в процессе поиска, была найдена одна приятная команда:
xdg-open $(ls . | dmenu)
Похожие записи:
Выйти в интернет из убунты через 3G телефон, подключенный по Bluetooth не просто, а очень просто. Проблема одна — стандартный гномовский Bluetooth менеджер ни хрена не умеет. Поэтому ставим Blueman.
Дальше интуитивно. Для тех, у кого проблемы с интуицией:
1. Спариваем компьютер с телефоном путём нажатия на кнопку "найти устройства", выбора устройства из списка, введения PIN-а.
2. Шлёпаем правой кнопкой по устройству в списке устройств в главном окне, нажимаем "последовательные порты -> служба доступа к сети через модем" (если телефон оснащён DUN профилем) или порт 1/2, если телефон оснащён только виртуальными COM портами.
3. Создаём в NetWorkManager "мобильное широкополосное соединение" для вашего провайдера.
4. Жмём левой кнопкой мыши по NM, выбираем в списке свежесозданное соединение.
В сети полно руководств на тему ручного редактирования /etc/rfcomm и тому подобных издевательств. А всё потому что стандартный гномовский менеджер, ну вы поняли.
Originally published at Aceler online. You can comment here or there.