<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Блог: заметки с тегом хак</title>
<link>https://starcoms.ru/iwrite/tags/hak/</link>
<description>Мысли о программировании, жизни и христианстве.</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.1 (v4098)</generator>

<itunes:subtitle>Мысли о программировании, жизни и христианстве.</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Настройки MAMP Pro для слабого интернета.</title>
<guid isPermaLink="false">115</guid>
<link>https://starcoms.ru/iwrite/all/nastroyki-mamp-pro-dlya-slabogo-interneta/</link>
<pubDate>Wed, 09 Sep 2015 17:03:14 +0300</pubDate>
<author></author>
<comments>https://starcoms.ru/iwrite/all/nastroyki-mamp-pro-dlya-slabogo-interneta/</comments>
<description>
&lt;p&gt;Слабый интернет, поэтому я стряхнул пыль с MAMP Pro и начал работать в нем. Возникла необходимость обновить ядро проекта с интернета и я получаю ошибку 500, а в логах следующее:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;FastCGI: comm with server &amp;quot;/Applications/MAMP/fcgi-bin/php5.6.10.fcgi&amp;quot; aborted: idle timeout (30 sec)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Выход был найден при прочтении «&lt;a href="http://craftcms.stackexchange.com/questions/4661/fastcgi-error-when-accessing-a-local-development-site-using-mamp-pro"&gt;FastCGI error when accessing a local development site using MAMP Pro&lt;/a&gt;».&lt;br /&gt;
Последовательность действий:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Перейти в MAMP Pro  File → Edit Template → Apache → httpd.conf&lt;/li&gt;
&lt;li&gt;Выполнить Find &amp; Replace для MAMP_FastCgiServer_MAMP&lt;/li&gt;
&lt;li&gt;Закомментировать MAMP_FastCgiServer_MAMP&lt;/li&gt;
&lt;li&gt;Добавить линию конфигурации для вашей версии PHP с временным периодом, который вас устраивает:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;FastCgiServer /Applications/MAMP/fcgi-bin/php5.6.10.fcgi -idle-timeout 3600&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В результате в вас получится в httpd.conf следующее:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#MAMP_FastCgiServer_MAMP
FastCgiServer /Applications/MAMP/fcgi-bin/php5.6.10.fcgi -idle-timeout 3600&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;P.S. Важно не забыть вернуть все назад, когда появится нормальный интернет.&lt;/p&gt;
</description>
</item>

