<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Mr.KTO blog » C++</title>
	
	<link>http://mrkto.com</link>
	<description>Программирование, PHP, дизайн, Парсинг, граббинг</description>
	<pubDate>Sat, 26 May 2012 21:51:49 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/MisterCpp" /><feedburner:info uri="mistercpp" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Отслеживание пользователя, скачавшего .exe</title>
		<link>http://feedproxy.google.com/~r/MisterCpp/~3/QGLehZ-3SVw/</link>
		<comments>http://mrkto.com/exe_sessid/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 22:52:00 +0000</pubDate>
		<dc:creator>mrkto</dc:creator>
		
		<category><![CDATA[C++]]></category>

		<category><![CDATA[Шаровара]]></category>

		<guid isPermaLink="false">http://mrkto.com/?p=791</guid>
		<description><![CDATA[Уж не помню зачем это нужно.
Но суть в том, чтобы пользователь (зарегистрированный или анонимный), скачивающий триал вашей программы с сайта как-то учитывался. Чтобы программа "знала" откуда он пришёл (affid, referer, контекст/adsense/тизеры, seo/запрос в поисковике, др. рекламная компания).
Для этого нужно при скачивании как-то передать, скажем PHPSESSID установщику вашего софта, фактически .exe-файлу.
Вот варианты:

Отслеживать как-то по ip-адресу, лазить [...]]]></description>
			<content:encoded><![CDATA[<p>Уж не помню зачем это нужно.<br />
Но суть в том, чтобы пользователь (зарегистрированный или анонимный), скачивающий триал вашей программы с сайта как-то учитывался. Чтобы программа "знала" откуда он пришёл (affid, referer, контекст/adsense/тизеры, seo/запрос в поисковике, др. рекламная компания).</p>
<p>Для этого нужно при скачивании как-то передать, скажем PHPSESSID установщику вашего софта, фактически .exe-файлу.<br />
Вот варианты:</p>
<ol>
<li>Отслеживать как-то по ip-адресу, лазить в кукисы браузеров на локальном компе... Ненадёжно и малореально.</li>
<li>Добавить sessid в имя скачиваемого файла, – и при установке проверить <a title="просто ссылка" href="http://forum.sources.ru/index.php?showtopic=327783&amp;hl=" target="_blank">Application-&gt;ExeName</a> | <a title="MSDN - GetModuleFileName function" href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms683197(v=vs.85).aspx" target="_blank">GetModuleFileName</a>.<br />
(Вообще, это неплохой приём, например, <a title="Блог разработчика » Blog Archive » Эволюция портабельности" href="http://begemotov.net/creator/shareware/evolyutsiya-portabelnosti/" target="_blank">для портативных версий софта</a>).</p>
<pre style="font-size:10px">&lt;?php
header("Cache-Control: private");
header("Content-Length: 123456");
header("Content-Type: application/octet-stream");
header("Expires: Sun, 23 Oct 2011 22:15:21 GMT");
header("Content-Disposition: attachment;filename=<strong>bs_637653-jnFT6TYu.exe</strong>");</pre>
</li>
<li>И вот, собственно, моя идея:<br />
Как правило, даже после компиляции программы, в её бинарном виде всё-равно остаются строки с названием контролов: Label-ов/Edit-ов. Можно создать скрытый (аттрибут hiden) Edit1 и вписать туда что-то вроде: "MYPROGSESSID=_____=ENDOFSESSID" (если используете инсталлятор - то найти способ оставить метку там).<br />
Теперь скомпилировать исполняемый файл, проверить что текст нашей строки не изменился, открыв в любом hex-редакторе (UltraEdit напр.)<br />
Дальше идёт PHP-скрипт скачки, кот. до стандартных хидеров ещё и модифицирует .exe-файл:</p>
<pre>str_replace("MYPROGSESSID=_____=ENDOFSESSID", $_REQUEST['PHPSESSID']);</pre>
</li>
<p>(Для ускорения процесса можно кешировать позицию этой строки в файле (<code>$pos = stripos()</code>), проверив дату модификации файла (<code>filemtime()</code>, после чего <code>fopen(, "wb"); fseek(, $pos); fwrite();</code>)<br />
Собственно, этот способ не ограничивается Edit1-контролом. Вы можете попробовать добавить файл с определённой строкой-токеном в ресурсы <sup>(не представляю как это делается :lol:)</sup>, добавить определённый файл картинки в инсталлятор (попросив «установить» его в %programfiles%), после чего прочитать его из уже установленной программы.</ol>
<p>____________<br />
<a title="rss" href="http://mrkto.com/category/cplusplus/feed/" target="_self">Подписка на рубрику C++/Шаровара</a> - теперь БЕСПЛАТНО! Да, купон на скидку 99.7% без НДС.</p>
<blockquote style="background:yellow"><p><b>Понравился пост? – Поделитесь ссылкой:</b> <input size="50" type="text" value="&lt;a href=&quot;http://mrkto.com/exe_sessid/&quot;&gt;Отслеживание пользователя, скачавшего .exe&lt;/a&gt;" readonly="readonly" onclick="this.select();"> <a target="_blank" href="http://twitter.com/intent/tweet?text=%D0%9E%D1%82%D1%81%D0%BB%D0%B5%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F%2C+%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D0%B2%D1%88%D0%B5%D0%B3%D0%BE+.exe+http://mrkto.com/exe_sessid/"><img style="margin-bottom:-5px" src="/tweetn.png" width="55" height="20" border="0"/></a></p></blockquote><hr style="margin-top: 12px;" /><div style="float: left; padding-bottom: 7px;"><font style="font-size:10px">© 2011 <a href="http://mrkto.com">MRKTO.COM</a> | <a href="http://mrkto.com/exe_sessid/">Постоянная ссылка</a> | <a href="http://mrkto.com/exe_sessid/#comments">Комментарии (7) (Больше! Больше!) »</a></font></div>
<p><a href="http://feedads.g.doubleclick.net/~a/uQ4CYHkAJQiPnx2_IVDc0zi5rFM/0/da"><img src="http://feedads.g.doubleclick.net/~a/uQ4CYHkAJQiPnx2_IVDc0zi5rFM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/uQ4CYHkAJQiPnx2_IVDc0zi5rFM/1/da"><img src="http://feedads.g.doubleclick.net/~a/uQ4CYHkAJQiPnx2_IVDc0zi5rFM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/MisterCpp/~4/QGLehZ-3SVw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrkto.com/exe_sessid/feed/</wfw:commentRss>
		<feedburner:origLink>http://mrkto.com/exe_sessid/</feedburner:origLink></item>
		<item>
		<title>Первая запись в рубрике C++</title>
		<link>http://feedproxy.google.com/~r/MisterCpp/~3/0xyMfMEm_A0/</link>
		<comments>http://mrkto.com/cpp/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 17:04:03 +0000</pubDate>
		<dc:creator>mrkto</dc:creator>
		
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://mrkto.com/?p=521</guid>
		<description><![CDATA[Пожалуй, пока я не буду открывать отдельный блог для записей по теме программирования на языке C++. Посмотрим что из этого выйдет. А пока можете подписаться на рубрику c++.
Я начал программировать на СИ до увлечения веб-программированием и собственно PHP. Собственно, и php мне практически не пришлось изучать из-за похожести языков, достаточно было только мануала.
В качестве среды [...]]]></description>
			<content:encoded><![CDATA[<p>Пожалуй, пока я не буду открывать отдельный блог для записей по теме программирования на языке C++. Посмотрим что из этого выйдет. А пока можете <a href="http://feeds.feedburner.com/MisterCpp" target="_blank">подписаться на рубрику c++</a>.</p>
<p>Я начал программировать на СИ до увлечения веб-программированием и собственно <a title="подписаться на рубрику PHP" href="http://feeds.feedburner.com/MisterPhp" target="_blank">PHP</a>. Собственно, и php мне практически не пришлось изучать из-за похожести языков, достаточно было только <a href="http://php.rus-phpnuke.com/" target="_blank">мануала</a>.</p>
<p>В качестве среды разработки сейчас я использую <a title="скачать" href="http://rutracker.org/forum/viewtopic.php?t=654532" target="_blank">Borland C++ Builder 6.0</a>.</p>
<p>Сегодня хочу привести пример, насколько стало велико желание <a title="сомнительная &quot;красота кода&quot;" href="http://www.alik.su/articles/10-ugly-programming-techniques/" target="_blank">красоту кода</a> php перенести в программы на c++. Допустим есть некая функция, которая возвращает какое-то число результов.</p>
<pre>int c() {
    return 3;
}</pre>
<p>И мы хотим проверить, есть ли рельтаты (<code>c()!=0</code>) при этом записав это число в переменной (<code>d=c()</code>). В php это выглядело бы так: <code>if ($d = c())</code>. В c++ это вызовет <em>Warning: Possibly incorrect assignment</em>. И правильным решением было бы просто в Project/Options/Compiller/Warnings отключить уведомление об этом ворнинге (<a title="google code search" href="http://google.com/codesearch?hl=ru&amp;lr=&amp;q=if%5Cs%2A%5C%28%5Cs%2A%5Cw%2B%5Cs%2A%3D%5Cs%2A%5Cw%2B%5C%28+lang%3Ac%2B%2B&amp;sbtn=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA" target="_blank">как многие</a>). Но мы ведь идеалисты, чёрты бы их всех побрал, и для нас нет простых путей. Мы напишем: <code>if (true == (d = c()))</code>. И всё будет верно, пока ф-ция <code>c()</code> возвращает 1 или 0. Но для <code>return 3;</code> это условие окажется ложным. Всё потому, что при сравнения int-овского типа с bool-евским в СИ <small>(по крайней мере в компиляторе BCB)</small> bool преобразуется в int. Получается <code>if (1 == (3))</code>. Значит, нам следовало писать: <code>if (true == (bool)(d = c()))</code>.<br />
Соответственно, более простой вариант:</p>
<pre><span style="text-decoration: line-through;">if ((d = c()) &gt; 0)</span>
if (0 != (d = c())) // или:
if ((bool)(d = c()))</pre>
<p>Для PHP тоже надо быть внимательными. В то время, как <code>if (true == $d = c())</code> <small>(скобки можно убрать из-за <a title="PHP: Приоритет выполнения операторов - Manual" href="http://docs.php.net/manual/ru/language.operators.precedence.php" target="_blank">приоритета операторов</a>)</small> даст ожидаемое <code>true == true</code>. Если мы хотим сравнить какию-то числовую константу с переменной, потенциально содержащей bool-значение: <code>if (true == 2) // if ($mode == AUTO)</code>. То для получения нужного нам результата сравнения (<code>2==2</code>) нужно не забыть <a title="PHP: Манипуляции с типами - Manual" href="http://docs.php.net/manual/ru/language.types.type-juggling.php" target="_blank">преобразовать тип</a> к int (<code>if ((int)$mode == AUTO)</code>).</p>
<p>-------------------------------------------------</p>
<p><span id="more-521"></span>Из <a href="http://twitter.com/mrkto" target="_blank">моего Twitter</a> последнее по теме <a title="mrkto #cpp" href="http://twitter.com/#search?q=mrkto%20%23cpp" target="_blank">#cpp</a>:</p>
<p># Чтобы указывать версию приложения только в одном файле, а использовать и в другом: <code>extern char Application__Version[] = "1.0.0";</code></p>
<p>-------------------------------------------------</p>
<p>Ссылки по C++/Builer:</p>
<p><a href="http://cppbuilder.ru/" target="_blank">C++Builder Русское Сообщество Разработчиков</a></p>
<p><a href="http://forum.codenet.ru/forumdisplay.php?f=40" target="_blank">C++Builder на codenet – FAQ Список наиболее часто задаваемых вопросов</a></p>
<p><a href="http://alenacpp.blogspot.com/" target="_blank">АЛЁНА C++</a></p>
<p>-------------------------------------------------</p>
<p><strong>Книги.</strong> Единственная книга, которую я бы порекомендовал, как для начинающих, так и уже знающих основы:</p>
<p>Павловская - «<a title="скачать" href="http://rutracker.org/forum/viewtopic.php?t=2532192" target="_blank">C/C++. Программирование на языке высокого уровня</a>» (+<a title="скачать" href="http://rutracker.org/forum/viewtopic.php?t=694316" target="_blank">Практикум</a>, <a title="скачать" href="http://rutracker.org/forum/viewtopic.php?t=1595371" target="_blank">Структурное программирование: Практикум</a>)</p>
<p>-------------------------------------------------</p>
<blockquote style="background:yellow"><p><b>Понравился пост? – Поделитесь ссылкой:</b> <input size="50" type="text" value="&lt;a href=&quot;http://mrkto.com/cpp/&quot;&gt;Первая запись в рубрике C++&lt;/a&gt;" readonly="readonly" onclick="this.select();"> <a target="_blank" href="http://twitter.com/intent/tweet?text=%D0%9F%D0%B5%D1%80%D0%B2%D0%B0%D1%8F+%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C+%D0%B2+%D1%80%D1%83%D0%B1%D1%80%D0%B8%D0%BA%D0%B5+C%2B%2B+http://mrkto.com/cpp/"><img style="margin-bottom:-5px" src="/tweetn.png" width="55" height="20" border="0"/></a></p></blockquote><hr style="margin-top: 12px;" /><div style="float: left; padding-bottom: 7px;"><font style="font-size:10px">© 2010 <a href="http://mrkto.com">MRKTO.COM</a> | <a href="http://mrkto.com/cpp/">Постоянная ссылка</a> | <a href="http://mrkto.com/cpp/#comments">Комментарии (5) (Больше! Больше!) »</a></font></div>
<p><a href="http://feedads.g.doubleclick.net/~a/pxaMUg5bIIrkfJ9cg-kj4RQ-6r4/0/da"><img src="http://feedads.g.doubleclick.net/~a/pxaMUg5bIIrkfJ9cg-kj4RQ-6r4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/pxaMUg5bIIrkfJ9cg-kj4RQ-6r4/1/da"><img src="http://feedads.g.doubleclick.net/~a/pxaMUg5bIIrkfJ9cg-kj4RQ-6r4/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/MisterCpp/~4/0xyMfMEm_A0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrkto.com/cpp/feed/</wfw:commentRss>
		<feedburner:origLink>http://mrkto.com/cpp/</feedburner:origLink></item>
		<item>
		<title>include_once() в C++</title>
		<link>http://feedproxy.google.com/~r/MisterCpp/~3/87pU-koi4Ng/</link>
		<comments>http://mrkto.com/include_once_cpp/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 21:01:37 +0000</pubDate>
		<dc:creator>mrkto</dc:creator>
		
		<category><![CDATA[C++]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://mrkto.com/?p=391</guid>
		<description><![CDATA[Только недавно до меня дошло :), зачем нужен такой код в *.h хедер-файлах:
#ifndef Unit1H
#define Unit1H

// содержимое Unit1.h (заголовки функций...)
// будет исполнено только 1 раз

#endif
По идее то же можно использовать и для PHP. Вдруг кому-то пригодится:
if (!defined('filePHP')):
define("filePHP", 1);

// содержимое php-файла, выполняемое 1 раз

endif;
Понравился пост? – Поделитесь ссылкой:  © 2009 MRKTO.COM &#124; Постоянная ссылка &#124; 1 [...]]]></description>
			<content:encoded><![CDATA[<p>Только недавно до меня дошло :), зачем нужен такой код в *.h хедер-файлах:</p>
<pre>#ifndef Unit1H
#define Unit1H

// содержимое Unit1.h (заголовки функций...)
// будет исполнено только 1 раз

#endif</pre>
<p>По идее то же можно использовать и для PHP. Вдруг кому-то пригодится:</p>
<pre>if (!defined('filePHP')):
define("filePHP", 1);

// содержимое php-файла, выполняемое 1 раз

endif;</pre>
<blockquote style="background:yellow"><p><b>Понравился пост? – Поделитесь ссылкой:</b> <input size="50" type="text" value="&lt;a href=&quot;http://mrkto.com/include_once_cpp/&quot;&gt;include_once() в C++&lt;/a&gt;" readonly="readonly" onclick="this.select();"> <a target="_blank" href="http://twitter.com/intent/tweet?text=include_once%28%29+%D0%B2+C%2B%2B+http://mrkto.com/include_once_cpp/"><img style="margin-bottom:-5px" src="/tweetn.png" width="55" height="20" border="0"/></a></p></blockquote><hr style="margin-top: 12px;" /><div style="float: left; padding-bottom: 7px;"><font style="font-size:10px">© 2009 <a href="http://mrkto.com">MRKTO.COM</a> | <a href="http://mrkto.com/include_once_cpp/">Постоянная ссылка</a> | <a href="http://mrkto.com/include_once_cpp/#comments">1 комментарий (Нужно больше...) »</a></font></div>
<p><a href="http://feedads.g.doubleclick.net/~a/-FgIyFICzdRgoW-pEwZh_rPJlzQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/-FgIyFICzdRgoW-pEwZh_rPJlzQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/-FgIyFICzdRgoW-pEwZh_rPJlzQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/-FgIyFICzdRgoW-pEwZh_rPJlzQ/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/MisterCpp/~4/87pU-koi4Ng" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrkto.com/include_once_cpp/feed/</wfw:commentRss>
		<feedburner:origLink>http://mrkto.com/include_once_cpp/</feedburner:origLink></item>
	</channel>
</rss>

