<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2russianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss version="2.0"><channel><title>Mr.Daark: Записки сурка</title><link>http://mrdaark.com</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/mrdaark" /><description>Про меня, про интернет, про деньги, про жизнь, про всё :)</description><language>en</language><lastBuildDate>Sun, 11 Mar 2012 01:11:28 PST</lastBuildDate><generator>http://wordpress.org/?v=3.3.2</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/mrdaark" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="mrdaark" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fmrdaark" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fmrdaark" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://lenta.yandex.ru/settings.xml?name=feed&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fmrdaark" src="http://lenta.yandex.ru/i/addfeed.gif">?????? ? ??????.?????</feedburner:feedFlare><item><title>Python: RSS to Twitter (oauth версия)</title><link>http://mrdaark.com/rss2twitteroauth.html</link><category>Программинг</category><category>python</category><category>rss</category><category>twitter</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mrdaark</dc:creator><pubDate>Sun, 11 Mar 2012 01:08:32 PST</pubDate><guid isPermaLink="false">http://mrdaark.com/?p=188</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://mrdaark.com/rss2twitter.html" title="Python: RSS to Twitter" target="_blank">Старый вариант репостинга в твиттер из RSS</a> давно не работает.</p>
<p>Снова понадобилась такая штука, сделал новый вариант репостинга через oauth.</p>
<p>Используются модули <a href="http://code.google.com/p/oauth-python-twitter2/" title="oauth-python-twitter2" target="_blank"rel="nofollow">oauth-python-twitter2</a> и <a href="http://code.google.com/p/python-bitly/" title="python-bitly" target="_blank" rel="nofollow">python-bitly</a>. </p>
<p>Все предельно просто, настройка заключается в заполнении значений переменных</p>
<blockquote><p><code><font size="2" face="Consolas, Courier New, Courier, Monospace" color="black"><br/>bit_api=<font color="#008000">""</font><br/>bit_login=<font color="#008000">""</font><br/>consumer_key=<font color="#008000">""</font><br/>consumer_secret=<font color="#008000">""</font><br/>access_key=<font color="#008000">""</font><br/>access_secret=<font color="#008000">""</font><br/>rss_url=<font color="#008000">"/rss"</font> <br/></font></code></p></blockquote>
<p>После чего запуск скрипта в cron в соотвествии с требованиями по скорости постинга. Можно в принципе и в CMS встроить, чтобы постинг мгновенный был.</p>
<p>Сам код:</p>
<blockquote><p><code><font size="2" face="Consolas, Courier New, Courier, Monospace" color="black"><br/><font color="#696969">#!/usr/local/bin/python</font><br/><font color="#696969">#&nbsp;-*-&nbsp;coding:&nbsp;utf8&nbsp;-*-</font><br/><font color="#0000ff">import</font> urllib, libxml2, pickle, os<br/><font color="#0000ff">from</font> time <font color="#0000ff">import</font> sleep<br/><font color="#0000ff">from</font> oauthtwitter <font color="#0000ff">import</font> OAuthApi<br/><font color="#0000ff">import</font> bitly<br/>bit_api=<font color="#008000">""</font><br/>bit_login=<font color="#008000">""</font><br/>consumer_key=<font color="#008000">""</font><br/>consumer_secret=<font color="#008000">""</font><br/>access_key=<font color="#008000">""</font><br/>access_secret=<font color="#008000">""</font><br/>rss_url=<font color="#008000">"/rss"</font><br/><font color="#0000ff">if</font> __name__ == <font color="#008000">'__main__'</font>:<br/>&nbsp;&nbsp;&nbsp;&nbsp;doc = libxml2.parseFile(rss_url)<br/>&nbsp;&nbsp;&nbsp;&nbsp;links=[]<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">for</font> item <font color="#0000ff">in</font> doc.xpathEval(<font color="#008000">'//channel/item/link'</font>):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;links.append(item.content)<br/>&nbsp;&nbsp;&nbsp;&nbsp;titles=[]<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">for</font> item <font color="#0000ff">in</font> doc.xpathEval(<font color="#008000">'//channel/item/title'</font>):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titles.append(item.content)<br/>&nbsp;&nbsp;&nbsp;&nbsp;rss_path = <b>os</b>.path.join(<b>os</b>.path.dirname(__file__), <font color="#008000">'rss.db'</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;file = <b>open</b> (rss_path)<br/>&nbsp;&nbsp;&nbsp;&nbsp;old_links=<b>pickle</b>.load(file)<br/>&nbsp;&nbsp;&nbsp;&nbsp;<b>file</b>.close()<br/>&nbsp;&nbsp;&nbsp;&nbsp;items=[]<br/>&nbsp;&nbsp;&nbsp;&nbsp;f=<font color="#008000">&nbsp;0</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">for</font> x <font color="#0000ff">in</font> <b>xrange</b>(<font color="#008000">&nbsp;0</font>,<b>len</b>(links)):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">for</font> old <font color="#0000ff">in</font> old_links:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f=<font color="#008000">&nbsp;0</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (old==links[x]):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f=<font color="#008000">1</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">break</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (f==<font color="#008000">&nbsp;0</font>):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.append(x)<br/>&nbsp;&nbsp;&nbsp;&nbsp;twitter = OAuthApi(consumer_key, consumer_secret, access_key, access_secret)<br/>&nbsp;&nbsp;&nbsp;&nbsp;bitly_api = bitly.Api(bit_login, bit_api)<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">for</font> x <font color="#0000ff">in</font> items:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title=titles[x].decode(<font color="#008000">"utf8"</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> <b>len</b>(title)&lt;=<font color="#008000">120</font>:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">print</font> <font color="#008000">"link&nbsp;%s:&nbsp;%s"</font> % (x,links[x])<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> x!=<font color="#008000">&nbsp;0</font>:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(<font color="#008000">15</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">try</font>:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;twitter.UpdateStatus(title+<font color="#008000">"&nbsp;"</font>+bitly_api.shorten(links[x]))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#696969">#print&nbsp;title.encode("utf8")+"&nbsp;"+bitly_api.shorten(links[x])</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">except</font> ValueError:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">pass</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;file=<b>open</b>(rss_path,<font color="#008000">"w"</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;ser=<b>pickle</b>.dump(links,file)<br/>&nbsp;&nbsp;&nbsp;&nbsp;<b>file</b>.close()<br/></font></code></p></blockquote>
<p>Критика, как обычно, приветствуется.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/OVkHSz4Oy8bIGsnQ1OADXzot9uo/0/da"><img src="http://feedads.g.doubleclick.net/~a/OVkHSz4Oy8bIGsnQ1OADXzot9uo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/OVkHSz4Oy8bIGsnQ1OADXzot9uo/1/da"><img src="http://feedads.g.doubleclick.net/~a/OVkHSz4Oy8bIGsnQ1OADXzot9uo/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded><description>Старый вариант репостинга в твиттер из RSS давно не работает. Снова понадобилась такая штука, сделал новый вариант репостинга через oauth. Используются модули oauth-python-twitter2 и python-bitly. Все предельно просто, настройка заключается в заполнении значений переменных bit_api=""bit_login=""consumer_key=""consumer_secret=""access_key=""access_secret=""rss_url="/rss" После чего запуск скрипта в cron в соотвествии с требованиями по скорости постинга. Можно в принципе и в CMS встроить, [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mrdaark.com/rss2twitteroauth.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments></item><item><title>Перевод текстов посредством Bing API</title><link>http://mrdaark.com/perevod-tekstov-posredstvom-bing-api.html</link><category>Программинг</category><category>bing api</category><category>php</category><category>soap</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mrdaark</dc:creator><pubDate>Thu, 23 Jun 2011 06:44:40 PDT</pubDate><guid isPermaLink="false">http://mrdaark.com/?p=180</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Сегодня, в связи с тем что гугл собирается закрывать свой translate api, таки собрался и сотворил класс для перевода текста через SOAP сервис <a href="http://www.bing.com/developers/">Bing</a></p>
<p>В связи с тем, что по каким-то странным обстоятельствам нормальной документации нет, а есть только куцый пример на VB (о ужас!) и C# с использованием видимо готовых библиотек пришлось повозиться и подбирать параметры и вид, в котором надо данные отправить сервису, чтоб он не ругался непонятными словами.</p>
<p>В результате родилось вот что:</p>
<blockquote><p><code><font color="#cc6633">&lt;?php</font><br/><font color="#0000ff">class</font>  Bing_Translate_API {    <br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">function</font> translate(<font color="#cc6633">$text</font>, <font color="#cc6633">$from</font> = <font color="#008000">'en'</font>, <font color="#cc6633">$to</font> = <font color="#008000">'ru'</font>) {<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (mb_strlen(<font color="#cc6633">$text</font>)&gt;<font color="#008000">2000</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">echo</font> <font color="#008000">"шмахтунг\n"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return false</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$c</font>=<font color="#0000ff">new</font> SoapClient(<font color="#008000">"http://api.bing.net/search.wsdl"</font>,<font color="#0000ff">array</font>(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">"AppId"</font>=&gt;<font color="#008000">"bingApiId"</font>,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">"Version"</font>=&gt;<font color="#008000">"2.2"</font>   <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;));<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$arr</font>=<font color="#0000ff">array</font>(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">"parameters"</font>=&gt;<font color="#0000ff">array</font>(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">"AppId"</font>=&gt;<font color="#008000">"bingApiId"</font>,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">"Market"</font>=&gt;<font color="#008000">"en-us"</font>,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">"Version"</font>=&gt;<font color="#008000">"2.2"</font>,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">"Sources"</font>=&gt;<font color="#0000ff">array</font>(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">"Translation"</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">"Translation"</font>=&gt;<font color="#0000ff">array</font>(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">"SourceLanguage"</font>=&gt;<font color="#cc6633">$from</font>,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">"TargetLanguage"</font>=&gt;<font color="#cc6633">$to</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">"Query"</font>=&gt;<font color="#cc6633">$text</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$r</font>=<font color="#cc6633">$c</font>-&gt;Search(<font color="#cc6633">$arr</font>);<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (<font color="#0000ff">isset</font>(<font color="#cc6633">$r</font>-&gt;parameters-&gt;Translation-&gt;Results-&gt;TranslationResult-&gt;TranslatedTerm))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font> <font color="#cc6633">$r</font>-&gt;parameters-&gt;Translation-&gt;Results-&gt;TranslationResult-&gt;TranslatedTerm;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">else</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">echo</font> <font color="#008000">"ахтунг\n"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return false</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/><font color="#cc6633">?&gt;</font> <br/></font></code></p></blockquote>
<p>а вызывать пользоваться этим безобразием теперь вообщем-то просто:</p>
<blockquote><p><code><font color="#cc6633">&lt;?php</font><br/><font color="#0000ff">echo</font> Bing_Translate_API::translate(<font color="#008000">"text&nbsp;to&nbsp;translate"</font>,<font color="#008000">"en"</font>,<font color="#008000">"ru"</font>);    <br/><font color="#cc6633">?&gt;</font> <br/></font></code></p></blockquote>
<p>Кроме того, выяснилось, что у Bing API есть ограничение на размер запроса примерно в 2кБ текста. А Примерно потому, что через раз он текст с размером 2048 символов не переводил, уж не знаю почему.</p>
<p>BingApiId получать по ссылке <a href="http://www.bing.com/developers/">http://www.bing.com/developers/</a></p>
<p>З.Ы. я знаю что код кривой, и при малейшем чихе упадет, но делать ничего не буду, это есть пример <img src='http://mrdaark.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/82ocpudpFqi0FBVrqw7HNK2N5e4/0/da"><img src="http://feedads.g.doubleclick.net/~a/82ocpudpFqi0FBVrqw7HNK2N5e4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/82ocpudpFqi0FBVrqw7HNK2N5e4/1/da"><img src="http://feedads.g.doubleclick.net/~a/82ocpudpFqi0FBVrqw7HNK2N5e4/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded><description>Сегодня, в связи с тем что гугл собирается закрывать свой translate api, таки собрался и сотворил класс для перевода текста через SOAP сервис Bing В связи с тем, что по каким-то странным обстоятельствам нормальной документации нет, а есть только куцый пример на VB (о ужас!) и C# с использованием видимо готовых библиотек пришлось повозиться и [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mrdaark.com/perevod-tekstov-posredstvom-bing-api.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">5</slash:comments></item><item><title>Изобретая велосипеды: xmlrpc</title><link>http://mrdaark.com/izobretaya-velosipedy-xmlrpc.html</link><category>Программинг</category><category>metaWeblog</category><category>php</category><category>wordpress</category><category>xmlrpc</category><category>xmlrpc_encode_request</category><category>блог</category><category>сайты</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mrdaark</dc:creator><pubDate>Tue, 19 Apr 2011 01:29:47 PDT</pubDate><guid isPermaLink="false">http://mrdaark.com/?p=165</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Вчера озаботился возможностью что-то опубликовать в блоке посредством xmlrpc из php.</p>
<p><a href="http://mrdaark.com/wp-content/uploads/2011/04/xmlrpc.jpg"><img src="http://mrdaark.com/wp-content/uploads/2011/04/xmlrpc.jpg" alt="" title="xmlrpc" width="128" height="136" class="aligncenter size-full wp-image-169" /></a></p>
<p>Проковырявшись в общей сложности часа 4 с библиотекой <a href="http://phpxmlrpc.sourceforge.net/" rel="nofollow">xmlrpc</a> и встроенной функцией <a href="http://ru2.php.net/manual/en/function.xmlrpc-encode-request.php" rel="nofollow">xmlrpc_encode_equest</a> и так и не добившись нормальной работы всего этого безобразия, собрался и сегодня за 1.5 часа сделал свой велосипед <img src='http://mrdaark.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<blockquote><p><code><font size="2" face="Consolas, Courier New, Courier, Monospace" color="black"><font color="#cc6633">&lt;?php</font><br/><font color="#696969">/*</font><br/><font color="#696969">&nbsp;*&nbsp;Велосипед&nbsp;для&nbsp;работы&nbsp;с&nbsp;xmlrpc</font><br/><font color="#696969">&nbsp;*&nbsp;версия&nbsp;0.1beta</font><br/><font color="#696969">&nbsp;*</font><br/><font color="#696969">&nbsp;*&nbsp;Copyright&nbsp;(c)&nbsp;2011&nbsp;mrdaark.</font><br/><font color="#696969">&nbsp;*&nbsp;Все&nbsp;права&nbsp;защищены</font><br/><font color="#696969">&nbsp;*&nbsp;</font><br/><font color="#696969">&nbsp;*/</font><br/>&nbsp;<br/><font color="#696969">/*</font><br/><font color="#696969">&nbsp;*&nbsp;Функция&nbsp;для&nbsp;отправки&nbsp;запроса&nbsp;на&nbsp;xmlrpc&nbsp;сервер</font><br/><font color="#696969">&nbsp;*&nbsp;использует&nbsp;библиотеку&nbsp;curl</font><br/><font color="#696969">&nbsp;*&nbsp;в&nbsp;качестве&nbsp;параметров:</font><br/><font color="#696969">&nbsp;*&nbsp;@url&nbsp;-&nbsp;url&nbsp;адрес&nbsp;сервера</font><br/><font color="#696969">&nbsp;*&nbsp;@request&nbsp;-&nbsp;запрос&nbsp;формируемый&nbsp;с&nbsp;помощью&nbsp;функции&nbsp;xmlrpc_request</font><br/><font color="#696969">&nbsp;*/</font><br/><font color="#0000ff">function</font> xmlrpc_send(<font color="#cc6633">$url</font>,<font color="#cc6633">$request</font>)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font>(!<a href="http://www.php.net/manual/en/function.function-exists.php">function_exists</a>(<font color="#008000">'curl_init'</font>)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">die</font> (<font color="#008000">"Curl&nbsp;PHP&nbsp;package&nbsp;not&nbsp;installed\n"</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$ch</font> = <a href="http://www.php.net/manual/en/function.curl-init.php">curl_init</a>();<br/>&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.php.net/manual/en/function.curl-setopt.php">curl_setopt</a>(<font color="#cc6633">$ch</font>, CURLOPT_URL, <font color="#cc6633">$url</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.php.net/manual/en/function.curl-setopt.php">curl_setopt</a>(<font color="#cc6633">$ch</font>, CURLOPT_HEADER, <font color="#0000ff">false</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.php.net/manual/en/function.curl-setopt.php">curl_setopt</a>(<font color="#cc6633">$ch</font>, CURLOPT_HTTPHEADER, <font color="#0000ff">array</font>(<font color="#008000">"Content-Type:&nbsp;text/xml;&nbsp;charset=utf-8"</font>));<br/>&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.php.net/manual/en/function.curl-setopt.php">curl_setopt</a>(<font color="#cc6633">$ch</font>, CURLOPT_POSTFIELDS, <font color="#cc6633">$request</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$response</font> = <a href="http://www.php.net/manual/en/function.curl-exec.php">curl_exec</a>(<font color="#cc6633">$ch</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$response</font> = xmlrpc_decode(<font color="#cc6633">$response</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.php.net/manual/en/function.curl-close.php">curl_close</a>(<font color="#cc6633">$ch</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font> <font color="#cc6633">$response</font>;<br/>}<br/>&nbsp;<br/><font color="#696969">/*</font><br/><font color="#696969">&nbsp;*&nbsp;Функция&nbsp;формирования&nbsp;xml&nbsp;запроса&nbsp;на&nbsp;xmlrpc</font><br/><font color="#696969">&nbsp;*&nbsp;в&nbsp;качестве&nbsp;параметров:</font><br/><font color="#696969">&nbsp;*&nbsp;@method&nbsp;-&nbsp;вызываемый&nbsp;метод</font><br/><font color="#696969">&nbsp;*&nbsp;@params&nbsp;-&nbsp;массив&nbsp;списка&nbsp;параметров</font><br/><font color="#696969">&nbsp;*/</font><br/><font color="#0000ff">function</font> xmlrpc_request(<font color="#cc6633">$method</font>,<font color="#cc6633">$params</font>)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font> =<font color="#008000">"&lt;?xml&nbsp;version=\"1.0\"&nbsp;encoding=\"utf-8\"?&gt;\n"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;methodCall&gt;&lt;methodName&gt;"</font>.<font color="#cc6633">$method</font>.<font color="#008000">"&lt;/methodName&gt;&lt;params&gt;"</font>;<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (<a href="http://www.php.net/manual/en/function.is-array.php">is_array</a>(<font color="#cc6633">$params</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">foreach</font> (<font color="#cc6633">$params</font> <font color="#0000ff">as</font> <font color="#cc6633">$v</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (<a href="http://www.php.net/manual/en/function.is-numeric.php">is_numeric</a>(<font color="#cc6633">$v</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;param&gt;&lt;value&gt;&lt;int&gt;"</font>.<font color="#cc6633">$v</font>.<font color="#008000">"&lt;/int&gt;&lt;/value&gt;&lt;/param&gt;"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">else if</font> (<a href="http://www.php.net/manual/en/function.is-string.php">is_string</a> (<font color="#cc6633">$v</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;param&gt;&lt;value&gt;&lt;string&gt;"</font>.<font color="#cc6633">$v</font>.<font color="#008000">"&lt;/string&gt;&lt;/value&gt;&lt;/param&gt;"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">else if</font> (<a href="http://www.php.net/manual/en/function.is-bool.php">is_bool</a>(<font color="#cc6633">$v</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;param&gt;&lt;value&gt;&lt;boolean&gt;"</font>. (<font color="#cc6633">$v</font> ? <font color="#008000">"1"</font>:<font color="#008000">"0"</font>) .<font color="#008000">"&lt;/boolean&gt;&lt;/value&gt;&lt;/param&gt;"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}            <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">else if</font> (<a href="http://www.php.net/manual/en/function.is-array.php">is_array</a>(<font color="#cc6633">$v</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;param&gt;"</font>._xmlrpc_genstruct(<font color="#cc6633">$v</font>).<font color="#008000">"&lt;/param&gt;"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;/params&gt;&lt;/methodCall&gt;"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font> <font color="#cc6633">$xml</font>;<br/>}<br/>&nbsp;<br/><font color="#696969">/*</font><br/><font color="#696969">&nbsp;*&nbsp;Функция&nbsp;формирования&nbsp;именованной&nbsp;структуры</font><br/><font color="#696969">&nbsp;*&nbsp;в&nbsp;качестве&nbsp;параметров:</font><br/><font color="#696969">&nbsp;*&nbsp;@params&nbsp;-&nbsp;массив&nbsp;списка&nbsp;параметров</font><br/><font color="#696969">&nbsp;*/</font><br/><font color="#0000ff">function</font> _xmlrpc_genstruct(<font color="#cc6633">$params</font>)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (<a href="http://www.php.net/manual/en/function.is-array.php">is_array</a>(<font color="#cc6633">$params</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>=<font color="#008000">"&lt;value&gt;&lt;struct&gt;"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">foreach</font> (<font color="#cc6633">$params</font> <font color="#0000ff">as</font> <font color="#cc6633">$k</font>=&gt;<font color="#cc6633">$v</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#696969">//формируем&nbsp;поля&nbsp;запроса.</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (<a href="http://www.php.net/manual/en/function.is-numeric.php">is_numeric</a>(<font color="#cc6633">$v</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;member&gt;&lt;name&gt;"</font>.<font color="#cc6633">$k</font>.<font color="#008000">"&lt;/name&gt;&lt;value&gt;&lt;int&gt;"</font>.<font color="#cc6633">$v</font>.<font color="#008000">"&lt;/int&gt;&lt;/value&gt;&lt;/member&gt;"</font>;                <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">else if</font> (<a href="http://www.php.net/manual/en/function.is-string.php">is_string</a> (<font color="#cc6633">$v</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;member&gt;&lt;name&gt;"</font>.<font color="#cc6633">$k</font>.<font color="#008000">"&lt;/name&gt;&lt;value&gt;&lt;string&gt;"</font>.<font color="#cc6633">$v</font>.<font color="#008000">"&lt;/string&gt;&lt;/value&gt;&lt;/member&gt;"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">else if</font> (<a href="http://www.php.net/manual/en/function.is-bool.php">is_bool</a>(<font color="#cc6633">$v</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;member&gt;&lt;name&gt;"</font>.<font color="#cc6633">$k</font>.<font color="#008000">"&lt;/name&gt;&lt;value&gt;&lt;boolean&gt;"</font>. (<font color="#cc6633">$v</font> ? <font color="#008000">"1"</font>:<font color="#008000">"0"</font>) .<font color="#008000">"&lt;/boolean&gt;&lt;/value&gt;&lt;/member&gt;"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}            <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">else if</font> (<a href="http://www.php.net/manual/en/function.is-array.php">is_array</a>(<font color="#cc6633">$v</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;member&gt;&lt;name&gt;"</font>.<font color="#cc6633">$k</font>.<font color="#008000">"&lt;/name&gt;"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (_xmlrpc_is_struct(<font color="#cc6633">$v</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=_xmlrpc_genstruct(<font color="#cc6633">$v</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">else</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=_xmlrpc_genarray(<font color="#cc6633">$v</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;/member&gt;"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}             <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;/struct&gt;&lt;/value&gt;"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font> <font color="#cc6633">$xml</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">else</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font> <font color="#008000">""</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/>&nbsp;<br/><font color="#696969">/*</font><br/><font color="#696969">&nbsp;*&nbsp;Функция&nbsp;формирования&nbsp;неименованного&nbsp;массива</font><br/><font color="#696969">&nbsp;*&nbsp;в&nbsp;качестве&nbsp;параметров:</font><br/><font color="#696969">&nbsp;*&nbsp;@params&nbsp;-&nbsp;массив&nbsp;списка&nbsp;параметров</font><br/><font color="#696969">&nbsp;*/</font><br/><font color="#0000ff">function</font> _xmlrpc_genarray(<font color="#cc6633">$params</font>)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (<a href="http://www.php.net/manual/en/function.is-array.php">is_array</a>(<font color="#cc6633">$params</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#696969">//проверим&nbsp;необходимость&nbsp;добавления&nbsp;имени</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>=<font color="#008000">"&lt;value&gt;&lt;array&gt;&lt;data&gt;"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">foreach</font> (<font color="#cc6633">$params</font> <font color="#0000ff">as</font> <font color="#cc6633">$v</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#696969">//формируем&nbsp;поля&nbsp;запроса.</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (<a href="http://www.php.net/manual/en/function.is-numeric.php">is_numeric</a>(<font color="#cc6633">$v</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;value&gt;&lt;int&gt;"</font>.<font color="#cc6633">$v</font>.<font color="#008000">"&lt;/int&gt;&lt;/value&gt;"</font>;                <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">else if</font> (<a href="http://www.php.net/manual/en/function.is-string.php">is_string</a> (<font color="#cc6633">$v</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;value&gt;&lt;string&gt;"</font>.<font color="#cc6633">$v</font>.<font color="#008000">"&lt;/string&gt;&lt;/value&gt;"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">else if</font> (<a href="http://www.php.net/manual/en/function.is-bool.php">is_bool</a>(<font color="#cc6633">$v</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;value&gt;&lt;boolean&gt;"</font>. (<font color="#cc6633">$v</font> ? <font color="#008000">"1"</font>:<font color="#008000">"0"</font>) .<font color="#008000">"&lt;/boolean&gt;&lt;/value&gt;"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}            <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">else if</font> (<a href="http://www.php.net/manual/en/function.is-array.php">is_array</a>(<font color="#cc6633">$v</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (_xmlrpc_is_struct(<font color="#cc6633">$v</font>))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=_xmlrpc_genstruct(<font color="#cc6633">$v</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">else</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=_xmlrpc_genarray(<font color="#cc6633">$v</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}  <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$xml</font>.=<font color="#008000">"&lt;/data&gt;&lt;/array&gt;&lt;/value&gt;"</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font> <font color="#cc6633">$xml</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font> <font color="#008000">""</font>;<br/>}<br/>&nbsp;<br/><font color="#696969">/*</font><br/><font color="#696969">&nbsp;*&nbsp;Функция&nbsp;проверки&nbsp;переданного&nbsp;массива&nbsp;на</font><br/><font color="#696969">&nbsp;*&nbsp;предмет&nbsp;необходимости&nbsp;формирования</font><br/><font color="#696969">&nbsp;*&nbsp;именованной&nbsp;структуры</font><br/><font color="#696969">&nbsp;*&nbsp;в&nbsp;качестве&nbsp;параметров:</font><br/><font color="#696969">&nbsp;*&nbsp;@params&nbsp;-&nbsp;массив&nbsp;списка&nbsp;параметров</font><br/><font color="#696969">&nbsp;*/</font><br/><font color="#0000ff">function</font> _xmlrpc_is_struct(<font color="#cc6633">$params</font>)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$keys</font>=<a href="http://www.php.net/manual/en/function.array-keys.php">array_keys</a>(<font color="#cc6633">$params</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">foreach</font> (<font color="#cc6633">$keys</font> <font color="#0000ff">as</font> <font color="#cc6633">$k</font>=&gt;<font color="#cc6633">$v</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (<font color="#cc6633">$k</font>!=<font color="#cc6633">$v</font>) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return true</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return false</font>;<br/>}<br/><font color="#cc6633">?&gt;</font> <br/></font></code></p></blockquote>
<p>Пользоваться безобразием просто, вот примерчик постинга в блог на wordpress:</p>
<blockquote><p><code><font size="2" face="Consolas, Courier New, Courier, Monospace" color="black"><<font color="#cc6633">&lt;?php</font><br/><font color="#0000ff">require</font>(<font color="#008000">"xmlrpc.php"</font>);<br/><font color="#696969">//формируем&nbsp;массив&nbsp;с&nbsp;параметрами&nbsp;запроса</font><br/><font color="#cc6633">$content</font>=<font color="#0000ff">array</font>();<br/><font color="#cc6633">$content</font>[<font color="#008000">'title'</font>]=<font color="#008000">"Тестовая&nbsp;запись"</font>;<br/><font color="#cc6633">$content</font>[<font color="#008000">'categories'</font>] = <font color="#0000ff">array</font>(<font color="#008000">"news"</font>);<br/><font color="#cc6633">$content</font>[<font color="#008000">'description'</font>]=<font color="#008000">"Описание&nbsp;тестовой&nbsp;запись&nbsp;(то,&nbsp;что&nbsp;до&nbsp;тега&nbsp;&lt;!--more--&gt;)"</font>;<br/><font color="#cc6633">$content</font>[<font color="#008000">'mt_text_more'</font>]=<font color="#008000">"Собственно&nbsp;основная&nbsp;часть&nbsp;постинга"</font>;<br/><font color="#cc6633">$content</font>[<font color="#008000">'mt_keywords'</font>]=<font color="#008000">"ключевые,&nbsp;слова"</font>;<br/>&nbsp;<br/><font color="#696969">//формируем&nbsp;xml&nbsp;запрос</font><br/><font color="#cc6633">$request</font>=xmlrpc_request(<font color="#008000">"metaWeblog.newPost"</font>,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">array</font>(<font color="#008000">1</font>,<font color="#008000">"admin"</font>,<font color="#008000">"password"</font>,<font color="#cc6633">$content</font>,<font color="#0000ff">false</font>));<br/>&nbsp;<br/><font color="#696969">//отправляем&nbsp;серверу</font><br/>xmlrpc_send(<font color="#008000">"http://example.com/wordpress/xmlrpc.php"</font>,<font color="#cc6633">$request</font>);<br/><font color="#cc6633">?&gt;</font> <br/></font></code></p></blockquote>
<p>вроде все просто и понятно. Работает на данный момент только с кодировкой UTF-8. Собственно и затеялось как раз потому, что два предыдущих варианта напрочь отказывались нормально отправлять в UTF-8.</p>
<p>Реализованы не все типы, возможные в xmlrpc, однако мне для постинга в WordPress этого пока хватит, буде кому понадобится еще чего можете меня попинать &#8212; допишу, ну или сами, а я добавлю со ссылкой на автора <img src='http://mrdaark.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>P.S. походу wordpress чудит с кавычками. файл исходника <a href="http://dl.dropbox.com/u/1834466/xmlrpc.phps">xmlrpc.phps</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/vm0637CDbtXTfL72DLm_zaQXA3w/0/da"><img src="http://feedads.g.doubleclick.net/~a/vm0637CDbtXTfL72DLm_zaQXA3w/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/vm0637CDbtXTfL72DLm_zaQXA3w/1/da"><img src="http://feedads.g.doubleclick.net/~a/vm0637CDbtXTfL72DLm_zaQXA3w/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded><description>Вчера озаботился возможностью что-то опубликовать в блоке посредством xmlrpc из php. Проковырявшись в общей сложности часа 4 с библиотекой xmlrpc и встроенной функцией xmlrpc_encode_equest и так и не добившись нормальной работы всего этого безобразия, собрался и сегодня за 1.5 часа сделал свой велосипед &amp;#60;?php/*&amp;#160;*&amp;#160;Велосипед&amp;#160;для&amp;#160;работы&amp;#160;с&amp;#160;xmlrpc&amp;#160;*&amp;#160;версия&amp;#160;0.1beta&amp;#160;*&amp;#160;*&amp;#160;Copyright&amp;#160;(c)&amp;#160;2011&amp;#160;mrdaark.&amp;#160;*&amp;#160;Все&amp;#160;права&amp;#160;защищены&amp;#160;*&amp;#160;&amp;#160;*/&amp;#160;/*&amp;#160;*&amp;#160;Функция&amp;#160;для&amp;#160;отправки&amp;#160;запроса&amp;#160;на&amp;#160;xmlrpc&amp;#160;сервер&amp;#160;*&amp;#160;использует&amp;#160;библиотеку&amp;#160;curl&amp;#160;*&amp;#160;в&amp;#160;качестве&amp;#160;параметров:&amp;#160;*&amp;#160;@url&amp;#160;-&amp;#160;url&amp;#160;адрес&amp;#160;сервера&amp;#160;*&amp;#160;@request&amp;#160;-&amp;#160;запрос&amp;#160;формируемый&amp;#160;с&amp;#160;помощью&amp;#160;функции&amp;#160;xmlrpc_request&amp;#160;*/function xmlrpc_send($url,$request){&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(!function_exists('curl_init')) {&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;die ("Curl&amp;#160;PHP&amp;#160;package&amp;#160;not&amp;#160;installed\n");&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$ch = curl_init();&amp;#160;&amp;#160;&amp;#160;&amp;#160;curl_setopt($ch, CURLOPT_URL, $url);&amp;#160;&amp;#160;&amp;#160;&amp;#160;curl_setopt($ch, CURLOPT_HEADER, false);&amp;#160;&amp;#160;&amp;#160;&amp;#160;curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type:&amp;#160;text/xml;&amp;#160;charset=utf-8"));&amp;#160;&amp;#160;&amp;#160;&amp;#160;curl_setopt($ch, [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mrdaark.com/izobretaya-velosipedy-xmlrpc.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">6</slash:comments></item><item><title>И смех, и грех.</title><link>http://mrdaark.com/i-smex-i-grex.html</link><category>Мои новости</category><category>адский долбоебизм</category><category>ГИБДД</category><category>Псков</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mrdaark</dc:creator><pubDate>Wed, 13 Apr 2011 06:37:51 PDT</pubDate><guid isPermaLink="false">http://mrdaark.com/?p=161</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Нашел сегодня на башорге:</p>
<blockquote><p>В Пскове, если водилы попали в дтп, им нужно выложить по полтыщи деревянных с лица на пиво полицаям, чтоб товарищи гайцы приехали на место дтп в ближайшие пару часов.</p>
<p>вчера две тачки столкнулись у супермаркета аккурат напротив главного псковского здания гибдд. думали, раз так, то не придется платить дань в количестве тех самых пиццот рублей. ан нет, простояли 11 часов, пока &#171;органы&#187; не соизволили к ним свои попы вытащить. и это при том, что никаких чп и аврала в городе не было.</p>
<p>выводы сами делайте&#8230;</p></blockquote>

<p><a href="http://feedads.g.doubleclick.net/~a/wBxFEj0W5B9vGbG6Z_BSjDJZkp4/0/da"><img src="http://feedads.g.doubleclick.net/~a/wBxFEj0W5B9vGbG6Z_BSjDJZkp4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/wBxFEj0W5B9vGbG6Z_BSjDJZkp4/1/da"><img src="http://feedads.g.doubleclick.net/~a/wBxFEj0W5B9vGbG6Z_BSjDJZkp4/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded><description>Нашел сегодня на башорге: В Пскове, если водилы попали в дтп, им нужно выложить по полтыщи деревянных с лица на пиво полицаям, чтоб товарищи гайцы приехали на место дтп в ближайшие пару часов. вчера две тачки столкнулись у супермаркета аккурат напротив главного псковского здания гибдд. думали, раз так, то не придется платить дань в количестве [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mrdaark.com/i-smex-i-grex.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">9</slash:comments></item><item><title>Решение задачки для php программистов  с хабра</title><link>http://mrdaark.com/zadachka-from-habrahabr.html</link><category>Программинг</category><category>php</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mrdaark</dc:creator><pubDate>Tue, 05 Apr 2011 01:13:24 PDT</pubDate><guid isPermaLink="false">http://mrdaark.com/?p=149</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Увидел на хабре задачку при собеседовании для php программистов <a href="http://habrahabr.ru/blogs/php/116686/">http://habrahabr.ru/blogs/php/116686/</a></p>
<p>Решил попробовать сам ее решить, вроде не сложно. вместе с отладкой, сделал за ~20минут, т.е. в норматив не уложился, что херово.</p>
<p>Получилось вот так,  хз насколько это оптимально. Есть идеи что улучшить?</p>
<blockquote><p><code><font size="2" face="Consolas, Courier New, Courier, Monospace" color="black"><font color="#cc6633">&lt;?php</font><br/><font color="#0000ff">function</font> read_conf(<font color="#cc6633">$path</font>)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$f</font>=file_get_contents(<font color="#cc6633">$path</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#696969">//разбиваем&nbsp;на&nbsp;строки</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$lines</font>=<a href="http://www.php.net/manual/en/function.explode.php">explode</a>(<font color="#008000">"\n"</font>,<font color="#cc6633">$f</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$tmp</font>=<font color="#0000ff">array</font>();<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#696969">//режем&nbsp;строки&nbsp;на&nbsp;key=&gt;value</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">foreach</font>(<font color="#cc6633">$lines</font> <font color="#0000ff">as</font> <font color="#cc6633">$v</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (<a href="http://www.php.net/manual/en/function.trim.php">trim</a>(<font color="#cc6633">$v</font>)!=<font color="#008000">""</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">list</font>(<font color="#cc6633">$key</font>,<font color="#cc6633">$value</font>)=<a href="http://www.php.net/manual/en/function.explode.php">explode</a>(<font color="#008000">"="</font>,<font color="#cc6633">$v</font>,<font color="#008000">2</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$tmp</font>[<a href="http://www.php.net/manual/en/function.trim.php">trim</a>(<font color="#cc6633">$key</font>)]=<a href="http://www.php.net/manual/en/function.trim.php">trim</a>(<font color="#cc6633">$value</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}           <br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$res</font>=<font color="#0000ff">array</font>();<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#696969">//режем&nbsp;ключи&nbsp;по&nbsp;параметрам</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">foreach</font> (<font color="#cc6633">$tmp</font> <font color="#0000ff">as</font> <font color="#cc6633">$key</font>=&gt;<font color="#cc6633">$value</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$keys</font>=<a href="http://www.php.net/manual/en/function.explode.php">explode</a>(<font color="#008000">"."</font>,<font color="#cc6633">$key</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (<a href="http://www.php.net/manual/en/function.count.php">count</a>(<font color="#cc6633">$keys</font>)!=<font color="#008000">1</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#696969">//тут&nbsp;будем&nbsp;делать&nbsp;подмассивчики</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$key</font>=<a href="http://www.php.net/manual/en/function.array-pop.php">array_pop</a>(<font color="#cc6633">$keys</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$first_key</font>=<a href="http://www.php.net/manual/en/function.array-shift.php">array_shift</a>(<font color="#cc6633">$keys</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (!<font color="#0000ff">isset</font>(<font color="#cc6633">$res</font>[<font color="#cc6633">$first_key</font>])) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$res</font>[<font color="#cc6633">$first_key</font>]=<font color="#0000ff">array</font>();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$pres</font>=&amp;<font color="#cc6633">$res</font>[<font color="#cc6633">$first_key</font>];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">while</font> (<a href="http://www.php.net/manual/en/function.count.php">count</a>(<font color="#cc6633">$keys</font>)!=<font color="#008000">&nbsp;0</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{            <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$tmp_key</font>=<a href="http://www.php.net/manual/en/function.array-shift.php">array_shift</a>(<font color="#cc6633">$keys</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (!<font color="#0000ff">isset</font>(<font color="#cc6633">$pres</font>[<font color="#cc6633">$tmp_key</font>]))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$pres</font>[<font color="#cc6633">$tmp_key</font>]=<font color="#0000ff">array</font>();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$pres</font>=&amp;<font color="#cc6633">$pres</font>[<font color="#cc6633">$tmp_key</font>];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$pres</font>[<font color="#cc6633">$key</font>]=<font color="#cc6633">$value</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">else</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">$res</font>[<font color="#cc6633">$key</font>]=<font color="#cc6633">$value</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font> <font color="#cc6633">$res</font>;<br/>}<br/><a href="http://www.php.net/manual/en/function.print-r.php">print_r</a>(read_conf(<font color="#008000">"conf.ini"</font>));<br/><font color="#cc6633">?&gt;</font> <br/></font></code></p></blockquote>

<p><a href="http://feedads.g.doubleclick.net/~a/7KLaXNc0rfM6-ElidY2BV2IwZYs/0/da"><img src="http://feedads.g.doubleclick.net/~a/7KLaXNc0rfM6-ElidY2BV2IwZYs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/7KLaXNc0rfM6-ElidY2BV2IwZYs/1/da"><img src="http://feedads.g.doubleclick.net/~a/7KLaXNc0rfM6-ElidY2BV2IwZYs/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded><description>Увидел на хабре задачку при собеседовании для php программистов http://habrahabr.ru/blogs/php/116686/ Решил попробовать сам ее решить, вроде не сложно. вместе с отладкой, сделал за ~20минут, т.е. в норматив не уложился, что херово. Получилось вот так,  хз насколько это оптимально. Есть идеи что улучшить? &amp;#60;?phpfunction read_conf($path){&amp;#160;&amp;#160;&amp;#160;&amp;#160;$f=file_get_contents($path);&amp;#160;&amp;#160;&amp;#160;&amp;#160;//разбиваем&amp;#160;на&amp;#160;строки&amp;#160;&amp;#160;&amp;#160;&amp;#160;$lines=explode("\n",$f);&amp;#160;&amp;#160;&amp;#160;&amp;#160;$tmp=array();&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//режем&amp;#160;строки&amp;#160;на&amp;#160;key=&amp;#62;value&amp;#160;&amp;#160;&amp;#160;&amp;#160;foreach($lines as $v)&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (trim($v)!="")&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;list($key,$value)=explode("=",$v,2);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$tmp[trim($key)]=trim($value);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&amp;#160;&amp;#160;&amp;#160;&amp;#160;} &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$res=array();&amp;#160;&amp;#160;&amp;#160;&amp;#160;//режем&amp;#160;ключи&amp;#160;по&amp;#160;параметрам&amp;#160;&amp;#160;&amp;#160;&amp;#160;foreach ($tmp as $key=&amp;#62;$value)&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$keys=explode(".",$key);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (count($keys)!=1)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//тут&amp;#160;будем&amp;#160;делать&amp;#160;подмассивчики&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$key=array_pop($keys);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$first_key=array_shift($keys);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if (!isset($res[$first_key])) &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$res[$first_key]=array();&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$pres=&amp;#38;$res[$first_key];&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;while (count($keys)!=&amp;#160;0)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;{ [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mrdaark.com/zadachka-from-habrahabr.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments></item><item><title>Переезд на новый ВДС</title><link>http://mrdaark.com/pereezd-na-novyj-vds.html</link><category>Мои новости</category><category>freebsd</category><category>блог</category><category>миграция</category><category>сайты</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mrdaark</dc:creator><pubDate>Mon, 29 Nov 2010 13:06:38 PST</pubDate><guid isPermaLink="false">http://mrdaark.ru/?p=145</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Собственно сегодня с утреца получил письмо от <a href="http://firstvds.ru/index.html?from=19997">хостера</a>, о том что freebsd 6 больше не комильфо и пора бы обновить сервер до 8ки (а мне все лень было):</p>
<p><a href="http://mrdaark.ru/wp-content/uploads/2010/11/pereezd.png"><img class="aligncenter size-full wp-image-146" title="письмо про переезд на freebsd 8" src="http://mrdaark.ru/wp-content/uploads/2010/11/pereezd.png" alt="" width="954" height="518" /></a></p>
<p>вообщем пол дня продолбался, но все перенес, заодно обнаружилось, что я забыл продлить домен этого блога и он радостно уже неделю был в дауне, посему быстренько <a href="http://webst.ru/?id=6414 ">продлил домен</a> и теперь все работает. субъективно работает быстрее чем раньше, но пока сложно сказать, посмотрим что будет когда появиться хоть какая то нагрузка&#8230;</p>
<p>P.S. В посте аж две реферальные ссылки, по ним можно <del datetime="2010-11-29T20:53:09+00:00">не</del> нажимать <img src='http://mrdaark.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/jsU-uQYAon6Eme72tFZzUu7kFDs/0/da"><img src="http://feedads.g.doubleclick.net/~a/jsU-uQYAon6Eme72tFZzUu7kFDs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/jsU-uQYAon6Eme72tFZzUu7kFDs/1/da"><img src="http://feedads.g.doubleclick.net/~a/jsU-uQYAon6Eme72tFZzUu7kFDs/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded><description>Собственно сегодня с утреца получил письмо от хостера, о том что freebsd 6 больше не комильфо и пора бы обновить сервер до 8ки (а мне все лень было): вообщем пол дня продолбался, но все перенес, заодно обнаружилось, что я забыл продлить домен этого блога и он радостно уже неделю был в дауне, посему быстренько продлил [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mrdaark.com/pereezd-na-novyj-vds.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments></item><item><title>Рабочая суббота</title><link>http://mrdaark.com/rabochaya-subbota.html</link><category>Мои новости</category><category>адский долбоебизм</category><category>бред</category><category>работа</category><category>суббота</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mrdaark</dc:creator><pubDate>Sat, 13 Nov 2010 04:00:45 PST</pubDate><guid isPermaLink="false">http://mrdaark.ru/?p=135</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Это самое настоящее вселенское зло!</p>
<p><img class="aligncenter size-medium wp-image-136" title="работа убивает" src="http://mrdaark.ru/wp-content/uploads/2010/11/rabota-ubivaet-300x187.jpg" alt="работа убивает" width="300" height="187" /></p>
<p>Сижу уже который час читаю БОР, потому что просто безобразно нечем заняться.</p>
<p>это бесполезнейшее времяубивание! я тупею! я скоро стану как вареный овощ!!</p>
<p><img class="aligncenter size-medium wp-image-137" title="овощ" src="http://mrdaark.ru/wp-content/uploads/2010/11/hren-300x199.jpg" alt="овощ" width="300" height="199" /></p>
<p>Вообщем отпустите меня пораньше! не могу больше заниматься этой фигней! причем в прямом смысле этого слова!</p>
<p><img class="aligncenter size-medium wp-image-138" title="Лопата" src="http://mrdaark.ru/wp-content/uploads/2010/11/lopata-245x300.jpg" alt="Лопата" width="245" height="300" />Смеяться тут <img src='http://mrdaark.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Надо сваливать домой, там очередная серия хауса, сегодня вероятно выйдет The Big Bang Theory, вообщем есть над чем оттопыриться.</p>
<p>П.Сы.: А у гугла сегодня логотипчег хорош</p>
<p><img class="aligncenter size-medium wp-image-139" title="Роберт Льюис Стивенсон" src="http://mrdaark.ru/wp-content/uploads/2010/11/stevenson10-hp-300x110.jpg" alt="Роберт Льюис Стивенсон" width="300" height="110" />не правда ли? <img src='http://mrdaark.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: center;"><strong>Хочу домой!!!</strong></p>

<p><a href="http://feedads.g.doubleclick.net/~a/b9CMVd26mdl2RIj9UjtAjaqjLEY/0/da"><img src="http://feedads.g.doubleclick.net/~a/b9CMVd26mdl2RIj9UjtAjaqjLEY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/b9CMVd26mdl2RIj9UjtAjaqjLEY/1/da"><img src="http://feedads.g.doubleclick.net/~a/b9CMVd26mdl2RIj9UjtAjaqjLEY/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded><description>Это самое настоящее вселенское зло! Сижу уже который час читаю БОР, потому что просто безобразно нечем заняться. это бесполезнейшее времяубивание! я тупею! я скоро стану как вареный овощ!! Вообщем отпустите меня пораньше! не могу больше заниматься этой фигней! причем в прямом смысле этого слова! Смеяться тут Надо сваливать домой, там очередная серия хауса, сегодня вероятно [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mrdaark.com/rabochaya-subbota.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments></item><item><title>Twitter хакнули!</title><link>http://mrdaark.com/twitter-xaknuli.html</link><category>Мои новости</category><category>hack</category><category>twitter</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mrdaark</dc:creator><pubDate>Thu, 17 Dec 2009 22:47:58 PST</pubDate><guid isPermaLink="false">http://mrdaark.ru/?p=132</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Сегодня с &#171;радостью&#187; обнаружил дефейс главной страницы популярного сервиса <a href="http://twitter.com">twitter.com</a></p>
<p><img src="http://dl.dropbox.com/u/1834466/twitter.png" alt="twitter дефейс" /></p>

<p><a href="http://feedads.g.doubleclick.net/~a/PD-ToMljkPPOp5nDLwICIGTRQg8/0/da"><img src="http://feedads.g.doubleclick.net/~a/PD-ToMljkPPOp5nDLwICIGTRQg8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/PD-ToMljkPPOp5nDLwICIGTRQg8/1/da"><img src="http://feedads.g.doubleclick.net/~a/PD-ToMljkPPOp5nDLwICIGTRQg8/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded><description>Сегодня с &amp;#171;радостью&amp;#187; обнаружил дефейс главной страницы популярного сервиса twitter.com</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mrdaark.com/twitter-xaknuli.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">22</slash:comments></item><item><title>Python: Простой пример использования twisted</title><link>http://mrdaark.com/python-prostoj-primer-ispolzovaniya-twisted.html</link><category>Программинг</category><category>python</category><category>twisted</category><category>обучение</category><category>сайты</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mrdaark</dc:creator><pubDate>Thu, 16 Jul 2009 03:35:07 PDT</pubDate><guid isPermaLink="false">http://mrdaark.ru/?p=128</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Надо мне написать небольшой сервер, который будет принимать некие данные, сохранять их, а потом по определеным командам отдавать. Сейчас есть нечто такое же, только реализованное на LAMP, работает прямо скажем не очень быстро. Можно конечно сделать какое-то кеширование, memcache и т.д., но мне не хватает свободы маневра в текущей структуре, поэтому я решил таки переписать серверную часть, ибо клиентская вполне себе меня удовлетворяет.</p>
<p>Вообще решил сделать отдельный сервис, висящий на отличном от 80 порту и выполняющий все что мне надо. Писать решил с использование сетевого фреймворка twisted. Штука прикольная, но вот незадача, нормальной документации и примеров как то нету, того что на их сайте есть, мне явно не хватает, для того чтобы понять как и что нужно делать. Поэтому решил для начала написать простенький примерчик, который будет висеть и слушать запросы и в зависимости от url увеличивать или уменьшать внутренний счетчик.</p>
<p>Вот что получилось:</p>
<blockquote><p><code><font size="2" face="Consolas, Courier New, Courier, Monospace" color="black">__author__=<font color="#008000">"mrdaark"</font><br/>__date__ =<font color="#008000">"$15.07.2009&nbsp;21:31:01$"</font><br/>&nbsp;<br/><font color="#0000ff">from</font> twisted.web <font color="#0000ff">import</font> server, resource<br/><font color="#0000ff">from</font> twisted.internet <font color="#0000ff">import</font> reactor<br/><font color="#0000ff">import</font> string<br/>&nbsp;<br/><font color="#0000ff">class</font> <font color="#cc6633">Consult</font>():<br/>&nbsp;&nbsp;&nbsp;&nbsp;count=<font color="#008000">&nbsp;0</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">def</font> <font color="#cc6633">add</font>(self,x=<font color="#008000">1</font>):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>self</b>.__class__.count+=x<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">def</font> <font color="#cc6633">remove</font>(self,x=<font color="#008000">1</font>):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>self</b>.__class__.count-=x<br/>&nbsp;<br/><font color="#0000ff">class</font> <font color="#cc6633">Server</font>(<b>resource</b>.Resource):<br/>&nbsp;&nbsp;&nbsp;&nbsp;isLeaf = True<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">def</font> <font color="#cc6633">getChild</font>(self, name, request):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> name == <font color="#008000">''</font>:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font> self<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font> Resource.<font color="#cc6633">getChild</font>(self, name, request)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">def</font> <font color="#cc6633">render</font>(self, request):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;urlpath=<b>string</b>.split(request.path[<font color="#008000">1</font>:],<font color="#008000">'/'</font>)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path=urlpath[<font color="#008000">&nbsp;0</font>]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> <b>len</b>(urlpath)&gt;<font color="#008000">1</font>:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r=<b>int</b>(urlpath[<font color="#008000">1</font>])<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">else</font>:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r=<font color="#008000">1</font><br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str=<font color="#008000">'&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;'</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c=<font color="#cc6633">Consult</font>()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (path==<font color="#008000">'add'</font>):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.<font color="#cc6633">add</font>(r)  <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">elif</font> (path==<font color="#008000">'remove'</font>):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.<font color="#cc6633">remove</font>(r)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str+= <font color="#008000">"x:&nbsp;%d&lt;br&nbsp;/&gt;"</font> % (c.count)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str+=<font color="#008000">'&lt;a&nbsp;href="/add/1"&gt;add&nbsp;1&lt;/a&gt;&lt;br&nbsp;/&gt;&lt;a&nbsp;href="/remove/1"&gt;remove&nbsp;1&lt;/a&gt;&lt;/body&gt;&lt;/html&gt;'</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font> str<br/>&nbsp;<br/><font color="#0000ff">def</font> <font color="#cc6633">main</font>():<br/>&nbsp;&nbsp;&nbsp;&nbsp;site = server.Site(<font color="#cc6633">Server</font>())<br/>&nbsp;&nbsp;&nbsp;&nbsp;reactor.listenTCP(<font color="#008000">8080</font>, site)<br/>&nbsp;&nbsp;&nbsp;&nbsp;reactor.run()<br/>&nbsp;<br/><font color="#0000ff">if</font> __name__ == <font color="#008000">"__main__"</font>:<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cc6633">main</font>() <br/>&nbsp;<br/></font></code></p></blockquote>
<p>Штука запускается, вешается на 8080 порт и принимает http запросы. Увеличивает и уменьшает внутренний счетчик в зависимости о второго параметра в урл, т.е. формат урл таков: /<функция>/<параметр>. По-умолчанию, параметр равен единице.</p>
<p>Вот такая штука вообщем получилась. Теперь буду усложнять этот примерчик, чтобы он сохранял и выводил список элементов, так и родится нужный мне функционал. <img src='http://mrdaark.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/o6lYDT2UsD4hBsD-Qxq8_AGnlAc/0/da"><img src="http://feedads.g.doubleclick.net/~a/o6lYDT2UsD4hBsD-Qxq8_AGnlAc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/o6lYDT2UsD4hBsD-Qxq8_AGnlAc/1/da"><img src="http://feedads.g.doubleclick.net/~a/o6lYDT2UsD4hBsD-Qxq8_AGnlAc/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded><description>Надо мне написать небольшой сервер, который будет принимать некие данные, сохранять их, а потом по определеным командам отдавать. Сейчас есть нечто такое же, только реализованное на LAMP, работает прямо скажем не очень быстро. Можно конечно сделать какое-то кеширование, memcache и т.д., но мне не хватает свободы маневра в текущей структуре, поэтому я решил таки переписать [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mrdaark.com/python-prostoj-primer-ispolzovaniya-twisted.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments></item><item><title>IT-карма: Я почти бог :)</title><link>http://mrdaark.com/it-karma-ya-pochti-bog.html</link><category>Мои новости</category><category>юмор</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mrdaark</dc:creator><pubDate>Wed, 15 Jul 2009 23:40:02 PDT</pubDate><guid isPermaLink="false">http://mrdaark.ru/?p=125</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Прикольно так, хотя я не знал ответов на как минимум 3 вопроса <img src='http://mrdaark.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="200" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="false" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://ru.intel.com/business/community/oracle/widget_oracle.swf?code=Qgr%7Cw3QlIe3lTeSV" /><param name="allowfullscreen" value="false" /><embed type="application/x-shockwave-flash" width="400" height="200" src="http://ru.intel.com/business/community/oracle/widget_oracle.swf?code=Qgr%7Cw3QlIe3lTeSV" allowscriptaccess="always" allowfullscreen="false"></embed></object></p>

<p><a href="http://feedads.g.doubleclick.net/~a/r-LvNjJbbrkeA4BeVvg5PJSB_sg/0/da"><img src="http://feedads.g.doubleclick.net/~a/r-LvNjJbbrkeA4BeVvg5PJSB_sg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/r-LvNjJbbrkeA4BeVvg5PJSB_sg/1/da"><img src="http://feedads.g.doubleclick.net/~a/r-LvNjJbbrkeA4BeVvg5PJSB_sg/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded><description>Прикольно так, хотя я не знал ответов на как минимум 3 вопроса</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mrdaark.com/it-karma-ya-pochti-bog.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">13</slash:comments></item></channel></rss>