<item>
<title>Time Machine на Tomato by Shibby для Asus RT-AC68U</title>
<guid isPermaLink="false">113</guid>
<link>https://starcoms.ru/iwrite/all/time-machine-na-tomato-by-shibby-dlya-asus-rt-ac68u/</link>
<pubDate>Tue, 08 Sep 2015 18:02:18 +0300</pubDate>
<author></author>
<comments>https://starcoms.ru/iwrite/all/time-machine-na-tomato-by-shibby-dlya-asus-rt-ac68u/</comments>
<description>
&lt;p&gt;Озадачился вот своим роутером. Надоела нестабильность стоковой прошивки и решил попробовать что-то новое. Решил поставить Tomato by Shibby. Про установку из под Windows достаточно подробно написано в публикации «&lt;a href="http://www.shadowandy.net/2014/03/asus-rt-ac68u-flash-tomatousb-rt-ac68u.htm"&gt;ASUS RT-AC68U — How to flash TomatoUSB for RT-AC68U&lt;/a&gt;». Но у меня уже стояла прошивка от Merlin с открытым Telnet, поэтому все ограничилось подключением к роутеру и командами &lt;b&gt;nvram erase&lt;/b&gt;, затем &lt;b&gt;nvram commit&lt;/b&gt;, выбором файла с последней (131) прошивкой на &lt;a href="http://tomato.groov.pl/download/K26ARM/"&gt;её сайте&lt;/a&gt; и установкой.&lt;br /&gt;
В отличии от стоковой, у этой прошивки нет встроенной поддержки Time Machine, поэтому её пришлось добавить. Операция проходила в два этапа.&lt;/p&gt;
&lt;h2&gt;Этап первый: Установка репозитория Entware&lt;/h2&gt;
&lt;p&gt;Раньше нужно было сделать много манипуляций, но сейчас репозитории для моего роутера устанавливается достаточно просто. Проверьте доступ по SSH в роутере Administration → Admin Access и в путь.&lt;br /&gt;
Для флешки отформатированной в ext2/ext3 с меткой &lt;b&gt;ENTWARE&lt;/b&gt; делаем следующие настройки роутера в USB and NAS → USB Support:&lt;br /&gt;
В поле &lt;b&gt;Run after mounting&lt;/b&gt; вносим:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/sh
/opt/etc/init.d/rc.unslung start&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;и в поле &lt;b&gt;Run before unmounting&lt;/b&gt; следующее:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/sh
/opt/etc/init.d/rc.unslung stop
sleep 15
for i in `cat /proc/mounts | awk &amp;#039;/ext3/{print($1)}&amp;#039;` ; do
  mount -o remount,ro $i
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Не забываем сохранить изменения. Переходим в Administration → Scripts → Init page, вводим&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;echo &amp;quot;LABEL=ENTWARE /opt ext3 defaults 1 1&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;и вновь сохраняем. Перегружаем роутер и устанавливаем Entware. В текущей прошивке он устанавливается простой командой через Telnet.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;entware-install.sh&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Дополнительно об установке можно почитать в статье «&lt;a href="http://www.zyxmon.org/2015/02/14/ustanavlivaem-entware-arm-na-marshrutizator-s-proshivkoj-tomato-versiya-s-kartinkami-i-kommentariyami-dlya-chajnikov/"&gt;Устанавливаем Entware.arm на маршрутизатор с прошивкой tomato от Shibby&lt;/a&gt;»&lt;/p&gt;
&lt;h2&gt;Этап второй: Настройка Time Machine&lt;/h2&gt;
&lt;p&gt;Приступим к настройке Time Machine и начнём с установки нужных пакетов. Может они не все нужны, поэтому комментарии экспертов приветствуются!&lt;br /&gt;
Устанавливаем &lt;b&gt;netatalk&lt;/b&gt; для реализации протокола AppleTalk нужного для Time Machine и  &lt;b&gt;avahi-daemon&lt;/b&gt; с утилитами, для имитации сервиса Bonjour.  Bonjour нужен для наглядного представления Time Machine в Mac OS. Слухи ходят, что &lt;b&gt;netatalk&lt;/b&gt; сам это умеет и он не нужен&lt;br /&gt;
Пакет &lt;b&gt;busybox&lt;/b&gt; даст нам возможность использовать некоторые недоступные Unix команды. Например, добавлять пользователей.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;opkg install netatalk avahi-daemon avahi-utils busybox&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Создаём файл &lt;b&gt;S00setup&lt;/b&gt; с первой строкой #!/bin/sh для загрузки настроек нужных для Time Machine при перезагрузке роутера и кладём его в /opt/etc/init.d/&lt;b&gt;S00setup&lt;/b&gt;&lt;br /&gt;
Теперь сделайте его исполняемым&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;chmod +x /opt/etc/init.d/S00setup&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Настраиваем avahi&lt;/h3&gt;
&lt;p&gt;Настройку &lt;b&gt;avahi&lt;/b&gt; начинаем с создания файла &lt;b&gt;afpd.service&lt;/b&gt; со следующем содержанием&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; standalone=&amp;#039;no&amp;#039;?&amp;gt;&amp;lt;!--*-nxml-*--&amp;gt;
&amp;lt;!DOCTYPE service-group SYSTEM &amp;quot;avahi-service.dtd&amp;quot;&amp;gt;
&amp;lt;service-group&amp;gt;
  &amp;lt;name replace-wildcards=&amp;quot;yes&amp;quot;&amp;gt;%h&amp;lt;/name&amp;gt;
    &amp;lt;service&amp;gt;
    &amp;lt;type&amp;gt;_afpovertcp._tcp&amp;lt;/type&amp;gt;
    &amp;lt;port&amp;gt;548&amp;lt;/port&amp;gt;
  &amp;lt;/service&amp;gt;
  &amp;lt;service&amp;gt;
    &amp;lt;type&amp;gt;_device-info._tcp&amp;lt;/type&amp;gt;
    &amp;lt;port&amp;gt;0&amp;lt;/port&amp;gt;
    &amp;lt;txt-record&amp;gt;model=TimeCapsule6&amp;lt;/txt-record&amp;gt;
  &amp;lt;/service&amp;gt;
