<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6470773386772651666</id><updated>2024-08-30T02:12:37.451+03:00</updated><category term="юмор"/><category term="мысли вслух"/><category term="тем временем"/><category term="IE"/><category term="верстка"/><category term="видео"/><category term="хаки"/><category term="javascript"/><category term="php"/><category term="грабли"/><category term="полезные ссылки"/><category term="сортировка"/><category term="языки программирования"/><category term="Linux"/><category term="Pligg"/><category term="canvas"/><category term="curl"/><category term="guzzle"/><category term="guzzlehhtp"/><category term="kohana"/><category term="nginx"/><category term="snippets"/><category term="spaw"/><category term="useful"/><category term="администрирование"/><category term="веб-дизайн"/><category term="кэширование"/><category term="русификация"/><category term="фриланс"/><title type='text'>Айтибложек</title><subtitle type='html'>веб-программиста. Не только о программировании.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-6054306691103916333</id><published>2016-04-13T09:16:00.000+03:00</published><updated>2016-04-14T07:18:14.462+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="curl"/><category scheme="http://www.blogger.com/atom/ns#" term="guzzle"/><category scheme="http://www.blogger.com/atom/ns#" term="guzzlehhtp"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="грабли"/><category scheme="http://www.blogger.com/atom/ns#" term="хаки"/><title type='text'>Отправка GuzzleHttp POST параметров с одинаковыми именами через CURLOPT_POSTFIELDS</title><content type='html'>Понадобилось отправлять данные в один сторонний API методом POST. Тривиальная задача, которая потребовала довольно напряженных поисков решения.&lt;br /&gt;
&lt;br /&gt;
Дело в том, что API, c которыми мне часто приходится работать, обычно довольно сложные и реализовать отправку множества разнообразных запросов голым curl крайне непродуктивно. Поэтому я с самого начала решил работать с API через библиотеку &lt;a href=&quot;https://github.com/guzzle/guzzle&quot;&gt;GuzzleHttp&lt;/a&gt;, которая взяла на себя все вопросы базовой подготовки запросов и их отправки различными способами, в зависимости от метода API. Такой подход позволяет сконцентрироваться на подготовке параметров запроса и главным образом всё, что оставалось для комфортной разработки — прописать соответствия методов HTTP методам API.&lt;br /&gt;
&lt;br /&gt;
Грабли нашлись в тот момент, когда в спецификации API обнаружилось, что в POST-метод надо отправлять данные в формате application/x-www-form-urlencoded, т.е. сформированные так же, как обычно формируются GET-строки параметров. Но при этом все параметры должны иметь одно и то же имя. То есть POST запрос должен был выглядеть примерно так:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot; language-php&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&lt;/span&gt;param=value1&amp;amp;param=value2&amp;amp;param=value3&lt;/pre&gt;
&lt;br /&gt;
Привыкнув к тому, что в подавляющем большинстве систем в POST всегда отдаются параметры с разными именами и достаточно отправить их в виде обычного ассоциативного массива PHP, меня этот формат передачи параметров поначалу удивил, но уже совсем скоро начал серьезно раздражать, т.к. очевидного решения для использования в связке с GuzzleHttp не было ни в голове, ни в гугле. GET-запрос с такой строкой передать проще простого - достаточно лишь собрать строку не через build_http_query, а самостоятельно, ручками. Но с POST такое не прокатывает. Одна из обычных практик отправки POST через GuzzleHttp - это создать клиента, настроенного на нужный адрес метода API, а затем передать ему параметр URI и сам запрос, примерно следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span class=&quot;nv&quot;&gt;$client&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;GuzzleHttp\Client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&#39;base_uri&#39;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&#39;https://foo.com/api/&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;; &lt;/pre&gt;
&lt;pre class=&quot; language-php&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$client&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&#39;POST&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; $uri&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&#39;body&#39;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$&lt;/span&gt;requestArray&lt;span class=&quot;p&quot;&gt;]);&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot; language-php&quot;&gt;&lt;span class=&quot;p&quot;&gt;//или, что то же самое:&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot; language-php&quot;&gt;$client-&amp;gt;post($uri, [&#39;body&#39; =&amp;gt; $requestArray&#39;]); &lt;span class=&quot;p&quot;&gt;&lt;/span&gt; &lt;/pre&gt;
&lt;pre class=&quot; language-php&quot;&gt;&amp;nbsp; &lt;/pre&gt;
Однако все-таки гугл не был совсем бесполезен - было найдено &lt;a href=&quot;https://davidwalsh.name/curl-post&quot;&gt;решение&lt;/a&gt;, которое позволяет передавать POST в виде строки url-encoded параметров. Общая идея была в том, чтобы передавать данные не в формате miltipart/form-data, а в application/x-www-form-urlencoded. При таком раскладе можно отправить POST&#39;ом предварительно сформированную строку параметров через&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot; language-php&quot;&gt;&lt;span class=&quot;token function&quot;&gt;curl_setopt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$ch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;CURLOPT_POSTFIELDS&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$fields_string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
Мысль о том, что придется переделывать всё на использование Curl, очень не понравилась - уже была написана большая часть кода, да и отказываться от использования удобной библиотеки совсем не хотелось. Однако надо помнить о том, что GuzzleHttp, как и многие другие компоненты - всего лишь обертка над более-менее низкоуровневыми интерфейсами. Хорошенько покопавшись в коде пакета, я нашел место, в котором устанавливался параметр&lt;span class=&quot;token constant&quot;&gt; CURLOPT_POSTFIELDS. В итоге работающее решение нашлось, хотя и является, по сути, хаком (подробнее о вытекающих из этого последствиях читайте в последнем абзаце) и выглядит несколько неуклюжим по сравнению с обычными вызовами&lt;/span&gt;, которые я приводил выше:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot; language-php&quot;&gt;$client-&amp;gt;post($uri, [&lt;/pre&gt;
&lt;pre class=&quot; language-php&quot;&gt;   &#39;body&#39; =&amp;gt; $requestString,&lt;/pre&gt;
&lt;pre class=&quot; language-php&quot;&gt;   &#39;curl&#39; =&amp;gt; [&lt;/pre&gt;
&lt;pre class=&quot; language-php&quot;&gt;      &#39;body_as_string&#39; =&amp;gt; true&lt;/pre&gt;
&lt;pre class=&quot; language-php&quot;&gt;   ],&lt;/pre&gt;
&lt;pre class=&quot; language-php&quot;&gt;   &#39;_conditional&#39; =&amp;gt; [&lt;/pre&gt;
&lt;pre class=&quot; language-php&quot;&gt;      &#39;Content-Type&#39; =&amp;gt; &#39;application/x-www-form-urlencoded&#39;&lt;/pre&gt;
&lt;pre class=&quot; language-php&quot;&gt;   ]&lt;/pre&gt;
&lt;pre class=&quot; language-php&quot;&gt;]);&lt;/pre&gt;
&lt;pre class=&quot; language-php&quot;&gt;
&lt;/pre&gt;
&lt;pre class=&quot; language-php&quot;&gt;&lt;/pre&gt;
Когда решение нашлось, стало грустно от осознания того количества времени, которое было потрачено на его поиски. Как, впрочем, всегда бывает, когда оно умещается в пару строчек. Есть подозрение, что такая ситуация встречается редко, но тем не менее, вполне вероятна и еще у кого-то. Именно поэтому я и решил опубликовать работающее решение для тех, кто на эти грабли в будущем наткнется.&lt;br /&gt;
&lt;br /&gt;
На всякий случай добавлю, что версия пакета GuzzleHttp, которую я использовал - 6.2.2. Параметры body_as_string и _conditional не относятся к &lt;a href=&quot;http://docs.guzzlephp.org/en/latest/request-options.html&quot;&gt;задокументированным&lt;/a&gt;, поэтому в более поздних версиях этот хак может уже не работать. На это также намекает и то, что в прежних версиях работа с подобными запросами была организована немного иначе. Постараюсь обновить здесь информацию, если появится что-то новое.</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/6054306691103916333/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2016/04/guzzlehttp-post-curloptpostfields.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/6054306691103916333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/6054306691103916333'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2016/04/guzzlehttp-post-curloptpostfields.html' title='Отправка GuzzleHttp POST параметров с одинаковыми именами через CURLOPT_POSTFIELDS'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-1415577659977032716</id><published>2016-03-21T07:29:00.001+03:00</published><updated>2016-04-13T09:41:53.246+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="canvas"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><title type='text'>ВНЕЗАПНО решил поиграть с Canvas</title><content type='html'>Если вдруг работаю с примитивами без особой цели, то порой люблю заморочиться генерацией более-менее замысловатых картинок. В этот раз получилось нечто типа камеры Вильсона (хотя без &quot;опадания&quot; треков это больше похоже на результат применения фотоэмульсионного метода, переведенный в позитив %)). Без разнообразия было скучновато, поэтому решил добавить цвет, поперечные штрихи и прочие штуки. Раньше не задумывался, но оказывается, не так-то просто сделать плавный переход цвета от одного к другому по мере рисования трека, если цвет надо генерить в шестнадцатиричном формате, как в CSS (а здесь для каждого трека цвет задается индивидуально). И поперечные штрихи на треках меня долго не удовлетворяли своей недостаточной перпендикулярностью к треку. Пришлось даже вспоминать тригонометрию, — но обошлось в итоге без нее.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-9kdUpeGJXgaeg9jcxpMBMABQtMpV9tYa42WE1LlPq882Zg_bMjR7eJHUzQK6gpn7hhk2yrmyskel9f3gjeAJzdXe_3aPx-Y9Va-7xLfQFxITXWT48Fz1GqemA9GoJMnQwpspa5HW-Rw/s1600/radioactive.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;342&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-9kdUpeGJXgaeg9jcxpMBMABQtMpV9tYa42WE1LlPq882Zg_bMjR7eJHUzQK6gpn7hhk2yrmyskel9f3gjeAJzdXe_3aPx-Y9Va-7xLfQFxITXWT48Fz1GqemA9GoJMnQwpspa5HW-Rw/s640/radioactive.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Код, конечно же, тут просто так не разместить. Поэтому сохранил на &lt;a href=&quot;https://jsfiddle.net/kossmoss/o1kt320f/&quot; target=&quot;_blank&quot;&gt;jsfiddle&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/1415577659977032716/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2016/03/canvas.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1415577659977032716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1415577659977032716'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2016/03/canvas.html' title='ВНЕЗАПНО решил поиграть с Canvas'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-9kdUpeGJXgaeg9jcxpMBMABQtMpV9tYa42WE1LlPq882Zg_bMjR7eJHUzQK6gpn7hhk2yrmyskel9f3gjeAJzdXe_3aPx-Y9Va-7xLfQFxITXWT48Fz1GqemA9GoJMnQwpspa5HW-Rw/s72-c/radioactive.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-1916548886977293814</id><published>2013-12-17T18:56:00.003+04:00</published><updated>2013-12-17T18:58:00.696+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="юмор"/><title type='text'>Пиши код блять!</title><content type='html'>Сегодня я расскажу вам об уникальной методологии разработки ПО. Уверяю вас, она произведёт настоящую революцию в нашей индустрии. Почему? Да потому что она разительно отличается от тех теорий, которыми вас досыта накормили заумные книжки и дурацкие статьи в интернетах. Существующие методологии заставляют вас запоминать сотни баззвордов, высчитывать какие-то непонятные метрики или даже (о ужас!) предлагают пустить работу на самотёк и сделать вашу команду самоорганизующейся.&lt;br /&gt;
&lt;br /&gt;
Наша методология гораздо проще и эффективнее. Она предлагает вам сконцентрироваться всего на одной, но очень важной вещи (чтобы случайно не забыть, на какой именно, мы даже вынесли эту вещь в название методологии). Итак, встречайте: инновационная методология разработки под названием…&lt;br /&gt;
Пиши код блять!&lt;br /&gt;
&lt;br /&gt;
Именно так. Пиши код блять!&lt;br /&gt;
&lt;br /&gt;
Как мы добавляем фичи в проект? Мы блять пишем код!&lt;br /&gt;
&lt;br /&gt;
Как у нас поставлено тестирование? Мы блять пишем автотесты!&lt;br /&gt;
&lt;br /&gt;
Как мы умудряемся поставлять релизы в срок и в рамках бюджета? Мы блять пишем код качественно и быстро!&lt;br /&gt;
&lt;br /&gt;
Почему наши программисты счастливы и с удовольствием ходят на работу? Потому что они блять пишут код и не отвлекаются на всякую херню!&lt;br /&gt;
&lt;br /&gt;
Конечно, на деле не все так просто, Одной идеи совершенно недостаточно для того, чтобы перестроить всю вашу команду. Поэтому вот вам пошаговая инструкция для внедрения нашей замечательной методологии:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Выпишите список всей той хрени, которая должна входить в ваш продукт&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Реализуйте всю эту хрень путем блять написания кода&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Протестируйте написанное&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Если что-то работает неправильно — то напишите блять правильный код!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После п.4 немедленно переходите к п.1. Повторять до достижения необходимого результата.&lt;br /&gt;
&lt;br /&gt;
Здорово, правда? Помните, что написание кода — это блять самая важная вещь во всём процессе разработки! А все прочие идеи, которые вы могли видеть в конкурирующих методологиях, я предлагаю подытожить вот таким принципом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Менеджер, твою мать, облегчи жизнь программисту!&lt;br /&gt;
&lt;br /&gt;
Чтобы программисты могли блять писать код, менеджеры, мать их, должны по возможности облегчать программистам жизнь. Менеджер, мать его, должен делать всё возможное, чтобы код блять писался хорошо: отслеживать процесс написания блять кода, заботиться о том, чтобы заказчики вовремя платили за всю написанную нами хрень, и (самое главное!) вовремя пополнять запасы чая и блять печенек.&lt;br /&gt;
&lt;br /&gt;
Короче говоря: менеджер, мать его, должен заниматься всем, что напрямую не относится к написанию блять кода.&lt;br /&gt;
&lt;br /&gt;
Подробная пошаговая инструкция для, мать их, менеджеров, выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Понять, что вообще хочет заказчик, и рассказать об этом программистам&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Сделать всё, чтобы программистам было блять комфортно писать код&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Если тот код, что мы блять написали — это не совсем то, что хочет заказчик, то нужно снова сказать об этом программистам&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Уверяю вас, эта новая методология изменит жизнь вашей команды. Я искренне верю в неё и считаю её единственно правильной. Почему? Да потому что в нашей индустрии есть только одно действительно важное занятие: писать код блять!&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://factorized.tumblr.com/post/4180288873/programming-motherfucker&quot;&gt;http://factorized.tumblr.com/post/4180288873/programming-motherfucker&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/1916548886977293814/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2013/12/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1916548886977293814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1916548886977293814'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2013/12/blog-post.html' title='Пиши код блять!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-7572470398161484782</id><published>2013-06-20T16:23:00.001+04:00</published><updated>2013-06-20T16:23:37.119+04:00</updated><title type='text'>Я не джавист, но считаю, что это круто.</title><content type='html'>&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;270&quot; src=&quot;//www.youtube.com/embed/E3418SeWZfQ&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/7572470398161484782/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2013/06/blog-post_20.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/7572470398161484782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/7572470398161484782'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2013/06/blog-post_20.html' title='Я не джавист, но считаю, что это круто.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-7699981397228243207</id><published>2013-04-29T16:43:00.001+04:00</published><updated>2013-04-29T16:44:52.874+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="юмор"/><title type='text'></title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9M4ACWNCnzhZwYHQjCK5N-0O6NvelhNpfOSacQamyoEgJUYwca6D7-1KT8UVQS5NcFyx6krItyYeyalsd-1aDeX-xWpTsR0MSxl4EA20MVyc0n0wmCmqvceSBOxikXeXqc8nrq_qCl60/s1600/123.jpeg&quot; /&gt;</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/7699981397228243207/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2013/04/blog-post_29.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/7699981397228243207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/7699981397228243207'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2013/04/blog-post_29.html' title=''/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9M4ACWNCnzhZwYHQjCK5N-0O6NvelhNpfOSacQamyoEgJUYwca6D7-1KT8UVQS5NcFyx6krItyYeyalsd-1aDeX-xWpTsR0MSxl4EA20MVyc0n0wmCmqvceSBOxikXeXqc8nrq_qCl60/s72-c/123.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-3576844634020112518</id><published>2013-04-16T13:45:00.003+04:00</published><updated>2013-04-16T13:58:10.244+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="сортировка"/><category scheme="http://www.blogger.com/atom/ns#" term="юмор"/><title type='text'></title><content type='html'>&lt;a href=&quot;https://plus.google.com/u/0/116020245852175338594/posts/LVykkjaHrLQ&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;http://i.imgur.com/xQbsWpL.png&quot; /&gt;&lt;/a&gt;
Хрен с ним, со смыслом, — главное, код красиво написан. Интересно было бы еще и на sorted() посмотреть )</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/3576844634020112518/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2013/04/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/3576844634020112518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/3576844634020112518'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2013/04/blog-post.html' title=''/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-6834323054203437927</id><published>2012-11-19T05:04:00.000+04:00</published><updated>2012-12-20T19:41:57.022+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="snippets"/><category scheme="http://www.blogger.com/atom/ns#" term="useful"/><title type='text'>Полезный скриптик для Chrome Gestures</title><content type='html'>В интернете порой попадаются своеобразно сверстанные сайты, в дизайне которых отсутствуют ссылки постраничной навигации вроде &quot;← Назад | Вперед →&quot; и т.п. Однако эти сайты иногда интересны настолько, что я мирюсь с необходимостью постоянно клацать в адресную строку и менять цифру, означающую номер страницы, чтобы попасть туда, куда нужно.&lt;br /&gt;
Но рано или поздно это надоедает (а в последнее время я видел немало таких сайтов на tumblr&#39;e) и хочется упростить себе жизнь. Раньше, когда браузером для серфинга у меня был лишь Firefox, я пользовался в таких случаях расширением&amp;nbsp;&lt;a href=&quot;https://addons.mozilla.org/ru/firefox/addon/all-in-one-gestures/&quot;&gt;All-in-One-Gestures&lt;/a&gt;, которое имеет функцию &quot;Increment/decrement digit in URL&quot;, срабатывающую при выполнении&amp;nbsp;мышью&amp;nbsp;определенного жеста и меняющую последнюю цифру в адресе страницы автоматически.&lt;br /&gt;
Теперь же, когда для серфинга я очень часто использую Chrome и&amp;nbsp;соответствующее&amp;nbsp;расширение для жестов —&amp;nbsp;&lt;a href=&quot;https://chrome.google.com/webstore/detail/gestures-for-chrometm/jpkfjicglakibpenojifdiepckckakgk&quot;&gt;Gestures for Chrome&lt;/a&gt;, мне захотелось иметь подобный функционал и в нем. Плагин сам по себе эту функцию не предлагает, однако в нем имеется возможность использовать пользовательские скрипты. Собственно, после того, как я захотел иметь такую штуку, оставалось только придумать удобные жесты и назначить им следующие коды:&lt;br /&gt;
&lt;pre&gt;m=/(.*\D[0]*)([\d]+)(.*)/g.exec(location.href);if(m)document.location=m[1]+(~~m[2]-1)+m[3];&lt;/pre&gt;
и
&lt;br /&gt;
&lt;pre&gt;m=/(.*\D[0]*)([\d]+)(.*)/g.exec(location.href);if(m)document.location=m[1]+(~~m[2]+1)+m[3];
&lt;/pre&gt;
Возможно, кому-нибудь такая штука также пригодится.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;UPD:&lt;/b&gt; кстати, ничто не мешает эти же скрипты использовать в виде обычных букмарклетов - достаточно создать закладки, вместо URL у которых указать вышеприведенные скрипты, только в URL вместо http:// указать протокол javascript:,
чтобы получилось
&lt;pre&gt;javascript:m=/(.*\D[0]*)([\d]+)(.*)/g.exec(location.href);if(m)document.location=m[1]+(~~m[2]+1)+m[3];
&lt;/pre&gt; </content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/6834323054203437927/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2012/11/chrome-gestures.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/6834323054203437927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/6834323054203437927'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2012/11/chrome-gestures.html' title='Полезный скриптик для Chrome Gestures'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-3376288118784687843</id><published>2012-11-13T23:14:00.000+04:00</published><updated>2012-11-13T23:14:01.317+04:00</updated><title type='text'>Yii: динамическое отключение профилирования заросов</title><content type='html'>Столкнулся в Yii с проблемами выделения памяти процессам, в которых осуществляется большое (измеряемое десятками тысяч) количество запросов к базе данных.&lt;br /&gt;
&lt;br /&gt;
При включенном профилировании каждый запрос попадает в лог профайлера (а порой и не одного). При этом лог не очищается, пока процесс не будет завершен. В результате с каждым запросом увеличивается количество памяти, потребляемое приложением и в итоге мы вылетаем с ошибкой выделения памяти&lt;br /&gt;
&lt;br /&gt;
Чтобы побороть это дело, не отключая профайлинг в принципе (например, через конфиги), можно сделать такой финт ушами:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
function dummyFunction(){
 //выключаем все используемые логроуты в начале
 foreach(Yii::app()-&gt;log-&gt;routes as $route){
  $route-&gt;enabled = false;
 }

 //цикл, в котором происходят многочисленные обращения к БД.
 foreach(.....){
  ......
 }

 //включаем логроуты обратно
 foreach(Yii::app()-&gt;log-&gt;routes as $route){
  $route-&gt;enabled = true;
 }
}
&lt;/pre&gt;
По идее, можно отключать только те логроуты, что профилируют запросы, но использованное упрощение в моем случае оказалось вполне допустимо.</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/3376288118784687843/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2012/11/yii.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/3376288118784687843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/3376288118784687843'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2012/11/yii.html' title='Yii: динамическое отключение профилирования заросов'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-1667966678486419465</id><published>2012-10-26T02:24:00.000+04:00</published><updated>2012-10-26T02:24:02.590+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="юмор"/><title type='text'>Гопопрограммирование )))</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2q2NXX3_Dlt9eEsR1JFv7-kOVUq6qz4Q7jae5uS4_gP0SH_qOalRYEDa9qpspJy_vfh0G2TW22fbI7esgvy-emGjzHmHKuCBrta2tIS2_tBWDgS6_xD6etJ0BvTsJhCFN8NTWTMGpUVE/s1600/-VpyYPZLgjM.jpg&quot; /&gt;&lt;/div&gt;

