<?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>Spoof&#039;s blog &#187; comp</title>
	<atom:link href="http://spoofa.info/category/comp/feed/" rel="self" type="application/rss+xml" />
	<link>http://spoofa.info</link>
	<description>...about martian&#039;s and penguin&#039;s life</description>
	<lastBuildDate>Tue, 28 Jul 2009 21:37:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Django+FastCGI+nginx</title>
		<link>http://spoofa.info/2009/03/19/djangofastcginginx/</link>
		<comments>http://spoofa.info/2009/03/19/djangofastcginginx/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 18:19:09 +0000</pubDate>
		<dc:creator>spoof</dc:creator>
				<category><![CDATA[comp]]></category>
		<category><![CDATA[devel]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[fastcgi]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://spoofa.info/?p=110</guid>
		<description><![CDATA[Если django (да пожалуй и другие фреймфворки и не только на питоне) работает через fastcgi и проксируется nginx&#8217;ом по https, то последнему нужно добавить параметр:
fastcgi_param HTTPS on;
]]></description>
			<content:encoded><![CDATA[<p>Если django (да пожалуй и другие фреймфворки и не только на питоне) работает через fastcgi и проксируется nginx&#8217;ом по https, то последнему нужно добавить параметр:<br />
fastcgi_param HTTPS on;</p>
]]></content:encoded>
			<wfw:commentRss>http://spoofa.info/2009/03/19/djangofastcginginx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Дружим django и экспорт в Excel</title>
		<link>http://spoofa.info/2008/10/23/%d0%b4%d1%80%d1%83%d0%b6%d0%b8%d0%bc-django-%d0%b8-%d1%8d%d0%ba%d1%81%d0%bf%d0%be%d1%80%d1%82-%d0%b2-excel/</link>
		<comments>http://spoofa.info/2008/10/23/%d0%b4%d1%80%d1%83%d0%b6%d0%b8%d0%bc-django-%d0%b8-%d1%8d%d0%ba%d1%81%d0%bf%d0%be%d1%80%d1%82-%d0%b2-excel/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 17:52:54 +0000</pubDate>
		<dc:creator>spoof</dc:creator>
				<category><![CDATA[comp]]></category>
		<category><![CDATA[devel]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://spoofa.info/?p=95</guid>
		<description><![CDATA[И так, мы хотим, чтобы пользовал клацнув на кнопочку &#8220;Экспорт в Excel&#8221; получил это документ и был доволен. Что может проще скажете вы &#8211; взять положить файл в каталог и тупо его HTTP сервером отдавать. Но не все так просто в случае если вам необходимо, чтобы этот файл генерировался динамически (из-за меняющихся в нем данных), [...]]]></description>
			<content:encoded><![CDATA[<p>И так, мы хотим, чтобы пользовал клацнув на кнопочку &#8220;Экспорт в Excel&#8221; получил это документ и был доволен. Что может проще скажете вы &#8211; взять положить файл в каталог и тупо его HTTP сервером отдавать. Но не все так просто в случае если вам необходимо, чтобы этот файл генерировался динамически (из-за меняющихся в нем данных), например django, на котором крутиться сайт.</p>
<p>Насколько мне удалось узнать, в мире существует один адеватный генератор Excel файлов &#8211; <a href="http://pypi.python.org/pypi/xlwt/">xlwt</a>, который можно юзать на Unix системах. Это клон pyExcelator&#8217;a, но лучше подходит для django и сохранения не в файл. С документацией у него беда, но парочку линков все же нашел: <a href="http://ntalikeris.blogspot.com/2007/10/create-excel-file-with-python-my-sort.html">обзор</a> и <a href="http://files.blog-city.com/files/F05/96843/b/cheatsheet.py">пример</a>.<br />
Кроме того, примеры есть и в тарболе с pyexcelator&#8217;ом или в самом xlwt.</p>
<p>И так создаем во views.py приложения django функцию, которая будет возрвращать xls файл:</p>
<div class="codesnip-container" >def export_xls(request):<br />
wb = Workbook() # создаем основной документ<br />
sheet = wb.add_sheet(&#8217;sheet1&#8242;) # добавляем лист (должен быть как минимум 1 лист)<br />
# далее идут действия по добавлению данный на лист<br />
# это нам не интересно в данном контексте</div>
<p>Но это еще не все. Далее нам нужно этот документ каким-то образом передать пользователю. Отсюда вытекают 2 проблемы или вопроса:</p>
<ol>
<li>Как же собственно преобразовать объект типа <em>Workbook</em> в строку (читай stream). По идее же должен быть какой-то метод save или что-то подобное. Да, есть, но в случае использования pyExcelator&#8217;a метод save предполагает сохранение в файл, но не в <em>переменную</em> как нам надо. В <em>xlwt</em> метод <em>save()</em> более гибкий. Ниже расскажу</li>
<li>И как дать этому &#8220;файлу&#8221; человеческое имя, если у нас данные для генерации xls файла передаются через GET/POST параметры. При таком раскладе у нас файл будет называться последним &#8220;нодом&#8221; url&#8217;a, на который ведет ссылка. Например, если ссылка: http://bla.com/bla/export_xls?bla&amp;bla=2, то файл будет называться export_xls, что не есть гуд</li>
</ol>
<p>Начну пожалуй со второй проблемы, ибо она решается довольно просто. Если залезть в <a href="http://www.ietf.org/rfc/rfc2183.txt">RFC 2183</a>, то можно узнать про интересное поле в HTTP заголовке &#8211; <em>Content-Disposition</em>, которое то и позволит присвоить имя файлу через присвоение ему типа <em>attachment</em> с параметром <em>filename</em>. Для Django это будет выглядеть так:</p>
<div class="codesnip-container" >response = HttpResponse(xls, mimetype=&#8221;application/vnd.ms-excel&#8221;)<br />
response['Content-Disposition'] = &#8216;attachment; filename= %s&#8217; % (filename)<br />
return response<br />
# здесь xls &#8211; фактически представляет собой переменную с содержимым Excel файла,<br />
# filename &#8211; название файла, которое мы должны задать ранее</div>
<p>И так, для решения первой проблемы (в случае если используется pyExcelator) я порылся в коде pyExcelator&#8217;a и выкопал следующее. Оказывается метод <em>save()</em> класса <em>Workbook</em> делает следующее:</p>
<div class="codesnip-container" >def save(self, filename):<br />
import CompoundDoc</div>
<div class="codesnip-container" ></div>
<div class="codesnip-container" >doc = CompoundDoc.XlsDoc()<br />
doc.save(filename, self.get_biff_data())</div>
<p><em>CompoundDoc.XlsDoc()</em> собственно и представляет собой обертку над бинарными данными, который сгенерировал <em>Workbook</em> (их получаем с помощью <em>self.get_biff_data()</em>). Как раз после <em>save()</em> класса<em> CompoundDoc.XlsDoc() </em>и получаем конечный Excel документ. Но смотрим далее в метод <em>save()</em> этого <em>XlsDoc</em>&#8216;a:</p>
<div class="codesnip-container" >def save(self, filename, stream):<br />
# 1. Align stream on 0&#215;1000 boundary (and therefore on sector boundary)<br />
padding = &#8216;\x00&#8242; * (0&#215;1000 &#8211; (len(stream) % 0&#215;1000))<br />
self.book_stream_len = len(stream) + len(padding)</div>
<div class="codesnip-container" >self.__build_directory()<br />
self.__build_sat()<br />
self.__build_header()</div>
<div class="codesnip-container" >f = file(filename, &#8216;wb&#8217;)<br />
f.write(self.header)<br />
f.write(self.packed_MSAT_1st)<br />
f.write(stream)<br />
f.write(padding)<br />
f.write(self.packed_MSAT_2nd)<br />
f.write(self.packed_SAT)<br />
f.write(self.dir_stream)<br />
f.close()</div>
<p>Как видно, опять, тут идет работа с файлов. Слава богу это конечный пункт сохранения файла, поэтому смело овверайдим эти два класса для работы с Django:</p>
<div class="codesnip-container" >class XlsDoc(CompoundDoc.XlsDoc):<br />
def get(self, stream):<br />
padding = &#8216;\x00&#8242; * (0&#215;1000 &#8211; (len(stream) % 0&#215;1000))<br />
self.book_stream_len = len(stream) + len(padding)<br />
self.__build_directory()<br />
self.__build_sat()<br />
self.__build_header()<br />
return &#8216;%s%s%s%s%s%s%s&#8217; % (<br />
self.header,<br />
self.packed_MSAT_1st,<br />
stream,<br />
padding,<br />
self.packed_MSAT_2nd,<br />
self.packed_SAT,<br />
self.dir_stream)</div>
<div class="codesnip-container" ></div>
<div class="codesnip-container" >class Workbook(Workbook):<br />
def get(self):<br />
doc = XlsDoc()<br />
return doc.get(self.get_biff_data())</div>
<p>Вставляем этот код в <em>views.py</em> нашего приложения и в коде нашей функции <em>export_xls()</em> после создания и генерации данных пишем:</p>
<div class="codesnip-container" >xsl = wb.get()</div>
<p>Здесь <em>wb</em> &#8211; это WoorBook из первого листинга (но это не тот Workbook, что из pyExcelator&#8217;a, а наш, который мы переопределили).<br />
Вот собственно и все. Небольшая компиляция собранных с краев интернета кусочков. Может и есть какой-то более прямой способ.<br />
<strong>UPD</strong> В случае использования <em>xlwt</em> все проще. Юзаем:</p>
<div class="codesnip-container" >import cStringIO<br />
xls = cStringIO.StringIO()<br />
..<br />
wb.save(xls)<br />
response = HttpResponse(xls.getvalue(), mimetype=&#8221;application/vnd.ms-excel&#8221;)</div>
]]></content:encoded>
			<wfw:commentRss>http://spoofa.info/2008/10/23/%d0%b4%d1%80%d1%83%d0%b6%d0%b8%d0%bc-django-%d0%b8-%d1%8d%d0%ba%d1%81%d0%bf%d0%be%d1%80%d1%82-%d0%b2-excel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Некоторые замечания на память</title>
		<link>http://spoofa.info/2008/04/08/%d0%bd%d0%b5%d0%ba%d0%be%d1%82%d0%be%d1%80%d1%8b%d0%b5-%d0%b7%d0%b0%d0%bc%d0%b5%d1%87%d0%b0%d0%bd%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%bf%d0%b0%d0%bc%d1%8f%d1%82%d1%8c/</link>
		<comments>http://spoofa.info/2008/04/08/%d0%bd%d0%b5%d0%ba%d0%be%d1%82%d0%be%d1%80%d1%8b%d0%b5-%d0%b7%d0%b0%d0%bc%d0%b5%d1%87%d0%b0%d0%bd%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%bf%d0%b0%d0%bc%d1%8f%d1%82%d1%8c/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 21:07:58 +0000</pubDate>
		<dc:creator>spoof</dc:creator>
				<category><![CDATA[comp]]></category>
		<category><![CDATA[devel]]></category>
		<category><![CDATA[заметки]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://spoofa.info/?p=84</guid>
		<description><![CDATA[Про MySQL и SQL.

COUNT(*) быстрее чем COUNT(`field`) 
INSERT &#8230; VALUES (), () &#8230; () быстрее кучи INSERT&#8217;ов
Глядя на второй пункт не стоит забывать про параметр MySQL - max_allowed_packet, который ограничивает размер одного SQL запроса.

]]></description>
			<content:encoded><![CDATA[<div>Про MySQL и SQL.</div>
<ol>
<li>COUNT(*) быстрее чем COUNT(`field`) </li>
<li>INSERT &#8230; VALUES (), () &#8230; () быстрее кучи INSERT&#8217;ов</li>
<li>Глядя на второй пункт не стоит забывать про параметр MySQL - max_allowed_packet, который ограничивает размер одного SQL запроса.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://spoofa.info/2008/04/08/%d0%bd%d0%b5%d0%ba%d0%be%d1%82%d0%be%d1%80%d1%8b%d0%b5-%d0%b7%d0%b0%d0%bc%d0%b5%d1%87%d0%b0%d0%bd%d0%b8%d1%8f-%d0%bd%d0%b0-%d0%bf%d0%b0%d0%bc%d1%8f%d1%82%d1%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>День</title>
		<link>http://spoofa.info/2008/03/31/%d0%b4%d0%b5%d0%bd%d1%8c/</link>
		<comments>http://spoofa.info/2008/03/31/%d0%b4%d0%b5%d0%bd%d1%8c/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 00:58:33 +0000</pubDate>
		<dc:creator>spoof</dc:creator>
				<category><![CDATA[comp]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[memories]]></category>

		<guid isPermaLink="false">http://spoofa.info/2008/03/31/%d0%b4%d0%b5%d0%bd%d1%8c/</guid>
		<description><![CDATA[Просто не мог написать о сегодняшнем дне (или уже вчерашнем?). Хоть и началось воскресенье у меня в 16 часов, но это не помешало мне переделать довольно много дел, которые были отложены в «долгий ящик» когда-то давно. Полезно иногда так их делать, особенно если они связаны с разбором старого барахла. В связи с тем, что я [...]]]></description>
			<content:encoded><![CDATA[<p>Просто не мог написать о сегодняшнем дне (или уже вчерашнем?). Хоть и началось воскресенье у меня в 16 часов, но это не помешало мне переделать довольно много дел, которые были отложены в «долгий ящик» когда-то давно. Полезно иногда так их делать, особенно если они связаны с разбором старого барахла. В связи с тем, что я закончил университет, мне некоторые вещи больше попросту не нужны. И если раньше, я какие-то материалы, книжечки или тетрадочки с записями хранил &#8211; авось пригодится, то теперь мне они по просту не нужны. Да и кроме университетских вещей, оказывается, скопилось много другого хлама. Я тот еще Коробочка (см. «Мертвые души» Н.В. Гоголя).  </p>
<p>Естественно, как и у всех, находя давно забытые вещи среди этого хлама, периодически возникали различные воспоминания, связанные с той или иной вещью. В общем, получился день для всевозможных ностальгий по прошлому. Тут и чек от сетевухи, которая была куплена для подключения к своему ISP, которым я пользуюсь по сей день. Еще всякие рисунки на полях лекций, и даже инструкция от модема, купленного где-то в году 99-ом <img src='http://spoofa.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Журнальчики компьютерные за 97-98 год <img src='http://spoofa.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Нашел только парочку – наверно оставил для памяти как раз. Выбросил &#8211; неактуально уже. Также были найдены книжки по DOS&#8217;у уж даже не знаю за какой год. Всякие открытки с поздравлениями с 23-м февраля от девочек (самая старая за 6 класс школы) и с днем рождения. Храню.  Писать можно об этом очень долго, но не буду. Наверно каждый с этим сталкивался и каждому знакомо. В итоге только из моего стола и близлежащих полок было собрано 5! пакетов мусора. Оставил реально нужные вещи только, ну и плюс то, что напоминает мне о прошлом &#8211; чтобы не забыть <img src='http://spoofa.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Кроме того, поправил конфиг кваки, который уже может быть полгода поправить не мог &#8211; лениво было. Еще удалил в конец задолбавшую  меня поделку под названием Steermouse,  которая ругаясь на то, что она не зарегистрирована, вылетает в тот момент когда я играю в кваку. А это для меня критично, ибо настройки чувствительности курсора слетают тоже. Поставил logitech control center назад, только версии 2.3.1, а не новее. С последними перестрают работать notification growl&#8217;a.</p>
<p>Почистил хард своего домашнего компа – теперь гигов на 10 больше стало свободно <img src='http://spoofa.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Но это еще не конец, я думаю. На ноуте тоже всякую фигню почистил.</p>
<p>Дохачил memcached, чтобы оно не использовало expiration time и не удаляло устаревшие данные с какой-то переодичностью. Надо бы еще поменять поведение команды flush_all, дабы оно служило для удаления всех данных из сервера, а не только тех, кто expire&#8217;нулся.</p>
<p>Вроде всё.</p>
<p>Вроде выходные прошли довольно плодотворно как в работе, так и в отдыхе. В субботу был в клубе О2ТВ, куда ходил на Demolition Man&#8217;а. Честно говоря, ждал от него большего. Да и, в целом, вечеринки (ragga jungle&#8217;овские) мне несколько наскучили. Хожу туда, чтобы послушать dancehall&#8217;чик и пообщаться со знакомыми, да и просто сменить обстановку. Музыка в общем и целом не впечатляет &#8211; одно и тоже потому что играет от вечеринки к вечеринке или то, что я слышал уже кучу раз, наверно.</p>
]]></content:encoded>
			<wfw:commentRss>http://spoofa.info/2008/03/31/%d0%b4%d0%b5%d0%bd%d1%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My precious!</title>
		<link>http://spoofa.info/2007/10/23/my-precious/</link>
		<comments>http://spoofa.info/2007/10/23/my-precious/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 19:01:39 +0000</pubDate>
		<dc:creator>spoof</dc:creator>
				<category><![CDATA[comp]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[†]]></category>

		<guid isPermaLink="false">http://spoofa.info/2007/10/23/my-precious/</guid>
		<description><![CDATA[И так! Я сделал это &#8211; я купил себе таки макбук. Радости нет предела.
Вот он родимый:  

]]></description>
			<content:encoded><![CDATA[<p>И так! Я сделал это &#8211; я купил себе таки макбук. Радости нет предела.<br />
Вот он родимый:  <br />
<a href="http://digital.ru/goods/notebook-all/apple/28255.htm"><img src="http://digital.ru/image/28255.jpg" alt="macbook pro" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://spoofa.info/2007/10/23/my-precious/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Про индусов</title>
		<link>http://spoofa.info/2007/10/11/%d0%bf%d1%80%d0%be-%d0%b8%d0%bd%d0%b4%d1%83%d1%81%d0%be%d0%b2/</link>
		<comments>http://spoofa.info/2007/10/11/%d0%bf%d1%80%d0%be-%d0%b8%d0%bd%d0%b4%d1%83%d1%81%d0%be%d0%b2/#comments</comments>
		<pubDate>Wed, 10 Oct 2007 22:25:56 +0000</pubDate>
		<dc:creator>spoof</dc:creator>
				<category><![CDATA[comp]]></category>
		<category><![CDATA[devel]]></category>
		<category><![CDATA[modx]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://spoofa.info/2007/10/11/%d0%bf%d1%80%d0%be-%d0%b8%d0%bd%d0%b4%d1%83%d1%81%d0%be%d0%b2/</guid>
		<description><![CDATA[Если вы программист, или какое-то отношение к ним имеете, то вы наверно встречали индусов, а точнее &#8220;индусов&#8221;. А именно тех еб^Wнехороших людей, которые пишут совершенно отвратный код. Так о чем это я. Короче, устал я от ковыряния кривоработающих компонентов своих проектов &#8211; будь это что-то рабочее или &#8220;быдлокодерское&#8221; (фрилансерское). А устал именно от того, что [...]]]></description>
			<content:encoded><![CDATA[<p>Если вы программист, или какое-то отношение к ним имеете, то вы наверно встречали индусов, а точнее &#8220;индусов&#8221;. А именно тех еб^Wнехороших людей, которые пишут совершенно отвратный код. Так о чем это я. Короче, устал я от ковыряния кривоработающих компонентов своих проектов &#8211; будь это что-то рабочее или &#8220;быдлокодерское&#8221; (фрилансерское). А устал именно от того, что эти компоненты написаны тяп ляп и постоянно убиваешь кучу времени на то, что фиксишь баги в этих компонентах или адаптируешь их под себя. Я бы сказал немеряно времени, бывает, что сильно больше, чем реализация чего-то непосредственно касамеого самого проекта.<br />
<span id="more-74"></span><br />
Например, коврял тут плагин для modx&#8217;a &#8211; DirectResize. Насколько я понял, этот плагин был написан французом, но блять, как написан. Плагин занимается тем, что уменьшает добавленные фотки на страничке, находящиеся в указанной директории на сервере, и делает из них тумбы заданного размера. Также по возможности он интегрируется с lightbox&#8217;ом, что в принципе мне и нужно было.  Провозился я с ним из-за того, что эта сцуко не хавала картинки, у котороых в src был абсолютный путь. Т.е http://bla.com/assets/images/bla/bla.jpg не хавались (узнал я это через час после курения всяко разных доков и форумов), а нужно было писать assets/images/bla&#8230; Но нигде об этом не было написано. Ну что ж нам не привыкать, лезем в код и видим:</p>
<div class="codesnip-container" >if (substr($lien_img,0,strlen($lien_base)) == $lien_base){</div>
<p>, где lien_img &#8211; содержимое аттрибута src, а lien_base &#8211; собственно каталог с чем с ранивать. Очевидно, при таком расскладе получаем, что картинка может иметь только относительный адрес, а вот сцуко редактор (TinyMCE в том числе) переписывал src с относительного в абсолютный. Блять, не ужели сложно было добавить лишний strpos, чтобы сначала проверить, есть ли в абсолютном адресе тот каталог, который нужно проверить, и потом тупо обрезать substr&#8217;ом абсолютную часть (если это реально надо)?!<br />
Чувак набацал код, который работает только в одном случае, и не работает в другом. При чем, варианта всего два (ну три с натяжечкой, если еще рассматривать случай сильно &#8220;глубоких&#8221; каталогов). Сложно блин было это учесть? Даже ладно. Пусть не учел, но какого х*я он не упомянул об этом в доке?<br />
Все это мелочи конечно, но когда подобное встречаешь чуть ли не каждый день &#8211; надоедает.</p>
<p>Меня вот учили и книги, и учителя, и преподаватели всегда рассматривать всякие критические случаи &#8211; первое, что надо делать при тестировании программ. Поэтому изначально, дабы не находить скрытые ошибки в уже написанном коде при тестировании, я стараюсь все сначала спроектировать и зарываюсь в самые дебри и детали. С одной стороны это плюс конечно, а с другой и довольно большой минус. Минус в том, что если проект большой, то я на нем долго зависаю обдумывая его. Это из разряда, что человек в сознании может держать 7+-2 объекта. А у меня наверно происходит overflow и я начинаю жестко тупить и тормозить <img src='http://spoofa.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Для решения этой проблемы человечество придумало разные способы &#8211; одно из самых надежных, работающих и простых &#8211; деление задачи на поздачи. Т.е от более крупного переходят к более мелкому. Уже наверно как полгода, я учу себя использовать такой подход, вроде бы даже немного успешно. Хотя привычки дают о себе знать. Да и стиль у меня такой мышления &#8211; дедуктивный &#8211; сначала должен понять как работает что-то в целом, понять все взаимосвязи, всё всё всё, а только потом уже разбираю всё по-отдельности. Я думаю, что хороший подход, но нужно умело этим пользоватся. <img src='http://spoofa.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Естественно я не супер пупер кодер, косяки у меня случаются тоже, но я стараюсь чтобы их не было.</p>
<p>PS: Никак не могу найти кошерную тему для блога, особенно адапатированную к 2.3 и виджетам. А то уж больно нравится tag cloud.</p>
]]></content:encoded>
			<wfw:commentRss>http://spoofa.info/2007/10/11/%d0%bf%d1%80%d0%be-%d0%b8%d0%bd%d0%b4%d1%83%d1%81%d0%be%d0%b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN &amp; SSL</title>
		<link>http://spoofa.info/2007/08/20/svn-ssl/</link>
		<comments>http://spoofa.info/2007/08/20/svn-ssl/#comments</comments>
		<pubDate>Mon, 20 Aug 2007 10:46:37 +0000</pubDate>
		<dc:creator>spoof</dc:creator>
				<category><![CDATA[comp]]></category>
		<category><![CDATA[spylog]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[заметки]]></category>

		<guid isPermaLink="false">http://spoofa.info/2007/08/20/svn-ssl/</guid>
		<description><![CDATA[Чтобы каждый раз svn co не спрашивал файл сертификата при подключении к репозитарию по https в ~./subversion/servers достаточно добавить :
[groups]
examplehost = host.example.com
[examplehost]
ssl-client-cert-file = /path/to/my/cert.p12
ssl-client-cert-password = somepassword
Взято отсюда
]]></description>
			<content:encoded><![CDATA[<p>Чтобы каждый раз svn co не спрашивал файл сертификата при подключении к репозитарию по https в ~./subversion/servers достаточно добавить :</p>
<div class="codesnip-container" >[groups]<br />
examplehost = host.example.com</p>
<p>[examplehost]<br />
ssl-client-cert-file = /path/to/my/cert.p12<br />
ssl-client-cert-password = somepassword</p></div>
<p>Взято <a href="http://svnbook.red-bean.com/nightly/ru/svn.serverconfig.httpd.html#svn.serverconfig.httpd.authn.sslcerts">отсюда</a></p>
]]></content:encoded>
			<wfw:commentRss>http://spoofa.info/2007/08/20/svn-ssl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Лень в топку. Даешь прогресс!</title>
		<link>http://spoofa.info/2007/08/02/%d0%bb%d0%b5%d0%bd%d1%8c-%d0%b2-%d1%82%d0%be%d0%bf%d0%ba%d1%83-%d0%b4%d0%b0%d0%b5%d1%88%d1%8c-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b5%d1%81%d1%81/</link>
		<comments>http://spoofa.info/2007/08/02/%d0%bb%d0%b5%d0%bd%d1%8c-%d0%b2-%d1%82%d0%be%d0%bf%d0%ba%d1%83-%d0%b4%d0%b0%d0%b5%d1%88%d1%8c-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b5%d1%81%d1%81/#comments</comments>
		<pubDate>Wed, 01 Aug 2007 21:34:25 +0000</pubDate>
		<dc:creator>spoof</dc:creator>
				<category><![CDATA[comp]]></category>
		<category><![CDATA[devel]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[spylog]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://spoofa.info/2007/08/02/%d0%bb%d0%b5%d0%bd%d1%8c-%d0%b2-%d1%82%d0%be%d0%bf%d0%ba%d1%83-%d0%b4%d0%b0%d0%b5%d1%88%d1%8c-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b5%d1%81%d1%81/</guid>
		<description><![CDATA[Finally, поборол свою лень и занялся сайтами, в том числе и своим блогом. К своему блогу прикрутил categories cloud widget (уж очень нравицца) и плагин del.isio.us, который стягивает последние ссылки с моего аккаунта на одноименном сайте. Widget&#8230;слово то какое. Короче это новая фича, которая идет в 2.2 и была доступна в качестве плагина для wordress&#8217;a [...]]]></description>
			<content:encoded><![CDATA[<p>Finally, поборол свою лень и занялся сайтами, в том числе и своим блогом. К своему блогу прикрутил <a href="http://wordpress.org/extend/plugins/widget-category-cloud/">categories cloud widget</a> (уж очень нравицца) и плагин del.isio.us, который стягивает последние ссылки с моего аккаунта на одноименном сайте. Widget&#8230;слово то какое. Короче это новая фича, которая идет в 2.2 и была доступна в качестве плагина для wordress&#8217;a версий ниже. Если у Modx это называется snippet, у Joomla &#8211; модуль/компонент, то тут это те же яйца, только вид сбоку. Хотя это грамотное решение проблемы постоянной правки шаблонов/templates дизайна &#8211; тупо перетащил нужный widget в понравившееся место на sidebar&#8217;e (жаль, что только на sidebar&#8217;e) и юзаешь на здоровье и никакой правки шаблона.</p>
<p>Вот бы таким же образом сделали openid &#8220;авторизацию&#8221;, чтобы возможно было комментировать. Сейчас же опять надо менять это в шаблоне. Шаблон, кстати тоже поменял, но это временно, ибо он мне не нравится, но лучше ничего не нашел.</p>
<p>Продолжил работу над сайтом <a href="http://ragga-jungle.ru" target="_blank">Ragga-Jungle.Ru</a>. Первоначально задумывалось сделать это всё на движке <a href="http://www.joomla.org" target="_blank">Joomla,</a> но оказалось, что это настолько запутанная CMS, что возникает вопрос : что курили разработчики этой cms, когда ее создавали? Я знаю, что корни идут от Mambo, но тем не менее.</p>
<p>Короче, вернулся на <a href="http://modxcms.com" target="_blank">Modx</a>, который показался мне наиболее удобным и понятным для создания того, что требуется. Переход правда связан с потерей интеграции всех модулей друг с другом. Надо пилить руками &#8211; но хотя бы понятно, что куда и зачем. Modx однозначно рулит! За 2 дня я сделал больше, чем за неделю (если быть точным за два вечера против пяти вечеров).</p>
<p>И еще.. Cи++ постепенно съедает мой моск и время <img src='http://spoofa.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>upd:</strong> Таки пришлось мне править шаблон руками. Ссылка home была битая и вела на текущую страницу всё время. В коде надо было заменить $url  = get_option(&#8217;wpurl&#8217;) на $url = get_bloginfo(&#8217;url&#8217;); Видимо это wordpress 2.x specific &#8220;фича&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://spoofa.info/2007/08/02/%d0%bb%d0%b5%d0%bd%d1%8c-%d0%b2-%d1%82%d0%be%d0%bf%d0%ba%d1%83-%d0%b4%d0%b0%d0%b5%d1%88%d1%8c-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b5%d1%81%d1%81/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ыц ыц ыц.</title>
		<link>http://spoofa.info/2007/07/07/%d1%8b%d1%86-%d1%8b%d1%86-%d1%8b%d1%86/</link>
		<comments>http://spoofa.info/2007/07/07/%d1%8b%d1%86-%d1%8b%d1%86-%d1%8b%d1%86/#comments</comments>
		<pubDate>Sat, 07 Jul 2007 11:05:36 +0000</pubDate>
		<dc:creator>spoof</dc:creator>
				<category><![CDATA[comp]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[spylog]]></category>

		<guid isPermaLink="false">http://spoofa.info/2007/07/07/%d1%8b%d1%86-%d1%8b%d1%86-%d1%8b%d1%86/</guid>
		<description><![CDATA[Всё. Наконец-то сдал сессию   последнюю в жизни сессию в МЭИ. Теперь отдыхаю и работаю и нет такого огромного пожирателя времени как универ. Планов есс-но куча. И самое радостное, что планы эти касаются больше отдыха и увлечений (кстати, сказать, работа в спайлоге это увлечение  )
]]></description>
			<content:encoded><![CDATA[<p>Всё. Наконец-то сдал сессию <img src='http://spoofa.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  последнюю в жизни сессию в МЭИ. Теперь отдыхаю и работаю и нет такого огромного пожирателя времени как универ. Планов есс-но куча. И самое радостное, что планы эти касаются больше отдыха и увлечений (кстати, сказать, работа в спайлоге это увлечение <img src='http://spoofa.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
]]></content:encoded>
			<wfw:commentRss>http://spoofa.info/2007/07/07/%d1%8b%d1%86-%d1%8b%d1%86-%d1%8b%d1%86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Только вперед.</title>
		<link>http://spoofa.info/2007/04/27/%d1%82%d0%be%d0%bb%d1%8c%d0%ba%d0%be-%d0%b2%d0%bf%d0%b5%d1%80%d0%b5%d0%b4/</link>
		<comments>http://spoofa.info/2007/04/27/%d1%82%d0%be%d0%bb%d1%8c%d0%ba%d0%be-%d0%b2%d0%bf%d0%b5%d1%80%d0%b5%d0%b4/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 22:16:29 +0000</pubDate>
		<dc:creator>spoof</dc:creator>
				<category><![CDATA[comp]]></category>
		<category><![CDATA[devel]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[spylog]]></category>

		<guid isPermaLink="false">http://spoofa.info/2007/04/27/%d1%82%d0%be%d0%bb%d1%8c%d0%ba%d0%be-%d0%b2%d0%bf%d0%b5%d1%80%d0%b5%d0%b4/</guid>
		<description><![CDATA[Вухухуху, погода с каждым днем всё лучше и лучше. Днем работа, вечером гулять и наоборот. И кто, блять, придумал сон?
Куча работы, просто куча. Ладно бы просто была работа, так ведь и желание работать есть.
Единственное, универ парит моск жестоко. Но ничего. Еше год и всё.  Хотя уже меньше.
]]></description>
			<content:encoded><![CDATA[<p>Вухухуху, погода с каждым днем всё лучше и лучше. Днем работа, вечером гулять и наоборот. И кто, блять, придумал сон?</p>
<p>Куча работы, просто куча. Ладно бы просто была работа, так ведь и желание работать есть.</p>
<p>Единственное, универ парит моск жестоко. Но ничего. Еше год и всё.  Хотя уже меньше.</p>
]]></content:encoded>
			<wfw:commentRss>http://spoofa.info/2007/04/27/%d1%82%d0%be%d0%bb%d1%8c%d0%ba%d0%be-%d0%b2%d0%bf%d0%b5%d1%80%d0%b5%d0%b4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
