<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10titles.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemtitles.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-13685060</id><updated>2012-03-19T19:35:11.553+04:00</updated><category term="Общее" /><category term="Ion3" /><category term="Linux" /><title type="text">/web/JaGoTerr.log</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://jagoterr.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://jagoterr.blogspot.com/" /><author><name>JaGoTerr</name><uri>http://www.blogger.com/profile/12393628263108362210</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/jagoterr" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="jagoterr" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjagoterr" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjagoterr" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjagoterr" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/jagoterr" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjagoterr" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fjagoterr" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fjagoterr" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><entry><id>tag:blogger.com,1999:blog-13685060.post-3947461961304326361</id><published>2006-12-05T09:14:00.000+03:00</published><updated>2006-12-05T20:25:23.610+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ion3" /><title type="text">Расширяя горизонты</title><content type="html">Да не обращайте внимания на названия моих заметок. Они вообще имеют мало общего с их содержанием. Это просто некоторые ассоциации, которые вдруг приходят мне на ум и не более того. Это так, к слову. Пойдём дальше.&lt;br /&gt;&lt;br /&gt;Из &lt;a href="http://jagoterr.blogspot.com/2006/11/blog-post.html"&gt;одной из моих предыдущих заметок&lt;/a&gt; неявно следует, что описанные в ней так называемые "scratch-приложения" являются по определению однооконными. И в самом деле, если Вы попробуете в полной мере применить описанную методику к любому многоконному приложению (например, таковыми является большинство jabber-клиентов, в т.ч. gaim и gajim, на примере которых я и буду далее рассуждать), то Вы сразу столкнётесь с проблемой организации его многочисленных окон внутри scratchpad-а. И именно решение этой проблемы я Вам сейчас поведаю. Но сначала отвлечёмся на минуту-другую от линии повествования и посмотрим, как это выглядит в случае, если никаких усилий на этот счёт не прилагать:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Либо так: &lt;a href="http://www.linux.org.ru/view-message.jsp?msgid=1352444"&gt;Скриншот 1&lt;/a&gt; - окно со списком контактов находится в одной куче с окнами открытых бесед, что может быть не слишком-то и неудобно (сам так жил долгое время и не сказать чтоб сильно мучался), но уж точно неконцептуально :) А главное - показательный пример для описываемого далее подхода.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Либо так: &lt;a href="http://www.linux.org.ru/view-message.jsp?msgid=1667644"&gt;Скриншот 2&lt;/a&gt; - расположение видимо удобно автору, но реализовано оно, как видите, не в scratchpad-е.&lt;/li&gt;&lt;li&gt;И третий вариант (скриншот для которого мне не удалось подыскать, да и нет в нём особой необходимости) - ограничить себя любимого использованием исключительно однооконных приложений для некоторых задач, в частности использовать для обмена мгновенными сообщениями centericq.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Если Вам не досуг было вдаваться в технические подробности, то поясню, что scratchpad в Ion3 - лишь специфический фрейм (WFrame), т.е. сущность фактически неделимая. Открыть несколько окон в одном фрейме, безусловно, можно, но только как перекрывающиеся. А вот разделить этот фрейм на несколько других с целью более комфортного расположения окон - уже не удастся. Многие читатели, думаю, чисто интуитивно уже догадались, что для решения этой проблемы нужно всего лишь "превратить" наш фрейм в полноценное рабочее пространство, гибкое &lt;a href="http://jagoterr.blogspot.com/2006/11/blog-post_23.html"&gt;до бесконечности&lt;/a&gt;. Ну, я всё же не волшебник, да и учиться на него пока не планировал, поэтому "превратить" вряд ли получится. Но вот засунуть одно в другое - это всегда пожалуйста. И Ion3 не был бы самим собой, если бы не позволял этого сделать:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;_:attach_new({type="WTiling", name="Instant Messaging"}):goto()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Выполняем внутри соответствующего scratchpad-а это несложное Lua-выражение и получаем полноценное рабочее пространство, которое можно поделить так, как бог на душу положит. Полученные в результате деления фреймы именуем так, как того требует внутренний голос и получаем то, во что можно начинать "раскладывать" окна. В моём случае это выглядит примерно так:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_kezwP_9M3Ok/RXUhHTK1XXI/AAAAAAAAAAM/i4gS4G7wfh4/s1600-h/ion_im_1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_kezwP_9M3Ok/RXUhHTK1XXI/AAAAAAAAAAM/i4gS4G7wfh4/s200/ion_im_1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5004942970180689266" /&gt;&lt;/a&gt;&lt;br /&gt;Левый фрейм был назван &lt;tt&gt;im_sp_conversation&lt;/tt&gt;,а правый - &lt;tt&gt;im_sp_roster&lt;/tt&gt;. Думаю, названия говорят сами за себя (расшифрую разве что im - instant messaging и sp - scratchpad) и дополнительный пояснений не требуют. Далее, делаем соответствующие настройки для окон (приведу их как для gaim, так и для gajim - авось кому пригодится):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;-- Gajim&lt;br /&gt;--&lt;br /&gt;defwinprop {&lt;br /&gt;    class = 'Gajim.py',&lt;br /&gt;    instance = 'gajim.py',&lt;br /&gt;    role = 'roster',&lt;br /&gt;    target = 'im_sp_roster',&lt;br /&gt;    winlist_ignore = true,&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;defwinprop {&lt;br /&gt;    class = 'Gajim.py',&lt;br /&gt;    instance = 'gajim.py',&lt;br /&gt;    target = 'im_sp_conversation',&lt;br /&gt;    jumpto = true,&lt;br /&gt;    winlist_ignore = true,&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;-- Gaim&lt;br /&gt;--&lt;br /&gt;defwinprop {&lt;br /&gt;    class = 'Gaim',&lt;br /&gt;    instance = 'gaim',&lt;br /&gt;    role = 'buddy_list',&lt;br /&gt;    target = 'im_sp_roster',&lt;br /&gt;    winlist_ignore = true,&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;defwinprop {&lt;br /&gt;    class = 'Gaim',&lt;br /&gt;    instance = 'gaim',&lt;br /&gt;    target = 'im_sp_conversation',&lt;br /&gt;    jumpto = true,&lt;br /&gt;    winlist_ignore = true,&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Готово! Получите, распишитесь. Спасибо за внимание. Пора работать.&lt;br /&gt;&lt;br /&gt;PS: Я также &lt;a href="http://jagoterr.blogspot.com/2006/11/ion3.html"&gt;приводил тут&lt;/a&gt; небольшой рецепт, который позволяет закрывать одним универсальным сочетанием клавиш любой активный scratchpad. По объективным причинам данный рецепт не будет работать, если вышеописанным образом породить внутри scratchpad-а другие фреймы.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13685060-3947461961304326361?l=jagoterr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13685060&amp;postID=3947461961304326361" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13685060/posts/default/3947461961304326361" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13685060/posts/default/3947461961304326361" /><link rel="alternate" type="text/html" href="http://jagoterr.blogspot.com/2006/12/blog-post.html" title="Расширяя горизонты" /><author><name>JaGoTerr</name><uri>http://www.blogger.com/profile/12393628263108362210</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_kezwP_9M3Ok/RXUhHTK1XXI/AAAAAAAAAAM/i4gS4G7wfh4/s72-c/ion_im_1.png" height="72" width="72" /><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13685060.post-1372470652130646990</id><published>2006-11-28T14:27:00.000+03:00</published><updated>2006-11-28T19:47:28.499+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Общее" /><title type="text">О философии</title><content type="html">&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;"Мудр не тот, кто знает много,&lt;br /&gt;а тот, чьи знания полезны."&lt;br /&gt;- Эсхил&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Спускался вчера в метро и в сто первый раз прочитал эту цитату на каком-то рекламном стенде. В свете некоторого оживления моего блога в последние дни, эта фраза вдруг натолкнула меня на некоторые размышления. Размышления на тему блогов.&lt;br /&gt;&lt;br /&gt;Честно говоря, вынесенная в эпиграф фраза могла бы стать, мне кажется, неплохим, если хотите, девизом для определённого круга людей, пишущих в свои сетевые дневники сообщения не о том как они вчера весело нажрались (хотя в качестве ремарки не сдержусь и ляпну, что отлично попьянствовал в прошедшие выходные :) ), а о том, чего достигли теми или иными усилиями (разного рода, от собственных разработок до многочасовых перелопачиваний результатов работы гугла) и чем стремятся поделиться с окружающими. В силу специфики моих жизненных интересов - это преимущественно айтишники-юниксоиды. Но статистическим исследованиям на этот счёт вполне можно посвятить отдельную (и даже не одну) заметку. В принципе, ничего большего, кроме как донести эту самую цитату до вышеописанных кругов сетевой общественности, попутно предложив обратить внимание на её удивительную актуальность в отношении блогов, я и не хотел. Но мне пришли в голову и некоторые другие интересные мысли на этот счёт и свои рассуждения я с удовольствием сформулирую письменно.&lt;br /&gt;&lt;br /&gt;Зачем человеку слыть "мудрецом"? Пусть даже не в буквальном смысле этого слова. Зачем человеку в принципе демонстрировать свои знания? Мне кажется, есть два аспекта, которые, правда, весьма тесно связаны между собой. Один моральный, другой же сугубо материальный. Возможно я немного и перегну палку, но упомянутый мною моральный аспект назову тщеславием (если вдруг кто-то не в курсе или запамятовал, то напомню, что это есть грех по православным законам). Даже если предположить, что какой-то человек писал свои заметки в блог без всякой гордыни и расчёта на признание, то уж точно каждый вынужден будет признать, что ему весьма приятны общественное признание, слава которую он получает и похвалы в комментариях. В определённой степени он доказывает и себе, и окружающим, что кое-чего стоит. Но царство капитализма не приемлет оценку "кое-чего" в отношении чего бы то ни было, а тем более в отношении человека как рабочей силы. Таким образом каждый блог - это своеобразное портфолио человека (ссылка на которое, кстати, всё чаще встречается в резюме качественных IT-специалистов, журналистов и пр.). Вот Вам и материальный аспект явления.  Блог для современного специалиста - это как витрина для магазина (хотя мне больше по душе сравнение с короткой юбкой проститутки). Он помогает себя продавать. И это &lt;span style="font-weight: bold;"&gt;уже&lt;/span&gt; данность.&lt;br /&gt;&lt;br /&gt;Предвосхищая здоровое человеческое любопытство сразу признаюсь, что меня лично материальный аспект мало интересует, поскольку моя профессиональная деятельность достаточно далеко от освещаемых в моём блоге вопросов. Но своё тщеславие отрицать не буду. И закончу свои рассуждения тем же, с чего я их начал - цитатой:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;"Может  быть,  ты  скажешь,  что это эгоизм,&lt;br /&gt;но  такой  законный  и  благородный  эгоизм!"&lt;br /&gt;- Л.Н. Толстой, Анна Каренина&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/13685060-1372470652130646990?l=jagoterr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13685060&amp;postID=1372470652130646990" title="Комментарии: 7" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13685060/posts/default/1372470652130646990" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13685060/posts/default/1372470652130646990" /><link rel="alternate" type="text/html" href="http://jagoterr.blogspot.com/2006/11/blog-post_28.html" title="О философии" /><author><name>JaGoTerr</name><uri>http://www.blogger.com/profile/12393628263108362210</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13685060.post-5177666727890806103</id><published>2006-11-23T18:05:00.000+03:00</published><updated>2006-11-23T18:33:31.701+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ion3" /><title type="text">От статики к динамике</title><content type="html">В целом &lt;a href="http://jagoterr.blogspot.com/2006/11/blog-post.html"&gt;описав&lt;/a&gt; общую картину на моём рабочем месте, я хочу перейти к одной из многочисленных частностей, а именно - к использованию растрового графического редактора &lt;a href="http://www.gimp.org/"&gt;GIMP&lt;/a&gt; в связке с оконным менеджером Ion3. Интересная деталь - если со многими приложениями приходится буквально "бороться" средствами менеджера окон, чтобы ими было удобно пользоваться, то GIMP, кажется, просто создан для того, чтобы им управлял толковый WM. Эту парочку стоит рассматривать только как взаимовыгодный союз, но не как "ведущего и ведомого".&lt;br /&gt;&lt;br /&gt;Во-первых, следует отметить, что основу описываемого мной метода составляет вполне конкретная техническая возможность конкретного менеджера окон (Ion3) - floating split. Где про него почитать я не знаю, но попробовать методом тыка может каждый. Было бы желание. Заранее предупреждаю, что описания того что это такое и как этим пользоваться вы здесь не обнаружите. Речь будет только о конкретном применении.&lt;br /&gt;&lt;br /&gt;Кроме того, я постараюсь снабдить своё повествование скриншотами, но нужно помнить, что удобство описываемого подхода в динамике, которую невозможно показать никаким числом статических картинок. Вывод: пробуйте.&lt;br /&gt;&lt;br /&gt;Итак, начнём с главного. С выделения рабочего пространства для GIMP и разбиения его следующим образом:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;-----------------------------&lt;br /&gt;|     |               |     |&lt;br /&gt;|  1  |               |  4  |&lt;br /&gt;|     |               |     |&lt;br /&gt;|-----|       3       |-----|&lt;br /&gt;|     |               |     |&lt;br /&gt;|  2  |               |  5  |&lt;br /&gt;|     |               |     |&lt;br /&gt;-----------------------------&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Теперь необходимо задать каждому из пяти получившихся фреймов собственное имя и распределить по фреймам различные окна GIMP. В частности, основную панель инструментов логично разместить во фрейме 1, окно "слои, каналы, ..." - во 2-м. Фреймы 4 и 5 у меня отведены под наиболее часто используемые инструменты (в частности фрейм 4 - это только инструмент кадрирования).&lt;br /&gt;&lt;br /&gt;Теперь перейдём к самому главному.&lt;br /&gt;Через контекстное меню фрейма 3 (пункты &lt;tt&gt;tiling/float-split/at-left&lt;/tt&gt; и &lt;tt&gt;tiling/float-split/at-right&lt;/tt&gt;), необходимо сделать левую и правую границы этого фрейма "плавающими". Далее необходимо установить размеры фрейма 3. В этом фрейме у нас будут открываться окна с редактируемыми изображениями, а это означает, что размеры данного фрейма желательно сделать максимально возможными. В данном случае высота фрейма сама по себе максимальна, но только потому, что лично мне хватает двух фреймов для частоиспользуемых инструментов GIMP. Если же у Вас таких инструментов больше - правильным будет расположить их выше и ниже фрейма 3 (по аналогичной технологии). Но это можно сделать чуть позже, пока лучше ограничиться той разметкой, что приведена на схеме. А вот ширину фрейма "3" нужно установить чуть меньше, чем ширина рабочего пространства, а именно - на 5-10 пикселей меньше (как слева, так и справа). При этом, если Вы всё делали правильно, у вас будут почти полностью перекрыты фреймы 1, 2, 4 и 5. Заметьте - они будут перекрыты, но их размеры останутся прежними. И изменение их размеров никак не повлияет на изменение размеров фрейма 3.&lt;br /&gt;&lt;br /&gt;Далее - о переключении между фреймами. При использовании "плавающих" границ переключение между фреймами происходит не мгновенно, а с некоторой задержкой. Что на мой взгляд создаёт некоторые неудобства (хотя может кому-то это будет даже удобнее). Но лично меня такая ситуация не устраивает и потому в конфиг были незамедлительно добавлены следующие строки:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;mod_tiling.set (&lt;br /&gt;{ raise_delay = 0 }&lt;br /&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Вуаля. Стоит Вам перевести указатель мыши из фрейма с картинкой (фрейм 3) к левой границе экрана - и вы мгновенно окажетесь в окне с инструментами. А как только переведёте "стрелочку" обратно на картинку - она вновь "развернётся" на всю ширину экрана. Кроме того. Вспомните, как "удобно" было пользоваться инструментом кадрирования в каком-нибудь "традиционном" WM. Стоило Вам начать выделение области изображения - откуда ни возьмись вылезало окно, буквально закрывавшее немалую часть изображения, с которым Вы работаете. Бесились? Я тоже. Так укажите этому окну открываться в 4-м фрейме и оно больше никогда не будет Вам мешать, а перейти к нему Вы сможете в любой момент, стоит вам только сдвинуть указатель мыши к правой границе рабочего пространства.&lt;br /&gt;&lt;br /&gt;Кстати, возможно также использование scratchpad-ов для отдельных инструментов GIMP. Безусловно, такой подход имеет право на существование, но мой опыт (соглашусь, весьма скромный опыт) работы с GIMP - это по большей части работа мышкой с минимумом прикосновений к клавиатуре. Поскольку управления scratchpad-ами мышкой - это &lt;u&gt;крайне&lt;/u&gt; неудобно, то я такой подход не использую.&lt;br /&gt;&lt;br /&gt;А напоследок, обещанные скриншоты (порядок их следования примерно соответствует линии повествования, вроде бы):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/4420/1670/1600/606613/iongimp-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/4420/1670/200/806871/iongimp-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/4420/1670/1600/715301/iongimp-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/4420/1670/200/741003/iongimp-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/4420/1670/1600/561095/iongimp-3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/4420/1670/200/700058/iongimp-3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/4420/1670/1600/959148/iongimp-4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/4420/1670/200/795626/iongimp-4.png" alt="" 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/13685060-5177666727890806103?l=jagoterr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13685060&amp;postID=5177666727890806103" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13685060/posts/default/5177666727890806103" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13685060/posts/default/5177666727890806103" /><link rel="alternate" type="text/html" href="http://jagoterr.blogspot.com/2006/11/blog-post_23.html" title="От статики к динамике" /><author><name>JaGoTerr</name><uri>http://www.blogger.com/profile/12393628263108362210</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13685060.post-1994148603357694804</id><published>2006-11-23T15:41:00.001+03:00</published><updated>2006-11-23T15:54:16.826+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ion3" /><title type="text">Немного идеологии</title><content type="html">Сегодня, друзья мои, мы сделаем очередной шаг на пути к идеалу.&lt;br /&gt;&lt;br /&gt;Кстати, об идеале. Когда-то, не так давно, у меня возникло желание написать небольшую (а может даже и не небольшую) статью о том, &lt;b&gt;что&lt;/b&gt; же такое в моём понимании "идеальное рабочее место" (разумеется, речь о desktop-окружении моего компьютера) и параллельно поведать о том, &lt;b&gt;как&lt;/b&gt; его построить с использованием конкретного набора программных средств (взяв за основу некоторый менеджер окон). Помимо лени, о которой далее, меня долгое время останавливал один единственный, но архиважный факт - ни один из существующих WM не способен был в полной мере стать основой такого вот, если хотите, своеобразного исследования. В какой-то момент таковым чуть не стал &lt;a href="http://pekwm.org/"&gt;PekWM&lt;/a&gt;, но не вдаваясь в излишние подробности просто скажу, что и он при ближайшем рассмотрении оказался далёк от искомого. И наконец, после кое-каких скитаний (очередных) я вернулся к любимому и ненаглядному Ion3, потратил некоторое время на доработку конфигов и, вуаля, - получил то, на основе чего уже можно говорить о прямой дороге к идеалу. Впрочем, оставалось ещё одно препятствие - обычная человеческая лень вкупе с тотальной нехваткой свободного времени. Субъективизм и объективность тут слились в какой-то прямо-таки идеальный союз. Но всё же что-то (надо на досуге поразмыслить - а что же именно?) сподвигло меня на попытку сдвинуть дело с мёртвой точки. Писать сразу, с ходу, полноценную статью пока, я думаю, не стоит. А потому, буду потихоньку, шаг за шагом, "раскрывать тему" в кратких заметках по отдельным аспектам (как "идеологическим", так и чисто техническим) на вышеобозначенную тему. Началом этого своеобразного цикла смело можно считать &lt;a href="http://jagoterr.blogspot.com/2006/11/ion3.html"&gt;предыдущую заметку&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Итак, обозначим исходную. Я для себя (невольно, как-то само по себе так получилось) разделил используемые приложения на два "класса": те, сеанс работы с которыми (в т.ч. с несколькими из них параллельно) можно считать относительно длительным (например: IDE, графический редактор, браузер) и те, которые играют скорее "обслуживающую" роль и работу с которыми даже сеансом-то назвать трудно, например: словарь, калькулятор, jabber-клиент, музыкальный плеер. Все нюансы подобного деления мне даже сложно чётко сформулировать. Надеюсь, они постепенно проявятся в дальнейшем. А вот какие-никакие имена этим двум классам дать придётся. Первые обзовём бизнес-приложениями. А вторые, с моей лёгкой руки, scratch-applications. Вот только не могу придумать как это по-русски.&lt;br /&gt;&lt;br /&gt;Мы обозначили абстрактным образом два класса приложений и теперь пришло время рассказать характер пользования ими с точки зрения управления их окнами.&lt;br /&gt;&lt;br /&gt;Что касается бизнес-приложений, то на каждую группу таких приложений выделяется отдельный workspace (рабочее пространство). При таком подходе рабочих пространств у меня набралось 6 штук. При том, что пределом считаю число 10, если получается больше - надо с этим что-то делать. Примером такой группы может быть следующая связка: IDE + терминал для сборки + утилита тестирования + терминал с логами; а иногда группа определяется множеством окон всего одного приложения, например Gimp. В этом случае основным инструментом переключения между "задачами" является переключение между рабочими пространствами, число которых невелико, редко изменяемо, а оттого их нумерацию легко запомнить. При этом хотелось бы подчеркнуть, что переключение происходит не между конкретными приложениями, а между "задачами" или, можно сказать, "деятельностями". Нет смысла переключения на окно IDE, есть только смысл вернуться от написания текста документа к "процессу разработки", причём вернуться в то место (читай - на то окно), на котором процесс был прерван. Таким образом, переключение между рабочими пространствами, а не окнами - это даже не просто средство тупой группировки, в которой чуть проще разобраться, а полноценный инструмент рациональной организации рабочего места.&lt;br /&gt;&lt;br /&gt;Теперь о scratch-applications. Суть использования такого рода приложений состоит в том, что пользователь в процессе выполнения основной своей деятельности на рабочем месте (например, программирования) отвлекается на сравнительно короткое время на использование такого приложения (самый яркий пример в данном случае - jabber-клиент). А быстренько "воспользовавшись" - возвращается к основной своей деятельности. Согласитесь, если принять к использованию вышеописанную "идеологию" использования рабочих пространств, то:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;выделять ещё одно рабочее пространство под ваш jabber-клиент (либо под все scratch-applications в целом) не логично, так как противоречит идее "деятельность  рабочее пространство"&lt;/li&gt;&lt;li&gt;даже если выделить таковое пространство, то сам факт переключения на него означает "уход" с того рабочего пространства, на котором в данный момент выполняется основная бизнес-деятельность, что также не выглядит логичным&lt;/li&gt;&lt;li&gt;  бизнес-приложения как правило используются таким образом, чтобы занимать максимальную область рабочего пространства (часто всю доступную область) и поэтому использование традиционных рабочих пространств Ion3 - WTiling - выглядит вполне логичным, в то время как scratch-applications часто не нуждаются в таких размерах окна (вспомните размеры своего словаря или калькулятора и вы со мной согласитесь).&lt;/li&gt;&lt;/ul&gt;  Исходя из этих трёх утверждений получается, что необходимо некоторое специфическое средство управления окнами таких приложений. Но какое? К счастью, в Ion3 оно есть и называется &lt;i&gt;scratchpad&lt;/i&gt;. С использованием дополнительного скрипта (&lt;i&gt;toggle_named_scratchpad.lua&lt;/i&gt;) таких scratchpad-ов можно сделать произвольное количество и дав каждому соответствующее наименование. И используя наименования распределить по scratchpad-ам все свои scratch-applications. Есть некоторая свобода при распределении приложений по scratchpad-ам, в отличие от ситуации с распределением бизнес-приложений по рабочим пространствам. Связано это с тем, что для перехода к этого рода приложения мы будем использовать принципиально иной способ, о котором чуть позже. К примеру, у меня есть отдельный scratchpad для e-mail-клиента, но &lt;a href="http://htop.sourceforge.net/"&gt;htop&lt;/a&gt; и &lt;a href="http://conky.sourceforge.net/"&gt;conky&lt;/a&gt; прекрасно уживаются на одном и том же.&lt;br /&gt;&lt;br /&gt;Так что же это за "принципиально иной" способ? Суть в том, что в данном случае целью является не некоторая абстрактная "задача", на которую мы переключаемся путём перехода на соответствующее рабочее пространство, а окно конкретного приложения, имеющее заранее известные характеристики (такие как class, instance и title). И необходимый нам механизм должен был бы искать открытое окно по соответствующим характеристикам и активировать его, а в случае его отсутствия - запускать соответствующее приложение. А раз уж есть возможность перехода к приложению для его кратковременного использования, необходима и функция "возврата к бизнес-деятельности", от которой пользователь только что отвлёкся. И такой механизм также имеется - скрипт &lt;i&gt;app.lua&lt;/i&gt; (подробности использования этого скрипта Вы можете найти непосредственно в комментариях к нему), также доступный на сайте Ion3. А пример использования данного скрипта в соответствии с вышеизложенными идеями и подходами, а также простейший способ реализации функции "возврата" (путём закрытия активного scratchpad-а) можно посмотреть в моей &lt;a href="http://jagoterr.blogspot.com/2006/11/ion3.html"&gt;предыдущей заметке&lt;/a&gt;, где Вы также найдёте пару советов, которые могут оказаться крайне полезными, если Вы решите опробовать описанный мною подход на практике.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13685060-1994148603357694804?l=jagoterr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13685060&amp;postID=1994148603357694804" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13685060/posts/default/1994148603357694804" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13685060/posts/default/1994148603357694804" /><link rel="alternate" type="text/html" href="http://jagoterr.blogspot.com/2006/11/blog-post.html" title="Немного идеологии" /><author><name>JaGoTerr</name><uri>http://www.blogger.com/profile/12393628263108362210</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13685060.post-9101862782884371424</id><published>2006-11-21T11:40:00.000+03:00</published><updated>2006-11-21T16:56:08.013+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ion3" /><title type="text">Небольшое ноухау для ion3</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&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;/br&gt;Вводная такова: на рабочем месте я использую оконный менеджер &lt;a href='http://iki.fi/tuomov/ion/'&gt;Ion3&lt;/a&gt;. Начну с того, что для перехода к нужным мне приложениям (например к любимому &lt;a href='http://stardict.sf.net/'&gt;словарику&lt;/a&gt;) я с большим удовольствием использую замечательный скрипт &lt;span style='font-style: italic;'&gt;app.lua&lt;/span&gt; из &lt;a href='http://modeemi.fi/%7Etuomov/repos/ion-scripts-3/#scripts'&gt;коллекции вкусностей для Ion3&lt;/a&gt; (тем паче, что сегодня утром благодаря моим небольшим усилиям он стал ещё лучше и функциональнее, надеюсь на скорое появление патча в репозитории). И использование это выражается в keybinding-ах примерно следующего характера:&lt;br&gt;&lt;/br&gt;&lt;pre&gt;defbindings("WMPlex.toplevel", {&lt;br&gt;&lt;/br&gt; kpress(ALTMETA.."D",&lt;br&gt;&lt;/br&gt;        "app.byclass('stardict', 'Stardict', _)"),&lt;br&gt;&lt;/br&gt;})&lt;br&gt;&lt;/br&gt;&lt;/pre&gt;&lt;br&gt;&lt;/br&gt;Ну а с помошью следующего фрагмента конфига:&lt;br&gt;&lt;/br&gt;&lt;pre&gt;defwinprop {&lt;br&gt;&lt;/br&gt;   class = 'Stardict',&lt;br&gt;&lt;/br&gt;   instance = 'stardict',&lt;br&gt;&lt;/br&gt;   target = 'tools_sp',&lt;br&gt;&lt;/br&gt;   jumpto = true,&lt;br&gt;&lt;/br&gt;   winlist_ignore = true,&lt;br&gt;&lt;/br&gt;}&lt;br&gt;&lt;/br&gt;&lt;/pre&gt;&lt;br&gt;&lt;/br&gt;запускаемый словарик самостоятельно отправляется при запуске на "своё место". Многие уже догадались по предыдущему фрагменту конфига, что "местом" для данного приложения, как и для многих других, является соответствующий &lt;span style='font-style: italic;'&gt;named scratchpad&lt;/span&gt;. Но есть проблема - всяческих скратчпадов у меня 5 штук (и не факт, что это конечное их число). И разумеется, я постоянно путаюсь, какой же кнопкой закрывается тот скратчпад, который у меня сейчас активен. Сегодня утром мне это надоело. И был придуман следующий keybinding:&lt;br&gt;&lt;/br&gt;&lt;pre&gt;defbindings("WMFrame", {&lt;br&gt;&lt;/br&gt;    kpress( META.."Escape",&lt;br&gt;&lt;/br&gt;            "mod_sp.set_shown(&lt;br&gt;&lt;/br&gt;                ioncore.lookup_region(_:name(), 'WFrame'),&lt;br&gt;&lt;/br&gt;                'unset' )" ),&lt;br&gt;&lt;/br&gt;})&lt;br&gt;&lt;/br&gt;&lt;/pre&gt;&lt;br&gt;&lt;/br&gt;Этот несложный биндинг "прячет" любой активный скратчпад. Вероятно, он может иметь побочный эффект при использовании его "не по назначению", но сей факт меня, честно сказать, не сильно беспокоит.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Кроме того, поделюсь ещё одной маленькой полезностью, связанной также с использованием большого количества скратчпадов. Сложность состоит в том, что они перекрывают друг друга не в порядке открытия. То есть, если у вас открыт скратчпад со словарём, а в этот момент вы открываете скратчпад с jabber-клиентом, то он вполне может оказаться "под" словариком. Или наоборот... в общем, ситуации всякие бывают, учитывая многообразие геометрий скратчпадов (во всяком случае у меня). И пришлось озадачиться поиском функций, которые позволили бы управлять "слоями" или даже "наслоениями" скратчпадов. Таковые были найдены, "забиндены" и сейчас будут представлены Вашему вниманию:&lt;br&gt;&lt;/br&gt;&lt;pre&gt;defbindings("WMFrame", {&lt;br&gt;&lt;/br&gt;    kpress( META.."L",&lt;br&gt;&lt;/br&gt;            "WRegion.rqorder(_, 'back')" ),&lt;br&gt;&lt;/br&gt;    kpress( META.."U",&lt;br&gt;&lt;/br&gt;            "WRegion.rqorder(_, 'front')" ),&lt;br&gt;&lt;/br&gt;})&lt;br&gt;&lt;/br&gt;&lt;/pre&gt;&lt;br&gt;&lt;/br&gt;Как несложно догадаться, нажатие Meta+L отправляет активный скратчпад "под" все остальные, а Meta+U "поднимает" его над всеми другими.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;PS: вышеупомянутый скрипт app.lua отныне может искать запущенное приложение не только по строке заголовка или Window-class, но также и по атрибуту Window-instance, что особенно полезно в некоторых случаях. Каких? Об этом читайте в следующей заметке.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13685060-9101862782884371424?l=jagoterr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13685060&amp;postID=9101862782884371424" title="Комментарии: 3" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13685060/posts/default/9101862782884371424" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13685060/posts/default/9101862782884371424" /><link rel="alternate" type="text/html" href="http://jagoterr.blogspot.com/2006/11/ion3.html" title="Небольшое ноухау для ion3" /><author><name>JaGoTerr</name><uri>http://www.blogger.com/profile/12393628263108362210</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13685060.post-115056559352710372</id><published>2006-06-17T21:23:00.000+04:00</published><updated>2006-11-21T16:51:39.133+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><title type="text">email-ng</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div style='text-align: right;'&gt;&lt;span style='font-style: italic;'&gt;"Мир изменился"&lt;br&gt;&lt;/br&gt;Дж. Р. Р. Толкиен, "Властелин Колец"&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;/div&gt;&lt;br&gt;&lt;/br&gt;&lt;span style='font-size: 130%;'&gt;Вступление&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;На мой взгляд, прошли времена безраздельного царствования связки fetchmail+procmail+mutt. Ничего не случилось с этими программами плохого, они по-прежнему прекрасно выполняют свои функции... но вот функции эти уже не актуальны. Человек в двадцать первом веке - существо мобильное. Доступ в сеть у него есть везде. В метро, на работе, дома, в отпуске, в кафе... И доступ к корреспонденции он хочет иметь везде и всегда, с минимальными ограничениями и максимальной функциональностью. К счастью, современные технологии в состоянии это обеспечить. Только для этого их нужно "правильно" использовать. И как раз о том что есть это самое "правильно" я и позволю себе немного порассуждать.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Итак, взяв за основу факт высокой степени мобильности современного человека вообще и "айтишника" в частности, мы можем сделать вывод, что хранение почты на какой-либо одной из многих рабочих станций пользователя (рабочей ли, домашней или какой-либо другой, даже ноутбуке) - атавизм. И естественно, у данной проблемы есть только одно решение - хранение почты на сервере с возможностью доступа к оному как минимум по двум протоколам - HTTP (через веб-интерфейс) и IMAP (почтовый клиент). Я бы охарактеризовал эти два протокола следующим образом (из этой характеристики в принципе видно почему именно эти два протокола необходимы и достаточны):&lt;br&gt;&lt;/br&gt;HTTP - мобильный  - доступен в любой точке мира, из-под любой ОС и любого ПО&lt;br&gt;&lt;/br&gt;IMAP - оперативный - необходим для постоянного пребывания "на связи". Т.е. как правило для внутриофисного использования&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Вторым важным моментом, на котором хотелось бы заострить внимание читателя - это сортировка почты. Для начала, определим само понятие сортировки почты в контексте данной проблематики. Как правило, сортировка почты в понимании большинства пользователей и создателей программных продуктов (как серверных, так и клиентских) - это обработка &lt;span style='font-weight: bold;'&gt;входящей&lt;/span&gt; корреспонденции и рассовывание её по разным каталогам в соответствии с некоторым набором правил. Причём средства задания правил бывают разной степени гибкости, но как правило гибкость эта где-то на уровне лома. Несмотря на употреблённое мной художественное сравнение пренебрежительного характера, я не думаю, что низкий уровень гибкости этих средств - зло. Отнюдь нет, он обеспечивает приемлемый результат при минимальной сложности освоения и использования. Но лично мне, и по всей видимости не только мне, этого недостаточно.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Можно даже отвлечься на минуту и порассуждать об истоках этой "недостаточности". Если, взяв за основу классическое правило "80 на 20", предположить, что 80% необходимых действий по сортировке корреспонденции с успехом реализуется набором примитивных правил, то оставшиеся 20% действий пользователю приходится выполнять вручную. И это путь... не скажу кого и куда, но уж точно не путь дзен и даже не unix-way. Последователи последнего из упомянутых "маршрутов" склонны добиваться даже не максимальной, а &lt;span style='font-weight: bold;'&gt;полной&lt;/span&gt; автоматизации того, что вообще возможно подвергнуть автоматизации.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&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;/br&gt;&lt;ul&gt;&lt;li&gt;правила сортировки должны быть сколь угодно гибкими&lt;/li&gt;&lt;li&gt;сортировке должна подвергаться &lt;span style='font-weight: bold;'&gt;вся&lt;/span&gt; корреспонденция, как входящая, так и исходящая, удалённая и пр.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;/br&gt;И всё бы было хорошо. Если бы не как всегда :) Потому что начинается необходимый в любом деле переход от теории к практике. Чтобы не запутаться, будем совершать сей переход поэтапно.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;span style='font-size: 130%;'&gt;Этап первый. Серверный&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;К счастью, всё современные почтовые сервисы (как публичные и бесплатные, так и внутрикорпоративные) поддерживают HTTP- и IMAP- доступ. С иными лучше просто не связываться. Для начала бросим беглый взгляд на ситуацию с общедоступными почтовыми сервисами. Большинство из них предоставляют пользователям инструментарий для сортировки почты. Тот самый, который делает 80% нужной нам работы. Впрочем, уже неплохо. Особенно если обратить отдельное внимание на google-mail, где сей процент несомненно много выше. Как минимум за счёт концептуального "неразделения" писем на входящие и исходящие. Вместо этого - более правильная ориентация на /смысловые/ (по нитям обсуждений) связи между объектами (письмами). Это в целом покрывает наше "второе расширение" понятия сортировки писем.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Кроме того, в google-mail используется гораздо более прогрессивная и во всех отношениях более удобная группировка объектов с использованием тэгов. Взамен традиционной ущербной деревообразной структуры (как правило каталогов). Но это просто небольшой реверанс в сторону google с целью обозначить одно из направлений, в котором ещё можно развивать технические и технологические средства. Этим и ограничимся.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Немного о себе :) Положа руку на сердце, вряд ли я бы стал копаться в этой теме и уж тем более писать то, что Вы сейчас читаете, если бы во внутрикорпоративном окружении моей и многих знакомых мне изнутри компаний почтовые сервера обеспечивали бы функционал, сравнимый с функционалом публичных бесплатных почтовых сервисов. Но ситуация такова, что в компаниях случается используются достаточно дорогостоящие программные средства, которые при этом по непонятным для меня причинам не имеют средств сортировки корреспонденции &lt;span style='font-weight: bold;'&gt;вообще&lt;/span&gt;. Первым этапом решения проблемы было использование ххх (подставьте сюда любой современный MUA с поддержкой IMAP и сортировки писем, я же не буду давать повода для придирок и конкретный продукт указывать не стану). Всё вроде бы работало более менее терпимо, пока не возникли следующие желания:&lt;br&gt;&lt;/br&gt;&lt;ul&gt;&lt;li&gt;более гибкой сортировки&lt;/li&gt;&lt;li&gt;более удобного в работе MUA&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;/br&gt;Начал я со второго. И поковырявшись в целой куче оных, как консольных так и гуёвых, остановил свой выбор на mutt (а если быть точным, то на &lt;a href='http://mutt-ng.berlios.de/'&gt;muttng&lt;/a&gt;). И в принципе, можно сказать, достиг гармонии с природой и самим собой. Одно лишь меня чуть не смутило - сортировку mutt делать не умеет. Надо сказать по вполне объективной причине - не его это дело :) Я уже упоминал в самом начале о старой доброй связке для получения почты с сервера на клиентскую машину и дальнейшей с ней работы. Один из этой тройки - procmail - как раз и призван был выполнять сортировку. А в выбранном нами пути ему, к сожалению, места не нашлось. Но останавливаться было поздно (да и одно только желание добиться возможности полностью перейти на использование mutt было немалым стимулом для решения последней оставшейся проблемы). И google привёл меня на сайт &lt;a href='http://imapfilter.hellug.gr/'&gt;http://imapfilter.hellug.gr/&lt;/a&gt;. За что ему, родимому, "респект и уважуха" (по непонятным мне самому причинам данное порождение языковых извращений меня весьма улыбает). Если вы сходили по приведённой мною ссылке, то я даже не знаю что и добавить :) Впрочем, немного всё же расскажу.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Итак, imapfilter. Эта программа предоставляет... пожалуй что неограниченные возможности по сортировке почты на сервере с доступом по протоколу IMAP. "Ядро" программы "всего лишь" исполняет тот набор правил сортировки (и не только), который вы ей задаёте. В общем-то, кроме этого ядро программы больше ничего и не делает, просто потому что больше от него и не требуется. Сам imapfilter решает следующие три крупные задачи:&lt;br&gt;&lt;/br&gt;&lt;ul&gt;&lt;li&gt;закрыть от пользователя все технические вопросы (в данном случае это реализация логики работы по протоколу IMAP);&lt;/li&gt;&lt;li&gt;предоставить инструментарий (imapfilter предоставляет весь необходимый набор действий над письмами в почтовом ящике, как то: перемещение, копирование, удаление, поиск по самым различным критериям и т.д. и т.п.);&lt;/li&gt;&lt;li&gt;обеспечить выполнение той логики, что пользователь опишет в конфигурации (в случае imapfilter - за счёт интеграции с имеющимся программным средством, о котором ниже).&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;/br&gt;Так, с ядром разобрались. Техническая сторона вопроса закрыта. Перейдём к прикладной части - к описанию правил сортировки. Правила эти в imapfilter задаются, с одной стороны, с использованием простейшего синтаксиса. Для написания простейших правил более чем достаточно просто взглянуть на примеры. Но на самом деле правила задаются путём написания их на интерпретируемом языке программирования &lt;a href='http://www.lua.org/'&gt;Lua&lt;/a&gt;. Что даёт в руки пользователю мощнейший инструмент для таких действий с почтой, на какие только способна его фантазия. К примеру, я использую этот инструмент не только для сортировки писем, но и для нотификации о наличии новых писем. И по моему мнению выбор языка в данном случае был сделан превосходный.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;span style='font-size: 130%;'&gt;Этап второй. Клиентский&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Дело в том, что выбранный мною подход к организации работы с почтой был во многом обусловлен полным отсутствием возможности сортировать почту в mutt. Таким образом, при использовании вышеописанной схемы (IMAP+imapfilter+MUA) требования к MUA самые минимальные. Ведь даже нотификацию ему можно не уметь делать. В данном случае её с успехом сделает imapfilter, а вернее Ваш собственный скрипт для него. В частности, в моём конфиге для imapfilter присутствует вывод в файл количества новых и непрочитанных сообщений (в примитивном формате &lt;a href='http://ru.wikipedia.org/wiki/CSV'&gt;csv&lt;/a&gt;), а для моего любимого &lt;a href='http://iki.fi/tuomov/ion/'&gt;менеджера окон&lt;/a&gt; написан маленький скрипт, выводящий эти значения из файла на панельку для всякого рода уведомлений (aka statusbar). И вроде бы можно сказать, что тут мы достаточно близки к true unix-way. Где любой front-end - это всего лишь front-end. Он всего лишь прослойка, единственная задача которого быть удобным пользователю, а уж в плане удобства, как известно, на вкус и цвет... фломастеры разные.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;span style='font-size: 130%;'&gt;Послесловие&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Основной мой "не рабочий" почтовый ящик находится на google-mail. Сортировка выполняется его средствами. Нотификация - расширение к моему основному браузеру (все догадались к какому, но я сегодня - образец политкорректности).&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Описанный здесь подход я использую на своём рабочем месте. И могу сказать, что настройка такой связки компонентов дала мне превосходный результат. И этим результатом я поделился с Вами. Искренне надеюсь, что это будет как минимум интересно, а может быть и полезно.&lt;br&gt;&lt;/br&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/13685060-115056559352710372?l=jagoterr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13685060&amp;postID=115056559352710372" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13685060/posts/default/115056559352710372" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13685060/posts/default/115056559352710372" /><link rel="alternate" type="text/html" href="http://jagoterr.blogspot.com/2006/06/email-ng.html" title="email-ng" /><author><name>JaGoTerr</name><uri>http://www.blogger.com/profile/12393628263108362210</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry></feed>

