<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.5" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>mblsha-o-rama</title>
	<link>http://mblsha.psi-im.org</link>
	<description>Weblog about Psi, the universe, and everything</description>
	<pubDate>Sun, 18 Feb 2007 21:26:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.5</generator>
	<language>en</language>
			<item>
		<title>Formatting Your C++ Code the Easy Way</title>
		<link>http://mblsha.psi-im.org/2006/11/29/formatting-your-c-code-the-easy-way/</link>
		<comments>http://mblsha.psi-im.org/2006/11/29/formatting-your-c-code-the-easy-way/#comments</comments>
		<pubDate>Thu, 30 Nov 2006 01:02:42 +0000</pubDate>
		<dc:creator>mblsha</dc:creator>
		
		<category>Programming</category>

		<category>TextMate</category>

		<guid isPermaLink="false">http://mblsha.psi-im.org/2006/11/29/formatting-your-c-code-the-easy-way/</guid>
		<description><![CDATA[Everyone has his own coding style and dislikes everyone else&#8217;s. When you have to work with code written by other people, there&#8217;s a ton of it, and their coding style differs from yours in many ways, you have to do something.

As for Psi project, we in fact have some set of code style guidelines. But [...]]]></description>
			<content:encoded><![CDATA[<p>Everyone has his own coding style and dislikes everyone else&#8217;s. When you have to work with code written by other people, there&#8217;s a ton of it, and their coding style differs from yours in many ways, you have to do something.</p>

<p>As for Psi project, we in fact have some set of <a href="http://psi-im.org/wiki/Contributing_Patches#Code_style.2Fconvention">code style guidelines</a>. But still sometimes we occasionally are looking at something that&#8217;s noticeably differs from our sense of perfection.  </p>

<p>That&#8217;s where <a href="http://en.wikipedia.org/wiki/Prettyprint#Code_formatting_and_beautification">code beautifiers</a> come into play.</p>

<p><a id="more-22"></a></p>

<p>Enter <a href="http://astyle.sourceforge.net/">Artistic Style</a>. Small, neat and cross-platform C, C++, C# and Java code beautifier.</p>

<h2>Installing Artistic Style</h2>

<p><strong>UPDATE:</strong> As of astyle-1.20 release, building it on Mac OS X is simple with provided <kbd>build/Makefile</kbd>.</p>

<p><strike>
As there is <a href="http://sourceforge.net/project/showfiles.php?group_id=2319">Windows-binary</a> available on the site and a Makefile is present in the source package, it doesn&#8217;t cleanly build itself on <a href="http://www.apple.com/macosx/">Mac OS X</a>, because it doesn&#8217;t know about some of osx-specific compilation flags, so it just crashes on start. And here&#8217;s that flag, if you&#8217;re curious:</p>

<p><code>-headerpad_max_install_names</code></p>

<p>You could either modify your Makefile with this knowledge, or could use a tool to produce the Makefile automatically: <kbd>qmake -project &amp;&amp; qmake</kbd>. After that, it&#8217;s just a single <kbd>make</kbd> away from getting your hands on the binary.</p>

<p>I have packaged both resulting <tt>Makefile</tt> and <tt>astyle.pro</tt> in <a href="http://www.mblsha.psi-im.org/files/astyle-1.19-makefile.tar.gz">one package</a>.
</strike></p>

<h2>Using Artistic Style</h2>

<p>Pipe a file to the executable, or specify file name as the argument: result is the same — code is reformatted, and is either written to the stdout, or to the file. <strike>And it also dumps an advertisement to the stderr, so don&#8217;t forget to <kbd>2> /dev/null</kbd>.</strike></p>

<p>The following command line gives the result most closely resembling what we describe in the <a href="http://psi-im.org/wiki/Contributing_Patches#Code_style.2Fconvention">Psi Code Style Guidelines</a>:</p>

<p><code>astyle --mode=c --indent=tab=4 --brackets=linux --brackets=break-closing --min-conditional-indent=0 --pad=oper --unpad=paren &amp;&amp; echo ""</code></p>

<h2>TextMate Command</h2>

<p>And that&#8217;s not all! To reap all benefits without having to resort to fiddling with command line, I&#8217;ve prepared a <a href="http://mblsha.psi-im.org/files/Beautify%20C%3AC%2B%2B%20%3F%20Psi.tmCommand">super-special limited edition TextMate command</a>. Grab it while it&#8217;s hot! Limited supply offer!</p>
]]></content:encoded>
			<wfw:commentRss>http://mblsha.psi-im.org/2006/11/29/formatting-your-c-code-the-easy-way/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Qt Bundle for TextMate: Prerelease</title>
		<link>http://mblsha.psi-im.org/2006/06/25/qt-bundle-for-textmate-prerelease/</link>
		<comments>http://mblsha.psi-im.org/2006/06/25/qt-bundle-for-textmate-prerelease/#comments</comments>
		<pubDate>Sun, 25 Jun 2006 13:21:22 +0000</pubDate>
		<dc:creator>mblsha</dc:creator>
		
		<category>TextMate</category>

		<guid isPermaLink="false">http://mblsha.psi-im.org/2006/06/25/qt-bundle-for-textmate-prerelease/</guid>
		<description><![CDATA[UPDATE: I&#8217;ve put some stuff from my bundle to the official TextMate Bundle Repository. Now you could skip all this stuff and just use the GetBundle Bundle.

Long time, no posts, and truth to be said, I&#8217;ve been secretly working on Qt Bundle for TextMate all along, and now you can have your hands on it. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>UPDATE</strong>: I&#8217;ve put some stuff from my bundle to the official <a href="http://macromates.com/wiki/Main/SubversionCheckout">TextMate Bundle Repository</a>. Now you could skip all this stuff and just use the <a href="http://validcode.net/stuff/textmate-getbundle-bundle">GetBundle Bundle</a>.</p>

<p>Long time, no posts, and truth to be said, I&#8217;ve been secretly working on Qt Bundle for <a href="http://macromates.com">TextMate</a> all along, and now you can have your hands on it. Today I will discuss how to install it on your Mac. Description of what it actually does will follow, so explore it on your own and make suggestions.</p>

<p><a id="more-18"></a></p>

<h3>Getting individual bundles together</h3>

<p>As specified in <a href="http://macromates.com/textmate/manual/bundles#installing_a_bundle">official TextMate manual</a> you can pull individual bundles from subversion repositories thought the world. In order to install Qt bundle, execute following commands:</p>

<p><code>mkdir -p /Library/Application\ Support/TextMate/Bundles<br />
cd /Library/Application\ Support/TextMate/Bundles<br />
svn co svn://dev.psi-im.org/mblsha/textmate/Qt.tmbundle
</code></p>

<p>This way you&#8217;ll get only the bundles you want.</p>

<p>To update the bundle at a later time, create a simple shell script with these commands:</p>

<p><code>cd /Library/Application\ Support/TextMate/Bundles<br />
svn up *.tmbundle<br />
osascript -e 'tell application "TextMate" to reload bundles'
</code></p>

<h3>The more the merrier</h3>

<p>If you absolutely want to have all the latest and greatest, you may opt to get all the bundles from TextMate&#8217;s repository, but be careful: there are so much, you&#8217;ll have to disable most of them by hand. This is simple.</p>

<p><code>mkdir -p /Library/Application\ Support/TextMate/<br />
cd /Library/Application\ Support/TextMate/<br />
svn --username anon --password anon co \
   http://macromates.com/svn/Bundles/trunk/Bundles
</code></p>

<p>Then you&#8217;ll have to add <tt>svn:extrenals</tt> property to Bundles directory in order to automatically update Qt bundle:</p>

<p><code>svn propset svn:externals 'Qt.tmbundle svn://dev.psi-im.org/mblsha/textmate/Qt.tmbundle' Bundles</code></p>

<p>But please be wary that if you already have some <tt>svn:externals</tt> set, you should use <tt>svn propedit</tt> command instead.</p>

<p>After this setup getting Qt bundle is just a simple matter of <tt>svn up Bundles</tt>.</p>

<h3>Finishing touches</h3>

<p>After initial check out you should perform a couple of small steps to enable quick documentation lookup:</p>

<ol>
<li>Start <em>Qt Assistant</em>.</li>
<li>Open <em>Index</em> on the Sidebar and wait until the index is created.</li>
<li>Quit <em>Qt Assistant</em>.</li>
<li>Now the index is created and saved to disk.</li>
<li>Open <em>Terminal</em> and execute following commands:<br />
<code>cd /Library/Application\ Support/TextMate/Bundles/Qt.tmbundle/Support/lib/assistant_search<br />
qmake &amp;&amp; make</code></li>
<li>Now <em>Documentation for Word</em> command will actually work.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://mblsha.psi-im.org/2006/06/25/qt-bundle-for-textmate-prerelease/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Time for Markdown</title>
		<link>http://mblsha.psi-im.org/2006/04/08/time-for-markdown/</link>
		<comments>http://mblsha.psi-im.org/2006/04/08/time-for-markdown/#comments</comments>
		<pubDate>Sat, 08 Apr 2006 12:16:33 +0000</pubDate>
		<dc:creator>mblsha</dc:creator>
		
		<category>Web</category>

		<guid isPermaLink="false">http://mblsha.psi-im.org/2006/04/08/time-for-markdown/</guid>
		<description><![CDATA[Phew! I just finished converting all my posts from HTML to Markdown format to get a grasp of how the things should be done and it was really inspiring. 

What is Markdown? It&#8217;s yet another markup language for the web which has very nice syntax. With its help now I finally can read my blog&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Phew! I just finished converting all my posts from HTML to <a href="http://daringfireball.net/projects/markdown">Markdown</a> format to get a grasp of how the things should be done and it was really inspiring. </p>

<p>What is <a href="http://daringfireball.net/projects/markdown">Markdown</a>? It&#8217;s yet another markup language for the web which has very nice <a href="http://daringfireball.net/projects/markdown/syntax">syntax</a>. With its help now I finally can read my blog&#8217;s posts&#8217; text paragraphs with tons of links. Also, it&#8217;s possible to use a full power of HTML markup in Markdown — that&#8217;s very useful too. Now I like it even more than <a href="http://en.wikipedia.org/wiki/Textile_(markup_language)">Textile</a>.</p>

<p>Also, there&#8217;s <a href="http://daringfireball.net/projects/smartypants">SmartyPants</a> — tool to enhance typography of web-published documents. Give it a try.</p>

<p><strong>UPDATE</strong>: Just noticed a minor nuisance: if you&#8217;re using reference-style links, link labels for all links used prior to WordPress&#8217; <kbd>&lt;!--more--&gt;</kbd> tag should also be placed prior that tag. By now I should&#8217;ve corrected all errors. BTW, because <a href="http://daringfireball.net/projects/markdown">Markdown</a> allows for seamless inclusion of HTML you don&#8217;t have to convert all old posts to <a href="http://daringfireball.net/projects/markdown">Markdown</a> format as I did — everything would just work.</p>

<p><a id="more-15"></a></p>

<p>If you&#8217;re interested how it looks like, here&#8217;s a <a href="#screenshot">screenshot of this post in TextMate</a>. If you want a more complex example, look no further than <a href="http://daringfireball.net/projects/markdown/syntax.text">Markdown&#8217;s Syntax in Markdown page</a> by <a href="http://daringfireball.net">John Gruber</a> himself.</p>

<p>If you&#8217;re using <a href="http://wordpress.org">WordPress</a>, there are plugins for both <a href="http://daringfireball.net/projects/markdown">Markdown</a> and <a href="http://daringfireball.net/projects/smartypants">SmartyPants</a>: <a href="http://www.michelf.com/projects/php-markdown/">PHP Markdown</a> and <a href="http://www.michelf.com/projects/php-smartypants/">PHP SmartyPants</a>. They&#8217;re easy and straightforward to install. There are also plugins for other blogging tools.</p>

<div id="screenshot"></div>

<p><img src="http://mblsha.psi-im.org/images/mac/textmate/markdown_smartypants.png" alt="This post in TextMate" title="" /></p>

<p>PS: I&#8217;m also interested in alternate markup solutions out there. How do <em>you</em> publish on the web?</p>
]]></content:encoded>
			<wfw:commentRss>http://mblsha.psi-im.org/2006/04/08/time-for-markdown/feed/</wfw:commentRss>
		</item>
		<item>
		<title>April Fools</title>
		<link>http://mblsha.psi-im.org/2006/04/01/april-fools/</link>
		<comments>http://mblsha.psi-im.org/2006/04/01/april-fools/#comments</comments>
		<pubDate>Sat, 01 Apr 2006 06:00:12 +0000</pubDate>
		<dc:creator>mblsha</dc:creator>
		
		<category>Russian</category>

		<guid isPermaLink="false">http://mblsha.psi-im.org/2006/03/31/april-fools/</guid>
		<description><![CDATA[Just some funny chats that happened on april fools day in devel@conference.jabber.ru. It&#8217;s in Russian, so if you can&#8217;t read it — just move along.



Ночь шокирующих признаний:

ermine: так всё!
* ermine решил сегодня наконец честно признаться
geek: ermine: O_o
geek: ermine: я знал, я знал!
ermine: geek: да, я неудачно разыгрывал девушку&#8230;
geek: ermine: ну и как? разыграл? ;)
ermine: geek: [...]]]></description>
			<content:encoded><![CDATA[<p>Just some funny chats that happened on april fools day in devel@conference.jabber.ru. It&#8217;s in Russian, so if you can&#8217;t read it — just move along.</p>

<p><a id="more-13"></a></p>

<h3>Ночь шокирующих признаний:</h3>

<p><b>ermine</b>: так всё!<br />
* ermine решил сегодня наконец честно признаться<br />
<b>geek</b>: ermine: O_o<br />
<b>geek</b>: ermine: я знал, я знал!<br />
<b>ermine</b>: geek: да, я неудачно разыгрывал девушку&#8230;<br />
<b>geek</b>: ermine: ну и как? разыграл? ;)<br />
<b>ermine</b>: geek: теперь мне стыдно<br />
<b>geek</b>: ermine: сильно?<br />
<b>ermine</b>: стыдно за то, что обманывал надежды хороших холостых мужиков на приятные виды женитьбы на   девушке-суперадминше<br />
* ermine хряпнул четвертый стакан водки<br />
<b>geek</b>: ладно. раз уж пошла такая пьянка<br />
<b>geek</b>: на самом деле я не линуксоид. и гном терпеть не могу<br />
<b>geek</b>: виндовс+кде наше фсио!<br />
<b>avzl</b>: geek, то-то и оно (вспомнив твое высказывание про латентного вантузятника)<br />
<b>ermine</b>: geek: давай сделаем сегодня день Раскаяния, брат?<br />
<b>geek</b>: ermine: таффай<br />
<b>ermine</b>: Бог любит дураков и не прощает лжецам<br />
<b>aleksey</b>: буржуи странно шутят<br />
<b>aleksey</b>: я с троими общаюсь в привате по поводу взлома j.r<br />
<b>geek</b>: aleksey: фсбэшнеги?<br />
<b>aleksey</b>: и не совсем понимаю поняли ли они шутку<br />
<b>ermine</b>: aleksey: кто там еще ломает?! ведь только что отразили dos?<br />
<b>aleksey</b>: ermine: попричитай в ejabberd@ про взлом :)  </p>

<h3><strong>geek</strong> и <strong>mblsha</strong> против <strong>Dæstructor&#8217;а</strong>:</h3>

<p><b>ermine</b>: фря сюксб<br />
<b>geek</b>: ermine: ляликс рулит?<br />
<b>ermine</b>: geek: а хрен его знаит ,думаеш может рулить?<br />
<b>geek</b>: ermine: не может. виндовс - наше фсио!<br />
<b>avzl</b>: geek, латентный вантузятник - вот ты кто.<br />
<b>ermine</b>: geek: боюс моя машинка не потянет виндовс<br />
<b>Dæstructor</b>: geek: выньдовс - ось для выбивания бабок из юзера. linux - ось для того, чтоб ей  пользовались.<br />
<b>geek</b>: avzl: я и есть вантузятник. И вовсе не латентный<br />
<b>geek</b>: херня ваш линукс<br />
<b>geek</b>: кучу команд надо помнить<br />
<b>geek</b>: а в виндовсе можно всё мышкой сделать<br />
<b>Dæstructor</b>: geek: не нравятся команды - юзай gnome.<br />
<b>avzl</b>: geek, и нефиг после этого Линуса обзывать классическим примером латентного вантузятника&#8230;<br />
<b>geek</b>: Dæstructor: гном сакс. кде рулед<br />
<b>Dæstructor</b>: geek: qt - сакс, dcop - сакс. => кде - сакс<br />
<b>geek</b>: Dæstructor: qt - лучший тулкит в мире!<br />
<b>avzl</b>: geek, угу, не случайно сегодня - день дурня&#8230;<br />
<b>geek</b>: так сказал Тузег, а он очень умный!<br />
<b>Dæstructor</b>: geek: qt - тормоз<br />
<b>avzl</b>: geek, ты б еще Kes&#8217;а послушал&#8230;<br />
<b>geek</b>: Dæstructor: gtk тормозит больше<br />
<b>Dæstructor</b>: geek: дааа? А ты проверь сначала, прежде чем такое заявлять.<br />
<b>mblsha</b>: version geek<br />
<b>sulci</b>: mblsha: у geek клиент Gajim 0.10 - [unknown]<br />
<b>mblsha</b>: [unknown] == WINDOWZEEEE!!!!<br />
<b>avzl</b>: geek, новый GTK2 быстрее засчет Cairo (не путать с 2k).<br />
<b>geek</b>: Dæstructor: проверял. Запусти gtkperf - и посмотри, как дико тормозит TextArea, когда  больше 200 итераций add_text<br />
<b>Dæstructor</b>: geek: хотя gtk2 и до cairo быстрее был.<br />
<b>geek</b>: mblsha: uname -a<br />
ntkernel localhost 5.2.0.0 #1 Sun Mar 12 02:18:28 MSK 2006 i686 Intel(R) Celeron(R) CPU 2.00GHz  GenuineIntel EULA/Windows<br />
<b>geek</b>: Dæstructor: c кайро вообще тормоз стал<br />
<b>Dæstructor</b>: $ which gtkperf<br />
<b>which</b>: no gtkperf in (/sbin:/bin:/usr/sbin:/usr/bin)<br />
<b>geek</b>: Dæstructor: gtkperf.sf.net<br />
<b>geek</b>: А qt работает почти так же быстро как и родные виджеты виндовса<br />
<b>geek</b>: а виста воопще всех парвёт<br />
<b>avzl</b>: geek, признайся честно, что ты сидишь под &#8220;позорным&#8221; линуксом, а версию скрываешь для того,  чтобы про тебя бог знает что не подумали ))))))))))) Принимаю скриншоты как доказательства.<br />
<b>geek</b>: avzl: я в виндовсе сижу!<br />
<b>mblsha</b>: geek is using sexlinux 2006 professional editon!<br />
<b>geek</b>: а скриншоты я выкладываю на www.microsoft.com<br />
<b>avzl</b>: geek, тогда от модерства в linux@ и linux-talks@ можешь добровольно отказаться<br />
<b>avzl</b>: geek, или сделай /ban на самого себя.<br />
<b>geek</b>: avzl: а там на самом деле вантузятники тусуются. Просто мы маскируемся<br />
<b>Dæstructor</b>: geek: vista винду похоронит.<br />
<b>avzl</b>: Dæstructor, до тебя не дошло, что он придуривается? И день-то сегодня - подходящий&#8230;<br />
<b>geek</b>: Dæstructor: виста похоронит линукс, бзд и все остальные &#8220;фофаны&#8221;<br />
<b>Dæstructor</b>: geek: каким интересно образом? Учитывая то, что она после загрузки отжирает 700  метров памяти только на свою шкуру&#8230;<br />
<b>avzl</b>: geek, BSD, кстати, УЖЕ сосет&#8230;<br />
<b>geek</b>: Dæstructor: нет. это она просто своп в оперативку грузит. И за счет этого будет работать  быстрее чем ХР. Веть любой дурак знает, что оперативка быстрее чем HDD<br />
<b>Dæstructor</b>: geek: Ты не понимаешь смысла свопа.<br />
<b>Dæstructor</b>: geek: понимал бы - ты б такое не сказал.<br />
<b>geek</b>: Dæstructor: я всё понимаю. А вы со своими тормозящими фофанскими поделками так и будете всю  жизнь сидеть без нормальных игрушек и MS ОФиса<br />
<b>mblsha</b>: geek: кстати и то и то есть под Mac OS X<br />
<b>Dæstructor</b>: geek: игрушек мне хватает, а MSOffice мне и даром не нужен (поскольку есть OOo2)<br />
<b>mblsha</b>: geek: венда обречена!<br />
<b>Dæstructor</b>: geek: Что ты понимаешь под нормальными игрушками?<br />
<b>Dæstructor</b>: geek: А смысла свопа ты не понимаешь.<br />
<b>geek</b>: Dæstructor: F.E.A.R<br />
<b>Dæstructor</b>: geek: это не нормальная игрушка<br />
<b>mblsha</b>: geek: а ты играл в игрушку F.U.D.? говорят что очень хорошая<br />
<b>geek</b>: Dæstructor: а ещё последние тесты показали что VB.NET быстрее чем C<br />
<b>Dæstructor</b>: geek: уж не мелкософт ли эти тесты проводил?<br />
<b>geek</b>: Dæstructor: так что виста будет в два, нет - в пять раз быстрее чем XP потому что она на  90% написана на VB.NET<br />
<b>Dæstructor</b>: geek: интерпретатор В ПРИНЦИПЕ не может быть быстрее компилятора.<br />
<b>geek</b>: Dæstructor: нет, что ты. Независимые исследования<br />
<b>Dæstructor</b>: geek: первоапрельская шутка, а не исследования. VB - интерпретируемый езыг. => быстро  софт на нем не может работать по определению.<br />
<b>geek</b>: Dæstructor: .NET - это не интерпретатор это компилятор в процессоро-независимый код,  который может работать на любом процессоре. Поэтому виста будет работать везде<br />
<b>geek</b>: мне знакомые хакиры уже обещали патч для запуска висты на КПК<br />
<b>Dæstructor</b>: geek: процессорно-независимый код выполняется виртуальной машиной, а это тот же  интерпретатор.<br />
<b>geek</b>: правда на моём кпк мало оперативки, поэтому своп придется держать на флешке. Будет не так  быстро работать, конечно&#8230;ну да ничего 
<b>mblsha</b>: geek: а правда что ут ебя ЗАУРУС?<br />
<b>Dæstructor</b>: geek: я логи запощу в фидо, в RU.COMPUTER.HUMOR.<br />
<b>geek</b>: Dæstructor: лучше в RU.WINDOWS<br />
<b>geek</b>: Dæstructor: там ещё не знают о новых фичах висты<br />
<b>mblsha</b>: Dæstructor: а на BOR кто постить будет? пушкин?<br />
<b>Bruce</b>: я тута послушал вот хотел бы узнать а когда эта виста будет а то все говорят как будто уже  она установленна<br />
<b>Dæstructor</b>: Угу, чтоб в RU.WINDOWS все от смеха умерли<br />
<b>geek</b>: Bruce: в ноябре будет. Но только для избранных<br />
<b>geek</b>: mblsha: у меня ровер<br />
<b>geek</b>: mblsha: а заурус - это что? там XP стоит?<br />
<b>mblsha</b>: geek: мацось<br />
<b>mblsha</b>: geek: вторая версия!<br />
<b>Dæstructor</b>: geek: Sharp Zaurus - под линуксом.<br />
<b>geek</b>: mblsha: ооо&#8230;мак это почти так же круто как виста<br />
<b>geek</b>: Dæstructor: врешь ты всё. линукс жырный и в кпк не влезет<br />
Bruce ушел (Replaced by new connection)<br />
<b>geek</b>: сколько там ваш линукс занимает? 9 компакт-дисков? а вот виндовс на один влезает!<br />
<b>Dæstructor</b>: geek: Ты дурак, либо очень хорошо притворяешься. Ядро легко упихать на дискету.<br />
<b>geek</b>: Dæstructor: а что с этим ядром на дискете можно делать?<br />
<b>geek</b>: Dæstructor: оно же ничего не умеет. Даже флешки не работают<br />
<b>Dæstructor</b>: geek: Работают.<br />
<b>geek</b>: и экран только черный с кучей непонятных буковок<br />
<b>zLon</b>: geek, э-эх!<br />
<b>geek</b>: а ещё в линуксе нет эксплорера<br />
<b>Dæstructor</b>: geek: Маршрутизатор можно поднять. (если туда еще и busybox засунуть)<br />
<b>geek</b>: Dæstructor: нефиг ронять маршрутизаторы - не придется и поднимать<br />
<b>Dæstructor</b>: geek: Ты точно дурак. там браузеров больше, чем когда-либо было под винду написано.<br />
<b>geek</b>: Dæstructor: угу. знаем. эти браузеры половину сайтов криво показывают<br />
<b>mblsha</b>: Dæstructor: под линукс нет величайшего браузера всех вермен и народов — MOSAIC!<br />
<b>Dæstructor</b>: geek: Приведи пример сайта, который Firefox 1.5 криво показывает.<br />
<b>geek</b>: а модный нынче ajax кстати, в микрософте изобрели!<br />
<b>geek</b>: Dæstructor: www.gay.ru<br />
<b>Dæstructor</b>: geek: Нормально отображается.<br />
<b>mblsha</b>: Dæstructor: а почему линуксом до сих пор никто не пользуется, раз он такой хороший?<br />
* <b>geek</b> зопесал: Dæstructor посещает www.gay.ru<br />
<b>Dæstructor</b>: version mblsha<br />
<b>sulci</b>: Dæstructor: у mblsha клиент Psi 0.11-beta1 - Mac OS X<br />
<b>mblsha</b>: Dæstructor: почему у каждой домохозяйки до сих пор стоит freebsd на роутере?<br />
<b>zLon</b>: mblsha, МакОсь - BSD&#8230; А BSD - sux. Делаем выводы.<br />
<b>mblsha</b>: zLon: какая BSD! там нет никакого BSD и в помине!<br />
<b>geek</b>: zLon: ты что не знаешь? там ядро от виндовса<br />
* <b>Dæstructor</b> зопейсал: англ. geek = лох<br />
<b>mblsha</b>: Dæstructor: не лох а выродок<br />
<b>Dæstructor</b>: mblsha: почти синонимы&#8230;<br />
<b>geek</b>: zLon: ты ламир. Не знаешь, что Apple - подразделение микрософт, занимающееся перспективными  разработками?<br />
* <b>geek</b> .oO(кажется, я только что выдал коммерческую тайну)<br />
<b>zLon</b>: geek, это ты - ламер-вантузятник&#8230;<br />
<b>Dæstructor</b>: mblsha: Darwin сделан на основе ядра Mach, которое сделано на основе NeXTSTEP,  который сделан на основе NetBSD.<br />
<b>mblsha</b>: zLon: сам ты бимбо, пративный<br />
<b>geek</b>: Dæstructor: бугога, повелся на дезу!<br />
<b>mblsha</b>: Dæstructor: mach ни сделан ни на чьей основе! он един как и windows!<br />
<b>Dæstructor</b>: Тьфу, попутал<br />
<b>geek</b>: Dæstructor: mach - это микроядро NT!<br />
<b>Dæstructor</b>: Darwin - помесь Mach и NeXTSTEP<br />
<b>mblsha</b>: Dæstructor: NeXTSTEP была сотворена в темном сговоре IBM и MICROSOFT!!<br />
<b>Dæstructor</b>: geek: Дурак. NT - монолитка, а не микроядро<br />
<b>Dæstructor</b>: mblsha: NeXTSTEP был куплен Apple, а разработан таки на основе NetBSD<br />
<b>mblsha</b>: Dæstructor: а NetBSD — это форк FreeBSD рожденный внутри IBM и КОРПОРАЦИИ МАЙКРОСОФТ<br />
<b>geek</b>: Dæstructor: ничего подобного. Если б оно было монолитным - то драйвера от старых версий  виндовс не подходи ли бы к новым. а так микроядро отдельно, HAL - отдельно и сверху драйвера<br />
<b>Dæstructor</b>: mblsha: ты тоже дурак.<br />
<b>mblsha</b>: с использованием технологии .NET<br />
<b>zLon</b>: mblsha, идиот или прикидываешься?<br />
<b>mblsha</b>: zLon: это наезд, да?<br />
<b>geek</b>: zLon: ты что, не веришь старым профессионалам ?<br />
<b>zLon</b>: mblsha, нет. Это истина.<br />
<b>Dæstructor</b>: mblsha: FreeBSD появился значительно позже NetBSD<br />
<b>mblsha</b>: zLon: а истина в том, что MICROSOFT всех купила!<br />
<b>zLon</b>: geek, тебе - еретику и богохульнику - я точно не верю&#8230;<br />
<b>Dæstructor</b>: mblsha: и разработан был в институте Беркли<br />
<b>mblsha</b>: Dæstructor: они обкурились LSD и уже сами не помнят где что изобретали<br />
<b>Dæstructor</b>: mblsha: А гейц сам винду не юзает.<br />
<b>mblsha</b>: Dæstructor: гейц юзает микрокернель mach!<br />
<b>Dæstructor</b>: mblsha: гейц юзает микрокернель Darwin. Он от mach ОООЧЕНЬ сильно отличается, хоть и  потомок.<br />
<b>geek</b>: Dæstructor: гейц давно уже юзает висту и говорит что это самая крутая ось в мире! А гейтс  никогда не врёт!<br />
<b>mblsha</b>: Dæstructor: да ладно? как он может отличаться?<br />
<b>Dæstructor</b>: geek: ты имбецил в стадии дебильности.<br />
<b>geek</b>: Dæstructor: справку напишешь? а то мне отпуск без справки не дадут  </p>
]]></content:encoded>
			<wfw:commentRss>http://mblsha.psi-im.org/2006/04/01/april-fools/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Using Nick-completion in Psi GroupChats</title>
		<link>http://mblsha.psi-im.org/2006/03/30/nick-completion/</link>
		<comments>http://mblsha.psi-im.org/2006/03/30/nick-completion/#comments</comments>
		<pubDate>Thu, 30 Mar 2006 20:40:51 +0000</pubDate>
		<dc:creator>mblsha</dc:creator>
		
		<category>Psi</category>

		<guid isPermaLink="false">http://mblsha.psi-im.org/2006/03/30/using-nick-completion-in-psi-groupchats/</guid>
		<description><![CDATA[If you&#8217;re chatting in groupchats quite frequently, nick completion is an invaluable feature. The most useful shortcut is Tab-Tab; when used on beginning of new line or after a step it inserts the nickname of the person who last addressed you directly. You can then continue to press Tab and it will loop on the [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re chatting in groupchats quite frequently, nick completion is an invaluable feature. The most useful shortcut is <tt>Tab-Tab</tt>; when used on beginning of new line or after a step it inserts the nickname of the person who last addressed you directly. You can then continue to press <tt>Tab</tt> and it will loop on the nicks of all the people in the room.</p>

<p><a id="more-12"></a></p>

<p><img src="http://mblsha.psi-im.org/images/psi/groupchat/nick-completion.png" alt="Psi GroupChat Dialog" title="" /></p>

<p>For a more complicated scenario: <tt>mblsha</tt>, <tt>Monster</tt> and <tt>mbl-revolution</tt> are all sitting in same room. If you write <tt>m</tt> and press <tt>Tab</tt> it will not result in any noticeable action. This is because there are multiple nicks that start with <tt>m</tt>, and you can either continue to <tt>Tab</tt> to loop through all nicks that start with <tt>m</tt> or write more letters until there is a unique completion. When you press the <tt>b</tt> button, and then press <tt>Tab</tt> it would complete to <tt>mbl</tt>. The more you use this feature, the more you are likely to come to like it and rely upon it. Try nick completion on someone and you&#8217;ll realise how powerful it is.</p>
]]></content:encoded>
			<wfw:commentRss>http://mblsha.psi-im.org/2006/03/30/nick-completion/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Productive Forum Posting</title>
		<link>http://mblsha.psi-im.org/2006/03/18/productive-forum-posting/</link>
		<comments>http://mblsha.psi-im.org/2006/03/18/productive-forum-posting/#comments</comments>
		<pubDate>Sat, 18 Mar 2006 23:29:28 +0000</pubDate>
		<dc:creator>mblsha</dc:creator>
		
		<category>Mac</category>

		<category>TextMate</category>

		<guid isPermaLink="false">http://mblsha.psi-im.org/2006/03/18/productive-forum-posting/</guid>
		<description><![CDATA[If you ever actively participated in heated forum debates, probably sometimes you ended replying to many points in original post, quoting bits of text. And then you sensed despair, because it was so hard to distinguish your text from original author — it all looked the same!.

Enter the world of productive forum posting.



Probably many of [...]]]></description>
			<content:encoded><![CDATA[<p>If you ever actively participated in heated forum debates, probably sometimes you ended replying to many points in original post, quoting bits of text. And then you sensed despair, because it was so hard to distinguish your text from original author — it all looked the same!.</p>

<p>Enter the world of productive forum posting.</p>

<p><a id="more-11"></a></p>

<p>Probably many of you Mac OS X users out there ever heard of <a href="http://macromates.com">TextMate</a> the text editor. But it&#8217;s most likely news to you, that it could be easily called from many native applications to edit their text. Safari is no exception — it&#8217;s possible to easily edit web forms in TextMate. You just have to <a href="http://macromates.com/textmate/manual/using_textmate_from_terminal#cocoa_text_fields">enable &#8220;Edit in TextMate&#8221; input manager</a>. Then it&#8217;s a simple matter of ⌃⌘E to load a forum post you&#8217;re editing in TextMate. Modify the post, ⌘S, ⌘W, voila! Updated post is shown in Safari&#8217;s edit field.</p>

<p>But probably this much integration is still not enough for truly productive post editing. Syntax highligting for BBCode and text completion are lacking.</p>

<p>I was frustrated enough that there were no public BBCode-bundles around, so I created it on my own. <a href="http://mblsha.psi-im.org/files/textmate/BBCode.zip">Download BBCode.tmbundle</a>.</p>

<p><img src="http://mblsha.psi-im.org/images/mac/textmate/bbcode_highligting.png" alt="BBCode Highligting in TextMate" title="" /></p>

<p>The bundle features two language syntaxes: <strong>BBCode</strong> and <strong>BBCode (Unclassified)</strong>. The first one is generic version (suitable for <a href="http://www.phpbb.com/">PhpBB2</a>), and the second one is recommended for use when editing posts in <a href="http://newsboard.unclassified.de/">Unclassified NewsBoard</a>, since it&#8217;s a bit incompatible in some places.</p>

<p>Also there are snippets provided for all most common tags, open <a href="http://macromates.com/textmate/manual/bundles#activation_of_bundle_items">Bundle Editor</a> to explore them all.</p>
]]></content:encoded>
			<wfw:commentRss>http://mblsha.psi-im.org/2006/03/18/productive-forum-posting/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Death to the Icons!</title>
		<link>http://mblsha.psi-im.org/2006/03/03/death-to-the-icons/</link>
		<comments>http://mblsha.psi-im.org/2006/03/03/death-to-the-icons/#comments</comments>
		<pubDate>Fri, 03 Mar 2006 22:46:52 +0000</pubDate>
		<dc:creator>mblsha</dc:creator>
		
		<category>Psi</category>

		<category>Programming</category>

		<guid isPermaLink="false">http://mblsha.psi-im.org/2006/03/03/death-to-the-icons/</guid>
		<description><![CDATA[It was a good week: public Psi 0.11-beta1 release happened recently, I was able to improve some design bits of my blog, also eliminated the long-standing insect that was hurting my eyes and stopping from using the development branch in day-to-day life. Now, the insect&#8217;s dead, and I&#8217;m happily running 0.11-beta1 now.

The ones who have [...]]]></description>
			<content:encoded><![CDATA[<p>It was a good week: <a href="http://www.kismith.co.uk/wordpress/index.php/2006/02/28/011-beta1/">public Psi 0.11-beta1 release</a> happened recently, I was able to improve some <a href="/about">design bits</a> of my blog, also eliminated the long-standing insect that was hurting my eyes and stopping from using the development branch in day-to-day life. Now, the insect&#8217;s dead, and I&#8217;m happily running 0.11-beta1 now.</p>

<p>The ones who have already tried Psi/Mac 0.11-beta1 probably noticed the sudden appearance of many little bothersome icons in all kinds of menus where they weren&#8217;t present in 0.10: icons in context menu, application menus and even in the menu bar itself! So it was decided that icons should not be able to live any longer.</p>

<p><a id="more-10"></a></p>

<p>With the help from kind engineers from <a href="http://trolltech.com">Trolltech</a> I discovered very handy one-liner that disables icons in the menu bar. I&#8217;m currently in a good mood so I will share it with you:</p>

<pre><tt>
<span style="color: #000080">#ifdef</span> Q_WS_MAC  
        <span style="color: #000000">qt_mac_set_menubar_icons</span>(<span style="color: #0000FF">false</span>);  
<span style="color: #000080">#endif</span>
</tt></pre>

<p>And the other half of the work — disabling icons in menus that are drawn by Qt — was done in a matter of minutes though overriding QMacStyle with my custom class.</p>

<p>And here is the sample screenshot from the running application:</p>

<p><img src="http://mblsha.psi-im.org/wp-content/uploads/2006/03/iconless_popup.png" alt="Look ma, no icons!" title="" /></p>

<p>Popup menus never looked this good before ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://mblsha.psi-im.org/2006/03/03/death-to-the-icons/feed/</wfw:commentRss>
		</item>
		<item>
		<title>iCurve Goodness</title>
		<link>http://mblsha.psi-im.org/2006/02/16/icurve-goodness/</link>
		<comments>http://mblsha.psi-im.org/2006/02/16/icurve-goodness/#comments</comments>
		<pubDate>Thu, 16 Feb 2006 22:14:08 +0000</pubDate>
		<dc:creator>mblsha</dc:creator>
		
		<category>Photo</category>

		<guid isPermaLink="false">http://mblsha.psi-im.org/2006/02/16/icurve-goodness/</guid>
		<description><![CDATA[Today was a great day. Finally I was able to get my hands on wonderful iCurve laptop stand. It looks great. It feels great. It is great.





And the greatest feature of all: on my small desktop I can put my mouse under the PowerBook, and iCurve would work like palm rest area. Really cool, and [...]]]></description>
			<content:encoded><![CDATA[<p>Today was a great day. Finally I was able to get my hands on wonderful <a href="http://www.griffintechnology.com/products/icurve/">iCurve</a> laptop stand. It looks great. It feels great. It is great.</p>

<p><a id="more-8"></a></p>

<p><a href="http://www.flickr.com/photos/mblsha/100425041/" title="Photo Sharing"><img src="http://static.flickr.com/42/100425041_5e9e1a5092.jpg" width="500" height="375" alt="iCurviness" /></a></p>

<p>And the greatest feature of all: on my small desktop I can put my mouse under the <a href="http://www.apple.com/powerbook/">PowerBook</a>, and <a href="http://www.griffintechnology.com/products/icurve/">iCurve</a> would work like palm rest area. Really cool, and saves precious space. Next thing I want on my table is one of these <a href="http://www.apple.com/displays/">beauties</a>. But for now I guess I&#8217;ll stick to my old and trusty monitor and <a href="http://www.logitech.com/index.cfm/products/details/US/EN,CRID=486,CONTENTID=7321">diNovo keyboard</a>. My productivity should be skyrocketed to the sky now.</p>

<p>P.S.: Big thanks to <a href="http://el-tramo.be/">Remko</a> for recommending this awesome thing.</p>
]]></content:encoded>
			<wfw:commentRss>http://mblsha.psi-im.org/2006/02/16/icurve-goodness/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Improving Chat Log</title>
		<link>http://mblsha.psi-im.org/2006/02/12/improving-chat-log/</link>
		<comments>http://mblsha.psi-im.org/2006/02/12/improving-chat-log/#comments</comments>
		<pubDate>Sun, 12 Feb 2006 19:22:39 +0000</pubDate>
		<dc:creator>mblsha</dc:creator>
		
		<category>Psi</category>

		<guid isPermaLink="false">http://mblsha.psi-im.org/2006/02/12/improving-chat-log/</guid>
		<description><![CDATA[During last two weeks I&#8217;ve been secretly working on porting chat log widget to new code base. And alongside with improved code structure I&#8217;ve also been able to improve its usability.





So what&#8217;s so new and exciting? Well, several things, and I&#8217;m going to list all of them here:


Ctrl-C and Ctrl-Ins shortcuts used to copy text [...]]]></description>
			<content:encoded><![CDATA[<p>During last two weeks I&#8217;ve been secretly working on porting chat log <a href="http://en.wikipedia.org/wiki/Widget#Graphical_component_in_computing">widget</a> to new code base. And alongside with improved code structure I&#8217;ve also been able to improve its usability.</p>

<p><a id="more-7"></a></p>

<p><img src="http://mblsha.psi-im.org/images/psi/chatdlg/new_psitextview.png" alt="Psi-0.11-dev's Chat Dialog" title="" /></p>

<p>So what&#8217;s so new and exciting? Well, several things, and I&#8217;m going to list all of them here:</p>

<ol>
<li><tt>Ctrl-C</tt> and <tt>Ctrl-Ins</tt> shortcuts used to copy text are now more 
intelligent: if you have selected some text in <tt>chat log</tt>, and no text 
is selected in <tt>chat edit</tt>, and focus is in <tt>chat edit</tt> widget, 
these shortcuts will select the text from chat view. Sounds a bit complicated, 
but in reality probably you will start to use <tt>Ctrl-C</tt> shortcut more often.</li>
<li>When you select a region of text, emotions are also correctly selected, as 
shown on provided screenshot.</li>
<li>Selection is <strong>not</strong> lost when new text is appended to chat log. 
<em>Very</em> useful in Groupchats.</li>
<li>Also <strong>finally</strong> emoticons are copied correctly when you you issue Copy command. 
No more empty space instead of copying emoticon&#8217;s text.</li>
<li>Quite minor, but could also be useful: in Groupchat dialog there&#8217;s a handy 
nick completion, and now Undo command behaves correctly after you try to complete nick.</li>
</ol>

<p>P.S.: And in case you&#8217;re wondering: no, it&#8217;s not Mac OS X shown on above screenshot. It&#8217;s actually Linux with <a href="http://www.kde-look.org/content/show.php?content=8692">custom window theme</a> and unimpressive fonts. Emoticon package is called <a href="http://www.jabber.ru/Members/puz">puzazBox</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mblsha.psi-im.org/2006/02/12/improving-chat-log/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The King of Dirty Hacks</title>
		<link>http://mblsha.psi-im.org/2006/02/11/the-king-of-dirty-hacks/</link>
		<comments>http://mblsha.psi-im.org/2006/02/11/the-king-of-dirty-hacks/#comments</comments>
		<pubDate>Sat, 11 Feb 2006 22:58:14 +0000</pubDate>
		<dc:creator>mblsha</dc:creator>
		
		<category>Programming</category>

		<guid isPermaLink="false">http://mblsha.psi-im.org/2006/02/11/the-king-of-dirty-hacks/</guid>
		<description><![CDATA[Sometimes in C++ you may feel the need to write a piece of code that uses private functionality of third-party classes. This could be very noticeable with Qt, where you have very little control on included classes, and asking nice Trolls to include functionality you need could take some time, and the only alternative would [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes in C++ you may feel the need to write a piece of code that uses private functionality of third-party classes. This could be very noticeable with <a href="http://trolltech.com">Qt</a>, where you have very little control on included classes, and asking nice Trolls to include functionality you need could take some time, and the only alternative would be duplicating half of Qt-code and modifying class names. But there&#8217;s a neat trick that was advised to me by <a href="http://delta.affinix.com">Justin</a>. Interested? Read along.</p>

<p><a id="more-6"></a></p>

<p>Why can&#8217;t you just simply gain access to all <tt>private</tt> instance and class variables and methods? Because compiler sees the <tt>private</tt> directive and restricts you. Well, it&#8217;s even very hard to get access to <tt>protected</tt> variables of an instance even if you create a subclass. But what if these nasty restricting directives weren&#8217;t there, so there would be nothing to complain about?</p>

<p><code><tt><span style="color: #000080">#define</span> <span style="color: #0000FF">private</span> <span style="color: #0000FF">public</span></tt></code></p>

<p>Would it work? It seems so, because class data structure is arranged together, and access specifiers are not stored anywhere, and check is performed only during compile time.</p>

<p>How to use this technique? Plain simple, but it should always be considered only as last resort when no other solution works for you and you absolutely must gain access to <i>that</i> private instance variable. Recently I met a case that was nearly impossible to solve without using this dirty hack: I needed to create a <a href="http://doc.trolltech.com/4.1/qtextdocumentfragment.html">QTextDocumentFragment</a> from <a href="http://doc.trolltech.com/4.1/qtextcursor.html">QTextCursor&#8217;s</a> current selection. And guess what? It&#8217;s not possible to get hold of <a href="http://doc.trolltech.com/4.1/qtextdocumentfragment.html">QTextDocumentFragment&#8217;s</a> data structures (namely, <a href="http://doc.trolltech.com/4.1/qtextdocument.html">QTextDocument</a> of selected fragment itself, to iterate through its <a href="http://doc.trolltech.com/4.1/qtextfragment.html">QTextFragments</a>) in Qt 4.1.0! Very disappointing when you want to implement useful feature. So, here&#8217;s how I actually worked around it:</p>

<p><code><tt>
<span style="color: #000080">#define</span> <span style="color: #0000FF">private</span> <span style="color: #0000FF">public</span><br />
<span style="color: #000080">#include</span> <span style="color: #FF0000">&lt;QTextDocumentFragment&gt;</span><br />
<span style="color: #000080">#undef</span> <span style="color: #0000FF">private</span>
</tt></code></p>

<p>And yes, this should be done at the very top of source file, to make sure that useful header wasn&#8217;t already #included somewhere.</p>
]]></content:encoded>
			<wfw:commentRss>http://mblsha.psi-im.org/2006/02/11/the-king-of-dirty-hacks/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
