<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on Roman Dushko - Personal blog</title><link>https://www.rodush.com/posts/</link><description>Recent content in Posts on Roman Dushko - Personal blog</description><image><title>Roman Dushko - Personal blog</title><url>https://www.rodush.com/images/rodush-og.png</url><link>https://www.rodush.com/images/rodush-og.png</link></image><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 24 Oct 2026 18:32:29 +0200</lastBuildDate><atom:link href="https://www.rodush.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Personal Blog With Hugo and Github Pages</title><link>https://www.rodush.com/posts/personal-blog-with-hugo-and-github-pages/</link><pubDate>Sat, 24 Oct 2026 18:32:29 +0200</pubDate><guid>https://www.rodush.com/posts/personal-blog-with-hugo-and-github-pages/</guid><description>&lt;p&gt;In this post I would like to share how to setup personal blog pretty much for free,
using &lt;a href="https://pages.github.com"&gt;Github Pages&lt;/a&gt; for hosting and personal site engine like &lt;a href="https://gohugo.io"&gt;Hugo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You may only need to pay costs of the custom domain name, if you want URL to be something different than &lt;code&gt;&amp;lt;username&amp;gt;.github.io&lt;/code&gt; (default domain of your website hosted on Github Pages).&lt;/p&gt;
&lt;p&gt;You might wonder, how this post is different from many other resources available on Internet, including video&amp;rsquo;s on YouTube like &lt;a href="https://www.youtube.com/watch?v=LIFvgrRxdt4"&gt;this&lt;/a&gt; or &lt;a href="https://www.youtube.com/watch?v=_QSr2_pxIJs"&gt;this&lt;/a&gt;.&lt;br&gt;
In majority, this post will indeed repeat what&amp;rsquo;s been mentioned already. Approached mentioned here uses only one repository! It is a simpler setup compared to old-school approach which required 2 repositories: one for your &amp;ldquo;dirty&amp;rdquo; content, and another one — for your generated blog content, that&amp;rsquo;s what the 1st video is about).&lt;/p&gt;</description></item><item><title>Git push to remote without creating local branch</title><link>https://www.rodush.com/2017/04/git-push-to-remote-without-creating-local-branch/</link><pubDate>Wed, 05 Apr 2017 15:41:37 +0000</pubDate><guid>https://www.rodush.com/2017/04/git-push-to-remote-without-creating-local-branch/</guid><description>&lt;p&gt;Little extremely handy trick for Git.&lt;/p&gt;
&lt;p&gt;If you need to modify something quickly in some(-body’s) branch, e.g. in in open PR on GitHub, you don’t need to usually create your local branch mirroring the remote one, right?&lt;/p&gt;
&lt;p&gt;Instead, you just checkout into remote branch:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git checkout origin/branch-name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;, do you fixes/changes, commit them and now, the tricky thing, how do you push?&lt;/p&gt;
&lt;p&gt;As simple as:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git push origin HEAD:refs/heads/branch-name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You don&amp;rsquo;t have traces in your local branches, and you pushed your modifications.&lt;/p&gt;</description></item><item><title>How to specify custom ssh key while git clone from github</title><link>https://www.rodush.com/2017/02/how-to-specify-custom-ssh-key-while-git-clone-from-github/</link><pubDate>Wed, 08 Feb 2017 05:33:57 +0000</pubDate><guid>https://www.rodush.com/2017/02/how-to-specify-custom-ssh-key-while-git-clone-from-github/</guid><description>&lt;p&gt;If you need to provide some custom ssh key while cloning your repository from github (or pulling, whatsoever), run this command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh-agent &lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;eval &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;ssh-agent -s&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;; ssh-add ~/.ssh/&lt;span style="color:#f92672"&gt;{&lt;/span&gt;your-custom-keyfile&lt;span style="color:#f92672"&gt;}&lt;/span&gt;; git clone git@github.com:&lt;span style="color:#f92672"&gt;{&lt;/span&gt;username&lt;span style="color:#f92672"&gt;}&lt;/span&gt;/&lt;span style="color:#f92672"&gt;{&lt;/span&gt;repo-name&lt;span style="color:#f92672"&gt;}&lt;/span&gt;.git .&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Please note, you should replace &lt;code&gt;{strings}&lt;/code&gt; with plain string values!&lt;/p&gt;</description></item><item><title>Functional approach in PHP</title><link>https://www.rodush.com/2016/10/functional-approach-in-php/</link><pubDate>Wed, 19 Oct 2016 12:16:05 +0000</pubDate><guid>https://www.rodush.com/2016/10/functional-approach-in-php/</guid><description>&lt;p&gt;The code snippet below will only work in PHP-5.3+!.&lt;/p&gt;
&lt;p&gt;Isn’t it the famous functional programming with &lt;em&gt;functions as first class citizens&lt;/em&gt;, closures and other functional bla-bla?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;one&lt;/span&gt;($a &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;function&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;callable&lt;/span&gt; $b) &lt;span style="color:#66d9ef"&gt;use&lt;/span&gt; ($a) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;call_user_func&lt;/span&gt;($b, $a);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;print_r&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;call_user_func&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;one&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;), &lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; ($x) { &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; $x &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;; } ));
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This was created just for fun. As you may see, in place of callable you can put any valid PHP callable, e.g.in a form &lt;code&gt;['Class', 'method']&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Install proprietary Oracle JDK in Debian 7.0 Wheezy</title><link>https://www.rodush.com/2014/08/install-proprietary-oracle-jdk-in-debian-7-0-wheezy/</link><pubDate>Wed, 27 Aug 2014 07:29:58 +0000</pubDate><guid>https://www.rodush.com/2014/08/install-proprietary-oracle-jdk-in-debian-7-0-wheezy/</guid><description>&lt;p&gt;This is a YAP (yet another post) about how one can manually install Oracle’s proprietary JDK/JRE version (in Debian 7.0 Wheezy as an example).&lt;/p&gt;
&lt;p&gt;First of all, download fresh version of JDK/JRE from the &lt;a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html" title="jdk8-downloads"&gt;Oracle website&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Copy archive to desired location, in the following example we will use&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/usr/lib/jvm&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;as an installation source directory.&lt;/p&gt;
&lt;p&gt;Unpack the archive and run next commands:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk/bin/java &lt;span style="color:#ae81ff"&gt;1071&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo update-alternatives --install /usr/bin/javac javac /media/mydisk/jdk/javac &lt;span style="color:#ae81ff"&gt;1071&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo update-alternatives --install /usr/bin/jcontrol jcontrol /media/mydisk/jdk/bin/jcontrol &lt;span style="color:#ae81ff"&gt;1071&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You may need read man pages for update-alternatives to check out the parameters and what they mean.&lt;/p&gt;</description></item><item><title>How to add role to the PostgreSQL</title><link>https://www.rodush.com/2014/05/how-to-add-role-to-the-postgresql/</link><pubDate>Fri, 16 May 2014 09:15:01 +0000</pubDate><guid>https://www.rodush.com/2014/05/how-to-add-role-to-the-postgresql/</guid><description>&lt;p&gt;If you need have superuser access to PostgreSQL via command line psql utility, create needed username first:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo -u postgres createuser NEEDED_USERNAME
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You will be asked whether role should be a superuser:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Shall the new role be a superuser? (y/n)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;answer &amp;ldquo;&lt;em&gt;Y&lt;/em&gt;&amp;rdquo; (yes) if so and hit &lt;code&gt;Enter&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now you allowed the &lt;code&gt;NEEDED_USERNAME&lt;/code&gt; to access databases as a superuser via &lt;code&gt;psql&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Postgres and earthdistance extension</title><link>https://www.rodush.com/2013/09/postgres-and-earthdistance-extension/</link><pubDate>Tue, 24 Sep 2013 20:50:49 +0000</pubDate><guid>https://www.rodush.com/2013/09/postgres-and-earthdistance-extension/</guid><description>&lt;p&gt;First of all, let me describe how one can install extensions for your Postgresql.&lt;/p&gt;
&lt;p&gt;It depends whether you have version 8.4+ or 9.1+ installed.&lt;/p&gt;
&lt;p&gt;In following sections I will describe procedure related to Debian based OSes.&lt;/p&gt;
&lt;p&gt;First of all, you have to install contrib packages for corresponding version:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;root@debian:/home/web# apt-cache search postgres | grep contrib
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;postgresql-contrib - additional facilities &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; PostgreSQL &lt;span style="color:#f92672"&gt;(&lt;/span&gt;supported version&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;postgresql-contrib-8.4 - additional facilities &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; PostgreSQL
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;postgresql-contrib-9.1 - additional facilities &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; PostgreSQL
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;with command:&lt;/p&gt;</description></item><item><title>Fn клавиши перестали работать на Lenovo Thinkpad Edge с Debian</title><link>https://www.rodush.com/2012/08/fn-%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%88%D0%B8-%D0%BF%D0%B5%D1%80%D0%B5%D1%81%D1%82%D0%B0%D0%BB%D0%B8-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%82%D1%8C-%D0%BD%D0%B0-lenovo-thinkpad-edge-debian/</link><pubDate>Sat, 11 Aug 2012 07:12:13 +0000</pubDate><guid>https://www.rodush.com/2012/08/fn-%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%88%D0%B8-%D0%BF%D0%B5%D1%80%D0%B5%D1%81%D1%82%D0%B0%D0%BB%D0%B8-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%82%D1%8C-%D0%BD%D0%B0-lenovo-thinkpad-edge-debian/</guid><description>&lt;p&gt;Однажды на моем рабочем ноуте Lenovo Thinkpad Edge 15 &lt;a href="https://p.twimg.com/AzOYYotCMAA5K2s.jpg"&gt;внезапно&lt;/a&gt; 🙂 перестали работать ВСЕ функциональные клавиши (регулировка яркости, громкости, управление камерой и микрофоном, wi-fi). Я не гуру в низкоуровневом Linux и всяких там acpi events… Периодически и долго пытался найти решение проблемы в интернете, но особо не зная куда копать, искал по acpi, fakekeys, Debian (установленная ОСь на ноуте)… К сожаление, не нарыл ничего. Пока однажды волей случая не набрел на замечательный форум, где было предложено неожиданное решение проблемы…&lt;/p&gt;</description></item><item><title>Как марсоход приземляется на поверхности планеты</title><link>https://www.rodush.com/2012/08/%D0%BA%D0%B0%D0%BA-%D0%BC%D0%B0%D1%80%D1%81%D0%BE%D1%85%D0%BE%D0%B4-%D0%BF%D1%80%D0%B8%D0%B7%D0%B5%D0%BC%D0%BB%D1%8F%D0%B5%D1%82%D1%81%D1%8F-%D0%BD%D0%B0-%D0%BF%D0%BE%D0%B2%D0%B5%D1%80%D1%85%D0%BD%D0%BE%D1%81%D1%82%D1%8C/</link><pubDate>Wed, 08 Aug 2012 12:16:46 +0000</pubDate><guid>https://www.rodush.com/2012/08/%D0%BA%D0%B0%D0%BA-%D0%BC%D0%B0%D1%80%D1%81%D0%BE%D1%85%D0%BE%D0%B4-%D0%BF%D1%80%D0%B8%D0%B7%D0%B5%D0%BC%D0%BB%D1%8F%D0%B5%D1%82%D1%81%D1%8F-%D0%BD%D0%B0-%D0%BF%D0%BE%D0%B2%D0%B5%D1%80%D1%85%D0%BD%D0%BE%D1%81%D1%82%D1%8C/</guid><description>&lt;p&gt;Очень интересная &lt;a href="https://mars.jpl.nasa.gov/msl/multimedia/interactives/edlcuriosity/index-2.html"&gt;страничка на сайте NASA&lt;/a&gt; со схематическим пояснением того, как марсоход приземляется на поверхность планеты —&lt;/p&gt;</description></item><item><title>Как скачать аудио из ВКонтакте</title><link>https://www.rodush.com/2012/08/%D0%BA%D0%B0%D0%BA-%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C-%D0%B0%D1%83%D0%B4%D0%B8%D0%BE-%D0%B8%D0%B7-%D0%B2%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D0%B5/</link><pubDate>Mon, 06 Aug 2012 21:52:01 +0000</pubDate><guid>https://www.rodush.com/2012/08/%D0%BA%D0%B0%D0%BA-%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C-%D0%B0%D1%83%D0%B4%D0%B8%D0%BE-%D0%B8%D0%B7-%D0%B2%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D0%B5/</guid><description>&lt;p&gt;Небольшой скриптец, который поможет вам создать список URL адресов mp3 файлов, который можно затем «скормить» какому-нибудь Download Master.&lt;/p&gt;
&lt;p&gt;Сей скриптец нужно запускать в консоли &lt;a href="http://getfirebug.com"&gt;FireBug&lt;/a&gt; (расширение к броузеру FireFox, ориентированное на программистов), находясь при этом на странице «Мои аудиозаписи».&lt;/p&gt;
&lt;p&gt;В результате выполнения в консоль будет выведен список адресов аудифайлов вашего плейлиста. Копируете список в текстовый файл, который потом импортируете в Download Master через пункт меню File -&amp;gt; Import. Вуаля! Файлы качаются! Единственная проблемка — названия. Это уникальные идентификаторы файлов, а не понятные человеку слова. Хотите — переименуйте вручную, а хотите — потом можно написать скриптец, скажем на PHP, который прочитает ID3-тэги файлов и переименует файлы с использованием нормальных названий.&lt;/p&gt;</description></item><item><title>Form builder — entity field: «Class BundleAliasName:EntityClassName does not exist «</title><link>https://www.rodush.com/2012/07/form-builder-entity-field-class-bundlealiasnameentityclassname-does-not-exist/</link><pubDate>Thu, 26 Jul 2012 12:54:31 +0000</pubDate><guid>https://www.rodush.com/2012/07/form-builder-entity-field-class-bundlealiasnameentityclassname-does-not-exist/</guid><description>&lt;p&gt;После обновления symfony-2.1 до версии из транка (symfony-2.1.0-beta4) отвалилась форма, в которой я использовал поле типа entity, где в качестве класса сущности указал не полный путь к классу, а через bundle alias:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$builder&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;add&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;field_name, &amp;#39;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;entity&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; array(
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#39;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39; =&amp;gt; &amp;#39;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;BundleAliasName&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;EntityClassName&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#39;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;multiple&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// .....
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Код выбрасывал исключение с сообщением&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;«Class BundleAliasName:EntityClassName does not exist»&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Если прописать полный путь через пространство имен:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;array&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;class&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;Full\Bundle\Path\Entity\EntityClassName&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;то все работало хорошо.&lt;/p&gt;</description></item><item><title>Как обновить проект с symfony-2.0 до symfony-2.1</title><link>https://www.rodush.com/2012/07/%D0%BA%D0%B0%D0%BA-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82-%D1%81-symfony-2-0-%D0%B4%D0%BE-symfony-2-1/</link><pubDate>Sat, 07 Jul 2012 19:57:18 +0000</pubDate><guid>https://www.rodush.com/2012/07/%D0%BA%D0%B0%D0%BA-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82-%D1%81-symfony-2-0-%D0%B4%D0%BE-symfony-2-1/</guid><description>&lt;p&gt;Изначально я создавал свой проект на версии symfony 2.0 без vendors (standard edition). Все зависимости были установлены через&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;php bin/vendors install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Проект находился в git-репозитории.&lt;/p&gt;
&lt;p&gt;Сразу оговорка — на момент написания статьи версия symfony 2.1 находилась в стадии бета-тестирования.&lt;/p&gt;
&lt;p&gt;Тем не менее, основная тенденция уже была понятна и значительных изменений в АПИ не предвиделось.&lt;/p&gt;
&lt;p&gt;Одно из ключевых нововведений в symfony 2.1 — использование &lt;a href="http://getcomposer.org/"&gt;Composer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;На вебсайте фреймворка Symfony можно найти описание процесса создания &lt;strong&gt;нового&lt;/strong&gt; проекта, но нет информации как обновить существующий.&lt;/p&gt;</description></item><item><title>Symfony 2.0 FOSUserBundle — ошибка «Could not load type»</title><link>https://www.rodush.com/2012/06/symfony-2-0-fosuserbundle-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-could-not-load-type/</link><pubDate>Tue, 19 Jun 2012 10:05:33 +0000</pubDate><guid>https://www.rodush.com/2012/06/symfony-2-0-fosuserbundle-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-could-not-load-type/</guid><description>&lt;p&gt;Если вы используете &lt;code&gt;FOSUserBundle&lt;/code&gt; вместе с symfony 2.0 и вам понадобилось переопределить какую-либо из форм, идущих «в комплекте» с этим плагином,&lt;/p&gt;
&lt;p&gt;то, без сомнения, вы прочитали эту заметку: &lt;a href="https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_forms.md"&gt;https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_forms.md&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;После обновления вашей страницы может случиться прискорбная ситуация — сообщение об ошибке «Could not load type ….» (вместо многоточия ваш &lt;em&gt;alias&lt;/em&gt; для кастомной формы).&lt;/p&gt;
&lt;p&gt;Вроде бы и в файле app/config.yml все верно с отступами (имеется ввиду конфигурация fos_user сервиса), и файл конфигурации вашего сервиса &lt;code&gt;service.xml&lt;/code&gt; (или &lt;code&gt;service.yml&lt;/code&gt;) (в CustomUserBundle) описан правильно, и везде совпадает alias, getName() и т.п…. а все та же ошибка. Бывало? Не беда! 🙂 Есть решение вашей проблемы! Читайте далее, и все окажется просто!&lt;/p&gt;</description></item><item><title>Отменить git push</title><link>https://www.rodush.com/2012/03/%D0%BE%D1%82%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C-git-push/</link><pubDate>Thu, 22 Mar 2012 17:23:35 +0000</pubDate><guid>https://www.rodush.com/2012/03/%D0%BE%D1%82%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C-git-push/</guid><description>&lt;p&gt;Бывает такое, что вы сделали случайный коммит и запушили в общий репозиторий то, что не хотелось бы, скажем — какие-то важные данные (пароль к какому-нибудь сервису и т.п.)&lt;/p&gt;
&lt;p&gt;Конечно, пока никто не заметил, всё еще можно отменить!&lt;/p&gt;
&lt;p&gt;Для этого необходимо использовать команду&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git push -f &lt;span style="color:#f92672"&gt;{&lt;/span&gt;remote_name&lt;span style="color:#f92672"&gt;}&lt;/span&gt; HEAD^:&lt;span style="color:#f92672"&gt;{&lt;/span&gt;branchName&lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Таким образом можно откатиться не только на один шаг (&lt;code&gt;^&lt;/code&gt;), но на любое количество: &lt;code&gt;HEAD^^&lt;/code&gt; (&lt;code&gt;HEAD~2&lt;/code&gt;, &lt;code&gt;HEAD~n&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Повторно можно «залить» уже изменения с учетом необходимых исправлений. Таким образом вы перепишете историю! :-D&lt;/p&gt;</description></item><item><title>Показать / скрыть оффлайн контакты в Linux Skype</title><link>https://www.rodush.com/2012/03/%D0%BF%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D1%8C-%D1%81%D0%BA%D1%80%D1%8B%D1%82%D1%8C-%D0%BE%D1%84%D1%84%D0%BB%D0%B0%D0%B9%D0%BD-%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D1%8B-%D0%B2-linux-skype/</link><pubDate>Tue, 20 Mar 2012 11:33:07 +0000</pubDate><guid>https://www.rodush.com/2012/03/%D0%BF%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D1%8C-%D1%81%D0%BA%D1%80%D1%8B%D1%82%D1%8C-%D0%BE%D1%84%D1%84%D0%BB%D0%B0%D0%B9%D0%BD-%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D1%8B-%D0%B2-linux-skype/</guid><description>&lt;p&gt;Есть у Skype даже тикет по данному поводу, что люди не могут найти в интерфейсе кнопочки для управления отображением оффлайн контактов в линуксовой версии Skype.&lt;/p&gt;
&lt;p&gt;Как оказалось, есть даже проще решение (как по мне, то оно и единственное) — «горячие клавиши» &lt;strong&gt;Ctrl + U&lt;/strong&gt;. Быстро и эффективно!&lt;/p&gt;</description></item><item><title>How to generate CSR file</title><link>https://www.rodush.com/posts/2011-08-17-how-to-generate-csr-file/</link><pubDate>Wed, 17 Aug 2011 14:23:26 +0000</pubDate><guid>https://www.rodush.com/posts/2011-08-17-how-to-generate-csr-file/</guid><description>&lt;p&gt;You can generate CSR using OpenSSL:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;openssl req -newkey rsa:2048 -keyout private_key.pem -out server.csr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;where &lt;code&gt;req&lt;/code&gt; is a command to control x.509 certificates,&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-newkey&lt;/code&gt; — means &lt;em&gt;&amp;ldquo;we need a new key&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;_rsa_&lt;/code&gt; — hashing algorythm, and &lt;em&gt;2048&lt;/em&gt; — the length of a key. To sign certificates after 2010 you need at least this length! Until 2010 it was possible to use &lt;em&gt;1024&lt;/em&gt; bit key.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-keyout&lt;/code&gt; — path to the file on the server&lt;/p&gt;</description></item><item><title>How to stop CruiseControl CI/CD server</title><link>https://www.rodush.com/2011/08/how-to-stop-cruisecontrol/</link><pubDate>Tue, 02 Aug 2011 07:03:15 +0000</pubDate><guid>https://www.rodush.com/2011/08/how-to-stop-cruisecontrol/</guid><description>&lt;p&gt;To stop CI/CD server CruiseControl, assuming it runs on your localhost, in the browser navigate to:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;http://localhost:8000/invoke?operation=halt&amp;amp;objectname=CruiseControl+Manager%3Aid%3Dunique&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>How to change PHPMyAdmin session timeout</title><link>https://www.rodush.com/2011/03/how-to-change-phpmyadmin-session-timeout/</link><pubDate>Sun, 27 Mar 2011 12:26:40 +0000</pubDate><guid>https://www.rodush.com/2011/03/how-to-change-phpmyadmin-session-timeout/</guid><description>&lt;p&gt;By default, the session lifetime in a new PhpMyAdmin installation using the &amp;ldquo;cookie&amp;rdquo;; authentication method is 1440 seconds (24 minutes). That is, after 24 minutes of inactivity, the next request will take the user to the login page. To increase the session lifetime, set the value of the variable to say, 60x longer:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$cfg[&lt;span style="color:#e6db74"&gt;&amp;#39;LoginCookieValidity&amp;#39;&lt;/span&gt;] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1440&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;60&lt;/span&gt;; &lt;span style="color:#75715e"&gt;// 86400 means one day (24-hours)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Отслеживание ошибок и уведомлений PHP</title><link>https://www.rodush.com/2011/03/%D0%BE%D1%82%D1%81%D0%BB%D0%B5%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA-%D0%B8-%D1%83%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9-php/</link><pubDate>Sun, 20 Mar 2011 20:04:48 +0000</pubDate><guid>https://www.rodush.com/2011/03/%D0%BE%D1%82%D1%81%D0%BB%D0%B5%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA-%D0%B8-%D1%83%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9-php/</guid><description>&lt;p&gt;Иногда бывает необходимо отследить некритические ошибки, возникающие в работе РНР скрипта (&lt;code&gt;E_WARNING&lt;/code&gt;, &lt;code&gt;E_NOTICE&lt;/code&gt;, etc.) и куда-то их грамотно собрать.&lt;/p&gt;
&lt;p&gt;К примеру, мы хотим сделать валидацию XML файла с помощью &lt;code&gt;XMLReader&lt;/code&gt; (кстати, об этом, думаю, можно рассказать в отдельной публикации). В случае, если XML невалидный, то выбросить исключение, прекратив дальнейшую работу.&lt;/p&gt;
&lt;p&gt;Все ошибки валидации выдаются через &amp;ldquo;WARNING&amp;rdquo;-сообщения.&lt;/p&gt;
&lt;p&gt;Для того, чтобы получить такое сообщение можно поступить следующим образом:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// Track the errors (to be able to store the PHP error message)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$oldConfigValue &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ini_set&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;track_errors&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;1&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; ($xmlReader&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;read&lt;/span&gt;()) {} &lt;span style="color:#75715e"&gt;// полностью читаем XML
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#f92672"&gt;!&lt;/span&gt;$xmlReader&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;isValid&lt;/span&gt;())
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;throw&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Exception&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;XML does not conform to schema. &amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;.&lt;/span&gt; $php_errormsg);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// Set back track_errors setting:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ini_set&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;track_errors&amp;#39;&lt;/span&gt;, $oldConfigValue);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Здесь мы сначала устанавливаем директиву РНР &lt;code&gt;'track_errors'&lt;/code&gt; (Отслеживать ошибки) в TRUE (1). А далее — magic! 🙂&lt;/p&gt;</description></item><item><title>Virtual box — как увеличить размер диска</title><link>https://www.rodush.com/2010/12/virtual-box-%D0%BA%D0%B0%D0%BA-%D1%83%D0%B2%D0%B5%D0%BB%D0%B8%D1%87%D0%B8%D1%82%D1%8C-%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80-%D0%B4%D0%B8%D1%81%D0%BA%D0%B0/</link><pubDate>Sat, 11 Dec 2010 23:29:21 +0000</pubDate><guid>https://www.rodush.com/2010/12/virtual-box-%D0%BA%D0%B0%D0%BA-%D1%83%D0%B2%D0%B5%D0%BB%D0%B8%D1%87%D0%B8%D1%82%D1%8C-%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80-%D0%B4%D0%B8%D1%81%D0%BA%D0%B0/</guid><description>&lt;p&gt;В своей практике использую Virtual box для изучения Linux ОС под основной системой Windows.&lt;/p&gt;
&lt;p&gt;Несколько раз сталкивался с ситуацией, когда на виртуальном жестком диске Virtual box’a заканчивалось место. Создавать новый диск большего размера и начинать работу с чистого листа как-то не привлекает. Для решения такой проблемы сейчас я лично знаю 2 метода. Начну с более (очень) простого, о котором узнал совсем недавно и был приятно обрадован, насколько легко решается задача.&lt;/p&gt;</description></item><item><title>Описание типов данных для WSDL во внешнем файле</title><link>https://www.rodush.com/2010/10/describing-types-for-wsdl-in-external-file/</link><pubDate>Wed, 27 Oct 2010 08:47:22 +0000</pubDate><guid>https://www.rodush.com/2010/10/describing-types-for-wsdl-in-external-file/</guid><description>&lt;p&gt;Здесь я покажу пример описания типов во внешнем файле и подключении этого файла в wsdl-описании вашего веб-сервиса.&lt;/p&gt;
&lt;p&gt;Когда у вас относительно немного методов выставленных для веб-сервиса и нет каких-либо сложных custom структур-типов данных, то описание этих самых типов можно реализовать прямо в основном wsdl файле. Когда же количество методов с нестардантными параметрами уже значительно, то для удобства описание типов данных можно вынести во внешний файл.&lt;/p&gt;
&lt;p&gt;Обратите внимание, что этот импортируемый файл должен быть полноценным xml файлом — с блоком&lt;/p&gt;</description></item></channel></rss>