<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" 
   xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" 
   xmlns:html="http://www.w3.org/1999/html" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
<channel>
   <title>Regular Impressions</title>
   <link>http://doganov.org/blog</link>
   <description>Разпиляни мисли и впечатления на Калоян Доганов</description>
   <language>bg</language>
   <copyright>Public Domain</copyright>
   <ttl>60</ttl>
   <pubDate>Wed, 27 Oct 2004 11:21 GMT</pubDate>
   <managingEditor>kaloian@doganov.org</managingEditor>
   <generator>PyBlosxom http://pyblosxom.sourceforge.net/ 1.3 devel</generator>
<item>
   <title>Google Wrapper</title>
   <guid isPermaLink="false">random/coreblog_123</guid>
   <link>http://doganov.org/blog/random/coreblog_123.xhtml</link>
   <description><![CDATA[

<p>Снощи се заплеснах в писането на wrapper на web-интерфейса на <a href="http://www.google.com">Google</a>. Исках да мога програмно да разпитвам Google и да правя разни неща с резултатите. Започнах с официалното Web Services API, което дори идва с работещи примери на Java и .NET. За съжаление, официалното API има следните недостатъци:</p>

<p>-- Изисква предварителна регистрация</p>

<p>-- Допуска само 1000 заявки на ден</p>

<p>-- Връща максимум 10 резултата за всяка заявка</p>

<p>Особено последното прави този програмен интерфейс съвсем осакатен и подходящ само за тривиални експерименти.</p>

<p>Въоръжен с мерак за скриптиране, драснах един прототип на Питон, който използва стандартния web-интерфейс, но програмно изглежда като итератор (хич не съм го изчистил концептуално, но това ми беше последната грижа). Дори се преструва на потребител и се прави че щрака на бутона "Следваща" по време на итерацията.</p>

<p>Какво бе учудването ми, когато открих, че Google се правят на ощипани при използването на невизуален web-клиент. Когато се опиташ да изпълниш заявка към търсещата машина с Python urllib2 като User-Agent, Google връща любезно съобщение за грешка:</p>

<blockquote><p>Your client does not have permission to get URL /search?q=blah from this server.</p></blockquote>

<p>Айде, ве, не на мене тия. Бях твърдо решен ако се наложи да имитирам пълнокръвна HTTP-сесия. Наподобих повечето хедъри от моя <a href="http://spreadfirefox.com">Firefox</a> и убедих Google, че всъщност търсещата машина се ползва от потребител на Firefox, който е изключил функцията cookies. Не че е проблем да се реализират и cookies, но защо да се престараваме след като Google работи и без тях. :-)</p>

<p>Така успях да подкарам прототипа и да изпълня няколко много интригуващи заявки. Вероятно знаете за заявките от тип <b>site:domain.com</b>, където ограничавате Google да търси само върху адресите попадащи в определен домейн и неговите поддомейни. По-слабо известна обаче е възможността <b>[inurl:blah]</b> където думата <i>blah</i> трябва да се среща в <i>адреса</i> на ресурса, който търсим. Така например със заявката <a
href="http://www.google.com/search?q=%5Binurl:pdf%5D+site:microsoft.com&amp;num=100&amp;hl=bg&amp;lr=&amp;as_qdr=all&amp;filter=0">[inurl:pdf] site:microsoft.com</a> лесно можем да извлечем всички PDF-файлове, които се намират на сайтовете на Microsoft. Примерно.</p>

<p>Другата изненада беше, че през web-интерфейса си Google може да връща само първите 1000 резултата от изпълнената заявката. За да избегна това ограничение, пусках по няколко заявки, специфициращи подмножество на голямата. Например, искаме да извлечем "всички", но вместо това първо извличаме "всички, които започват с А", след това "всички, които започват с Б" и т.н. Накрая обобщаваме резултата.</p>

<p>Обаче като натрупаме доста такива заявки и Google по някое време баялдисва и казва: Error 503 Service Unavailable. Затуй скриптът в такива случаи трябва да се направи на пушач и да излезе на терасата в почивка няколко минути (с постъпателно нарастване на пуш-паузата при последователни откази) докато успее да продължи. Последното решение го измислихме заедно с Тревата, докато чатвахме в ShakeIT IRC.</p>

<p>Така мина нощта, без да я усетя.</p>

<p>А, да, и Ани се обади в потайна доба, беше се нашморцала здраво по случай раждането на племенника на Момчил. Тя се събуди в ранния следобед и не си спомняше почти нищо от снощния ни разговор. :-)</p>