</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/1667966678486419465/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2012/10/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1667966678486419465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1667966678486419465'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2012/10/blog-post.html' title='Гопопрограммирование )))'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2q2NXX3_Dlt9eEsR1JFv7-kOVUq6qz4Q7jae5uS4_gP0SH_qOalRYEDa9qpspJy_vfh0G2TW22fbI7esgvy-emGjzHmHKuCBrta2tIS2_tBWDgS6_xD6etJ0BvTsJhCFN8NTWTMGpUVE/s72-c/-VpyYPZLgjM.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-8563085511046899602</id><published>2012-09-27T18:47:00.000+04:00</published><updated>2012-09-27T18:47:31.638+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="юмор"/><title type='text'>Если бы Остап Бендер жил в наше время...</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_mWWfH6EDFHuk9wgDk6O3XNl84djZgkU1bpS9gjnmsMeydQhBJ3WHEKlCNyLXh3rMOZtGtchmwIBGhgxpoJaNgoITlWjuJTLohqOuOmmnmFtnPE_shTtLCx_WC4arCDiRWFfbgc6aMjA/s1600/tumblr_may3jtvzIV1ryrj7po1_500.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_mWWfH6EDFHuk9wgDk6O3XNl84djZgkU1bpS9gjnmsMeydQhBJ3WHEKlCNyLXh3rMOZtGtchmwIBGhgxpoJaNgoITlWjuJTLohqOuOmmnmFtnPE_shTtLCx_WC4arCDiRWFfbgc6aMjA/s1600/tumblr_may3jtvzIV1ryrj7po1_500.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/8563085511046899602/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2012/09/blog-post_27.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/8563085511046899602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/8563085511046899602'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2012/09/blog-post_27.html' title='Если бы Остап Бендер жил в наше время...'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_mWWfH6EDFHuk9wgDk6O3XNl84djZgkU1bpS9gjnmsMeydQhBJ3WHEKlCNyLXh3rMOZtGtchmwIBGhgxpoJaNgoITlWjuJTLohqOuOmmnmFtnPE_shTtLCx_WC4arCDiRWFfbgc6aMjA/s72-c/tumblr_may3jtvzIV1ryrj7po1_500.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-1194230209334408000</id><published>2012-09-14T11:47:00.002+04:00</published><updated>2012-09-14T11:47:58.166+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="юмор"/><title type='text'></title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://sphotos-f.ak.fbcdn.net/hphotos-ak-ash4/389887_10151059189849290_720198646_n.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://sphotos-f.ak.fbcdn.net/hphotos-ak-ash4/389887_10151059189849290_720198646_n.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/1194230209334408000/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2012/09/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1194230209334408000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1194230209334408000'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2012/09/blog-post.html' title=''/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-1658900639612421914</id><published>2012-07-19T22:16:00.001+04:00</published><updated>2012-07-19T22:18:47.487+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="мысли вслух"/><category scheme="http://www.blogger.com/atom/ns#" term="языки программирования"/><title type='text'></title><content type='html'>А вот какие такие исторические причины позволяют передавать параметры в функцию PHP implode() в любом порядке?</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/1658900639612421914/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2012/07/blog-post.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1658900639612421914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1658900639612421914'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2012/07/blog-post.html' title=''/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-4066091434430425596</id><published>2012-07-06T11:12:00.000+04:00</published><updated>2012-07-06T11:12:01.698+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="тем временем"/><title type='text'></title><content type='html'>Чего-то я не догоняю, или blogger не может транслировать RSS отсюда в Feedburner, при этом показывая ссылку на него же. Изврат, конечно, но что делать, если поток уже давно на Feedburnere висит?</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/4066091434430425596/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2012/07/blogger-rss-feedburner.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/4066091434430425596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/4066091434430425596'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2012/07/blogger-rss-feedburner.html' title=''/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-7859690661200887997</id><published>2012-06-29T10:23:00.001+04:00</published><updated>2012-06-29T10:23:34.427+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="тем временем"/><title type='text'>Надоело переезжать</title><content type='html'>По запросу &quot;Экспорт контента в Blogspot&quot; и им подобным гугл вываливает ссылки на опыт чуваков, которые отсюда слились на Wordpress и т.п. А я вот решил, наоборот, со стандалона соскочить: грустно мне в том бложике как-то было.&lt;br /&gt;
Хотя, конечно, не бог весть какое событие. Посмотрел внимательно на то, что стоит со старого блога перекидывать в новый - оказалось, что кроме нескольких записей и хохм ничего переносить-то и не требуется. В итоге перенес вручную пару десятков записей и готово. Заодно не только ноосферу от неактуальной и малозначимой информации почистил, но и себя избавил от необходимости ее содержать.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;А переезжать и в самом деле пришлось слишком много, в том числе и в реале. Последний переезд прямо эпичный получился. Сам по себе не слишком масштабный, но двухмесячный подготовительный ремонтный период доставил - скиллы успел прокачать почти по всем рабочим специальностям, кроме каменной кладки и&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;кафельной&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;укладки&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Такие вот события, в общем. А старому бложику - Rest In Peace.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/7859690661200887997/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2012/06/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/7859690661200887997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/7859690661200887997'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2012/06/blog-post.html' title='Надоело переезжать'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-8428828856848786541</id><published>2012-06-29T06:43:00.000+04:00</published><updated>2012-06-29T06:43:06.680+04:00</updated><title type='text'></title><content type='html'>Перенесу-ка я сюда то, что было на старом блоге. Не все, конечно, а только то, что пригодится в новой жизни бложика.</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/8428828856848786541/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2011/12/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/8428828856848786541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/8428828856848786541'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2011/12/blog-post.html' title=''/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-2767002282221406678</id><published>2011-12-13T07:45:00.000+04:00</published><updated>2012-06-29T06:53:30.574+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="kohana"/><category scheme="http://www.blogger.com/atom/ns#" term="грабли"/><category scheme="http://www.blogger.com/atom/ns#" term="кэширование"/><title type='text'>Кэширование ORM в Kohana</title><content type='html'>&lt;br /&gt;
&lt;div style=&quot;background-color: white; color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Потратил много времени на обнаружение неочевидной особенности поведения системы кэширования объектов, получаемых из базы с использованием встроенной системы ORM Kohana в случае, если в свойствах модели не указано явно название таблицы, ей соответствующей.&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Если вы инициализируете значение $_table_name ORM-модели в ее конструкторе (как в примере ниже):&lt;/div&gt;
&lt;div id=&quot;geshibot_load_0_54abc25e257027e138a1d87463b0af3b5ae263d7&quot; style=&quot;background-color: white; color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; text-align: justify;&quot;&gt;
&lt;pre style=&quot;background-color: #f9f8e5; border: 1px dotted rgb(51, 51, 51); overflow-x: scroll; padding: 0px; position: relative; width: 520px;&quot;&gt;class Model_Foo extends ORM
{
protected $_db = &#39;default&#39;;
protected $_primary_key = &#39;id&#39;;
protected $_primary_val = &#39;name&#39;;
...
public function __construct($id = NULL)
{
$this-&amp;gt;_table_name = &#39;foo_table&#39;;
...
parent::__construct($id);
}
...
}

