<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0"><id>http://oxyum.ru/blog/</id><title>Oxyum Blog</title><updated>2009-06-28T18:58:14Z</updated><link href="http://oxyum.ru/blog/" rel="alternate" /><author><name>Ivan Fedorov</name></author><generator version="r33" uri="http://code.google.com/p/django-atompub/">django-atompub</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/oxyum/blog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="oxyum/blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry><id>http://oxyum.ru/blog/2009/06/26/feedback-form-vs-evil-google-apps/</id><title type="html">FeedBack-форма против злобного Google Apps</title><updated>2009-06-27T11:15:05Z</updated><published>2009-06-26T22:17:19Z</published><category term="google" /><category term="hosting" /><category term="php" /><category term="rfc" /><category term="rfc2822" /><category term="rfc822" /><category term="smtp" /><link href="http://oxyum.ru/blog/2009/06/26/feedback-form-vs-evil-google-apps/" rel="self" /><link href="http://oxyum.ru/blog/2009/06/26/feedback-form-vs-evil-google-apps/" rel="alternate" /><content type="html">&lt;div class="document"&gt;
&lt;p&gt;Некоторое время назад хорошие люди меня попросили захостить один чужой&amp;nbsp;сайт.&lt;/p&gt;
&lt;p&gt;Как водится сайт был&amp;nbsp;&amp;#8221;стандартный&amp;#8221;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Куча кривых скриптов на &lt;span class="caps"&gt;PHP4&lt;/span&gt; в одной&amp;nbsp;куче&lt;/li&gt;
&lt;li&gt;Требует правки php.ini, понижая тем самым безопасность php до&amp;nbsp;предела&lt;/li&gt;
&lt;li&gt;Работает только под Apache с&amp;nbsp;mod_php&lt;/li&gt;
&lt;li&gt;Дамп mysql-базы с неимоверным количеством спамовых сообщений
(несколько тысяч) в форуме (phpBB2 кажется), который вообще на
сайте не&amp;nbsp;использовался&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Естественно ставить всё это на машину со своим сайтом мне не очень
хотелось, поэтому я быстренько создал отдельный OpenVZ-контейнер и
запихал всё&amp;nbsp;туда.&lt;/p&gt;
&lt;p&gt;Почту данных личностей ставить на свой почтовик мне тоже не особо
улыбалось, так что я захостил их на бесплатном &lt;a class="reference external" href="http://www.google.com/apps/"&gt;Google Apps&lt;/a&gt;. Тем
более, что они обожают &lt;a class="reference external" href="http://mail.google.com/"&gt;Google Mail&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;Дабы не настраивать там особо ничего, я поставил &lt;a class="reference external" href="http://msmtp.sourceforge.net/"&gt;msmtp&lt;/a&gt; с таким&amp;nbsp;конфигом:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
# cat /etc/msmtprc
account default
host smtp.gmail.com
port 587
protocol smtp
auth on
user tech&amp;#64;example.com
password PaSsWoRd
tls on
tls_starttls on
tls_certcheck off
syslog LOG_MAIL
&lt;/pre&gt;
&lt;p&gt;Но тут возникла проблема, с тем что Google переписывает заголовок
From: из письма на реальное имя ящика. Что конечно же резко помешало
работе Feedback-формы на сайте. Вообще я за эту работу не получил не
только денег, по сути даже и&amp;nbsp;&amp;#8221;спасибо&amp;#8221;.&lt;/p&gt;
&lt;p&gt;И вдруг с меня начинают просто таки требовать &amp;#8220;починить&amp;#8221;, чтобы всё
работало как раньше. Я сказал, что Google вполне разумно защищается от
спама и всё работает правильно. На что мне было отвечено, что я
нифига не понимаю в том, как работает почта, и что люди, которые пишут
этот, как было сказано мне, &amp;#8220;движок&amp;#8221; лучше знают что &lt;em&gt;правильно&lt;/em&gt;, а я им
сделал кривую&amp;nbsp;почту.&lt;/p&gt;
&lt;p&gt;Я немного подумав нашел простейшее решение, которое полностью устроило
меня, ибо клиент отстал, а я не нарушил ни стандартов, ни&amp;nbsp;безопасности.&lt;/p&gt;
&lt;p&gt;Письма продолжают приходить с адреса &lt;a class="reference external" href="mailto:tech&amp;#64;example.com"&gt;tech&amp;#64;example.com&lt;/a&gt;, но вот адрес
отправителя в них теперь есть. Я просто добавил &lt;em&gt;стандартный&lt;/em&gt;
заголовок, который предназначен именно для этого: &lt;strong&gt;Reply-To&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Теперь письма выглядят&amp;nbsp;так:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
From: tech&amp;#64;example.com
To: info&amp;#64;example.com
Reply-To: client&amp;#64;somedomain.tld
Date: Fri, 21 Nov 1997 09:55:06 -0600
Subject: [EXAMPLE.COM FEEDBACK] Subject