<p>Така е, Ани, като не си индексираш спомените с Google. ;-)</p>
]]></description>
   <category domain="http://doganov.org/blog">/random</category>
   <pubDate>Wed, 27 Oct 2004 11:21 GMT</pubDate>
</item>
<item>
   <title>Работа за програмисти във Варна</title>
   <guid isPermaLink="false">random/coreblog_122</guid>
   <link>http://doganov.org/blog/random/coreblog_122.xhtml</link>
   <description><![CDATA[

<p>На <a href="http://openfest.org">Open Fest '2004</a> Роси ме запозна с Ина Велчева от <a href="http://www.sciant.com/">Sciant</a>. Оказа се, че Sciant откриват свой офис във Варна и търсят програмисти за работа там. Ако програмирате на Java и се интересувате от работа, погледнете <a href="http://www.sciant.com/news2.html">официалната новина на Sciant</a> и изпратете CV на <a href="mailto:ina.velcheva@sciant.com">Ина</a>. По този повод в събота (30 октомври) ще има "Job Fair"-събитие в хотел Аква.</p>

<p>Хубаво е, когато възможностите за работа във Варна се увеличават. Това ще стимулира повече програмисти да остават в града, вместо да се преселват в София, а оттам в чужбина... Това е добре за всички ни. За програмистите това означава по-добри перспективи за работа у дома. А ако програмистите се задържат тук, за работодателите това означава по-широк избор на кадърна работна ръка във Варна.</p>

<p>Впрочем, ето <a href="http://openfest.org/photos/2004/sebastianz55/sciant/01%20137.jpg">две очарователни причини</a> поради които най-искрено можете да съжалявате, че сте изпуснали Open Fest '2004. :-)</p>
]]></description>
   <category domain="http://doganov.org/blog">/random</category>
   <pubDate>Tue, 26 Oct 2004 12:20 GMT</pubDate>
</item>
<item>
   <title>Open Fest '2004</title>
   <guid isPermaLink="false">freedom/events/coreblog_121</guid>
   <link>http://doganov.org/blog/freedom/events/coreblog_121.xhtml</link>
   <description><![CDATA[

<p>УРА!!! <a href="http://openfest.org">Open Fest '2004</a> в София беше най-страхотното и готино събитие, на което някога съм присъствал! Нямам думи да го опиша, нито да благодаря на всички, които участваха в организацията.</p>

<p>Простата статистика показва, че в пощенският списък Tech-Events, където се вихреше комуникацията между организаторите, за последния месец (23 септември - 23 октомври) са обменени общо 1011 съобщения.</p>

<p>Тези които ги домързя и/или си намериха оправдание да не присъстват, могат само да съжаляват.</p>

<p>Нося фланелки към Варна, по 9 лв. всяка. В цената влиза и дарение за <a href="http://fsa-bg.org">Сдружение "Свободен софтуер"</a>. Вземете си парче от култовия Open Fest '2004.</p>
]]></description>
   <category domain="http://doganov.org/blog">/freedom/events</category>
   <pubDate>Mon, 25 Oct 2004 06:58 GMT</pubDate>