&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
, то при попытке загрузить закэшированные данные с помощью конструкции вида:&lt;/div&gt;
&lt;div id=&quot;geshibot_load_0_dbeea57dc85708dbb74c4cdad878e6aa2bf03e19&quot; style=&quot;background-color: white; color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; text-align: justify;&quot;&gt;
&lt;pre style=&quot;background-color: #f9f8e5; border: 1px dotted rgb(51, 51, 51); overflow-x: scroll; padding: 0px; position: relative; width: 520px;&quot;&gt;&amp;nbsp; &amp;nbsp;$foos = ORM::factory(&#39;foo&#39;)-&amp;gt;cached(7200)-&amp;gt;find_all();
&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
вы получите, увы, вовсе не закэшированный результат, а вполне себе актуальные данные (которые, конечно же, будут получены ценой запроса к БД, которого вы хотели избежать)&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Такое поведение Kohana обусловлено тем, что при чтении объекта из кэша и его последующей корректной десериализации подгружается файл с описанием класса вашей модели Model_Foo, однако его конструктор не вызывается и, соответственно, имя таблицы не инициализируется. Так как поля таблицы в модели не описаны, Kohana пытается загрузить список полей из таблицы, соответствующей названию модели в множественном числе - для примера выше это `foos`. Если такой таблицы в базе данных не находится, то генерируется исключение, которое интерпретируется системой кэширования как признак поврежденого кэша и обрабатывается втихую - возвращая NULL вместо данных. В результате данные загружаются каждый раз из базы данных, несмотря на то, что присутствуют в кэше.&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Таким образом, явное указание $_table_name необходимо в тех моделях, выборки для которых вы хотите хранить в кэше и успешно доставать оттуда же.&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Хочу особенно отметить, что при загрузке и десериализации объекта из кэша Kohana для него&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px;&quot;&gt;не вызывается&amp;nbsp;&lt;/b&gt;автоматически конструктор. Это необходимо учитывать и инициализировать свойства (которые при обычной загрузке устанавливаются в конструкторе) при обращении к методам загруженного из кэша объекта, если они (методы) эти свойства используют.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;UPD:&lt;/b&gt; как мне подсказали знающие люди на форуме Kohana, если&amp;nbsp;&lt;span style=&quot;background-color: white;&quot;&gt;в модели&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;вместо метода __construct() &amp;nbsp; использовать метод __initialize(), описанных проблем при десериализации не возникает, так как этот метод, в отличие от конструктора, в данной ситуации вызывается.&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/2767002282221406678/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2011/12/orm-kohana.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/2767002282221406678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/2767002282221406678'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2011/12/orm-kohana.html' title='Кэширование ORM в Kohana'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-2521674224986546792</id><published>2011-12-07T07:54:00.000+04:00</published><updated>2012-06-29T06:57:38.528+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="юмор"/><title type='text'>Почты псто</title><content type='html'>&lt;br /&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
&amp;gt;ping почта.рф&lt;br /&gt;
&lt;br /&gt;
Обмен пакетами с почта.рф [91.215.36.43] с 32 байтами данных:&lt;br /&gt;
Мужчина, вы что не видите, что у нас обед.&lt;br /&gt;
Мужчина, вы что не видите, что у нас обед.&lt;br /&gt;
Мужчина, вы что не видите, что у нас обед.&lt;br /&gt;
Мужчина, вы что не видите, что у нас обед.&lt;br /&gt;
&lt;br /&gt;
Статистика Ping для 91.215.36.43:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Пакетов: отправлено = 4, получено = 0, потеряно = 4&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (100% Обед)&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
&lt;a href=&quot;https://plus.google.com/118035241304251794586/posts/ALbeAhrsgHh?authuser=0&quot; style=&quot;color: #0095da; margin: 0px; outline: none; padding: 0px;&quot; target=&quot;_self&quot;&gt;via&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/2521674224986546792/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2011/12/blog-post_06.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/2521674224986546792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/2521674224986546792'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2011/12/blog-post_06.html' title='Почты псто'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-5623326582811125514</id><published>2011-09-13T06:59:00.000+04:00</published><updated>2012-06-29T07:09:49.688+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="видео"/><category scheme="http://www.blogger.com/atom/ns#" term="сортировка"/><category scheme="http://www.blogger.com/atom/ns#" term="юмор"/><title type='text'>Сортировочные танцы</title><content type='html'>&lt;br /&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Только что нашел в своей кучке ссылок по названием &quot;Read it later&quot; ссылку на&amp;nbsp;&lt;a href=&quot;http://www.youtube.com/user/AlgoRythmics&quot; style=&quot;color: #0095da; margin: 0px; outline: none; padding: 0px;&quot; target=&quot;_blank&quot;&gt;канал&lt;/a&gt;&amp;nbsp;отличных музыкально-танцевальных визуализаций различных алгоритмов сортировки. Жалко, что пока на нем всего представлены не все алгоритмы и не все народные танцы европейских народов. Будем надеяться, что на канале появятся и другие разновидности сортировки. Особенно интересно посмотреть, как долго будут продолжаться самые неэффективные ) Ну а пока можно посмотреть те, что уже есть на этот момент:&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Пузырьковая сортировка:&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
&lt;iframe frameborder=&quot;0&quot; height=&quot;390&quot; src=&quot;http://www.youtube.com/embed/lyZQPjUT5B4?rel=0&quot; style=&quot;margin: 0px; padding: 0px;&quot; width=&quot;640&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Быстрая сортировка:&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
&lt;iframe frameborder=&quot;0&quot; height=&quot;390&quot; src=&quot;http://www.youtube.com/embed/ywWBy6J5gz8?rel=0&quot; style=&quot;margin: 0px; padding: 0px;&quot; width=&quot;640&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Сортировка слиянием:&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
&lt;iframe frameborder=&quot;0&quot; height=&quot;390&quot; src=&quot;http://www.youtube.com/embed/XaqR3G_NVoo?rel=0&quot; style=&quot;margin: 0px; padding: 0px;&quot; width=&quot;640&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
А также сортировка Шелла, сортировка выбором и сортировка вставками:&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
&lt;iframe frameborder=&quot;0&quot; height=&quot;390&quot; src=&quot;http://www.youtube.com/embed/CmPA7zE8mx0?rel=0&quot; style=&quot;margin: 0px; padding: 0px;&quot; width=&quot;640&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
&lt;iframe frameborder=&quot;0&quot; height=&quot;390&quot; src=&quot;http://www.youtube.com/embed/Ns4TPTC8whw?rel=0&quot; style=&quot;margin: 0px; padding: 0px;&quot; width=&quot;640&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
&lt;iframe frameborder=&quot;0&quot; height=&quot;390&quot; src=&quot;http://www.youtube.com/embed/ROalU379l3U?rel=0&quot; style=&quot;margin: 0px; padding: 0px;&quot; width=&quot;640&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; text-align: justify;&quot;&gt;Спасибо Максиму Оранскому за то, что&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://plus.google.com/102656701306071363554/posts/LYe4EXBQtyw&quot; style=&quot;color: #0095da; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; outline: none; padding: 0px; text-align: justify;&quot; target=&quot;_blank&quot;&gt;поделился позитивчиком&lt;/a&gt;&lt;span style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; text-align: justify;&quot;&gt;!&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/5623326582811125514/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2011/09/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/5623326582811125514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/5623326582811125514'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2011/09/blog-post.html' title='Сортировочные танцы'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/lyZQPjUT5B4/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-1029456846521362228</id><published>2011-05-31T07:02:00.000+04:00</published><updated>2012-10-10T14:48:49.652+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="мысли вслух"/><title type='text'>Не будьте велосипедистом!</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiG_EVL9WlQcV4Xk4U17zqp1YEsBrjvsknf5nx9ivC3i-aK0gsSmQzwSk_a9PHMsXeCQ77DFN4kYxXS8MUaFe5YQMP7kdAwK-cWV7BAgmsPo1P5p_3R3FxY8OqrenuQmc56rGFT-tr4FI/s1600/b0190e3e1a98abf9129ee23d8adc4aee.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiG_EVL9WlQcV4Xk4U17zqp1YEsBrjvsknf5nx9ivC3i-aK0gsSmQzwSk_a9PHMsXeCQ77DFN4kYxXS8MUaFe5YQMP7kdAwK-cWV7BAgmsPo1P5p_3R3FxY8OqrenuQmc56rGFT-tr4FI/s320/b0190e3e1a98abf9129ee23d8adc4aee.jpg&quot; width=&quot;320&quot; style=&quot;margin-bottom: 1em; margin-right: 1em;&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
Много раз я сталкивался со старыми проектами, написанными в рамках парадигмы программирования, широко известной в узких кругах, как &quot;свой велосипед&quot;.&lt;br /&gt;
&lt;br /&gt;
Вот и сейчас, переписывая огромную часть движка сайта, которым пользуется много людей и который нельзя просто так выбросить и написать заново с нуля, я не могу отделаться от мысли, что &quot;свой велосипед&quot; - большое зло. Особенно когда пишешь его и знаешь о том, что ты - не последний, кто над ним будет работать.&lt;br /&gt;
&lt;br /&gt;
Избегайте &quot;своих велосипедов&quot;, пожалуйста. Облегчите себе задачу и используйте хотя бы фреймворки. И будьте критичны к своей работе - позаботьтесь о том, чтобы ни фреймворк, ни ваша работа тоже не были &quot;велосипедом&quot;.&lt;br /&gt;
&lt;br /&gt;
Иначе ваши преемники будут интенсивно портить вам карму и истекать кислотой в ваш адрес.</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/1029456846521362228/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2011/05/blog-post_30.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1029456846521362228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1029456846521362228'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2011/05/blog-post_30.html' title='Не будьте велосипедистом!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiG_EVL9WlQcV4Xk4U17zqp1YEsBrjvsknf5nx9ivC3i-aK0gsSmQzwSk_a9PHMsXeCQ77DFN4kYxXS8MUaFe5YQMP7kdAwK-cWV7BAgmsPo1P5p_3R3FxY8OqrenuQmc56rGFT-tr4FI/s72-c/b0190e3e1a98abf9129ee23d8adc4aee.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-5261789546005084617</id><published>2010-12-27T07:11:00.000+03:00</published><updated>2012-06-29T07:14:15.390+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IE"/><category scheme="http://www.blogger.com/atom/ns#" term="юмор"/><title type='text'>Замечательный пример программистского юмора</title><content type='html'>&lt;pre style=&quot;background-color: #f9f8e5; border: 1px dotted rgb(51, 51, 51); color: #666666; font-size: 13px; overflow-x: scroll; padding: 0px; position: relative; text-align: justify;&quot;&gt;if(strpos($_SERVER[&#39;HTTP_USER_AGENT&#39;],&#39;MSIE 6&#39;)!==false){ die(&quot;Die! Die! Die!&quot;); }&lt;/pre&gt;
&lt;a href=&quot;http://twitter.com/SierjKhaletski/status/19011117539917825&quot;&gt;via&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/5261789546005084617/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2010/12/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/5261789546005084617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/5261789546005084617'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2010/12/blog-post.html' title='Замечательный пример программистского юмора'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-3925683374507504466</id><published>2010-06-29T07:16:00.000+04:00</published><updated>2012-06-29T07:17:23.571+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="юмор"/><category scheme="http://www.blogger.com/atom/ns#" term="языки программирования"/><title type='text'>Скоро на дисплеях страны: трагикомедия «.NET против Java»</title><content type='html'>&lt;br /&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Минутка юмора: нашел очень веселый трейлер про эпические драмы между отцами и детьми-программистами. Доставляет обилие пародий и мелких деталей, которые не всегда заметны с первого раза.&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Получил массу удовольствия от просмотра и вам рекомендую :)&lt;/div&gt;
&lt;object height=&quot;385&quot; style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; text-align: justify;&quot; width=&quot;640&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/fzza-ZbEY70&amp;amp;hl=ru_RU&amp;amp;fs=1&amp;amp;&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;640&quot; height=&quot;385&quot; style=&quot;margin: 0px; padding: 0px; &quot;&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/3925683374507504466/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2010/06/net-java.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/3925683374507504466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/3925683374507504466'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2010/06/net-java.html' title='Скоро на дисплеях страны: трагикомедия «.NET против Java»'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-1825964595839716937</id><published>2010-06-22T07:19:00.000+04:00</published><updated>2012-06-29T07:21:01.456+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="nginx"/><category scheme="http://www.blogger.com/atom/ns#" term="администрирование"/><title type='text'>Nginx и SVN (405 Not Allowed)</title><content type='html'>&lt;br /&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Установил Subversion на сервере под управлением apache+nginx в виртуальный подкаталог /svn&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Настроил, работает и крутится. Но не полностью — никак не коммитятся файлы с картинками, имеющими разрешение png, jpg и т.д. При этом svn ругается следующим образом:&lt;/div&gt;
&lt;div id=&quot;geshibot_load_0_774fb1cec89b80a2c3df54ae21cd83c5a32d9273&quot; style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; text-align: justify;&quot;&gt;
&lt;pre style=&quot;background-color: #f9f8e5; border: 1px dotted rgb(51, 51, 51); overflow-x: scroll; padding: 0px; position: relative;&quot;&gt;Commit failed (details follow):
Server sent unexpected return value (405 Not Allowed) in response to PROPFIND
request for &#39;.......&#39;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Долго колупался, но все-таки нашел на каком-то заброшенном форуме вопрос про такую же ситуацию и упоминание, что если в конфиге nginx отредактировать строчку&lt;/div&gt;
&lt;div id=&quot;geshibot_load_0_93ad1a276e1696926b0a6d92526153fd62fd9b45&quot; style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; text-align: justify;&quot;&gt;
&lt;pre style=&quot;background-color: #f9f8e5; border: 1px dotted rgb(51, 51, 51); overflow-x: scroll; padding: 0px; position: relative;&quot;&gt;location ~* ^.+\.(jpeg|jpg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js|djvu|mht|chm)$ { ...&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
, убрав оттуда расширения файлов, которые не могут закоммититься, то все работает. Проверил - действительно, работает. Но отключать кэширование таких файлов — не решение.&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Вместо этого надо исключить виртуальный подкаталог svn из обрабатываемых nginx&#39;ом каталогов. За это отвечает секция nginx.conf примерно следующего вида:&lt;/div&gt;
&lt;div id=&quot;geshibot_load_0_a81383d47120959e1211b952f7cfd4a9fbe2967a&quot; style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; text-align: justify;&quot;&gt;
&lt;pre style=&quot;background-color: #f9f8e5; border: 1px dotted rgb(51, 51, 51); overflow-x: scroll; padding: 0px; position: relative;&quot;&gt;location ~* ^/(awstats|myadmin/|svn/) {
proxy_pass http://xx.xx.xx.xx:8080;
proxy_redirect http://yoursite.com:8080/ /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}&lt;/pre&gt;
&lt;/div&gt;
&lt;span style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; text-align: justify;&quot;&gt;После этой правки проблемные файлы отправляются в репозиторий, как по маслу.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/1825964595839716937/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2010/06/nginx-svn-405-not-allowed.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1825964595839716937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1825964595839716937'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2010/06/nginx-svn-405-not-allowed.html' title='Nginx и SVN (405 Not Allowed)'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-1012532917787673261</id><published>2010-04-21T07:22:00.000+04:00</published><updated>2012-06-29T07:23:46.338+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="тем временем"/><title type='text'>В тихом омуте черти водятся</title><content type='html'>Тихо-то как...&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;А черти-то, — они здесь, не спят.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Кто не в курсе — лучше даже и не спрашивайте :)&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/1012532917787673261/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2010/04/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1012532917787673261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/1012532917787673261'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2010/04/blog-post.html' title='В тихом омуте черти водятся'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-4141937636147080641</id><published>2010-02-03T07:24:00.000+03:00</published><updated>2012-06-29T07:25:17.434+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Pligg"/><title type='text'>Форум русского Pligg переехал на новый адрес</title><content type='html'>&lt;br /&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Я окончательно отключил обсуждения Pligg на этом сайте. Увы, времени на сколько-нибудь значимое развитие русской версии этой CMS у меня сейчас совсем нет. Однако я рад, что моя работа не осталась совсем без хозяина и продолжает развиваться. Дело передано в надежные&amp;nbsp;&lt;s style=&quot;margin: 0px; padding: 0px;&quot;&gt;зубы&lt;/s&gt;&amp;nbsp;руки Vampir&#39;а и теперь форум, посвященный русскому Pligg находится здесь:&amp;nbsp;&lt;b style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://cmspligg.ru/&quot; style=&quot;color: #0095da; margin: 0px; outline: none; padding: 0px;&quot; target=&quot;_blank&quot;&gt;cmspligg.ru&lt;/a&gt;&lt;/b&gt;.&lt;/div&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Кто был зарегистрирован на здешнем форуме, смогут зайти на новый под своими именами, запросив там восстановление пароля. Кто не успел - регистрируйтесь с нуля :)&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/4141937636147080641/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2010/02/pligg.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/4141937636147080641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/4141937636147080641'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2010/02/pligg.html' title='Форум русского Pligg переехал на новый адрес'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470773386772651666.post-374919471628067701</id><published>2010-01-11T07:25:00.000+03:00</published><updated>2012-06-29T07:26:26.106+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="видео"/><category scheme="http://www.blogger.com/atom/ns#" term="юмор"/><title type='text'>Суровые финские программисты жгут :)</title><content type='html'>&lt;object height=&quot;385&quot; style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; text-align: justify;&quot; width=&quot;640&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/Dt9maknsGJ0&amp;amp;hl=ru_RU&amp;amp;fs=1&amp;amp;&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;640&quot; height=&quot;385&quot; style=&quot;margin: 0px; padding: 0px; &quot;&gt;&lt;/object&gt;&lt;span style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; text-align: justify;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 8px; padding: 0px; text-align: justify;&quot;&gt;
Ребята из финского подразделения Intel отжигают. Я все чаще радуюсь тому, что программисты - вовсе не скучный народ. По крайней мере, пока они не заняты непосредственно программированием :)&lt;/div&gt;
&lt;a href=&quot;http://habrahabr.ru/company/intel/blog/78594/&quot; style=&quot;color: #0095da; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; outline: none; padding: 0px; text-align: justify;&quot; target=&quot;_blank&quot;&gt;via&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://itblozhek.blogspot.com/feeds/374919471628067701/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://itblozhek.blogspot.com/2010/01/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/374919471628067701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470773386772651666/posts/default/374919471628067701'/><link rel='alternate' type='text/html' href='http://itblozhek.blogspot.com/2010/01/blog-post.html' title='Суровые финские программисты жгут :)'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10845580881067674441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>