<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>/dev/random</title>
	<atom:link href="http://dilchovski.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dilchovski.wordpress.com</link>
	<description>On coding and life</description>
	<lastBuildDate>Sun, 30 May 2010 01:21:50 +0000</lastBuildDate>
	<language>bg</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='dilchovski.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>/dev/random</title>
		<link>http://dilchovski.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://dilchovski.wordpress.com/osd.xml" title="/dev/random" />
	<atom:link rel='hub' href='http://dilchovski.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Pretty programing language features</title>
		<link>http://dilchovski.wordpress.com/2010/05/30/pretty-programing-language-features/</link>
		<comments>http://dilchovski.wordpress.com/2010/05/30/pretty-programing-language-features/#comments</comments>
		<pubDate>Sun, 30 May 2010 01:21:50 +0000</pubDate>
		<dc:creator>iМорт</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[stackoverflow]]></category>

		<guid isPermaLink="false">http://dilchovski.wordpress.com/?p=68</guid>
		<description><![CDATA[They[Objective-C Enumerators] are better than C++ iterators, but I definitely won&#8217;t miss enumerators. – Georg Feb 25 &#8217;09 at 15:39 Wht are they better then C++ iterators? – Mykola Golubyev Apr 21 &#8217;09 at 21:39 Because C++-iterators have an even worse syntax, they are ugly. – Georg Apr 22 &#8217;09 at 10:39<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=68&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>They[Objective-C Enumerators] are better than C++ iterators, but I definitely won&#8217;t miss enumerators. – Georg Feb 25 &#8217;09 at 15:39<br />
Wht are they better then C++ iterators? – Mykola Golubyev Apr 21 &#8217;09 at 21:39<br />
Because C++-iterators have an even worse syntax, they are ugly. – Georg Apr 22 &#8217;09 at 10:39</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dilchovski.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dilchovski.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dilchovski.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dilchovski.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dilchovski.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dilchovski.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dilchovski.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dilchovski.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dilchovski.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dilchovski.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dilchovski.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dilchovski.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dilchovski.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dilchovski.wordpress.com/68/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=68&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dilchovski.wordpress.com/2010/05/30/pretty-programing-language-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/80d91ae3aec04abc4d763c96434ec258?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iМорт</media:title>
		</media:content>
	</item>
		<item>
		<title>Single Key Comment</title>
		<link>http://dilchovski.wordpress.com/2009/12/18/single-key-comment/</link>
		<comments>http://dilchovski.wordpress.com/2009/12/18/single-key-comment/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 11:57:38 +0000</pubDate>
		<dc:creator>iМорт</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[commenting]]></category>

		<guid isPermaLink="false">http://dilchovski.wordpress.com/?p=66</guid>
		<description><![CDATA[Закоментирването на блокове с текст е доста популярен начин за избирателно включване и изключване на някаква функционалност в кода, най-често с цел дебъг. Закоментирването/откоментирването на големи блокове код понякога е досадно, особено, когато се налага да се прави често. Едноредовите коментари (//) трябва да се добавят/махат за всеки ред, а за коментарните блокове (/* */) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=66&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Закоментирването на блокове с текст е доста популярен начин за избирателно включване и изключване на някаква функционалност в кода, най-често с цел дебъг.<br />
Закоментирването/откоментирването на големи блокове код понякога е досадно, особено, когато се налага да се прави често. Едноредовите коментари (//) трябва да се добавят/махат за всеки ред, а за коментарните блокове (/* */) трябва да се обикаля нагоре надолу и да се трие.<br />
Преди време при <a href="http://ivanatora.info/2009/11/01/закоментиране-на-цял-блок-код-с-един-зн/">Ivanatora</a> попаднах на много ценен хинт как това може да се улесни значително. Работи само при езици, които поддържат // за ред и /* */ за блок.<br />
Идеята е, че коментарите закоментират коментар.</p>
<p>Нека имаме следния блок:<br />
<cite><br />
foo(); <br />
bar(); <br />
</cite></p>
<p>Закоментирваме го като блок:<br />
<cite><br />
/* <br />
foo(); <br />
bar(); <br />
*/<br />
</cite></p>
<p>А сега закоментирваме затварящия коментар:<br />
<br />
<cite><br />
/* <br />
foo(); <br />
bar(); <br />
//*/<br />
</cite></p>
<p>Не настъпва никаква промяна, блокът е коментиран. Ако сега добавим само един slash на отварящия коментар, то изведнъж блокът спира да бъде коментиран!<br />
<br />
<cite><br />
//* <br />
foo(); <br />
bar(); <br />
//*/<br />
</cite></p>
<p>За по-нататъчно коментиране/разкоментиране е нужно само да се махне/добави първия слеш, който действа като on/off switch.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dilchovski.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dilchovski.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dilchovski.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dilchovski.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dilchovski.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dilchovski.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dilchovski.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dilchovski.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dilchovski.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dilchovski.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dilchovski.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dilchovski.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dilchovski.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dilchovski.wordpress.com/66/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=66&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dilchovski.wordpress.com/2009/12/18/single-key-comment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/80d91ae3aec04abc4d763c96434ec258?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iМорт</media:title>
		</media:content>
	</item>
		<item>
		<title>Premature optimization is the root of all evil</title>
		<link>http://dilchovski.wordpress.com/2009/10/04/premature-optimization-is-the-root-of-all-evil/</link>
		<comments>http://dilchovski.wordpress.com/2009/10/04/premature-optimization-is-the-root-of-all-evil/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 16:08:25 +0000</pubDate>
		<dc:creator>iМорт</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dilchovski.wordpress.com/?p=63</guid>
		<description><![CDATA[&#8222;Бащата&#8220; на алгоритмичния анализ го е казал преди още 35 години. И все пак понякога човек сам трябва да се убеди в това. Логично е, че някакъв реален опит с писане на даден език учи от самосебе си кое е добре и кое не да се прави на него. Липсата на опит, пък, оставя човек [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=63&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Donald_Knuth">&#8222;Бащата&#8220; на алгоритмичния анализ</a> го е казал преди още 35 години. И все пак понякога човек сам трябва да се убеди в това.</p>
<p>Логично е, че някакъв реален опит с писане на даден език учи от самосебе си кое е добре и кое не да се прави на него. Липсата на опит, пък, оставя човек да се уповава на общоизвестни твърдения. При мен се случи втората ситуация.</p>
<p>Наскоро проектът, който мътя от половин година придоби що-годе приличен вид и беше пуснат в употреба (конкретно за какво става дума &#8211; друг път).<br />
Когато започнах същинското писане (преди около 4 месеца) го направих абсолютно на сляпо. Първо писане на Objective-C, първо писане с OpenGL, първо писане на софт под Mac OS X.</p>
<p>
Естествено, тъй като платформата ми беше напълно непозната, си наоправих предварително проучване. Основните bottlenecks, къде да се очаква забавяне, сравнения с познати ми платформи и т.н.<br />
От прочетеното се наплаших, че проектът, който разчитана много динамична интеракция &#8211; стотина input-a едновременно, от десетки хора, ще бъде страшно тромав и нереагиращ. Поради тази причина от самото начало се хвърлих да правя всичко по най-advanced възможния ми начин &#8211; vertex arrays, multithreading, всякакви wrappers, конкретната физическа библиотека, която ползвах, та дори и основната концепция за изграждане на приложението (което е доста модулярно). Това ми отне не малко време и усилия, докато се запозная, усвоя и имплементирам съответните концепции на непознатите ми платформи. А после една дъълга поредица от фиксвания и откриване на потайни и трудно откриваеми бъгове.
</p>
<p>
Е, програмата се държеше в рамките на нормалното откъм ресурси, но костваше доста нерви, докато се задвижи. Впоследствие крайният срок за пускане на първоначална версия започна да настъпва неумолимо, дори и настъпи и премина, а имаше още много за донаправяне. При последвалия панически мини-хакатон опростих много от нещата и голяма част от advanced концепциите, с които бях започнал отпаднаха, за сметка на по-прости и класически потходи, макар и добавящи някакъв overhead. Разбира се, изразходваните ресурси се увеличиха, но както се оказа, разликата на беше фрапантна и в никакъв случай влияеща на нормалната работа.
</p>
<p>
В резултат доста усилия, които бях положил, бяха напразни в конкретния момент и ако от самото начало бях започнал по нормален начин и бях търсил какво води до забавяния и твърде много отнетно процесорно време или памет, щеше да ми се наложи да префасонирам само тях, запознавайки се със съответните технологии и подходи своевременно и дори, вероятно, шипвайки една малко по-функционална първа версия. Вместо това се опитах от раз да направя най енергийно ефективната, възможна имплементация, с най state of the art технологии.</p>
<p>
Така поуката остава: Premature optimization is the root of all evil.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dilchovski.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dilchovski.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dilchovski.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dilchovski.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dilchovski.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dilchovski.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dilchovski.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dilchovski.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dilchovski.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dilchovski.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dilchovski.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dilchovski.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dilchovski.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dilchovski.wordpress.com/63/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=63&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dilchovski.wordpress.com/2009/10/04/premature-optimization-is-the-root-of-all-evil/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/80d91ae3aec04abc4d763c96434ec258?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iМорт</media:title>
		</media:content>
	</item>
		<item>
		<title>Ai, ai, Captain!</title>
		<link>http://dilchovski.wordpress.com/2009/09/22/ai-ai-captain/</link>
		<comments>http://dilchovski.wordpress.com/2009/09/22/ai-ai-captain/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 11:04:19 +0000</pubDate>
		<dc:creator>iМорт</dc:creator>
				<category><![CDATA[Humour]]></category>

		<guid isPermaLink="false">http://dilchovski.wordpress.com/?p=56</guid>
		<description><![CDATA[Facebook периодично споделя, че поддържа 65 езика. Лесно може да се смени текущият език, от линка най-долу в ляво на страницата, където е изписан текущият. Значително по-малко известен е фактът, че един от възможните преводи е English (Pirate)! В резултат почти всички текстови стрингове се превеждат на една доста по-интересна вариация на английския. Друг интересен [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=56&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Facebook периодично споделя, че поддържа 65 езика. Лесно може да се смени текущият език, от линка най-долу в ляво на страницата, където е изписан текущият. Значително по-малко известен е фактът, че един от възможните преводи е English (Pirate)!</p>
<div style="text-align:center;"><img src="http://www.makeuseof.com/wp-content/uploads/2009/09/pirate.jpg" alt="Pirate!" border="0" width="493" height="446" /></div>
<p>В резултат почти всички текстови стрингове се превеждат на една доста по-интересна вариация на английския.</p>
<div style="text-align:center;"><img src="http://dilchovski.files.wordpress.com/2009/09/screenshotspicture-1.png?w=482&#038;h=164" alt="Picture 1.png" border="0" width="482" height="164" /></div>
<p>Друг интересен език е English (Upside Down), който буквално преобръща представите за света:</p>
<div style="text-align:center;"><img src="http://dilchovski.files.wordpress.com/2009/09/screenshotspicture-2.png?w=271&#038;h=169" alt="Picture 2.png" border="0" width="271" height="169" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dilchovski.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dilchovski.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dilchovski.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dilchovski.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dilchovski.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dilchovski.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dilchovski.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dilchovski.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dilchovski.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dilchovski.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dilchovski.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dilchovski.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dilchovski.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dilchovski.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=56&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dilchovski.wordpress.com/2009/09/22/ai-ai-captain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/80d91ae3aec04abc4d763c96434ec258?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iМорт</media:title>
		</media:content>

		<media:content url="http://www.makeuseof.com/wp-content/uploads/2009/09/pirate.jpg" medium="image">
			<media:title type="html">Pirate!</media:title>
		</media:content>

		<media:content url="http://dilchovski.files.wordpress.com/2009/09/screenshotspicture-1.png" medium="image">
			<media:title type="html">Picture 1.png</media:title>
		</media:content>

		<media:content url="http://dilchovski.files.wordpress.com/2009/09/screenshotspicture-2.png" medium="image">
			<media:title type="html">Picture 2.png</media:title>
		</media:content>
	</item>
		<item>
		<title>OpenGL и рендериране на текст, Част 1</title>
		<link>http://dilchovski.wordpress.com/2009/09/20/opengl-%d0%b8-%d1%80%d0%b5%d0%bd%d0%b4%d0%b5%d1%80%d0%b8%d1%80%d0%b0%d0%bd%d0%b5-%d0%bd%d0%b0-%d1%82%d0%b5%d0%ba%d1%81%d1%82-%d1%87%d0%b0%d1%81%d1%82-1/</link>
		<comments>http://dilchovski.wordpress.com/2009/09/20/opengl-%d0%b8-%d1%80%d0%b5%d0%bd%d0%b4%d0%b5%d1%80%d0%b8%d1%80%d0%b0%d0%bd%d0%b5-%d0%bd%d0%b0-%d1%82%d0%b5%d0%ba%d1%81%d1%82-%d1%87%d0%b0%d1%81%d1%82-1/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 22:23:06 +0000</pubDate>
		<dc:creator>iМорт</dc:creator>
				<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dilchovski.wordpress.com/?p=53</guid>
		<description><![CDATA[OpenGL няма вградена поддръжка на шрифтове. Ситуацията е подобна на тази с кривите линии, кръговете и редица други тривиални неща, които отсъстват напълно. Тулкитът предоставя нужната функционалност за имплементация на шрифтове, но всеки трябва да се справя сам с конкретното имплементиране. Разбира се, шрифтовете и тяхното рендериране са нещо, което е необходимо твърде често, за [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=53&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
OpenGL <a href="http://www.opengl.org/resources/features/fontsurvey/">няма вградена поддръжка на шрифтове</a>. Ситуацията е подобна на тази с кривите линии, кръговете и редица други тривиални неща, които отсъстват напълно. Тулкитът предоставя нужната функционалност за имплементация на шрифтове, но всеки трябва да се справя сам с конкретното имплементиране.
</p>
<p>
Разбира се, шрифтовете и тяхното рендериране са нещо, което е необходимо твърде често, за това и съществуват множество имплементации под формата на библиотеки или просто хедъри. За това в този и няколко следващи поста ще споделя опитът си с няколко от тях под Mac OS X и спецификите, с които съм се сблъсквал.
</p>
<h3>Няколко думи за самата техника на изобразяване.</h3>
<p>
Основното, разбира се, е да се опишат символите, представляващи шрифта &#8211; <a href="http://en.wikipedia.org/wiki/Glyph">глифове</a> &#8211; във вид, удобен за работа с OpenGl. Трите групи на§ини това да стане са:</p>
<li><b>Растерно изобразяване</b> &#8211; чрез glBitmap или glDrawPixels. Неудобното е, че при такъв тип изобразяване не могат да се използват матричните трансформации (glTranslate, glRotate, glScale). Също така не е най-удачно от гледна точка на performance.
</p>
<li><b>Геометрично изобразяване</b> &#8211; Глифовете се построяват чрез геометричните примитиви &#8211; GL_LINES, GL_TRIANGLES, GL_QUADS. Използват се матричните трансформации. Предимство, спрямо растерните, е, че няма проблем изобразяваният текст да се съобразява с осветеност, както и използването на нормалните матрични трансформации.
<li><b>Текстурно изобразяване</b> &#8211; Относително най-разпространеният метод за изобразяване на текст. Предварително се създава една текстура, съдържаща всички глифове от шрифта. След това се мапват регионите съдържащи конкретно интересуващия ни символ. С текста лесно се борави като с текстура. Недостатък е, че за промяна, неосъществима с текстурни трансформации трябва да се създаде нова текстура, с изменени глифове.
</p>
<p>
На мен, конкретно, за текущите ми нужди, най-добра работа върши геометрично изобразения текст. Лесно мога да деформирам низът, който изобразявам, да изменям цветове, форми и т.н.
</p>
<h3>Подготовка на глифовете</h3>
<p>
След като се избере начин за изобразяване на глифовете, следва да се набавят самите те. Начини за това има много. Ако се използват текстури е доста лесно да се създаде нужната текстура, чрез инструмент за обработка на изображения, като <a href="http://www.gimp.org/">GIMP</a> или пък с Mac OS-овския <a href="http://en.wikipedia.org/wiki/Quartz_(graphics_layer)">Quartz</a>, като се използват шрифтове от операционната система.</p>
<p>
Растерното и геометрично изобразяване, обаче, се явяват по-сериозен проблем. По някакъв начин трябва да се опишат формите и контурите на символите. Едно решение е да си измислим собствен шрифт, който да опишем символ по символ. Но това би бил много труд, който в голяма част от случайте би бил целесъобразен. Далеч по-лесно би било по някакъв начин да се използват готови шрифтове, като тези, които идват с операционните системи (повечето).
</p>
<p>
Тук се оказва, че качественото и правилно превръщане на векторните шрифтове (каквито са скалируемите шрифтове, които се срещат най-често) в растерно представяне, което да се изобрази на екрана. Това е тежка задача, за която са нужни никак не малко усилия. Тук на помощ ни идва една изключително мощна софтуерна библиотека: <a href="http://freetype.sourceforge.net/index2.html">FreeType</a>, която е дефакто стандартният начин за изобразяване на шрифтове в <a href="http://en.wikipedia.org/wiki/Free_software">свободния свят</a>. Чрез нея може съвсем лесно да се представят повечето шрифтови формати &#8211; TrueTypeFont, Type1, OpenType и д.р.
</p>
<h3>Същинско изобразяване</h3>
<p>
След като вече имаме инфорамция за контурите на символите от шрифта, остава да я изобразим на екрана с примитивите, предоставени от OpenGL. Това би могло да бъде относително лесно, ако е нужна строго специфична функционалност, но постепенно се превръща в отделен проект, сам по себе си, ако са нужни повече възможности, като различни техинки на изобразяване, оптимизации и улеснения (например display list) и д.р. А това също става ненужно усложнение, тъй като може да се използва и/или нагоди някой от съществуващите проекти за рендериране на текст в OpenGL, за които ще стане дума в следващата част.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dilchovski.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dilchovski.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dilchovski.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dilchovski.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dilchovski.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dilchovski.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dilchovski.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dilchovski.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dilchovski.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dilchovski.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dilchovski.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dilchovski.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dilchovski.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dilchovski.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=53&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dilchovski.wordpress.com/2009/09/20/opengl-%d0%b8-%d1%80%d0%b5%d0%bd%d0%b4%d0%b5%d1%80%d0%b8%d1%80%d0%b0%d0%bd%d0%b5-%d0%bd%d0%b0-%d1%82%d0%b5%d0%ba%d1%81%d1%82-%d1%87%d0%b0%d1%81%d1%82-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/80d91ae3aec04abc4d763c96434ec258?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iМорт</media:title>
		</media:content>
	</item>
		<item>
		<title>MarsEdit &#8211; Mac OS desktop blogging</title>
		<link>http://dilchovski.wordpress.com/2009/09/18/marsedit-mac-os-desktop-blogging/</link>
		<comments>http://dilchovski.wordpress.com/2009/09/18/marsedit-mac-os-desktop-blogging/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 10:50:58 +0000</pubDate>
		<dc:creator>iМорт</dc:creator>
				<category><![CDATA[Randoms]]></category>

		<guid isPermaLink="false">http://dilchovski.wordpress.com/?p=48</guid>
		<description><![CDATA[За трети път правя опит да стана блогер. След като наскоро почнах да използвам Desktop Notification за Facebook реших да си намеря подобен инструмент, с който да си човъркам wordpress-a без да отварям страници, да ходя по линкове и т.н. Резултатът е Mars Edit &#8211; (платено) native Mac OS X приложение, което се интегрира напълно [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=48&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>За трети път правя опит да стана блогер. След като наскоро почнах да използвам <a href="http://www.facebook.com/apps/application.php?id=219303305471">Desktop Notification</a> за Facebook реших да си намеря подобен инструмент, с който да си човъркам wordpress-a без да отварям страници, да ходя по линкове и т.н.<br />
Резултатът е <a href="http://www.red-sweater.com/marsedit/">Mars Edit</a> &#8211; (платено) native Mac OS X приложение, което се интегрира напълно елементарно с blog-ът ми. Всъщност, посика единствено адрес, потребителско име и парола, след което ми даде списъче с темите, които съм писал.</p>
<p>Притежава доста приятен интерфейс за нови постове с live preview, Media Uploader, drafts, въобще всичко, което за сега смятам, че би било нужно за бързо и лесно писане на постове:<br />
<img src="http://dilchovski.files.wordpress.com/2009/09/screenshotspicture-31.png?w=840&#038;h=525" alt="Picture 3.png" border="0" width="840" height="525" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dilchovski.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dilchovski.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dilchovski.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dilchovski.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dilchovski.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dilchovski.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dilchovski.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dilchovski.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dilchovski.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dilchovski.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dilchovski.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dilchovski.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dilchovski.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dilchovski.wordpress.com/48/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=48&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dilchovski.wordpress.com/2009/09/18/marsedit-mac-os-desktop-blogging/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/80d91ae3aec04abc4d763c96434ec258?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iМорт</media:title>
		</media:content>

		<media:content url="http://dilchovski.files.wordpress.com/2009/09/screenshotspicture-31.png" medium="image">
			<media:title type="html">Picture 3.png</media:title>
		</media:content>
	</item>
		<item>
		<title>SpectrumNet &#8211; готиният доставчик</title>
		<link>http://dilchovski.wordpress.com/2009/07/30/spectrumnet-%d0%b3%d0%be%d1%82%d0%b8%d0%bd%d0%b8%d1%8f%d1%82-%d0%b4%d0%be%d1%81%d1%82%d0%b0%d0%b2%d1%87%d0%b8%d0%ba/</link>
		<comments>http://dilchovski.wordpress.com/2009/07/30/spectrumnet-%d0%b3%d0%be%d1%82%d0%b8%d0%bd%d0%b8%d1%8f%d1%82-%d0%b4%d0%be%d1%81%d1%82%d0%b0%d0%b2%d1%87%d0%b8%d0%ba/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 22:56:37 +0000</pubDate>
		<dc:creator>iМорт</dc:creator>
				<category><![CDATA[Randoms]]></category>

		<guid isPermaLink="false">http://dilchovski.wordpress.com/?p=44</guid>
		<description><![CDATA[Преди няколко дни получих СМС, че интернет услугата ми изтича на 29.07 и следва да бъде платена. Не обърнах особено сериозно внимание на това, тъй като у нас плащането на интернет е едно от онези неща, които се изпълняват тип black box. Не знаеш кой и как го прави, но те се случват. Друга такава [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=44&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Преди няколко дни получих СМС, че интернет услугата ми изтича на 29.07 и следва да бъде платена. Не обърнах особено сериозно внимание на това, тъй като у нас плащането на интернет е едно от онези неща, които се изпълняват тип black box. Не знаеш кой и как го прави, но те се случват. Друга такава черна кутия е кошът за мръсно пране. След един ден ги намираш сгънати в гардероба.<br />
Очевидно, обаче remote service-a, който се грижи за интернета се е повредил, защото днес, точно в 1:01ам (някой очевидно не следи за DST) pppoe-то ми спря. Закачих го повторно, при което се оказа, че DNS resolve-а отсреща връща 10.5.0.2 &#8211; някакъв black hole, очевидно местният еквивалент на /dev/null.<br />
Малко след това обаче, опит за отваряне на страница бях препратен на purgatory.spnet.bg. Явно Чистилище за хората с неплатени задължения, но все още не твърде просрочени.</p>
<p>Това, което е интересно, обаче е, че на страницата имаше учтиво написан текст, който споделяше, че услугата ми е не-платена, но за мое улеснение мога да си активирам следващия месец с едно бутонче, като потвърждавам, че в рамките на 3 дни ще платя задължението. Едно кликване по-късно отново бях разкачен от рррое-то и на следващо закачане вече имах интернет.</p>
<p>Учтиво и цивилизовано решение.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dilchovski.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dilchovski.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dilchovski.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dilchovski.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dilchovski.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dilchovski.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dilchovski.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dilchovski.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dilchovski.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dilchovski.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dilchovski.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dilchovski.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dilchovski.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dilchovski.wordpress.com/44/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=44&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dilchovski.wordpress.com/2009/07/30/spectrumnet-%d0%b3%d0%be%d1%82%d0%b8%d0%bd%d0%b8%d1%8f%d1%82-%d0%b4%d0%be%d1%81%d1%82%d0%b0%d0%b2%d1%87%d0%b8%d0%ba/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/80d91ae3aec04abc4d763c96434ec258?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iМорт</media:title>
		</media:content>
	</item>
		<item>
		<title>Objective-C &#8211; Какво, как и защо?</title>
		<link>http://dilchovski.wordpress.com/2009/07/27/objective-c-%d0%ba%d0%b0%d0%ba%d0%b2%d0%be-%d0%ba%d0%b0%d0%ba-%d0%b8-%d0%b7%d0%b0%d1%89%d0%be/</link>
		<comments>http://dilchovski.wordpress.com/2009/07/27/objective-c-%d0%ba%d0%b0%d0%ba%d0%b2%d0%be-%d0%ba%d0%b0%d0%ba-%d0%b8-%d0%b7%d0%b0%d1%89%d0%be/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 12:19:11 +0000</pubDate>
		<dc:creator>iМорт</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dilchovski.wordpress.com/?p=31</guid>
		<description><![CDATA[Тук ще споделя малко мисли за този не до там популярен език. Непопулярен не защото е лош с нещо, хората не го харесват или нещо такова, а просто защото е силно профилиран &#8211; Mac OS X &#38; iPhone Only. Има GNUStep runtime, който е open source, но не е пълна и точна имплементация на всички [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=31&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Тук ще споделя малко мисли за този не до там популярен език.<br />
Непопулярен не защото е лош с нещо, хората не го харесват или нещо такова, а просто защото е силно профилиран &#8211; Mac OS X &amp; iPhone Only.<br />
Има GNUStep runtime, който е open source, но не е пълна и точна имплементация на всички класове, а Cocoa практически отсъства.<br />
Поради тази причина, единствената платформа, за която може да се пишат адекватно приложения остава Mac OS (PC || Phone).</p>
<p>Основната причина да се отделят време и ресурси за изучването на толкова ограничен език е, че това е най-&#8220;first class&#8220; начинът за изграждане на приложения, които се интегрират добре и native в операционната система. Има Ruby &amp;&amp; Python bindings, но аз лично винаги съм имал особено мнение за биндингите &#8211; API-то е насилствено приведено към някакъв език, без да е разработено с идеологията и най.добрите практики за езика.</p>
<p>Всъщност, езикът е доста приятен и се усвоява лесно. Добре е да се отбележи, че положението до голяма степен е както при .NET &#8211; езикът е безполезен без runtime-a, предоставен от операционната система. Надстройка е на С, тоест всяка една конструкция валидна в С е валидна и в Objective-C. Бидейки надстройка, обаче, той добавя доста разнообразна функционалност, концентрирана най-вече околко обектно ориентираният дизайн.<br />
ООП елементите се основават на Smaltalk, което го отличава от С++ подобията. <strong>Изпълнявайки се в runtime е доста динамичен</strong>. Почти всичко възможно се оставя за определяне в runtime. Дори обръщанията на един обект към методи на друг обект (съобщения/messages) се свързват чак при изпълнение (което позволява доста любопитни гимнастики, като програмно подменяне на извикван метод). Съществен недостатък на този подход е големият overhead &#8211; изпращането на messages между обекти би могло да бъде до 3 пъти по-бавно от извикването им в С++.<br />
Архитектурата на съобщенията и методите, също така не позволява operator/function overloading &#8211; метод с едно име в един обект не може да се предефинира с различни аргументи и стойности за връщане.<br />
Съществена разлика е, че <strong>всичко, освен основните типове (int, float, etc) и C структурите е обект</strong>. Не могат да се създават неща на стека. Което е причина за още малко overhead.<br />
Поради използването на runtime е нужно всеки обект да може да комуникира по някакъв унифициран начин с него. За това всеки обект трябва да е пряк или косвен наследник на root обект, който знае как да комуникира с runtime-a. Такъв по default е NSObject (до някъде подобно на Object  в Жаба).<br />
Тук е моментът да спомена, че, както при много други езици <strong>множествено наследяване няма</strong>, но има различни начини за подобие на подобно поведение.</p>
<p>Синтаксисът, като цяло малко се различава от повечето езици.</p>
<p>Съществена разлика спрямо голяма част от ООП езиците е, че <strong>обектите не извикват методите си директно, а обменят съобщения по между си</strong>.<br />
Когато кодът се компилира името на метода се заменя от уникален индентификатор, който си има тип &#8211; SEL. Тъй като езикът е динамичен и много неща се случват чак по време на изпълнение, така и селекторите могат да се модифицират. Нищо не пречи на базата на някакви конкретни условия и логика даден селектор да бъде подменен в реално време от друг обект, например, по начин, който би бил неизвестен по време на компилация.</p>
<p>Друга интересна концепция са <strong>категориите</strong>. Това, което те правят е да добавят функционалност под формата на методи към съществуващи класове без да ги наследяват и без да е нужен техния код. Добавените методи са валидни за всички инстанции на класа в рамките на конкретното приложение и са неразличими от истинските член методи. Неприятното е, че ако се добави метод с името на съществуващ, то го замества напълно и няма как да се извика оригиналният метод.</p>
<p><strong>Протоколите</strong> са местният еквивалент на множествено програмиране. Джавистите веднага ще ги познаят като подобие на Interfaces. Протоколът дефинира редиа методи, част от тях може да са required за имплементиране, част може да са optional.</p>
<p>Най-любопитната тема е <strong>Memory Management</strong>-a. От една страна от Mac OS X 10.5, насам, има Garbage Collector с всичките му благини и тъпни, от друга, за iPhone, Mac OS 10.x (x&lt;5) и по memory-sensitive заигравания се налага ръчно решение. В С++ всичко е елементарно. Правим си new обект, играем си с него и когато всичко приключи го delete-ваме. Тук нещата са малко по-гъвкави (и усложнени). Въвежда се концепцията за <strong>reference counting</strong>.<br />
Когато се създаде нов обект той има reference count == 1. Ако се прати retain съобщение count-ът се увеличава с 1. Ако се прати release се намалява с 1. Когато достигне 0 обектът се унищожава. По този начин отговорността по живота на един обект може да се предава нататък по веригата на извикване.<br />
Например, в един обект извикваме метод, който създава нов обект (count == 1) и го праща на друг обект като метод. Другият обект може да го &#8222;задържи&#8220; (count == 2), с което казва &#8222;Сега аз го ползвам ,никой да не го трие&#8220;, докато обектът, който го е създал може да го &#8222;освободи&#8220; (count == 1). когато другият метод или обект приключи работата си също го &#8222;освобождава&#8220; (count == 0), когато, вече, обектът умира.</p>
<p>По темата може да се говори още много, в нета материали има страшно много, уви, на български не са особено много (поради което донякъде съм писал и тези неша).<br />
Езикът, платформата и runtime-а са страшно гъвкави и като човек с няколко години полупрофесионален опит С++ и 2 години професионален с С# мога да кажа, че за момента това (заедно с чист С за най calculation intensitive частите) е платформата, над която съм се спрял да пиша.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dilchovski.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dilchovski.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dilchovski.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dilchovski.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dilchovski.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dilchovski.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dilchovski.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dilchovski.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dilchovski.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dilchovski.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dilchovski.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dilchovski.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dilchovski.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dilchovski.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=31&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dilchovski.wordpress.com/2009/07/27/objective-c-%d0%ba%d0%b0%d0%ba%d0%b2%d0%be-%d0%ba%d0%b0%d0%ba-%d0%b8-%d0%b7%d0%b0%d1%89%d0%be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/80d91ae3aec04abc4d763c96434ec258?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iМорт</media:title>
		</media:content>
	</item>
		<item>
		<title>Все така Ни СЪм Умрел</title>
		<link>http://dilchovski.wordpress.com/2009/07/27/%d0%b2%d1%81%d0%b5-%d1%82%d0%b0%d0%ba%d0%b0-%d0%bd%d0%b8-%d1%81%d1%8a%d0%bc-%d1%83%d0%bc%d1%80%d0%b5%d0%bb/</link>
		<comments>http://dilchovski.wordpress.com/2009/07/27/%d0%b2%d1%81%d0%b5-%d1%82%d0%b0%d0%ba%d0%b0-%d0%bd%d0%b8-%d1%81%d1%8a%d0%bc-%d1%83%d0%bc%d1%80%d0%b5%d0%bb/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 01:15:04 +0000</pubDate>
		<dc:creator>iМорт</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dilchovski.wordpress.com/?p=24</guid>
		<description><![CDATA[Така де, очевидно доста време е минало. Подтикнат от Марио реших да дам нов опит на блогерът в себе си. Доста се случи през последните месеци. На първо време от iTouch преминах на Android. Половин година съм с HTC Dream(G1) и мисля, че на този етап това е телефонът, който най-много ми харесва. Хем линукс, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=24&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Така де, очевидно доста време е минало.<br />
Подтикнат от <a href="http://peshev.net/blog/">Марио</a> реших да дам нов опит на блогерът в себе си.</p>
<p>Доста се случи през последните месеци.<br />
На първо време от iTouch преминах на Android. Половин година съм с HTC Dream(G1) и мисля, че на този етап това е телефонът, който най-много ми харесва. Хем линукс, хем Just works(tm) (кога ли и на десктопът ще се случи това (за това по-долу)). &#8222;with Google(tm)&#8220; на гърба, пък, вдъхва страхопочитание <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p>Мигрирах към Mac OS. (с дълга предистория)<br />
Всичко започна с един любопитен софтуерен проект, който движа (и за него по-долу). По начало го разработвах на бившото си TabletPC с Линукс. Пишех го на <a href="http://www.qtsoftware.com/">Qt</a> &#8211; любимият си toolkit за мултиплатформени приложения. Още в самото начало се натъкнах на някакъв ужасноо странен и непонятен проблем, който така и не успях напълно да разреша &#8211; при стартиране на няколко обекта, които хем се визуализират, хем имат закачено симулационно тяло (симулирам физика &#8211; това в друг пост), хем периодично се poll-ват от външен тред, което довежда до 99% CPU Usage от X.org още на седмия обект. Няколко дни не успях да направя каквото и да било след часове работа и всякакви опити, при положение, че от моя страна кодът беше изряден. Тогава точно от любопитство се заиграх с Hackintosh &#8211; Mac OS X на нормално РС върху таблета си, с идеята, че би било любопитно ако го подкарам читаво (Mac OS има една от най-страхотните handwriting recognition имплементации, които съм виждал), което, уви, не стана (само едно ядро може да работи, с двете увисва), не ми работеше wifi/bluetooth, батерията караше половин час и т.н. Реших, обаче, да изпробвам платформената независимост на приложението. Тръгна веднага след прекомпилация, но което е по-важно &#8211; бъгът след добавяне на няколко симулирани обекта го нямаше. Програмата се държеше страхотно с няколко десетки.<br />
Точно по това време дойде мометът да се вземе и dedicated hardware за софтчето. Веднага подбрах една Hackintosh friendly конфигурация (Mac OS работи върху точно определен епълски хардуер и всякакви други неща се крепят на крехка паяжина от груби хакове), на която инсталирах Leopard 10.5</p>
<p>Там започна бавното ми и безвъзвратно епълизиране. До етап, в който това е единственият OS на всичките ми машини. От Slackware 9.1 насам Линукс е основната операционна система, която съм ползвал. Около година и нещо съм ползвал Gentoo, от още толкова Ubuntu. Слака изоставих някъде около 11.0.</p>
<p>Експериментирал съм с Мас ОС и преди &#8211; някъде 2007, на последния десктоп, който съм имал. Не ми работеха редица неща, най-важното &#8211; SATA-та, на която имах 500ГБ в дискове, както и звука, което направи начинанието безсмислено и не особено полезно. На няколко пъти съм ползвал различни Мас-ове и като цяло харесвам платформата.<br />
Добре работеща система с Мас ОС, обаче е нещо съвсем различно. Още повече на оторизиран хардуер (и за това надолу).<br />
В последствие си продадох и таблета и станах горд собственик на нов бял Macbook 5,2 (Early 2009).</p>
<p>Защо Mac OS?<br />
- Unix<br />
- Стандартен шел &#8211; Bash.<br />
- Съвместимост с огромна част от *bsd/linux софтуера. &#8211; <a href="http://www.macports.org/">MacPorts</a> е точно това &#8211; Ports за Mac OS. Всичко добре познато от OSS света. <a href="www.finkproject.org">Fink</a> е apt-get базираният аналог.<br />
- Консистентност &#8211; Каквото и да си говорим, линукс <strong>на десктопа</strong> си остава сбирщайн. Липсва каквато и да е консистентност в менюта, подредби и поведение в огромна част от програмите. GNOME/KDE, макар и да води до конкурентност и стремеж към иновативност е довело до кошмарен library hell &#8211; Amarok под GNOME &#8211; Уууужааас. Да не говорим ,че интерфейсът в двете среди е тотално различен. GNOME-ските <a>Human Interface Guidlines</a> се спазват рядко и непълно. За КДЕ не съм сигурен дали съществува нещо подобно.<br />
Под Mac OS такова нещо практически отсъства. Apple също имат <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://developer.apple.com/documentation/UserExperience/Conceptual/AppleHIGuidelines/index.html">Human Interface Guidelines</a>, които, обаче, прилежно се спазват в огромно мнозинство от софтуера за системата. Приложенията са до голяма степен консистентни във външния си вид и клавишните комбинации. Services позволява страхотна интеракция между програми (добавяне на контакти през Опера в Скайп, глобален речник, etc).<br />
- Bundled Software &#8211; стандартно идват X11 имплементация (за графичните OSS apps), XCode &#8211; страхотно IDE от ранга на Eclipse и Visual Studio, PHP5, Java1.6/1.5, Python, Ruby, apache. С оригиналните машини идва и iLife &#8211; iPhoto доста удобно photo library, iWeb (FrontPage на стероиди. На много стероиди), iMovie (MovieMaker на много, много стероиди), GarageBand (FruttyLoops 4 free), iDVD, etc.<br />
- Стабилност &#8211; Значително по-стабилна работа от водещите юзърси линукс дистрибуции &#8211; ubuntu, fedora, etc. Няма dependancy hell, няма зависващ или рестартиращ се Х, видео драйверите винаги работят с ускорение. Minor ъпгрейдите не са съпроводени с литургия (При всички преходи от Ubuntu 7.10 до 9.04 накрая опирах до чист инстал с евакуиране на Home). Bundled software-a е just works. Не твърдя, че не се скапва, но до сега единствните две програми, които са се нуждаели от force close са Opera и Skype. OS-ът е умирал само с Kernel Panics на Хакинтоша, заради фината паяжина от хакове, която кара ОС-ът да се мисли за истински Мас.<br />
- Опростено eye-candy. Кохерентен, стандартен интерфейс навсякъде. Няколко и ненатрапчиви анимации. Съвсем малко transparency тук таме. SVG икони. Единственото, което ми липсва е wobbly windows &#8211; един от много малкото ефекти на Компиз, които ползвах.</p>
<p>Защо набих 1800лв за лаптоп (добре де, взех си ДДС-то)<br />
- Имах много пари за харчене <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
- Страхотна изработка. Усеща се масивен, здрав. вдигам го за едното ъгълче, нещо, за което не веднъж са ме мразели хора с асуси и престижиота. Не ги обвинявам. Горките китайски машини скърцат сякаш всеки момент ще се разсипят на части<br />
- Вечна батерия. Твърдят, че с WiFi е 5 часа. Вероятно ако е просто включен е възможно. Без ВиФИ, обаче, наистина си ги прави при умерено ползване &#8211; например четене. WiFi-то ги сваля на 4 часа. Музика на изключен екран е около 6 часа и половина. Доста добре за 13.3&#8243;. при положение, че на 12&#8243; таблет с ужасно много мъки и пестеж си докарвах малко над 3 часа.<br />
- Огромен тъчпад. Който е и мултитъч.<br />
- Най-удобната лаптопска клавиатура, на която съм писал до сега<br />
- Отделна, а не интегриранав видео карта &#8211; има само още няколко 13&#8243; модела лаптопи с такива. А ми трябва сериозно графично ускорение за софтчето, над което работя.<br />
- Cool Factor &#8211; загладен бял лаптоп със светеща ябълка на гърба.</p>
<p>За сега толкова със завръщането. Ще я видим тая работа с блогването.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dilchovski.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dilchovski.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dilchovski.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dilchovski.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dilchovski.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dilchovski.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dilchovski.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dilchovski.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dilchovski.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dilchovski.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dilchovski.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dilchovski.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dilchovski.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dilchovski.wordpress.com/24/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=24&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dilchovski.wordpress.com/2009/07/27/%d0%b2%d1%81%d0%b5-%d1%82%d0%b0%d0%ba%d0%b0-%d0%bd%d0%b8-%d1%81%d1%8a%d0%bc-%d1%83%d0%bc%d1%80%d0%b5%d0%bb/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/80d91ae3aec04abc4d763c96434ec258?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iМорт</media:title>
		</media:content>
	</item>
		<item>
		<title>Ни съм умрел!</title>
		<link>http://dilchovski.wordpress.com/2008/12/16/%d0%bd%d0%b8-%d1%81%d1%8a%d0%bc-%d1%83%d0%bc%d1%80%d0%b5%d0%bb/</link>
		<comments>http://dilchovski.wordpress.com/2008/12/16/%d0%bd%d0%b8-%d1%81%d1%8a%d0%bc-%d1%83%d0%bc%d1%80%d0%b5%d0%bb/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 21:16:11 +0000</pubDate>
		<dc:creator>iМорт</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dilchovski.wordpress.com/?p=21</guid>
		<description><![CDATA[Така де, жив съм. Нещо от месец не съм писал нищо, не е като да не е имало нищо интересно за писане, но може би не ми се е пишело Съществено интересни неща няма. Банковата история си остана недоразвита, където си беше последно, приятелката ми ме заряза от нищото след 4 месеца. 8ми Декември беше [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=21&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Така де, жив съм. Нещо от месец не съм писал нищо, не е като да не е имало нищо интересно за писане, но може би не ми се е пишело <img src='http://s1.wp.com/wp-includes/images/smilies/icon_confused.gif' alt=':?' class='wp-smiley' /><br />
Съществено интересни неща няма. Банковата история си остана недоразвита, където си беше последно, приятелката ми ме заряза от нищото след 4 месеца.<br />
8ми Декември беше забавно, наваля ни изненадващ сняг, така че стана още по-приятно, а и хората бяха доста приятни и интересни.</p>
<p>Та, ни съм умрел!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dilchovski.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dilchovski.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dilchovski.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dilchovski.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dilchovski.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dilchovski.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dilchovski.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dilchovski.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dilchovski.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dilchovski.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dilchovski.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dilchovski.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dilchovski.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dilchovski.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dilchovski.wordpress.com&amp;blog=5249053&amp;post=21&amp;subd=dilchovski&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dilchovski.wordpress.com/2008/12/16/%d0%bd%d0%b8-%d1%81%d1%8a%d0%bc-%d1%83%d0%bc%d1%80%d0%b5%d0%bb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/80d91ae3aec04abc4d763c96434ec258?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">iМорт</media:title>
		</media:content>
	</item>
	</channel>
</rss>