Message Body.
&lt;/pre&gt;
&lt;p&gt;Внести эти изменения в &amp;#8220;upstream&amp;#8221; я сразу не смог, ибо там просили
обосновать это решение, но сделать это используя разумные аргументы
мне не&amp;nbsp;удалось.&lt;/p&gt;
&lt;p&gt;На текущий момент я сделал грязный хак, и закодил это всё прямо в код
того&amp;nbsp;&amp;#8221;движка&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Вообще, если подобное делать в общем случае, то проще всего написать
свой простейший аналог &lt;a class="reference external" href="http://msmtp.sourceforge.net/"&gt;msmtp&lt;/a&gt; на &lt;a class="reference external" href="http://www.python.org/"&gt;Python&lt;/a&gt;. Благо, используя модули
&lt;a class="reference external" href="http://docs.python.org/library/email.html"&gt;email&lt;/a&gt;, &lt;a class="reference external" href="http://docs.python.org/library/smtplib.html"&gt;smtplib&lt;/a&gt; и &lt;a class="reference external" href="http://docs.python.org/library/smtpd.html"&gt;smtpd&lt;/a&gt;, пишется подобная вещь в пару сотен строк
даже с очередью, приоритетами и&amp;nbsp;повторами.&lt;/p&gt;
&lt;/div&gt;
</content></entry><entry><id>http://oxyum.ru/blog/2009/02/27/chudesa-kommunalshikov/</id><title type="html">Чудеса коммунальщиков</title><updated>2009-02-27T22:33:45Z</updated><published>2009-02-27T21:11:47Z</published><link href="http://oxyum.ru/blog/2009/02/27/chudesa-kommunalshikov/" rel="self" /><link href="http://oxyum.ru/blog/2009/02/27/chudesa-kommunalshikov/" rel="alternate" /><content type="html">&lt;div class="document"&gt;
&lt;p&gt;Шел сегодня домой и обнаружил у подъезда&amp;nbsp;такое:&lt;/p&gt;
&lt;img alt="/media/img_0695_tb.jpg" src="/media/img_0695_tb.jpg" /&gt;
&lt;p&gt;&lt;a class="reference external" href="/media/img_0695_small.jpg"&gt;Баааальшой вариант 1&amp;nbsp;:)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;img alt="/media/img_0697_tb.jpg" src="/media/img_0697_tb.jpg" /&gt;
&lt;p&gt;&lt;a class="reference external" href="/media/img_0698_small.jpg"&gt;Баааальшой вариант 2&amp;nbsp;:)&lt;/a&gt;&lt;/p&gt;
&lt;img alt="/media/img_0698_tb.jpg" src="/media/img_0698_tb.jpg" /&gt;
&lt;p&gt;&lt;a class="reference external" href="/media/img_0698_small.jpg"&gt;Баааальшой вариант 3&amp;nbsp;:)&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
</content></entry><entry><id>http://oxyum.ru/blog/2008/11/27/firepython-debugger/</id><title type="html">FirePython debugger</title><updated>2009-06-28T18:58:14Z</updated><published>2008-11-27T15:43:45Z</published><category term="django" /><category term="firebug" /><category term="firefox" /><category term="firepython" /><category term="python" /><category term="wsgi" /><link href="http://oxyum.ru/blog/2008/11/27/firepython-debugger/" rel="self" /><link href="http://oxyum.ru/blog/2008/11/27/firepython-debugger/" rel="alternate" /><content type="html">&lt;div class="document"&gt;
&lt;p&gt;Несколько дней назад наткнулся на интереснейшую вещь &amp;mdash; отладчик для web-приложений написанных на &lt;a class="reference external" href="http://www.python.org/"&gt;Python&lt;/a&gt;. Называется это чудо &lt;a class="reference external" href="http://github.com/darwin/firelogger/tree/master"&gt;FirePython&lt;/a&gt; и состоит из двух основных частей &amp;mdash; библиотеки на &lt;a class="reference external" href="http://www.python.org/"&gt;Python&lt;/a&gt; и плагина к &lt;a class="reference external" href="http://getfirebug.com/"&gt;FireBug&lt;/a&gt;. Основным назначением этого проекта является возможность отобразить результаты логгирования Python-кода прямо в&amp;nbsp;браузере.&lt;/p&gt;
&lt;p&gt;Если быть более точным, то в браузер передаются результаты работы стандартного &lt;a class="reference external" href="http://docs.python.org/lib/module-logging.html"&gt;логгера&lt;/a&gt; &lt;a class="reference external" href="http://www.python.org/"&gt;Python&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
import logging
logging.debug(&amp;quot;debug message&amp;quot;)
&lt;/pre&gt;
&lt;p&gt;Автор этого проекта пишет на &lt;a class="reference external" href="http://www.python.org/"&gt;Python&lt;/a&gt; не очень хорошо, так что &lt;a class="reference external" href="http://piranha.org.ua/blog/2008/11/24/firepython-no-prints/"&gt;Alexander Solovyov&lt;/a&gt; и я решили ему в этом помочь. Мы переписали большую часть &lt;a class="reference external" href="http://www.python.org/"&gt;Python&lt;/a&gt; кода, так что автор теперь занимается в основном браузерной частью&amp;nbsp;проекта.&lt;/p&gt;
&lt;p&gt;На текущий момент проект еще далек от идеала, но даже в таком виде весьма удобен. Уже есть возможность собирать логи с приложений &lt;a class="reference external" href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt; через родную миддлварь, или с любого приложения, через &lt;a class="reference external" href="http://www.python.org/dev/peps/pep-0333/"&gt;&lt;span class="caps"&gt;WSGI&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Сейчас мы потихоньку делаем красивый вывод исключений и я продумываю, как наиболее удобно можно преврать этот проект из консоли логгирования в настоящий отладчик. Хочется получить что-то подобное &lt;a class="reference external" href="http://werkzeug.pocoo.org/"&gt;Werkzeug&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
</content></entry><entry><id>http://oxyum.ru/blog/2008/11/20/altlinux-certificate/</id><title type="html">Новый сертификат от ALTLinux</title><updated>2008-11-20T21:05:43Z</updated><published>2008-11-20T17:25:14Z</published><category term="altlinux" /><category term="certification" /><link href="http://oxyum.ru/blog/2008/11/20/altlinux-certificate/" rel="self" /><link href="http://oxyum.ru/blog/2008/11/20/altlinux-certificate/" rel="alternate" /><content type="html">&lt;div class="document"&gt;
&lt;p&gt;Съездил сегодня в офис &lt;a class="reference external" href="http://www.altlinux.ru/"&gt;&lt;span class="caps"&gt;ALT&lt;/span&gt; Linux&lt;/a&gt; и получил свой обещанный&amp;nbsp;сертификат.&lt;/p&gt;
&lt;p&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;div align="center" class="align-center"&gt;&lt;img alt="Сертификат" class="align-center" src="/media/altcc.png" /&gt;&lt;/div&gt;
&lt;p&gt;Теперь у меня есть очередная красивая бумажка с&amp;nbsp;надписью:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
Сертифицированный специалист ALT Linux
ALT Linux Certified&amp;nbsp;Specialist
&lt;/pre&gt;
&lt;p&gt;На сертификате присутствует не только обычные печать и подпись, но и голограмма &lt;a class="reference external" href="http://www.altlinux.ru/"&gt;&lt;span class="caps"&gt;ALT&lt;/span&gt; Linux&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Также в отличии от всех остальных сертификатов, тут мне подарили прикольную алюминиевую рамочку!&amp;nbsp;:)&lt;/p&gt;
&lt;/div&gt;
</content></entry><entry><id>http://oxyum.ru/blog/2008/11/17/life-reality/</id><title type="html">Суровая правда жизни</title><updated>2008-11-17T17:04:53Z</updated><published>2008-11-17T16:54:32Z</published><category term="job" /><category term="life" /><category term="salary" /><link href="http://oxyum.ru/blog/2008/11/17/life-reality/" rel="self" /><link href="http://oxyum.ru/blog/2008/11/17/life-reality/" rel="alternate" /><content type="html">&lt;div class="document"&gt;
&lt;p&gt;Гулял тут по сайту &lt;a class="reference external" href="http://moikrug.ru/"&gt;http://moikrug.ru/&lt;/a&gt; и наткнулся на такое&amp;nbsp;чудо:&lt;/p&gt;
&lt;img alt="Вакансии" src="/media/vac.png" /&gt;
&lt;/div&gt;
</content></entry></feed>

