<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Блог Данилы Алексеева</title>
	
	<link>http://ratswolf.com</link>
	<description>Надейся и жди - вся жизнь впереди</description>
	<lastBuildDate>Tue, 14 Feb 2012 17:58:07 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ratswolf" /><feedburner:info uri="ratswolf" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Среднеквадратичное приближение функций</title>
		<link>http://feedproxy.google.com/~r/ratswolf/~3/z3y7Q8d_9mM/</link>
		<comments>http://ratswolf.com/2011/10/23/%d1%81%d1%80%d0%b5%d0%b4%d0%bd%d0%b5%d0%ba%d0%b2%d0%b0%d0%b4%d1%80%d0%b0%d1%82%d0%b8%d1%87%d0%bd%d0%be%d0%b5-%d0%bf%d1%80%d0%b8%d0%b1%d0%bb%d0%b8%d0%b6%d0%b5%d0%bd%d0%b8%d0%b5/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 07:21:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[алгоритмы]]></category>

		<guid isPermaLink="false">http://ratswolf.com/?p=450</guid>
		<description><![CDATA[Добрый день, читатель. Сегодня я решил написать об одном методе из моей лабораторной по вычислительному практикуму (и заодно получить инвайт на Хабрахабр). С исходным кодом (на C#), блэкджеком и плюшками. Итак, что требуется? Написать программу, вычисляющую среднеквадратичное приближение функции, заданной таблично, по степенному базису &#8212; методом наименьших квадратов. Сразу оговорюсь, что тригонометрический базис я не [...]]]></description>
			<content:encoded><![CDATA[<p>Добрый день, читатель. Сегодня я решил написать об одном методе из моей лабораторной по вычислительному практикуму (и заодно получить инвайт на Хабрахабр). С исходным кодом (на C#), блэкджеком и плюшками.</p>
<p>Итак, что требуется? Написать программу, вычисляющую среднеквадратичное приближение функции, заданной таблично, по степенному базису &#8212; методом наименьших квадратов. Сразу оговорюсь, что тригонометрический базис я не рассматривал и в этой статье его брать не буду.</p>
<p>Посмотреть статью можно на <a href="http://habrahabr.ru/blogs/algorithm/131335/">Хабрахабре</a>.</p>
<img src="http://feeds.feedburner.com/~r/ratswolf/~4/z3y7Q8d_9mM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ratswolf.com/2011/10/23/%d1%81%d1%80%d0%b5%d0%b4%d0%bd%d0%b5%d0%ba%d0%b2%d0%b0%d0%b4%d1%80%d0%b0%d1%82%d0%b8%d1%87%d0%bd%d0%be%d0%b5-%d0%bf%d1%80%d0%b8%d0%b1%d0%bb%d0%b8%d0%b6%d0%b5%d0%bd%d0%b8%d0%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ratswolf.com/2011/10/23/%d1%81%d1%80%d0%b5%d0%b4%d0%bd%d0%b5%d0%ba%d0%b2%d0%b0%d0%b4%d1%80%d0%b0%d1%82%d0%b8%d1%87%d0%bd%d0%be%d0%b5-%d0%bf%d1%80%d0%b8%d0%b1%d0%bb%d0%b8%d0%b6%d0%b5%d0%bd%d0%b8%d0%b5/</feedburner:origLink></item>
		<item>
		<title>Ярлык в области уведомлений</title>
		<link>http://feedproxy.google.com/~r/ratswolf/~3/_DH-yxKX89U/</link>
		<comments>http://ratswolf.com/2011/06/25/%d1%8f%d1%80%d0%bb%d1%8b%d0%ba-%d0%b2-%d0%be%d0%b1%d0%bb%d0%b0%d1%81%d1%82%d0%b8-%d1%83%d0%b2%d0%b5%d0%b4%d0%be%d0%bc%d0%bb%d0%b5%d0%bd%d0%b8%d0%b9/#comments</comments>
		<pubDate>Sat, 25 Jun 2011 12:11:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мозг]]></category>
		<category><![CDATA[интерфейс]]></category>

		<guid isPermaLink="false">http://ratswolf.com/?p=440</guid>
		<description><![CDATA[Сегодня я всего лишь хочу привлечь внимание к одной проблеме &#8212; различающихся способов сворачивания программ в область уведомлений. Недавно я поспорил с другом из-за µTorrent - я всегда настраиваю его так, чтобы при нажатии кнопки &#171;Свернуть&#187; он сворачивался в область уведомлений и &#171;Закрыть&#187; &#8212; закрывался. По мнению друга, логичнее сделать, чтобы после нажатия &#171;Свернуть&#187; программа сворачивалась [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня я всего лишь хочу привлечь внимание к одной проблеме &#8212; различающихся способов сворачивания программ в область уведомлений.</p>
<p>Недавно я поспорил с другом из-за µTorrent - я всегда настраиваю его так, чтобы при нажатии кнопки &#171;Свернуть&#187; он сворачивался в область уведомлений и &#171;Закрыть&#187; &#8212; закрывался. По мнению друга, логичнее сделать, чтобы после нажатия &#171;Свернуть&#187; программа сворачивалась в панель задач, &#171;Закрыть&#187; &#8212; в область уведомлений, а закрывалась при выборе в меню пункта &#171;Выход&#187;.</p>
<p>Приведу свою аргументацию, она довольно проста. Когда вы пишете программу, и в ней есть код, который закрывает дочернее окно, то закрывается именно это окно. Если же в коде обозначено, что надо закрыть главное окно, то завершает работу вся программа. И если уже задумано так, что по &#171;Закрыть&#187; закрывается вся программа, то зачем переназначать действие этой кнопки, это ведь путает конечного пользователя. От таких переназначений и вся неразбериха.</p>
<p>Я решил обратиться к официальному источнику, и нашел <a href="http://www.microsoft.com/download/en/details.aspx?utm_source=feedburner&amp;utm_medium=twitter&amp;utm_campaign=Feed%3a+MicrosoftDownloadCenter+(Microsoft+Download+Center)&amp;id=2695#tm" target="_blank">Руководство по созданию пользовательских интерфейсов для Windows</a>. Внимательно посмотрев, что там написано про область уведомлений, нашел следующее на странице 792:</p>
<blockquote><p>Minimizing programs to the notification area<br />
Note: Minimizing program windows to the notification area is no longer recommended for Windows 7. Use regular taskbar buttons instead. Your program may support both mechanisms for backward compatibility.</p>
<p>• To reduce taskbar clutter, consider providing the ability to minimize programs to the notification area only if all of the following apply:<br />
- The program can have only a single instance.<br />
- The program is run for an extended period of time.<br />
- The icon shows status.<br />
- The icon can be a notification source.<br />
- Doing so is optional and users must opt in.<br />
• Use the Minimize button on the application&#8217;s title bar, not the Close button.</p></blockquote>
<p>В переводе получается примерно так:</p>
<blockquote><p>Минимизация программы в область уведомлений<br />
Примечание: минимизация окна программы в область уведомлений больше не рекомендуется для Windows 7. Вместо этого используйте обычные кнопки панели задач. Ваша программа может поддерживать оба механизма для обратной совместимости.</p>
<p>• Для борьбы с засорением панели задач, следует рассмотреть вопрос о предоставлении возможности минимизации программы в область уведомлений, только если выполняются следующие условия:<br />
- Программа может иметь только один экземпляр.<br />
- Программа выполняется в течение длительного периода времени.<br />
- Значок показывает статус.<br />
- Значок может быть источником уведомлений.<br />
- Это не является обязательным и пользователи должны иметь возможность настройки<br />
• Используйте кнопку Свернуть в строке заголовка приложения, а не кнопку Закрыть.</p></blockquote>
<p>Microsoft даже не рекомендует, а прописывает как должное &#171;Используйте кнопку Свернуть в строке заголовка приложения, а не кнопку Закрыть&#187;.</p>
<p>Надеюсь, что в скором времени все разработчики станут придерживаться данного руководства, чтобы не вводить в заблуждение и без того запутавшихся пользователей!</p>
<img src="http://feeds.feedburner.com/~r/ratswolf/~4/_DH-yxKX89U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ratswolf.com/2011/06/25/%d1%8f%d1%80%d0%bb%d1%8b%d0%ba-%d0%b2-%d0%be%d0%b1%d0%bb%d0%b0%d1%81%d1%82%d0%b8-%d1%83%d0%b2%d0%b5%d0%b4%d0%be%d0%bc%d0%bb%d0%b5%d0%bd%d0%b8%d0%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ratswolf.com/2011/06/25/%d1%8f%d1%80%d0%bb%d1%8b%d0%ba-%d0%b2-%d0%be%d0%b1%d0%bb%d0%b0%d1%81%d1%82%d0%b8-%d1%83%d0%b2%d0%b5%d0%b4%d0%be%d0%bc%d0%bb%d0%b5%d0%bd%d0%b8%d0%b9/</feedburner:origLink></item>
		<item>
		<title>Администрация ответственности не несет</title>
		<link>http://feedproxy.google.com/~r/ratswolf/~3/-d4yd5oRRcc/</link>
		<comments>http://ratswolf.com/2011/04/10/%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%b8%d1%81%d1%82%d1%80%d0%b0%d1%86%d0%b8%d1%8f-%d0%be%d1%82%d0%b2%d0%b5%d1%82%d1%81%d1%82%d0%b2%d0%b5%d0%bd%d0%bd%d0%be%d1%81%d1%82%d0%b8-%d0%bd%d0%b5-%d0%bd%d0%b5/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 13:08:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[новости]]></category>

		<guid isPermaLink="false">http://ratswolf.com/?p=428</guid>
		<description><![CDATA[Ужасный выдался денек. А началось все с похода в универмаг. Погода у нас не лучшая сейчас, поэтому взял с собой зонтик, положил его в пакет. Зашел в магазин, положил в камеру хранения, закрыл и взял ключ от нее с собой. Купил что нужно. Выхожу &#8212; опа, а камера-то открыта и в ней оставлен ключ &#8212; [...]]]></description>
			<content:encoded><![CDATA[<p>Ужасный выдался денек. А началось все с похода в универмаг.</p>
<p>Погода у нас не лучшая сейчас, поэтому взял с собой зонтик, положил его в пакет. Зашел в магазин, положил в камеру хранения, закрыл и взял ключ от нее с собой. Купил что нужно. Выхожу &#8212; опа, а камера-то открыта и в ней оставлен ключ &#8212; точно такой же, как у меня и номер там тот же &#8212; 67 (я уже говорил, что не люблю цифру 4 &#8212; не по Фен-Шую? 6 + 7 = 13, 1 + 3 = 4). Пошел к администрации &#8212; несколько минут доказывал, что я ничего не попутал, если бы не было дубликата ключа мог бы и не убедить. Посмотрели видеозапись &#8212; действительно, утащила женщина, вполне приличная, лет 50. А что, честный человек. Видно, как она выходит из магазина, прощупывает, что лежит в пакете, сворачивает его и кладет в сумочку.</p>
<p>Но на этом все не закончилось. Из принципа пошел в нашу Доблестную Полицию, прихватив паспорт. Настоял на оформлении дела (лень им это делать), приводили доводы, что у них у самих крали телефоны и ничего они не предпринимали. Ну ладно, по закону им пришлось все оформить.</p>
<p>Но ведь нашли, как ко мне подкопаться &#8212; живу не по месту прописки более 90 суток! Заставили подписать бумагу и вписать туда, что оформлю временную регистрацию.</p>
<p>В общем, не самый лучший день в моей жизни.</p>
<input id="8DDF6C4D47EE4C83BF23C8D3F866912A" type="hidden" value="D8D957E5988E42869EFABAC08FA4F133" />
<input id="8DDF6C4D47EE4C83BF23C8D3F866912A" type="hidden" value="D8D957E5988E42869EFABAC08FA4F133" />
<input id="8DDF6C4D47EE4C83BF23C8D3F866912A" type="hidden" value="D8D957E5988E42869EFABAC08FA4F133" />
<input id="8DDF6C4D47EE4C83BF23C8D3F866912A" type="hidden" value="D8D957E5988E42869EFABAC08FA4F133" />
<input id="8DDF6C4D47EE4C83BF23C8D3F866912A" type="hidden" value="D8D957E5988E42869EFABAC08FA4F133" />
<input id="8DDF6C4D47EE4C83BF23C8D3F866912A" type="hidden" value="D8D957E5988E42869EFABAC08FA4F133" />
<input id="8DDF6C4D47EE4C83BF23C8D3F866912A" type="hidden" value="D8D957E5988E42869EFABAC08FA4F133" />
<input id="8DDF6C4D47EE4C83BF23C8D3F866912A" type="hidden" value="D8D957E5988E42869EFABAC08FA4F133" />
<input id="8DDF6C4D47EE4C83BF23C8D3F866912A" type="hidden" value="D8D957E5988E42869EFABAC08FA4F133" />
<img src="http://feeds.feedburner.com/~r/ratswolf/~4/-d4yd5oRRcc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ratswolf.com/2011/04/10/%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%b8%d1%81%d1%82%d1%80%d0%b0%d1%86%d0%b8%d1%8f-%d0%be%d1%82%d0%b2%d0%b5%d1%82%d1%81%d1%82%d0%b2%d0%b5%d0%bd%d0%bd%d0%be%d1%81%d1%82%d0%b8-%d0%bd%d0%b5-%d0%bd%d0%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ratswolf.com/2011/04/10/%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%b8%d1%81%d1%82%d1%80%d0%b0%d1%86%d0%b8%d1%8f-%d0%be%d1%82%d0%b2%d0%b5%d1%82%d1%81%d1%82%d0%b2%d0%b5%d0%bd%d0%bd%d0%be%d1%81%d1%82%d0%b8-%d0%bd%d0%b5-%d0%bd%d0%b5/</feedburner:origLink></item>
		<item>
		<title>Доброе дело #0</title>
		<link>http://feedproxy.google.com/~r/ratswolf/~3/NxsRvNDqXcs/</link>
		<comments>http://ratswolf.com/2011/03/25/%d0%b4%d0%be%d0%b1%d1%80%d0%be%d0%b5-%d0%b4%d0%b5%d0%bb%d0%be-0/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 11:34:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Деньги]]></category>
		<category><![CDATA[Скрипты]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://ratswolf.com/?p=419</guid>
		<description><![CDATA[Добрый день. Дай, думаю, выложу исходники биржи трафика Вирвин &#8212; все равно ведь закрыта. Чего зря пропадать коду, может кому пригодится. Что и делаю сейчас, скачать можно здесь. Также сообщаю для тех, кто бы хотел защитить свои биржи трафика, но посчитал сервис Эдбака слишком дорогим, что скоро состоится перезапуск и теперь сервис будет работать уже [...]]]></description>
			<content:encoded><![CDATA[<p>Добрый день.</p>
<p>Дай, думаю, выложу исходники биржи трафика Вирвин &#8212; все равно ведь закрыта. Чего зря пропадать коду, может кому пригодится. Что и делаю сейчас, скачать можно <a href="http://ratswolf.com/wp-content/uploads/2011/03/virwin.zip">здесь</a>.</p>
<p>Также сообщаю для тех, кто бы хотел защитить свои биржи трафика, но посчитал сервис <a href="http://adbaka.ru/" target="_blank">Эдбака</a> слишком дорогим, что скоро состоится перезапуск и теперь сервис будет работать уже на бесплатной основе.</p>
<p>Удачи и до новых встреч.</p>
<p><em>P.S. Нашел хорошую партнерку с оплатой за действие (pay per action) &#8212; смотреть <a href="http://goo.gl/oD5Rw" target="_blank">здесь</a>.</em></p>
<img src="http://feeds.feedburner.com/~r/ratswolf/~4/NxsRvNDqXcs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ratswolf.com/2011/03/25/%d0%b4%d0%be%d0%b1%d1%80%d0%be%d0%b5-%d0%b4%d0%b5%d0%bb%d0%be-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ratswolf.com/2011/03/25/%d0%b4%d0%be%d0%b1%d1%80%d0%be%d0%b5-%d0%b4%d0%b5%d0%bb%d0%be-0/</feedburner:origLink></item>
		<item>
		<title>Автозамена ключей Nod32 (запись #4)</title>
		<link>http://feedproxy.google.com/~r/ratswolf/~3/anBrEPByEVw/</link>
		<comments>http://ratswolf.com/2011/03/19/%d0%b0%d0%b2%d1%82%d0%be%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b0-%d0%ba%d0%bb%d1%8e%d1%87%d0%b5%d0%b9-nod32-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-4/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 16:27:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Скрипты]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://ratswolf.com/?p=411</guid>
		<description><![CDATA[Как я уже писал в предыдущей статье, я переписал программу для обновления ключей Nod32 на C#. Но нет предела совершенству. Неделю назад я решил, что просто не имеет смысла хранить какой-либо ключ на сервере, кроме последнего. Из этого вытекает, что нет смысла в базе данных. Обновление ключа происходит при двойном клике на номер ключа в [...]]]></description>
			<content:encoded><![CDATA[<p>Как я уже писал в <a href="http://ratswolf.com/2011/02/12/обещал-c-будет-c/">предыдущей статье</a>, я переписал программу для обновления ключей Nod32 на C#.</p>
<p>Но нет предела совершенству. Неделю назад я решил, что просто не имеет смысла хранить какой-либо ключ на сервере, кроме последнего. Из этого вытекает, что нет смысла в базе данных. Обновление ключа происходит при двойном клике на номер ключа в моей программе (пользователи и не подозревают, да и вероятность появления багов из-за кривых настроек нода существенно снижается).</p>
<p>Итак, индексный файл у меня содержит последний ключ и отдающий этот ключ код:</p>
<pre class="brush: php; gutter: true">&lt;?php

$avUserName = &quot;EAV-54794372&quot;;
$avPassword = &quot;0 214 224 233 229 240 207 242 57 100 77 173 128 200 44 117 154 49 94 188&quot;;
$avExpiried = &quot;2017-02-20&quot;;

echo &quot;OK\n&quot;.$avUserName.&quot;\n&quot;.$avPassword.&quot;\n&quot;.$avExpiried;

?&gt;</pre>
<p>И есть файл add.php, в котором содержится код, модифицирующий индексный файл:</p>
<pre class="brush: php; gutter: true">&lt;?php

$avUserName = AddSlashes($_POST[&quot;username&quot;]);
$avPassword = AddSlashes($_POST[&quot;password&quot;]);
$avExpiried = AddSlashes($_POST[&quot;expiried&quot;]);

$file = @fopen(&quot;index.php&quot;, &quot;w&quot;);
fwrite($file, &quot;&lt;?php\n\n&quot;);
fwrite($file, &quot;\$avUserName = \&quot;&quot;.$avUserName.&quot;\&quot;;\n&quot;);
fwrite($file, &quot;\$avPassword = \&quot;&quot;.$avPassword.&quot;\&quot;;\n&quot;);
fwrite($file, &quot;\$avExpiried = \&quot;&quot;.$avExpiried.&quot;\&quot;;\n\n&quot;);
fwrite($file, &quot;echo \&quot;OK\\n\&quot;.\$avUserName.\&quot;\\n\&quot;.\$avPassword.\&quot;\\n\&quot;.\$avExpiried;\n\n?&gt;&quot;);
fclose($file);

?&gt;</pre>
<p>В обычном режиме программа просто берет ключ и устанавливает в систему. В случае двойного клика по номеру ключа программа обращается к файлу add.php и передает ему текущие значения ключа на компе, с которого она запущена. Вот собственно и все. Проще, пожалуй, некуда.</p>
<p>Скачать исходный код программы можно <a href="http://ratswolf.com/wp-content/uploads/2011/03/avactive.zip">здесь</a>.</p>
<img src="http://feeds.feedburner.com/~r/ratswolf/~4/anBrEPByEVw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ratswolf.com/2011/03/19/%d0%b0%d0%b2%d1%82%d0%be%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b0-%d0%ba%d0%bb%d1%8e%d1%87%d0%b5%d0%b9-nod32-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ratswolf.com/2011/03/19/%d0%b0%d0%b2%d1%82%d0%be%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b0-%d0%ba%d0%bb%d1%8e%d1%87%d0%b5%d0%b9-nod32-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-4/</feedburner:origLink></item>
		<item>
		<title>Переезд сайта</title>
		<link>http://feedproxy.google.com/~r/ratswolf/~3/upEINjfnDuQ/</link>
		<comments>http://ratswolf.com/2011/03/08/%d0%bf%d0%b5%d1%80%d0%b5%d0%b5%d0%b7%d0%b4-%d1%81%d0%b0%d0%b9%d1%82%d0%b0/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 17:22:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Деньги]]></category>
		<category><![CDATA[Скрипты]]></category>
		<category><![CDATA[dle]]></category>
		<category><![CDATA[новости]]></category>

		<guid isPermaLink="false">http://ratswolf.com/?p=399</guid>
		<description><![CDATA[Добрый день! Сегодня наконец-то переезжаю на виртуальный сервер. По этой причине блог может быть недоступен в ночь с 8 на 9 марта. Жаль, что модуль Витрины ссылок пока никто не купил, ну да ничего, я уже добавил на пару посещаемых сайтов о DataLife Engine (и работающих конечно же на этой CMS) информацию о возможности за [...]]]></description>
			<content:encoded><![CDATA[<p>Добрый день!</p>
<p>Сегодня наконец-то переезжаю на <a href="http://clck.ru/7ze6" target="_blank">виртуальный сервер</a>. По этой причине блог может быть недоступен в ночь с 8 на 9 марта.</p>
<p>Жаль, что модуль <a href="http://www.plati.ru/asp/pay.asp?idd=1102896" target="_blank">Витрины ссылок</a> пока никто не купил, ну да ничего, я уже добавил на пару посещаемых сайтов о DataLife Engine (и работающих конечно же на этой CMS) информацию о возможности за небольшую плату получить очень неплохой модуль (поскорее бы опубликовали). Срочно нужно продать 10-12 его копий, чтобы получить 12$ * 10-12 копий = 144$ ≈ 3600-4200 рублей &#8212; чтобы в свою очередь купить нетбук. Так что придется постараться с распространением.</p>
<p><img title="LinkCase - простая и удобная витрина ссылок" src="http://ratswolf.com/wp-content/uploads/2011/03/logo.png" alt="" width="300" height="70" /></p>
<p>&nbsp;</p>
<p><em>09.03.2011 0:33: Переезд полностью завершен.</em></p>
<img src="http://feeds.feedburner.com/~r/ratswolf/~4/upEINjfnDuQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ratswolf.com/2011/03/08/%d0%bf%d0%b5%d1%80%d0%b5%d0%b5%d0%b7%d0%b4-%d1%81%d0%b0%d0%b9%d1%82%d0%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ratswolf.com/2011/03/08/%d0%bf%d0%b5%d1%80%d0%b5%d0%b5%d0%b7%d0%b4-%d1%81%d0%b0%d0%b9%d1%82%d0%b0/</feedburner:origLink></item>
		<item>
		<title>LinkCase 1.0</title>
		<link>http://feedproxy.google.com/~r/ratswolf/~3/77knT1lsn18/</link>
		<comments>http://ratswolf.com/2011/03/06/linkcase-1-0/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 19:11:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Деньги]]></category>
		<category><![CDATA[Скрипты]]></category>
		<category><![CDATA[dle]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://ratswolf.com/?p=383</guid>
		<description><![CDATA[Добрый день. Пару дней назад мне поступил заказ на создание модуля &#171;Витрина ссылок&#187; с интеграцией в CMS DataLife Engine. Однако на следующий день заказчик передумал, тем не менее я решил дописать сей модуль. Представляю вам &#171;LinkCase 1.0 &#8212; Витрина ссылок для DLE&#187;. Вот пара скринов его работы: Более подробное описание можно узнать в магазине Plati.ru. [...]]]></description>
			<content:encoded><![CDATA[<p>Добрый день.</p>
<p>Пару дней назад мне поступил заказ на создание модуля &#171;Витрина ссылок&#187; с интеграцией в CMS DataLife Engine. Однако на следующий день заказчик передумал, тем не менее я решил дописать сей модуль.</p>
<p>Представляю вам &#171;LinkCase 1.0 &#8212; Витрина ссылок для DLE&#187;. Вот пара скринов его работы:</p>
<p style="text-align: center;"><a href="http://ratswolf.com/wp-content/uploads/2011/03/1.png"  rel="sexylightbox"><img class="aligncenter size-full wp-image-385" title="LinkCase скрин 1" src="http://ratswolf.com/wp-content/uploads/2011/03/1.png" alt="" width="535" height="499" /></a></p>
<p style="text-align: center;"><a href="http://ratswolf.com/wp-content/uploads/2011/03/2.png"  rel="sexylightbox"><img class="aligncenter size-full wp-image-386" title="LinkCase скрин 2" src="http://ratswolf.com/wp-content/uploads/2011/03/2.png" alt="" width="535" height="497" /></a></p>
<p>Более подробное описание можно узнать в магазине <a href="http://www.plati.ru/asp/pay.asp?idd=1102896" target="_blank">Plati.ru</a>. Цена модуля &#8212; 12$</p>
<img src="http://feeds.feedburner.com/~r/ratswolf/~4/77knT1lsn18" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ratswolf.com/2011/03/06/linkcase-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ratswolf.com/2011/03/06/linkcase-1-0/</feedburner:origLink></item>
		<item>
		<title>Обещал C#? Будет C#</title>
		<link>http://feedproxy.google.com/~r/ratswolf/~3/maAfkdYboFk/</link>
		<comments>http://ratswolf.com/2011/02/12/%d0%be%d0%b1%d0%b5%d1%89%d0%b0%d0%bb-c-%d0%b1%d1%83%d0%b4%d0%b5%d1%82-c/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 15:44:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Скрипты]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://ratswolf.com/?p=370</guid>
		<description><![CDATA[Добрый день. Помните программу для автозамены ключей Nod32? Если нет, посмотрите на 2 поста назад. Освежили знания? Итак, я переписал ее на C# (заодно изменив и серверную часть). В конце статьи я приложу архив с программой и серверным скриптом. А сейчас хочу рассказать о некоторых тонкостях. Я уже не помню, делал ли отдельный поток в [...]]]></description>
			<content:encoded><![CDATA[<p>Добрый день. Помните программу для автозамены ключей Nod32? Если нет, посмотрите на 2 поста назад.</p>
<p>Освежили знания? Итак, я переписал ее на C# (заодно изменив и серверную часть). В конце статьи я приложу архив с программой и серверным скриптом. А сейчас хочу рассказать о некоторых тонкостях.</p>
<p>Я уже не помню, делал ли отдельный поток в версии на Delphi, но кажется, что нет. А в новой версии на C# сделал. Создал класс Checker, которому при создании передаются адрес для запроса к серверу, старый ключ и пароль к этому ключу. Таймер, который проверяет наличие новых ключей создает поток таким вот образом:</p>
<pre class="brush: csharp; gutter: true">Checker checker = new Checker(server, username, password);
Thread thread = new Thread(new ThreadStart(checker.Check));
thread.Start();</pre>
<p>Ну и собственно весь прикол потока.</p>
<p>Далее немаловажный момент. Я сейчас использую Windows 7 x64. И 4 часа я убил на выяснение того, почему же вся ветка реестра HKEY_LOCAL_MACHINE у меня в программе не читается, пока не оказалось, что 32-битные приложения не могут работать с ней напрямую. Собрав 64-битную версию, я получил то, чего хотел &#8212; возможность чтения/записи информации из ветки реестра, в которой НОД хранит информацию о ключе:</p>
<pre class="brush: csharp; gutter: true">RegistryKey regKey = Registry.LocalMachine.OpenSubKey(@&quot;SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Profiles\@My profile&quot;, true);
username = (string)regKey.GetValue(&quot;Username&quot;);</pre>
<p>Для автозагрузки проги:</p>
<pre class="brush: csharp; gutter: true">regKey = Registry.LocalMachine.OpenSubKey(@&quot;SOFTWARE\Microsoft\Windows\CurrentVersion\Run&quot;, true);
if (regKey != null)
{
  regKey.SetValue(&quot;AVActive&quot;, Application.ExecutablePath);
}</pre>
<p>Ну вот вроде и все с тонкостями. Ниже можно скачать исходники.</p>
<p><a href="http://ratswolf.com/wp-content/uploads/2011/02/avactive.zip">Скачать архив</a></p>
<p>P.S. В этой версии нет необходимости вручную добавлять ключи в базу. Когда серверный скрипт видит, что программа запущена не в первый раз и ключа, который она использует, отсутствует в базе, скрипт добавляет этот ключ в базу и в течение трех часов этот ключ оказывается установленным на все компьютеры, использующие программу.</p>
<img src="http://feeds.feedburner.com/~r/ratswolf/~4/maAfkdYboFk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ratswolf.com/2011/02/12/%d0%be%d0%b1%d0%b5%d1%89%d0%b0%d0%bb-c-%d0%b1%d1%83%d0%b4%d0%b5%d1%82-c/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://ratswolf.com/2011/02/12/%d0%be%d0%b1%d0%b5%d1%89%d0%b0%d0%bb-c-%d0%b1%d1%83%d0%b4%d0%b5%d1%82-c/</feedburner:origLink></item>
		<item>
		<title>Переезд, C# и все-все-все</title>
		<link>http://feedproxy.google.com/~r/ratswolf/~3/D_l6eqgY9x0/</link>
		<comments>http://ratswolf.com/2011/01/29/%d0%bf%d0%b5%d1%80%d0%b5%d0%b5%d0%b7%d0%b4-c-%d0%b8-%d0%b2%d1%81%d0%b5-%d0%b2%d1%81%d0%b5-%d0%b2%d1%81%d0%b5/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 09:34:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[новости]]></category>

		<guid isPermaLink="false">http://ratswolf.com/?p=366</guid>
		<description><![CDATA[Добрый день, посетитель блога. Рад сообщить об успешном окончании семестра, а также надеюсь что и у тебя дела не хуже. В феврале мой блог переедет с хостинга на виртуальный сервер (если удастся договриться о MoneyBack с хостинг-компанией &#8212; обещают, что деньги забрать можно в любой момент). А пока что он неприлично долго генерируется на стороне [...]]]></description>
			<content:encoded><![CDATA[<p>Добрый день, посетитель блога. Рад сообщить об успешном окончании семестра, а также надеюсь что и у тебя дела не хуже.</p>
<p>В феврале мой блог переедет с хостинга на виртуальный сервер (если удастся договриться о MoneyBack с хостинг-компанией &#8212; обещают, что деньги забрать можно в любой момент). А пока что он неприлично долго генерируется на стороне сервера.</p>
<p>Изучаю C# &#8212; скорее всего в ближайшее время на сайте появятся записи с информацией, что же в нем хорошего и что на нем можно написать &#8212; в контексте создания программ (не люблю теорию). А хорошего в нем предостаточно.</p>
<p>Спасибо за внимание, еще увидимся!</p>
<img src="http://feeds.feedburner.com/~r/ratswolf/~4/D_l6eqgY9x0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ratswolf.com/2011/01/29/%d0%bf%d0%b5%d1%80%d0%b5%d0%b5%d0%b7%d0%b4-c-%d0%b8-%d0%b2%d1%81%d0%b5-%d0%b2%d1%81%d0%b5-%d0%b2%d1%81%d0%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ratswolf.com/2011/01/29/%d0%bf%d0%b5%d1%80%d0%b5%d0%b5%d0%b7%d0%b4-c-%d0%b8-%d0%b2%d1%81%d0%b5-%d0%b2%d1%81%d0%b5-%d0%b2%d1%81%d0%b5/</feedburner:origLink></item>
		<item>
		<title>Автозамена ключей Nod32 (запись #2)</title>
		<link>http://feedproxy.google.com/~r/ratswolf/~3/hdMQBbXKACc/</link>
		<comments>http://ratswolf.com/2010/11/26/%d0%b0%d0%b2%d1%82%d0%be%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b0-%d0%ba%d0%bb%d1%8e%d1%87%d0%b5%d0%b9-nod32-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-2/#comments</comments>
		<pubDate>Thu, 25 Nov 2010 21:03:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мозг]]></category>
		<category><![CDATA[delphi]]></category>

		<guid isPermaLink="false">http://ratswolf.com/?p=350</guid>
		<description><![CDATA[Как же давно я не писал в блог, просто какой-то ужас. Я уже даже забыл, что собирался завершить цикл постов про автоматическую установку ключей для антивируса Nod32. Итак, что осталось сделать. А всего лишь программу, которая бы забирала ключи с сервера (отдающий их скрипт уже написан) и устанавливала в систему. Для начала хочу объявить функцию [...]]]></description>
			<content:encoded><![CDATA[<p>Как же давно я не писал в блог, просто какой-то ужас. Я уже даже забыл, что собирался завершить цикл постов про автоматическую установку ключей для антивируса Nod32.</p>
<p>Итак, что осталось сделать. А всего лишь программу, которая бы забирала ключи с сервера (отдающий их скрипт уже написан) и устанавливала в систему. Для начала хочу объявить функцию для нормального отображения русского языка при получении страницы:</p>
<pre class="brush: delphi; gutter: true">function RussianToUnicode(S: String): String;
var
  Wrd: Word;
  pW,pR: PWord;
  len: integer;
begin
  pW:=@S[1];
  len:=Length(S);
  SetLength(Result,len);
  pR:=@Result[1];
  while Len&lt;&gt;0 do
  begin
    Wrd:=pW^;
    case Wrd of
      $C0..$DF,$E0..$FF:pR^:=Wrd+50;
      else pR^:=Wrd;
    end;
    inc(pW);
    inc(pR);
    dec(Len);
  end;
end;</pre>
<p>Укажем константы и переменные:</p>
<pre class="brush: delphi; gutter: true">const
  serv = &#039;your-server.com&#039;;
  pcid = &#039;75434347623&#039;;
var
  can: boolean;
  keynod, hashnod: string;</pre>
<p>На форму кинем TButton и TIdHttp. Для TButton в событии OnClick пропишем следующее:</p>
<pre class="brush: delphi; gutter: true">// получаем ключ (ну или хотя бы пытаемся)
try
  if (can) then temp:=RussianToUnicode(idHTTP.get(&#039;http://&#039;+server+&#039;/key4nod.php?type=2&amp;pcid=&#039;+pcid));
except
  // в случае ошибки - снимаем флажок
  can:=false;
end;
// если нет новых ключей, снимаем флажок
if (temp = &#039;Нет новых ключей&#039;) then can:=false;
if (can) then keynod:=temp;   // запоминаем ключ
// получаем хеш пароля (ну вообще это не хеш, а видимо зашифрованный пароль
// и сохраненный в бинарном виде - главное, что на разных компах этот &quot;хеш&quot;
// не меняется (по крайней мере на проверенных мной трех компах)
try
  if (can) then temp:=RussianToUnicode(idHTTP.get(&#039;http://&#039;+server+&#039;/key4nod.php?type=5&amp;pcid=&#039;+pcid+&#039;&amp;key=&#039;+keynod));
except
  // надоели уже проверки, но что же поделать...
  can:=false;
end;
// бинарный код получили - можно продолжать
if (can) then hashnod:=temp;
if (can) then
begin
  codes:=TStringList.Create;
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  i:=0;
  temp:=&#039;&#039;;
  while Pos(&#039; &#039;, hashnod)&gt;0 do
  begin
    temp:=Copy(hashnod, 1, Pos(&#039; &#039;, hashnod)-1);
    Delete(hashnod, 1, Pos(&#039; &#039;, hashnod));
    Buf[i]:=StrToInt(temp);
    inc(i);
  end;
  // и пытаемся установить ключ в систему (должно быть выключено SelfDefendece)
  try
    Reg.OpenKey(&#039;SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Profiles\@My profile&#039;, True);
    Reg.WriteString(&#039;Username&#039;, keynod);
    Reg.WriteBinaryData(&#039;Password&#039;, Buf, SizeOf(Buf));
    Reg.CloseKey;
  Reg.Free;
  except
    ShowMessage(&#039;Ошибка при установке ключа&#039;);
  end;
  codes.Destroy;
end;</pre>
<p>Ну вот как-то так это и будет. Программа передает серверу id устройства, получает от него ключ в случае наличия такового, получает хеш ключа, формирует его в необходимом для записи в реестр в бинарном виде и затем производит непосредственно запись.</p>
<p>Да, чуть не забыл о самом главном. У антивируса должен быть снять флажок напротив пункта «Self-Defendece» так как иначе он будет защищать себя и не даст заменить свои настройки в реестре.</p>
<img src="http://feeds.feedburner.com/~r/ratswolf/~4/hdMQBbXKACc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ratswolf.com/2010/11/26/%d0%b0%d0%b2%d1%82%d0%be%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b0-%d0%ba%d0%bb%d1%8e%d1%87%d0%b5%d0%b9-nod32-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://ratswolf.com/2010/11/26/%d0%b0%d0%b2%d1%82%d0%be%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b0-%d0%ba%d0%bb%d1%8e%d1%87%d0%b5%d0%b9-nod32-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-2/</feedburner:origLink></item>
	</channel>
</rss>