</item>
<item>
   <title>NEW</title>
   <guid isPermaLink="false">freedom/software/coreblog_120</guid>
   <link>http://doganov.org/blog/freedom/software/coreblog_120.xhtml</link>
   <description><![CDATA[

<p>Днес изготвих тестов случай, при който проблемът с <a href="http://bugzilla.gnome.org/show_bug.cgi?id=154228">грешка 154228</a> <i>винаги</i> се проявява. Това убеди Микаел официално да признае грешката и да я премести в състояние NEW. Бавно, но сигурно се движим напред. :-) Микаел ще копае по този въпрос през почивните дни, докато аз съм в София за <a href="http://openfest.org">Open Fest'2004</a>.</p>

<p>Междувременно вчера е излязло първото официално издание на <a href="http://www.ubuntulinux.org">Ubuntu Linux</a>. В момента свалям ISO-образа на инсталационния диск за i386, както и Live CD-то. Има и <a href="http://releases.ubuntu.com/warty/">версии</a> за AMD64 и PowerPC.</p>

<p>Философията на Ubuntu много ми допада. Харесва ми семплият, изчистен подход. Надявам се тъкмо Ubuntu да се окаже така необходимия дружелюбен образ на Дебиан и Гном за крайни потребители.</p>

<p>Нямам търпение да го изпробвам на лаптопа на Елена. :-)</p>
]]></description>
   <category domain="http://doganov.org/blog">/freedom/software</category>
   <pubDate>Thu, 21 Oct 2004 12:06 GMT</pubDate>
</item>
<item>
   <title>UNCONFIRMED</title>
   <guid isPermaLink="false">freedom/software/coreblog_119</guid>
   <link>http://doganov.org/blog/freedom/software/coreblog_119.xhtml</link>
   <description><![CDATA[

<p>Снощи стоях до 4:00 пред екрана за да умувам какво се случва в библиотеката <a href="http://www.imendio.com/projects/loudmouth/">Loudmouth</a>, така че да се <a
href="http://bugzilla.gnome.org/attachment.cgi?id=32140&amp;action=view">оплесква кодирането</a> на някои имена в roster-а на <a href="http://www.imendio.com/projects/gossip/">Gossip</a>. Този проблем ме спира да използвам иначе елегантия Gossip във всекидневната си работа.</p>

<p><a href="http://bugzilla.org">Bugzilla</a> е голяма работа. От първото докладване на проблема до сега с Микаел Халендал сме си разменили 26 реплики и мнения за това, което може би се случва в кода. Това е <a href="http://bugzilla.gnome.org/show_bug.cgi?id=154228">грешка 154228</a> официално прономерована и прошнурована в системата на GNOME. Днес Микаел най-сетне склони да смени състоянието й от NEEDINFO до UNCONFIRMED.</p>

<p>Скръндза... :-)</p>
]]></description>
   <category domain="http://doganov.org/blog">/freedom/software</category>
   <pubDate>Wed, 20 Oct 2004 12:39 GMT</pubDate>
</item>
<item>
   <title>PKI</title>
   <guid isPermaLink="false">random/coreblog_118</guid>
   <link>http://doganov.org/blog/random/coreblog_118.xhtml</link>
   <description><![CDATA[

<p>Току-що с Пешо стигнахме до заключението, че щом публичният и частният ключ образуват комплементарна двойка, то това трябва да важи и за двойката публичен/частен дом.</p>

<p>Както си личи, Пешо е виден експерт по PKI. Даже инициалите му са такива PKI = Peter Kirilov Ivanov.</p>

<p>Ей такива болести стават, докато Пешо сменя фасона на маршрутизатора, аз преследвам грешка в проекта (пфу, JSP...), а двамата дружно четем <a href="http://www.ariagiovanni.com/bio.html">автобиографията на една наборка</a>. Вчера цял следобед гледахме едно нейно филмче с mplayer през ssh (с ascii art) по стара изпитана рецепта на Станко.</p>

<p>Пешо вика, че съм бил цицоман.</p>
]]></description>
   <category domain="http://doganov.org/blog">/random</category>
   <pubDate>Thu, 14 Oct 2004 08:18 GMT</pubDate>
