Mr.KTO blog

Софт  →  Как скрыть диск в Windows

31 декабря 2011

В интернете столько ответов на этот вопрос, и всё через реестр, или твикеры.

А сделать это можно гораздо проще:

1. Правой кнопкой на Моём компьютере, пункт "Управление"
(или: Пуск, Панель управления, Администрирование, Управление компьютером; или + R, compmgmt.msc)

2. Перейти на пункт "Управление дисками"

3. Выбрать раздел с нужной буквой диска, правой кнопкой "Изменить букву диска или путь к диску...", выделить эту букву и нажать удалить.
НЕ ОШИБИТЕСЬ и не удалите сам раздел! Перед удалением должно быть сообщение:"Удаление буквы диска для тома может сделать запуск некоторых программ невозможным. Вы действительно хотите удалить эту букву диска?"

AdSense  →  Неограниченное число AdWords-купонов по 1000р.

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 (и вроде отменили плату за активацию аккуанта). В противном случае – столкнуться с огромной инфляцией, я не смотрел сейчас, но уже год назад цена кликов была в разы выше, чем в Яндекс.Директе. Девальвация? Да.

C++  →  Отслеживание пользователя, скачавшего .exe

24 октября 2011

Уж не помню зачем это нужно.
Но суть в том, чтобы пользователь (зарегистрированный или анонимный), скачивающий триал вашей программы с сайта как-то учитывался. Чтобы программа "знала" откуда он пришёл (affid, referer, контекст/adsense/тизеры, seo/запрос в поисковике, др. рекламная компания).

Для этого нужно при скачивании как-то передать, скажем PHPSESSID установщику вашего софта, фактически .exe-файлу.
Вот варианты:

  1. Отслеживать как-то по ip-адресу, лазить в кукисы браузеров на локальном компе... Ненадёжно и малореально.
  2. Добавить 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");
  3. И вот, собственно, моя идея:
    Как правило, даже после компиляции программы, в её бинарном виде всё-равно остаются строки с названием контролов: Label-ов/Edit-ов. Можно создать скрытый (аттрибут hiden) Edit1 и вписать туда что-то вроде: "MYPROGSESSID=_____=ENDOFSESSID" (если используете инсталлятор - то найти способ оставить метку там).
    Теперь скомпилировать исполняемый файл, проверить что текст нашей строки не изменился, открыв в любом hex-редакторе (UltraEdit напр.)
    Дальше идёт PHP-скрипт скачки, кот. до стандартных хидеров ещё и модифицирует .exe-файл:

    str_replace("MYPROGSESSID=_____=ENDOFSESSID", $_REQUEST['PHPSESSID']);
  4. (Для ускорения процесса можно кешировать позицию этой строки в файле ($pos = stripos()), проверив дату модификации файла (filemtime(), после чего fopen(, "wb"); fseek(, $pos); fwrite();)
    Собственно, этот способ не ограничивается Edit1-контролом. Вы можете попробовать добавить файл с определённой строкой-токеном в ресурсы (не представляю как это делается :lol:), добавить определённый файл картинки в инсталлятор (попросив «установить» его в %programfiles%), после чего прочитать его из уже установленной программы.

____________
Подписка на рубрику C++/Шаровара - теперь БЕСПЛАТНО! Да, купон на скидку 99.7% без НДС.

Другие  →  Теперь на MrKTO.com ещё удобней

19 сентября 2011

Я понимаю, что многое из того, что я пишу – просто справочная информация, которая бывает нужна только в определённые моменты. Я и не ожидаю, что вы будете читать каждый пост, ради бога, не делайте этого!

Зато теперь, вы можете быстро получить доступ к той ценной информации, которая находится здесь.

Просто зайдите на mrkto.com и... начинайте сразу набирать текст и жмите Enter!

(Благодаря тому, что после загрузки сайта курсор ввода будет уже в поле поиска).

_________________________
Кстати, вы наверно не заметили маленькую кнопочку Tweet, сливающуюся со светло-синим фоном блока "мне нравится" (при просмотре отдельного поста)

Далее »

SEO  →  Ещё один js-редирект, кот. не палится Гуглом

16 сентября 2011

Не знаю, как насчёт предыдущего. Но вот вам ещё один:

  1. Регим сайт на фрихосте. Пример: 001webs.com, freezoka.net
  2. Сразу после тэга <body> размещаем такой код:
    <img src="pic.jpg" onerror="document.write('<script src=\'img.js\'></script>');">
  3. Берём такой код:
    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>');
  4. Пропускаем его через 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,{}))
  5. Сохраняем это в img.js
  6. Берём следующий код:
    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

  7. Как и с прошлым, пропускаем через /paker/ с Base62
  8. Сохраняем в adv.js
  9. Ну и в скрипте TDS-ки (http://наш.домен.com/go.php), в принципе, может быть всего одна строчка:
    <?php
    header("Location: http://freebr.ru/");

Ссылки:

Дизайн  →  Фотошоп как выровнять слой по центру

9 июля 2011

По центру холста

  1. Edit/Preferences/Guides,Grid&Slices - Grid: Gridline every: 50 percent, Subdivisions: 1
  2. Теперь можно показать сетку: Ctrl+' (View/Show/Grid)
  3. И перетащить слой на центр, он прилипнет по центру сетки.

По центру другого слоя

  1. Нажать Ctrl+; (View/Show/Guides). Если направляющих ещё нет, – показать линейку (Ctrl+R, View/Rulers) и вытащить из линейки горизонтальную и вертикальную направляющие.
  2. Выделить слой относительно которого центрировать, перетащить вертикальную и горизонтальную направляющие на центр слоя (они прилипаяют к центру и границам).
  3. Выделить слой, который нужно центрировать. В инструмент Move Tool (V) – поставить опцию (под главным меню) Show Transform Controls (я также ставлю опцию  Auto-Select: Layer, чтобы легче было выделять).
  4. И вот, относительно Guides теперь можно стрелочками подвинуть слой по центру рамочки Transform Controls, увеличив масштаб, если нужно.

PHP  →  Зачем в PHP 4 писали __construct()

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();
Страница 1 из 12123456789101112»