&amp;lt;/service-group&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;который кладём по следующему пути /opt/etc/avahi/services/&lt;b&gt;afpd.service&lt;/b&gt;&lt;br /&gt;
Редактируем /opt/etc/avahi/&lt;b&gt;avahi-daemon.conf&lt;/b&gt;, раскомментировав линию &lt;b&gt;host-name&lt;/b&gt; и дав имя:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;host-name=TimeCapsule&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Чтобы &lt;b&gt;TimeCapsule&lt;/b&gt; показывалась в Finder всем, нужно добавить группу &lt;b&gt; nogroup&lt;/b&gt; для всех пользователей.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;addgroup nogroup&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Делаем автосоздание группы при перезапуске пользователя.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;echo &amp;quot;addgroup nogroup&amp;quot; &amp;gt;&amp;gt; /opt/etc/init.d/S00setup&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Запускаем &lt;b&gt;avahi&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/opt/etc/init.d/S42avahi-daemon start&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;и в боковой панели Finder должена появиться TimeCapsule.&lt;/p&gt;
&lt;h3&gt;Настраиваем netatalk&lt;/h3&gt;
&lt;p&gt;Приступаем к самому важному. Настраиваем &lt;b&gt;netatalk&lt;/b&gt; начиная с редактирования файла /opt/etc/netatalk/&lt;b&gt;AppleVolumes.default&lt;/b&gt;. Добавляем в конце следующую строку:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/mnt/LABELDISK/TimeMachine &amp;quot;TimeMachine&amp;quot; volsizelimit:300000 
veto:&amp;quot;/lost+found/Network Trash Folder/Temporary Items/&amp;quot; cnidscheme:dbd options:usedots,upriv,tm allow:USER&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;, где /mnt/LABELDISK/TimeMachine — путь к папке, где будут хранится бекапы;&lt;br /&gt;
«TimeMachine» — имя расшаренного ресурса, которое появится в настройках Time Machine в Mac OS;&lt;br /&gt;
volsizelimit:300000 — максимальный размер бекапов (~314GB);&lt;br /&gt;
veto:«/lost+found/Network Trash Folder/Temporary Items/» — прячем не нужные папки;&lt;br /&gt;
cnidscheme:dbd — уменьшаем количество ошибок (может влиять на скорость создания бекапа);&lt;br /&gt;
options:usedots,upriv,tm — показываем что можно использовать для создания Time Machine и кто может это делать;&lt;br /&gt;
allow:USER — пользователь имеющий доступ к папке для бекапов, которого мы сейчас создадим.&lt;/p&gt;
&lt;p&gt;Поменяем конфигурацию &lt;b&gt;netatalk&lt;/b&gt; по следующему пути /opt/etc/netatalk/&lt;b&gt;afpd.conf&lt;/b&gt; удалив или закомментировав старую и вставив новую&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;- -tcp -noddp -uamlist -uams_dhx.so,uams_dhx2_passwd.so -nosavepassword&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Эта конфигурация отключает гостевой доступ, возможность сохранить пароли локально и настраивает работу с паролями.&lt;/p&gt;
&lt;p&gt;Создаём пользователя &lt;b&gt;USER&lt;/b&gt; с паролем &lt;b&gt;PASS&lt;/b&gt; (это пример, пароль какой вы хотите) и даём ему права на папку для бекапов.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;adduser USER
chown -R USER /mnt/LABELDISK/TimeMachine/&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Настраиваем автосоздание этого пользователя при перезагрузке роутера.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;echo &amp;#039;adduser USER&amp;#039; &amp;gt;&amp;gt; /opt/etc/init.d/S00setup
echo &amp;#039;echo -e &amp;quot;PASS\PASS&amp;quot; | passwd USER&amp;#039; &amp;gt;&amp;gt; /opt/etc/init.d/S00setup&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Вот тут загвоздка!&lt;/b&gt; Пользователь создаётся, но пароль ему не присваивается. Может кто подскажет?&lt;/p&gt;
&lt;p&gt;В результате у нас получается следующее содержимое файла /opt/etc/init.d/&lt;b&gt;S00setup&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/sh
addgroup nogroup
adduser USER
echo -e &amp;quot;PASS\PASS&amp;quot; | passwd USER&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Перезапускаем &lt;b&gt;netatalk&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/opt/etc/init.d/S27afpd restart&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Или просто перезагрузите роутер целиком. Теперь вы должны подключиться к TimeCapsule как созданный выше пользователь и настроить Time Machine на Mac OS.&lt;/p&gt;
&lt;p&gt;P.S. Я ещё не достаточно долго тестировал работу Time Machine на Tomato by Shibby и мог что-то забыть, поэтому возможны неточности.&lt;br /&gt;
P.S.S. Дополнительно можно почитать «&lt;a href="http://vena.net/post/86026368825/using-an-asus-router-as-a-time-capsule"&gt;Using an ASUS router as a Time Capsule&lt;/a&gt;», «&lt;a href="http://d43.me/blog/1660/concisest-guide-to-setting-up-time-machine-server-on-ubuntu-server-12-04/"&gt;Concisest guide to setting up Time Machine server on Ubuntu Server 12.04, 14.04 &amp; Debian&lt;/a&gt;» и «&lt;a href="http://wiki.openwrt.org/timemachine"&gt;Time Capsule on OpenWRT (Apple File Protocol Server with Time Machine Support&lt;/a&gt;)».&lt;/p&gt;
</description>
</item>