</item>
<item>
   <title>В памет на Netscape</title>
   <guid isPermaLink="false">freedom/reflections/coreblog_117</guid>
   <link>http://doganov.org/blog/freedom/reflections/coreblog_117.xhtml</link>
   <description><![CDATA[

<p>Тази сутрин разбрах защо така се напихме снощи. Вчера, 13 октомври, се навършват 10 години от излизането на <a href="http://cgi.netscape.com/newsref/pr/newsrelease1.html">първата публична бета на Netscape</a> -- програмата, която промени света безвъзвратно. Промяна, която докосва всички кътчета на всекидневието ни. Този блог, например, не би могъл да съществува без революцията на Netscape.</p>

<p><a href="http://www.mozillazine.org/talkback.html?article=5384">MozillaZine</a> също отбелязва събитието, а оттам попаднах на интересно <a href="http://news.com.com/Unearthing+the+origins+of+Firefox/2008-1032_3-5406708.html">интервю с Бен Гуджър</a> (така ли се произнася?), авторът на <a href="http://spreadfirefox.com">Firefox</a>. Браузърът, който ползвам днес, е готин, модерен, свободен, и е далечен наследник на същата онази програма, обявена преди десет години. Може би и затова ми харесва мотото му:</p>

<p class="blogpic"><a href="http://www.spreadfirefox.com/?q=affiliates&amp;id=0&amp;t=58"><img alt="Get Firefox!" title="Get Firefox!" src="http://www.spreadfirefox.com/community/images/affiliates/Buttons/180x60/get.gif"/></a></p>

<p>Минута мълчание в памет на Netscape. Тази сутрин обаче мога да вдигна наздравица само с аспирин. И съм благодарен на брат ми, че търпеливо ме е довел до вкъщи. Не помня как, загубил съм си паметта. Моята си, де, не тази 30-пиновата, която Калина ми подари снощи и за която също съм благодарен.</p>
]]></description>
   <category domain="http://doganov.org/blog">/freedom/reflections</category>
   <pubDate>Thu, 14 Oct 2004 07:10 GMT</pubDate>
</item>
<item>
   <title>Пътуване с UML</title>
   <guid isPermaLink="false">random/coreblog_116</guid>
   <link>http://doganov.org/blog/random/coreblog_116.xhtml</link>
   <description><![CDATA[

<p>Вчера си купих "UML Основи" на <a href="http://www.martinfowler.com">Мартин Фаулър</a> и цяла нощ във влака флиртувах с UML. Любимият ми пасаж от книгата е:</p>

<blockquote><p>Ако някой ви срещне из тъмните улички и ви каже, "Ей, искаш ли да видиш една UML диаграма?", най-вероятно тази диаграма би била диаграма на клас.</p></blockquote>

<p>Влакът беше пълен, aз до късно се занасях с диаграмите на класове в трета глава, и дори успях да поспя в купето.</p>

<p>Да си призная, в тъмната сутрин през октомври на Пловдивската гара е ужасен студ. Добре че си бях облякъл по-топлите дрехи, а не тръгнах по чехли и одеало, както бях планирал в началото. Пошлях се из уличките в ранното утро, поцелувах се още с книгата (уви, шадраванът в парка беше замлъкнал). Когато <a href="http://yovko.net">Йовко</a> и <a href="http://zdravko.openintegra.com">Здравко</a> ме пресрещнаха в засада, бях силно изненадан, че не ми извикаха:</p>

<p>-- Man, искаш ли да видиш една UML диаграма?</p>
]]></description>
   <category domain="http://doganov.org/blog">/random</category>
   <pubDate>Sat, 02 Oct 2004 09:42 GMT</pubDate>
</item>
<item>
   <title>Огледалце на стената</title>
   <guid isPermaLink="false">random/coreblog_115</guid>
   <link>http://doganov.org/blog/random/coreblog_115.xhtml</link>
   <description><![CDATA[

<p>Петък е ден за щуротии. Днес обърнахме наопаки модерния епистоларен жанр и направихме <a href="http://al-mirror.blogspot.com">блог на Сашо Шопов</a>. Търсят се тайни и явни агенти за списването му. :-)</p>
]]></description>
   <category domain="http://doganov.org/blog">/random</category>
   <pubDate>Fri, 01 Oct 2004 11:51 GMT</pubDate>
</item>
</channel>
</rss>
