tag:blogger.com,1999:blog-171313342007-11-14T12:46:54.934+02:00ПаксоблогАндрейhttp://www.blogger.com/profile/02386268073602354435noreply@blogger.comBlogger66125tag:blogger.com,1999:blog-17131334.post-1162556883195026282006-11-03T14:10:00.000+02:002006-11-03T14:28:03.246+02:00Мои скрипты: translit.py<pre><br /><span style="color: rgb(0, 0, 230);">"Russian Translit"</span><br /><span style="color: rgb(105, 105, 105);"># -*- coding: cp866 -*-</span><br /><span style="color: rgb(105, 105, 105);">#dron@amerigo 200611031405</span><br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">from</span> <span style="color: rgb(227, 74, 220);">string</span> <span style="color: rgb(128, 0, 0); font-weight: bold;">import</span> maketrans<br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">def</span> translit<span style="color: rgb(128, 128, 48);">(</span>s<span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">:</span><br /> <span style="color: rgb(0, 0, 230);">"Russian translit: converts 'привет'->'privet'"</span><br /> <span style="color: rgb(128, 0, 0); font-weight: bold;">assert</span> s <span style="color: rgb(128, 0, 0); font-weight: bold;">is</span> <span style="color: rgb(128, 0, 0); font-weight: bold;">not</span> <span style="color: rgb(227, 74, 220);">str</span><span style="color: rgb(128, 128, 48);">,</span> <span style="color: rgb(0, 0, 230);">"Error: argument MUST be string"</span><br /><br /> table1 <span style="color: rgb(128, 128, 48);">=</span> maketrans<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"абвгдеёзийклмнопрстуфхъыьэАБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЬЭ"</span><span style="color: rgb(128, 128, 48);">,</span> <span style="color: rgb(0, 0, 230);">"abvgdeezijklmnoprstufh'y'eABVGDEEZIJKLMNOPRSTUFH'Y'E"</span><span style="color: rgb(128, 128, 48);">)</span><br /> table2 <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(128, 0, 128);">{</span><span style="color: rgb(0, 0, 230);">'ж'</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(0, 0, 230);">'zh'</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">'ц'</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(0, 0, 230);">'ts'</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">'ч'</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(0, 0, 230);">'ch'</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">'ш'</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(0, 0, 230);">'sh'</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">'щ'</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(0, 0, 230);">'sch'</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">'ю'</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(0, 0, 230);">'ju'</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">'я'</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(0, 0, 230);">'ja'</span><span style="color: rgb(128, 128, 48);">,</span> <span style="color: rgb(0, 0, 230);">'Ж'</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(0, 0, 230);">'Zh'</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">'Ц'</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(0, 0, 230);">'Ts'</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">'Ч'</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(0, 0, 230);">'Ch'</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">'<br /><br /> <span style="color: rgb(128, 0, 0); font-weight: bold;">for</span> k <span style="color: rgb(128, 0, 0); font-weight: bold;">in</span> table2<span style="color: rgb(128, 128, 48);">.</span>keys<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">:</span><br /> s <span style="color: rgb(128, 128, 48);">=</span> s<span style="color: rgb(128, 128, 48);">.</span>replace<span style="color: rgb(128, 128, 48);">(</span>k<span style="color: rgb(128, 128, 48);">,</span>table2<span style="color: rgb(128, 128, 48);">[</span>k<span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">)</span><br /><br /> <span style="color: rgb(128, 0, 0); font-weight: bold;">return</span> s<span style="color: rgb(128, 128, 48);">.</span>translate<span style="color: rgb(128, 128, 48);">(</span>table1<span style="color: rgb(128, 128, 48);">)</span><br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">if</span> <span style="color: rgb(227, 74, 220);">__name__</span><span style="color: rgb(128, 128, 48);">=</span><span style="color: rgb(128, 128, 48);">=</span><span style="color: rgb(0, 0, 230);">"__main__"</span><span style="color: rgb(128, 128, 48);">:</span><br /> <span style="color: rgb(128, 0, 0); font-weight: bold;">print</span> translit<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"Привет питон. Что транслитерировать-то, я чёт не понял!"</span><span style="color: rgb(128, 128, 48);">)</span><br /></span></pre><br />Результат работы:<br /><code><br />C:\home\dron\work\python>translit.py<br />Privet piton. Chto transliterirovat'-to, ja chet ne ponjal!<br /></code><br /><br />То же самое, но на perl(<a href="http://www.mdsk.ru/tips/index.pl?theme=perl#48">источник</a>):<br /><pre><br /><span style='color:#800000; font-weight:bold; '>sub </span>translit<br /><span style='color:#800080; '>{</span><br /> <span style='color:#800000; font-weight:bold; '>my</span> $text <span style='color:#808030; '>=</span> <span style='color:#800000; font-weight:bold; '>shift</span><span style='color:#800080; '>;</span><br /> $text <span style='color:#808030; '>=</span><span style='color:#808030; '>~</span> <span style='color:#800000; font-weight:bold; '>y</span><span style='color:#800000; '>/</span><span style='color:#0000e6; '>абвгдеёзийклмнопрстуфхъыьэ</span><span style='color:#800000; '>/</span><span style='color:#0000e6; '>abvgdeezijklmnoprstufh'y'e</span><span style='color:#800000; '>/</span><span style='color:#800080; '>;</span><br /> $text <span style='color:#808030; '>=</span><span style='color:#808030; '>~</span> <span style='color:#800000; font-weight:bold; '>y</span><span style='color:#800000; '>/</span><span style='color:#0000e6; '>АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЬЭ</span><span style='color:#800000; '>/</span><span style='color:#0000e6; '>ABVGDEEZIJKLMNOPRSTUFH'Y'E</span><span style='color:#800000; '>/</span><span style='color:#800080; '>;</span><br /> <span style='color:#800000; font-weight:bold; '>my</span> %mchars <span style='color:#808030; '>=</span> <span style='color:#808030; '>(</span><span style='color:#0000e6; '>'ж'</span><span style='color:#808030; '>=</span><span style='color:#808030; '>></span><span style='color:#0000e6; '>'zh'</span><span style='color:#808030; '>,</span><span style='color:#0000e6; '>'ц'</span><span style='color:#808030; '>=</span><span style='color:#808030; '>></span><span style='color:#0000e6; '>'ts'</span><span style='color:#808030; '>,</span><span style='color:#0000e6; '>'ч'</span><span style='color:#808030; '>=</span><span style='color:#808030; '>></span><span style='color:#0000e6; '>'ch'</span><span style='color:#808030; '>,</span><span style='color:#0000e6; '>'ш'</span><span style='color:#808030; '>=</span><span style='color:#808030; '>></span><span style='color:#0000e6; '>'sh'</span><span style='color:#808030; '>,</span><span style='color:#0000e6; '>'щ'</span><span style='color:#808030; '>=</span><span style='color:#808030; '>></span><span style='color:#0000e6; '>'sch'</span><span style='color:#808030; '>,</span><br /> <span style='color:#0000e6; '>'ю'</span><span style='color:#808030; '>=</span><span style='color:#808030; '>></span><span style='color:#0000e6; '>'ju'</span><span style='color:#808030; '>,</span><span style='color:#0000e6; '>'я'</span><span style='color:#808030; '>=</span><span style='color:#808030; '>></span><span style='color:#0000e6; '>'ja'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'Ж'</span><span style='color:#808030; '>=</span><span style='color:#808030; '>></span><span style='color:#0000e6; '>'Zh'</span><span style='color:#808030; '>,</span><span style='color:#0000e6; '>'Ц'</span><span style='color:#808030; '>=</span><span style='color:#808030; '>></span><span style='color:#0000e6; '>'Ts'</span><span style='color:#808030; '>,</span><span style='color:#0000e6; '>'Ч'</span><span style='color:#808030; '>=</span><span style='color:#808030; '>></span><span style='color:#0000e6; '>'Ch'</span><span style='color:#808030; '>,</span><span style='color:#0000e6; '>'<br /> <span style='color:#0000e6; '>'Щ'</span><span style='color:#808030; '>=</span><span style='color:#808030; '>></span><span style='color:#0000e6; '>'Sch'</span><span style='color:#808030; '>,</span><span style='color:#0000e6; '>'Ю'</span><span style='color:#808030; '>=</span><span style='color:#808030; '>></span><span style='color:#0000e6; '>'Ju'</span><span style='color:#808030; '>,</span><span style='color:#0000e6; '>'Я'</span><span style='color:#808030; '>=</span><span style='color:#808030; '>></span><span style='color:#0000e6; '>'Ja'</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span><br /> <span style='color:#800000; font-weight:bold; '>for</span> <span style='color:#800000; font-weight:bold; '>my</span> $c <span style='color:#808030; '>(</span><span style='color:#800000; font-weight:bold; '>keys</span> %mchars<span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span><br /> $text <span style='color:#808030; '>=</span><span style='color:#808030; '>~</span> <span style='color:#800000; font-weight:bold; '>s</span><span style='color:#800000; '>/</span><span style='color:#0000e6; '>$c</span><span style='color:#800000; '>/</span><span style='color:#0000e6; '>$mchars</span><span style='color:#0000e6; '>{</span><span style='color:#0000e6; '>$c</span><span style='color:#0000e6; '>}</span><span style='color:#800000; '>/</span><span style='color:#800000; font-weight:bold; '>g</span><span style='color:#800080; '>;</span><br /> <span style='color:#800080; '>}</span><br /> <span style='color:#800000; font-weight:bold; '>return</span> $text<span style='color:#800080; '>;</span><br /><span style='color:#800080; '>}</span><br /></pre><br /><br /><br />Technorati Tags: <a href="http://technorati.com/tag/%D0%BC%D0%BE%D0%B8+%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%8B" rel="tag">мои+скрипты</a>, <a href="http://technorati.com/tag/python" rel="tag">python</a>, <a href="http://technorati.com/tag/translit" rel="tag">translit</a>, <a href="http://technorati.com/tag/perl" rel="tag">perl</a>Андрейhttp://www.blogger.com/profile/02386268073602354435noreply@blogger.comtag:blogger.com,1999:blog-17131334.post-1157097000335121232006-09-01T10:50:00.000+03:002006-10-03T13:04:50.216+03:00Афоризм<br/><a href="http://xekc.livejournal.com/268271.html" >xekc: Остановите землю, я посплю</a> <br/> <blockquote>100% проектов, которые вы не начали - провалились.<br />100% идей, которые вы не высказали - лажа.<br />100% того, что находится только в вашей голове - никчемно, ничего не стоит.<br /><br />Даже 1% одобрения это уже победа. Потому что иначе ноль.<br /></blockquote><br /><br />Красиво сказано.Андрейhttp://www.blogger.com/profile/02386268073602354435noreply@blogger.comtag:blogger.com,1999:blog-17131334.post-1155149063067391462006-08-09T21:44:00.000+03:002007-11-14T12:46:55.095+02:00t.y.p.o.r.g.a.n.i.s.m : ASCII-O-Matic<a href="http://www.typorganism.com/asciiomatic/">Typorganism</a> - занимательное flash-приложение, которое генерирует ASCII-представление изображения. Можно "аплоадить" свои изображения, но есть ограничение на размер - 60x50 px, есть экспорт в HTML, что весьма удобно.<br />Получается очень красиво, вот что на мое фото выдало:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/6102/1585/1600/me_ascii.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6102/1585/320/me_ascii.png" border="0" alt="" /></a><br /><br /><br />Technorati Tags: <a href="http://technorati.com/tag/%D0%BA%D1%80%D0%B0%D1%81%D0%B8%D0%B2%D0%BE" rel="tag">красиво</a>, <a href="http://technorati.com/tag/flash" rel="tag">flash</a>, <a href="http://technorati.com/tag/ascii" rel="tag">ascii</a><br /><br /><br /><p class="poweredbyperformancing">powered by <a href="http://performancing.com/firefox">performancing firefox</a></p>Андрейhttp://www.blogger.com/profile/02386268073602354435noreply@blogger.comtag:blogger.com,1999:blog-17131334.post-1154772823074718452006-08-05T12:54:00.000+03:002006-08-05T13:24:57.406+03:00Javascript: тест скорости в броузерах<a href="http://celtickane.com/">Sean Patrick</a> опубликовал занимательный материал под названием "<a href="http://celtickane.com/projects/jsspeed.php">Javascript Speed Tests</a>"<br />А вот результаты "прогона" тестов на мей рабочей машине(athlon64 3000+, 1Gb):<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/6102/1585/1600/javascript_benchmark.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6102/1585/320/javascript_benchmark.png" border="0" alt="" /></a><br />Результаты, признаться, удивили. Вопервых - <a href="http://www.opera.com/">Opera</a> почти в 4 раза шустрее <a href="http://www.mozilla.com/firefox/">огнелиса</a>.<br />Во-вторых - <a href="http://maxthon.ru/">Maxthon</a> в 2 раза быстрее <a href="http://www.microsoft.com/windows/ie/">MSIE</a>. Как такое может случиться, если он на движке MSIE, очень странно...<br /><br />Technorati Tags: <a href="http://technorati.com/tag/javascript" rel="tag">javascript</a>, <a href="http://technorati.com/tag/benchmark" rel="tag">benchmark</a>, <a href="http://technorati.com/tag/tests" rel="tag">tests</a>Андрейhttp://www.blogger.com/profile/02386268073602354435noreply@blogger.comtag:blogger.com,1999:blog-17131334.post-1154521183012178962006-08-02T15:19:00.000+03:002006-08-05T14:14:15.136+03:00Мои скрипты: mailman_debounce.pyИз предыдущего <a href="http://paxoblog.blogspot.com/2006/08/blog-post_02.html">поста</a> можно выявить, что 1084(35%) подписчиков не получают рассылки, ситуацию исправит следующий сценарий:<br /><pre><br /><span style="color: rgb(105, 105, 105);">#!/usr/bin/env python</span><br /><span style="color: rgb(105, 105, 105);">"""mailman tools: Unlocks ALL bounced users"""</span><br /><span style="color: rgb(105, 105, 105);">#mailman_debounce.py</span><br /><span style="color: rgb(105, 105, 105);">#dron@amerigo 200608021443</span><br /><span style="color: rgb(105, 105, 105);">#rev. 0.2</span><br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">import</span> sys<br />MM_HOME <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(0, 0, 230);">"/usr/local/mailman"</span><br />sys<span style="color: rgb(128, 128, 48);">.</span>path<span style="color: rgb(128, 128, 48);">.</span>append<span style="color: rgb(128, 128, 48);">(</span>MM_HOME <span style="color: rgb(128, 128, 48);">+</span> <span style="color: rgb(0, 0, 230);">"/scripts"</span><span style="color: rgb(128, 128, 48);">)</span> <span style="color: rgb(105, 105, 105);">#paths.py</span><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">import</span> paths<br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">from</span> Mailman <span style="color: rgb(128, 0, 0); font-weight: bold;">import</span> MailList<br /><span style="color: rgb(128, 0, 0); font-weight: bold;">from</span> Mailman <span style="color: rgb(128, 0, 0); font-weight: bold;">import</span> MemberAdaptor<br /><br />ml_name <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(0, 0, 230);">'spo'</span> <span style="color: rgb(105, 105, 105);">#change or sys.argv[1]</span><br /><br />ml <span style="color: rgb(128, 128, 48);">=</span> MailList<span style="color: rgb(128, 128, 48);">.</span>MailList<span style="color: rgb(128, 128, 48);">(</span>name<span style="color: rgb(128, 128, 48);">=</span>ml_name<span style="color: rgb(128, 128, 48);">,</span> lock<span style="color: rgb(128, 128, 48);">=</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">)</span><br />lockedlm <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(128, 128, 48);">[</span>m <span style="color: rgb(128, 0, 0); font-weight: bold;">for</span> m <span style="color: rgb(128, 0, 0); font-weight: bold;">in</span> ml<span style="color: rgb(128, 128, 48);">.</span>members<span style="color: rgb(128, 128, 48);">.</span>keys<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span> <span style="color: rgb(128, 0, 0); font-weight: bold;">if</span> ml<span style="color: rgb(128, 128, 48);">.</span>getDeliveryStatus<span style="color: rgb(128, 128, 48);">(</span>m<span style="color: rgb(128, 128, 48);">)</span> <span style="color: rgb(128, 128, 48);">=</span><span style="color: rgb(128, 128, 48);">=</span> MemberAdaptor<span style="color: rgb(128, 128, 48);">.</span>BYBOUNCE<span style="color: rgb(128, 128, 48);">]</span><br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">print</span> <span style="color: rgb(0, 0, 230);">"Bounced users found: %d"</span> <span style="color: rgb(128, 128, 48);">%</span> <span style="color: rgb(227, 74, 220);">len</span><span style="color: rgb(128, 128, 48);">(</span>lockedlm<span style="color: rgb(128, 128, 48);">)</span><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">for</span> lm <span style="color: rgb(128, 0, 0); font-weight: bold;">in</span> lockedlm<span style="color: rgb(128, 128, 48);">:</span><br /> ml<span style="color: rgb(128, 128, 48);">.</span>setDeliveryStatus<span style="color: rgb(128, 128, 48);">(</span>lm<span style="color: rgb(128, 128, 48);">,</span>MemberAdaptor<span style="color: rgb(128, 128, 48);">.</span>ENABLED<span style="color: rgb(128, 128, 48);">)</span><br /><br />ml<span style="color: rgb(128, 128, 48);">.</span>Save<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span> <span style="color: rgb(105, 105, 105);">#don't forget</span><br />ml<span style="color: rgb(128, 128, 48);">.</span>Unlock<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><br /><br />lockedlm <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(128, 128, 48);">[</span>m <span style="color: rgb(128, 0, 0); font-weight: bold;">for</span> m <span style="color: rgb(128, 0, 0); font-weight: bold;">in</span> ml<span style="color: rgb(128, 128, 48);">.</span>members<span style="color: rgb(128, 128, 48);">.</span>keys<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span> <span style="color: rgb(128, 0, 0); font-weight: bold;">if</span> ml<span style="color: rgb(128, 128, 48);">.</span>getDeliveryStatus<span style="color: rgb(128, 128, 48);">(</span>m<span style="color: rgb(128, 128, 48);">)</span> <span style="color: rgb(128, 128, 48);">=</span><span style="color: rgb(128, 128, 48);">=</span> MemberAdaptor<span style="color: rgb(128, 128, 48);">.</span>BYBOUNCE<span style="color: rgb(128, 128, 48);">]</span><br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">print</span> <span style="color: rgb(0, 0, 230);">"Bounced users found: %d, total: %d, disabled: %d"</span> <span style="color: rgb(128, 128, 48);">%</span> <span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(227, 74, 220);">len</span><span style="color: rgb(128, 128, 48);">(</span>lockedlm<span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">,</span> <span style="color: rgb(227, 74, 220);">len</span><span style="color: rgb(128, 128, 48);">(</span>ml<span style="color: rgb(128, 128, 48);">.</span>members<span style="color: rgb(128, 128, 48);">.</span>keys<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">,</span> <span style="color: rgb(227, 74, 220);"><br /> len</span><span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">[</span>m <span style="color: rgb(128, 0, 0); font-weight: bold;">for</span> m <span style="color: rgb(128, 0, 0); font-weight: bold;">in</span> ml<span style="color: rgb(128, 128, 48);">.</span>members<span style="color: rgb(128, 128, 48);">.</span>keys<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">) </span> <span style="color: rgb(128, 0, 0); font-weight: bold;">if</span> ml<span style="color: rgb(128, 128, 48);">.</span>getDeliveryStatus<span style="color: rgb(128, 128, 48);">(</span>m<span style="color: rgb(128, 128, 48);">)</span> <span style="color: rgb(128, 128, 48);">!</span><span style="color: rgb(128, 128, 48);">=</span> MemberAdaptor<span style="color: rgb(128, 128, 48);">.</span>ENABLED<span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">)</span><br /></pre><br />Результат исполнения:<br /><code><br />$ chmod +x mailman_debounce.py<br />$ ./mailman_debounce.py<br />Bounced users found: 1084<br />Bounced users found: 0, total: 3090, disabled: 0<br /></code><br /><br />Technorati Tags: <a href="http://technorati.com/tag/%D0%BC%D0%BE%D0%B8+%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%8B" rel="tag">мои+скрипты</a>, <a href="http://technorati.com/tag/python" rel="tag">python</a>, <a href="http://technorati.com/tag/mailman" rel="tag">mailman</a>Андрейhttp://www.blogger.com/profile/02386268073602354435noreply@blogger.comtag:blogger.com,1999:blog-17131334.post-1154509947487272062006-08-02T12:12:00.000+03:002006-08-02T12:27:30.616+03:00Новые соцсервисы по-русскиЗарегистрировался сегодня на <a href="http://www.blogus.ru/">блогусе</a>. На данный момент 10 человек классифицировали этот <a href="http://del.icio.us/url/ec688b4e085cf74e672882ff1bdd1720?settagview=list">интересный сервис</a> <i>[ 5*blogs 4*rating 4*search 3*blog 3*russian]</i>. Трудно не заметить что начался бум социальных сервисов. Пару дней назад, благодаря блогу <a href="http://softwaremaniacs.org/blog/">Ивана Сагалаева</a>, узнал о другом <a href="http://news2.ru/">новостном социальном сервисе</a>. Его уже 48 человек <a href="http://del.icio.us/url/6cb41c2b470d1d0de79114d03ac63058">протегировало</a>: <i>[30*news 23*web2.0 16*blog 12*russian 11*ajax 11*новости 7*digg 4*social 3*computers 3*internet 2*blogs 2*rss 2*ru 2*technology 2*web 2*каталог 2*ссылки]</i><br />Заметим, что они русскоязычные, а это не может не радовать. Самая очевидная ценность таких сервисов - быстро находить <b>ПОПУЛЯРНОЕ</b>, а-ля <a href="http://del.icio.us/popular">del.icio.us</a>. К примеру - <a href="http://del.icio.us/popular/web2.0">del.icio.us/popular/web2.0</a>, и мы даже видим "смежные популярности" - можно это даже сравнить с интерпретацией соотв. термина (<em>web2.0 - is</em>):<br /><code><br />ajax<br />tools<br />web<br />blog<br />social<br />design<br />webdesign<br />community<br />technology<br />javascript<br />rss<br /></code><br />В первом случае в поп(точнее в <a href="http://www.blogus.ru/pop/blogs/Default.aspx">топ</a>) попал <a href="http://drugoi.livejournal.com/">Журнал Другого</a>. А действительно классный фотоблог, <a href="http://pics.livejournal.com/drugoi/pic/0032sk96.jpg">фото</a> <a href="http://pics.livejournal.com/drugoi/pic/0032rw3r.jpg">отменные</a>.<br /><br />Вот, странно, что во втором случае топа нет, есть <a href="http://news2.ru/index.php?order=all">рекомендованные участниками новости</a>.<br /><br />Свободное тэгирование (free tagging) - суть <a href="http://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D0%BB%D0%BA%D1%81%D0%BE%D0%BD%D0%BE%D0%BC%D0%B8%D1%8F">фолксономии</a> является различительной чертой соцсервисов.<br />Будем следить за развитием.<br />Закладки по <a href="http://del.icio.us/areus/folksonomy">теме</a>.<br /><br />Technorati Tags: <a href="http://technorati.com/tag/social" rel="tag">social</a>, <a href="http://technorati.com/tag/по-русски" rel="tag">по-русски</a>, <a href="http://technorati.com/tag/интересные+блоги" rel="tag">интересные+блоги</a>Андрейhttp://www.blogger.com/profile/02386268073602354435noreply@blogger.comtag:blogger.com,1999:blog-17131334.post-1154381924510529852006-08-01T00:38:00.000+03:002006-08-05T14:52:24.223+03:00Far: plugin-ы, проверенные временемКогда я начинал работать в <a href="http://bstport.berdyansk.net">порту</a>(на момент 31.08.03) список <a href="http://plugring.farmanager.com/">плагинов</a> <a href="http://farmanager.com/">far</a>'а был следующим:<br /><code><br />bc │Background copy (v1.0 build 50 release). <br />Branch14 │Branch(Ветвь каталога) <br />Calc │FAR Manager Calculator v3.0 <br />ClpSelect │Select-From-Clipboard Plugin <br />colorer-take5.beta1a │syntax highlighting and text parsing library <br />Compare │Advanced compare <br />DescSelect11 │Description Search/Select <br />Dirhotlist10 │Directory Hotlist <br />Editor │Editor Plugins <br />EMenu │Explorer Context Menu <br />esc19 │[ESC] Editor's settings changer 1.9 <br />FARCmds │FAR Commands <br />FarDocBrowser101 │Browsing, viewing and changing contents of compound fil<br />FarEnv102 │Switching between different environment profiles <br />FarMail30b5 │SMTP/POP3/IMAP4 клиент. Форматы сообщений: текст, HTML,<br />farnav18r5 │Far Navigator (ProxyFtp) plugin <br />farreg215 │Registry Browser Plugin for FAR <br />FarSvc21 │Service Manager <br />FileCase │File names case conversion <br />Frb100b5 │allows to work with resources in .exe and .dll files. F<br />Help150 │*.CHM Help <br />HlfViewer │HLF-file Viewer <br />hyperview11r7 │Этот плагин позволяет просматривать html-файлы,текст пр<br />ICache05 │MSIE cache browser v1.05 <br />InstExpl01 │InstallExplorer Ver 0.1 <br />lookdbf │DBF-files view, change and export <br />MacroView21_rc9 │Manipulating FAR macro commands v2.1 <br />MailView10b2 │MailView 1.0 beta 2 plugin <br />mrrip0_15_23_24b │Плагин для выдирания различных файлов из недр других фа<br />MultiArc │Archive support plugin <br />NamedFolders148 │Named Folders <br />Network │Network browser plugin <br />PEditor04 │Редактор PE файлов <br />PrintMan │Print manager <br />ProcList │Process list <br />ShLnk121 │Shell file and folder link support <br />SpecialFld │Special Folders <br />StaMgr11a │Startup Manager 1.1a <br />TextNavigate │Text Navigator plugin for FAR 1.70b4+ <br />TmpPanel │Temporary panel <br />trtpl119 │True Template <br />Uinst13 │FarUInst 1.3 beta <br />UWizard09 │Unicode Wizard (version 0.9) <br />WEB │WEB Editor 1.002 (BeNuts) <br />WLL_V101 │WindowsList v.1.01 <br /></code><br />Сейчас(на момент 01.08.07) он сузился:<br /><code><br />7z │4.32 7-Zip Plugin for FAR Manager<br />ActiveHelp │3.01 for opening windows help files<br />bc │1.2b54 view/edit/copy/move/delete/run with Unicode supp<br />ClipSel │1.1 Select-From-Clipboard<br />Colorer │Colorer-take5 Library beta4. $Date: 2005/04/28 14:18:08<br />Compare │Advanced compare<br />DescSS │1.1 Description Search & Select<br />Editor │Editor Plugins<br />EMenu │Explorer Context Menu<br />Esc │2.3 Editor's settings changer<br />FARCmds │FAR Commands<br />FarNav │1.9.r2 ProxyKit for FAR manager<br />FarReg │2.19 Registry Browser Plugin for FAR<br />FarSvc │2.1 Service Manager<br />FileCase │File names case conversion<br />FTP │FTP client<br />HlfViewer │HLF-file Viewer<br />HyperView │1.1.r7 view html files in internal editor<br />MacroView │2.4.rc1<br />MailView │1.0b7<br />MultiArc │Archive support plugin<br />NamedFolders │1.4.8 fast access to local, net and virtual directorie<br />Network │Network browser plugin<br />PEditor │0.4 PE(Portable Executable) Editor<br />PrintMan │Print manager<br />ProcList │Process list<br />Resource │1.0b5 Resource Browser<br />TextNavigate │0.1 Text Navigator plugin for FAR 1.70b4+<br />TmpPanel │Temporary panel<br />TrueTemplate │1.28 True Template<br />Uninstall │1.09 Удаление программ<br />UWizard │1.6 Unicode Wizard<br />WebEd │1.002 WEB Editor (BeNuts)<br />WinScp │1.4.2 WinSCP as FAR Plugin<br />WL │1.01 WindowsList<br /></code><br />три года прошло, и что сменилось? Остались самые "проверенные".<br /><br />Technorati Tags: <a href="http://technorati.com/tag/far" rel="tag">far</a>, <a href="http://technorati.com/tag/plugins" rel="tag">plugins</a>, <a href="http://technorati.com/tag/%D0%BC%D0%BE%D0%B8+%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B8" rel="tag">мои+сборки</a><br /><br /><p class="poweredbyperformancing">powered by <a href="http://performancing.com/firefox">performancing firefox</a></p>Андрейhttp://www.blogger.com/profile/02386268073602354435noreply@blogger.comtag:blogger.com,1999:blog-17131334.post-1154343864929145262006-07-31T13:20:00.000+03:002006-07-31T19:21:27.066+03:00Мои скрипты: renbycue.py<span style="font-weight: bold;">Разрежем большой MP3, протегируем малые по CUE-файлу</span>.<br />Скачал я альбом с помощью осла - <a href="ed2k://%7Cfile%7CVA_-_Safi_Connection_The_Remixes-2006-UPE.rar%7C123212337%7C6A07AD217D605782B1621471564A3D0A%7C/">VA_-_Safi_Connection_The_Remixes</a><br />А он весь одним большим mp3 (118Mb), решил порезать, благо прилагался cue-файл следующего содержания:<br /><pre><br />PERFORMER <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 230);">VA</span><span style="color: rgb(128, 0, 0);">"</span><br />TITLE <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 230);">Safi Connection The Remixes</span><span style="color: rgb(128, 0, 0);">"</span><br />FILE <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 230);">01-va_-_safi_connection_the_remixes-upe.mp3</span><span style="color: rgb(128, 0, 0);">"</span> MP3<br />TRACK <span style="color: rgb(0, 140, 0);">01</span> AUDIO<br />TITLE <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 230);">Hello Houston Spiritual Enhancer Rmx</span><span style="color: rgb(128, 0, 0);">"</span><br />PERFORMER <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 230);">Safi Connection</span><span style="color: rgb(128, 0, 0);">"</span><br />FLAGS DCP<br />INDEX <span style="color: rgb(0, 140, 0);">01</span> <span style="color: rgb(135, 69, 160);">00:00:00</span><br /><br /><span style="color: rgb(128, 128, 48);">.</span><span style="color: rgb(128, 128, 48);">.</span><span style="color: rgb(128, 128, 48);">.</span><br /><br />TRACK <span style="color: rgb(0, 140, 0);">10</span> AUDIO<br />TITLE <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 230);">Fullon String Elec 3 Rmx</span><span style="color: rgb(128, 0, 0);">"</span><br />PERFORMER <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 230);">Safi Connection</span><span style="color: rgb(128, 0, 0);">"</span><br />FLAGS DCP<br />INDEX <span style="color: rgb(0, 140, 0);">00</span> <span style="color: rgb(0, 140, 0);">67</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(135, 69, 160);">05:01</span><br />INDEX <span style="color: rgb(0, 140, 0);">01</span> <span style="color: rgb(0, 140, 0);">67</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(135, 69, 160);">07:01</span><br /></pre><br /><br />Дядька Curt сказал что нарезает в <a href="http://www.steinberg.net/">WaveLab</a> , я и последовал его рекомендации. Нашел этот инструмент на <a href="http://wzor.net/modules.php?name=News&file=article&sid=3791">Wzor</a>'е и у <a href="http://fixdown.com/soft/7850.asp">китайцев</a>.<br />Для упрощения "нарезки", написал следующий сценарий на <a href="http://python.ru">python</a>:<br /><pre><br /><span style="color: rgb(0, 0, 230);">"cue info - print info from *.cue"</span><br /><br /><span style="color: rgb(105, 105, 105);">#cuei.py</span><br /><span style="color: rgb(105, 105, 105);">#rev. 0.2<br /></span><span style="color: rgb(105, 105, 105);">#dron@amerigo 200607311244</span><br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">import</span> sys<br /><span style="color: rgb(128, 0, 0); font-weight: bold;">from</span> datetime <span style="color: rgb(128, 0, 0); font-weight: bold;">import</span> timedelta<br /><span style="color: rgb(128, 0, 0); font-weight: bold;">from</span> ID3 <span style="color: rgb(128, 0, 0); font-weight: bold;">import</span> <span style="color: rgb(128, 128, 48);">*</span><br /><br />all <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(227, 74, 220);">open</span><span style="color: rgb(128, 128, 48);">(</span>sys<span style="color: rgb(128, 128, 48);">.</span>argv<span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">.</span>read<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><br />tracks <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(128, 128, 48);">[</span>el<span style="color: rgb(128, 128, 48);">.</span>split<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"\n"</span><span style="color: rgb(128, 128, 48);">)</span> <span style="color: rgb(128, 0, 0); font-weight: bold;">for</span> el <span style="color: rgb(128, 0, 0); font-weight: bold;">in</span> all<span style="color: rgb(128, 128, 48);">.</span>split<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"TRACK"</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">]</span><br />label <span style="color: rgb(128, 128, 48);">=</span> tracks<span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">0</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">0</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">.</span>replace<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"PERFORMER"</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">""</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">.</span>strip<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(128, 128, 48);">-</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">]</span><br />album <span style="color: rgb(128, 128, 48);">=</span> tracks<span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">0</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">.</span>replace<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"TITLE"</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">""</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">.</span>strip<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(128, 128, 48);">-</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">]</span><br /><br />starts <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(128, 128, 48);">]</span><br />tracklist <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(128, 128, 48);">]</span><br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">for</span> i <span style="color: rgb(128, 0, 0); font-weight: bold;">in</span> <span style="color: rgb(227, 74, 220);">range</span><span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">,</span> <span style="color: rgb(227, 74, 220);">len</span><span style="color: rgb(128, 128, 48);">(</span>tracks<span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">:</span><br />title <span style="color: rgb(128, 128, 48);">=</span> tracks<span style="color: rgb(128, 128, 48);">[</span>i<span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">.</span>replace<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"TITLE"</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">""</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">.</span>strip<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(128, 128, 48);">-</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">]</span><br />artist <span style="color: rgb(128, 128, 48);">=</span> tracks<span style="color: rgb(128, 128, 48);">[</span>i<span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">2</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">.</span>replace<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"PERFORMER"</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">""</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">.</span>strip<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(128, 128, 48);">-</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">]</span><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">if</span> tracks<span style="color: rgb(128, 128, 48);">[</span>i<span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">3</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">.</span>strip<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">.</span>startswith<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"FLAGS"</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">:</span><br /> startfrom <span style="color: rgb(128, 128, 48);">=</span> tracks<span style="color: rgb(128, 128, 48);">[</span>i<span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">4</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">.</span>strip<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(128, 128, 48);">-</span><span style="color: rgb(0, 140, 0);">8</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(128, 128, 48);">]</span><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">else</span><span style="color: rgb(128, 128, 48);">:</span><br /> startfrom <span style="color: rgb(128, 128, 48);">=</span> tracks<span style="color: rgb(128, 128, 48);">[</span>i<span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">3</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">.</span>strip<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(128, 128, 48);">-</span><span style="color: rgb(0, 140, 0);">8</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(128, 128, 48);">]</span><br /><br /><span style="color: rgb(128, 128, 48);">(</span>h<span style="color: rgb(128, 128, 48);">,</span>m<span style="color: rgb(128, 128, 48);">,</span>s<span style="color: rgb(128, 128, 48);">)</span> <span style="color: rgb(128, 128, 48);">=</span> startfrom<span style="color: rgb(128, 128, 48);">.</span>split<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">":"</span><span style="color: rgb(128, 128, 48);">)</span><br />t <span style="color: rgb(128, 128, 48);">=</span> timedelta<span style="color: rgb(128, 128, 48);">(</span><br /> hours<span style="color: rgb(128, 128, 48);">=</span><span style="color: rgb(227, 74, 220);">int</span><span style="color: rgb(128, 128, 48);">(</span>h<span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">,</span><br /> minutes<span style="color: rgb(128, 128, 48);">=</span><span style="color: rgb(227, 74, 220);">int</span><span style="color: rgb(128, 128, 48);">(</span>m<span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">,</span><br /> seconds<span style="color: rgb(128, 128, 48);">=</span><span style="color: rgb(227, 74, 220);">int</span><span style="color: rgb(128, 128, 48);">(</span>s<span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">)</span><br /><br />starts<span style="color: rgb(128, 128, 48);">.</span>append<span style="color: rgb(128, 128, 48);">(</span>t<span style="color: rgb(128, 128, 48);">)</span><br />tracklist<span style="color: rgb(128, 128, 48);">.</span>append<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"%d: %s - %s, from: %s,"</span> <span style="color: rgb(128, 128, 48);">%</span><br /> <span style="color: rgb(128, 128, 48);">(</span>i<span style="color: rgb(128, 128, 48);">,</span> artist<span style="color: rgb(128, 128, 48);">,</span> title<span style="color: rgb(128, 128, 48);">,</span> startfrom<span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">)</span><br /><br />lengths <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(128, 128, 48);">]</span><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">for</span> i <span style="color: rgb(128, 0, 0); font-weight: bold;">in</span> <span style="color: rgb(227, 74, 220);">range</span><span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(227, 74, 220);">len</span><span style="color: rgb(128, 128, 48);">(</span>starts<span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">-</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">,</span> <span style="color: rgb(0, 140, 0);">0</span><span style="color: rgb(128, 128, 48);">,</span> <span style="color: rgb(128, 128, 48);">-</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">:</span><br />lengths<span style="color: rgb(128, 128, 48);">.</span>append<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(227, 74, 220);">str</span><span style="color: rgb(128, 128, 48);">(</span>starts<span style="color: rgb(128, 128, 48);">[</span>i<span style="color: rgb(128, 128, 48);">]</span> <span style="color: rgb(128, 128, 48);">-</span> starts<span style="color: rgb(128, 128, 48);">[</span>i<span style="color: rgb(128, 128, 48);">-</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">)</span><br /><br />lengths<span style="color: rgb(128, 128, 48);">.</span>reverse<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><br />lengths<span style="color: rgb(128, 128, 48);">.</span>append<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"??:??:??"</span><span style="color: rgb(128, 128, 48);">)</span><br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">for</span> i <span style="color: rgb(128, 0, 0); font-weight: bold;">in</span> <span style="color: rgb(227, 74, 220);">range</span><span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 140, 0);">0</span><span style="color: rgb(128, 128, 48);">,</span> <span style="color: rgb(227, 74, 220);">len</span><span style="color: rgb(128, 128, 48);">(</span>tracklist<span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">:</span><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">print</span> tracklist<span style="color: rgb(128, 128, 48);">[</span>i<span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">,</span> lengths<span style="color: rgb(128, 128, 48);">[</span>i<span style="color: rgb(128, 128, 48);">]</span><br /></pre><br />Он парсит *.cue и вычисляет длину треков(длины часто не совпадают с заявленными в cue).<br />Вот его результат его работы:<br /><code><br />C:\mp3>python cuei.py 01-va_-_safi_connection_the_remixes-upe.cue<br />1: Safi Connection - Hello Houston Spiritual Enhancer Rmx, from: 00:00:00, 7:09:<br />2: Elec 3 feat. Anna K. - Define Yourself Safi Connection Rmx, from: 07:09:48, 7<br />3: Safi Connection And Saly D - Humna Lights Smhug Rmx, from: 14:17:37, 8:25:12<br />4: Smhug - Decode Safi Connection Rmx, from: 22:42:49, 7:25:15<br />5: Safi Connection - Solaric Seeds Life Style Rmx, from: 30:07:64, 6:53:39<br />6: Safi Connection - Froze Uriya Rmx, from: 37:01:43, 7:01:11<br />7: Safi Connection - Tarazan And JD-J Burn In Noise Rmx, from: 44:02:54, 7:12:10<br />8: Lemurians - Systematic Waves Safi Connection Rmx, from: 51:15:04, 7:03:18<br />9: Safi Connection - Figga Nigga Parrket Rmx, from: 58:18:22, 8:46:39<br />10: Safi Connection - Fullon String Elec 3 Rmx, from: 67:05:01, ??:??:??<br /></code><br />Далее "нарезал" 10 mp3-файлов, сохраняя каждый под его порядковым номером:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/6102/1585/1600/py_mp3_cue_wavelab_out_ss.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/6102/1585/320/py_mp3_cue_wavelab_out_ss.jpg" alt="" border="0" /></a><br />А вот скрипт, который все переименует и расставит mp3-тэги(точнее id3-тэги):<br /><pre><br /><span style="color: rgb(0, 0, 230);">"Renames and tags \d+.mp3 in './' by cue-file"</span><br /><br /><span style="color: rgb(105, 105, 105);">#renbycue.py</span><br /><span style="color: rgb(105, 105, 105);">#rev. 0.3</span><br /><span style="color: rgb(105, 105, 105);">#dron@amerigo 200607311241</span><br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">import</span> os<span style="color: rgb(128, 128, 48);">,</span> sys<br /><span style="color: rgb(128, 0, 0); font-weight: bold;">from</span> ID3 <span style="color: rgb(128, 0, 0); font-weight: bold;">import</span> <span style="color: rgb(128, 128, 48);">*</span><br /><br />all <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(227, 74, 220);">open</span><span style="color: rgb(128, 128, 48);">(</span>sys<span style="color: rgb(128, 128, 48);">.</span>argv<span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">.</span>read<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><br />tracks <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(128, 128, 48);">[</span>el<span style="color: rgb(128, 128, 48);">.</span>split<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"\n"</span><span style="color: rgb(128, 128, 48);">)</span> <span style="color: rgb(128, 0, 0); font-weight: bold;">for</span> el <span style="color: rgb(128, 0, 0); font-weight: bold;">in</span> all<span style="color: rgb(128, 128, 48);">.</span>split<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"TRACK"</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">]</span><br /><br /><br />perf <span style="color: rgb(128, 128, 48);">=</span> tracks<span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">0</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">0</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">.</span>replace<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"PERFORMER"</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">""</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">.</span>strip<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(128, 128, 48);">-</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">]</span><br />album <span style="color: rgb(128, 128, 48);">=</span> tracks<span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">0</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">.</span>replace<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"TITLE"</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">""</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">.</span>strip<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(128, 128, 48);">-</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">]</span><br /><br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">print</span> album<span style="color: rgb(128, 128, 48);">,</span> perf<br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">for</span> i <span style="color: rgb(128, 0, 0); font-weight: bold;">in</span> <span style="color: rgb(227, 74, 220);">range</span><span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">,</span> <span style="color: rgb(227, 74, 220);">len</span><span style="color: rgb(128, 128, 48);">(</span>tracks<span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">:</span><br />title <span style="color: rgb(128, 128, 48);">=</span> tracks<span style="color: rgb(128, 128, 48);">[</span>i<span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">.</span>replace<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"TITLE"</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">""</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">.</span>strip<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(128, 128, 48);">-</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">]</span><br />artist <span style="color: rgb(128, 128, 48);">=</span> tracks<span style="color: rgb(128, 128, 48);">[</span>i<span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">2</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">.</span>replace<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"PERFORMER"</span><span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">""</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">.</span>strip<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(128, 128, 48);">-</span><span style="color: rgb(0, 140, 0);">1</span><span style="color: rgb(128, 128, 48);">]</span><br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">if</span> tracks<span style="color: rgb(128, 128, 48);">[</span>i<span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">3</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">.</span>strip<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">.</span>startswith<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"FLAGS"</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">:</span> <span style="color: rgb(105, 105, 105);">#pass FLAGS</span><br /> startfrom <span style="color: rgb(128, 128, 48);">=</span> tracks<span style="color: rgb(128, 128, 48);">[</span>i<span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">4</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">.</span>strip<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(128, 128, 48);">-</span><span style="color: rgb(0, 140, 0);">8</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(128, 128, 48);">]</span><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">else</span><span style="color: rgb(128, 128, 48);">:</span><br /> startfrom <span style="color: rgb(128, 128, 48);">=</span> tracks<span style="color: rgb(128, 128, 48);">[</span>i<span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(0, 140, 0);">3</span><span style="color: rgb(128, 128, 48);">]</span><span style="color: rgb(128, 128, 48);">.</span>strip<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">[</span><span style="color: rgb(128, 128, 48);">-</span><span style="color: rgb(0, 140, 0);">8</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(128, 128, 48);">]</span><br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">print</span> <span style="color: rgb(0, 0, 230);">"%s - %s, %s"</span> <span style="color: rgb(128, 128, 48);">%</span> <span style="color: rgb(128, 128, 48);">(</span>artist<span style="color: rgb(128, 128, 48);">,</span> title<span style="color: rgb(128, 128, 48);">,</span> startfrom<span style="color: rgb(128, 128, 48);">)</span><br />mp3 <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(0, 0, 230);">"%d.mp3"</span> <span style="color: rgb(128, 128, 48);">%</span> i<br /><span style="color: rgb(128, 0, 0); font-weight: bold;">try</span><span style="color: rgb(128, 128, 48);">:</span><br /> id3 <span style="color: rgb(128, 128, 48);">=</span> ID3<span style="color: rgb(128, 128, 48);">(</span>mp3<span style="color: rgb(128, 128, 48);">)</span><br /> id3<span style="color: rgb(128, 128, 48);">.</span>title <span style="color: rgb(128, 128, 48);">=</span> title<br /> id3<span style="color: rgb(128, 128, 48);">.</span>artist <span style="color: rgb(128, 128, 48);">=</span> artist<br /> id3<span style="color: rgb(128, 128, 48);">.</span>genre <span style="color: rgb(128, 128, 48);">=</span> id3<span style="color: rgb(128, 128, 48);">.</span>find_genre<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(0, 0, 230);">"psychadelic"</span><span style="color: rgb(128, 128, 48);">)</span><br /> id3<span style="color: rgb(128, 128, 48);">.</span>track <span style="color: rgb(128, 128, 48);">=</span> i<br /> id3<span style="color: rgb(128, 128, 48);">.</span>year <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(0, 0, 230);">"2006"</span><br /> id3<span style="color: rgb(128, 128, 48);">.</span>comment <span style="color: rgb(128, 128, 48);">=</span> <span style="color: rgb(0, 0, 230);">"renbycue03.py"</span><br /> id3<span style="color: rgb(128, 128, 48);">.</span>album <span style="color: rgb(128, 128, 48);">=</span> perf <span style="color: rgb(128, 128, 48);">+</span> <span style="color: rgb(0, 0, 230);">" "</span> <span style="color: rgb(128, 128, 48);">+</span> album<br /><br /> <span style="color: rgb(128, 0, 0); font-weight: bold;">print</span> id3<br /><br /><span style="color: rgb(128, 0, 0); font-weight: bold;">except</span> InvalidTagError<span style="color: rgb(128, 128, 48);">,</span> message<span style="color: rgb(128, 128, 48);">:</span><br /> <span style="color: rgb(128, 0, 0); font-weight: bold;">print</span> <span style="color: rgb(0, 0, 230);">"Invalid ID3 tag:"</span><span style="color: rgb(128, 128, 48);">,</span> message<br /><br />id3<span style="color: rgb(128, 128, 48);">.</span>write<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><br />id3<span style="color: rgb(128, 128, 48);">.</span><span style="color: rgb(227, 74, 220);">file</span><span style="color: rgb(128, 128, 48);">.</span>close<span style="color: rgb(128, 128, 48);">(</span><span style="color: rgb(128, 128, 48);">)</span><br />os<span style="color: rgb(128, 128, 48);">.</span>rename<span style="color: rgb(128, 128, 48);">(</span>mp3<span style="color: rgb(128, 128, 48);">,</span><span style="color: rgb(0, 0, 230);">"%02d-%s-%s.mp3"</span> <span style="color: rgb(128, 128, 48);">%</span> <span style="color: rgb(128, 128, 48);">(</span>i<span style="color: rgb(128, 128, 48);">,</span> artist<span style="color: rgb(128, 128, 48);">,</span> title<span style="color: rgb(128, 128, 48);">)</span><span style="color: rgb(128, 128, 48);">)</span><br /></pre><br />Использовал готовую библиотеку <a href="http://id3-py.sourceforge.net/">id3-py</a>.<br />Запустим на выполнение сценарий:<br /><code><br />C:\mp3>python renbycue.py 01-va_-_safi_connection_the_remixes-upe.cue<br />Album : VA Safi Connection The Remixes Track : 6 Year: 2006<br />Comment: renbycue03.py Genre : Psychadelic (67)<br />Safi Connection - Tarazan And JD-J Burn In Noise Rmx, 44:02:54<br />File : 7.mp3<br />Title : Tarazan And JD-J Burn In Noise Artist: Safi Connection<br />Album : VA Safi Connection The Remixes Track : 7 Year: 2006<br />Comment: renbycue03.py Genre : Psychadelic (67)<br />Lemurians - Systematic Waves Safi Connection Rmx, 51:15:04<br />File : 8.mp3<br />Title : Systematic Waves Safi Connecti Artist: Lemurians<br />Album : VA Safi Connection The Remixes Track : 8 Year: 2006<br />Comment: renbycue03.py Genre : Psychadelic (67)<br />Safi Connection - Figga Nigga Parrket Rmx, 58:18:22<br />File : 9.mp3<br />Title : Figga Nigga Parrket Rmx Artist: Safi Connection<br />Album : VA Safi Connection The Remixes Track : 9 Year: 2006<br />Comment: renbycue03.py Genre : Psychadelic (67)<br />Safi Connection - Fullon String Elec 3 Rmx, 67:05:01<br />File : 10.mp3<br />Title : Fullon String Elec 3 Rmx Artist: Safi Connection<br />Album : VA Safi Connection The Remixes Track : 10 Year: 2006<br />Comment: renbycue03.py Genre : Psychadelic (67)<br /></code><br />В исходной папке вырисовывается следующее:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/6102/1585/1600/py_mp3_cue_renbycue_out_ss.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/6102/1585/320/py_mp3_cue_renbycue_out_ss.png" alt="" border="0" /></a><br />Проверим наличие id3-тэгов с помощью <a href="http://www.winamp.com/">winamp</a>(Alt+3):<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/6102/1585/1600/py_mp3_cue_renbycue_winamp_tags_ss.3.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/6102/1585/320/py_mp3_cue_renbycue_winamp_tags_ss.3.png" alt="" border="0" /></a><br /><br />Мои закладки по теме <a href="http://del.icio.us/areus/python+mp3">тут</a>.<br /><br /><br /><br />Technorati Tags: <a href="http://technorati.com/tag/python" rel="tag">python</a>, <a href="http://technorati.com/tag/mp3" rel="tag">mp3</a>, <a href="http://technorati.com/tag/cue" rel="tag">cue</a>, <a href="http://technorati.com/tag/music" rel="tag">music</a>, <a href="http://technorati.com/tag/edit" rel="tag">edit</a>, <a href="http://technorati.com/tag/%D0%BC%D0%BE%D0%B8+%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%8B" rel="tag">мои+скрипты</a>Андрейhttp://www.blogger.com/profile/02386268073602354435noreply@blogger.comtag:blogger.com,1999:blog-17131334.post-1154335865986508442006-07-31T11:51:00.000+03:002006-07-31T13:07:25.080+03:00Монтируем iso-шки (Alcohol 120%)У лучшего менеджера виртуальных дисков <a href="http://www.alcohol-software.com/">Alcohol 120%</a>, который всегда можно скачать бесплатно у <a href="http://fixdown.com/soft/4697.asp">китайцев</a>. Есть замечательная утилита командной строки axcmd.exe("C:\Program Files\Alcohol Soft\Alcohol 120\AxCmd.exe").<br /><code><br />axcmd.exe /?<br />- покажет нам возможные аргументы.<br /></code><br />Это дает возможность "прикрутить" его к пользовательскому меню Far(F2), дабы упростить(ускорить) монтирование образов дисков:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/6102/1585/1600/far_alco120_mount_ss.0.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/6102/1585/320/far_alco120_mount_ss.0.png" alt="" border="0" /></a><br />Пример использования - становимся на образ и жмем [F2, m]:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/6102/1585/1600/far_alco120_mount_using_ss.6.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6102/1585/320/far_alco120_mount_using_ss.6.png" border="0" alt="" /></a><br /><br />Можно имортировать мою веточку реестра:<br /><pre><br /><span style="color: rgb(227, 74, 220);">REGEDIT4</span><br /><span style="color: rgb(105, 105, 105);">;far_alco120_mount_menu.reg</span><br /><span style="color: rgb(105, 105, 105);">;dron@amerigo 200607311137</span><br /><br />[HKEY_CURRENT_USER\Software\Far\UserMenu\MainMenu\Item3]<br /><span style="color: rgb(105, 105, 105);">;change Item3 to ItemXX</span><br /><span style="color: rgb(0, 0, 230);">"HotKey"</span>=<span style="color: rgb(0, 0, 230);">"m"</span><br /><span style="color: rgb(0, 0, 230);">"Label"</span>=<span style="color: rgb(0, 0, 230);">"Mount with Alcohol !.!"</span><br /><span style="color: rgb(0, 0, 230);">"Submenu"</span>=<span style="color: rgb(128, 0, 0); font-weight: bold;">dword</span><span style="color: rgb(128, 128, 48);">:</span><span style="color: rgb(0, 128, 0);">00000000</span><br /><span style="color: rgb(0, 0, 230);">"Command0"</span>=<span style="color: rgb(0, 0, 230);">"\"%programfiles%\\Alcohol Soft<br />\\Alcohol 120\\AxCmd.exe\" 1: /M:!.!"</span><br /></pre><br /><br /><br />Technorati Tags: <a href="http://technorati.com/tag/far" rel="tag">far</a>, <a href="http://technorati.com/tag/menu" rel="tag">menu</a>, <a href="http://technorati.com/tag/mount" rel="tag">mount</a>, <a href="http://technorati.com/tag/iso" rel="tag">iso</a>, <a href="http://technorati.com/tag/alcohol120" rel="tag">alcohol120</a>Андрейhttp://www.blogger.com/profile/02386268073602354435noreply@blogger.comtag:blogger.com,1999:blog-17131334.post-1154272408645709622006-07-30T18:13:00.000+03:002006-07-30T23:04:04.986+03:00getRelativeTime() на русском<a href="http://gorod-omsk.ru/blog/pythy/2006/07/16/getrelativetime-in-russian/">Pythy о Python » Блог Архив » getRelativeTime() на русском</a> <br/><blockquote>Эхия Чеботар написал <a href="http://jehiah.com/archive/printing-relative-dates-in-python">getRelativeTime()</a>, функцию для отображения относительной даты текстом, а я адаптировал эту функцию к русскому языку.<br/></blockquote><br/><br/>Да это просто супер:<br/><br/><code><br/> />>> from russianRelativeDates import *<br/> />>> import time<br/> />>> def a(x, *args, **kwargs):<br/>... print getRelativeTime(x, *args, **kwargs).encode('utf-8')<br/>...<br/> />>> def b(x, *args, **kwargs):<br/>... print getRelativeTimeStr(x, *args, **kwargs).encode('utf-8')<br/>...<br/> />>> x = time.time() - 1000<br/> />>> a(x)<br/>17 минут назад<br/> />>> x -= 12345<br/> />>> a(x)<br/>3 часа назад<br/> />>> x += 543211<br/> />>> a(x)<br/>через 6 дней<br/> />>> a(x, accuracy=2)<br/>через 6 дней 3 часа<br/> />>> b("07/20/06 1823")<br/>через 3 дня<br/> />>> b("07/10/06 1823")<br/>6 дней назад<br/> />>> b("07/10/06 1823", accuracy=2)<br/>6 дней 4 часа назад<br/> />>> b("07/15/06 1823")<br/>вчера<br/></code><br/>Наиболее вероятное применение, для отображения даты постов, и комментариев.<br/><br/>Technorati Tags: <a href="http://technorati.com/tag/python" rel="tag">python</a>, <a href="http://technorati.com/tag/date" rel="tag">date</a>, <a href="http://technorati.com/tag/time" rel="tag">time</a>, <a href="http://technorati.com/tag/library" rel="tag">library</a>, <a href="http://technorati.com/tag/интересные+блоги" rel="tag">интересные+блоги</a><br/><br/><p class="poweredbyperformancing">powered by <a href="http://performancing.com/firefox">performancing firefox</a></p>Андрейhttp://www.blogger.com/profile/02386268073602354435noreply@blogger.comtag:blogger.com,1999:blog-17131334.post-1154270922662244052006-07-30T17:48:00.000+03:002006-07-30T23:05:13.530+03:00Subversion ProxyЧтобы svn.exe в windows "ходил" через proxy, импортировал следующий reg-файл:<br/><pre><br/><font>REGEDIT4</span><br/><br/>[HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Servers\global]<br/><font>"http-proxy-host"</span>=<font>"127.0.0.1"</span><br/><font>"http-proxy-port"</span>=<font>"8192"</span><br/><font>"http-compression"</span>=<font>"yes"</span><br/><br/></pre><br/>Прочитал в документации, идущей в комплекте.<br/>Проверил - работает!<br/><br/>Technorati Tags: <a href="http://technorati.com/tag/subversion" rel="tag">subversion</a>, <a href="http://technorati.com/tag/registry" rel="tag">registry</a>, <a href="http://technorati.com/tag/windows" rel="tag">windows</a>, <a href="http://technorati.com/tag/proxy" rel="tag">proxy</a><br/><br/><p class="poweredbyperformancing">powered by <a href="http://performancing.com/firefox">performancing firefox</a></p>Андрейhttp://www.blogger.com/profile/02386268073602354435noreply@blogger.comtag:blogger.com,1999:blog-17131334.post-1154007371163518632006-07-27T15:25:00.000+03:002006-07-27T16:49:45.093+03:00Мои скрипты: reget.js<pre><br /><span style="color:#696969;">//reget.js</span><br /><span style="color:#696969;">//dron@amerigo 200607271503</span><br /><span style="color:#696969;">//description: adds url to RegetDx query</span><br /><span style="color:#696969;">//rev 0.1</span><br /><span style="FONT-WEIGHT: bold;color:#800000;" >var</span> oArgs <span style="color:#808030;">=</span> WScript<span style="color:#808030;">.</span>Arguments<br /><span style="FONT-WEIGHT: bold;color:#800000;" >switch</span><span style="color:#808030;">(</span>oArgs<span style="color:#808030;">.</span>Count<span style="color:#808030;">(</span><span style="color:#808030;">)</span><span style="color:#808030;">)</span> <span style="color:#800080;">{</span><br /> <span style="FONT-WEIGHT: bold;color:#800000;" >case</span> <span style="color:#008c00;">1</span><span style="color:#800080;">:</span> reget<span style="color:#808030;">(</span>oArgs<span style="color:#808030;">(</span><span style="color:#008c00;">0</span><span style="color:#808030;">)</span><span style="color:#808030;">)</span><span style="color:#800080;">;</span> <span style="FONT-WEIGHT: bold;color:#800000;" >break</span><br /> <span style="FONT-WEIGHT: bold;color:#800000;" >case</span> <span style="color:#008c00;">2</span><span style="color:#800080;">:</span> reget<span style="color:#808030;">(</span>oArgs<span style="color:#808030;">(</span><span style="color:#008c00;">0</span><span style="color:#808030;">)</span><span style="color:#808030;">,</span> oArgs<span style="color:#808030;">(</span><span style="color:#008c00;">1</span><span style="color:#808030;">)</span><span style="color:#808030;">)</span><span style="color:#800080;">;</span> <span style="FONT-WEIGHT: bold;color:#800000;" >break</span><br /> <span style="FONT-WEIGHT: bold;color:#800000;" >case</span> <span style="color:#008c00;">3</span><span style="color:#800080;">:</span> reget<span style="color:#808030;">(</span>oArgs<span style="color:#808030;">(</span><span style="color:#008c00;">0</span><span style="color:#808030;">)</span><span style="color:#808030;">,</span> oArgs<span style="color:#808030;">(</span><span style="color:#008c00;">1</span><span style="color:#808030;">)</span><span style="color:#808030;">,</span> oArgs<span style="color:#808030;">(</span><span style="color:#008c00;">2</span><span style="color:#808030;">)</span><span style="color:#808030;">)</span><span style="color:#800080;">;</span> <span style="FONT-WEIGHT: bold;color:#800000;" >break</span><br /> <span style="FONT-WEIGHT: bold;color:#800000;" >case</span> <span style="color:#008c00;">0</span><span style="color:#800080;">:</span><br /> <span style="FONT-WEIGHT: bold;color:#800000;" >default</span><span style="color:#800080;">:</span><br /> WScript<span style="color:#808030;">.</span>Echo<span style="color:#808030;">(</span><span style="color:#0000e6;">"Usage:</span><span style="color:#0f69ff;">\r</span><span style="color:#0f69ff;">\n</span><span style="color:#0000e6;">reget <URL> [Description] [StartNow]"</span><span style="color:#808030;">)</span><br /><span style="color:#800080;">}</span><br /><br /><br /><span style="FONT-WEIGHT: bold;color:#800000;" >function</span> reget<span style="color:#808030;">(</span>url<span style="color:#808030;">,</span> descr<span style="color:#808030;">,</span> start<span style="color:#808030;">)</span> <span style="color:#800080;">{</span><br /> <span style="FONT-WEIGHT: bold;color:#800000;" >if</span><span style="color:#808030;">(</span><span style="color:#808030;">!</span><span style="color:#800000;">/</span><span style="color:#0000e6;">tp:</span><span style="color:#0f69ff;">\/</span><span style="color:#0f69ff;">\/</span><span style="color:#808030;">.</span><span style="color:#0000e6;">{5}</span><span style="color:#800000;">/</span><span style="color:#808030;">.</span><span style="FONT-WEIGHT: bold;color:#800000;" >test</span><span style="color:#808030;">(</span>url<span style="color:#808030;">)</span><span style="color:#808030;">)</span> <span style="color:#800080;">{</span><br /> WScript<span style="color:#808030;">.</span>Echo<span style="color:#808030;">(</span><span style="color:#0000e6;">"Bad URL: "</span> <span style="color:#808030;">+</span> url<span style="color:#808030;">)</span><br /> <span style="FONT-WEIGHT: bold;color:#800000;" >return</span> <span style="color:#0f4d75;">false</span><br /> <span style="color:#800080;">}</span><br /> <span style="FONT-WEIGHT: bold;color:#800000;" >var</span> oReget <span style="color:#808030;">=</span> WScript<span style="color:#808030;">.</span>CreateObject<span style="color:#808030;">(</span><span style="color:#0000e6;">"ReGetDx.ReGet2Api"</span><span style="color:#808030;">)</span> <span style="color:#696969;">//As New ReGet2Api</span><br /> <span style="FONT-WEIGHT: bold;color:#800000;" >var</span> oRD <span style="color:#808030;">=</span> oReget<span style="color:#808030;">.</span>AddDownload<span style="color:#808030;">(</span>url<span style="color:#808030;">)</span> <span style="color:#696969;">//As ReGet2Download</span><br /> <span style="FONT-WEIGHT: bold;color:#800000;" >if</span><span style="color:#808030;">(</span>descr<span style="color:#808030;">)</span> oRD<span style="color:#808030;">.</span>String<span style="color:#808030;">(</span><span style="color:#008c00;">12</span><span style="color:#808030;">)</span> <span style="color:#808030;">=</span> descr <span style="color:#696969;">//tagPROPERTY_ID.PID_sInfo = 12</span><br /> <span style="FONT-WEIGHT: bold;color:#800000;" >if</span><span style="color:#808030;">(</span>start<span style="color:#808030;">)</span> oRD<span style="color:#808030;">.</span>StartDownload<span style="color:#808030;">(</span><span style="color:#808030;">)</span><br /><br /><span style="FONT-WEIGHT: bold;color:#800000;" >return</span> <span style="color:#0f4d75;">true</span><br /><span style="color:#800080;">}</span><br /></pre><br />Свойства и методы "вычислил" в VBA(F2):<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4679/2761/1600/vba_reget_ss.png"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger/4679/2761/320/vba_reget_ss.png" border="0" /></a><br />Название объекта(ProgID) подсмотрел в реестре:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4679/2761/1600/far_reget_reg_ss.png"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger/4679/2761/320/far_reget_reg_ss.png" border="0" /></a><br />Если, положить reget.js в папочку, что в $PATH, то из командной строки использовать можно так:<br /><br /><code><br />c:\>reget.js URL ["Описание"] [startnow]<br />например:<br />c:\>reget.js ftp://ftp.elf.stuba.sk/pub/pc/pack/uharc06b.zip<br /></code><br />Можно(а для этого и было написано), в командных файлах использовать:<br /><pre><br /><span style="color:#696969;">::using_reget.cmd</span><br /><span style="color:#696969;">::dron@amerigo 200607271545</span><br /><span style="color:#696969;">:: describes using of reget.js script</span><br /><span style="color:#808030;">@</span><span style="FONT-WEIGHT: bold;color:#800000;" >echo off</span><br /><span style="color:#696969;">::adding urls from file,</span><br /><span style="color:#696969;">::with datetime as description</span><br /><span style="color:#696969;">::and starting download</span><br /><span style="FONT-WEIGHT: bold;color:#800000;" >for</span> <span style="color:#808030;">/</span>f %%u <span style="FONT-WEIGHT: bold;color:#800000;" >in</span> <span style="color:#808030;">(</span>'<span style="FONT-WEIGHT: bold;color:#800000;" >type</span> urllist.txt'<span style="color:#808030;">)</span> <span style="FONT-WEIGHT: bold;color:#800000;" >do</span> <span style="color:#808030;">(</span><br />reget.js %%u <span style="color:#0000e6;">"Added at %DATE% %TIME%"</span> startnow<br /><span style="color:#808030;">)</span><br /><span style="color:#696969;">::download warez from wzor.net</span><br /><span style="color:#696969;">::Abstract wzor-page has some like that:</span><br /><span style="color:#696969;">::DownLoad ... [1],[2],[3],[4],[5],[6],[7]</span><br /><span style="color:#696969;">::if 1st link like this:</span><br /><span style="color:#696969;">::http://koshak.wzor.net:8108/0406/MD5/audition15p1.zip</span><br /><span style="color:#696969;">::we have 7 parts, so:</span><br /><span style="FONT-WEIGHT: bold;color:#800000;" >for</span> <span style="color:#808030;">/</span>l %%p <span style="FONT-WEIGHT: bold;color:#800000;" >in</span> <span style="color:#808030;">(</span><span style="color:#008c00;">1</span><span style="color:#808030;">,</span><span style="color:#008c00;">1</span><span style="color:#808030;">,</span><span style="color:#008c00;">7</span><span style="color:#808030;">)</span> <span style="FONT-WEIGHT: bold;color:#800000;" >do</span> <span style="color:#808030;">(</span><br /><span style="FONT-WEIGHT: bold;color:#800000;" >echo</span><span style="color:#0000e6;"> Adding part #%%p...</span><br />reget.js <span style="color:#0000e6;">"http://koshak.wzor.net:8108/0406/MD5/audition15p%%p.zip"</span><br /><span style="color:#808030;">)</span><br /><span style="color:#696969;">::note, that in cmdline we are using ONE '%' on var, so:</span><br /><span style="color:#696969;">::c:\>for /l %p in (1,1,7) do reget.js "http://URL/part/%p.zip"</span><br /></pre><p><br />А почему именно Reget?<br /><a href="http://reget.com/">Reget</a> поддерживает такую фичу как обновление описаний файлов(жить без нее не могу), что очень удобно(и красиво <a href="http://plugring.farmanager.com/cgi-bin/downld.cgi?Draw=List&Sort=Date&SelectCateg=Addons&Select=PlugIn&SelectPlugIn=23&SelectAuthor=0&SelectOther=1&SearchText=">интегрируется</a> с <a href="http://farmanager.com/">Far</a>-ом), да и с <a href="http://www.mozilla.org/projects/firefox/">огнелисом</a> он быстро интегрируется с помощью расширения с названием <a href="http://www.flashgot.net/">FlashGot</a>.</p><p>Вскоре опишу Reget + <a href="http://del.icio.us/areus/powershell">PowerShell</a>...<br /><br />Technorati Tags: <a href="http://technorati.com/tag/мои+скрипты" rel="tag">мои скрипты</a>, <a href="http://technorati.com/tag/wsh" rel="tag">wsh</a>, <a href="http://technorati.com/tag/jscript" rel="tag">jscript</a>, <a href="http://technorati.com/tag/reget" rel="tag">reget</a>, <a href="http://technorati.com/tag/com" rel="tag">com</a>, <a href="http://technorati.com/tag/automation" rel="tag">automation</a>, <a href="http://technorati.com/tag/commandline" rel="tag">commandline</a>, <a href="http://technorati.com/tag/far" rel="tag">far</a>, <a href="http://technorati.com/tag/scripting" rel="tag">scripting</a></p>Андрейhttp://www.blogger.com/profile/02386268073602354435noreply@blogger.comtag:blogger.com,1999:blog-17131334.post-1153995679936693842006-07-27T13:21:00.000+03:002006-07-27T13:21:20.110+03:00CannabolaСегодня дядька Curt прислал по аське ссылочку занимательную, впечатлило...<br /><a href="http://forum.arbuz.uz/index.php?s=9646888c5b0271a74ca5095e1b66f42c&showtopic=998&st=10">Arbuz -> Каннабола</a> <br /> <blockquote>У меня одногрупник курсовую защищал. И он использовал Каннаболу в своей работе. Было очень интересно смотреть на её график, спроецированный проектором на стену в присутствии умных дядечек. Заголовок над графиком гласил: "Проверим полученные результаты на Каннаболе. График этой функции показан на рисунке." </blockquote><br /><br />Все началось <a href="http://supman.livejournal.com/24810.html">отсюда</a>:<br /> <blockquote>supman и biojane вывели математическую формулу конопляного листа: R = (1+sin(t)) (1+.9cos(8t)) (1+.1cos(24t)) график функции в полярных координатах выглядит следующим образом:<br /></blockquote><br /><img src="http://supman.rinet.ru/pics/cannabis_plot.gif" /><br />Какой же фуррор призвел этот пост, сколько любителей математики нашлось и высказалось по поводу.<br />Интересное мнение высказано <a href="http://ezhe.ru/ib/issue.html?289">тут</a>.<br />Мне очень нравится.<br /><br /><br />Technorati Tags: <a href="http://technorati.com/tag/cannabola" rel="tag">cannabola</a>, <a href="http://technorati.com/tag/прикольно" rel="tag">прикольно</a>, <a href="http://technorati.com/tag/математика" rel="tag">математика</a>, <a href="http://technorati.com/tag/math" rel="tag">math</a>, <a href="http://technorati.com/tag/красиво" rel="tag">красиво</a>Андрейhttp://www.blogger.com/profile/02386268073602354435noreply@blogger.comtag:blogger.com,1999:blog-17131334.post-1153944969128777962006-07-26T23:16:00.000+03:002006-07-26T23:42:21.550+03:00Г.И.Гурджиев: Последний час жизниПредставьте, что вам осталось жить всего лишь несколько минут, может быть, час, и каким-то образом вы точно узнали, когда вам суждено умереть. Что бы вы сделали с последним драгоценным часом своего пребывания на земле?<br /><br />Если бы вы смогли завершить все свои дела за этот последний час, есть ли у вас сознание того, как это сделать?<br /><br />И испуская последний вздох, будете ли вы испытывать удовлетворение от того, что вы сделали в своей жизни все возможное для выполнения своих обязательств перед природой и своим "Я"?<br /><br />Важен не только сам последний час, важны и последние впечатления. "Последние впечатления" создают переход для будущих проявлений, если такие будут иметь место. Освобождение от низших гармоний ничего не дает, так как в конце концов все забывается, и тебя снова возвращают в этот мир. Забывается даже то, что ты хотел освобождения, чтобы стать Буддой.<br /><br />В реальном Мире все космосы присутствуют одновременно, всегда вибрируя, всегда поджидая, как сын ждет отца-моряка. В мире проявленном все имеет начало и все имеет конец. В Реальном Мире все всегда присутствует, и в один прекрасный день вам позволяется все забыть и покинуть его "навсегда".<br /><br />Свобода в миллион раз ценнее освобождения. Свободный человек и в рабстве остается сам себе хозяин. Например, я вам даю что-то, скажем, автомобиль, в котором нет горючего, поэтому автомобиль не может двинуться в путь. Вашему автомобилю требуется особое горючее, но только вы сами в состоянии определить, что это за горючее и где его получить.<br /><br />Вы должны сами определить, как переработать мои идеи, чтобы сделать их своими, только вам принадлежащими. Ваш автомобиль не может работать на том особом горючем, на котором работает мой автомобиль. Я предлагаю вам лишь исходное сырье. Вы обязаны извлечь из этого сырья то, что можете использовать вы. Смелее садитесь за руль.<br /><br />Органическая жизнь очень хрупкая. В любой момент планетарное тело может умереть. Оно всегда живет на волосок от смерти. И если вам удалось прожить еще один день, то это всего лишь нечаянно данный вам природой шанс. Если вам доведется прожить хотя бы еще час, то можете считать себя счастливчиком. С самого зачатия мы живем за счет времени, взятого взаймы.<br /><br />Живя в этом мире вы должны чувствовать смерть ежесекундно, поэтому держите свои дела в порядке, даже в последний свой час. Но как же узнать наверняка, который час окажется последним? Для верности улаживайте свои дела с природой и самим собой каждый данный вам час жизни, тогда вы никогда не окажетесь застигнутым врасплох. Этому человека должны обучать еще в школе, так же как правильно дышать, есть, двигаться и умирать. Это должно стать частью программы образования. В ней должно быть включено обучение, как демонстрировать наличие "Я", а так же, как формировать сознание.<br /><br />Вопрос: Как поступать если не чувствуешь, что что-то осталось недоделанным?<br /><br /><em>Г. ответил не сразу. Он вздохнул и ответил так</em>:<br /><br />Спроси себя, кому придется туго, если ты умрешь, как собака. В момент смерти надо полностью осознавать себя и чувствовать, что ты сделал все возможное, чтобы во всей полноте использовать данную тебе жизнь.<br /><br />Сейчас вы знаете о себе не слишком много. Но с каждым днем вы копаете все глубже и глубже этот мешок с костями и узнаете все больше и больше подробностей. День за днем вы будете открывать для себя, что вы не успели сделать и что нужно переделать из того, что вами сделано. Реальный человек это тот, кто выжал из жизни все, что в ней было ценного, и сказал: "Теперь можно и умереть". Надо стараться прожить свою жизнь так, что в любой день можно было сказать себе: "Сегодня я могу умереть, ни о чем не жалея".<br /><br />Никогда не тратьте понапрасну последний час своей жизни, так как он может стать для вас самым главным. Если плохо им распорядиться, то потом можно пожалеть. То душевное волнение, которое вы сейчас испытываете, может стать для вас мощным источником той силы, которая может подготовить вас к безупречной смерти. Зная, что следующий час станет для вас последним, впитывайте впечатления, которые он вам принесет, как истинный гурман. Когда Госпожа Смерть вас позовет, будьте всегда к этому готовы. Мастер знает, как извлечь из каждого лакомого кусочка последнюю каплю самого ценного. Учитесь быть мастерами жизни.<br /><br />В молодости я учился ремеслу изготовления духов. Я учился получать из жизни ее эссенцию, ее тончайшие свойства. Во всем ищите наиболее ценное, умейте отделить тончайшее от грубого. Тот, кто научился извлекать эссенцию, самое ценное из каждого момента жизни, тот обладает сознанием любого качества.<br /><br />Он не способен на то, что сделал бы с миром какой-нибудь дикарь.<br /><br />Возможно, в последние мгновенья жизни у вас не будет выбора, где или с кем быть, но за вами останется выбор, насколько ценно вы их проведете. Умение извлекать ценное из жизни - то же самое, что извлекать из пищи, воздуха и