<?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/"
	>

<channel>
	<title>Toshe and Tanya's blog &#187; programming</title>
	<atom:link href="http://toshe.bukov.com/blog/index.php/post/tag/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://toshe.bukov.com/blog</link>
	<description>Toshe and Tanya's thoughts about Life, the Universe and Everything</description>
	<lastBuildDate>Mon, 19 Oct 2009 12:10:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Направи си сам&#8230; уеб браузър</title>
		<link>http://toshe.bukov.com/blog/index.php/post/2008/05/26/130</link>
		<comments>http://toshe.bukov.com/blog/index.php/post/2008/05/26/130#comments</comments>
		<pubDate>Mon, 26 May 2008 16:33:04 +0000</pubDate>
		<dc:creator>Toshe</dc:creator>
				<category><![CDATA[Life, the Universe and Everything]]></category>
		<category><![CDATA[The matrix world]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[WebKit]]></category>

		<guid isPermaLink="false">http://toshe.bukov.com/blog/index.php/post/2008/05/26/130</guid>
		<description><![CDATA[Въпреки че ежедневно се занимавам с компютри и съм свикнал с бурното развитие на технологииите, все още има неща в бранша, които ме смайват. Ето например последната версия на библиотеката за програмиране QT 4.4 (произнася се като англииското &#8220;cute&#8221; &#8211; приятен). Едно от новите въведения е реализирането на WebKit &#8211; модулен интернет браузър (е не [...]]]></description>
			<content:encoded><![CDATA[<p>Въпреки че ежедневно се занимавам с компютри и съм свикнал с бурното развитие на технологииите, все още има неща в бранша, които ме смайват. Ето например <a href="http://doc.trolltech.com/4.4/qt4-4-intro.html">последната версия</a> на библиотеката за програмиране <a href="http://trolltech.com/products/qt/">QT</a> <a href="http://doc.trolltech.com/4.4/index.html">4.4 </a> (произнася се като англииското &#8220;cute&#8221; &#8211; приятен). Едно от новите въведения е реализирането на <a href="http://en.wikipedia.org/wiki/Webkit">WebKit</a> &#8211; модулен интернет браузър (е не мога да се насиля преведа тая дума като &#8220;четец&#8221; и това си е!). Още след като бяха пуснати библиотеките <a href="http://wiki.python.org/moin/PyQt">PyQT </a>за връзка между <a href="http://www.python.org/">Python</a> и Qt 4.4 започнах да се човъркам из кода и за по-малко от два часа (толкова ми отпусна Жорката докато спеше обедния си сън) успях да спретна един много елементарен браузер. Само за сравнение &#8211; новата версия на <a href="http://en.wikipedia.org/wiki/Firefox_3#Version_3.0">Firefox 3</a> отне повече от година и половина. Естествено няма място за сравнение на няколко набързо нахвърлени реда код и гигантското постижение което е новия Firefox, но все пак дава перспектива.<br />
Ето как изглежда програмката в действие:</p>
<p><a href='http://toshe.bukov.com/blog/wp-content/uploads/2008/05/pyqt_webkit_test_screenshot_windows.png' title='Toshe Bukov’s PyQt WebKit example'><img src='http://toshe.bukov.com/blog/wp-content/uploads/2008/05/pyqt_webkit_test_screenshot_windows.thumbnail.png' alt='Toshe Bukov’s PyQt WebKit example' /></a></p>
<p>А по-долу е кода на главната програма (webkit_test.py) и на визуалната част (т.нар. GUI &#8211; Graphical User Interface) &#8211; (Ui_webkit_test.py). Графиния интерфейс е проектиран с <a href="http://doc.trolltech.com/4.4/designer-manual.html">QtDesigner </a>а за редактор съм използал <a href="http://www.die-offenbachs.de/eric/index.html">Eric4</a>. За сваляне на кода &#8211; ето на този адрес: <a href="http://toshe.bukov.com/download/toshe_bukov_pyqt_4.4_webkit_example_ver._0.6.zip">http://toshe.bukov.com/download/toshe_bukov_pyqt_4.4_webkit_example_ver._0.6.zip</a>.</p>
<p><span id="more-130"></span><br />
<strong>webkit_test.py</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># -*- coding: utf-8 -*-</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># Author: Toshe Bukov (toshe[at]bukov[dot]com)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># Licence: GNU GPL version 3 or later (http://www.gnu.org/licenses/gpl-3.0.html)</span></div>
</li>
<li class="li2">
<div class="de2"><span class="co1">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># This example can be seen at http://toshe.bukov.com/blog/index.php/post/2008/05/26/130</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&quot;&quot;</span><span class="st0">&quot;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="st0">Module implementing MainWindow.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&quot;</span><span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">sys</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">from</span> PyQt4 <span class="kw1">import</span> QtGui, QtCore, QtWebKit</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">from</span> PyQt4.<span class="me1">QtGui</span> <span class="kw1">import</span> QMainWindow</div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">from</span> PyQt4.<span class="me1">QtCore</span> <span class="kw1">import</span> pyqtSignature</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">from</span> Ui_webkit_test <span class="kw1">import</span> Ui_MainWindow</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> MainWindow<span class="br0">&#40;</span>QMainWindow, Ui_MainWindow<span class="br0">&#41;</span>:</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="st0">&quot;&quot;</span><span class="st0">&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp;This class implements the container window that consists of address bar, button and</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp;web page renderer.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp;&quot;</span><span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> <span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span>, parent = <span class="kw2">None</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;&quot;</span><span class="st0">&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;Class constructor.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;&quot;</span><span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; QMainWindow.<span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span>, parent<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">setupUi</span><span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">loadingURL</span> = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">#self.setWindowTitle(&quot;PyQt4.4 WebKit browser demo&quot;)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @pyqtSignature<span class="br0">&#40;</span><span class="st0">&quot;&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> on_urlBar_returnPressed<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;&quot;</span><span class="st0">&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;This method is invoked when Enter/Return keyboard key is pressed.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;&quot;</span><span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; urlText = <span class="kw2">str</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">urlBar</span>.<span class="me1">text</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">lower</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="kw1">not</span> urlText.<span class="me1">startswith</span><span class="br0">&#40;</span><span class="st0">&quot;http://&quot;</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; urlText = <span class="st0">&quot;http://&quot;</span> + urlText</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">loadingURL</span> = urlText</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; urlAddress = QtCore.<span class="me1">QUrl</span><span class="br0">&#40;</span>urlText<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">webView</span>.<span class="me1">load</span><span class="br0">&#40;</span>urlAddress<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; @pyqtSignature<span class="br0">&#40;</span><span class="st0">&quot;&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> on_goButton_clicked<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;&quot;</span><span class="st0">&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;This method is invoked when &quot;</span>Go<span class="st0">&quot; button is clicked. </span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;&quot;</span><span class="st0">&quot;&quot;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">on_urlBar_returnPressed</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @pyqtSignature<span class="br0">&#40;</span><span class="st0">&quot;&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> on_webView_loadStarted<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;&quot;</span><span class="st0">&quot;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;QT invokes this method when page is being loaded in WebKit widget.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;&quot;</span><span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">statusbar</span>.<span class="me1">showMessage</span><span class="br0">&#40;</span><span class="st0">&quot;Loading &quot;</span> + <span class="kw2">self</span>.<span class="me1">loadingURL</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @pyqtSignature<span class="br0">&#40;</span><span class="st0">&quot;bool&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">def</span> on_webView_loadFinished<span class="br0">&#40;</span><span class="kw2">self</span>, p0<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;&quot;</span><span class="st0">&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;This method is invoked when page load is complete.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;&quot;</span><span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">statusbar</span>.<span class="me1">showMessage</span><span class="br0">&#40;</span><span class="st0">&quot;Done. (&quot;</span> + <span class="kw2">self</span>.<span class="me1">webView</span>.<span class="me1">url</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">toString</span><span class="br0">&#40;</span><span class="br0">&#41;</span> + <span class="st0">&quot;)&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> __name__ == <span class="st0">&quot;__main__&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; app = QtGui.<span class="me1">QApplication</span><span class="br0">&#40;</span><span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; mw = MainWindow<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; mw.<span class="me1">show</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">sys</span>.<span class="me1">exit</span><span class="br0">&#40;</span>app.<span class="me1">exec_</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p><strong>Ui_webkit_test.py</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># -*- coding: utf-8 -*-</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># Form implementation generated from reading ui file &#8216;webkit_test.ui&#8217;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="co1">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># Created: Mon May 26 15:53:38 2008</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># &nbsp; &nbsp; &nbsp;by: PyQt4 UI code generator 4.4.2</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># Author: Toshe Bukov (toshe[at]bukov[dot]com)</span></div>
</li>
<li class="li2">
<div class="de2"><span class="co1"># Licence: GNU GPL version 3 or later (http://www.gnu.org/licenses/gpl-3.0.html)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># This example can be seen at http://toshe.bukov.com/blog/index.php/post/2008/05/26/130</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">from</span> PyQt4 <span class="kw1">import</span> QtCore, QtGui</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> Ui_MainWindow<span class="br0">&#40;</span><span class="kw2">object</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> setupUi<span class="br0">&#40;</span><span class="kw2">self</span>, MainWindow<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; MainWindow.<span class="me1">setObjectName</span><span class="br0">&#40;</span><span class="st0">&quot;MainWindow&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; MainWindow.<span class="me1">resize</span><span class="br0">&#40;</span><span class="nu0">800</span>,<span class="nu0">600</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">centralwidget</span> = QtGui.<span class="me1">QWidget</span><span class="br0">&#40;</span>MainWindow<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">centralwidget</span>.<span class="me1">setGeometry</span><span class="br0">&#40;</span>QtCore.<span class="me1">QRect</span><span class="br0">&#40;</span><span class="nu0">0</span>,<span class="nu0">27</span>,<span class="nu0">800</span>,<span class="nu0">548</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">centralwidget</span>.<span class="me1">setObjectName</span><span class="br0">&#40;</span><span class="st0">&quot;centralwidget&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">verticalLayout</span> = QtGui.<span class="me1">QVBoxLayout</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">centralwidget</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">verticalLayout</span>.<span class="me1">setObjectName</span><span class="br0">&#40;</span><span class="st0">&quot;verticalLayout&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">horizontalLayout</span> = QtGui.<span class="me1">QHBoxLayout</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">horizontalLayout</span>.<span class="me1">setObjectName</span><span class="br0">&#40;</span><span class="st0">&quot;horizontalLayout&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">urlBar</span> = QtGui.<span class="me1">QLineEdit</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">centralwidget</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">urlBar</span>.<span class="me1">setObjectName</span><span class="br0">&#40;</span><span class="st0">&quot;urlBar&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">horizontalLayout</span>.<span class="me1">addWidget</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">urlBar</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">goButton</span> = QtGui.<span class="me1">QPushButton</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">centralwidget</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">goButton</span>.<span class="me1">setObjectName</span><span class="br0">&#40;</span><span class="st0">&quot;goButton&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">horizontalLayout</span>.<span class="me1">addWidget</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">goButton</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">verticalLayout</span>.<span class="me1">addLayout</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">horizontalLayout</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">webView</span> = QtWebKit.<span class="me1">QWebView</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">centralwidget</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">webView</span>.<span class="me1">setUrl</span><span class="br0">&#40;</span>QtCore.<span class="me1">QUrl</span><span class="br0">&#40;</span><span class="st0">&quot;about:blank&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">webView</span>.<span class="me1">setObjectName</span><span class="br0">&#40;</span><span class="st0">&quot;webView&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">verticalLayout</span>.<span class="me1">addWidget</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">webView</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; MainWindow.<span class="me1">setCentralWidget</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">centralwidget</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">menubar</span> = QtGui.<span class="me1">QMenuBar</span><span class="br0">&#40;</span>MainWindow<span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">menubar</span>.<span class="me1">setGeometry</span><span class="br0">&#40;</span>QtCore.<span class="me1">QRect</span><span class="br0">&#40;</span><span class="nu0">0</span>,<span class="nu0">0</span>,<span class="nu0">800</span>,<span class="nu0">27</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">menubar</span>.<span class="me1">setObjectName</span><span class="br0">&#40;</span><span class="st0">&quot;menubar&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">menuFile</span> = QtGui.<span class="me1">QMenu</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">menubar</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">menuFile</span>.<span class="me1">setObjectName</span><span class="br0">&#40;</span><span class="st0">&quot;menuFile&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; MainWindow.<span class="me1">setMenuBar</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">menubar</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">statusbar</span> = QtGui.<span class="me1">QStatusBar</span><span class="br0">&#40;</span>MainWindow<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">statusbar</span>.<span class="me1">setGeometry</span><span class="br0">&#40;</span>QtCore.<span class="me1">QRect</span><span class="br0">&#40;</span><span class="nu0">0</span>,<span class="nu0">575</span>,<span class="nu0">800</span>,<span class="nu0">25</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">statusbar</span>.<span class="me1">setObjectName</span><span class="br0">&#40;</span><span class="st0">&quot;statusbar&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; MainWindow.<span class="me1">setStatusBar</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">statusbar</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">actionExit</span> = QtGui.<span class="me1">QAction</span><span class="br0">&#40;</span>MainWindow<span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">actionExit</span>.<span class="me1">setObjectName</span><span class="br0">&#40;</span><span class="st0">&quot;actionExit&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">menuFile</span>.<span class="me1">addAction</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">actionExit</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">menubar</span>.<span class="me1">addAction</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">menuFile</span>.<span class="me1">menuAction</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">retranslateUi</span><span class="br0">&#40;</span>MainWindow<span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; QtCore.<span class="me1">QObject</span>.<span class="me1">connect</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">actionExit</span>,QtCore.<span class="me1">SIGNAL</span><span class="br0">&#40;</span><span class="st0">&quot;triggered()&quot;</span><span class="br0">&#41;</span>,MainWindow.<span class="me1">close</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; QtCore.<span class="me1">QMetaObject</span>.<span class="me1">connectSlotsByName</span><span class="br0">&#40;</span>MainWindow<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> retranslateUi<span class="br0">&#40;</span><span class="kw2">self</span>, MainWindow<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; MainWindow.<span class="me1">setWindowTitle</span><span class="br0">&#40;</span>QtGui.<span class="me1">QApplication</span>.<span class="me1">translate</span><span class="br0">&#40;</span><span class="st0">&quot;MainWindow&quot;</span>, <span class="st0">&quot;Python QT4.4 Webkit test&quot;</span>, <span class="kw2">None</span>, QtGui.<span class="me1">QApplication</span>.<span class="me1">UnicodeUTF8</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">goButton</span>.<span class="me1">setText</span><span class="br0">&#40;</span>QtGui.<span class="me1">QApplication</span>.<span class="me1">translate</span><span class="br0">&#40;</span><span class="st0">&quot;MainWindow&quot;</span>, <span class="st0">&quot;Go&quot;</span>, <span class="kw2">None</span>, QtGui.<span class="me1">QApplication</span>.<span class="me1">UnicodeUTF8</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">menuFile</span>.<span class="me1">setTitle</span><span class="br0">&#40;</span>QtGui.<span class="me1">QApplication</span>.<span class="me1">translate</span><span class="br0">&#40;</span><span class="st0">&quot;MainWindow&quot;</span>, <span class="st0">&quot;File&quot;</span>, <span class="kw2">None</span>, QtGui.<span class="me1">QApplication</span>.<span class="me1">UnicodeUTF8</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">actionExit</span>.<span class="me1">setText</span><span class="br0">&#40;</span>QtGui.<span class="me1">QApplication</span>.<span class="me1">translate</span><span class="br0">&#40;</span><span class="st0">&quot;MainWindow&quot;</span>, <span class="st0">&quot;Exit&quot;</span>, <span class="kw2">None</span>, QtGui.<span class="me1">QApplication</span>.<span class="me1">UnicodeUTF8</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># &#8212; uncomment below code to test the GUI code</span></div>
</li>
<li class="li2">
<div class="de2"><span class="co1">#from PyQt4 import QtWebKit</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#if __name__ == &quot;__main__&quot;:</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># &nbsp; &nbsp;import sys</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># &nbsp; &nbsp;app = QtGui.QApplication(sys.argv)</span></div>
</li>
<li class="li2">
<div class="de2"><span class="co1"># &nbsp; &nbsp;MainWindow = QtGui.QMainWindow()</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># &nbsp; &nbsp;ui = Ui_MainWindow()</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># &nbsp; &nbsp;ui.setupUi(MainWindow)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># &nbsp; &nbsp;MainWindow.show()</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># &nbsp; &nbsp;sys.exit(app.exec_())</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://toshe.bukov.com/blog/index.php/post/2008/05/26/130/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ако шофьорите ги наемаха като програмистите&#8230;</title>
		<link>http://toshe.bukov.com/blog/index.php/post/2008/03/31/128</link>
		<comments>http://toshe.bukov.com/blog/index.php/post/2008/03/31/128#comments</comments>
		<pubDate>Mon, 31 Mar 2008 13:39:27 +0000</pubDate>
		<dc:creator>Toshe</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[The matrix world]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://toshe.bukov.com/blog/index.php/post/2008/03/31/128</guid>
		<description><![CDATA[Това ми го изпрати един приятел. Авторът е неизвестен, но пък обявата си е баш като истинска &#8212; Ако шофьорите ги наемаха на работа както програмистите&#8230; ето как щеше да изглежда една обява: Длъжност: шофьор Изисквания: професионални навици на управление на леко- и тежкотоварни автомобили, тролеи, трамваи, влакове на метрото, трaктори, багери, БМП и съвременни [...]]]></description>
			<content:encoded><![CDATA[<p>Това ми го изпрати един приятел. Авторът е неизвестен, но пък обявата си е баш като истинска <img src='http://toshe.bukov.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
&#8212;<br />
Ако шофьорите ги наемаха на работа както програмистите&#8230; ето как щеше да изглежда една обява:<br />
<strong>Длъжност:</strong> шофьор<br />
<strong>Изисквания:</strong> професионални навици на управление на леко- и тежкотоварни автомобили, тролеи, трамваи, влакове на метрото, трaктори, багери, БМП и съвременни леки/тежки танкове, на въоръжение в страните НАТО.<br />
Навици за ралийно и екстремално управление са задължителни. Опит във Формула-1 &#8211; препоръчва се.<br />
Кандидатите трябва да притежават сертификати от BMW, General Motors и Bosch, а също и дипломи за участие в големи международни ралита, но не по-стари от 2 години.<br />
<strong>Заплащанe:</strong> 300-500 лева, определя се в зависимоста от резултата на интервюто.<br />
Знания и опит в ремонт на бутални и роторни двигатели, автоматични и ръчни трансмисии, системи за запалване, бордови компютри, ABS, GPS и автомобилни аудио системи на водещи световни производители &#8211; задължително.<br />
Опит в провеждане на тенекеджийски и бояджийски работи &#8211; плюс.</p>
]]></content:encoded>
			<wfw:commentRss>http://toshe.bukov.com/blog/index.php/post/2008/03/31/128/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Забавна математика с Python</title>
		<link>http://toshe.bukov.com/blog/index.php/post/2007/11/13/123</link>
		<comments>http://toshe.bukov.com/blog/index.php/post/2007/11/13/123#comments</comments>
		<pubDate>Tue, 13 Nov 2007 19:47:37 +0000</pubDate>
		<dc:creator>Toshe</dc:creator>
				<category><![CDATA[Life, the Universe and Everything]]></category>
		<category><![CDATA[Stories from the past]]></category>
		<category><![CDATA[The matrix world]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[mpmath]]></category>
		<category><![CDATA[old times]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sympy]]></category>

		<guid isPermaLink="false">http://toshe.bukov.com/blog/index.php/post/2007/11/13/123</guid>
		<description><![CDATA[Спомените ми от първите години в Техническия университет (освен разбиващите купони и хроничното студентско безпаричие) са свързани с писането на огромно количество протоколи от измервания и сума ти свързани с това изчисления. Понякога се изкушавах да си напиша кратка програма за да си сметна и начертая графиките от измерените резултати вместо налагания от някои преподаватели [...]]]></description>
			<content:encoded><![CDATA[<p>Спомените ми от първите години в Техническия университет (освен разбиващите купони и хроничното студентско безпаричие) са свързани с писането на огромно количество протоколи от измервания и сума ти свързани с това изчисления. Понякога се изкушавах да си напиша кратка програма за да си сметна и начертая графиките от измерените резултати вместо налагания от някои преподаватели методи с калкулатор и милиметрова хартия. Проблемът беше, че сметките често не бяха елементарни, а Паскал (и по-късно Java) не са от най-лесните за ползване езици за бързи сметки от мързеливи студенти като мен. По-късно се налагаше да правим преобрзувания на уравнения и да ги опростяваме, а единствения софтуер който донякъде помагаше беше MathLab. Въоръжени с него и с теоремите на Нагласаяев и Натъмъняев успявахме да открием нови клонове в инженерната математика. Наистина се изискваше много усилия от предварително дадения ни за сравнение резултат да приложим реверсивен инженериг и да скалъпим обратно оригиналното задание на проекта, но историята познава и по-големи героични постъпки (като например свързването на амперметър като волтметър или паралелното свързванео на електролитни кондензатори към променливотокови трансформаторни вериги).</p>
<p>От тези времена ми остана един респект към многостъпковите изчисления (и към електролитните кондензатори) и често след това съм се чудил дали няма наистина удобен инструмент точно за такива уморителни, но необходими математически гимнастики. Изискванията ми за подобен софтуер са скромни &#8211; да е софтуер с отворен код, преносим (Linux/Windows), да е простичък за инсталация и употреба и по възможност да се разширява лесно. По едно време се бях отказал да търся (а и не ми трябваше, честно казано) докато преди месец попаднах на <a href="http://code.google.com/p/sympy/">SymPy</a> и <a href="http://code.google.com/p/mpmath/">mpmath</a>. Първата е библиотека занимаваща се със символна алгебра (от типа колко е (ax<sup>2</sup> + by<sup>3</sup>)<sup>2</sup> * (x + y<sup>2</sup>)<sup>2</sup> в разгъната форма) изчисляваща също интеграли и диференциали от символни уравнения (такива с неизвестни като x, y и z например). Втората библиотека и за смятане на реални и комплексни числа с произволна точност. Точно така &#8211; с <strong>произволна</strong>. И двете библиотеки са писани на <a href="http://python.org/">Python</a> които освен че е страшно лесен за учене и експериментиране е също и много мощен скриптов език. И двете библиотеки са с отворен код и понеже са на Python са достъпни на всички софтуерни платформи <a href="http://en.wikipedia.org/wiki/Python_(programming_language)#Implementations">поддържани</a> от езика. Ала един пример говори повече от сто реклами, така че ето един пример:<br />
<code><br />
>>>from sympy import *<br />
>>>x = Symbol('x')<br />
>>>y = Symbol('y')<br />
>>>a = ((x**2 + y**3)**2 * (x+y**2)**2)<br />
>>>b.expand()<br />
x**6 + y**10 + x**2*y**6 + x**4*y**4 + 2*x*y**8 + 2*x**2*y**7 + 2*x**4*y**3 + 2*x**5*y**2 + 4*x**3*y**5<br />
>>><br />
</code><br />
Трите символа &#8220;>&#8221; са от промпт-а на Python интепретатора. Последния ред е всъщност разгънатата форма на по-горното уравнение. Звздичката е знак за умножение а двойната звезда  &#8211; повдигане на степен. За домашно &#8211; сметнете уравнението на степен 3 <img src='http://toshe.bukov.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Това далеч не е всичко. Ето друг пример (взет от <a href="http://code.google.com/p/sympy/wiki/Tutorial">ръководствотото на SymPy</a>):<br />
<code><br />
>>> from sympy import *<br />
>>> x=Symbol("x")<br />
>>> limit(sin(x)/x, x, 0)<br />
1<br />
>>> limit(x, x, oo)<br />
oo  <em># това е знака за безкрайност <img src='http://toshe.bukov.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em><br />
>>> limit((5**x+3**x)**(1/x), x, oo)<br />
5<br />
</code><br />
Някой спомня ли си как се смятаха границите (лимеси) от училище? Е, с няколко реда код няма да ви се налага да ги смятате.</p>
<p>Впечатлих ли ви? А ето какво може да прави mpmath:<br />
<code><br />
>>> from mpmath import *<br />
>>> pi<br />
mpf('3.1415926535897932384626433832793')<br />
</code><br />
Хм, дотук &#8211; нищо впечатляващо. Ала нека да променим прецизността след десетичната точка (която по подразбиране е 30 знака):<br />
<code><br />
>>> from mpmath import *<br />
>>> mpf.dps = 100 <em># задаваме броя на знаците след десетичната точка</em><br />
>>> pi<br />
mpf('3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798')<br />
</code><br />
Това е числото Пи със сто знака след десетичната точка (или запетая &#8211; кое е по-правилното?). А ето го със 1000 знака:</p>
<p>3.1415926535897932384626433832795028841971693993751058209749445923078164062862<br />
089986280348253421170679821480865132823066470938446095505822317253594081284811<br />
174502841027019385211055596446229489549303819644288109756659334461284756482337<br />
867831652712019091456485669234603486104543266482133936072602491412737245870066<br />
063155881748815209209628292540917153643678925903600113305305488204665213841469<br />
519415116094330572703657595919530921861173819326117931051185480744623799627495<br />
673518857527248912279381830119491298336733624406566430860213949463952247371907<br />
021798609437027705392171762931767523846748184676694051320005681271452635608277<br />
857713427577896091736371787214684409012249534301465495853710507922796892589235<br />
420199561121290219608640344181598136297747713099605187072113499999983729780499<br />
510597317328160963185950244594553469083026425223082533446850352619311881710100<br />
031378387528865875332083814206171776691473035982534904287554687311595628638823<br />
53787593751957781857780532171226806613001927876611195909216420199</p>
<p>За домашна &#8211; пробвайте със  10000 знака <img src='http://toshe.bukov.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Повече примери и идеи за ползване на mpmath вижте нейната <a href="http://code.google.com/p/mpmath/wiki/Documentation">документация</a>.</p>
<p>Забележка: За момента двете библиотеки дефинират числото Пи по свой начин, който не е съвместим, затова рестартирайте комания интерпретатор на Python между тестовете за да получите смислени резултати.</p>
<p>Стана ли ви интересно? Аз със сигурност съм заинтригуван! Сега се надявам по-малко ученици и студенти да четат това, че иначе много домашни ще станат безумно лесни за решаване с няколко редова програмка <img src='http://toshe.bukov.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://toshe.bukov.com/blog/index.php/post/2007/11/13/123/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

