<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5337869154938700968</id><updated>2012-02-16T10:52:02.471+03:00</updated><category term='ruby'/><category term='linux'/><category term='apache'/><category term='iis'/><category term='MySQL'/><category term='javascript'/><category term='видео'/><category term='приложения'/><category term='web'/><category term='христианство'/><category term='php'/><category term='sqlalchemy'/><category term='ssh'/><category term='mkv'/><category term='ffmpeg'/><category term='mencoder'/><category term='acer aspire one'/><category term='bash'/><category term='deb'/><category term='оформление'/><category term='mssql'/><category term='pdf'/><category term='pylons'/><category term='sony vaio'/><category term='evernote'/><category term='железо'/><category term='консоль'/><category term='android'/><category term='python'/><category term='kernel'/><category term='gimp'/><category term='windows'/><category term='Библия'/><category term='cd/dvd'/><category term='memo'/><category term='vim'/><category term='сеть'/><category term='ubuntu'/><category term='печать'/><category term='rdesktop'/><category term='nokia n810'/><category term='gmail'/><category term='openoffice.org'/><category term='html css'/><category term='Excel'/><category term='японский'/><title type='text'>Круг интересов</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default?start-index=101&amp;max-results=100'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>111</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-3237076892756351264</id><published>2012-02-13T21:59:00.000+03:00</published><updated>2012-02-13T22:00:23.486+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Библия'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='христианство'/><title type='text'>Библейская программа: перевод епископа Кассиана</title><content type='html'>Собственно, вот ссылка на файл:&amp;nbsp;&lt;a href="http://dl.dropbox.com/u/6363795/Blog/kas.sqlite"&gt;http://dl.dropbox.com/u/6363795/Blog/kas.sqlite&lt;/a&gt;&lt;br /&gt;Скачивайте, и копируйте в папку&amp;nbsp;/usr/local/share/bible/modules/&lt;br /&gt;Перезапускаете программу - и он в списке.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-3237076892756351264?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/3237076892756351264/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=3237076892756351264' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3237076892756351264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3237076892756351264'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2012/02/blog-post.html' title='Библейская программа: перевод епископа Кассиана'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-504672312690855428</id><published>2012-02-02T15:19:00.002+03:00</published><updated>2012-02-02T15:19:51.163+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHP, кодировки и строковые функции</title><content type='html'>&lt;br /&gt;Время от времени возникает у разработчиков проблема - не желают работать стандартные функции strtolower, strtoupper, ucfirst. Особенно это актуально для сайтов, в которых есть файлы нескольких видов кодировок. Видел я решение самописное, вот такое:&lt;br /&gt;strtr(&lt;br /&gt;&amp;nbsp; &amp;nbsp; $s,&lt;br /&gt;&amp;nbsp; &amp;nbsp; 'йцукенгшщзхъфывапролджэячсмитьбюё',&lt;br /&gt;&amp;nbsp; &amp;nbsp; 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ'&lt;br /&gt;);&lt;br /&gt;strtr(&lt;br /&gt;&amp;nbsp; &amp;nbsp; $s,&lt;br /&gt;&amp;nbsp; &amp;nbsp; 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ',&lt;br /&gt;&amp;nbsp; &amp;nbsp; 'йцукенгшщзхъфывапролджэячсмитьбюё'&lt;br /&gt;);&lt;br /&gt;strtr(&lt;br /&gt;&amp;nbsp; &amp;nbsp; substr($s,0,1),&lt;br /&gt;&amp;nbsp; &amp;nbsp; 'йцукенгшщзхъфывапролджэячсмитьбюё',&lt;br /&gt;&amp;nbsp; &amp;nbsp; 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ'&lt;br /&gt;).substr($s,1) ;&lt;br /&gt;&lt;br /&gt;При использовании кодировки UTF-8 начинают сбоить и такие методы. С радостью обнаружил готовые функции, предназначенные для работы с многобайтными кодировками. Вы легко это найдете, но пусть хорошей информации будет побольше.&lt;br /&gt;&lt;a href="http://www.php.net/manual/ru/function.mb-convert-case.php"&gt;mb_convert_case&lt;/a&gt;($str, $mode [, $encoding ]);&lt;br /&gt;$str - строка для обработки.&lt;br /&gt;$mode может быть MB_CASE_UPPER (верхний регистр), MB_CASE_LOWER (нижний регистр) или MB_CASE_TITLE (первая буква в верхнем регистре).&lt;br /&gt;$encoding может быть, например 'UTF-8'. Если не указывать, то вместо него будет использовано значение внутренней кодировки.&lt;br /&gt;&lt;br /&gt;Есть укороченные варианты для MB_CASE_UPPER и MB_CASE_LOWER:&lt;br /&gt;&lt;a href="http://www.php.net/manual/ru/function.mb-strtolower.php"&gt;mb_strtolower&lt;/a&gt;($str [, $encoding]);&lt;br /&gt;&lt;a href="http://www.php.net/manual/ru/function.mb-strtoupper.php"&gt;mb_strtoupper&lt;/a&gt;($str [, $encoding]);&lt;br /&gt;&lt;br /&gt;P.S. Прошу не судить строго за бояны.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-504672312690855428?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/504672312690855428/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=504672312690855428' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/504672312690855428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/504672312690855428'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2012/02/php.html' title='PHP, кодировки и строковые функции'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-3341527144427238421</id><published>2011-11-15T14:07:00.001+03:00</published><updated>2011-11-15T14:17:19.045+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='evernote'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Web-версия Evernote без рекламы</title><content type='html'>&lt;br /&gt;Для тех, кто пользуется сервисом облачных заметок Evernote (&lt;a href="http://evernote.com/"&gt;evernote.com&lt;/a&gt;) есть два варианта: бесплатный аккаунт и про-версия с регулярными взносами. Понятно, что платная предоставляет определенные плюшки, но меня они совершенно не убеждают расставаться с кровно заработанными, да и пользуюсь этим сервисом не настолько активно. К тому-же, для Linux существует только веб-версия.&lt;br /&gt;Как оказалось, это не всегда плохо! Как ни крути, а в интернете шила в мешке не утаить, то есть код всегда на виду. Поэтому, для тех, кто пользуется, но не хочет смотреть рекламу, сей опус.&lt;br /&gt;&lt;br /&gt;Устанавливаем, если не установлено, и регистрируемся:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-C257G6Cxa4E/TsJIRrUD1yI/AAAAAAAAAjY/cnZtEkrl38Y/s1600/00_evernote.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="156" src="http://3.bp.blogspot.com/-C257G6Cxa4E/TsJIRrUD1yI/AAAAAAAAAjY/cnZtEkrl38Y/s400/00_evernote.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Запускаем, логинимся, наблюдаем рекламу. Правой кнопочкой на нее кликаем, и видим класс элемента с рекламой, запоминаем:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-UucLvkPQS9A/TsJIZ2yuCDI/AAAAAAAAAjg/161nB20eE8o/s1600/01_tocode.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-UucLvkPQS9A/TsJIZ2yuCDI/AAAAAAAAAjg/161nB20eE8o/s1600/01_tocode.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-FTRPzlC8YQQ/TsJJ7uhmAFI/AAAAAAAAAkQ/5xOLYEyqNnA/s1600/02_code.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/-FTRPzlC8YQQ/TsJJ7uhmAFI/AAAAAAAAAkQ/5xOLYEyqNnA/s640/02_code.png" width="331" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Отправляемся на WebStore за дополнением к браузеру, которое даст нам возможность выполнять свой JavaScript код на избранных страницах:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ssfgTSAbc1A/TsJIhGNsMJI/AAAAAAAAAjo/7wVU6A0LZsE/s1600/03_market.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-ssfgTSAbc1A/TsJIhGNsMJI/AAAAAAAAAjo/7wVU6A0LZsE/s640/03_market.png" width="576" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Лезем в настройки этого плагина:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-59sApg3hslo/TsJIplpjz7I/AAAAAAAAAjw/F8k6eHtwdPI/s1600/04_menu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://2.bp.blogspot.com/-59sApg3hslo/TsJIplpjz7I/AAAAAAAAAjw/F8k6eHtwdPI/s400/04_menu.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-tLVUbs2fIy4/TsJIvaYNyzI/AAAAAAAAAj4/57yOkc0Bww8/s1600/05_tooptions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-tLVUbs2fIy4/TsJIvaYNyzI/AAAAAAAAAj4/57yOkc0Bww8/s1600/05_tooptions.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;И вписываем для страницы веб-версии такой вот код (наверно, можно и получше, но так зато работает):&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-jWqeal26KrM/TsJI7KY8FxI/AAAAAAAAAkA/MoO0UJoboEs/s1600/06_options.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-jWqeal26KrM/TsJI7KY8FxI/AAAAAAAAAkA/MoO0UJoboEs/s400/06_options.png" width="360" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Сохраняем, перезаходим в веб-версию. Красота!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-yDNYJjsTnpM/TsJI-1Pu10I/AAAAAAAAAkI/4GGU-76WHq8/s1600/07_itoque.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-yDNYJjsTnpM/TsJI-1Pu10I/AAAAAAAAAkI/4GGU-76WHq8/s1600/07_itoque.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Чтобы скопировать, приведу код в текстовом виде:&lt;br /&gt;&lt;br /&gt;var i=setInterval(function(){&lt;br /&gt;var el=$('div.GHOV4EUDAB').parent();&lt;br /&gt;if(el){&lt;br /&gt;el.prev().css('bottom','0px').prev().css('bottom','35px');&lt;br /&gt;el.remove();&lt;br /&gt;clearInterval(i);&lt;br /&gt;}&lt;br /&gt;},1000);&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-3341527144427238421?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/3341527144427238421/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=3341527144427238421' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3341527144427238421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3341527144427238421'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2011/11/web-evernote.html' title='Web-версия Evernote без рекламы'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-C257G6Cxa4E/TsJIRrUD1yI/AAAAAAAAAjY/cnZtEkrl38Y/s72-c/00_evernote.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-7267285998194568934</id><published>2011-09-13T13:28:00.001+03:00</published><updated>2011-09-13T13:29:12.319+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>С WWW =&gt; без WWW</title><content type='html'>Ситуация: на сайте есть отличия в отображении контента в зависимости от того, какой адрес в адресной строке браузера.&lt;br /&gt;Задача: нужно, чтобы каждый пришедший по ссылке www.site.ru попадал на site.ru, т.е. без www.&lt;br /&gt;Решение: в файл .htaccess прописываем правило:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301]&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-7267285998194568934?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/7267285998194568934/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=7267285998194568934' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7267285998194568934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7267285998194568934'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2011/09/www-www.html' title='С WWW =&gt; без WWW'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-2295683685589105493</id><published>2011-08-30T08:58:00.000+03:00</published><updated>2011-08-30T08:58:24.179+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>MySQL : получение строк в заданном порядке</title><content type='html'>Да, понадобилось, и почему-то не сразу понял как, пришлось гуглить. Нужно сортировать строки не через ORDER BY и не абы как, а строго в заданном порядке. Оказывается, можно, и в документации об этом написано, так что "курите маны", как говорится.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;SELECT id,title,description FROM article WHERE id in (1,2,3,4,5) ORDER BY find_in_set(id,'1,2,3,4,5');&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-2295683685589105493?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/2295683685589105493/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=2295683685589105493' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2295683685589105493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2295683685589105493'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2011/08/mysql.html' title='MySQL : получение строк в заданном порядке'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-2832540896079045865</id><published>2011-08-26T09:54:00.002+03:00</published><updated>2011-08-26T09:58:52.263+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gimp'/><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><title type='text'>GIMP и ошибка при попытке создать Slice</title><content type='html'>Вообще-то я очень редко использую эту возможность. Но вот недавно стал делать для сайта а-ля модальное окно с тенью вокруг. Нарисовал в GIMP квадрат с тенью, стал резать - а вот шиш вам, ошибка.&lt;br /&gt;Решается она так. Открываем с правами рута файл&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;gksudo gedit /usr/lib/gimp/2.0/plug-ins/py-slice.py&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Находим строку, начинающуюся с "temp_image.crop" и меняем ее так:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;temp_image.crop(int(right - left), int(bottom - top), int(left), int(top))&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ошибка исчезла. Она возникала в связи с передачей функции параметров типа float, в то время как она ожидала тип int.&lt;br /&gt;Всё работает.&lt;br /&gt;P.S. Окно кстати я доделал. Формируется на лету с помощью JavaScript, получилось вот такое:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ugs6bsv8awc/TldD5O7dj-I/AAAAAAAAAi8/zWg8m0g4UnE/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-ugs6bsv8awc/TldD5O7dj-I/AAAAAAAAAi8/zWg8m0g4UnE/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-2832540896079045865?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/2832540896079045865/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=2832540896079045865' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2832540896079045865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2832540896079045865'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2011/08/gimp-slice.html' title='GIMP и ошибка при попытке создать Slice'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-ugs6bsv8awc/TldD5O7dj-I/AAAAAAAAAi8/zWg8m0g4UnE/s72-c/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-2965052672388758368</id><published>2011-06-22T12:24:00.001+03:00</published><updated>2011-06-22T12:24:44.374+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><title type='text'>На заметку о Gmail</title><content type='html'>Несколько приятных возможностей строки поиска писем в почте Gmail&lt;br /&gt;&lt;br /&gt;Непрочтенные письма, несколько вариантов:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;is:unread&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;label:unread&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;l:unread&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;l:^u&lt;/span&gt;&lt;br /&gt;Письма от адресата 'tim':&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;from:tim&lt;/span&gt;&lt;br /&gt;Письма, помеченные звездочкой:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;l:^t&lt;/span&gt;&lt;br /&gt;Письма в корзине:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;l:^k&lt;/span&gt;&lt;br /&gt;Письма с темой 'hi':&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;subject:hi&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Эти параметры поиска можно комбинировать.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-2965052672388758368?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/2965052672388758368/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=2965052672388758368' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2965052672388758368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2965052672388758368'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2011/06/gmail.html' title='На заметку о Gmail'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-837651813383633799</id><published>2011-06-10T16:24:00.000+03:00</published><updated>2011-06-10T16:24:50.953+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Приложения для Android. Мой выбор. IMHO</title><content type='html'>&lt;b&gt;Bible YouVersion&lt;/b&gt;&amp;nbsp;: Библия с кучей переводов. Есть Синодальный. Бесплатная, конечно.&lt;br /&gt;&lt;b&gt;PowerAMP&lt;/b&gt; : Лучшие в мире аудиоплеер. Эквалайзер, проигрывание каталогами или по ID3-тегам, плейлисты. Есть платная версия.&lt;br /&gt;&lt;b&gt;Android Audio Profile&lt;/b&gt; : Управление профилями телефона, есть виджет. В бесплатной версии - только три профиля и реклама. В платной - много профилей и автоматическое переключение по плану.&lt;br /&gt;&lt;b&gt;MortPlayer Audiobooks&lt;/b&gt; : Чтение аудиокниг с закладками. Бесплатно.&lt;br /&gt;&lt;b&gt;mVideoPlayer&lt;/b&gt; : &amp;nbsp;Проигрывание видеофайлов, поддержка субтитров многих видов.&lt;br /&gt;&lt;b&gt;Metronome&lt;/b&gt; : Метроном, как ни странно )). Юзабельна только платная версия.&lt;br /&gt;&lt;b&gt;Smart Keyboard&lt;/b&gt; : Альтернативная клавиатура. Умная, настраиваемая, со скинами, умеет брать текст для T9 из контактов. Платная.&lt;br /&gt;&lt;b&gt;Extended Controls&lt;/b&gt; : набор виджетов для управления системными настройками. Платная.&lt;br /&gt;&lt;b&gt;Dropbox&lt;/b&gt; : Доступ к своему аккаунту. Не закачивает все на телефон, только по требованию. Бесплатно.&lt;br /&gt;&lt;b&gt;FBReader + FBReader LitRes&lt;/b&gt; : Чтение электронных книг, доступ к онлайн-хранилищам, в т.ч. платным. Бесплатная.&lt;br /&gt;&lt;b&gt;ColorNote Notepad Notes&lt;/b&gt; : Заметки с виджетами, просто текст или списки задач. Несколько способов уведомления. Бесплатная.&lt;br /&gt;&lt;b&gt;TweetDeck&lt;/b&gt; : Удобное управление аккаунтами соцсетей, таких как Twitter, Faceboot, Flikr. Бесплатная.&lt;br /&gt;&lt;b&gt;Навител Навигатор&lt;/b&gt; : Опять же, навигатор. Сам по себе бесплатный, но без лицензии и карт - пустой.&lt;br /&gt;&lt;b&gt;ASTRO File Manager&lt;/b&gt; : Файл-менеджер, есть встроенный киллер процессов. бесплатный.&lt;br /&gt;&lt;b&gt;Manga Watcher&lt;/b&gt; : Лучшая для чтения комиксов. Есть платная версия без рекламы.&lt;br /&gt;&lt;b&gt;FruitNinja&lt;/b&gt; : Веселая игра - рубим фрукты вместо живых существ. Платная.&lt;br /&gt;&lt;b&gt;Архимаг&lt;/b&gt; : Archmage, кто играл в Might &amp;amp; Magic - поймет. Есть игра по сети.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-837651813383633799?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/837651813383633799/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=837651813383633799' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/837651813383633799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/837651813383633799'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2011/06/android-imho.html' title='Приложения для Android. Мой выбор. IMHO'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-597084334959911858</id><published>2011-05-26T14:06:00.005+03:00</published><updated>2011-05-26T14:38:50.878+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Привести дела в порядок ))</title><content type='html'>Именно эту задачу предлагает решить Getting Things GNOME - что-ж, планировать свои дела в нем действительно удобно. Он похож на Tomboy, только написан на Python+GTK, и позволяет создавать записи о задачах и подзадачах, распределять мероприятия по датам, задавая длительность. Отличный хелп в комплекте.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;sudo apt-get install gtg&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;А вот о том, чтобы держать актуальным этот список в нескольких местах одновременно - разработчик позаботился явно недостаточно. Присутствует плагин для синхронизации с RTM (Remember The Milk), но стабильности ему точно недостает. Поэтому решаем этот вопрос самостоятельно. А именно - используя Dropbox.&lt;br /&gt;&lt;blockquote&gt;Вы все еще не пользуетесь этим замечательным сервисом? Тогда &lt;strike&gt;мы идем к вам&lt;/strike&gt; &lt;a href="http://www.dropbox.com/"&gt;добро пожаловать на сайт разработчика&lt;/a&gt; и проникаться по просветления. Ubuntu One все еще далек от юзабельности (было несколько неприятных моментов). Dropbox же ни разу не подвел.&lt;/blockquote&gt;Итак, все, что нужно - это сделать пару символьных ссылок.&lt;br /&gt;На одном компе, например, так:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;ln -s ~/.local/share/gtg/ ~/Dropbox/gtg&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;А на остальных так:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;mkdir ~/Dropbox/gtg&lt;br /&gt;ln -s ~/Dropbox/gtg/ ~/.local/share/gtg&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;Только один момент: не включать GTG до того, как Dropbox синхронизирует файлы.&lt;br /&gt;И все дела ^_^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-597084334959911858?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/597084334959911858/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=597084334959911858' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/597084334959911858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/597084334959911858'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2011/05/blog-post.html' title='Привести дела в порядок ))'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-8569084215288543908</id><published>2011-05-26T13:20:00.002+03:00</published><updated>2011-05-26T14:39:33.237+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Менеджер буфера обмена Parcellite</title><content type='html'>Очень удобная штука. Позволяет хранить множество версий содержимого буфера обмена. Например, скопировав текст, вставил его, и потом забил буфер другими данными. А потом понадобился этот текст. Снова искать, где он есть, и копировать?&lt;br /&gt;Нет, конечно. Просто устанавливаю Parcellite (на текущий момент версии 0.9.3-1) и радуюсь туче ячеек буфера обмена.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;sudo apt-get install parcellite&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-8569084215288543908?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/8569084215288543908/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=8569084215288543908' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8569084215288543908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8569084215288543908'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2011/05/parcellite.html' title='Менеджер буфера обмена Parcellite'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-5952898188107610446</id><published>2011-05-16T15:46:00.002+03:00</published><updated>2011-05-26T14:40:40.334+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>DeaDBeeF</title><content type='html'>Вышел финальный релиз аудиоплеера DeaDBeeF 0.5.0 - аналог Foobar2000 в Windows.&lt;br /&gt;Как пишет разработчик - "&lt;a href="http://deadbeef.sourceforge.net/posts/deadbeef_0.5.0_has_finally_arrived!.html"&gt;... after 2 betas, 1 rc and 6 months of development :)&lt;/a&gt;"&lt;br /&gt;Устанавливаем:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;sudo add-apt-repository ppa:alexey-smirnov/deadbeef&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install deadbeef&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;Новые плагины, нововведения и вообще молодец товарищ Алексей Яковенко.&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px;"&gt;&amp;nbsp;Подробнее об этом написано &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 14px;"&gt;&lt;a href="http://www.nixp.ru/news/DeaDBeeF-0-5-0-%D0%BD%D0%BE%D0%B2%D0%B0%D1%8F-%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F-%D0%B0%D1%83%D0%B4%D0%B8%D0%BE%D0%BF%D0%BB%D0%B5%D0%B5%D1%80%D0%B0.html"&gt;здесь&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 14px;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;P.S. Для LinuxMint: чтобы репозитарий заработал, необходимо поправить имя дистрибутива. В 11 версии оно будет 'katya', а значит в файле&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;/etc/apt/sources.list.d/alexey-smirnov-deadbeef-katya.list&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;нужно заменить слово katya на natty (для 11.04). В итоге там будет так:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;deb http://ppa.launchpad.net/alexey-smirnov/deadbeef/ubuntu natty main&lt;br /&gt;deb-src http://ppa.launchpad.net/alexey-smirnov/deadbeef/ubuntu natty main&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-5952898188107610446?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/5952898188107610446/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=5952898188107610446' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5952898188107610446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5952898188107610446'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2011/05/deadbeef.html' title='DeaDBeeF'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-4697366862419170408</id><published>2011-04-19T10:07:00.001+03:00</published><updated>2011-05-26T14:42:09.946+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHP и временные зоны</title><content type='html'>Заметка для себя, чтобы не забыть.&lt;br /&gt;Используя PHP столкнулся с такой закавыкой: функция&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;date()&lt;/b&gt;&lt;/span&gt;&amp;nbsp;выдает время по гринвичу. Вероятно, на сервере в настройках PHP не прописана временная зона. Раньше всегда было настроено на место размещения сервера, т.е. как правило, Москва, а тут - нет.&lt;br /&gt;В результате выдает время на 4 часа меньше, чем надо. Решается использованием стандартной функции с параметром:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;date_default_timezone_set('Europe/Moscow');&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;Полный список временных зон &lt;a href="http://www.php.net/manual/en/timezones.php"&gt;тут&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-4697366862419170408?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/4697366862419170408/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=4697366862419170408' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4697366862419170408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4697366862419170408'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2011/04/php.html' title='PHP и временные зоны'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-2461453801852063156</id><published>2011-04-11T09:24:00.003+03:00</published><updated>2011-05-28T11:34:03.709+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Библия'/><category scheme='http://www.blogger.com/atom/ns#' term='христианство'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Репозитарий для Библейской программы</title><content type='html'>&lt;b&gt;&lt;span style="font-size: small;"&gt;О программе&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Возможности: просмотр текстов, поиск, как обычный так и путем выделения слова и нажатия кнопки с буквой "f". Получения списка параллельных мест при клике мышью на номер стиха в основном окне. Получение текста главы по клику мышью на название книги в поле результатов поиска. Сохранение книги, главы и фразы поиска текущего сеанса.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Установка&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Чтобы устанавливать программу в помощь изучающим Библию, добавьте мой репозитарий в свой список. Для этого добавьте строку&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;deb http://zelbaptist.org/dists/ karmic universe&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;в файл&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;/etc/apt/sources.list&lt;/b&gt;&lt;/span&gt; (с правами root, конечно, ну вы же знаете), или воспользуйтесь менеджером пакетов типа Synaptic. После этого обновите список пакетов, и вот вам пожалуйста.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;$ sudo apt-get install bible&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ну, или &lt;a href="http://dl.dropbox.com/u/6363795/Blog/bible_0.3.2_all.deb"&gt;скачайте напрямую deb-пакет (версия 0.3.2).&lt;/a&gt; &lt;br /&gt;&lt;a href="http://dl.dropbox.com/u/6363795/Blog/bible_0.3.3_all.deb"&gt;Версия 0.3.3 - здесь.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Текущая версия для Ubuntu11.04 - &lt;b&gt;0.3.3&lt;/b&gt;. В нее включены Синодальный перевод с  апокрифами и перевод короля Иакова без апокрифов. Внесены незначительные, но все-же изменения.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-2461453801852063156?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/2461453801852063156/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=2461453801852063156' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2461453801852063156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2461453801852063156'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/04/blog-post.html' title='Репозитарий для Библейской программы'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-9148775296938401528</id><published>2011-04-01T14:59:00.001+03:00</published><updated>2011-04-01T15:00:36.500+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><title type='text'>VIM: убрать подчеркивание в html-тегах ссылок</title><content type='html'>Меня это немного достало. Если описывать ссылку на нескольких строках, то все они будут подчеркнуты. Вот как можно убрать это (найдено &lt;a href="http://superuser.com/questions/194459/vim-syntax-highlighting-how-to-stop-the-automatic-underlining-of-a-href"&gt;здесь&lt;/a&gt;):&lt;br /&gt;&lt;div&gt;1) Создать каталог для синтаксиса, если еще не создан&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;mkdir -p ~/.vim/syntax&lt;/span&gt;&lt;br /&gt;&lt;div&gt;2) Скопировать файл синтаксиса html по умолчанию в этот каталог&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;cp /usr/share/vim/vim72/syntax/html.vim&amp;nbsp;~/.vim/syntax/&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;3) Открыть&amp;nbsp;файл для редактирования&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;vim ~/.vim/syntax/html.vim&lt;/span&gt;&lt;/div&gt;&lt;div&gt;4) Найти в нем строку&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;HtmlHiLink htmlLink Underlined&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;5) Закомментировать ее (мне не помогло) или изменить Underlined на что-то другое, например htmlBold.&lt;/div&gt;&lt;div&gt;Перезапускаем VIM - проблема решена.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-9148775296938401528?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/9148775296938401528/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=9148775296938401528' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/9148775296938401528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/9148775296938401528'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2011/04/vim-html.html' title='VIM: убрать подчеркивание в html-тегах ссылок'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-7681275723330390817</id><published>2011-03-28T09:25:00.003+03:00</published><updated>2011-03-29T08:42:36.018+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openoffice.org'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Использование Python для управления документами OpenOffice.org</title><content type='html'># Установка библиотеки uno для python&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;sudo apt-get install python-uno&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Запуск OpenOffice с возможностью им управлять, т.е. в "слушающем" режиме. Несколько опций:&lt;br /&gt;# -writer : чтобы сразу запустился Writer&lt;br /&gt;# -headless : если хотим запустить без GUI&lt;br /&gt;# остальные по вкусу: -nologo -nofirststartwizard -norestore, понятно по названию&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;soffice "-accept=socket,host=localhost,port=2002;urp;" -writer -headless&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Если OOo запущен в режиме без GUI, выключить его можно так:&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;killall soffice.bin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Начинаем наш код. Импортируем библиотеку&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;import uno&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;local = uno.getComponentContext()&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;context = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Загрузка сервисов&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;desktop = context.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", context)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Получить текущий документ&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;document = desktop.getCurrentComponent()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Создать новый документ&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;document = desktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, ())&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Загрузить существующий документ&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;document = desktop.loadComponentFromURL("file:///home/lucas/myfile.odt" ,"_blank", 0, ())&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Установить курсор&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;cursor = document.Text.createTextCursor()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Добавим некий текст&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;document.Text.insertString(cursor, "Этот текст был добавлен в OOo путем использования python и пакета uno.", 0)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Переносы строк: \n, отступы: \t&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;document.Text.insertString(cursor, "\n\n\tНовый параграф.", 0)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Получаем свойство символа - кегль шрифта&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;cursor.getPropertyValue("CharHeight")&lt;/span&gt;&lt;br /&gt;# Изменяем свойства символов: кегль и имя шрифта, его жирность&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;cursor.setPropertyValue("CharHeight", 20)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;cursor.setPropertyValue("CharFontName", "Arial")&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;cursor.setPropertyValue("CharWeight", 150)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Создаем таблицу шириной 2 колонки и высотой в 6 строк&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;mytable = document.createInstance("com.sun.star.text.TextTable")&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;mytable.initialize(6,2)&lt;/span&gt;&lt;br /&gt;# Вставляем таблицу в страницу&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;document.Text.insertTextContent(cursor, mytable, 0)&lt;/span&gt;&lt;br /&gt;# Заполняем несколько полей&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;mytable.getCellByName("A1").setString("Полюшко-поле A1")&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;mytable.getCellByName("B2").setString("Поле, русское поле B2")&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;mytable.getCellByPosition(1,4).setString('А можно и так')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Сохраняем&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;document.store()&lt;/span&gt;&lt;br /&gt;# Сохраняем как новый(другой) файл&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;document.storeAsURL("file:///home/lucas/myfile2.odt",())&lt;/span&gt;&lt;br /&gt;# Сохраняем как копию, и остаемся в том-же документе&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;document.storeToURL("file:///home/lucas/myfile2.odt",())&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Завершаем работу с документом&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;document.dispose()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Поиск и замена. Работаем со строками&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;import string&lt;/span&gt;&lt;br /&gt;# Создаем дескриптор поиска&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;search = document.createSearchDescriptor()&lt;/span&gt;&lt;br /&gt;# Что ищем?&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;search.SearchString = u"Люк"&lt;/span&gt;&lt;br /&gt;# Ищем первое найденное&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;found = document.findFirst( search )&lt;/span&gt;&lt;br /&gt;# заменяем найденное и ищем дальше, пока не закончатся искомые фразы&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;while found:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;found.String = string.replace( found.String, u"Люк", u"Люк, я твой отец" )&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;found = document.findNext( found.End, search)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Некоторые возможности поиска: чувствительность к регистру или поиск слов&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;search.SearchCaseSensitive = True&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;search.SearchWords = True&lt;/span&gt;&lt;br /&gt;# Или поиск по регулярным выражениям&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;search.SearchRegularExpression = True&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;search.SearchString = "\\&amp;lt;(k|s|v|z|o|u|i|a) "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Экспорт в PDF. Придется импортировать соответствующую библиотеку&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;from com.sun.star.beans import PropertyValue&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;property = (&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;PropertyValue( "FilterName" , 0, "writer_pdf_Export" , 0 ),&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;document.storeToURL("file:///home/lucas/myfile2.pdf",property)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Импорт разрывов &lt;s&gt;шаблона&lt;/s&gt; страницы, вставка разрыва в конец документа и импорт еще одного документа из файла&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;from com.sun.star.style.BreakType import PAGE_BEFORE, PAGE_AFTER&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;cursor.gotoEnd(False)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;cursor.BreakType = PAGE_BEFORE&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;cursor.insertDocumentFromURL("file:///home/lucas/temp.odt", ())&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://lucasmanual.com/mywiki/OpenOffice"&gt;Оригинал статьи на английском&lt;/a&gt;&amp;nbsp;(немного добавил от себя и кое-что изменил)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-7681275723330390817?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/7681275723330390817/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=7681275723330390817' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7681275723330390817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7681275723330390817'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2011/03/python-openofficeorg.html' title='Использование Python для управления документами OpenOffice.org'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-3121862101806814297</id><published>2011-03-21T14:47:00.000+02:00</published><updated>2011-03-21T14:47:20.587+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='html css'/><title type='text'>Глюк IE с текстом в абсолютно спозиционированном элементе</title><content type='html'>Дано:&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;div style='position:absolute; top:200px;left:100px; width:500px;'&amp;gt;Длинный-предлинный текст, абзаца эдак на три.&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;Наблюдаем глюк: только в IE (проверялось в 7 и 8 версии) текст не переносится на другую строку, а растягивает div за пределы страницы.&lt;br /&gt;Решение: обернуть div таблицей.&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;div style='position:absolute; top:200px;left:100px; width:500px;'&amp;gt;Длинный предлинный текст, абзаца эдак на три.&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-3121862101806814297?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/3121862101806814297/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=3121862101806814297' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3121862101806814297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3121862101806814297'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2011/03/ie.html' title='Глюк IE с текстом в абсолютно спозиционированном элементе'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-782543344872255239</id><published>2011-02-22T08:55:00.000+02:00</published><updated>2011-02-22T08:55:24.266+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='оформление'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Еще немного об оформлении</title><content type='html'>Почти два месяца ничего не писал в блог. Некогда и нечего было. Недавно увидел пример оформления, который мне понравился, и продолжая предыдущий пост, добавлю кое-что.&lt;br /&gt;Во-первых, это nautilus-elementary. Добавляем источник пакетов в /etc/apt/sources.list:&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #f1c232; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;deb http://ppa.launchpad.net/am-monkeyd/nautilus-elementary-ppa/ubuntu lucid main&lt;/span&gt;&lt;br /&gt;и обновляем nautilus&lt;br /&gt;Чрезвычайно настраиваемая тема - Orta:&lt;br /&gt;&lt;a href="http://skiesofazel.deviantart.com/art/Orta-184118297"&gt;http://skiesofazel.deviantart.com/art/Orta-184118297&lt;/a&gt;&lt;br /&gt;И красивая рамка окошек для Emerald:&lt;br /&gt;&lt;a href="http://gnome-look.org/content/show.php/eLeKaJota?content=137640"&gt;http://gnome-look.org/content/show.php/eLeKaJota?content=137640&lt;/a&gt;&lt;br /&gt;С учетом предыдущего поста, получилось вот так:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3O_TusliLGA/TWNdnIlMtdI/AAAAAAAAAhQ/HZvo92VbdnI/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-3O_TusliLGA/TWNdnIlMtdI/AAAAAAAAAhQ/HZvo92VbdnI/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-782543344872255239?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/782543344872255239/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=782543344872255239' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/782543344872255239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/782543344872255239'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2011/02/blog-post.html' title='Еще немного об оформлении'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-3O_TusliLGA/TWNdnIlMtdI/AAAAAAAAAhQ/HZvo92VbdnI/s72-c/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-1819123634082014715</id><published>2010-12-24T15:40:00.003+02:00</published><updated>2011-02-22T08:58:26.424+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='оформление'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Установка нескольких симпатичных дополнений для Ubuntu</title><content type='html'>Чтобы не лазить по ссылкам и не искать заново, запишу здесь, как установить некоторые понравившиеся мне украшательства (на 10.04)&lt;br /&gt;&lt;br /&gt;# Новые шрифты Ubuntu из PPA&lt;br /&gt;&lt;div style="color: orange; font-family: monotype;"&gt;sudo add-apt-repository ppa:webupd8team/ubuntu-font-family&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install ttf-ubuntu-font-family&lt;/div&gt;&lt;br /&gt;# Новый avant window navigator из PPA и тема к нему&lt;br /&gt;&lt;div style="color: orange; font-family: monotype;"&gt;sudo add-apt-repository ppa:awn-testing/ppa&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install avant-window-navigator-trunk python-awn-extras-trunk awn-applets-c-extras-trunk dockmanager-daemon dockmanager&lt;br /&gt;wget http://ubuntulogy.org/wp-content/uploads/2010/09/AmbianceStyle.tar.gz&lt;/div&gt;&lt;br /&gt;# Иконки Faenza из PPA&lt;br /&gt;&lt;div style="color: orange; font-family: monotype;"&gt;sudo add-apt-repository ppa:tiheum/equinox&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install faenza-icon-theme&lt;/div&gt;&lt;br /&gt;# Темы Bisigi&lt;br /&gt;&lt;div style="color: orange; font-family: monotype;"&gt;sudo add-apt-repository ppa:bisigi&lt;br /&gt;sudo aptitude update&lt;br /&gt;sudo aptitude install bisigi-themes&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-1819123634082014715?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/1819123634082014715/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=1819123634082014715' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1819123634082014715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1819123634082014715'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/12/ubuntu_1919.html' title='Установка нескольких симпатичных дополнений для Ubuntu'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-6922387434613031949</id><published>2010-12-23T09:39:00.004+02:00</published><updated>2010-12-23T14:31:17.082+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='консоль'/><title type='text'>Переименование файлов по времени их создания</title><content type='html'>&lt;b&gt;Дано:&lt;/b&gt; много файлов видео с телефона, формат 3gp, видеозаписи дочери с рождения. Замысел - сделать видеоальбом.&lt;br /&gt;&lt;b&gt;Нужно:&lt;/b&gt; переименовать их в соответствии со временем их создания, например "2010-12-23-10-26.3gp", чтобы порядок сортировки был в порядке создания.&lt;br /&gt;Используем стандартные возможности консоли. Запускаем цикл по файлам формата 3gp, и производим действия перемещения с найденным файлом, предварительно состряпав ему новое имя из времени его создания.&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #e69138; font-family: inherit;"&gt;for i in *.3gp; do mv "$i" "`ls -l $i | awk '{ print $6 "-" $7 }' | awk -F':' '{ print $1 "-" $2 }'`.3gp"; done&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-6922387434613031949?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/6922387434613031949/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=6922387434613031949' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6922387434613031949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6922387434613031949'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/12/blog-post_23.html' title='Переименование файлов по времени их создания'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-1388668691684703429</id><published>2010-12-16T16:56:00.000+02:00</published><updated>2010-12-16T16:56:14.768+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Запись звука, звучащего в моих колонках. Конечно, в Ubuntu.</title><content type='html'>Такое желание может возникать, когда слушаешь интернет-радио, или еще что-нибудь, не находящееся на локальном диске: как бы это сохранить себе?&lt;br /&gt;Есть всякие качалки для flash, но не всегда это помогает. И с радио это тоже не всегда легко. Потому опубликую тут путь универсальный, годный для любого звука, что проходит через звуковую карту нашего компьютера.&lt;br /&gt;&lt;br /&gt;Установим регулятор громкости PulseAudio, если он еще не установлен.&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #ffd966; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;sudo apt-get install pavucontrol&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь можно его открыть и включить возможность записи с устройства вывода.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_3923yIoruBw/TQomTTemqxI/AAAAAAAAAgg/9UzxNbOCm9k/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="280" src="http://2.bp.blogspot.com/_3923yIoruBw/TQomTTemqxI/AAAAAAAAAgg/9UzxNbOCm9k/s400/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_3923yIoruBw/TQombsTCwaI/AAAAAAAAAgk/l0WrdMup4Ig/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="382" src="http://4.bp.blogspot.com/_3923yIoruBw/TQombsTCwaI/AAAAAAAAAgk/l0WrdMup4Ig/s400/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Выбираем галочкой "Monitor of Встроенное устройство Analog Stereo". Теперь откроем Audacity и настроим его на запись.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_3923yIoruBw/TQom0HIiYZI/AAAAAAAAAgo/q_Wf5yKED_Q/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://2.bp.blogspot.com/_3923yIoruBw/TQom0HIiYZI/AAAAAAAAAgo/q_Wf5yKED_Q/s400/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_3923yIoruBw/TQom4wVw10I/AAAAAAAAAgs/j7zqlhh9Nys/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="135" src="http://2.bp.blogspot.com/_3923yIoruBw/TQom4wVw10I/AAAAAAAAAgs/j7zqlhh9Nys/s400/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA-3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Теперь включаем радио или флеш, или что угодно, и жмем красную кнопку записи в Audacity. После окончания записи (нажать кнопку "Стоп" - квадратную такую, знаете?) - идем в меню "Файл - Экспортировать", выбираем формат, ID3 теги. Сохраняем записываем следующий трек.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-1388668691684703429?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/1388668691684703429/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=1388668691684703429' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1388668691684703429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1388668691684703429'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/12/ubuntu.html' title='Запись звука, звучащего в моих колонках. Конечно, в Ubuntu.'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3923yIoruBw/TQomTTemqxI/AAAAAAAAAgg/9UzxNbOCm9k/s72-c/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-816499935183514992</id><published>2010-10-29T11:05:00.000+03:00</published><updated>2010-10-29T11:05:44.671+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Rhythmbox и странности с ID3</title><content type='html'>Когда-то пробовал пользоваться этим плеером, но столкнулся с некоторыми неприятными вещами в нем, и отбросил как негодный. И только сегодня понял, в чем дело.&lt;br /&gt;Странности были такие: у некоторых файлов он не мог изменить ID3 теги. То есть изменения происходили, и через две-три секунды всё возвращалось как было. И названия треков, и альбомов. Из-за этого многие треки оказывались в разделе неопределенного жанра. Причем программа EasyTAG нормально все меняла.&lt;br /&gt;Наконец стало понятно в чем дело. Rhythmbox не умеет нормально работать с ID3 версии 2.4, а именно в такие я преобразовывал теги, когда что-то там менял. В результате, настроил в EasyTAG сохранение тегов в версии 2.3, и Rhythmbox тут же все подхватил, стал откликаться на изменения в тегах сторонними средствами, и вообще повел себя молодцом.&lt;br /&gt;Вот как выглядят мои настройки EasyTAG:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_3923yIoruBw/TMqAI3Spc9I/AAAAAAAAAfk/32Mg6Pvr4NQ/s1600/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8....png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="340" src="http://4.bp.blogspot.com/_3923yIoruBw/TMqAI3Spc9I/AAAAAAAAAfk/32Mg6Pvr4NQ/s640/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8....png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-816499935183514992?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/816499935183514992/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=816499935183514992' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/816499935183514992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/816499935183514992'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/10/rhythmbox-id3.html' title='Rhythmbox и странности с ID3'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3923yIoruBw/TMqAI3Spc9I/AAAAAAAAAfk/32Mg6Pvr4NQ/s72-c/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8....png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-1621343516090721303</id><published>2010-10-25T14:36:00.001+03:00</published><updated>2010-10-29T12:01:53.886+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Шрифты семейства Ubuntu из 10.10 в 10.04 и 9.10</title><content type='html'>Симпатичные такие шрифты. Поставим же их себе через PPA:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: #f1c232;"&gt;sudo add-apt-repository ppa:webupd8team/ubuntu-font-family&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: #f1c232;"&gt;sudo apt-get update&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: #f1c232;"&gt;sudo apt-get install ttf-ubuntu-font-family&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-1621343516090721303?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/1621343516090721303/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=1621343516090721303' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1621343516090721303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1621343516090721303'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/10/ubuntu-1010-1004-910.html' title='Шрифты семейства Ubuntu из 10.10 в 10.04 и 9.10'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-8659917403807708490</id><published>2010-10-08T08:13:00.000+03:00</published><updated>2010-10-08T08:13:40.398+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu и удаление копий файлов (например, фотографий)</title><content type='html'>Пользовался F-Spot, копировал файлы из папок в папки, в результате чего сложилась такая ситуация, что одна и та-же фотография хранилась в разных каталогах или с разными именами, различавшимися окончаниями, такими как "_1.jpg" или "-1.jpg". Вручную эту всю груду перебирать - с ума сойти.&lt;br /&gt;Нам поможет простая и эффективная утилита fdupes.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: #e69138;"&gt;sudo apt-get install fdupes&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: #e69138;"&gt;fdupes -r -d -N ~/папка/c/фотографиями&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-r - рекурсивно, с подкаталогами&lt;br /&gt;-d - удалять копии&lt;br /&gt;-N - не спрашивать пользователя о том, какую из копий оставить, удалить все, кроме первой.&lt;br /&gt;&lt;br /&gt;Разработчик, тебе мои аплодисменты.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-8659917403807708490?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/8659917403807708490/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=8659917403807708490' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8659917403807708490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8659917403807708490'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/10/ubuntu.html' title='Ubuntu и удаление копий файлов (например, фотографий)'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-7631795915785887784</id><published>2010-09-09T16:52:00.002+03:00</published><updated>2011-06-23T16:27:19.407+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Заметка про GEDIT</title><content type='html'>Как я &lt;a href="http://kawaikunee.blogspot.com/2009/05/gedit.html"&gt;писал ранее&lt;/a&gt;&amp;nbsp;о расширениях этого стандартного в Ubuntu текстового редактора. Здесь я опишу, как он мне помог в быстром решении одного простого вопроса.&lt;br /&gt;Считаю картриджи в коробках. Синих в этой 7, в той 5, тут 14... Так и записываю: 7+5+14 и т.д. И так для каждого цвета. А теперь это надо сложить. А лень.&lt;br /&gt;Поэтому, открываю Gedit, Правка-Параметры-Модули. Ставлю галку на "Внешние инструменты".&lt;br /&gt;Создаю новый, называю "Математика". Вот так:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3923yIoruBw/TIjkebDzW2I/AAAAAAAAAfc/ASrU9o3QQrI/s1600/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="277" src="http://3.bp.blogspot.com/_3923yIoruBw/TIjkebDzW2I/AAAAAAAAAfc/ASrU9o3QQrI/s400/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Теперь выделяю мой математический кусок, жму Alt+m и он заменяется результатом.&lt;br /&gt;Чувствуете, как руки начинают чесаться от желания что-нибудь наворотить? Тогда вот вам еще кое что.&amp;nbsp;В скриптах используются переменные окружения, такие как $PATH, $HOME или $PWD. Но для скриптов Gedit есть и свои особенные. Вот они:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$GEDIT_SELECTED_TEXT - Выделенный текст&lt;br /&gt;$GEDIT_CURRENT_WORD - Слово, на котором находится курсор&lt;br /&gt;$GEDIT_CURRENT_LINE - Строка, на которой находится курсор&lt;br /&gt;$GEDIT_CURRENT_LINE_NUMBER - Номер строки, на которой находится курсор&lt;br /&gt;$GEDIT_CURRENT_DOCUMENT_URI - URI документа&lt;br /&gt;$GEDIT_CURRENT_DOCUMENT_NAME - Имя документа (файла)&lt;br /&gt;$GEDIT_CURRENT_DOCUMENT_SCHEME - Тип документа (file/ftp/ssh)&lt;br /&gt;$GEDIT_CURRENT_DOCUMENT_PATH - Полный путь к файлу (для локальных)&lt;br /&gt;$GEDIT_CURRENT_DOCUMENT_DIR - Каталог текущего файла&lt;br /&gt;$GEDIT_CURRENT_DOCUMENT_TYPE - Тип содержимого документа&lt;br /&gt;$GEDIT_CURRENT_DOCUMENTS_URI - Список URI открытых документов&lt;br /&gt;$GEDIT_CURRENT_DOCUMENTS_PATH - Список путей открытых документов&lt;br /&gt;&lt;br /&gt;Вам и Gedit в руки! Кстати, не забудьте установить плагины:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;sudo apt-get install gedit-plugins&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-7631795915785887784?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/7631795915785887784/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=7631795915785887784' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7631795915785887784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7631795915785887784'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/09/gedit.html' title='Заметка про GEDIT'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3923yIoruBw/TIjkebDzW2I/AAAAAAAAAfc/ASrU9o3QQrI/s72-c/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-5032672320553237505</id><published>2010-07-30T09:17:00.008+03:00</published><updated>2010-07-30T09:25:11.278+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><title type='text'>Автоматический backup базы MSSQL</title><content type='html'>&lt;b&gt;Дано:&lt;/b&gt; некая база данных на сервере MSSQL 2005 Express.&lt;br /&gt;&lt;b&gt;Нужно:&lt;/b&gt; производить резервное копирование БД одним кликом или даже вообще без клика, автоматически.&lt;br /&gt;Насколько я знаю, в полной версии (не Express) есть готовые инструменты для этого, и очень неплохие. Но она платная. Поэтому будем обходиться тем, что есть. И у нас получится.&lt;br /&gt;&lt;br /&gt;Итак, резервное копирование, как и многое другое, может выполняться путем запроса T-SQL. Как узнать, как выглядит такой запрос? Можно, конечно погуглить, и вгрызаться в документацию, но есть способ проще. Кто не знал - сейчас покажу.&lt;br /&gt;Запускаем SQL Server Management Studio Express. Выбираем свою базу и...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3923yIoruBw/TFJo1koEuQI/AAAAAAAAAfE/US5D2RX7Y7w/s1600/01.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="449" src="http://3.bp.blogspot.com/_3923yIoruBw/TFJo1koEuQI/AAAAAAAAAfE/US5D2RX7Y7w/s640/01.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_3923yIoruBw/TFJpAZir8dI/AAAAAAAAAfM/aS2GmGkxyQc/s1600/02.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="571" src="http://1.bp.blogspot.com/_3923yIoruBw/TFJpAZir8dI/AAAAAAAAAfM/aS2GmGkxyQc/s640/02.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Все, теперь у нас есть sql-файл с готовым сценарием, делающим backup. Назовем его, к примеру, mssql_backup.sql, и положим на диск D.&lt;br /&gt;Теперь осталось его запустить извне. Для этого есть консольная утилита &lt;b&gt;sqlcmd&lt;/b&gt;, которая входит в состав сервера &lt;span style="font-size: x-small;"&gt;(респект парням из MS!)&lt;/span&gt;. Пользоваться так:&lt;br /&gt;&lt;div style="color: #ffd966;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #444444; color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;sqlcmd -S .\SQLEXPRESS -i "d:\mssql_backup.sql"&lt;/span&gt;&lt;/div&gt;где -S .\SQLEXPRESS - указание на имя сервера, по умолчанию оно такое.&lt;br /&gt;Создаем bat-файл с этой командой, запускаем, наблюдаем процесс. Красота!&lt;br /&gt;&lt;br /&gt;Осталось пара моментов.&lt;br /&gt;1) Как сделать, чтобы это происходило по расписанию? Cron тут нету, есть планировщик заданий, но в моем XP он не пожелал сохранять задание в расписании, ругался на отсутствие прав... Погуглив, я узнал, что это баг и чинить его, видимо, уже не будут.&lt;br /&gt;Поэтому, не заморачиваясь, кинул скрипт в автозапуск. Комп включается ежедневно, так что бэкап каждое утро меня вполне устраивает.&lt;br /&gt;2) Как сделать, чтобы файл резервной копии не перезаписывался каждый раз? Хотелось бы, чтобы имя файла говорило мне, от какого числа эта копия.&lt;br /&gt;Что ж, невозможного нет: правим сохраненный ранее сценарий:&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #444444; color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;DECLARE @filedate VARCHAR(20)&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #444444; color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;SET @filedate=REPLACE(REPLACE(CONVERT(VARCHAR(20),GETDATE(),20),':','.'),' ','_')&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #444444; color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #444444; color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;DECLARE @file_path VARCHAR(256)&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #444444; color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;SET @file_path='D:\MSSQL_DataBases\main_'+@filedate+'.bak'&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #444444; color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #444444; color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;BACKUP DATABASE [main] TO&amp;nbsp; DISK = @file_path WITH NOFORMAT, INIT,&amp;nbsp; NAME = N'main-Полная База данных Резервное копирование', SKIP, NOREWIND, NOUNLOAD,&amp;nbsp; STATS = 10&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #444444; color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;GO&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Теперь файлы будут выглядеть как main_2010-07-30_09.14.19.bak, что нам и требовалось. Можно дописать в bat-файл команду для их копирования куда-нибудь еще, например в сеть. Для надежности.&lt;br /&gt;Ясное дело, что ни о каких наворотах или вопросах безопасности тут речи нет. Я просто показал пример, как это можно сделать.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-5032672320553237505?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/5032672320553237505/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=5032672320553237505' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5032672320553237505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5032672320553237505'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/07/backup-mssql.html' title='Автоматический backup базы MSSQL'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3923yIoruBw/TFJo1koEuQI/AAAAAAAAAfE/US5D2RX7Y7w/s72-c/01.PNG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-604480481122149612</id><published>2010-07-14T09:15:00.002+03:00</published><updated>2010-07-14T09:39:15.034+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='японский'/><title type='text'>Японский язык</title><content type='html'>Сейчас я стараюсь учить японский язык, занимаюсь по материалам небезызвестной ЕШКО. Часто бывает так, что я забываю слова или иероглифы из прошлых уроков, и это очень неудобно, т.к. они не со мной в тот момент, как правило. Поэтому, как давно задумывал, постараюсь выкладывать заметки на память в блоге.&lt;br /&gt;Иероглифы - &lt;a href="http://kawaikunee.blogspot.com/p/blog-page.html"&gt;на отдельной странице&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-604480481122149612?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/604480481122149612/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=604480481122149612' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/604480481122149612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/604480481122149612'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/07/blog-post.html' title='Японский язык'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-8264573733516901248</id><published>2010-07-12T10:11:00.001+03:00</published><updated>2010-07-12T10:13:41.199+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Управление сервисами Google из командной строки</title><content type='html'>Случайно узнал, что есть и такое. Так что запишу себе на заметку и вам на радость! По-моему, очень интересно, особенно для автоматизации-скриптизации своего компьютерного хозяйства.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/googlecl/"&gt;Проект GoogleCL&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-8264573733516901248?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/8264573733516901248/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=8264573733516901248' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8264573733516901248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8264573733516901248'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/07/google_12.html' title='Управление сервисами Google из командной строки'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-5258142972476170220</id><published>2010-07-01T15:22:00.001+03:00</published><updated>2010-07-01T15:30:29.377+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='mkv'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Чистим MKV-файлы от ненужных треков</title><content type='html'>&lt;b&gt;Имеем:&lt;/b&gt; кучу файлов MKV (типа file-01.mkv, file-02.mkv ... file-24.mkv), в каждом из которых множество треков (видео, аудио, субтитры).&lt;br /&gt;&lt;b&gt;Нужно:&lt;/b&gt; оставить в них только одну видео- и одну звуковую дорожку.&lt;br /&gt;&lt;br /&gt;Для работы с MKV нам понадобится одна утилита: mkvtoolnix&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-get install mkvtoolnix&lt;/div&gt;&lt;br /&gt;Чтобы посмотреть, какие треки есть в файле, сделаем так:&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mkvinfo file-01.mkv&lt;/div&gt;&lt;br /&gt;Получаем довольно полную картину состава файла. Но нам нужна только часть, поэтому отфильтруем ненужное:&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mkvinfo file-01.mkv | grep -Gi 'A track\|track number\|track type\|codec id\|Language'&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| + A track&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Track number: 1&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Track type: video&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Codec ID: V_MPEG4/ISO/AVC&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Language: und&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| + A track&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Track number: 2&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Track type: audio&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Codec ID: A_AAC&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Language: rus&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| + A track&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Track number: 3&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Track type: audio&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Codec ID: A_AAC&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Language: jpn&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| + A track&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Track number: 4&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Track type: subtitles&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Codec ID: S_TEXT/ASS&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;  + Language: rus&lt;/div&gt;&lt;br /&gt;Запоминаем номера нужных треков и их содержимое. Например, мне нужны только первый и третий трек. Берем их из исходного файла и создаем новый, содержащий только эти два трека:&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mkvmerge file-01.mkv --vtracks 1 --atracks 3 -o file-01_.mkv&lt;/div&gt;Если в файле только один видеотрек (как обычно и бывает), то достаточно и этого:&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mkvmerge file-01.mkv -a 3 -o file-01_.mkv&lt;/div&gt;Если субтитры тоже нужно включить, то&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mkvmerge file-01.mkv -a 3 --stracks 4 -o file-01_.mkv&lt;/div&gt;&lt;br /&gt;Ну а теперь, для пробы создадим копии первых пяти файлов, но только с нужными нам 1 и 3 треками:&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;for i in *{01..05}.mkv; do mkvmerge "$i" -a 3 -o "${i%.mkv}_.mkv"; done&lt;/div&gt;&lt;br /&gt;Все получилось? Тогда можно и остальные обработать.&lt;br /&gt;&lt;br /&gt;P.S. На всякий случай, если вы хотите вытащить оттуда субтитры в отдельный файл, то никто вам не мешает. К примеру, так:&lt;br /&gt;&lt;span style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mkvextract tracks file-01.mkv -c UTF-8 4:file-01.ass&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-5258142972476170220?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/5258142972476170220/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=5258142972476170220' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5258142972476170220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5258142972476170220'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/07/mkv.html' title='Чистим MKV-файлы от ненужных треков'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-3575753180009292369</id><published>2010-06-28T16:35:00.004+03:00</published><updated>2010-07-02T09:08:23.907+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='видео'/><category scheme='http://www.blogger.com/atom/ns#' term='ffmpeg'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Видео для android</title><content type='html'>Устройства на базе Google Android воспроизводят видео определенного формата (mp4). Чтобы сжать кино для просмотра можно использовать &lt;a href="http://kawaikunee.blogspot.com/2010/06/ffmpeg.html"&gt;ffmpeg, собранный с кодеком x264&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;К примеру, такой скрипт в арсенале андроидовода может прижиться. Назовем его android.sh, сделаем исполняемым и положим в какую-нибудь папку, проходящую по данным PATH.&lt;br /&gt;&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=8VQ5LUY1"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Теперь сжатие файла выполняется командой:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;android.sh FileName&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;или, если нужно выбрать звуковую дорожку&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;android.sh FileName 1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Пока что мне не попадалось видео, которые бы конвертировались криво. Ура ffmpeg-у.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;А как быть с субтитрами?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Единственный плейер, который умеет играть видео с субтитрами (из тех, что мне известны) - mVideoPlayer (даже умеет их сдвигать на указанное кол-во миллисекунд в обе стороны). Единственный тип субтитров, которые он кушает - SRT. Соответственно, в кодировке UTF-8.&lt;/div&gt;&lt;div&gt;Значит, нужно конвертировать субтитры из других форматов. Специальные программы есть в репозитариях, но уже на третьем файле линуксоид подумает: а нельзя ли как-то это автоматизировать? Я искал что-нибудь консольное, и не нашел.&lt;/div&gt;&lt;div&gt;Пришлось, как всегда, брать python в руки. Пока что соорудил конвертировщик ASS в SRT, понадобится другой формат переводить - думаю, и с ним проблем не будет. На выходе отдает файл в исходной кодировке. Вот что получилось на скорую руку (создайте файл подобный предыдущему, например subconv.py)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=dsJUCL9U"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теперь файл конвертирую так:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;subconv.py -f FileSub.ass&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;и создается FileSub.srt в той-же папке.&lt;/div&gt;&lt;div&gt;Для конвертирования пачки использую цикл:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;for i in *.ass; do subconv.py -f "$i"; done &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;P.S. Буквально вчера было обновление mVideoPlayer, в котором добавилась поддержка субтитров SSA и ASS. Теперь стало еще легче.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-3575753180009292369?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/3575753180009292369/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=3575753180009292369' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3575753180009292369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3575753180009292369'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/06/android.html' title='Видео для android'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-7395539184309780966</id><published>2010-06-28T15:57:00.000+03:00</published><updated>2010-06-28T15:57:30.241+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='видео'/><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='ffmpeg'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Сборка свежего ffmpeg</title><content type='html'>Заметка на память. Сборка свежего ffmpeg с кодеком x264. Взято &lt;a href="http://www.oslinux.ru/articles/22-02-2010/posted-by-drakvla/%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B0%D1%86%D0%B8%D1%8F-%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-%D0%B8-%D0%BD%D0%B5-%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE-%D0%BD%D0%B0-linux-ubuntu-910-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-ffmpeg#comment-4276"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo apt-get install subversion&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;mkdir ~/src&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;cd ~/src&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo apt-get install checkinstall&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo apt-get install libfaac-dev libfaad-dev libmp3lame-dev libtheora-dev libxvidcore-dev libvorbis-dev libogg-dev libdirac-dev libopenjpeg-dev libschroedinger-dev libspeex-dev libgsm1-dev yasm libopencore-amrnb-dev libopencore-amrwb-dev libdc1394-22-dev&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo apt-get install git-core&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;git clone git://git.videolan.org/x264.git&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;cd x264&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;./configure&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;make&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo checkinstall --fstrans=no --install=yes --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`-0.0ubuntu1" --default&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo ./configure --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab --enable-libdirac --enable-libopenjpeg --enable-libschroedinger --enable-libspeex --enable-libgsm --enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libdc1394 --enable-version3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo make&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo checkinstall --fstrans=no --install=yes --pkgname=ffmpeg --pkgversion "3:0.svn`date +%Y%m%d` -12ubuntu3" --default&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;P.S.&lt;br /&gt;&lt;br /&gt;Если процессе сборки ffmpeg пишет так&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;/home/kawaikunee/src/ffmpeg/libavcodec/libavcodec.so: undefined reference to `x264_encoder_open_94'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;collect2: ld returned 1 exit status&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;make: *** [ffmpeg_g] Ошибка 1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;возможно установлены лишние пакеты:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo apt-get purge x264 libx264-dev&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-7395539184309780966?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/7395539184309780966/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=7395539184309780966' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7395539184309780966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7395539184309780966'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/06/ffmpeg.html' title='Сборка свежего ffmpeg'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-7465679362911840364</id><published>2010-06-18T11:14:00.001+03:00</published><updated>2010-06-18T12:23:01.306+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>Ядро. Заметки на память.</title><content type='html'>Получить исходники ядра. Можно установить из репозитариев для текущего ядра или скачать посвежее с kernel.org. Распаковать архив&lt;br /&gt;&lt;span style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;tar -xvjf *.tar.bz2&lt;/span&gt;&lt;br /&gt;Пропатчить ядро:&lt;br /&gt;Скопировать патчи в папку с исходниками ядра, после чего для файлов *.patch&lt;br /&gt;&lt;span style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;patch -p1 &amp;lt; filename.patch&lt;/span&gt;&lt;br /&gt;или для файлов *.bz2&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;bzcat patch.bz2 | patch -p1&lt;/div&gt;Получить конфигурацию текущего ядра: &lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zcat /proc/config.gz &amp;gt;  .config&lt;/div&gt;Или скопировать подходящий generic из /boot в файл .config&lt;br /&gt;Можно подправить конфигурацию&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;make xconfig&lt;/div&gt;&lt;span style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;make-kpkg clean&lt;/span&gt;&lt;br /&gt;Создаем пакеты для установки&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo su &lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;make-kpkg --initrd --revision=i386 kernel_image kernel_headers  modules_image&lt;/div&gt;Устанавливаем их:&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dpkg -i *.deb&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-7465679362911840364?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/7465679362911840364/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=7465679362911840364' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7465679362911840364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7465679362911840364'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/06/blog-post_18.html' title='Ядро. Заметки на память.'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-5190781444155597813</id><published>2010-06-17T20:46:00.000+03:00</published><updated>2010-06-17T20:46:52.748+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='видео'/><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Собрать несколько видеофайлов в один</title><content type='html'>Используя mencoder, собрать несколько AVI-файлов:&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;sudo apt-get install mencoder &lt;/span&gt;&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;mencoder 1.avi 2.avi 3.avi -oac copy -ovc copy -o out.avi&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Если у нас несколько файлов формата MOV, переведем их сначала в AVI, например, с помощью ffmpeg:&lt;br /&gt;&lt;span style="color: #ffd966; font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-get install ffmpeg &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;for i in *.MOV; do ffmpeg -i "$i" -vcodec mpeg4 -b 480k -r 23.976 -acodec libmp3lame -ab 96k -sameq -pass 1 ${i%MOV}avi; done&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь соберем все AVI в один:&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;sudo apt-get install transcode-utils &lt;/span&gt;&lt;/div&gt;&lt;span style="color: #ffd966; font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;avimerge -o out.avi -i *.avi&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-5190781444155597813?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/5190781444155597813/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=5190781444155597813' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5190781444155597813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5190781444155597813'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/06/blog-post.html' title='Собрать несколько видеофайлов в один'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-4368295202934570062</id><published>2010-06-10T09:21:00.001+03:00</published><updated>2010-06-15T13:00:05.471+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Firefox, Flash и звук (вернее, его отсутствие)</title><content type='html'>Все понятно, да? Видео есть, звука нет. У меня это носило периодический характер - то есть, то нет. Иногда в Chrome он есть, иногда и там пропадает. Почитав &lt;a href="https://wiki.ubuntu.com/PulseAudio"&gt;вики-страничку PulseAudio&lt;/a&gt; кажется понял, в чем дело.&lt;br /&gt;Делаем так. Убеждаемся, что установлено все, что нужно:&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;sudo apt-get install flashplugin-installer flashplugin-nonfree flashplugin-nonfree-extrasound&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;sudo gedit /etc/firefox/firefoxrc&lt;/span&gt;&lt;/div&gt;Вписываем туда строку&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;FIREFOX_DSP="padsp"&lt;/span&gt;&lt;/div&gt;Сохраняем, закрываем, перезапускаем Firefox. Теперь звук работает!&lt;br /&gt;&lt;br /&gt;P.S. НЕ панацея. На следующий день снова не работало.&lt;br /&gt;Переустановил свежую ALSA (&lt;a href="http://forum.ubuntu.ru/index.php?topic=95900.0"&gt;см.форум&lt;/a&gt;) - снова звучит. Интересно, надолго ли?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-4368295202934570062?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/4368295202934570062/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=4368295202934570062' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4368295202934570062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4368295202934570062'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/06/firefox-flash.html' title='Firefox, Flash и звук (вернее, его отсутствие)'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-3622684472772276078</id><published>2010-06-08T10:06:00.002+03:00</published><updated>2010-09-06T22:15:30.515+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='железо'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='sony vaio'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Sony VAIO + Ubuntu. Как подружить?</title><content type='html'>Инструкция для огорченных совместной неработой ноутбука Sony VAIO и Ubuntu.&lt;br /&gt;Установить и настроить Ubuntu 10.04 мне предстояло на двух ноутбуках Sony VAIO, один из них S-серии (VPCS11M9R/B), второй F-серии (VPCF11Z1R/BI).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Проблема:&lt;/b&gt;&lt;br /&gt;Не удается установить Ubuntu, при запуске с Live-CD возникает черный экран. Наблюдается на S-серии.&lt;br /&gt;&lt;b&gt;Лечение:&lt;/b&gt;&lt;br /&gt;Запускаем линукс с передачей ядру параметра nomodeset. Для этого после появления меню загрузки с диска нажать F6, и отметить галкой этот параметр. После установки нужно прописать этот параметр в меню загрузки, подредактировав меню grub:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo gedit /boot/grub/grub.cfg&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;После строки&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;### BEGIN /etc/grub.d/10_linux ###&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;видим описание пунктов загрузки. К нужному нам (обычно самому первому) после слов "quiet splash" допишем "nomodeset", так чтобы строка стала похожа на&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;linux /boot/vmlinuz-2.6.33.4-candela root=/dev/sda2 ro   quiet splash nomodeset&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Теперь с этого пункта удастся запустить Ubuntu. Правда, он какой-то убитый... Еще бы, с таким-то параметром. Может быть, многого будет не хватать, например меню или панелей, но у нас всегда есть Alt-F2, чтобы написать там 'gnome-terminal' и снова стать хозяином положения. Не огорчаемся, это еще не все, всё у нас будет нормально.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Проблема:&lt;/b&gt;&lt;br /&gt;Не удается задействовать драйвера NVidia. Замечено и на S и на F серии, но по разному. После попытки их установить и запустить Ubuntu получаем нечто жуткое - F-серия отображает съехавшее или расплывающееся изображение, а S-серия с параметром nomodeset вообще его не грузит, а без него - ну да, черный экран.&lt;br /&gt;&lt;b&gt;Лечение:&lt;/b&gt;&lt;br /&gt;Нам нужно получить бинарный EDID-файл из драйверов под Windiws (если я правильно понял) и подсунуть его в xorg.conf. Для этого берем  программу "Phoenix EDID Designer" например, &lt;a href="http://www.tucows.com/preview/329441"&gt;здесь&lt;/a&gt;&amp;nbsp;(она работает в Win7 и бесплатна, softMCCS в семерке даже не запустилась). Запускаем ее в Windows7 (вы ведь не удалили ее, правда?), и проделываем там:&lt;br /&gt;"Tools &amp;gt; Extract Registry EDID", "Extract EDID", "File &amp;gt; Export" как ".raw" файл. Теперь забираем этот файл в линукс, к примеру, на флешке. Копируем этот файл куда-нибудь, у меня получилось в '/etc/X11/edid.raw'. Немного пошаманим в файле xorg.conf, правда в Ubuntu 10.04 его уже не найти, но никто не мешает нам его создать.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo gedit /etc/X11/xorg.conf&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;И напишем там такие заклинания:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;Section "Device"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;Identifier          "Device0"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;Driver              "nvidia"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;VendorName         "NVIDIA Corporation"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;Option             "ConnectedMonitor"   "DFP-0"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;Option             "CustomEDID"          "DFP-0:/etc/X11/edid.raw"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;EndSection&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Сохраняем. Теперь можно установить драйвер от NVidia. Пользователи F-серии смогут это сделать через GUI, а терминальщикам в S-серии придется как-то так:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo apt-get install nvidia-185*&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Ну или новее, если будет к тому моменту. Осталось убрать nomodeset из меню grub (для S-серии) и перезагрузиться. Видео починили.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Проблема:&lt;/b&gt;&lt;br /&gt;Не видит устройств WiFi. Наблюдается в S-серии.&lt;br /&gt;&lt;b&gt;Лечение:&lt;/b&gt;&lt;br /&gt;Нам нужна новая прошивка для WiFi, номер 6050. Копируем &lt;a href="http://intellinuxwireless.org/iwlwifi/downloads/iwlwifi-6050-ucode-9.201.4.1.tgz"&gt;файл&lt;/a&gt; с &lt;a href="http://intellinuxwireless.org/?n=Downloads"&gt;сайта&lt;/a&gt;, распаковываем, читаем readme и копируем&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo cp iwlwifi-6050-4.ucode /lib/firmware/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Перезагрузка, система видит wlan0, ну не прекрасно ли?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Проблема:&lt;/b&gt;&lt;br /&gt;Система не работает со звуковым устройством. Наблюдается и в F и в S сериях.&lt;br /&gt;&lt;b&gt;Лечение:&lt;/b&gt;&lt;br /&gt;Установка последней версии alsa. Для этого, &lt;a href="http://forum.ubuntu.ru/index.php?topic=95900.0"&gt;по рецепту с форума&lt;/a&gt;:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo apt-get install linux-headers-`uname -r` build-essential gcc gawk libgettext-ruby-util libgettext-ruby1.8 libncurses5-dev libncursesw5-dev xmlto checkinstall&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.23.tar.bz2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.23.tar.bz2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.23.tar.bz2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;tar jxvf alsa-driver-1.0.23.tar.bz2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;tar jxvf alsa-lib-1.0.23.tar.bz2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;tar jxvf alsa-utils-1.0.23.tar.bz2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;cd ./alsa-driver-1.0.23&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;./configure --with-cards=hda-intel&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;make&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo make install&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;cd ../alsa-lib-1.0.23&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;./configure&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;make&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo make install&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;cd ../alsa-utils-1.0.23&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;./configure&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;make&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo make install&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #ffd966;"&gt;sudo alsaconf&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Этого оказалось достаточным, чтобы все запело и за играло, переключалось на наушники и обратно.&lt;br /&gt;&lt;br /&gt;Что еще осталось:&lt;br /&gt;Не работает Bluetooth в S-серии и не могу переключиться на встроенный микрофон (S и F). Если кто решил, отпишитесь.&lt;br /&gt;&lt;br /&gt;P.S. Установка &lt;a href="http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.36-rc3-maverick/"&gt;этого ядра для версии 10.10 (2.6.36 RC3)&lt;/a&gt; что-то изменила: заработал микрофон! Зато отвалились 3D эффекты: драйвер Nvidia не работает. Но это внушает надежду, что к релизу 10.10 наконец все заработает как надо!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-3622684472772276078?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/3622684472772276078/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=3622684472772276078' title='Комментарии: 13'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3622684472772276078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3622684472772276078'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/06/sony-vaio-ubuntu.html' title='Sony VAIO + Ubuntu. Как подружить?'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-3436306472118619553</id><published>2010-05-13T14:12:00.001+03:00</published><updated>2010-05-13T14:27:59.351+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='Библия'/><category scheme='http://www.blogger.com/atom/ns#' term='христианство'/><title type='text'>Тексты Библии в формате FB2</title><content type='html'>Искал себе на коммуникатор под Android тексты Священного Писания. На маркете нашел или иностранные переводы, или так называемый "перевод нового мира", т.е. искаженные тексты под нужды определенных лиц, которых я не буду называть. А обычного Синодального перевода на русском языке - нет. Тогда решил установить программу-читалку и просто тексты Писания туда загнать.&lt;br /&gt;Установил FBReader, и выяснилось, что обычные txt он уже не кушает. Стал искать в интернете файлы fb2 для него, и наталкивался на неполные тексты. То только Ветхий Завет, то в Новом нескольких книг не хватает. В результате я взял на себя смелость создать то, чего мне не хватало.&lt;br /&gt;Тексты взяты из программы "Цитата из Бибилии" Тимофея Ха.&lt;br /&gt;&lt;br /&gt;Скачать файл &lt;a href="http://dl.dropbox.com/u/6363795/Blog/Bible.fb2.zip"&gt;Bible.fb2.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;P.S. Для андроидов: распакуйте из архива файл Bible.fb2 и положите его в папку Books на карте памяти, что вставляется в ваш аппарат. Если такой папки нет, создайте ее.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-3436306472118619553?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/3436306472118619553/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=3436306472118619553' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3436306472118619553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3436306472118619553'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/05/fb2.html' title='Тексты Библии в формате FB2'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-339698941464815501</id><published>2010-05-06T13:32:00.000+03:00</published><updated>2010-05-06T13:32:44.876+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Pidgin, Empathy, Gajim и Yota</title><content type='html'>При работе в&amp;nbsp; сети Yota без всяких других соединений network-manager сообщает, что нет сети, что вводит некоторые приложения в сетевой ступор. Например, Pidgin или Empathy не могут соединиться со своими серверами, при том, что Firefox вполне нормально лезет в интернет по wimax-соединению.&lt;br /&gt;Поиск привел меня к Gajim - этот jabber-клиент работает, не обращая внимания на network-manager. Взял с сайта последнюю версию и собрал в &lt;a href="http://dl.dropbox.com/u/6363795/Blog/gajim_0.13.4-1_i386.deb"&gt;deb-пакет, берите&lt;/a&gt;, кому надо.&lt;br /&gt;&lt;br /&gt;P.S. Нужен &lt;b&gt;mail-агент для linux&lt;/b&gt;? Берите его &lt;a href="http://code.google.com/p/myagent-im/"&gt;здесь&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-339698941464815501?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/339698941464815501/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=339698941464815501' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/339698941464815501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/339698941464815501'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/05/pidgin-empathy-gajim-yota.html' title='Pidgin, Empathy, Gajim и Yota'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-1718630034122587438</id><published>2010-04-23T12:10:00.000+03:00</published><updated>2010-04-23T12:10:11.455+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Тюнинг Empathy</title><content type='html'>По умолчанию этот IM-клиент выглядит, прямо скажем, не очень. Простецкое окно чата, топорные иконки. В Ubuntu 10.04 его уже подрихтовали, добавили нормальные темы значков в список контактов и тему оформления окна чата. Но, чтобы достичь такой красоты, не обязательно устанавливать новый дистрибутив.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Установка значков в списке контактов&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Качаем значки, например, &lt;a href="http://www.gnome-look.org/CONTENT/content-files/119449-elementary%20Empathy.zip"&gt;эти&lt;/a&gt;, и распаковываем папку hicolor в каталог ~/.icons&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Установка темы окна чата&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Качаем тему &lt;a href="http://live.gnome.org/Empathy/Themes"&gt;отсюда&lt;/a&gt;, и распаковываем папку с именем типа ИмяТемы.AdiumMessageStyle в каталог &lt;span style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/.local/share/adium/message-styles/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Вообще-то эти темы от Mac-овского IM-клиента Adium. В Ubuntu 10.04 Empathy укомплектован темой &lt;a href="http://www.adiumxtras.com/index.php?a=xtras&amp;amp;xtra_id=2160"&gt;Renkoo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-1718630034122587438?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/1718630034122587438/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=1718630034122587438' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1718630034122587438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1718630034122587438'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/04/empathy.html' title='Тюнинг Empathy'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-2728403046533239615</id><published>2010-04-20T09:59:00.000+03:00</published><updated>2010-04-20T09:59:48.374+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='консоль'/><title type='text'>Функции в bash. Архивируй это!</title><content type='html'>Несмотря на два с половиной года использования Linux (вплотную с Ubuntu 7.10), как-то не вникал в тонкости shell-программирования. Ну цикл организовать, условия, выборки - пригождалось, но не белее того. Написал себе пару десятков alias-ов, для удобства, но чтобы обрабатывать опции командной строки писал отдельные скрипты на bash или python и складывал их в ~/bin, добавив путь к этой папке к переменной PATH.&lt;br /&gt;Сравнительно недавно попалась на глаза информация о функциях в bash, и оказалось - это то, что мне нужно, чтобы не плодить скрипты. Они, оказывается, способны обрабатывать опции. В связи с этим, чтобы удобнее было создавать zip-архивы из чего угодно и поменьше тыкать по клавишам, накидал вот такую функцию, и поместил ее в ~/.bashrc&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;function zipp(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ -d "$1" ]; then out=`basename "$1"`".zip"; fi&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ -f "$1" ]; then out=`echo $1 | sed 's/\(.*\)\..*$/\1/g'`".zip"; fi&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; zip -r -9 "$PWD/$out" "$1"&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;В ней проверяется, что сжимаем, каталог или файл, если файл - то отсекается расширение, если каталог - берется его имя без полного пути. После этого к имени добавляется ".zip", и передается архиватору как имя файла создаваемого архива.&lt;br /&gt;Опции -r и -9 означают архивирование со всеми вложенными файлами с максимальной степенью сжатия.&lt;br /&gt;Теперь, вместо того, чтобы писать в консоли&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ zip -9 -r myfolder.zip myfolder/&lt;/div&gt;&lt;br /&gt;я пишу&lt;br /&gt;&lt;div style="color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ zipp myfolder&lt;/div&gt;&lt;br /&gt;Неправда ли, намного удобнее?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-2728403046533239615?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/2728403046533239615/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=2728403046533239615' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2728403046533239615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2728403046533239615'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/04/bash.html' title='Функции в bash. Архивируй это!'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-1253033255737129359</id><published>2010-04-19T11:44:00.004+03:00</published><updated>2010-04-20T14:32:51.038+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='deb'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='консоль'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Создаем DEB-пакет</title><content type='html'>Сегодня мы будем учиться готовить стандартные Debian-ские пакеты.&lt;br /&gt;Оказывается, это не так сложно, и к тому же интересно.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Немного информации о пакете&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Если вкратце, то deb-пакет - это ar-архив, распаковать который можно так:&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ ar x mydebpackage.deb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В результате мы увидим извлеченные файлы:&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;data.tar.gz&lt;/span&gt; (tar-архив с файловой структурой, копируемой в систему при установке)&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;debian-bynary&lt;/span&gt; (файл с номером версии формата пакетов)&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;control.tar.gz&lt;/span&gt; (tar-архив управляющей информации о пакете)&lt;br /&gt;&lt;br /&gt;В файле &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;control.tar.gz&lt;/span&gt; содержатся интересные вещи:&lt;br /&gt;- &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;postinst&lt;/span&gt; (скрипт, выполняемый после установки)&lt;br /&gt;- &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;postrm&lt;/span&gt; (скрипт, выполняемый после удаления)&lt;br /&gt;- &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;md5sums&lt;/span&gt; (контрольные суммы файлов)&lt;br /&gt;- &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;control&lt;/span&gt; (остальная метаинформация)&lt;br /&gt;&lt;br /&gt;Например, в &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;control&lt;/span&gt; может быть примерно такое содержимое:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Package: mypackage&lt;/span&gt; (название пакета)&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Version: 0.1&lt;/span&gt; (версия)&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Depends: liba, libb1, libc2&lt;/span&gt; (зависимости)&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Recommends: libpamparam, lalala&lt;/span&gt; (рекомендовано)&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Suggests: libbestdeb&lt;/span&gt; (могут улучшить работу пакета)&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Section: utils&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Priority: optional&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Description: My best package! But for what?...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Создаем свой DEB&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Чтобы создать deb-пакет, у нас есть все, что нужно. К примеру, я хочу собрать пакет видео-утилит, назовем его &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;videotools&lt;/span&gt;.&lt;br /&gt;В него войдут bash-скрипты для извлечения из видеофайлов отдельно аудио-дорожки, видео-дорожки, конвертирования avi в flv и обратно.&lt;br /&gt;&lt;br /&gt;Для начала, создаем структуру каталогов.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;videotools&lt;/span&gt; (каталог, в котором все остальное)&lt;br /&gt;- &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DEBIAN/control&lt;/span&gt; (каталог DEBIAN с файлом control)&lt;br /&gt;- &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;usr/local/bin/getaudio&lt;/span&gt; (этот и остальные - мои скрипты)&lt;br /&gt;- &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;usr/local/bin/getvideo&lt;/span&gt;&lt;br /&gt;- &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;usr/local/bin/flv2avi&lt;/span&gt;&lt;br /&gt;- &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;usr/local/bin/avi2flv&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Содержимое файла &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;control&lt;/span&gt; будет примерно таким:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Package: videotools&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Version: 0.1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Maintainer: Kawaikunee &amp;lt;secret@mail&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Description: Contaned scripts getaudio, getvideo, flv2avi, avi2flv&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Section: utils&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Priority: optional&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Architecture: all&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Depends: bash, mplayer, mencoder&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Архитектуру указываю любую, это же просто bash-скрипты.&lt;br /&gt;&lt;br /&gt;Теперь собираем пакет:&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ dpkg-deb --build videotools&lt;/span&gt;&lt;br /&gt;И получаем файл videotools.deb&lt;br /&gt;&lt;br /&gt;Трубим в фанфары и кушаем мороженое в честь успеха.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Дополнительная информация&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Виртуальный пакет&lt;/i&gt; - это общее имя, употребляемое к любому из пакетов некой группы, все пакеты из которой обеспечивают подобную базовую функциональность (например, программы для работы с электронной почтой).&lt;br /&gt;Чтобы добавить файл в виртуальный пакет какой-либо функциональности, нужно указать это в файле &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;control&lt;/span&gt;, например так:&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Provides: mail-transport-agent&lt;/span&gt;&lt;br /&gt;Чтобы сделать файл зависимым от чего-то общего, так:&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Depends: mail-transport-agent&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Метапакет&lt;/i&gt; - пакет, в котором нет реальных файлов, он содержит только зависимости, чтобы гарантированно установить их. Например - &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ubuntu-standard&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Создание DEB-пакета из исходников&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Никакой магии. Устанавливаем пакет &lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;checkinstall&lt;/span&gt; (я уверен, не нужно вас учить, как это делается ^_^). Как обычно, в папке с распакованными исходниками делаем&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ ./configure &amp;amp;&amp;amp; make&lt;/span&gt;&lt;br /&gt;а вместо&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo make install&lt;/span&gt;&lt;br /&gt;набираем&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo checkinstall&lt;/span&gt;&lt;br /&gt;Такой финт ушами сначала создаст deb-пакет, а потом установит его через apt, что в дальнейшем обеспечит его корректное удаление, даже если разработчик не предусмотрел такой возможности. К тому-же, у нас останется пакет, который мы можем переслать друзьям, менее сведующим в этих консольных тонкостях, или которым это вовсе ни к чему.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Создание DEB-пакета для программ на Python&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Для этого используем пакет py2deb(&lt;a href="http://www.manatlan.com/page/py2deb"&gt;http://www.manatlan.com/page/py2deb&lt;/a&gt;). Приведены очень доступные примеры, а сам пакет скачивается там же, на сайте разработчика.&lt;br /&gt;Например, вот скрипт, которым я упаковываю программу для изучения Библии. Оцените простоту!&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/usr/bin/env python&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#-*- coding:utf-8 -*-&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;from glob import glob&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;from py2deb import Py2deb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p=Py2deb("bible")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p.author="Kawaikunee"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p.mail="secret@mail"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p.description="Программа в помощь изучающим Библию. Просмотр, поиск, параллельные места. Выделить текст и нажать клавишу F: поиск по выделенному. Клик на номере стиха: показать параллельные места. Клик на названии отрывка в найденном: открыть эту главу."&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p.url = "http://kawaikunee.blogspot.com"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p.depends="python-gtk2, python, python-pysqlite2, msttcorefonts"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p.license="gpl"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p.section="utils"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p.arch="all"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p["/usr/bin"] = ["bible.py|bible","bible_iface.py","bible_shift.py"]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p["/usr/share/Bible/src"] = ["ot.png","nt.png","ap.png","ava.svg","bible_shift.xml"]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p["/usr/share/Bible/modules"] = ["modules/rst.sqlite|rst.sqlite","modules/kjv.sqlite|kjv.sqlite","modules/bible.db|bible.db"]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p["/usr/share/Bible"] = glob("modules/para/*")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p["/usr/share/applications"]=["Bible.desktop|Bible.desktop"]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p.generate("0.3.1")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Воодушевил? Дерзайте!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-1253033255737129359?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/1253033255737129359/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=1253033255737129359' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1253033255737129359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1253033255737129359'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/04/deb.html' title='Создаем DEB-пакет'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-8523614992340855529</id><published>2010-04-08T11:59:00.001+03:00</published><updated>2010-04-08T12:00:31.585+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Синхронизация TomBoy с UbuntuOne</title><content type='html'>Вторая попытка синхронизировать TomBoy с UbuntuOne потерпела фиаско. Сначала то, что на сервере, стало приплывать на локальный комп и добавлять повторные заметки с переименовыванием прежних (добавлялось слово "старая"). Удаление "старых" ни к чему не привело - при синхронизации создавал их заново. При этом регулярно выдавало ошибку "Синхронизация не удалась". Мыслю в направлении, что я удалил "Первую заметку", вероятно это критично для него, впрочем - это только догадки в попытке хоть как-то оправдать нелепые действия программы. Вторая, и катастрофическая бага: я удалил на сервере все заметки, надеясь, что теперь то с локального компьютера они туда зальются и будет мир во всем мире, но не тут то было: синхронизация удалила то, что было на компе. Хорошо, что оставались резервные копии.&lt;br /&gt;Более-менее нормально отработала синхронизация в локальную папку. Буду пользоваться таким способом.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-8523614992340855529?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/8523614992340855529/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=8523614992340855529' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8523614992340855529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8523614992340855529'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/04/tomboy-ubunuone.html' title='Синхронизация TomBoy с UbuntuOne'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-5915777986041318573</id><published>2010-04-05T10:11:00.000+03:00</published><updated>2010-04-05T10:11:56.714+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><title type='text'>Работа с MSSQL Server в консоли linux</title><content type='html'>По работе приходится использовать MSSQL Server, никуда не денешься. И это одна из причин, почему у меня на работе два компьютера - один под MS Windows XP (где и стоит SQL Server), второй - Linux Mint 8 Helena.&lt;br /&gt;Что делать, когда раз-два в день (или в неделю) необходимо выполнить пару запросов к этому серверу баз данных? Ну, для начала нужно пересесть за компьютер с изделием MS (или воспользоваться &lt;a href="http://kawaikunee.blogspot.com/2008/09/windows-ubuntu-linux.html"&gt;удаленным доступом&lt;/a&gt;), запустить SQL Server Managment Studio Express, подождать, пока этот монстр загрузится, залогинится, открыть окошко для запроса, и только после этого можно начать работу.&lt;br /&gt;Как много букв! Как хотелось бы чего-нибудь попроще и побыстрее! Что-то типа консоли mysql. Что-ж, достаточно приложить руки и голову, а &lt;a href="http://kawaikunee.blogspot.com/2009/03/python-microsoft-sql-server-2005.html"&gt;python сделает остальное&lt;/a&gt;.&lt;br /&gt;Вот, что у меня получилось. Мне нравится.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_3923yIoruBw/S7mMnuHgClI/AAAAAAAAAPA/H6K6S1-MijY/s1600/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D0%A2%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="555" src="http://2.bp.blogspot.com/_3923yIoruBw/S7mMnuHgClI/AAAAAAAAAPA/H6K6S1-MijY/s640/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D0%A2%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB-1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-5915777986041318573?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/5915777986041318573/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=5915777986041318573' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5915777986041318573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5915777986041318573'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/04/mssql-server-linux.html' title='Работа с MSSQL Server в консоли linux'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3923yIoruBw/S7mMnuHgClI/AAAAAAAAAPA/H6K6S1-MijY/s72-c/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D0%A2%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-2353748351505209042</id><published>2010-03-25T13:50:00.001+02:00</published><updated>2010-03-25T13:51:41.216+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='японский'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Печать на японском в Ubuntu</title><content type='html'>Искал и нашел на просторах интернета способ печати на японской кане и кандзи в Ubuntu.&lt;br /&gt;Взято из &lt;a href="http://maximum-value.blogspot.com/2009/11/ubuntu-ibus-scim.html"&gt;этого поста&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo apt-get install ibus-anthy ibus-qt4&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ im-switch -s ibus &lt;/div&gt;&lt;br /&gt;Перелогиниваемся. Влючение ibus производится по ctrl+space.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-2353748351505209042?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/2353748351505209042/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=2353748351505209042' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2353748351505209042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2353748351505209042'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/03/blog-post_25.html' title='Печать на японском в Ubuntu'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-4302805168866902449</id><published>2010-03-24T10:12:00.002+02:00</published><updated>2010-04-22T14:22:28.478+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Библия'/><category scheme='http://www.blogger.com/atom/ns#' term='христианство'/><title type='text'>Источник программы для изучения Библии</title><content type='html'>Теперь, когда есть сайт церкви, выложил пакет с программой в помощь изучающим Библию в линуксе на него, чтобы не заморачиваться с файлами на mail.ru&lt;br /&gt;&lt;a href="http://zelbaptist.org/dists/bible_0.3.1_all.deb"&gt;http://zelbaptist.org/dists/bible_0.3.1_all.deb&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Обновление: &lt;br /&gt;&lt;a href="http://zelbaptist.org/dists/bible_0.3.1_all.deb"&gt;http://zelbaptist.org/dists/bible_0.3.2_all.deb&lt;/a&gt;&lt;br /&gt;- исправлен поиск на русском (стал регистронезависимым)&lt;br /&gt;- исправлена ошибка при переходе на перевод, в котором нет апокрифов&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-4302805168866902449?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/4302805168866902449/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=4302805168866902449' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4302805168866902449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4302805168866902449'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/03/blog-post_24.html' title='Источник программы для изучения Библии'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-6344476160397500735</id><published>2010-03-02T12:58:00.003+02:00</published><updated>2010-03-02T13:04:54.952+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='христианство'/><category scheme='http://www.blogger.com/atom/ns#' term='pylons'/><title type='text'>Сайт церкви стартовал</title><content type='html'>1 марта 2010 года запущен сайт церкви, реконструированный на Pylons(web-фреймворк на Python). В дальнейшем будут добавляться новые возможности, пока это базовая часть. Ознакомиться можно &lt;a href="http://zelbaptist.org/"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/_3923yIoruBw/S4zwVnopa9I/AAAAAAAAAOw/Ii1kKhV3lU0/s640/site.png" width="555" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-6344476160397500735?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/6344476160397500735/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=6344476160397500735' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6344476160397500735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6344476160397500735'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/03/blog-post.html' title='Сайт церкви стартовал'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3923yIoruBw/S4zwVnopa9I/AAAAAAAAAOw/Ii1kKhV3lU0/s72-c/site.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-7682975688897423585</id><published>2010-02-18T10:59:00.000+02:00</published><updated>2010-02-18T10:59:33.715+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='консоль'/><title type='text'>Скрипт-напоминалка</title><content type='html'>Задача: нужно через определенный промежуток времени выполнять какие-то задания. Например, выводить пользователю сообщения через каждый час, чтобы он пошел попил чайку, отдохнул от монитора.&lt;br /&gt;Можно воспользоваться монстрами типа cron. Но намного проще и быстрее написать такой скрипт самому. Например, такой:&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/bin/bash&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# Для вывода на экран в графическом режиме необходимо экспортировать переменную&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;export DISPLAY=:0.0&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# Сообщим себе, что скрипт запущен&lt;br /&gt;sleep 10 &amp;amp;&amp;amp; notify-send "Таймер включен"&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# Запустим в цикле сообщение о перерыве, ожидая вывода следующего 1 час&lt;br /&gt;while :; do sleep 3600 &amp;amp;&amp;amp; notify-send "Перерыв 15 минут"; done&lt;/div&gt;&lt;br /&gt;Теперь сохраним скрипт, дадим ему права на выполнение и пропишем в автозагрузку.&lt;br /&gt;&lt;br /&gt;P.S.&lt;br /&gt;Для вывода сообщений посредством notify-send не забудьте установить libnotify-bin:&lt;br /&gt;&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo apt-get install libnotify-bin&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-7682975688897423585?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/7682975688897423585/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=7682975688897423585' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7682975688897423585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7682975688897423585'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/02/blog-post_18.html' title='Скрипт-напоминалка'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-6819163020397179287</id><published>2010-02-17T09:26:00.000+02:00</published><updated>2010-02-17T09:26:48.763+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='сеть'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu + Yota = дружба навек</title><content type='html'>Об этом уже писали на разных форумах и т.п., но быть может собранное в одной статье поможет кому-то разобраться быстрее. Предполагается, что у вас модем-флешка от Samsung.&lt;br /&gt;Устанавливаем libusb с исходниками:&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo apt-get install libusb-1.0-1 libusb-1.0-1-dev&lt;/div&gt;Если вам нужны man-страницы к драйверу, то устанавливаем также&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo apt-get install asciidoc docbook2&lt;/div&gt;&lt;br /&gt;Скачиваем драйвер &lt;a href="http://code.google.com/p/madwimax/"&gt;отсюда&lt;/a&gt;. Распаковываем архив.&lt;br /&gt;В консоли заходим в каталог с распакованными файлами.&lt;br /&gt;Если вы будете использовать man-страницы, то&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;./configure&lt;/div&gt;Если, как и я, не будете, то&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;./configure --without-man-pages&lt;/div&gt;Далее все по классике.&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;make &amp;amp;&amp;amp; sudo make install&lt;/div&gt;&lt;br /&gt;После перезагрузки ifconfig покажет наличие нового устройства wimax0&lt;br /&gt;У меня работает сразу. Но если у вас по какой-то причине интернет не работает, то делаем так:&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo /usr/local/madwimax/sbin/madwimax&lt;/div&gt;Чтоб было легче, можно прописать команду в псевдонимы в файле ~/.bashrc&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;alias yota='sudo /usr/local/madwimax/sbin/madwimax'&lt;/div&gt;&lt;br /&gt;Спасибо разработчику драйвера. Работает без проблем.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-6819163020397179287?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/6819163020397179287/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=6819163020397179287' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6819163020397179287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6819163020397179287'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/02/ubuntu-yota.html' title='Ubuntu + Yota = дружба навек'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-7944077712602159962</id><published>2010-02-17T08:59:00.001+02:00</published><updated>2010-07-30T11:09:23.709+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memo'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Некоторые различия при установке Python Imaging Library (PIL)</title><content type='html'>Установка через APT&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo apt-get install python-imaging&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ python&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&amp;gt;&amp;gt;from PIL import Image&lt;/div&gt;&lt;br /&gt;Установка через easy_install:&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ easy_install PIL&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ python&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&amp;gt;&amp;gt;import Image&lt;/div&gt;&lt;br /&gt;На заметку.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-7944077712602159962?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/7944077712602159962/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=7944077712602159962' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7944077712602159962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7944077712602159962'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/02/python-imaging-library-pil.html' title='Некоторые различия при установке Python Imaging Library (PIL)'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-3552774768506022683</id><published>2010-02-11T11:51:00.001+02:00</published><updated>2010-04-22T14:22:58.283+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Библия'/><category scheme='http://www.blogger.com/atom/ns#' term='христианство'/><title type='text'>Исходники к программе для изучения Библии</title><content type='html'>Кратенькое сообщение: выложил исходники программы для изучения Библии. Кому интересно, кто хочет сделать что-то лучше - см &lt;a href="http://files.mail.ru/8AJD5U"&gt;http://files.mail.ru/8AJD5U&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-3552774768506022683?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/3552774768506022683/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=3552774768506022683' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3552774768506022683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3552774768506022683'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/02/blog-post.html' title='Исходники к программе для изучения Библии'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-8390865890604007950</id><published>2010-01-20T12:57:00.000+02:00</published><updated>2010-01-20T12:57:38.830+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Свежая версия Midnight Commander</title><content type='html'>Даже в последних версиях Ubuntu в поставке идет слегка устаревшая версия MC. Там не работает несколько отличных вещей, которые радуют меня теперь:&lt;br /&gt;- &lt;a href="http://www.midnight-commander.org/wiki/ru/doc/common/skins"&gt;поддержка скинов&lt;/a&gt; (не тоже самое, что [Colors] в ~/.mc/ini)&lt;br /&gt;- показ/скрытие файлов с точкой в начале имени по Alt-.&lt;br /&gt;Это только на первый взгляд. К тому же, устранены некоторые досадные глюки, типа "Оболочка все еще активна".&lt;br /&gt;Чтобы установить, следуйте &lt;a href="http://www.midnight-commander.org/wiki/Binaries"&gt;инструкциям&lt;/a&gt;, например, для 9.10 так:&lt;br /&gt;&lt;br /&gt;&lt;pre class="wiki"&gt;sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F82FBD49&lt;/pre&gt;&lt;pre class="wiki"&gt;deb http://ppa.launchpad.net/zyv/ppa/ubuntu karmic main&lt;br /&gt;deb-src http://ppa.launchpad.net/zyv/ppa/ubuntu karmic main&lt;/pre&gt;&lt;pre class="wiki"&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-8390865890604007950?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/8390865890604007950/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=8390865890604007950' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8390865890604007950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8390865890604007950'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2010/01/midnight-commander.html' title='Свежая версия Midnight Commander'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-4588439058946626847</id><published>2009-12-11T10:48:00.001+02:00</published><updated>2009-12-11T11:07:55.767+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sqlalchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='pylons'/><title type='text'>Pylons, SQLAlchemy, кодировка</title><content type='html'>Долгие мучения с вышеуказанной связкой побудили меня написать эту заметку.&lt;br /&gt;&lt;br /&gt;Работа с SQLite не вызывала проблем, т.к. эта СУБД хранит данные в Unicode, и Pylons+mako по умолчанию с ним отлично работают. Просмотр данных в SQLite можно делать с помощью:&lt;br /&gt;1) консольной утилиты (&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-get install sqlite3&lt;/span&gt;)&lt;br /&gt;2) SQLite Database browser (&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-get install sqlitebrowser&lt;/span&gt;)&lt;br /&gt;3) плагином для Firefox (&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;http://code.google.com/p/sqlite-manager/&lt;/span&gt;)&lt;br /&gt;Все они нормально отображают данные, без крякозябрей. На web-страницы шаблонизатор mako также выводит все корректно.&lt;br /&gt;&lt;br /&gt;А вот с MySQL дело несколько сложнее, т.к. он может отдавать данные в разных кодировках. Чтобы получить данные в нужной, а не в той, что стоит в настройках сервера по умолчанию (они располагаются в /etc/mysql/my.cnf), нужно дать команду "SET NAMES кодировка".&lt;br /&gt;Моя история была такова, что потребовалось данные из одной БД, которую использовала CMS Joomla, перетащить в другую, чтобы работать с ней из Pylons. Как я понял, Joomla при работе с БД использовала "SET NAMES latin1", что для англоязычных товарищей - нормально и привычно уже много лет. И все бы ничего, да есть засада.&lt;br /&gt;Программы для работы с MySQL, которые я использую в основном, это:&lt;br /&gt;1) MySQL Query Browser (&lt;span style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-get install mysql-query-browser&lt;/span&gt;)&lt;br /&gt;2) phpMyAdmin на сервере&lt;br /&gt;Эти приложения по умолчанию предпочитают кодировку соединения UTF8. Поэтому, что в одном, что в другом кириллица была видна как "ÐŸÐµÑ". Есть приложения, которые справляются с этой проблемой, но в phpMyAdmin на сервере этого не исправишь.&lt;br /&gt;Так что-же делать? Перевести данные из одной кодировки в другую. Мне пришлось написать скрипт, который создает два соединения с MySQL, причем в первом устанавливаю "SET NAMES latin1" (для донорской базы), во втором "SET NAMES utf8" (для новой). Остается пройтись по записям, считывая их в latin1 и записывая в utf8. &lt;br /&gt;После такой обработки вышеприведенные программы отображают кириллицу как полагается. Остается только настроить Pylons и SQLAlchemy.&lt;br /&gt;Итак, для корректного отображения данных нужно дать серверу MySQL команду "SET NAMES utf8". Где же это сделать? Я нашел три варианта. Предположим, проект называется app.&lt;br /&gt;1) Файл /app/config/environment.py, метод load_environment&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;from sqlalchemy import engine_from_config&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;from app.model import init_model&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;def load_environment(global_conf, app_conf):&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;engine = engine_from_config(config, 'sqlalchemy.')&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;engine.execute("SET NAMES utf8")&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;init_model(engine)&lt;br /&gt;&lt;/div&gt;2) Файл /app/model/__init__.py, метод init_model&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;def init_model(engine):&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;engine.execute("SET NAMES utf8")&lt;br /&gt;&lt;/div&gt;В обоих случаях, при старте проекта в консоли будет видно, что эти команды выполняются. И все вроде бы пошло гладко! Но это до поры. А именно, до поры создания нового соединения.&lt;br /&gt;Как известно, SQLAlchemy использует так называемый pool, т.е. некий список соединений, который использует по мере занятости, циклически. Их колличество можно менять. Пока я этого не понял, неоднократно был удивляем странным поведением пилонов. Так вот, пока хватает одного соединения, все идет как задумано, но стоит перейти на второе - косяки, вперед! "SET NAMES" для них никто не задавал, поэтому кодировка будет "как получится", а именно знаками вопросов для кириллицы. Вот тут то и пригодится третий способ. Он задает команду при создании соединения, и все pool-ы будут передавать данные с нужной кодировкой. Почитать об этом больше можно &lt;a href="http://www.sqlalchemy.org/docs/03/sqlalchemy_engine.html#docstrings_sqlalchemy.engine_modfunc_create_engine"&gt;тут&lt;/a&gt;.&lt;br /&gt;3) Файл /development.ini&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sqlalchemy.url = mysql://root:@localhost:3306/church?init_command=set%20names%20%22utf8%22&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sqlalchemy.convert_unicode=true&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sqlalchemy.encoding='utf8'&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Теперь немного о причине таких махинаций. Только таким образом мне удалось добиться того, чтобы поиск русских слов в базе данных происходил без учета регистра. В SQLite он не работает, т.к. там Unicode, и выбирать не приходится. И только в MySQL, и с данными в utf8 это получилось. Кстати, со словами, состоящими из латинских символов, проблем нет. Если есть другие способы, буду рад добавить их.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-4588439058946626847?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/4588439058946626847/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=4588439058946626847' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4588439058946626847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4588439058946626847'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/12/pylons-sqlalchemy.html' title='Pylons, SQLAlchemy, кодировка'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-8163538049647693142</id><published>2009-12-08T11:38:00.000+02:00</published><updated>2009-12-08T11:38:06.852+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pylons'/><title type='text'>Pylons и mako: Почему метод контроллера у меня вызывается дважды?</title><content type='html'>Записка на память. Ситуация:&lt;br /&gt;Метод контроллера при варианте&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;return "ABC"&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;отрабатывает один раз.&lt;br /&gt;При варианте&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;return render("/abc.mako")&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;метод вызывается дважды. Но не во всех шаблонах.&lt;br /&gt;Причина: наличие в шаблоне строки&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;link rel="stylesheet" type="text/css" href="/"  media="all"&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Pylons пытается подгрузить по ссылке содержимое. Если ничего не указано, то он обращается к тому же контроллеру и тому же методу, откуда вызван рендер шаблона. Стилей он там не находит, но метод срабатывает. В результате лишняя нагрузка, и ненужная деятельность.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-8163538049647693142?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/8163538049647693142/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=8163538049647693142' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8163538049647693142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8163538049647693142'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/12/pylons-mako.html' title='Pylons и mako: Почему метод контроллера у меня вызывается дважды?'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-6198312698445286630</id><published>2009-12-07T14:25:00.001+02:00</published><updated>2010-04-22T14:23:22.507+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Библия'/><category scheme='http://www.blogger.com/atom/ns#' term='христианство'/><title type='text'>Программа для изучения Библии в Linux. Опрос.</title><content type='html'>Изначально программа для изучения Библии в ОС Linux задумывалась исключительно для этих целей. Никаких там посторонних, хоть и христианских, книжек, никаких песен или комментариев. И, пока что, так оно и остается.&lt;br /&gt;Но, наконец-то братья откликнулись, и в комментариях было высказано предложение добавить возможность работы с модулями "Цитаты" Тимофея Ха либо напрямую, либо конвертировать их в формат моей разработки. Я размышляю над этим, и при возможности, займусь.&lt;br /&gt;А пока что, мне было бы интересно, какие переводы Священного Писания вы считаете востребованными? Для меня RST и KJV более чем достаточно. Хотелось бы еще Женевскую учебную Библию добавить, но ее я в модулях Цитаты не нашел, а то обязательно бы прикрутил.&lt;br /&gt;Прошу отписываться по этому поводу.&lt;br /&gt;&lt;br /&gt;P.S. - самая актуальная версия - по ссылке справа вверху.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-6198312698445286630?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/6198312698445286630/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=6198312698445286630' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6198312698445286630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6198312698445286630'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/12/linux.html' title='Программа для изучения Библии в Linux. Опрос.'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-2135768260193899646</id><published>2009-11-22T21:56:00.002+02:00</published><updated>2010-01-11T10:23:21.216+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='железо'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ноутбук ASUS FSKseries, Ubuntu 9.10 и наушники</title><content type='html'>Вопрос: на ноутбуке ASUS F3Kseries при установленной Ubuntu 9.10, при вставленных наушниках, звук идет и во встроенные колонки и в наушники. Хотелось бы, чтобы звучали только наушники, раз уж они воткнуты.&lt;br /&gt;Ответ: открываем файл&lt;br /&gt;&lt;div style="color: #bf9000; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/etc/modprobe.d/alsa-base.conf&lt;br /&gt;&lt;/div&gt;и добавляем туда строку&lt;br /&gt;&lt;div style="color: #bf9000; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;options snd-hda-intel model=auto&lt;br /&gt;&lt;/div&gt;Перезагружаем. Все работает как надо.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-2135768260193899646?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/2135768260193899646/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=2135768260193899646' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2135768260193899646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2135768260193899646'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/11/asus-fskseries-ubuntu-910.html' title='Ноутбук ASUS FSKseries, Ubuntu 9.10 и наушники'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-4750174668426406365</id><published>2009-10-19T14:14:00.003+03:00</published><updated>2009-10-19T16:20:11.678+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pylons'/><title type='text'>FCKeditor + Pylons</title><content type='html'>Не так давно передо мной встала задача: подобрать и реализовать на сайте хороший WYSIWYG редактор для проекта на &lt;a href="http://pylonshq.com/"&gt;Pylons&lt;/a&gt;. Перебрав несколько вариантов, я остановился на &lt;a href="http://ckeditor.com/download"&gt;FCKeditor&lt;/a&gt;, так как у него имеется встроенный менеджер медиа-файлов, т.е. присутствует механизм загрузки файлов на сервер и выборки оттуда для вставки в текст.&lt;br /&gt;&lt;br /&gt;Все это распрекрасно, с одним маленьким НО - он не готов для прикручивания к пилонам. Нет, конечно разработчики учли присутствие на белом свете языка Python (в наличии также коннекторы для asp, aspx, cfm, lasso, perl, php). Но только как wsgi. Через mod_python, cgi - пожалуйста, все почти готово. А для меня - не очень. Поискав в интернете ответ, так и не нашел толкового пошагового решения. Потому, набив кучу шишек, представляю мое HowTo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Как прикрутить FCKeditor к Pylons, пошаговое руководство&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Создадим проект, к примеру "&lt;i&gt;myapp&lt;/i&gt;":&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;$ paster create -t pylons myapp&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;$ cd myapp&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Идем на &lt;a href="http://ckeditor.com/download"&gt;http://ckeditor.com/download&lt;/a&gt; и скачиваем последнюю версию FCKeditor. Вероятно, новее уже не будет, потому что разработчики переключились на новые продукты - CKeditor и CKFinder, которые по сути - редактор и менеджер файлов по отдельности. Кстати, другой известный WYSIWYG редактор, &lt;a href="http://tinymce.moxiecode.com/"&gt;TinyMCE&lt;/a&gt;, идет подобной дорогой (у него нет поддержки Python, кстати). И я бы выбрал этот новенький, красивенький CKeditor, если бы не одно обстоятельство - разработчики тоже не сделали поддержки для Python. Может быть появится попозже. Может быть я сам как-нибудь займусь и перепишу коннектор для него. Может быть. А пока - продолжим.&lt;br /&gt;&lt;br /&gt;Извлечем из архива папку &lt;i&gt;fckeditor&lt;/i&gt; в &lt;i&gt;myapp/public/&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Создадим шаблон &lt;i&gt;myapp/templates/index.mako&lt;/i&gt; вот такого вида:&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;#coding:utf8&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;FCKEditor&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type="text/javascript" src="/ckeditor/ckeditor.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;script type="text/javascript" src="/fckeditor/fckeditor.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form action="" method="post" target="_self"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type='hidden' name='body' id='body' value='Hello World' /&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type="text/javascript"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var oFCKeditor = new FCKeditor() ;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; oFCKeditor.BasePath = '/fckeditor/';&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; oFCKeditor.ToolbarSet='Default'&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; oFCKeditor.Height&amp;nbsp;&amp;nbsp;&amp;nbsp; = 300 ;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; oFCKeditor.InstanceName = 'body' ;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; oFCKeditor.Create() ;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Удалим файл &lt;i&gt;myapp/public/index.html&lt;/i&gt;&lt;br /&gt;Создадим контроллер &lt;i&gt;index&lt;/i&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;$ paster controller index&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;В контроллере &lt;i&gt;myapp/controller/index.py&lt;/i&gt; в классе &lt;i&gt;IndexController&lt;/i&gt; укажем отобразить вышесозданный шаблон:&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;class IndexController(BaseController):&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def index(self):&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return render("/index.mako")&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Пропишем путь в &lt;i&gt;myapp/config/routing.py&lt;/i&gt; для корня нашего сайта:&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #666666; color: #ffd966;"&gt;&amp;nbsp;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; # CUSTOM ROUTES HERE&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #ffd966; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.connect('/',controller='index',action='index')&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Запустим сервер:&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;$ paster serve --reload development.ini&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Теперь в нашем любимом браузере по адресу &lt;i&gt;localhost:5000&lt;/i&gt; видим - редактор уже присутствует. И он работает, получить данные при нажатии кнопки сохранения можно через&amp;nbsp;&lt;i&gt;request.POST['body'].&lt;/i&gt;&lt;br /&gt;Вам больше ничего и не надо? Тогда заканчиваем читать здесь. А мне еще нужно осуществить загрузку файлов на сайт и просмотр их на сервере.&lt;br /&gt;&lt;br /&gt;Создадим контроллер &lt;i&gt;fckeditor&lt;/i&gt;, в который будем направлять запросы редактора на просмотр и загрузку файлов:&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #666666; color: #f1c232;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;$ paster controller fckeditor&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Добавим в файл &lt;i&gt;myapp/config/routing.py&lt;/i&gt; пути роутинга, чтобы приложение обращалось не к файлам в своем базовом каталоге, а к нашему контроллеру. По умолчанию, в файлах конфигурации FCKeditor все настроено на работу с php.&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # CUSTOM ROUTES HERE&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.connect('/fckeditor/editor/filemanager/connectors/php/*path_info', controller='fckeditor')&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.connect('/',controller='index',action='index')&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;В файле &lt;i&gt;myapp/controllers/fckeditor.py&lt;/i&gt; перед объявлением класса добавим путь к нашим файлам Python-коннекторов, идущих в комплекте с FCKeditor, и импортируем из них нужные классы.&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;import sys&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;sys.path.append("/media/disk/Projects/myapp/myapp/public/fckeditor/editor/filemanager/connectors/py")&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;from connector import FCKeditorConnector&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;from upload import FCKeditorQuickUpload&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Также не забудьте удалить или переименовать папку &lt;i&gt;myapp/public/fckeditor/editor/filemanager/connectors/php&lt;/i&gt;, иначе пилоны найдут эту папку и предпочтут брать файлы оттуда, игнорируя правило, прописанное в &lt;i&gt;routing.py&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Теперь, собственно, класс &lt;i&gt;FckeditorController&lt;/i&gt; из &lt;i&gt;myapp/controllers/fckeditor.py&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;class FckeditorController(BaseController):&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def __call__(self,environ,start_response):&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id=environ['wsgiorg.routing_args'][1]['path_info']&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if id=='connector.php':&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; environ['SCRIPT_FILENAME'] = 'connector.py'&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; conn = FCKeditorConnector(environ)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; elif id == 'upload.php':&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; environ['SCRIPT_FILENAME'] = "upload.py"&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; conn = FCKeditorQuickUpload(environ)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; start_response ("200 Ok", [('Content-Type','text/html')])&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; yield "Unknown page requested: "&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; yield environ['SCRIPT_NAME']&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; data = conn.doResponse()&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; start_response ("200 Ok", conn.headers)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; yield str(data)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Для нашего удобства настроим &lt;i&gt;myapp/public/fckeditor/fckconfig.js&lt;/i&gt;. Пусть Интерфейс будет русским!&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;FCKConfig.AutoDetectLanguage&amp;nbsp;&amp;nbsp;&amp;nbsp; = false ;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;FCKConfig.DefaultLanguage&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = 'ru' ;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Добавим в настройках development.ini каталог для загрузок и хранения файлов:&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #666666; color: #f1c232;"&gt;&lt;span style="font-size: x-small;"&gt;[DEFAULT]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;static_store = %(here)s/myapp/public/upload&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Если вы сами не создадите эту папку - Pylons умница сделает это за вас.&lt;br /&gt;Теперь немного пошаманим в настройках коннектора&lt;br /&gt;&lt;i&gt;myapp/public/fckeditor/editor/filemanager/connectors/py/config.py&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Enabled = True&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;UserFilesPath = '/upload/'&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;from pylons import config&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;UserFilesAbsolutePath = config['static_store']+'/'&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;И наконец, последний штрих - внесем парочку измененеий в файл&lt;br /&gt;&lt;i&gt;myapp/public/fckeditor/editor/filemanager/connectors/py/fckcommands.py&lt;/i&gt;&lt;br /&gt;а именно в класс &lt;i&gt;UploadFileCommandMixin:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;class UploadFileCommandMixin (object):&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from pylons import request&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Заменить if self.request.has_key("NewFile"): на&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if request.POST.has_key("NewFile"):&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; # Заменить newFile = self.request.get("NewFile", "") на&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #666666; color: #f1c232; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; newFile = request.POST["NewFile"]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Вот вроде и всё. Теперь на стартовой странице будет виден редактор на русском языке, который может работать с загружаемыми файлами. Надеюсь, кому-нибудь помогут мои мытарства.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-4750174668426406365?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/4750174668426406365/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=4750174668426406365' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4750174668426406365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4750174668426406365'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/10/fckeditor-pylons.html' title='FCKeditor + Pylons'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-5615660180745861655</id><published>2009-10-02T08:52:00.005+03:00</published><updated>2009-10-19T14:59:49.956+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><title type='text'>Как подружить Pidgin и Facebook</title><content type='html'>По состоянию на 1 октября 2009 года, стандартные пакеты из репозитария не позволяют подключаться к Facebook-чату, выдает ошибку соединения или неправильный логин-пароль. Как лечить:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Раз:&lt;/span&gt; &lt;a href="http://mirror.ne.gov/ubuntu/pool/universe/j/json-glib/libjson-glib-1.0-0_0.7.6-0ubuntu1_i386.deb"&gt;http://mirror.ne.gov/ubuntu/pool/universe/j/json-glib/libjson-glib-1.0-0_0.7.6-0ubuntu1_i386.deb&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Два:&lt;/span&gt; &lt;a href="http://pidgin-facebookchat.googlecode.com/files/pidgin-facebookchat-1.61.deb"&gt;http://pidgin-facebookchat.googlecode.com/files/pidgin-facebookchat-1.61.deb&lt;/a&gt;&lt;br /&gt;Это просто обновленные пакеты, которых пока нет в репозитариях.&lt;br /&gt;Устанавливаем их по порядку, запускаем Pidgin, создаем аккаунт типа Facebook-чат - и плагин начинает работать. Чудеса!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-5615660180745861655?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/5615660180745861655/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=5615660180745861655' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5615660180745861655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5615660180745861655'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/10/pydgin-facebook.html' title='Как подружить Pidgin и Facebook'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-1129336874138329104</id><published>2009-09-28T21:09:00.009+03:00</published><updated>2009-09-30T08:35:18.882+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlalchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='pylons'/><title type='text'>Pylons, создание модели в SQLAlchemy</title><content type='html'>Вот как бывает. Стараешься что-то изучить, потом отвлекаешься, а потом, через несколько месяцев снова смотришь на свой код и думаешь - интересно, а как я это сделал?&lt;br /&gt;Чтобы не забыть, опишу последовательность создания модели в Pylons.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Создаем новый проект, назовем его newapp.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ paster create -t pylons newapp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ cd newapp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. В файл ./development.ini добавляем расположение файла базы данных, и указываем (опционально) автоматическую конвертацию в юникод.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;sqlalchemy.url = sqlite:///%(here)s/newapp.sqlite&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;sqlalchemy.convert_unicode = true&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. В файл ./newapp/config/environment.py импортируем модуль алхимии и модель, которую создадим чуть позже.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;import sqlalchemy as sa&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;from newapp import model&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Там же, в методе load_environment добавим создание алхимического движка для нашей БД и запустим метод init_model&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;def load_environment(global_conf, app_conf):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;        ____#.....................................#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;____engine = sa.engine_from_config(config, "sqlalchemy.")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;____model.init_model(engine)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. В файле ./newapp/websetup.py импортируем модель&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;from newapp import model&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;И здесь же, в метод setup_config добавим строки, необходимые для генерирования базы данных из модели.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;def setup_config(command, filename, section, vars):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;    ____#...................................#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;____log.info("Creating database tables")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;____model.meta.create_all(bind=model.engine)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;____log.info("Finished setting up")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Создаем модель в файле ./newapp/model/__init__.py&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;&lt;/span&gt;# Импортируем модули, которые могут нам понадобиться&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;from datetime import datetime&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;from sqlalchemy import Table, Column, Integer, String, DateTime, MetaData, ForeignKey, orm&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;meta = MetaData()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;&lt;/span&gt;# Метод, стартуемый в шаге 3: публикуем алхимический движок и сессию, которую&lt;br /&gt;# создаем для работы с БД с нужными нам опциями, и создаем привязки таблиц и&lt;br /&gt;# классов, в т.ч. по внешним ключам.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;def init_model(bind):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;    ____global engine, Session&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;    ____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;engine = bind&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;    ____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;Session = orm.scoped_session(orm.sessionmaker(transactional=True, autoflush=True, bind=bind))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;    ____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;orm.mapper(Sections,sections)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;    ____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;orm.mapper(Articles,articles,properties={'section':orm.relation(Sections)})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Описываем таблицы:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;sections=Table('sections',meta,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;    ____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;Column('id',Integer,primary_key=True,autoincrement=True,nullable=False),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;    ____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;Column('name',String,default=u'',nullable=False)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;articles=Table('articles',meta,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;    ____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;Column('id',Integer,primary_key=True,autoincrement=True,nullable=False),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;&lt;/span&gt;    ____# А эта колонка - с внешним ключом&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;    ____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;Column('section_id',Integer, ForeignKey('sections.id'),nullable=False,default=0),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;    ____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;Column('name',String,default=u'',nullable=False),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;    ____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;Column('body',String,default=u'',nullable=False),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;Column('created_at',DateTime(),nullable=False,default=datetime.now),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;&lt;/span&gt;    ____# Обратим внимание, тут мы добавляем триггер на обновление записи&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;Column('updated_at',DateTime(),nullable=False,default=datetime.now,onupdate=datetime.now)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;class Sections(object):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;____def __repr__(self):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;        return self.name.encode('utf8')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;class Articles(object):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;    def __repr__(self):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;____&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;        return self.name.encode('utf8')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. Реализуем модель в файл базы данных.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ paster setup-app development.ini&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7. Создаем контроллер ./newapp/controllers/index.py.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ paster controller index&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;и добавляем в метод index код для добавления данных в наши таблицы и для извлечения.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;section=model.Sections()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;article.name=u'Раздел 1'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;model.Session.add(section)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;article=model.Articles()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;article.section_id=1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;article.name=u'Статья 1'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;article.body=u'Много текста'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;model.Session.add(article)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;model.Session.commit()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;sql=model.Session.query(model.Articles).get(1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;return sql.section # Вывод данных, получаемыех по внешнему ключу&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Вот как-то так, если вкратце.&lt;br /&gt;P.S. Чтобы было меньше проблем с кодировками, не лишним будет в начало каждого файла добавлять строку&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;#coding:utf8&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-1129336874138329104?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/1129336874138329104/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=1129336874138329104' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1129336874138329104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1129336874138329104'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/09/pylons-sqlalchemy.html' title='Pylons, создание модели в SQLAlchemy'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-1936621690601655521</id><published>2009-09-04T20:20:00.003+03:00</published><updated>2009-09-04T20:58:01.624+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='сеть'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Чужой среди своих: Linux в windows-домене</title><content type='html'>Об этом много чего написано, но если чисто-конкретно, то:&lt;br /&gt;&lt;br /&gt;Указываем IP, маску подсети и шлюз в /etc/network/interfaces (с учетом, что IP статический):&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;iface eth0 inet static&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;address 192.168.xx.xx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;netmask 255.255.0.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;gateway 192.168.xx.xx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;auto eth0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Прописывем DNS сервера в /etc/resolv.conf (можно несколько):&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;nameserver xxx.xxx.xxx.xxx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;nameserver xxx.xxx.xxx.xxx&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Устанавливаем samba:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ sudo apt-get install samba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Прописывем в /etc/samba/smb.conf доменное имя:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;workgroup = DOMAIN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Перезапускаем сеть и samba:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ sudo /etc/init.d/networking restart&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ sudo /etc/init.d/samba restart&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь, для удобства перемещения по сети можно установить удобную утилиту pyNeighborhood и smbfs&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ sudo apt-get install  smbfs pyneighborhood&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Настроить pyNeighborhood: указать папку для монтрования сетевых ресурсов, логин и пароль в сети, опции монтирования (очень актуальна кодировка, см &lt;a href="http://kawaikunee.blogspot.com/2009/02/windows.html"&gt;тут&lt;/a&gt;). Остальное можно оставить по умолчанию. Программа проста и работает очень быстро. Особенно выручит она пользователей xfce, т.к. гномовский Nautilus умеет перемещаться по сетевым папкам, а Thunar - нет.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-1936621690601655521?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/1936621690601655521/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=1936621690601655521' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1936621690601655521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1936621690601655521'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/09/linux-windows.html' title='Чужой среди своих: Linux в windows-домене'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-5567429966334686121</id><published>2009-09-02T13:08:00.004+03:00</published><updated>2009-09-02T20:35:19.797+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='видео'/><category scheme='http://www.blogger.com/atom/ns#' term='ffmpeg'/><category scheme='http://www.blogger.com/atom/ns#' term='консоль'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Если FFmpeg при кодировании ругается на нехватку кодеков</title><content type='html'>На днях решил перекодировать пару видяшек для PSP жены, воспользовавшись ffmpeg, на что последний отреагировал, разведя руками - не знаю, мол, кодека mpeg4.&lt;br /&gt;Стало ясно, что в системе установлен не полный набор кодеков. Чтобы решить эту проблему, делаем так:&lt;br /&gt;&lt;br /&gt;Удаляем полностью ffmpeg и обновляем данные репозитариев:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ sudo apt-get purge ffmpeg&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ sudo apt-get update&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Устанавливаем полные библиотеки кодеков, они попросят удалить предыдущие. ОК.&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ sudo apt-get install libavcodec-unstripped-* libavdevice-unstripped-* libavformat-unstripped-* libavutil-unstripped-* libpostproc-unstripped-* libswscale-unstripped-*&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Возвращаем ffmpeg:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ sudo apt-get install ffmpeg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;А вот скрипт, чтобы кодировать avi-шки в формат, который переваривает PSP:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;#!/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;[ -d psp ] || mkdir psp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;ffmpeg -i "$1" -f psp -s 368x208 -aspect 16:9 -vcodec mpeg4 -b 500k -acodec libfaac -ab 96k -ac 2 "psp/$1.MP4"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В интернетах встречается подобный скрипт, в котором написано "-acodec aac" - не верьте, будет ругаться.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-5567429966334686121?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/5567429966334686121/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=5567429966334686121' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5567429966334686121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5567429966334686121'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/09/ffmpeg.html' title='Если FFmpeg при кодировании ругается на нехватку кодеков'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-1850317010943317379</id><published>2009-08-18T11:48:00.005+03:00</published><updated>2011-10-17T13:47:07.570+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>MySQL, phpMyAdmin 3, root без пароля и backup.</title><content type='html'>&lt;span style="font-weight: bold;"&gt;phpMyAdmin не желает принимать авторизацию без пароля.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Правим файл &lt;span style="font-style: italic;"&gt;/usr/share/phpmyadmin/libraries/config.default.php&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff6600; font-style: italic;"&gt;# Строка 227:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff6600; font-style: italic;"&gt;$cfg['Servers'][$i]['nopassword'] = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff6600; font-style: italic;"&gt;# Строка 363&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff6600; font-style: italic;"&gt;$cfg['Servers'][$i]['AllowNoPasswordRoot'] = true;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Забыт пароль root и его надо сменить или убрать вовсе.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Гасим MySQL сервер, например так:&lt;br /&gt;&lt;span style="color: #ff6600; font-style: italic;"&gt;$ sudo /etc/init.d/mysql stop&lt;/span&gt;&lt;br /&gt;Запускаем его без учета привелегий:&lt;br /&gt;&lt;span style="color: #ff6600; font-style: italic;"&gt;$ sudo mysqld --skip-grant-tables&lt;/span&gt;&lt;br /&gt;В консоли mysql вносим необходимые изменения в привелегии:&lt;br /&gt;&lt;span style="color: #ff6600; font-style: italic;"&gt;$ sudo mysql&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff6600; font-style: italic;"&gt;mysql&amp;gt; UPDATE mysql.user SET Password='пароль_или_ничего' WHERE User='root';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff6600; font-style: italic;"&gt;mysql&amp;gt; FLUSH PRIVILEGES;&lt;/span&gt;&lt;br /&gt;Перезапускаем сервер.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 78%; font-style: italic;"&gt;from sontan.name import &lt;a href="http://sontan.name/blog/view/~mysql-and-phpmyadmin-problems"&gt;this&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Создание backup базы данных.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #ff6600; font-style: italic;"&gt;$ mysqldump --all-databases --user=NAME --password=PASS &amp;gt; /home/USER-NAME/sql-dump.sql&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;--all-databases можно заменить на конкретное имя БД.&lt;br /&gt;&lt;br /&gt;Задать кодировку в скрипте:&lt;br /&gt;&lt;span style="color: #ff6600; font-style: italic;"&gt;--default-character-set=charset_name&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Чтобы в коде дампа  была команда установки кодировки:&lt;br /&gt;&lt;span style="color: #ff6600; font-style: italic;"&gt;--set-charset &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;И сожмем результат в gzip:&lt;br /&gt;&lt;span style="color: #ff6600; font-style: italic;"&gt;gzip --best /home/USER-NAME/sql-dump.sql&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Читаем &lt;span style="font-weight: bold;"&gt;man mysqldump&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size: 78%; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-1850317010943317379?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/1850317010943317379/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=1850317010943317379' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1850317010943317379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1850317010943317379'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/08/mysql-phpmyadmin-3-root.html' title='MySQL, phpMyAdmin 3, root без пароля и backup.'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-6440787409286875657</id><published>2009-08-18T11:12:00.003+03:00</published><updated>2009-08-25T13:27:16.257+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Редактируем текст в Firefox через Vim</title><content type='html'>Сразу к делу. Для того, чтобы редактировать тексты в полях форм интернет-страниц, для браузера Firefox есть замечательный плагин "It's all text!". Его настройки позволяют задать в том числе и горячую клавишу, что само по себе прекрасно. Представьте - переходите в поле ввода, чтобы отписаться на форуме или в гостевой, нажимаете сочетание клавиш - и пишете в вашем любимом редакторе, а сохраняя текст тем самым отправляете его в браузер. Красота!&lt;br /&gt;Но что, если вы хотите воспользоваться консольным Vim?&lt;br /&gt;При настройке плагина нужно указать полный путь к файлу редактора. Ну и запустим мы Vim. Ну и будет он где-то в бэкграунде. Неудобно! Нужно завернуть vim в консоль.&lt;br /&gt;Хотел бы я воспользоваться &lt;a href="http://kawaikunee.blogspot.com/2009/07/gnome-terminal.html"&gt;таким&lt;/a&gt; способом, да только параметры запуска плагин не передает как надо. Что, руки вверх?&lt;br /&gt;На помощь к нам спешит скрипт из трех строк. Я накидал его на питоне, но наверняка можно и десятком других способов. Делаем скрипт исполняемым и в настройках плагина указываем путь к нему. Назначаем горячую клавишу (у меня это Alt-W) и радуемся удобству.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;#!/usr/bin/env python&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;import os,sys&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;os.system('gnome-terminal -e "vim %s" ' % sys.argv[1])&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Или на bash:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;gnome-terminal -e "vim \"$*\""&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-6440787409286875657?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/6440787409286875657/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=6440787409286875657' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6440787409286875657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6440787409286875657'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/08/firefox-vim.html' title='Редактируем текст в Firefox через Vim'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-2966395259489014447</id><published>2009-08-12T11:37:00.004+03:00</published><updated>2009-08-12T11:48:24.896+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='сеть'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>SSH через http-proxy</title><content type='html'>Выжимка из &lt;a href="http://greenmice.info/ru/node/33"&gt;этой статьи&lt;/a&gt; для конкретной ситуации.&lt;br /&gt;Имеем: Ubuntu 9.04 и анонимный http-proxy (в моем случае Usergate) для выхода в интернет с работы.&lt;br /&gt;Задача: подключиться по ssh к хостингу на masterhost.&lt;br /&gt;Решение:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$sudo apt-get install corkscrew&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;~/.ssh/config:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0); font-style: italic;"&gt;Host uXXXXX.ssh.masterhost.ru&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0); font-style: italic;"&gt;ProxyCommand corkscrew proxy_ip_address proxy_port %h %p&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Готово.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-2966395259489014447?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/2966395259489014447/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=2966395259489014447' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2966395259489014447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2966395259489014447'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/08/ssh-http-proxy.html' title='SSH через http-proxy'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-7011030993467835079</id><published>2009-08-11T09:43:00.005+03:00</published><updated>2009-08-11T10:19:49.542+03:00</updated><title type='text'>Программа для изучения Библии в Linux: добавлен перевод KJV.</title><content type='html'>Собственно, тема все раскрывает. Теперь в программе есть два перевода - &lt;span style="font-weight: bold;"&gt;русский Синодальный с апокрифами и King James version без апокрифов&lt;/span&gt;.&lt;br /&gt;&lt;a href="http://files.mail.ru/GQ0PHF"&gt;http://files.mail.ru/GQ0PHF&lt;/a&gt;&lt;br /&gt;Особенности:&lt;br /&gt;- поиск английского текста - без учета регистра, русского - с учетом регистра;&lt;br /&gt;- просмотр параллельных мест - по клику на номер стиха;&lt;br /&gt;- выделение текста и клавиша F5 - поиск выделенного фрагмента;&lt;br /&gt;- клик по названию найденного фрагмента - показать весь текст главы;&lt;br /&gt;Есть баг - если смотреть русские тексты апокрифов, потом перейти в английский перевод, закрыть программу и снова запустить - она не откроется, т.к. ищет тексты апокрифов в KJV и не находит. Будет исправлено, пока же просто старайтесь так не делать. В случае чего - удалите файл ~/.Bible.conf и все будет запущено с настройками по умолчанию.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3923yIoruBw/SoEVhlG78EI/AAAAAAAAALQ/85bCoDdAgqM/s1600-h/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-Matthew,+4.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 160px;" src="http://1.bp.blogspot.com/_3923yIoruBw/SoEVhlG78EI/AAAAAAAAALQ/85bCoDdAgqM/s320/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-Matthew,+4.png" alt="" id="BLOGGER_PHOTO_ID_5368595897443414082" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3923yIoruBw/SoEVyHCGS8I/AAAAAAAAALY/rMoG8UV68OY/s1600-h/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-Matthew,+4-1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 160px;" src="http://2.bp.blogspot.com/_3923yIoruBw/SoEVyHCGS8I/AAAAAAAAALY/rMoG8UV68OY/s320/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-Matthew,+4-1.png" alt="" id="BLOGGER_PHOTO_ID_5368596181427833794" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-7011030993467835079?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/7011030993467835079/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=7011030993467835079' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7011030993467835079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7011030993467835079'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/08/linux-kjv.html' title='Программа для изучения Библии в Linux: добавлен перевод KJV.'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3923yIoruBw/SoEVhlG78EI/AAAAAAAAALQ/85bCoDdAgqM/s72-c/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-Matthew,+4.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-9104669046454644782</id><published>2009-08-11T09:08:00.008+03:00</published><updated>2009-08-20T15:15:16.110+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><title type='text'>VIM: как назначить запуск скриптов на горячую клавишу</title><content type='html'>Задача: по нажатию F5 передавать скрипт разным программам, в зависимости от расширения файла (как это реализовано в SciTE).&lt;br /&gt;Вот пара вариантов ее решения. Просто добавим в ~/.vimrc один из этих блоков.&lt;br /&gt;&lt;br /&gt;1) Написание функции:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;function Run()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;let $ext=expand("%:e")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;if $ext=="py"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;       !/usr/bin/env python "%"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;elseif $ext=="php"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;       !/usr/bin/env php "%"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;elseif $ext=="html" | $ext=="mako" | $ext=="htm"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;       !firefox "%"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;endif&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;endfunction&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;map &amp;lt;F5&amp;gt; :call Run()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Здесь мы получаем расширение файла % через модификатор :e, присваиваем его переменной $ext, после чего по этому признаку решаем, что будем делать с файлом. Потом привязываем вызов функции к горячей клавише F5.&lt;br /&gt;&lt;br /&gt;2) Использование автокоманд:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;autocmd BufEnter *.py map &amp;lt;F5&amp;gt; !/usr/bin/env python %&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;autocmd BufLeave *.py unmap &amp;lt;F5&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;autocmd BufEnter *.php map &amp;lt;F5&amp;gt; !/usr/bin/env php %&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;autocmd BufLeave *.php unmap &amp;lt;F5&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь при редактировании скрипта за F5 закреплена команда запуска, а при потере фокуса эта привязка сбрасывается.&lt;br /&gt;&lt;br /&gt;Оба способа имеют право на существование, но я остановился на первом.&lt;br /&gt;&lt;br /&gt;P.S. &lt;a href="http://gist.github.com/171022"&gt;Мой .vimrc&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-9104669046454644782?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/9104669046454644782/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=9104669046454644782' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/9104669046454644782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/9104669046454644782'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/08/vim.html' title='VIM: как назначить запуск скриптов на горячую клавишу'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-2251302339987966634</id><published>2009-07-27T14:29:00.002+03:00</published><updated>2009-07-27T14:33:52.657+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><title type='text'>Aptana и тормоза</title><content type='html'>Краткая заметка для себя.&lt;br /&gt;Устанавливая Aptana, нужно предварительно установить и немного настроить Java:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$sudo update-alternatives --config java&lt;/span&gt;&lt;br /&gt;Выбрать пункт 1 (/usr/lib/jvm/java-6-sun/jre/bin/java)&lt;br /&gt;Иначе будет очень тормозить.&lt;br /&gt;Взято с &lt;a href="http://habrahabr.ru/blogs/ubuntu/25970/"&gt;хабра&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-2251302339987966634?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/2251302339987966634/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=2251302339987966634' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2251302339987966634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2251302339987966634'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/07/aptana.html' title='Aptana и тормоза'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-8637801754698501472</id><published>2009-07-22T11:53:00.008+03:00</published><updated>2009-07-24T10:58:02.937+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Gedit-плагин для фолдинга (folding)</title><content type='html'>Вообще-то Gedit - это не текстовый редактор.  Особенно для программистов. А тем более на Python.&lt;br /&gt;На самом деле это конструктор. Имеющиеся возможности по созданию плагинов делают его эдаким лего - не хватает какой-либо функции - &lt;a href="http://live.gnome.org/Gedit/Plugins"&gt;добавь плагин&lt;/a&gt;. Нет нужного - &lt;a href="http://live.gnome.org/Gedit/PythonPluginHowTo"&gt;напиши сам&lt;/a&gt; и не забудь поделиться с другими. И это хорошо и правильно.&lt;br /&gt;Мне не хватало фолдинга - возможности сворачивать блоки кода для облегчения работы с большими объемами текста. Начало положено!&lt;br /&gt;Что можно: сворачивание выделенного текста и сворачивание по отступам (блоки типа def, if, class и т.п.) по горячим клавишам Alt-Z. Разворачивание по ним-же. Развернуть все блоки - Alt-X&lt;br /&gt;Скачать архив и распаковать файлы в ~/.gnome2/gedit/plugins/&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/gedit-folding/downloads/list"&gt;Скачать&lt;/a&gt;&lt;br /&gt;P.S. Python 2.6, Gedit 2.26.1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-8637801754698501472?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/8637801754698501472/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=8637801754698501472' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8637801754698501472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8637801754698501472'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/07/gedit.html' title='Gedit-плагин для фолдинга (folding)'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-2173941423659950600</id><published>2009-07-20T09:53:00.007+03:00</published><updated>2009-07-20T10:26:36.443+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='железо'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Материнская плата ASUS M3N78 Pro и глюки в Ubuntu</title><content type='html'>Вкратце: произошел казус при попытке установки Linux Mint (Ubuntu 9.04) на компьютер с материнской платой Socket AM2 ASUS M3N78 Pro {AM2, nF8300, DDR2 1066, SATA2 RAID, PCI-E, 8-ch Audio, GBL, HDMI, 1394, ATX}&lt;br /&gt;Подробнее. Установка прошла без проблем, как обычно. На первый взгляд все работает, звук есть, видео есть. Ставлю обновления. Соответственно обновляю драйвер видеокарты (встроенная в материнскую плату GeForce) с 173-го на 180-й. Все, полный затык. Виснет и глючит.&lt;br /&gt;Итоги разборок, огорчений и открытий:&lt;br /&gt;Драйвер 180 из репозитариев слишком стар для этой видеокарты и вызывает шок X.&lt;br /&gt;173 кое-как работает, но некоторые вещи отображает некорректно (окно "Параметры" в GIMP, например).&lt;br /&gt;Как лечится. &lt;span style="font-weight: bold;"&gt;Скачиваем&lt;/span&gt; с сайта &lt;a href="http://www.nvidia.com/Download/index.aspx?lang=en-us"&gt;nVidia&lt;/a&gt; самый свежий драйвер.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3923yIoruBw/SmQYGkpqKcI/AAAAAAAAALI/TmQhoX3b3H8/s1600-h/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-Drivers+-+Download+NVIDIA+Drivers+-+Mozilla+Firefox.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 100px;" src="http://3.bp.blogspot.com/_3923yIoruBw/SmQYGkpqKcI/AAAAAAAAALI/TmQhoX3b3H8/s320/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-Drivers+-+Download+NVIDIA+Drivers+-+Mozilla+Firefox.png" alt="" id="BLOGGER_PHOTO_ID_5360435957674420674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Устанавливаем&lt;/span&gt; его. Переходим в режим консоли (Alt+Ctrl+F1). Логинимся там, и останавливаем гном:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ sudo /etc/init.d/gdm stop&lt;/span&gt;&lt;br /&gt;Находясь в каталоге, куда скачан драйвер, запускаем установку:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ sudo sh NVIDIA-Linux-x86-185.18.14-pkg1.run&lt;/span&gt;&lt;br /&gt;Будут задаваться всякие вопросы, типа прописать ли настройки в x.org - соглашайтесь. После того, как все закончится, перезагрузите машину.&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ sudo reboot&lt;/span&gt;&lt;br /&gt;Теперь все станет работать нормально. Если посмотреть в меню утилиту "Драйверы устройств", то там будет показано что используется старый драйвер, однако&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0); font-style: italic;"&gt;$ nvidia-settings&lt;/span&gt;&lt;br /&gt;скажет совсем другое - используется самый новый драйвер nVidia. И тут наступает &lt;span style="font-weight: bold;"&gt;счастье&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;И напоследок старый unix-совет: &lt;span style="font-weight: bold;"&gt;не сломалось - не чини!&lt;/span&gt; Помните старый анекдот про программиста и его сына, который спросил "А почему солнце каждый день всходит и каждый вечер заходит?"&lt;br /&gt;- Ты проверял?&lt;br /&gt;- Проверял!&lt;br /&gt;- Каждый день работает?&lt;br /&gt;- Каждый день!&lt;br /&gt;- Тогда ничего не трогай, ничего не меняй.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-2173941423659950600?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/2173941423659950600/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=2173941423659950600' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2173941423659950600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2173941423659950600'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/07/asus-m3n78-pro-ubuntu.html' title='Материнская плата ASUS M3N78 Pro и глюки в Ubuntu'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3923yIoruBw/SmQYGkpqKcI/AAAAAAAAALI/TmQhoX3b3H8/s72-c/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-Drivers+-+Download+NVIDIA+Drivers+-+Mozilla+Firefox.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-840792122157101407</id><published>2009-07-09T12:50:00.011+03:00</published><updated>2009-07-14T08:50:46.084+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='консоль'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Новое знакомство со старым другом: gnome-terminal</title><content type='html'>Как всегда, то что под рукой - то хуже всего знаешь. А узнаешь только когда приспичит.&lt;br /&gt;Кому не известна стандартная гномовская консоль gnome-terminal? Разве что заядлому GUI-шнику. Этот инструмент служит верой и правдой уже многие годы, стал привычным и... хорошо знакомым?&lt;br /&gt;А началось все с того, что я решил освоить легендарный VIM. И очень мне хотелось сделать для него ярлычок в панели запуска приложений, чтобы не лезть в меню. Чтобы одним кликом запустилась консоль и в ней сразу же vim.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Путь первый.&lt;/span&gt;&lt;br /&gt;В окне терминала идем в меню "Правка - Настройки профиля - Заголовок и команда - Запускать другую команду вместо моей оболочки". Ставим галочку, вписываем в строку для команды "vim". Теперь при запуске gnome-terminal вместо приглашения shell сразу же будет запущен vim. Что-ж, это уже неплохо.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Путь второй, усовершенствованный.&lt;/span&gt;&lt;br /&gt;В меню "Правка - Профили" создаем новый профиль, назовем его, скажем, "vim", в котором пропишем запуск редактора (см. путь 1). Теперь, чтобы запустить терминал с этим профилем, нужно дать команду:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ gnome-terminal --window-with-profile=vim&lt;/span&gt;&lt;br /&gt;Здорово! А теперь, захотим открыть еще одну вкладку в этом терминале. Угадайте, что в этой вкладке автоматически запустится? Правильно, он, родимый. К пути 1 это тоже относится.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Путь третий, продолжаем расти.&lt;/span&gt;&lt;br /&gt;Не будем плодить профили, если, конечно, вам не нужны особые расцветки в разных окнах консоли. На этот раз мы используем стандартный профиль, но запустим vim так:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ gnome-terminal -e vim&lt;/span&gt;&lt;br /&gt;Кидаем ярлычок на панель запуска приложений и радуемся. Теперь чуть-чуть его доработаем: нам ведь не нужна панель меню вверху? Да и хорошо бы его на весь экран сразу развернуть, и рабочую директорию задать, чтоб удобнее было.&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ gnome-terminal -e vim --hide-menubar --geometry=1280 --working-directory=/home&lt;/span&gt;&lt;br /&gt;Неплохо, верно? Просто указать параметры запуска, и всего делов.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Путь четвертый: совершенство.&lt;/span&gt;&lt;br /&gt;Наконец, мне захотелось, чтобы по одному клику открывалась консоль с двумя вкладками, в одной из которых будет vim, а во второй mc, чтобы удобнее было с файлами управляться. Вот, что у меня получилось:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;$ gnome-terminal \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;--tab-with-profile=Default \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;--working-directory=/home/kawaikunee/Проекты/ \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;--title=MC \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;-e mc \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;--tab-with-profile=Default \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;--working-directory=/home/kawaikunee/Проекты/ \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;--title=VIM \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;-e vim \&lt;br /&gt;--hide-menubar \&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 102, 0);"&gt;--geometry=1280&lt;/span&gt;&lt;br /&gt;Что мне и требовалось. Остается нажать на F11 чтобы ничто не отвлекало от процесса созидания очередного шедевра. Дерзайте!&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);font-size:78%;" &gt;P.S. Помощь в понимании вопроса оказана man gnome-terminal&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-840792122157101407?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/840792122157101407/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=840792122157101407' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/840792122157101407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/840792122157101407'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/07/gnome-terminal.html' title='Новое знакомство со старым другом: gnome-terminal'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-7766369968034431643</id><published>2009-07-06T09:48:00.002+03:00</published><updated>2009-07-06T09:54:58.624+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='консоль'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Linux Mint: долой болтливых животных!</title><content type='html'>У кого установлен Linux Mint по умолчанию, тот при запуске терминала перед строкой приглашения видит некую заумную фразу на английском языке, которую якобы цитирует одино из нескольких видов животных: олень (или лось?), корова, пингвин, и вроде кто-то еще.&lt;br /&gt;Поначалу прикольно, а потом достает. Как избавиться от этого?&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo gedit /etc/bash.bashrc&lt;/span&gt;&lt;br /&gt;Удаляем или комментируем последнюю строчку, примерно такую:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# /usr/bin/mint-fortune&lt;/span&gt;&lt;br /&gt;Больше животные в консоли вас не потревожат.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-7766369968034431643?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/7766369968034431643/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=7766369968034431643' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7766369968034431643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7766369968034431643'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/07/linux-mint.html' title='Linux Mint: долой болтливых животных!'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-8942892958139582586</id><published>2009-07-03T21:10:00.004+03:00</published><updated>2010-08-31T16:47:25.308+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pylons'/><title type='text'>Pylons, несколько ньюансов.</title><content type='html'>Изучаю питоновский веб-фреймворк Pylons. На английском языке полно официальной документации к его компонентам, на русском же бедновато. Так как присутствует несколько самостоятельных кирпичиков, приходится изучать сразу в нескольких направлениях. Хорошо джангистам, у них один DjangoBook на все случаи жизни. А тут и paste, и mako, и sqlalchemy, и webhelpers, и вообще невпроворот всего, и у каждого своя документация. А потом надо по доке Pylons учесть ньюансы их взаимодействия. Иногда мозг вскипает, пока сообразишь как и что. Чтобы не позабыть находок, что были сделаны в процессе исследования, немного о них расскажу.&lt;br /&gt;&lt;br /&gt;Работа с базами данных.&lt;br /&gt;&lt;br /&gt;По умолчанию, в Ubuntu пилоны комплектуются библиотекой sqlalchemy, хотя можно использовать sqlobject или вообще не использовать ничего, кроме стандартного db-api. Я не стал ничего менять - алхимия так алхимия.&lt;br /&gt;Построение модели в &lt;a href="http://pylonshq.com/docs/en/0.9.7/"&gt;докуметации пилонов&lt;/a&gt; описано так: создаем описания таблиц, потом классы, потом привязываем одно к другому и определяем отношения между ними. Сайт &lt;a href="http://www.sqlalchemy.org/docs/05/index.html"&gt;SQLAlchemy&lt;/a&gt; предлагает вариант совмещения этого в одном определении класса. Можно и так и эдак, но вот чтобы из определения таблиц создать реальную схему в базе данных путем "&lt;span style="font-style: italic;"&gt;paster setup-app development.ini&lt;/span&gt;" второй способ не самый лучший. У меня они не создавались ни в какую, только первый пилоновский метод дает ожидаемый результат. Зато если таблицы создавать вручную, мне больше понравился именно способ sqlalchemy, получается компактнее как-то, все в кучке.&lt;br /&gt;&lt;br /&gt;Теперь дальше. Использование SQLite и MySQL проблем не вызвало. Но по работе мне потребовалось коннектить приложение с MSSQL Server 2005, а это уже куда интереснее. Не буду вдаваться в подробности, просто сразу дам совет: используйте ODBC. Модуль python-mssql время от времени падал с ошибкой, а вот pyodbc повел себя молодцом. Поэтому в файле development.ini, раздел [app:main], нужно прописать соединение с MSSQL через ODBC, используя модуль pyodbc:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sqlalchemy.url = mssql://user:password@host\instance/dbname&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sqlalchemy.module_name=pyodbc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Именно так. Кто не понял, что такое instance? Это имя установленного сервера. В 2005 Express версии оно SQLEXPRESS по умолчанию. Остальное должно быть понятно.&lt;br /&gt;Теперь дальше. Угадайте, в какой кодировке отдает данные этот сервер? Правильно, в cp1251. А нам надо в какой? Конечно, unicode. Там же:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sqlalchemy.encoding='cp1251'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sqlalchemy.convert_unicode = true&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В документации по SQLAlchemy, в разделе API Reference есть еще несколько параметров.&lt;br /&gt;&lt;br /&gt;Роутинг.&lt;br /&gt;Тут пара ньюансов. Там, где в Ubuntu &lt;span style="font-style: italic;"&gt;map.connect('',controller="index",action="index")&lt;/span&gt;, в Windows версии '' пришлось заменить на '/', загадочно это конечно, но вот у меня так. Иначе ошибка.&lt;br /&gt;И там, где в Linux:&lt;span style="font-style: italic;"&gt;&lt;br /&gt;map.connect("/:controller/:action/:id")&lt;/span&gt;&lt;br /&gt;в Windows:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;map.connect("/{controller}/{action}/{id}")&lt;/span&gt;.&lt;br /&gt;Тоже какая-то тайна тут кроется...&lt;br /&gt;&lt;br /&gt;Шаблоны Mako. Чудесная штука. Есть две вещи, о которых я должен упомянуть.&lt;br /&gt;Во-первых, это отвратительная реакция редакторов и IDE на теги &amp;lt;%. Об этом я писал &lt;a href="http://kawaikunee.blogspot.com/2009/06/scite-mako-mako-templates-python.html"&gt;чуть раньше&lt;/a&gt;. Кстати, в Windows второй из описанных способов не работает, не знаю почему.&lt;br /&gt;Во-вторых, мне хотелось, чтобы если в шаблоне указанная переменная отсутствует, то показывалась бы пустая строка на ее месте, а не ошибка. Вот два пути:&lt;br /&gt;Этот я нашел где-то в сети, но мне кажется, он не работает как надо, в начале шаблона ставить такой блок:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&amp;lt;%!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; UNDEFINED=''&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;А этот более кардинальный. В файле &lt;span style="font-style: italic;"&gt;/config/environment.py&lt;/span&gt;, в функции &lt;span style="font-style: italic;"&gt;load_environment &lt;/span&gt;добавить:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;config['pylons.strict_c'] = False&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;В версии 1.0 эта строка выгладит как&lt;br /&gt;&lt;i&gt;config['pylons.strict_tmpl_context'] = False&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;И ошибки нехватки переменных в шаблоне как рукой сняло.&lt;br /&gt;Пока что все. У кого есть толковые советы - милости прошу.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-8942892958139582586?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/8942892958139582586/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=8942892958139582586' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8942892958139582586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8942892958139582586'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/07/pylons.html' title='Pylons, несколько ньюансов.'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-4474093430857780018</id><published>2009-06-25T22:43:00.003+03:00</published><updated>2009-06-25T22:56:00.576+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Работа с образами дисков (в том числе PlayStation)</title><content type='html'>Не раз наблюдал, как люди ищут и спрашивают аналоги привычных в Windows программ в мире Linux. Много, много альтернативного софта может предложить пингвиниус, но вот разобраться в этой куче - с полпинка не получается.&lt;br /&gt;Не так давно захотелось поиграть в Final Fanasy VIII, вспомнить молодость ^_^&lt;br /&gt;Диски есть, а вот торчать у телевизора не хочется; да и такие вещи, как играть до опупения (т.е. до ближайшей сохранки) меня не радуют. Чтобы надоело - сохранился и выключил. Все это позволяют эмуляторы PlayStation. Их несколько штук, я использую pSX, он прост в настройках. Но тема не об этом.&lt;br /&gt;Вопрос: как сделать из дисков PS образы для эмулятора? В Windows пользователю потребовалось бы проделать примерно такой путь: найти в сети Alcohol 120%, потом кряк для него, потом создать образы. Мы же так не делаем и никому не советуем.&lt;br /&gt;Наконец к делу: вам нужен &lt;a href="http://www.getdeb.net/app/AcetoneISO"&gt;AcetoneISO&lt;/a&gt;. Он умеет делать чудесные вещи с дисками и образами. Меня выручил как нельзя вовремя, у него есть опция по созданию iso PlayStation (раздел ImageConversion). Спасибо, господа разработчики!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-4474093430857780018?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/4474093430857780018/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=4474093430857780018' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4474093430857780018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4474093430857780018'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/06/playstation.html' title='Работа с образами дисков (в том числе PlayStation)'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-8233192770579173493</id><published>2009-06-24T13:25:00.011+03:00</published><updated>2010-07-30T11:22:10.763+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pylons'/><title type='text'>SciTE и шаблоны mako (mako templates) для Python</title><content type='html'>Несмотря на то, какой гибкий редактор этот SciTE, я обнаружил в нем заковыку, с которой боролся пару дней. Дело в том, что когда используешь его для создания шаблонов на движке mako (используется во фреймворках типа Pylons и сам по себе), то всё после тега типа &lt;a href="http://www.makotemplates.org/docs/documentation.html"&gt;&amp;lt;%include&amp;gt;, &amp;lt;%def&amp;gt; и т.п.&lt;/a&gt; будет подсвечено одним болотным цветом. Редактор считает это началом блока ASP. Цвет видимо подходящий...&lt;br /&gt;Долгие поиски и копания в гугле и файлах .properties были неутешительны. Во-первых, эта проблема не только SciTE (Scintilla), но и других редакторов и IDE, и я нашел только один, который игнорировал эту засаду - обычный gEdit. Во-вторых, несмотря на гибкость, обработчик лексеров все-же изменить правкой конфигов нельзя, это вшито в программу, и придется очень глубоко вникать, изменять, пересобирать...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Вот простой путь, &lt;span style="font-weight: bold;"&gt;для тех, кто хочет использовать SciTE и при этом видеть нормальную подсветку синтаксиса&lt;/span&gt;: после каждого тега mako добавляйте конструкцию:&lt;br /&gt;&lt;span style="color: #ff6600;"&gt;&amp;lt;!--%&amp;gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;Она скажет редактору, что блок ASP закончен, и можно продолжать обрабатывать HTML код. При этом, из-за html-комментариев, закрывающий тег на странице виден не будет.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Второй вариант - более глобальный поначалу, но зато намного упрощающий жизнь потом. Я ковыряю Pylons, поэтому покажу, как это делается там:&lt;br /&gt;В файле /config/environment.py вносим дополнительно:&lt;br /&gt;&lt;br /&gt;def load_environment(global_conf, app_conf):&lt;br /&gt;.......... содержимое функции ..........&lt;br /&gt;tmpl_options['mako.preprocessor']=mako_replase_tag_to_my&lt;br /&gt;def mako_replase_tag_to_my(s):&lt;br /&gt;return s.replace('&amp;lt;mako:','&amp;lt;%').replace('&amp;lt;/mako:','&amp;lt;/%')&lt;br /&gt;&lt;br /&gt;После этого в шаблонах вместо &lt;span style="color: #ff6600;"&gt;&amp;lt;%&lt;/span&gt; пишем &lt;span style="color: #ff6600;"&gt;&amp;lt;mako:&lt;/span&gt;, а вместо &lt;span style="color: #ff6600;"&gt;&amp;lt;/%&lt;/span&gt; пишем &lt;span style="color: #ff6600;"&gt;&amp;lt;/mako:&lt;/span&gt;&lt;br /&gt;Уф. Ну и намучился я с этим. Но Слава Богу!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-8233192770579173493?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/8233192770579173493/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=8233192770579173493' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8233192770579173493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8233192770579173493'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/06/scite-mako-mako-templates-python.html' title='SciTE и шаблоны mako (mako templates) для Python'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-5040270249771391694</id><published>2009-06-23T15:58:00.012+03:00</published><updated>2010-04-22T14:23:53.086+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Библия'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='христианство'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Программа для изучения Библии в Linux. Часть 3.</title><content type='html'>Продолжается работа над программой для работы с текстами Священного Писания под Linux.&lt;br /&gt;На сегодня (26.06.2009) предлагается версия 0.3: &lt;a href="http://files.mail.ru/9A2QKM"&gt;http://files.mail.ru/9A2QKM&lt;/a&gt;&lt;br /&gt;В зависимостях шрифты от MS, чтобы отображалось все, как задумано.&lt;br /&gt;Просмотр текстов, поиск, как обычный так и путем выделения слова и нажатия кнопки с буквой "f". Получения списка параллельных мест при клике мышью на номер стиха в основном окне. Получение текста главы по клику мышью на название книги в поле результатов поиска. Сохранение книги, главы и фразы поиска текущего сеанса. Скриншот в &lt;a href="http://kawaikunee.blogspot.com/2009/05/linux-2.html"&gt;предыдущем посте&lt;/a&gt;.&lt;br /&gt;А вот так выглядит программа на экране моей Nokia N810. Я планирую сделать deb-пакет и для этой планшетки.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_3923yIoruBw/SkEyp0WMaGI/AAAAAAAAAKY/rPC6otzOLII/s1600-h/screenshot-2009-06-23-23-37-30.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5350613526300616802" src="http://3.bp.blogspot.com/_3923yIoruBw/SkEyp0WMaGI/AAAAAAAAAKY/rPC6otzOLII/s320/screenshot-2009-06-23-23-37-30.png" style="cursor: pointer; float: left; height: 192px; margin: 0pt 10px 10px 0pt; width: 320px;" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_3923yIoruBw/SkEyqApqoZI/AAAAAAAAAKg/n8fJGyrCQf4/s1600-h/screenshot-2009-06-23-23-41-07.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5350613529603514770" src="http://2.bp.blogspot.com/_3923yIoruBw/SkEyqApqoZI/AAAAAAAAAKg/n8fJGyrCQf4/s320/screenshot-2009-06-23-23-41-07.png" style="cursor: pointer; float: left; height: 192px; margin: 0pt 10px 10px 0pt; width: 320px;" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3923yIoruBw/SkEyqafi2QI/AAAAAAAAAKo/xfRKDxYpiNo/s1600-h/screenshot-2009-06-23-23-42-26.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5350613536540383490" src="http://3.bp.blogspot.com/_3923yIoruBw/SkEyqafi2QI/AAAAAAAAAKo/xfRKDxYpiNo/s320/screenshot-2009-06-23-23-42-26.png" style="cursor: pointer; float: left; height: 192px; margin: 0pt 10px 10px 0pt; width: 320px;" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-5040270249771391694?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/5040270249771391694/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=5040270249771391694' title='Комментарии: 14'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5040270249771391694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5040270249771391694'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/06/linux.html' title='Программа для изучения Библии в Linux. Часть 3.'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3923yIoruBw/SkEyp0WMaGI/AAAAAAAAAKY/rPC6otzOLII/s72-c/screenshot-2009-06-23-23-37-30.png' height='72' width='72'/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-5549570007700933724</id><published>2009-06-19T17:52:00.001+03:00</published><updated>2009-06-19T17:55:48.803+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><title type='text'>И все-таки SciTE!</title><content type='html'>Некоторое время назад, когда писал о стандартном редакторе файлов Gnome, я упомянул о SciTE. Писал, что сложно настроить человеку, привыкшему к GUI, и с кодировками проблемы... Хотя пользовался им довольно долго. Но польстился на модули и расширения gedit. А недавно на глаза снова попалась информация о SciTE, о настройке и возможностях этой чудесной программы.&lt;br /&gt;Разные люди бывают. Кому-то хочется чтобы установил и стал работать. Кого-то хлебом не корми, а дай только поковыряться в настройках и конфигурационных файлах. SciTE позволяет и то, и другое. И я вернулся.&lt;br /&gt;Прежде всего - он использует Scintilla, тот-же движок, что и небезызвестный Notepad++. Стандартные установки вполне позволяют сразу начать программировать, к примеру, на python. Поддерживает просто массу языков. И для любителей все настраивать - это находка. Когда я читал перевод документации - то понял, что gedit все-таки еще не дорос...&lt;br /&gt;Настоятельно рекомендую! Не поленитесь прочитать:&lt;br /&gt;&lt;a href="http://scite.ruteam.ru/engine/upfiles/mozers/SciTEDoc_rus.html"&gt;Документация SciTE&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-5549570007700933724?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/5549570007700933724/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=5549570007700933724' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5549570007700933724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5549570007700933724'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/06/scite.html' title='И все-таки SciTE!'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-8533558253062588300</id><published>2009-06-18T17:55:00.002+03:00</published><updated>2010-04-22T14:24:21.612+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Библия'/><category scheme='http://www.blogger.com/atom/ns#' term='христианство'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Программа для изучения Библии в Linux. Часть 2.</title><content type='html'>В одном из &lt;a href="http://kawaikunee.blogspot.com/2009/02/linux.html"&gt;предыдущих постов&lt;/a&gt; я упоминал о пишущейся программе для изучения Библии в Linux. Разобравшись с упаковкой вышеупомянутого в deb-пакет, наконец-то создал готовое к употреблению блюдо. Если что-то будет не так - строго не судите, это супер-пупер альфа, и вообще, судить нехорошо. Тестировалось на Ubuntu 8.10 и 9.04.&lt;br /&gt;Вот что мы имеем на начальном этапе: &lt;a href="http://files.mail.ru/45YLQ0"&gt;http://files.mail.ru/45YLQ0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;UP&lt;br /&gt;Этап 2: &lt;a href="http://files.mail.ru/A5XDRT"&gt;http://files.mail.ru/A5XDRT&lt;/a&gt;&lt;br /&gt;Этап 3: &lt;a href="http://files.mail.ru/OP5535"&gt;http://files.mail.ru/OP5535&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_3923yIoruBw/Sj0qRvWDcFI/AAAAAAAAAKQ/6ZurPu90qK8/s1600-h/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5349478416641126482" src="http://1.bp.blogspot.com/_3923yIoruBw/Sj0qRvWDcFI/AAAAAAAAAKQ/6ZurPu90qK8/s320/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA.png" style="cursor: pointer; float: left; height: 256px; margin: 0pt 10px 10px 0pt; width: 320px;" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-8533558253062588300?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/8533558253062588300/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=8533558253062588300' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8533558253062588300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8533558253062588300'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/05/linux-2.html' title='Программа для изучения Библии в Linux. Часть 2.'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3923yIoruBw/Sj0qRvWDcFI/AAAAAAAAAKQ/6ZurPu90qK8/s72-c/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA.png' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-4289970768171128554</id><published>2009-06-14T17:11:00.003+03:00</published><updated>2009-06-14T17:56:09.137+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='сеть'/><title type='text'>Подключение Стрим ТВ. Последовательность действий.</title><content type='html'>В процессе подключения этой услуги от Стрима возникают некоторые вопросы, и все не так очевидно и просто, как хотелось бы. Я опишу последовательность действий и проблемы, с которыми я столкнулся, может быть, поможет хоть кому-нибудь. Когда я искал, подробной инструкции не встретил.&lt;br /&gt;Итак, подключение Стрим ТВ возможно или с вызовом мастера на дом (тогда вам больше ничего не потребуется, только банальные деньги). Кроме того, если вы живете за кольцом, то придется выложить 600 р только за то, что вы неудачно выбрали место жительства. За каждый метр прокладываемого по дому кабеля с вас возьмут 60 р. Итого, в моей ситуации, когда нужно в Зеленоградской квартире провести 25м кабеля в другую комнату, все это выливается в приличную сумму. Вывод: обойдемся своими силами.&lt;br /&gt;В конторе Стрима берем в аренду тв-декодер. Там же есть сетевые кабели, но максимум 15 м. - не мой вариант. Наверняка еще и дорого, но я не спрашивал. Кабель покупаем в компьютерном магазине (в Компстаре нам обжали 25 м витой пары меньше чем за 300 р) или берем у знакомых сисадминов.&lt;br /&gt;Модем должен иметь несколько LAN интерфейсов. У меня - Echolife HG520 с 4-мя. Для подключения телевидения предназначен LAN-2. Итак, барабанная дробь: включаем в него сетевой шнур, тянем-потянем по квартире до тв-декодера, включаем все по инструкции, и видим на экране телевизора шедевр Малевича с надписью "Loading...". Это неправильно, значит, все не так просто...&lt;br /&gt;В чем причина? Дело в том, что Стрим ТВ не позволит вашему модему динамически раздавать IP-адреса, когда он работает в режиме роутера (как было у меня). Поэтому, чтобы телевидение успешно начало работать, выполняем следующие действия.&lt;br /&gt;1) В управлении модемом (в браузере набираем 192.168.1.1, логин и пароль по умолчанию "admin") в разделе "Base - DHCP" Выключаем DHCP (DHCP = None, Submit).&lt;br /&gt;2) В настройках сетевых соединений компьютеров, выходящих в интернет, нужно указать статические IP типа 192.168.1.x, где x  - от 2 до 255. Маска подсети - 255.255.255.0, шлюз - 192.168.1.1,  адреса DNS - 212.188.4.10, 195.34.32.116.&lt;br /&gt;3) Звоним в службу поддержки Стрим ТВ, и сообщаем о том, что подключили услугу. Они производят шаманские манипуляции и увеличивают скорость, чтобы телевидение не тормозило.&lt;br /&gt;После этого все должно заработать как часы. Жаль, что этого не указывают сразу в какой-нибудь прилагающейся документации или в личном кабинете, и нужно сначала устроить допросы с пристрастием сотрудников службы поддержки Стрим.&lt;br /&gt;&lt;br /&gt;P.S. Были и еще проблемы, и звонил я много раз, но это уже чисто мои сложности, из которых я вынес один вывод: телефонный шнур от щитка до модема ДОЛЖЕН БЫТЬ ИСПРАВЕН, и всякие там кое-как скрученные лапшовые проводочки могут привести к значительному снижению стабильности работы как интернета, так и телевидения. Мои регулярные обрывы соединения исчезли без следа, когда я уладил вопрос с еле-держащимися скруточками за шкафом.&lt;br /&gt;Удачного ТВ!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-4289970768171128554?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/4289970768171128554/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=4289970768171128554' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4289970768171128554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4289970768171128554'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/06/blog-post.html' title='Подключение Стрим ТВ. Последовательность действий.'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-3055404799325032491</id><published>2009-05-18T22:31:00.004+03:00</published><updated>2009-09-16T12:26:39.811+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Python и аутентификация в Windows-домене</title><content type='html'>Собственно, задача: компьютер в Windows-домене, на нем есть некий сервер, при обращении к которому он должен определить, зарегистрирован ли представившийся пользователь в домене. Для этого нужно иметь определенный инструментарий, и у нас он есть. Я использую ActivePython 2.6 от ActiveState, там всё комплекте.&lt;br /&gt;[ файл win32test.py ]&lt;br /&gt;-----------------------------------------------------------&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;import win32security&lt;br /&gt;import win32net&lt;br /&gt;import win32netcon&lt;br /&gt;&lt;br /&gt;def authentication(user, password, domain):&lt;br /&gt;  """&lt;br /&gt;  Аутентифицировать пользователя в домене&lt;br /&gt;  user - Имя пользователя в домене&lt;br /&gt;  password - Пароль пользователя&lt;br /&gt;  domain - Имя домена&lt;br /&gt;  """&lt;br /&gt;  try:&lt;br /&gt;      htoken = win32security.LogonUser(&lt;br /&gt;          user, domain, password, win32security.LOGON32_LOGON_NETWORK,&lt;br /&gt;          win32security.LOGON32_PROVIDER_DEFAULT&lt;br /&gt;      )&lt;br /&gt;      if htoken:&lt;br /&gt;          return u"Пользователь %s успешно зарегистрирован в домене %s " % (user,domain)&lt;br /&gt;  except win32security.error, err:&lt;br /&gt;      return u"Номер ошибки: %i\nОшибку вернул %s\nОшибка: %s" % (err[0], err[1], err[2].decode('cp1251'))&lt;br /&gt;  except:&lt;br /&gt;      return u"Пользователю %s не удалось зарегистироваться в домене %s " % (user,domain)&lt;br /&gt;  &lt;br /&gt;print authentication("Kawaikunee","secretpassword","DOMEN")&lt;br /&gt;&lt;br /&gt;def existuser(user, server, verbose=0):&lt;br /&gt;  """&lt;br /&gt;  Проверить существование пользователя в домене.&lt;br /&gt;  user  - Имя пользователя в домене&lt;br /&gt;  server   - Имя Domain Controller NetBIOS. Можно указать DNS&lt;br /&gt;  verbose - Флаг, печатать ли информационное сообщение&lt;br /&gt;  """&lt;br /&gt;&lt;br /&gt;  try:&lt;br /&gt;      users = win32net.NetUserEnum(&lt;br /&gt;          server, 0,&lt;br /&gt;          win32netcon.FILTER_NORMAL_ACCOUNT, 0&lt;br /&gt;      )&lt;br /&gt;      """&lt;br /&gt;      users[0] - список словарей пользователей домена в Unicode, в формате&lt;br /&gt;      [{'name', u'Username1'},{'name', u'Username2'},{'name', u'Username3'}]&lt;br /&gt;      users[1] - их общее количество&lt;br /&gt;      """&lt;br /&gt;      print users[0]&lt;br /&gt;  except win32net.error, err:&lt;br /&gt;      if verbose:&lt;br /&gt;          return u"Номер ошибки: %i\nОшибку вернул %s\nОшибка: %s" % (err[0], err[1], err[2].decode('cp1251'))&lt;br /&gt;      else:&lt;br /&gt;          return None&lt;br /&gt;  for userinfo in users[0]:&lt;br /&gt;      if user.decode('utf8').lower() == userinfo['name'].lower():&lt;br /&gt;          return u"Такой пользователь существует: %s" % user&lt;br /&gt;print existuser("Kawaikunee","192.168.1.1",1)&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;-----------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Вот такой пример кода. Программирование - это творчество, и оно сродни поэзии. Вот так бы это описал, возможно, какой-нибудь древнерусский сказитель:&lt;br /&gt;&lt;br /&gt;Ой ты гой еси, server-батюшка,&lt;br /&gt;Ты скажи-расскажи, не утаивай!&lt;br /&gt;Есть ли в списках твоих добрый молодец,&lt;br /&gt;Что по логину user захаживал?&lt;br /&gt;&lt;br /&gt;Отвечал скрипту server ласково:&lt;br /&gt;Посмотри-ка милок, весь мой списочек&lt;br /&gt;Молодыми да острыми глазками.&lt;br /&gt;Да и выбери, кто тебе надобен.&lt;br /&gt;&lt;br /&gt;Ну а коли ты в гости надумаешь,&lt;br /&gt;То password отведет стражу лютую.&lt;br /&gt;Заходи скрипт-python, в светлу горницу,&lt;br /&gt;Будем мы разговор разговаривать.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-3055404799325032491?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/3055404799325032491/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=3055404799325032491' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3055404799325032491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3055404799325032491'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/05/python-windows.html' title='Python и аутентификация в Windows-домене'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-1960500401022457516</id><published>2009-05-07T16:06:00.003+03:00</published><updated>2009-05-07T16:36:59.731+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><title type='text'>Открываю Gedit</title><content type='html'>Кто из программистов не искал для себя идеальный редактор кода? А сколько их развелось на свете! Платных и бесплатных, IDE и простых, под разные OS, просто глаза разбегаются.&lt;br /&gt;И я не избег этой участи. В итоге из IDE первое место в моем багаже прочно заняла &lt;span style="font-weight: bold;"&gt;Aptana&lt;/span&gt;, ну а из простых...&lt;br /&gt;Кто-то пользуется &lt;span style="font-weight: bold;"&gt;vi&lt;/span&gt; или &lt;span style="font-weight: bold;"&gt;emacs&lt;/span&gt; и вполне доволен. А некоторые привыкли в GUI-редакторам и отучить их уже сложно. Вот возьмем, к примеру, меня. Однажды я набрел на &lt;span style="font-weight: bold;"&gt;SciTE&lt;/span&gt;, и был впечатлен: писать в нем в целом неплохо, но вот настройки - это надо знать, что менять в конфигурационых файлах, как прописывать. С кодировкой cp1251 вообще практически никак, а иногда без нее не обойтись. Пользовался им за простоту и легкость, но самое прекрасное - это кнопка F5, по которой выполняется код открытого документа и выводится результат.&lt;br /&gt;А кто из пользователей Gnome не знает такого замечательного приложения, как "Текстовый редактор" &lt;span style="font-weight: bold;"&gt;gedit&lt;/span&gt;? Эта программа проста и незатейлива, годится лишь чтобы изредка поправить конфигурационный файл... так кажется на первый взгляд.&lt;br /&gt;Вся прелесть кроется в его плагинах. Среди них есть поистине шедевры. С их помощью можно легко реализовать клавишу F5 из &lt;span style="font-weight: bold;"&gt;SciTE&lt;/span&gt; - и это только поверхность айсберга. Установите пакет gedit-plugins (входит в стандартный репозитарий Ubuntu, но по умолчанию не установлен) - и посмотрите в &lt;span style="font-weight: bold;"&gt;Gedit&lt;/span&gt; "&lt;span style="font-style: italic;"&gt;Правка - Параметры - Модули&lt;/span&gt;". Обширное поле для деятельности! О модулях можно прочесть, если нажать в этой вкладке кнопку "Справка", поверьте, это того стоит. Наиболее впечатляющими выглядят "&lt;span style="font-style: italic;"&gt;Фрагменты текста&lt;/span&gt;" и "&lt;span style="font-style: italic;"&gt;Внешние инструменты&lt;/span&gt;". Да и в "&lt;span style="font-style: italic;"&gt;Правка - Параметры&lt;/span&gt;" тоже можно пройтись по чекбоксам, и сделать среду еще более приятной для работы.&lt;br /&gt;Нужны пояснения и подробности? Если будет интересно - напишу еще, но думаю, что вы разберетесь и сами. Поверьте, ничего сложного - творите с удовольствием!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-1960500401022457516?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/1960500401022457516/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=1960500401022457516' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1960500401022457516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/1960500401022457516'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/05/gedit.html' title='Открываю Gedit'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-4150156705649023358</id><published>2009-05-05T10:48:00.007+03:00</published><updated>2009-05-05T11:19:26.359+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='консоль'/><title type='text'>Чистка файлов на хостинге от сторонних включений с помощью связки grep+sed</title><content type='html'>Вот уже который раз на хостинге наблюдаю работу некоего зловреда, который включает в файлы сайтов, в названии которых есть слова "main", "index" и "default" сторонний код, подгружающий на компьютеры посетителей зараженные файлы с использованием iframe. Пользователей Linux это не касается, поэтому они могут спать спокойно, для них этот код означает просто очень долгую загрузку страницы, связанную с загрузкой в кэш зараженного файла. Зато пользователи Windows, особенно бороздящие просторы интернета с помощью (если это так можно назвать) IE, подвергаются атаке по полной программе. Я об этой заразе узнал от такого пользователя. Много файлов, много строк, поди найди там всё!&lt;br /&gt;Приступим к решению!&lt;br /&gt;1) Подключаемся к серверу по протоколу ssh и получаем командную строку.&lt;br /&gt;2) Проверяем наличие бяк в файлах php и html, получив список файлов с внедренным кодом (одной строкой):&lt;br /&gt;find . -name '*.php' -o -name '*.html' -exec grep -l -E '^&amp;lt;iframe src=.+&amp;gt;&amp;lt;/iframe&amp;gt;$' '{}' \;&lt;br /&gt;3) Массово заменим эти включения на пустоту (одной строкой):&lt;br /&gt;find . -name '*.php' -o -name '*.html' -print0 | xargs  -0 sed -i -e 's/^&amp;lt;iframe src=.*&amp;gt;&amp;lt;\/iframe&amp;gt;$//g'&lt;br /&gt;Конечно, это все временное решение, но хотя бы до следующей атаки пользователи не будут страдать.&lt;br /&gt;Если у кого-то на хостинге случилось подобное, расскажите как боролись!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-4150156705649023358?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/4150156705649023358/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=4150156705649023358' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4150156705649023358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4150156705649023358'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/05/grepsed.html' title='Чистка файлов на хостинге от сторонних включений с помощью связки grep+sed'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-840459372133133641</id><published>2009-04-29T13:48:00.003+03:00</published><updated>2009-04-29T14:04:20.266+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='acer aspire one'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 9.04 на Acer Aspire One</title><content type='html'>Установил с USB, который создал утилитой, идущей в комплекте. То есть сначала установил на дескотоп, посмотрел-повертел, остался доволен. Потом создал флешку, и - Ubuntu 9.04 встала на мой нетбук как влитая, все заработало из коробки, никаких бубнов не потребовалось. Только кардридер не захотел карту читать, пока я не загрузил машинку с воткнутой картой памяти. И жаль, что раздел home у меня был не на отдельном диске, пришлось бэкапить и потом восстанавливать. Теперь-то я сделал по умному. Пара моментов, которым я удивился:&lt;br /&gt;1) Не работает Ctrl-Alt-Backspace, разработчики отключили это сочетание клавиш, непонятно почему. Вернуть, думаю, труда не составит. Забиндить на эти клавиши команду, к примеру "/etc/init.d/gdm restart".&lt;br /&gt;2) При установке на десктоп был предложен вариант автологина первого пользователя, т.е. при включении гном грузится сразу автоматически под юзером. Когда я устанавливал с флешки - такого варианта мне не предложили. Странно, а хотелось бы.&lt;br /&gt;Из прочитанных мной отзывов стало ясно, что если обновлять систему с предыдущих версий - лезут глюки, а если ставить начисто - то работает лучше и быстрее чем 8.10. Что, впрочем, и верно.&lt;br /&gt;P.S. Также по умолчанию стоит Python 2.6, а не 2.5, что тоже порадовало.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-840459372133133641?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/840459372133133641/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=840459372133133641' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/840459372133133641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/840459372133133641'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/04/ubuntu-904-acer-aspire-one.html' title='Ubuntu 9.04 на Acer Aspire One'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-2756179694300660631</id><published>2009-03-25T14:51:00.004+02:00</published><updated>2009-04-10T13:36:40.773+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='iis'/><title type='text'>IIS и Python</title><content type='html'>Чтобы подружить IIS (у меня 5 версия, но думаю, и на поздних всё также) и Python, и заставить файлы с расширением .py обрабатываться интерпретатором, нужно:&lt;br /&gt;1) Если еще не создали, то создать виртуальный каталог, например test&lt;br /&gt;2) Открыть свойства виртуального каталога и перейти во вкладку "Виртуальный каталог".&lt;br /&gt;3) В пункте "Разрешен запуск" должен быть разрешен запуск сценариев.&lt;br /&gt;4) Правее этого пункта жмем на кнопку "Настройка". Там нажимаем "Добавить".&lt;br /&gt;5) В графе "Исполняемый файл" должно быть примерно так:&lt;br /&gt;"C:\Python26\python.exe" -u "%s"&lt;br /&gt;6) Расширение установим как .py&lt;br /&gt;7) Пусть галочки "Обработчик сценариев" и "Проверка наличия файла" будут включены.&lt;br /&gt;8) Теперь осталось только нажать ОК.&lt;br /&gt;&lt;br /&gt;Не забудьте, что питоновый файл должен начинаться с того, что указывается правильный заголовок. Примерно так:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[ файл python.py ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# -*- coding: utf-8 -*- &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;print 'Status: 200 OK' &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;print 'Content-type: text/html; charset=utf-8;' &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;print&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;print """&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Работает!&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;"""&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь, если в адресной строке браузера набрать http://localhost/test/python.py то мы увидим слово "Работает!".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-2756179694300660631?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/2756179694300660631/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=2756179694300660631' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2756179694300660631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2756179694300660631'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/03/iis-python.html' title='IIS и Python'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-6048084655037775805</id><published>2009-03-24T15:24:00.005+02:00</published><updated>2009-03-24T16:26:34.448+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='консоль'/><title type='text'>Полезности</title><content type='html'>В этой статье я буду собирать всякого рода полезности при работе в консоли, которые мне будут попадаться на глаза. Если захочется сказать "А, я знаю откуда ты это взял!" - не надо. Конечно же не сам придумал.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Вход более одного пользователя в систему с графическим интерфейсом&lt;/span&gt;&lt;br /&gt;Для начала переходим в другую консоль, чем стандартная седьмая: Ctrl-Alt-F(1-6). Водим логин и пароль. Теперь мы вошли как второй пользователь в системе. Переходить в другие консоли можно c помощью сочетания клавиш Alt-F(1-7) Чтобы получить графическую оболочку, введем команду:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;startx -- :1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Дефрагментация базы данных MySQL&lt;/span&gt;&lt;br /&gt;В ходе изменений в структуре БД и информации в ней происходит фрагментирование данных. Дефрагментация выполняется командой:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;mysqlcheck -o имя_базы_данных -u пользователь_бд -p пароль_бд&lt;/span&gt;&lt;br /&gt;И вообще &lt;span style="font-family:courier new;"&gt;man mysqlcheck&lt;/span&gt; расскажет еще много интересного.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Поиск в мануалах&lt;/span&gt;&lt;br /&gt;Иногда знаешь что надо найти, но не знаешь, где искать. Команда man позволяет воплотиться такой дикой мечте:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;man -k ключевое_слово&lt;/span&gt;&lt;br /&gt;Ну и стандартный метод поиска в открытом мануале - используем клавишу / и сразу за ней - искомое слово, Enter. Чтобы найти следующее вхождение этого-же слова, жмем клавишу n.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Узнать, какой процесс использует примонтированный носитель&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;lsof +D /media/имя_устройства&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Закрыть все приложения, использующие примонтированный носитель&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;fuser -km /media/имя_устройства&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Массовое конвертирование кодировки текста&lt;/span&gt;&lt;br /&gt;Скорее всего, вам известно, как весело в Windows переводить текстовые файлы из одной кодировки в другую. Открыл в редакторе, сохранить как, повторять до изнеможения.&lt;br /&gt;Linux открыл для меня прелесть утилиты enca. Поэтому&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo apt-get enca&lt;/span&gt;&lt;br /&gt;После этого текст в ненашей (не utf-8) кодировке приводится в норму так:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;enconv *.txt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Массовая замена текста в файлах&lt;/span&gt;&lt;br /&gt;Заменить один текст на другой в файлах указанного каталога (включая подкаталоги):&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;find . -name '*.txt' -print0 | xargs -0 sed -i -e 's/это_заменить/на_это/g'&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Многое взято &lt;a href="http://habrahabr.ru/blogs/linux/55121/"&gt;отсюда&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-6048084655037775805?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/6048084655037775805/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=6048084655037775805' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6048084655037775805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6048084655037775805'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/03/blog-post_24.html' title='Полезности'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-4941898781681729457</id><published>2009-03-17T09:02:00.008+02:00</published><updated>2009-03-18T08:49:56.384+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='сеть'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Python и удаленный Microsoft SQL Server 2005</title><content type='html'>Для работы из Python с удаленным сервером MSSQL 2005 понадобится провести некоторую подготовку на обоих концах этого тандема.&lt;br /&gt;&lt;br /&gt;На стороне сервера баз данных делаем так:&lt;br /&gt;Пуск - Все программы - Microsoft SQL Server 2005 - Средства настройки - Настройка контактной зоны SQL Server. Далее внизу ссылка "Настройка контактной зоны для служб и соединений". В левой панели в первой вкладке видим такие параметры, как "Database Engine", а в нем "Служба" (ставим "Тип запуска" = "Авто" и "Состояние службы" = "Запущена") и "Удаленные соединения" (ставим "Локальные и удаленные соединения").&lt;br /&gt;Ниже Database Engine есть параметр "SQL Server Browser" - "Служба" (ставим тип запуска - "Авто" и состояние службы - "Запущена").&lt;br /&gt;При запуске "Среды SQL Server Management Studio Express", в окошке "Соединение с сервером" будет поле "Имя сервера". Оно выглядит как ИМЯ_КОМПЬЮТЕРА\ИМЯ_СЕРВЕРА_БД. Запомним эти данные, они пригодятся.&lt;br /&gt;&lt;br /&gt;На стороне нашего компьютера с Ubuntu:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo apt-get install python-pymssql&lt;/span&gt;&lt;br /&gt;Вот и всё. Теперь краткий пример работы с БД:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#!/usr/bin/env python&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Импортируем библиотеку для работы с MSSQL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;import pymssql&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Соединение с БД&lt;/span&gt;.  Если вы не в том-же домене, что и сервер БД, то вместо&lt;br /&gt;# ИМЯ_КОМПЬЮТЕРА впишите его IP.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;con = pymssql.connect(host='ИМЯ_КОМПЬЮТЕРА\ИМЯ_СЕРВЕРА_БД', user='ПОЛЬЗОВАТЕЛЬ_БД', password='ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ_БД', database='ИМЯ_БД')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Создаем курсор для работы с соединением&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cur = con.cursor()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Выполняем запрос&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cur.execute("SELECT somefield FROM dbo.sometable;")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Прокручиваем все записи из запроса&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;for i in cur.fetchall():&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# Данные в БД в кодировке cp1251, поэтому сначала переводим их в  юникод&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;i=unicode(i[0],'windows-1251')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# А затем напечатаем их в utf-8 кодировке&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;print "%s" % i.encode('utf-8')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# Подтверждаем транзакцию и закрываем соединение&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;con.commit()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;con.close()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;По сравнению с тем, как организовать такое соединение из php (через odbc, используя freetds) - просто праздник какой-то!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-4941898781681729457?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/4941898781681729457/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=4941898781681729457' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4941898781681729457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4941898781681729457'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/03/python-microsoft-sql-server-2005.html' title='Python и удаленный Microsoft SQL Server 2005'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-3031140327828624970</id><published>2009-03-03T12:23:00.004+02:00</published><updated>2009-03-03T12:39:14.690+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gimp'/><title type='text'>Рисуем почтовую марку в GIMP</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3923yIoruBw/Sa0IvxZjYYI/AAAAAAAAAJY/ej5UIdaCI4E/s1600-h/%D0%9C%D0%B0%D1%80%D0%BA%D0%B0.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 298px; height: 320px;" src="http://2.bp.blogspot.com/_3923yIoruBw/Sa0IvxZjYYI/AAAAAAAAAJY/ej5UIdaCI4E/s320/%D0%9C%D0%B0%D1%80%D0%BA%D0%B0.png" alt="" id="BLOGGER_PHOTO_ID_5308909152547070338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Заметка, скорее всего, только для себя. Потребовалось для стенгазеты на 8 марта нарисовать большую марку с фотографией весны на ней. Что делаем:&lt;br /&gt;1) Доводим саму картинку до нужной кондиции (размер, цвета, яркость и т.п.).&lt;br /&gt;2) Идем в меню Изображение - Размер холста и увеличиваем его процентов на 10-15, после чего жмем на кнопку "Центр", чтобы наша картинка получилось как бы в белой неширокой рамке.&lt;br /&gt;3) Потом берем инструмент "Ластик", обычный круглый, и примеряем его к краю, чтобы половинка ластика задала как-бы половину ответстия линии отрыва марки (надеюсь вы понимаете, о чем я).&lt;br /&gt;4) После этого чуть ниже палитры кистей находим параметр "Интервал" и увеличиваем его, скажем, до 150, чтобы линия, рисуемая ластиком, была не сплошная, а пунктирная.&lt;br /&gt;5) Ставим край ластика на белую рамку вокруг рисунка, где начнется линия отрыва марки, делаем первый клик. Потом, нажав Shift поставим конечную точку. И так 4 раза по краям нашей марки.&lt;br /&gt;В завершении, можно добавить легкую тень вокруг марки, чтобы добавить объема (Фильтры - Свет и тень - Отбрасываемая тень). Смещение по X и Y пусть будет нулевым. Поэкспериментируйте!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-3031140327828624970?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/3031140327828624970/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=3031140327828624970' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3031140327828624970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3031140327828624970'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/03/gimp.html' title='Рисуем почтовую марку в GIMP'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3923yIoruBw/Sa0IvxZjYYI/AAAAAAAAAJY/ej5UIdaCI4E/s72-c/%D0%9C%D0%B0%D1%80%D0%BA%D0%B0.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-6729339818951965764</id><published>2009-03-02T09:02:00.004+02:00</published><updated>2009-03-02T09:07:06.401+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='acer aspire one'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Несколько решений, пригодившихся мне в последнее время.</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Prism через прокси-сервер.&lt;/span&gt;&lt;br /&gt;Находим в файле /usr/share/xulrunner/greprefs/all.js строки с настройками network.proxy. Мне понадобилось изменить 5 строк после 720-й.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;pref("network.proxy.type",                  1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;pref("network.proxy.ftp",        "IP_PROXY_SERVER");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;pref("network.proxy.ftp_port",   PORT_PROXY_SERVER);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;pref("network.proxy.http",       "IP_PROXY_SERVER");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;pref("network.proxy.http_port",  PORT_PROXY_SERVER);&lt;/span&gt;&lt;br /&gt;Меняем IP_PROXY_SERVER и PORT_PROXY_SERVER соответственно на свои данные.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Midnight Commander не сохраняет настройки.&lt;/span&gt;&lt;br /&gt;Обнаружил, что файл ~/.mc/ini не позволяет сохранять данные - нет прав. Что-ж, поменяем их так, чтоб наверняка:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo chown ваш_логин ~/.mc/ini&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo chgrp ваш_логин ~/.mc/ini&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo chmod 664 ~/.mc/ini&lt;/span&gt;&lt;br /&gt;Теперь все будет в порядке.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Эмулятор PlayStation pSX на Acer Aspire One (Ubuntu 8.10).&lt;/span&gt;&lt;br /&gt;Возникают проблемы со звуком. Сначала он вообще не запускается и пишет сообщение об ошибке. Решается отключением pulseaudio:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo /etc/init.d/pulseaudio stop&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;killall pulseaudio&lt;/span&gt;&lt;br /&gt;После этого начинает работать но страшно дергается - терпеть дольше 10 секунд невозможно. Выдает в консоли что-то вроде sound: underrun. Решается изменением параметра Latency в ~/.pSX/psx.ini, секция [Sound], строка 167. Значения 128 достаточно для корректно работающего звука. Вообще этот эмулятор чрезвычайно простой в настройке, есть русский язык, сохранение по горячей клавише иногда очень кстати.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-6729339818951965764?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/6729339818951965764/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=6729339818951965764' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6729339818951965764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6729339818951965764'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/03/blog-post.html' title='Несколько решений, пригодившихся мне в последнее время.'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-5258938093687959014</id><published>2009-02-26T16:22:00.006+02:00</published><updated>2010-04-22T14:25:41.989+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='Библия'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='христианство'/><title type='text'>Программа для изучения Библии в Linux</title><content type='html'>Наверняка каждый верующий человек, имеющий в хозяйстве компьютер, так или иначе пользовался различными приложениями христианской тематики. Для работающих в Windows существует даже некоторый выбор. Я использовал долгое время &lt;a href="http://jesuschrist.ru/software/"&gt;BibleQuote&lt;/a&gt; ("Цитата из Библии") Тимофея Ха.&lt;br /&gt;Для русскоязычных линуксоидов же дело обстоит несколько хуже. Тут, насколько я знаю, всего пару вариантов: или запускать что-то из-под wine (ту же BibleQuote например, вроде работает нормально), или устанавливать GnomeSword(Gnome)/BibleTime(KDE). В GS есть модули с русскими текстами, но они с ошибками, некоторые слова сливаются в одно... Нехорошо. В BT - не знаю, не видел, т.к. gnomeшник.&lt;br /&gt;Итак, принято решение: объединить нормальный перевод текстов из Цитаты и GTK+ и создать еще одно приложение для изучения Библии с возможностями, которые посчитаю полезными. Тексты будут храниться в SQLite, программа пишется на Python, интерфейс рисуется в Glade.&lt;br /&gt;Пока примитивно, но основные функции уже есть: выбор, чтение, поиск, отделение ВЗ и НЗ, отключение Апокрифов.&lt;br /&gt;Кому надо - пишите в комменты или в личку.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-5258938093687959014?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/5258938093687959014/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=5258938093687959014' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5258938093687959014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5258938093687959014'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/02/linux.html' title='Программа для изучения Библии в Linux'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-4467730667798846504</id><published>2009-02-16T09:14:00.001+02:00</published><updated>2009-02-16T09:15:47.678+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='сеть'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Монтирование папки Windows удаленного компьютера</title><content type='html'>Сегодня увидел, что все еще есть люди, которые этого не знают. Впрочем, я тоже не знал, пока не докопался. Мало ли, у кого-то карма не позволяет нагуглить эту информацию, так пусть ее будет побольше!&lt;br /&gt;&lt;br /&gt;Шаг 1. Создаем папку, куда будем монтировать удаленный каталог, пусть это будет /media/nfs:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;sudo mkdir /media/nfs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Шаг 2. Устанавливаем поддержку samba-файловых систем&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;sudo apt-get install smbfs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Шаг 3. Пишем вот такую команду (или делаем алиас в файле ~/.bashrc):&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;sudo mount -t smbfs //192.168.0.2/ShereFolder /media/nfs -o username=UserName/DomenName%Password,iocharset=utf8,rw,file_mode=0777,dir_mode=0777&lt;/span&gt;&lt;br /&gt;где меняем 192.168.0.2, ShereFolder, UserName, DomenName, Password на свои.&lt;br /&gt;&lt;br /&gt;И всё. На рабочем столе появится ярлык нового диска. Если вы администратор на удаленной машине с Windows, то можно подключить и не расшаренные папки, а сразу диск, например //192.168.0.2/d$. Очень удобно!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-4467730667798846504?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/4467730667798846504/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=4467730667798846504' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4467730667798846504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4467730667798846504'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/02/windows.html' title='Монтирование папки Windows удаленного компьютера'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-8001280425055730014</id><published>2009-02-12T11:35:00.006+02:00</published><updated>2009-02-18T12:01:20.579+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Виртуальный компьютер: Легко! Быстро! QEMU!</title><content type='html'>Расскажу немного об этом замечательном эмуляторе. При желании в интернете и man qemu можно найти намного более полную информацию, но мне хочется поделиться "быстрым стартом". Вычитал в LinuxFormat 2006 года и сделал некоторые добавления.&lt;br /&gt;&lt;br /&gt;Установка QEMU и его ускорителей:&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;sudo apt-get install qemu kqemu-common kqemu-source&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Создание образа для жесткого диска размером 5 гигабайт (пусть это будет ~/newos):&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;qemu-img create -f qcow2 newos 5G&lt;/span&gt;&lt;br /&gt;ВНИМАНИЕ!&lt;br /&gt;В разных источниках предлагают также вариант создания через dd:&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;dd if=/dev/zero of=~/newos count=5G&lt;br /&gt;&lt;/span&gt;Я пробовал использовать дважды, и оба раза он поглощал все свободное место на /home.&lt;br /&gt;Кто не знает, в чем дело, лучше не рисковать, и использовать qemu-img.&lt;span style="font-family:Courier New;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Запуск и установка ОС с CD:&lt;br /&gt;Вставляем диск с операционной системой. Далее&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;sudo qemu -cdrom /dev/cdrom -hda ~/newos -boot d&lt;/span&gt;&lt;br /&gt;(-boot d - для того, чтобы загрузочным диском 1 очереди стал cdrom. Возможны варианты - "c" - жесткий диск, "a" - с флоппи, "n" с сетевого устройства)&lt;br /&gt;Устанавливаем систему как обычно, вы это не раз уже делали.&lt;br /&gt;&lt;br /&gt;Запускаем виртуальную машину, от сердца отрываем ей аж 256 мб оперативной памяти, и указываем брать время из нашей реальной машины:&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;qemu -m 256 -hda ~/newos -localtime&lt;/span&gt;&lt;br /&gt;По умолчанию будет дано 128 мегабайт оперативки - что маловато. Также так просто драйверы kqemu не будут работать, и вы получите вот такое сообщение:&lt;br /&gt;"Could not open '/dev/kqemu' - QEMU acceleration layer not activated: No such file or directory"&lt;br /&gt;Избежать ошибки можно либо запуская qemu от имени root, либо дав файлу /dev/kqemu права на чтение для всех.&lt;br /&gt;&lt;br /&gt;Сохраняем состояние загруженной ОС:&lt;br /&gt;Переходим в консоль QEMU сочетанием клавиш Ctrl+Alt+2 и пишем&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;savevm /newos.state&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Загрузка сохраненного состояния также из qemu-консоли&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;loadvm /newos.state&lt;/span&gt;&lt;br /&gt;Выход из консоли - Ctrl+Alt+1&lt;br /&gt;&lt;br /&gt;Можно начинать эксперименты над разнами дистрибутивами, не ломая свое настроенное хозяйство.&lt;br /&gt;Мммм.. Ну да, есть конечно еще VirtualBox и VMWare, и кто-то будет их отстаивать. Не стану спорить. Но лично мне по душе простота QEMU.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-8001280425055730014?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/8001280425055730014/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=8001280425055730014' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8001280425055730014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8001280425055730014'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/02/qemu.html' title='Виртуальный компьютер: Легко! Быстро! QEMU!'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-2903160131145076612</id><published>2009-02-04T11:58:00.001+02:00</published><updated>2009-03-13T09:34:45.979+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='видео'/><category scheme='http://www.blogger.com/atom/ns#' term='mencoder'/><category scheme='http://www.blogger.com/atom/ns#' term='mkv'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Кодирование видео: mencoder и поиск совершенства</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Продолжая исследовать вопрос кодирования видео никак не могу найти универсальный вариант, чтобы написать скрипт конвертирования для Nokia N810 раз и навсегда. AVI - одним методом, MP4 другим, MKV - вообще третьим. То изображение жужжит как ненастроенный телевизор, то звук не совпадает с видео, то картинка бешено мчится вперед... Хотел все сделать одной командой для mencoder с набором параметров, но в итоге отказался от этого по ряду причин. И вот что решил: кодировать надо с несколько этапов. Для начала раздель видео и звук, и работать с ними отдельно. Потом получившиеся дорожки, а при необходимости и субтитры собирать в один MKV-файл.&lt;br /&gt;Вот что получилось: [файл "~/bin/video2nokia"]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;# Получение аудиодорожки. Используется mplayer с опциями&lt;br /&gt;mplayer "$1" -vo null -vc null -ao pcm:fast:file=audio.wav&lt;br /&gt;&lt;br /&gt;# Кодирование аудиодорожки в mp3.&lt;br /&gt;lame -V0 -h -b 160 --vbr-new audio.wav audio.mp3&lt;br /&gt;&lt;br /&gt;# Кодирование видеодорожки без звука, в два прохода&lt;br /&gt;mencoder -o /dev/null \&lt;br /&gt;-nosound \&lt;br /&gt;-ovc xvid &lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;-xvidencopts &lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;vhq=1:bitrate=700:autoaspect:pass=1 -vf pullup,softskip,hqdn3d,scale=-2:240 "$1"&lt;br /&gt;mencoder -o video.avi \&lt;br /&gt;-nosound \&lt;br /&gt;-ovc xvid -xvidencopts vhq=1:bitrate=700:autoaspect:pass=2 -vf pullup,softskip,hqdn3d,scale=-2:240 "$1"&lt;br /&gt;&lt;br /&gt;# Слияние в файл MKV-файл&lt;br /&gt;mkvmerge -o $1.mkv --language 0:und --default-track 0:yes -d 0 -A -S video.avi --default-track 0:yes -a 0 -D -S audio.mp3 --track-order 0:0,1:0&lt;br /&gt;&lt;br /&gt;# Удаление отработанных файлов&lt;br /&gt;rm audio.wav audio.mp3 video.avi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Итог: работет как надо. Все конвертирую одним скриптом, паример:&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;video2nokia file.avi&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-2903160131145076612?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/2903160131145076612/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=2903160131145076612' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2903160131145076612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2903160131145076612'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/02/mencoder.html' title='Кодирование видео: mencoder и поиск совершенства'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-4073299788116690319</id><published>2009-02-03T09:12:00.003+02:00</published><updated>2010-07-15T21:39:59.580+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='железо'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Установка планшета Genius WizardPen в Ubuntu</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Жена порадовала. Решила перейти на линукс, причем сама. В связи с этим приходится искать ответы на вопросы, которые меня раньше не волновали. Например, как работать со сканером, или вот - как установить графический планшет, чтобы рисовать в GIMP (классная кстати книжка попалась в книжном магазине про него - автор известный, Денис Колесниченко). Ну так вот, собственно о теме.&lt;br /&gt;Планшет у нас - Genius WizardPen, модель точно не помню, вроде бы что-то связанное с 5x4. При подключении автоматом не подключается. Ходят слухи, что с Wacoom такой проблемы нет, но такой планшет не всем по карману. Ну мир не без добрых людей, и решение есть. Я нашел пути для &lt;a href="http://digitalbluewave.blogspot.com/2008/04/genius-wizardpen-with-hardy-heron-and.html" target="_blank"&gt;8.04&lt;/a&gt; и &lt;a href="http://digitalbluewave.blogspot.com/2008/10/genius-wizardpen-with-intrepid-ibex.html" target="_blank"&gt;8.10&lt;/a&gt;, меня интересовал второй. Кто свободно читает английский - прямая дорога по ссылкам, я же приведу мой перевод, чтобы русскоязычным было легче.&lt;br /&gt;&lt;br /&gt;1) Копируем файл &lt;a href="http://specificcrap.arbitrarycrap.com/wizardpen_drv.so" target="_blank"&gt;http://specificcrap.arbitrarycrap.com/wizardpen_drv.so&lt;/a&gt; в /usr/lib/xorg/modules/input/&lt;br /&gt;2) Подключаем устройство если оно все еще отключено.&lt;br /&gt;3) Находим имя устройства в системе: grep -i name /proc/bus/input/devices&lt;br /&gt;4)  Создаем файл /etc/hal/fdi/policy/99-x11-wizardpen.fdi и записываем в него такое содержимое:&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="ISO-8859-1" ?&amp;gt;&lt;br /&gt;&amp;lt;deviceinfo version="0.2"&amp;gt;&lt;br /&gt;&amp;lt;device&amp;gt;&lt;br /&gt;&amp;lt;match key="info.product" contains="&lt;span style="color: red;"&gt;ИМЯ ВАШЕГО УСТРОЙСТВА, ПОЛУЧЕННОЕ В ШАГЕ 3&lt;/span&gt;"&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_driver" type="string"&amp;gt;wizardpen&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_options.SendCoreEvents" type="string"&amp;gt;true&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_options.TopX" type="string"&amp;gt;5619&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_options.TopY" type="string"&amp;gt;6554&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_options.BottomX" type="string"&amp;gt;29405&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_options.BottomY" type="string"&amp;gt;29671&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_options.MaxX" type="string"&amp;gt;29405&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_options.MaxY" type="string"&amp;gt;29671&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;/match&amp;gt;&lt;br /&gt;&amp;lt;/device&amp;gt;&lt;br /&gt;&amp;lt;/deviceinfo&amp;gt;&lt;br /&gt;5) Перезагрузка&lt;br /&gt;&lt;br /&gt;У меня все прошло на ура, без эксцессов. Если у вас возникли проблемы - в оригинальных статьях есть еще пути разрешения всяких нестыковок, но мне они не понадобились, надеюсь, вам тоже не пригодятся.&lt;br /&gt;Ну а дальше уже надо настроить GIMP для использования планшета. Правка - Параметры - Устройства ввода - Настроить дополнительные устройства ввода. Выбираем устройство, справа от него в выпадающем списке выбираем "Экран", сохраняем. В настройках инструмента "Динамика кисти" для кистей ставим галку "Размер", для карандаша и резинки галку "Непрозрачность". Пожалуй, всё.&lt;br /&gt;&lt;br /&gt;P.S.  После выхода Ubuntu 9.04 в оригинале появилась пометка:&lt;br /&gt;"The tutorial currently still works with Ubuntu 9.04 (Jaunty Jackalope)". Ну и прекрасно.&lt;br /&gt;&lt;br /&gt;Update от 15 июля 2010 года&lt;br /&gt;Отлично работает на Ubuntu 10.04 метод 1 со статьи&lt;br /&gt;&lt;a href="https://help.ubuntu.com/community/TabletSetupWizardpen"&gt;https://help.ubuntu.com/community/TabletSetupWizardpen&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-4073299788116690319?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/4073299788116690319/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=4073299788116690319' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4073299788116690319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4073299788116690319'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/02/genius-wizardpen-ubuntu.html' title='Установка планшета Genius WizardPen в Ubuntu'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-2323035255005532000</id><published>2009-01-30T22:00:00.001+02:00</published><updated>2009-01-30T22:00:56.467+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='приложения'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu-софт: интересные находки</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Хотчу отметить некоторые из программ, которые открываю для себя в ходе эксплуатации Ubuntu, и которые не входят в стандартную комплектацию.&lt;br/&gt;&lt;br/&gt;&lt;img src='http://lh3.ggpht.com/_3923yIoruBw/SYNbA9KEGnI/AAAAAAAAAJA/fT658xp1EEE/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;rapache - GUI программа для настройки сервера Apache. Помогает ленивым разработчикам в быстром создании виртуальных хостов для своих проектов. Автоматически добавляет строку типа "127.0.0.1 servername" в /etc/hosts. Если в интернет выходите через прокси-сервер, не забудьте в настройках браузера добавить имя созданного хоста в исключения. Ставится из стандартного репозитария.&lt;br/&gt;&lt;br/&gt;&lt;img src='http://lh3.ggpht.com/_3923yIoruBw/SYNbR5jk6xI/AAAAAAAAAJE/TbZ8VoXcYPg/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;gnome-color-chooser - программа для расширенной настройки цветовых схем Gnome. Можно добиться очень приятных глазу результатов, стоит только приложить творческой подход. Ставится из стандартного репозитария.&lt;br/&gt;&lt;br/&gt;&lt;img src='http://lh6.ggpht.com/_3923yIoruBw/SYNb84-XbQI/AAAAAAAAAJI/cimjKVxQiUg/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;Aegisub - предназначена для создания и редактирования субтитров в различных форматах. Считаю ее одной из лучших, а я их перепробовал немало, было дело. Есть версия для Windows. Берется здесь: &lt;a href='http://www.getdeb.net/app/Aegisub'&gt;http://www.getdeb.net/app/Aegisub&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src='http://lh3.ggpht.com/_3923yIoruBw/SYNcAloh92I/AAAAAAAAAJM/zSMK0XdtWDQ/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;PlayOnLinux - проект, призванный помочь в wine-изации приложений. Очень рекомендую во избежании ненужной головной боли с настройкой wine. Предоставляет готовые настройки для множества windows-программ, ну и конечно, как и говорит название - игр. Брать на сайте проекта:&lt;br/&gt;&lt;a href='http://www.playonlinux.com'&gt;http://www.playonlinux.com&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-2323035255005532000?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/2323035255005532000/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=2323035255005532000' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2323035255005532000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/2323035255005532000'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/01/ubuntu.html' title='Ubuntu-софт: интересные находки'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_3923yIoruBw/SYNbA9KEGnI/AAAAAAAAAJA/fT658xp1EEE/s72-c/%5BUNSET%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-4784485598204576871</id><published>2009-01-23T14:27:00.004+02:00</published><updated>2009-06-17T09:57:21.264+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='печать'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='консоль'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Печать из консоли с опциями || Кому нужны эти GUI</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Ну вот, я и добрался до своего блога после Рождественских праздников. Судя по всему, только я и читаю свой блог, ну да и ладно. Сегодня я напишу о том, как прекрасно можно и нужно использовать консольные команды для печати на принтерах, особенно из скриптов (bash или к примеру python).&lt;br /&gt;В сети можно найти множество советов по этому вопросу, и как правило они сводятся к цитатам из man lpr. Да, конечно же мы будем использовать lpr. К сожалению, "man lpr" рассказывает только базовые опции, такие как имя принтера для печати, просмотр установленных принтеров и их статуса и т.п. Но есть там один любопытный намек:&lt;br /&gt;lpr -o options&lt;br /&gt;... и тишина! Если не попытаться искать ответ на вопрос, что же это за options, то lpr покажется довольно бедной по возможностям. Мне, к примеру, потребовалось отпечатать текст на поверхности CD, и мануал мне не помог в этом ни на процент. Так вот, дорогие мои, как-раз самое вкусное в man не положили. А в этом то вся сила lpr и проявляется. Можно отправлять на печать в любой лоток, указывать размеры, расположение и многое, многое другое!&lt;br /&gt;Эх... требуют работать. Ладно, подробнее напишу позже. А пока вот для размышления, вчитывания и тестирования:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cups.org/documentation.php/doc-1.4/options.html" target="_blank"&gt;http://www.cups.org/documentation.php/doc-1.4/options.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Уверен, вам понравится!&lt;br /&gt;&lt;br /&gt;P.S. Вскоре открыл глаза и просматривая info lpr нашел, что документации полно и на локальном компьютере. Она прячется на 631 порту. Например, то-же, что и выше можно найти тут:&lt;br /&gt;&lt;a href="http://localhost:631/help/options.html?QUERY=options"&gt;http://localhost:631/help/options.html?QUERY=options&lt;/a&gt;&lt;br /&gt;А также многое другое.&lt;br /&gt;&lt;br /&gt;P.P.S&lt;br /&gt;&lt;a href="http://mydebianblog.blogspot.com/2007/02/linux-linux.html"&gt;О печати в сети&lt;/a&gt;, &lt;a href="http://www.linuxfoundation.org/en/OpenPrinting"&gt;Драйвера для принтеров&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-4784485598204576871?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/4784485598204576871/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=4784485598204576871' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4784485598204576871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/4784485598204576871'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2009/01/gui.html' title='Печать из консоли с опциями || Кому нужны эти GUI'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-8688679565945081675</id><published>2008-12-26T09:07:00.001+02:00</published><updated>2008-12-26T09:07:59.449+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='сеть'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>MySQL Query Browser: работа с удаленной БД через SSH</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Имеем: удаленный сервер MySQL, в моем случае это база данных сайта на masterhost.&lt;br/&gt;Хотим: работать с данными не через phpMyAdmin по http, а используя удобный и привычный MySQL Query Browser и MySQL Administrator на локальном компьютере.&lt;br/&gt;Нужно: клиент SSH, ну и соответственно логины-пароли доступа к удаленому аккаунту.&lt;br/&gt;Легко:&lt;br/&gt;1) Если на локальном компьютере установлен сервер MySQL - отключаем, освобождая порт:&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;$ sudo /etc/init.d/mysql stop&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;2) Подключаемся по протоколу SSH, вводя пароль когда попросят:&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;$ ssh -C uXXXXXX@uXXXXXX.ssh.masterhost.ru -L 3306:uXXXXXX.mysql.masterhost.ru:3306&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;3) Открываем MySQL Query Browser, вводим host - localhost (или 127.0.0.1), порт - 3306, логин, пароль и имя базы данных на сервере.&lt;br/&gt;Пользуемся с удовольствием.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-8688679565945081675?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/8688679565945081675/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=8688679565945081675' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8688679565945081675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/8688679565945081675'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2008/12/mysql-query-browser-ssh.html' title='MySQL Query Browser: работа с удаленной БД через SSH'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-6977383096393952474</id><published>2008-12-23T16:06:00.001+02:00</published><updated>2008-12-23T16:11:27.556+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cd/dvd'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Копирование сбойных файлов с CD/DVD в Linux</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Прислали мне диски с &lt;a href='http://kawaikunee.blogspot.com/2008/05/blog-post.html'&gt;конференции&lt;/a&gt;, наконец-то. Естественно, чтобы смотреть видео с них на nokia n810, надо конвертировать их в видеофайлы, к примеру mkv. Но вот беда! Последний трек на последнем диске оказался с ошибкой, и ни в какую не желал копироваться полностью. Выводилась Input/Output error. Поиски решения навели меня на статью &lt;a target='_blank' href='http://rlab.ru/doc/linuxharddatarecovery.html'&gt;Восстановление данных R.LAB&lt;/a&gt;, откуда я взял вот что:&lt;br/&gt;&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;dd if=/dev/scd0 of=~/video/file.iso bs=8K conv=noerror,sync&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;где:&lt;br/&gt;&lt;blockquote&gt;bs=8K для пущей скорости, noerror не дает вылетать на ошибках, sync дописывает проблемные блоки нулями, чтоб не возникло смещений на приемнике.&lt;br/&gt;&lt;/blockquote&gt;В результате создается образ диска, ошибки выловлены, плохие участки заменены нулями. Затем создаем каталог и монтируем в него получившийся образ:&lt;br/&gt;&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;sudo mkdir /media/iso&lt;br/&gt;sudo mount -t iso9660 -o loop ~/video/file.iso /media/iso/&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;Теперь можно и копировать. Видео конечно не ахти как выглядит на покореженных участках, зато  его можно посмотреть. После копирования отмонтируем образ:&lt;br/&gt;&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;sudo umount /media/iso&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;При желании удаляем образ, все-таки 4,5 гигабайт не лишние.&lt;br/&gt;P.S. О том, как бороться с ошибками при записи дисков, хорошо написано &lt;a href='http://mydebianblog.blogspot.com/2008/03/dvd.html'&gt;здесь&lt;/a&gt;.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-6977383096393952474?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/6977383096393952474/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=6977383096393952474' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6977383096393952474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6977383096393952474'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2008/12/cddvd-linux.html' title='Копирование сбойных файлов с CD/DVD в Linux'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-5701354301408024727</id><published>2008-12-18T16:33:00.001+02:00</published><updated>2008-12-18T16:34:26.185+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>PDF, Ubuntu, Python: история продолжается</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Продолжая тему о работе с PDF в Ubuntu расскажу, с какими сложностями я столкнулся, когда стал решать задачу о внесении метаданных в PDF документ. Нужно всего лишь в определенные страницы сосканированного проекта добавить скрытые пометки, которые помогли бы в поиске этих страниц (а это, как правило, чертеж какой-нибудь).&lt;br/&gt;&lt;br/&gt;Можно внести информацию о всем документе с помощью упомянутой &lt;a href='http://kawaikunee.blogspot.com/2008/09/pdf-ubuntu.html'&gt;ранее&lt;/a&gt; утилиты pdftk таким образом:&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;$ pdftk file.pdf dump_data output metainfo&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;В файл metainfo запишется информация следующего характера:&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;InfoKey: Title&lt;br/&gt;InfoValue: untitled&lt;br/&gt;InfoKey: Producer&lt;br/&gt;InfoValue: ReportLab http://www.reportlab.com&lt;br/&gt;InfoKey: Author&lt;br/&gt;InfoValue: anonymous&lt;br/&gt;InfoKey: Subject&lt;br/&gt;InfoValue: unspecified&lt;br/&gt;InfoKey: CreationDate&lt;br/&gt;InfoValue: 20081217165436&lt;br/&gt;PdfID0: ebd25ab8427fa1508e9924204f74b274&lt;br/&gt;PdfID1: ebd25ab8427fa1508e9924204f74b274&lt;br/&gt;NumberOfPages: 1&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;Соответственно, InfoKey - ключ, InfoValue - значение. Думаю, тут все понятно, двинем дальше. Теперь мы можем поменять значения ключей и сохранить файл, а потом изменить значение метаданных в нашем PDF файле:&lt;br/&gt;&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;$ cp file.pdf file.cp.pdf&lt;br/&gt;$ pdftk file.cp.pdf update_info metainfo output file.pdf&lt;br/&gt;$ rm file.cp.pdf &lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;Зачем такой огород? А затем, что pdftk умеет сохранять метаданные только в другой файл, поэтому мы создаем временный, потом обновляем его данные, сохраняя в исходный, и удаляем временный. Вот петрушка... Но это еще цветочки. Ягодки в том, что если прописать в файле с метаданными текст на русском языке, то evince покажет его крякозябрями, а если попробовать извлечь инфо из обновленного файла, то увидим вместо наших русских буковок вот примерно такое: "￐ﾠ￑ﾃ￑", что совсем не соответствует желаемому. К тому же, так задача пометок отдельных страниц не решается. Копаем дальше.&lt;br/&gt;&lt;br/&gt;Эта же утилита умеет пристегивать к отдельным страницам PDF документа файлы. Во! Это уже что-то! Составляем файл с нужными данными (рекомендуется HTML или Excel файл, потому что тогда Adobe Reader адекватно среагирует, то есть откроет его). Пристегиваем файл с информацией к первой странице PDF:&lt;br/&gt;&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;$ cp file.pdf file.cp.pdf&lt;br/&gt;$ pdftk file.cp.pdf attach_files to_page 1 output file.pdf&lt;br/&gt;$ rm file.cp.pdf&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;Ну наконец-то. Неужели это все? Проблема решена? Щазз! Мы только подходим к трудностям. Ведь нам надо как-то извлечь оттуда прикрепленные файлы. А вот тут нас ждет 2 проблемы.&lt;br/&gt;&lt;br/&gt;1) Не нашел (а я искал!) в pdftk возможности извлечения файлов выборочно, из определенных страниц, только все скопом:&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;$ pdftk file.pdf unpack_files output unpack/&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;Здесь все файлы извлекаются в папку unpack, если она конечно существует, иначе будет error. Одноименные файлы перезаписываются.&lt;br/&gt;&lt;br/&gt;2) Все шло более-менее гладко, пока я экспериментировал с файлами PDF журнала LinuxFormat. И картина изменилась, когда дело дошло до настоящих чертежей, отсканированных на нашем широкоформатном сканере. Нет, записывать метаданные и даже прикреплять файлы к страницам получалось нормально, но вот когда я попытался извлечь прикрепленные файлы я увидел примерно вот что:&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;Unhandled Java Exception:&lt;br/&gt;java.lang.NullPointerException&lt;br/&gt;   at java.lang.String.toLowerCase(libgcj.so.81)&lt;br/&gt;   at java.lang.String.toLowerCase(libgcj.so.81)&lt;br/&gt;   at com.lowagie.text.pdf.PdfEncodings.convertToBytes(pdftk)&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;Все это в различных вариациях на тему некоего libgcj.so.81. Из всего этого я сделал пару выводов: а) pdftk написана на Java, хотя бы частично и б) проблема связана с текстовой информацией в файле.&lt;br/&gt;&lt;br/&gt;Вот тут я был озадачен. Текстовой информации в файле не подразумевалось никакой, только одно-единственное изображение. Ладно бы там была какая-нибудь кириллица, и он на кодировках спотыкался. Но ведь неоткуда там тексту взяться! И тем не менее, файлы сторонние обрабатывались на ура, а мои сосканированные - ни в какую.&lt;br/&gt;Сейчас поведаю, через какие извращения я прошел, чтобы превратить мой PDF в корректно обрабатываемый pdftk. Все это я делал на Python, о библиотеках, которые тут приводятся, я говорил чуть &lt;a href='http://kawaikunee.blogspot.com/2008/12/python-pdf.html'&gt;раньше&lt;/a&gt;.&lt;br/&gt;Приготовились смеяться? Начали!&lt;br/&gt;&lt;br/&gt;&lt;i&gt;[файл workpdf.py]&lt;/i&gt;&lt;br/&gt;&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;#!/usr/bin/env python&lt;br/&gt;# -*- coding: utf-8 -*-&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;# Допустим, что файл называется так:&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;filename="00.pdf"&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;import os&lt;br/&gt;from reportlab.pdfgen import canvas&lt;br/&gt;from reportlab.lib.units import cm&lt;br/&gt;from reportlab.pdfbase import pdfmetrics, ttfonts&lt;br/&gt;from pyPdf import PdfFileReader&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;# Полчение размера страницы в пикселах&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;input = PdfFileReader(file(filename, "rb"))&lt;br/&gt;p=input.getPage(0)&lt;br/&gt;width = p.mediaBox[2]&lt;br/&gt;height= p.mediaBox[3]&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;# Починка файла (чтобы convert не ругался)&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;os.system("pdftk "+filename+" output 01a.pdf"&lt;/font&gt;&lt;/b&gt;)&lt;br/&gt;&lt;br/&gt;# Конвертирование его в картинку&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;os.system("convert 01a.pdf  workpdf_temp_file.jpg")&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;# Удаление ненужной копии&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;os.system("rm 01a.pdf "+filename)&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;# Задаем настройки шрифта&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;MyFontObject = ttfonts.TTFont('Verdana', '/usr/share/fonts/truetype/msttcorefonts/tahoma.ttf')&lt;br/&gt;pdfmetrics.registerFont(MyFontObject)&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;# Создаем основу нового PDF&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;MyCanvas = canvas.Canvas("test.pdf")&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;# Задаем размеры, равные исходному файлу, добавляем шрифты и тестовый текст&lt;br/&gt;# Не знаю зачем, но видимо pdftk очень хочет найти текст в файле&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;MyCanvas.setPageSize((width, height))&lt;br/&gt;MyCanvas.setFont("Verdana", 40)&lt;br/&gt;MyCanvas.drawString(-100, -100, "test")&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;# Добавляем картинку из исходного файла&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;MyCanvas.drawImage("workpdf_temp_file.jpg",0,0)&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;# Завершаем и сохраняем файл&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;MyCanvas.showPage()&lt;br/&gt;MyCanvas.save()&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;# А теперь барабанная дробь: прикрепляем файл и открепляем его без ошибок!&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;print os.system("pdftk test.pdf attach_files info to_page 1 output "+filename)&lt;br/&gt;print os.system("pdftk "+filename+" unpack_files output unp/")&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;# И удаляем никому не нужные теперь файлы&lt;br/&gt;&lt;b&gt;&lt;font face='Courier New'&gt;os.system("rm test.pdf workpdf_temp_file.jpg")&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;Ну как? Животики надорвали? А главной проблемы - извлечения отдельно взятого файла от отдельно взятой страницы многостраничного PDF документа - я так и не решил. Пока не решил. А вы?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-5701354301408024727?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/5701354301408024727/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=5701354301408024727' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5701354301408024727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/5701354301408024727'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2008/12/pdf-ubuntu-python.html' title='PDF, Ubuntu, Python: история продолжается'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-3224322194673090430</id><published>2008-12-15T16:55:00.002+02:00</published><updated>2008-12-16T22:27:06.133+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><title type='text'>Python и PDF</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;О том, с помощью чего и как можно работать с документами PDF в консоли я уже упоминал &lt;a href="http://kawaikunee.blogspot.com/2008/09/pdf-ubuntu.html"&gt;раньше&lt;/a&gt;. Несомненно, с помощью pdftk можно кое-чего достичь, и очень часто этого будет вполне достаточно.&lt;br /&gt;Теперь передо мной встала другая задача: динамически вносить измененния в мета-информацию PDF файлов, и очень желательно - автоматически обрезать белые поля, остающиеся после сканирования документов. И оказалось, это не так просто.&lt;br /&gt;С помошью того же pdftk можно получить информацию документа, записать ее в файл, изменить, а потом сделать update этой информации в другой файл. Что-ж, неплохо. Только кириллица там не прижилась, и слишком много телодвижений, да еще вручную. Это не наш метод. Хотя, если придется, то никуда не денешься.&lt;br /&gt;К делу был привлечен Python, к которому я подбираю библиотеки для работы в PDF.&lt;br /&gt;Кандидат номер 1:&lt;br /&gt;&lt;a href="http://pybrary.net/pyPdf/"&gt;pyPdf&lt;/a&gt;, ставится из стандартного репозитария Ubuntu (python-pypdf). Его описание, &lt;a href="http://pybrary.net/pyPdf/pythondoc-pyPdf.pdf.html"&gt;документация&lt;/a&gt; и несколько вполне ясных примеров с комментариями есть на сайте производителя. Вот что этот модуль умеет: извлекать информацию из документа, разбивать документ на страницы по отдельным файлам, собирать их в одно, обрезать, собирать многостраничные документы в одну страницу, шифровать и дешифровывать PDF. Минимум необходимого. Но я так и не нашел возможности вносить изменения в мета-информацию, а это то мне и нужно было.&lt;br /&gt;Кандидат номер 2:&lt;br /&gt;&lt;a href="http://www.reportlab.org/rl_toolkit.html"&gt;ReportLab&lt;/a&gt;, тоже есть в репозитарии Ubuntu. &lt;a href="http://www.reportlab.com/docs/userguide.pdf"&gt;Документация&lt;/a&gt; обширная, я только начал вникать, но уже понятно, что эта библиотека - для создания документов, а что насчет правки уже мозоль натершей на языке мета-информации? Пока не знаю, возможно я найду возможности все-таки...&lt;br /&gt;У кого есть опыт в этой сфере - не жадничайте, поделитесь! Неужели я один такой?&lt;br /&gt;По поводу обрезки белых полей - глухо, как в танке. Пробовал использовать convert из комплекта ImageMagic и его опции -trim, а также -fuzzy, вроде бы специально предназначенных для такой задачи. Но результат нулевой. Цвета конечно не идеальные, но про -fuzz написано на сайте разработчика, что он как-раз для такого случая! Ан нет, не сработало. Откликнитесь, коллеги, у кого получилось?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-3224322194673090430?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/3224322194673090430/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=3224322194673090430' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3224322194673090430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/3224322194673090430'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2008/12/python-pdf.html' title='Python и PDF'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-6301478219104732801</id><published>2008-12-13T13:24:00.001+02:00</published><updated>2008-12-13T16:10:03.610+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='сеть'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Перезапуск apache, mysql, networking (сеть) и др.</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Любого человека, перешедшего на Linux, первое время мучают вопросы, кажущиеся гуру элементарными. Например, я довольно долго не знал, как мне перезапустить сетевые соединения. Перезапускал Ubuntu каждый раз, когда менял содержимое /etc/network/intefaces. Тоже самое было, когда установил LAMP, не знал, как перезапустить apache и mysql. Просто "sudo apache restart" не помогает.&lt;br /&gt;Ну так вот, суть ответа - в папке /etc/init.d/ Там расположены скрипты, которые правильно работают с этими и многими другими службами. Поэтому перезагрузка сети будет выглядеть так:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family:Courier New;"&gt;sudo /etc/init.d/networking restart&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Для всего остального вместо networking пишем apache2, mysql и т.п. Кроме restart доступны start, stop и force-reload. Пользуйтесь и наслаждайтесь!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-6301478219104732801?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/6301478219104732801/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=6301478219104732801' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6301478219104732801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6301478219104732801'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2008/12/apache-mysql-networking.html' title='Перезапуск apache, mysql, networking (сеть) и др.'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-7403765908745831677</id><published>2008-12-12T09:40:00.002+02:00</published><updated>2009-04-21T16:10:31.559+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mkv'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Утилитка для получения расширения файла</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Ну что такое! Может быть, я чего-то не понял?&lt;br /&gt;Понадобилось для скрипта по конвертированию видеофайлов вычислять расширение файла, чтобы заменить его на другое. Например, чтобы сделать такой скрипт:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family:Courier New;"&gt;#!/bin/bash&lt;br /&gt;mkvmerge -o ${1%avi}mkv $1 $2&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Это простой пример упаковки видео и аудиоконтента в MKV, где вместо первого аргумента скрипту подсовывается имя видеофайла, вместо второго - имя аудиофайла. Но я же не всегда работаю с avi! Значит, расширение нужно как-то автоматически вычислять.&lt;br /&gt;Честное слово, я искал простой системный способ сделать это. Кроме basename ничего не нашел, но это не то, что нужно. Если он есть - подскажите!&lt;br /&gt;Ну так вот, пришлось взять в руки пилу, молток и SciTE, и сварганить скрипт самому:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[ файл ~/bin/ext.py ]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family:Courier New;"&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;class FileExt:&lt;br /&gt;    def __init__(self):&lt;br /&gt;        try:&lt;br /&gt;            self.ind=sys.argv[1].rindex(".")&lt;br /&gt;            self.word=sys.argv[1]&lt;br /&gt;        except:&lt;br /&gt;            self.ind=sys.argv[0].rindex(".")&lt;br /&gt;            self.word=sys.argv[0]&lt;br /&gt;    def getext(self):&lt;br /&gt;        return self.word[self.ind+1:]&lt;br /&gt;   &lt;br /&gt;e=FileExt()&lt;br /&gt;print e.getext()&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Может быть и не лучший способ, но работает! Теперь мой скрипт может стать таким:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family:Courier New;"&gt;#!/bin/bash&lt;br /&gt;mkvmerge -o ${1%`ext.py $1`}mkv $1 $2&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;P.S. Более изящный (и короткий) вариант кода:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: courier new;"&gt;import sys,os&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: courier new;"&gt;try:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: courier new;"&gt;    path,ext=os.path.splitext(sys.argv[1])&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: courier new;"&gt;    print str(ext).lower()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: courier new;"&gt;except:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: courier new;"&gt;    print "Неверный аргумент"&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-7403765908745831677?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/7403765908745831677/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=7403765908745831677' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7403765908745831677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7403765908745831677'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2008/12/blog-post.html' title='Утилитка для получения расширения файла'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-7321091450924258137</id><published>2008-12-10T10:13:00.001+02:00</published><updated>2008-12-10T10:14:49.492+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='христианство'/><title type='text'>Псалом 22 (вариант программиста)</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;1 Господь - Программист мой; я никогда не зависну:&lt;br/&gt;2 Он установил Свои софты на жесткий диск моего сердца. Все Его пути правильны и команды легки для меня.&lt;br/&gt;3 Из Его каталогов открываю файлы, которые ведут меня к правильному выбору во имя Его.&lt;br/&gt;4 И хотя я прохожу через сети лукавого, не убоюсь вирусов, ибо Он мой доктор, который создает резервные копии; Его пароль охраняет меня.&lt;br/&gt;5 Он создал пользовательское меню в присутствии хакеров. И стоит мне нажать одну клавишу, как Его помощь придет ко мне. Он единственный провайдер, Который подарил мне сетевую карту и дал выделенный канал, всегда свободный для меня. Он мой источник бесперебойного питания, так что я могу пребывать в онлайновом общении с Ним день и ночь.&lt;br/&gt;6 Воистину, благость и милость будут следовать со мной во все дни жизни моей, и мой файл будет слит с Его файлом и сохранен навек.&lt;br/&gt;&lt;br/&gt;Не сочтите за издевательство, просто у автора хорошо получилось в компьютерную тематику попасть. И по-моему без всякой насмешки.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Оригинал конечно лучше:&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;1 Псалом Давида. Господь - Пастырь мой; я ни в чем не буду нуждаться:&lt;br/&gt;2 Он покоит меня на злачных пажитях и водит меня к водам тихим,&lt;br/&gt;3 подкрепляет душу мою, направляет меня на стези правды ради имени Своего.&lt;br/&gt;4 Если я пойду и долиною смертной тени, не убоюсь зла, потому что Ты со мной; Твой жезл и Твой посох - они успокаивают меня.&lt;br/&gt;5 Ты приготовил предо мною трапезу в виду врагов моих; умастил елеем голову мою; чаша моя преисполнена.&lt;br/&gt;6 Так, благость и милость да сопровождают меня во все дни жизни моей, и я пребуду в доме Господнем многие дни.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-7321091450924258137?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/7321091450924258137/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=7321091450924258137' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7321091450924258137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/7321091450924258137'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2008/12/22.html' title='Псалом 22 (вариант программиста)'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-6780324975716647797</id><published>2008-12-09T16:14:00.001+02:00</published><updated>2008-12-23T16:13:13.910+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='видео'/><category scheme='http://www.blogger.com/atom/ns#' term='mencoder'/><category scheme='http://www.blogger.com/atom/ns#' term='mkv'/><category scheme='http://www.blogger.com/atom/ns#' term='nokia n810'/><title type='text'>Кодирование MKV (matroska) для Nokia N810 используя mencoder</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Открытия, как обычно, следуют за засадами. Несколько раз сталкивался с проблемами, когда кодировал файлы .mkv. Например, если пытаюсь извлечь видеотрек из .mkv в файл avi - возникает ошибка при воспроизведении, видео идет какимим-то цветными кубиками.&lt;br /&gt;Или рассинхронизируются аудио- и видеопотоки. Или звук становится таким, как будто его эквалайзером загнали на максимум, и страшно жужжит.&lt;br /&gt;Сегодня нашел в сети такой вариант, и вроде бы он нормально отработал. Буду тестировать.&lt;br /&gt;&lt;br /&gt;&lt;span style='font-family: Courier New;'&gt;&lt;strong&gt;mencoder filein.mkv -o fileout.mkv -of lavf -oac lavc -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:v4mv:vqscal:mpeg_quant -vf scale=-2:240&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;P.S. Проверил. Хороший метод.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337869154938700968-6780324975716647797?l=kawaikunee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kawaikunee.blogspot.com/feeds/6780324975716647797/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337869154938700968&amp;postID=6780324975716647797' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6780324975716647797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337869154938700968/posts/default/6780324975716647797'/><link rel='alternate' type='text/html' href='http://kawaikunee.blogspot.com/2008/12/mkv-nokia-n810-mencoder.html' title='Кодирование MKV (matroska) для Nokia N810 используя mencoder'/><author><name>Kawaikunee</name><uri>http://www.blogger.com/profile/17463450425243331134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3923yIoruBw/S1_zpm5HA2I/AAAAAAAAAOQ/QWZplKLeJI0/S220/LuckyStarCat.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337869154938700968.post-3798978896460544439</id><published>2008-11-20T09:21:00.000+02:00</published><updated>2008-12-09T16:18:51.340+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='сеть'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Настройка сети со Стримом, когда больше одного компьютера</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;С сентября пользуюсь Стримом. Акадо меня сильно подвело, несколько раз кидало на деньги, две недели не было интернета (
