<?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>Хешик &#187; Познание нового</title>
	<atom:link href="http://hash.naikonsoft.com/category/%d0%bf%d0%be%d0%b7%d0%bd%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bd%d0%be%d0%b2%d0%be%d0%b3%d0%be/feed/" rel="self" type="application/rss+xml" />
	<link>http://hash.naikonsoft.com</link>
	<description>Хеш про</description>
	<lastBuildDate>Fri, 19 Mar 2010 12:35:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Основы emacs (внешняя ссылка)</title>
		<link>http://hash.naikonsoft.com/2009/04/19/osnovy-emacs/</link>
		<comments>http://hash.naikonsoft.com/2009/04/19/osnovy-emacs/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 09:38:21 +0000</pubDate>
		<dc:creator>Виталий Волков</dc:creator>
				<category><![CDATA[Познание нового]]></category>
		<category><![CDATA[Полезное]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://hash.naikonsoft.com/?p=103</guid>
		<description><![CDATA[После поисков редактора питоновских скриптов я прошустил довольно много, спрашивал, читал, изучал. Мне не нужен был ни Eclipse ни IDEA. Для моего домашнего ноута честно признатся таких монстров вообще не нужно.
В итоге остановился на emacs. Сейчас читаю классную статью, которую, если вы так же как и я решили перейти на emacs, можете прочитать вот
Кстати под [...]]]></description>
			<content:encoded><![CDATA[<p>После поисков редактора питоновских скриптов я прошустил довольно много, спрашивал, читал, изучал. Мне не нужен был ни Eclipse ни IDEA. Для моего домашнего ноута честно признатся таких монстров вообще не нужно.</p>
<p>В итоге остановился на emacs. Сейчас читаю классную статью, которую, если вы так же как и я решили перейти на emacs, можете прочитать <a href="https://www.ibm.com/developerworks/ru/edu/au-emacs1/index.html">вот</a></p>
<p>Кстати под Mac OS X есть отличная обертка над emacs <a href="http://aquamacs.org/">Aquamacs</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hash.naikonsoft.com/2009/04/19/osnovy-emacs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вызов конструктора родительского класса</title>
		<link>http://hash.naikonsoft.com/2009/04/19/calling-parent-class-method-in-python/</link>
		<comments>http://hash.naikonsoft.com/2009/04/19/calling-parent-class-method-in-python/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 07:35:15 +0000</pubDate>
		<dc:creator>Виталий Волков</dc:creator>
				<category><![CDATA[Познание нового]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[наследование]]></category>

		<guid isPermaLink="false">http://hash.naikonsoft.com/?p=97</guid>
		<description><![CDATA[Христос Воскрес!
Воистину все постигается в чтении умных книг. Буквально недавно сообразил, какую возможно грубейшую ошибку мы совершили в создании одного приложения на Python. Мы использовали для вызова методов родительского класса super.
Пример:



class B:


&#160;


&#160; &#160; def __init__&#40;x, y&#41;:


&#160; &#160; &#160; &#160; self.x = x


&#160; &#160; &#160; &#160; self.y = y


&#160;


&#160; &#160; def setX&#40;x&#41;:


&#160; &#160; &#160; &#160; self.x [...]]]></description>
			<content:encoded><![CDATA[<p>Христос Воскрес!</p>
<p>Воистину все постигается в чтении умных книг. Буквально недавно сообразил, какую возможно грубейшую ошибку мы совершили в создании одного приложения на Python. Мы использовали для вызова методов родительского класса super.</p>
<p>Пример:</p>
<div class="python" style="font-family:monospace;color: #006; border: 1px solid #d0d0d0; background-color: #f0f0f0;">
<ol>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;"><span style="color: #ff7700;font-weight:bold;">class</span> B:</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span>x, y<span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">x</span> = x</div>
</li>
<li style="font-weight: bold; vertical-align:top;font-weight: bold; color: #006060;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">y</span> = y</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> setX<span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">x</span> = x</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;font-weight: bold; color: #006060;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;"><span style="color: #ff7700;font-weight:bold;">class</span> A<span style="color: black;">&#40;</span>B<span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span>x, y, r<span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">super</span><span style="color: black;">&#40;</span>A, <span style="color: #008000;">self</span><span style="color: black;">&#41;</span>.<span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span>x, y<span style="color: black;">&#41;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">r</span> = r</div>
</li>
<li style="font-weight: bold; vertical-align:top;font-weight: bold; color: #006060;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> setX<span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">super</span><span style="color: black;">&#40;</span>A, <span style="color: #008000;">self</span><span style="color: black;">&#41;</span>.<span style="color: black;">setX</span><span style="color: black;">&#40;</span>x + <span style="color: #008000;">self</span>.<span style="color: black;">r</span><span style="color: black;">&#41;</span></div>
</li>
</ol>
</div>
<p>А теперь посмотрим как было бы правильнее</p>
<div class="python" style="font-family:monospace;color: #006; border: 1px solid #d0d0d0; background-color: #f0f0f0;">
<ol>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;"><span style="color: #ff7700;font-weight:bold;">class</span> B:</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, x, y<span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">x</span> = x</div>
</li>
<li style="font-weight: bold; vertical-align:top;font-weight: bold; color: #006060;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">y</span> = y</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> setX<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, x<span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">x</span> = x</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;font-weight: bold; color: #006060;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;"><span style="color: #ff7700;font-weight:bold;">class</span> A<span style="color: black;">&#40;</span>B<span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, x, y, r<span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; B.<span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, x, y<span style="color: black;">&#41;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">r</span> = r</div>
</li>
<li style="font-weight: bold; vertical-align:top;font-weight: bold; color: #006060;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> setX<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, x<span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; B.<span style="color: black;">setX</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, x + <span style="color: #008000;">self</span>.<span style="color: black;">r</span><span style="color: black;">&#41;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://hash.naikonsoft.com/2009/04/19/calling-parent-class-method-in-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>hasattr и __dict__</title>
		<link>http://hash.naikonsoft.com/2009/02/04/hasattr-and-__dict__/</link>
		<comments>http://hash.naikonsoft.com/2009/02/04/hasattr-and-__dict__/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 12:51:29 +0000</pubDate>
		<dc:creator>Виталий Волков</dc:creator>
				<category><![CDATA[Познание нового]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://hash.naikonsoft.com/?p=64</guid>
		<description><![CDATA[Заметил что hasattr в коей мере некорректно работает на определение наличия аттрибута в классе, пришлось отказаться от него и использовать такую проверку



if &#34;value&#34; not in MyClass.__dict__:


&#160; &#160; pass



Какие минусы этого подхода полностью не знаю, но знаю что может привести в определенных ситуациях к зацикливанию, это в случае если использовать __setattr__ в паре с ним. Может [...]]]></description>
			<content:encoded><![CDATA[<p>Заметил что hasattr в коей мере некорректно работает на определение наличия аттрибута в классе, пришлось отказаться от него и использовать такую проверку</p>
<div class="python" style="font-family:monospace;color: #006; border: 1px solid #d0d0d0; background-color: #f0f0f0;">
<ol>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;"><span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #483d8b;">&quot;value&quot;</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #ff7700;font-weight:bold;">in</span> MyClass.<span style="color: #0000cd;">__dict__</span>:</div>
</li>
<li style="font-weight: normal; vertical-align:top;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;color: #000020;">&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">pass</span></div>
</li>
</ol>
</div>
<p>Какие минусы этого подхода полностью не знаю, но знаю что может привести в определенных ситуациях к зацикливанию, это в случае если использовать __setattr__ в паре с ним. Может у кого-то другие подходы? Или просвятит на предмет использования __dict__ :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://hash.naikonsoft.com/2009/02/04/hasattr-and-__dict__/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Разработка через тестирование глазами новичка</title>
		<link>http://hash.naikonsoft.com/2008/10/17/%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-%d1%82%d0%b5%d1%81%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b3%d0%bb%d0%b0%d0%b7%d0%b0/</link>
		<comments>http://hash.naikonsoft.com/2008/10/17/%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-%d1%82%d0%b5%d1%81%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b3%d0%bb%d0%b0%d0%b7%d0%b0/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 18:44:24 +0000</pubDate>
		<dc:creator>Виталий Волков</dc:creator>
				<category><![CDATA[Познание нового]]></category>
		<category><![CDATA[Полезное]]></category>
		<category><![CDATA[docline]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[unittest]]></category>
		<category><![CDATA[разработка]]></category>
		<category><![CDATA[тестирование]]></category>

		<guid isPermaLink="false">http://hash.naikonsoft.com/?p=40</guid>
		<description><![CDATA[Иногда программисты которые пишут приложения почему то игнорируют написание тестов, а то и вообще их избегают. Я не могу сказать, что я профи в разработке через тестирование, но разработав пару классов и применив их в проекте, уже могу точно сказать, что классы, написанные через тесты обладают наибольшей стабильностью. Конечно, есть еще у меня некоторые недоработки, [...]]]></description>
			<content:encoded><![CDATA[<p>Иногда программисты которые пишут приложения почему то игнорируют написание тестов, а то и вообще их избегают. Я не могу сказать, что я профи в разработке через тестирование, но разработав пару классов и применив их в проекте, уже могу точно сказать, что классы, написанные через тесты обладают наибольшей стабильностью. Конечно, есть еще у меня некоторые недоработки, которые я стараюсь заполнять сразу же.</p>
<p>Практически процесс довольно интересный, хоть и может показаться долгим и утомительным, но как я заметил, когда писал код я вижу слабые участки (а порой ленюсь их исправлять, но позже все таки исправляю), код становится более чистым, особенно, когда отрефакторишь  и прогонишь функционал через тесты. А видеть при прогоне слово Ok просто блаженство.</p>
<p>Кстати заметил фишку в разработке тестов в unittest питона. Если в начало теста поставить описание docline то при проходе отобразится не скучный путь до пакета и модуля а полноценное описание теста. К примеру</p>
<style type="text/css"><!--
/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.python.python .de1, .python.python .de2 {font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;color: #000020;}
.python.python  {font-family:monospace;color: #006; border: 1px solid #d0d0d0; background-color: #f0f0f0;}
.python.python a:link {color: #000060;}
.python.python a:hover {background-color: #f0f000;}
.python.python .imp {font-weight: bold; color: red;}
.python.python li, .python.python .li1 {font-weight: normal;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;}
.python.python .ln {width:1px;font-weight: normal;text-align:right;margin:0;padding:0 2px;}
.python.python .li2 {font-weight: bold;font-weight: bold; color: #006060;}
.python.python .kw1 {color: #ff7700;font-weight:bold;}
.python.python .kw2 {color: #008000;}
.python.python .kw3 {color: #dc143c;}
.python.python .kw4 {color: #0000cd;}
.python.python .co1 {color: #808080; font-style: italic;}
.python.python .coMULTI {color: #808080; font-style: italic;}
.python.python .es_h {color: #000099; font-weight: bold;}
.python.python .br0 {color: black;}
.python.python .sy0 {color: #66cc66;}
.python.python .st0 {color: #483d8b;}
.python.python .nu0 {color: #ff4500;}
.python.python .me1 {color: black;}
.python.python span.xtra { display:block; }</p>
<p>--!></style>
<div class="python python" style="font-family:monospace;color: #006; border: 1px solid #d0d0d0; background-color: #f0f0f0;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">def</span> testSetRatingTwice<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; <span class="st0">&quot;Expect raising of exception when user set rating for object twice&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1"># functional of the test</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">assertRaises</span><span class="br0">&#40;</span>&#8230;.<span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Ну конечно и отказываться от пакета и модуля не советую, оставить хотя бы название модуля и теста, для того чтобы найти в приложении нужный файл быстрее, чем рыться по полчаса в поисках.</p>
<p>Очень не нравится пакет pymock, который очень часто вводит меня в ступор своими Inappropriate action или чем то подобным, поэтому стараюсь как можно чаще избегать подобных тестов, а то и вообще не прибегать к mock совсем.</p>
<p>Продолжаю процесс разработки через тестирование.</p>
]]></content:encoded>
			<wfw:commentRss>http://hash.naikonsoft.com/2008/10/17/%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-%d1%82%d0%b5%d1%81%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b3%d0%bb%d0%b0%d0%b7%d0%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django: изменение поля стандартного вида</title>
		<link>http://hash.naikonsoft.com/2008/09/05/django-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d0%bb%d1%8f-%d1%81%d1%82%d0%b0%d0%bd%d0%b4%d0%b0%d1%80%d1%82%d0%bd%d0%be%d0%b3%d0%be-%d0%b2%d0%b8%d0%b4%d0%b0/</link>
		<comments>http://hash.naikonsoft.com/2008/09/05/django-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d0%bb%d1%8f-%d1%81%d1%82%d0%b0%d0%bd%d0%b4%d0%b0%d1%80%d1%82%d0%bd%d0%be%d0%b3%d0%be-%d0%b2%d0%b8%d0%b4%d0%b0/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 15:07:30 +0000</pubDate>
		<dc:creator>Виталий Волков</dc:creator>
				<category><![CDATA[Познание нового]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[кастомизация полей]]></category>

		<guid isPermaLink="false">http://hash.naikonsoft.com/?p=28</guid>
		<description><![CDATA[Всем снова привет. Как это ни странно сейчас все мое внимание уделено исключительно разработке приложений основанных на web framework Django. Причиной перехода на django является разработке и ведению нового проекта, который наша компания делает для украинской компании. Надеюсь что мы выиграем с этим проектом.
Но это всего лишь отступление. Важной частью разработки является кастомизация некоторых элементов [...]]]></description>
			<content:encoded><![CDATA[<p>Всем снова привет. Как это ни странно сейчас все мое внимание уделено исключительно разработке приложений основанных на web framework <a href="http://djangoproject.com">Django</a>. Причиной перехода на django является разработке и ведению нового проекта, который наша компания делает для украинской компании. Надеюсь что мы выиграем с этим проектом.</p>
<p>Но это всего лишь отступление. Важной частью разработки является кастомизация некоторых элементов любого сайта использующих какой-бы то ни было фреймворк. Будь то Smarty, Zend Framework, Symphony. Без разницы, все они предоставляют строгий набор элементов, которые используются в проекте. А что делать если нас не устраивает этот набор и необходимо пополнить его своими причиндалами.</p>
<p>В django 1.0 были сделаны некоторые очень полезные добавления, которых я ждал. Введение <a href="http://www.djangoproject.com/documentation/admin/#save-model-self-request-obj-form-change">save_model</a> метода в ModelAdmin класс избавило от написания менеджеров. Что же дает нам ModelAdmin для кастомизации полей?</p>
<p>Любой вам даст совет рыть исходники Django, и что собственно и было сделано. В ModelAdmin есть метод get_form который вернет экземпляр класса формы которая используется в административном интерфейсе. А что если переопределить эту функцию? Выйдет примерно следующее</p>
<div class="python python" style="font-family:monospace;color: #006; border: 1px solid #d0d0d0; background-color: #f0f0f0;">
<ol>
<li style="font-weight: normal;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;color: #000020;"><span style="color: #ff7700;font-weight:bold;">class</span> MyModelAdmin<span style="color: black;">&#40;</span>admin.<span style="color: black;">ModelAdmin</span><span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-weight: normal;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;color: #000020;">&nbsp; &nbsp; list_display = <span style="color: black;">&#40;</span><span style="color: #483d8b;">&#8216;title&#8217;</span>, <span style="color: #483d8b;">&#8216;latin_title&#8217;</span>, <span style="color: #483d8b;">&#8216;recipe&#8217;</span><span style="color: black;">&#41;</span></div>
</li>
<li style="font-weight: normal;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;color: #000020;">&nbsp; &nbsp; prepopulated_fields = <span style="color: black;">&#123;</span><span style="color: #483d8b;">&quot;url&quot;</span>: <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;latin_title&quot;</span>, <span style="color: black;">&#41;</span><span style="color: black;">&#125;</span></div>
</li>
<li style="font-weight: normal;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;color: #000020;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;font-weight: bold; color: #006060;">
<div style="font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;color: #000020;">&nbsp; &nbsp; form = MyModelAdminForm</div>
</li>
<li style="font-weight: normal;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: normal;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;color: #000020;">&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> get_form<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, request, obj=<span style="color: #008000;">None</span>, <span style="color: #66cc66;">**</span>kwargs<span style="color: black;">&#41;</span>:</div>
</li>
<li style="font-weight: normal;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; form = <span style="color: #008000;">super</span><span style="color: black;">&#40;</span>MyModelAdmin, <span style="color: #008000;">self</span><span style="color: black;">&#41;</span>.<span style="color: black;">get_form</span><span style="color: black;">&#40;</span>request, obj=<span style="color: #008000;">None</span>, <span style="color: #66cc66;">**</span>kwargs<span style="color: black;">&#41;</span></div>
</li>
<li style="font-weight: normal;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;font-weight: bold; color: #006060;">
<div style="font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; form.<span style="color: black;">base_fields</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&#8216;custom&#8217;</span><span style="color: black;">&#93;</span>.<span style="color: black;">widget</span> = MyWidget<span style="color: black;">&#40;</span>obj<span style="color: black;">&#41;</span></div>
</li>
<li style="font-weight: normal;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;color: #000020;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> form</div>
</li>
<li style="font-weight: normal;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;color: #000020;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: normal;font: normal normal 130% 'Courier New', Courier, monospace; color: #003030;">
<div style="font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;color: #000020;">admin.<span style="color: #dc143c;">site</span>.<span style="color: black;">register</span><span style="color: black;">&#40;</span>Medicine, MedicineAdmin<span style="color: black;">&#41;</span></div>
</li>
</ol>
</div>
<p>То что доктор прописал, не так ли? Данного подхода в документации я не нашел, зато на сайте <a href="http://djangosnippets.org">http://djangosnippets.org</a> есть отличный пример, который использует подобную технику.</p>
]]></content:encoded>
			<wfw:commentRss>http://hash.naikonsoft.com/2008/09/05/django-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d0%bb%d1%8f-%d1%81%d1%82%d0%b0%d0%bd%d0%b4%d0%b0%d1%80%d1%82%d0%bd%d0%be%d0%b3%d0%be-%d0%b2%d0%b8%d0%b4%d0%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Изменил апачу на lighttpd</title>
		<link>http://hash.naikonsoft.com/2008/06/27/%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b8%d0%bb-%d0%b0%d0%bf%d0%b0%d1%87%d1%83-%d0%bd%d0%b0-lighttpd/</link>
		<comments>http://hash.naikonsoft.com/2008/06/27/%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b8%d0%bb-%d0%b0%d0%bf%d0%b0%d1%87%d1%83-%d0%bd%d0%b0-lighttpd/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 15:49:41 +0000</pubDate>
		<dc:creator>Виталий Волков</dc:creator>
				<category><![CDATA[Познание нового]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[lighttpd]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[webserver]]></category>

		<guid isPermaLink="false">http://hash.naikonsoft.com/?p=20</guid>
		<description><![CDATA[Я всегда считал, что самый лучший web сервер это apache, я периодически обновлял его, а после определенного момента apache стал подводить. Может потому что я на данный момент работаю на Mac OS X, либо может я стал сам откровенно тупить. Но факт остается фактом, при обновлении PHP связка PHP+Apache перестала работать.
Альтернативные решения:
1. nginx
2. lighttpd
С nginx [...]]]></description>
			<content:encoded><![CDATA[<p>Я всегда считал, что самый лучший web сервер это apache, я периодически обновлял его, а после определенного момента apache стал подводить. Может потому что я на данный момент работаю на Mac OS X, либо может я стал сам откровенно тупить. Но факт остается фактом, при обновлении PHP связка PHP+Apache перестала работать.</p>
<p>Альтернативные решения:</p>
<p>1. nginx<br />
2. lighttpd</p>
<p>С nginx для меня оказалось все очень сложно, он хорош для продакшн серверов, но не для обыденного разработчика. Поэтому на замену индейцу пришел lighttpd. На Mac OS X он у меня поднялся без проблем.</p>
<p>Единственное, что пришлось немного погуглить на тему как стартовать его автоматически при запуске операционной системы. Ну и только потом перекомпилил PHP c поддержкой FastCGI и немного изменил конфиг веб-сервера, чтобы он корректно обрабатывал скрипты.</p>
]]></content:encoded>
			<wfw:commentRss>http://hash.naikonsoft.com/2008/06/27/%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b8%d0%bb-%d0%b0%d0%bf%d0%b0%d1%87%d1%83-%d0%bd%d0%b0-lighttpd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