<item>
<title>Работаем над ошибками или метод резинового утёнка</title>
<guid isPermaLink="false">100</guid>
<link>https://starcoms.ru/iwrite/all/rabotaem-nad-oshibkami-ili-metod-rezinovogo-utyonka/</link>
<pubDate>Fri, 23 Jan 2015 14:36:51 +0300</pubDate>
<author></author>
<comments>https://starcoms.ru/iwrite/all/rabotaem-nad-oshibkami-ili-metod-rezinovogo-utyonka/</comments>
<description>
&lt;p main&gt;Прочитал «&lt;a href="http://habrahabr.ru/post/248565/"&gt;7 золотых правил одного программиста&lt;/a&gt;» и первое напомнило о методе резинового утёнка. О нём мне рассказал друг программист, когда я жаловался ему на сложность нахождения ошибки в коде. В публикации даётся следующий совет при поиске ошибки:&lt;/p&gt;
&lt;p aside&gt;Ну что там у тебя? Поговорим? &lt;img  alt="Резиновый утёнок" src="//starcoms.ru/iwrite/pictures/little-duck@2x.jpg"&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;«Универсальный совет — идите спать! Ну или хотя бы отвлекитесь на чашку чая. Когда, через некоторое время, вы вернётесь к коду наверняка станет ясно, что тут лишний оператор отрицания, или перепутаны две переменные с похожими именами, или ещё какая-нибудь мелочь, в которой мы никогда никому не признаемся.»&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Совет отличный! В школе немало задач по физике решены следуя этому совету. Но что делать если сроки горят? Спать, чаёвничать или гулять не вариант! На помощь приходит метод резинового утёнка.&lt;/p&gt;
&lt;p&gt;Метод заключается в том, что на стол ставится игрушка (резиновый утёнок). А при поиске ошибки ты с ней ведёшь диалог. Объясняешь игрушке, что делается в каждой строке кода. И часто в этом диалоге и находишь спрятанную ошибку. Игрушку можно представлять в воображении и это может быть и не игрушка. Эйнштейн, ваш ребёнок или другая личность для мысленного диалога. Ну а если есть возможность пообщаться вслух, то это еще лучше. Тогда к поиску ошибки подключаются и ваши уши.&lt;/p&gt;
&lt;p&gt;У вас ошибка в коде? Резиновый утёнок спешит на помощь!&lt;/p&gt;
</description>
</item>


</channel>
</rss>