пятница, 28 ноября 2008 г.

как работать с прокси из под XHE

Когда нам требуется что либо зарегать в большом количестве, то у нас возникает нужда в работе с прокси иначе просто тупа забанят. Сервисов фришных и не только проксей в инете хватает. Например: вот тут http:\\www.freeproxy.ru можно найти free proxy и не только прокси, но и прокси чекер, а так же платные прокси.

А вот использование их в XHE скрипте приведено ниже:

// первое что мы делаем читаем прокси из файла в массив
$proxy = file("proxy.txt");

// далее идём по массиву
for ($j=0;$jменьшеcount($proxy);$j++)
{
// устанавливаем текущее прокси
enable_proxy("all connections",$proxy[$j]);
// проверяем прокси на нужном нам урле и нужное нам время
// если за 30 секунд мы не подключились к google прокси плохая

$connect = $browser->check_connection("http://www.google.com",30);
// если плохая прокся идём дальше
if(!$connect)
{
$browser->disable_proxy("all connections");
continue;
}
/* тут выполняем нужные нам действия */
/* например регаем мыло или фришный хост или блог и т.д. */

}
// отключаем прокси
$browser->disable_proxy("all connections");
}

вот сообственно и вся работа с прокси :)

воскресенье, 16 ноября 2008 г.

скрипт регистрации мыла mail.com

Ниже представлен скрипт, который автоматически регистрирует мыло. Для того что бы скроипт работал требуется программа Xedant Human Emulator


// The following code is required to properly run Xedant.com Human Emulator
require("../../Templates/xedant_human_emulator.php");

/////////////////////////////////////
// пол - мужской
$male=true;
// количество создоваемых аккаунтов
// для каждого прокси
$count_accounts=3;

// длина пароля
$password_len =8;
// длина логина
$login_len =6;

////////////////////////////////////// СКРИПТ ///////////////////////////////////////////

// домен
$domen = "mail.com";//email.com,usa.com,popstar.com,europe.com,myself.com
// alumni.com, cheerful.com, consultant.com
// секретный вопрос
$quest = "Who are you?";
// секретный ответ
$answer = "XHE";

// данные пользователя
$login ="";
$password = "";
$first_name ="";
$last_name = "";
$street = "";
$city = "";
$state = "";
$zip ="";
$country = "207";
$birth_day ="";
$birth_month ="";
$birth_year="";
$mail = "";
$gender = "";

// зададим пол
if($male)
{
global $gender;
$gender = "1";
}
else
{
global $gender;
$gender = "2";
}
// индекатор для созданного аккаунта
$not_added=true;

// функции генерации и записи аакаунта в файл
include("gen_login_pass.php");

// создадим заданное число аккаунтов
for($i=0;$i<$count_accounts;$i++)
{
global $domen,$first_name, $last_name,$street,$city,$state,$zip,$mail,$birth_month,$birth_day,$birth_year,$gender,$male;

// поменяем сервис
if($i>=5)
$domen = "email.com";

// сгенерим логин и пароль
$login =generate_login($login_len) ;
$password = generate_password($password_len);
// получим остальные данные
include("fake_data.php");
// зарегаем
include("mail_com_reg.php");
// запишем зареганные аккаунты
write_email_account("c:\\mail_accounts.txt");
}

// Quit
$app->quit();
?>

четверг, 6 ноября 2008 г.

Отзывы от пользователей XHE...

Вот такие вот отзывы пишут пользователи нашей программы Xedant Human Emulator :)

Nike59:

В общем-то в рутинной работе дорвейщика-оптимизатора используются десятки различных программ и скриптов: парсеры выдачи поисковиков, сборщики кейвордов и контента со сторонних интернет ресурсов, чекеры PR, ТИЦ, тулзы для анализа конкурентов, бидов, регеры на фрихостингах, различных сервисах и т.д. и т.п. Кто в теме, то знает. Что ни задачка, то новая тулза или скрипт, а большую часть задач собственными ручками приходится решать безо всякой надежды на автоматизацию.

Естественно все это стоит приличных денег и/или немерянных затрат собственного времени. Так было и у меня. На одни регеры фрихостингов потрачено около 1к вечно-зеленых американских президентов, месяцы ожиданий и... разочарований, спаленных в паблик тем - не все прогеры одинаково полезны... И вдруг... В моей работе произошло почти невероятное - произошел гигантский технологический прорыв на новый уровень производительности и эффективности. Почти все задачи, вся повседневная рутина автоматизировались как по мановению волшебной палочки. Теперь весьма сложные задачи автоматизации сеошной работы решаются в течении минут мною самим, за редким исключением в течение нескольких часов и в особо сложных случаях - нескольких дней. Даже написание не простых регеров акков социалок или фрихостингов самостоятельно пишется в течение нескольких часов.

В моих руках оказался универсальный инструмент. С виду это обычный браузер, суть в начинке. Наполнен же он всей мощью интернет-серфинга через браузер, но на автомате. Тут тебе и полная имитация пользователя на открытой в браузере страничке, автоматических заход по расписанию и совершение разнобразных действий на любом сайте, естественно без моего вмешательства. А для особо деликатных задач предусмотрены: смена прокси, юзер-агента, разрешения экрана, акцептов и других параметров браузера на лету и, самое главное, вся мощь языка php (можно иcпользовать модули на VС++) сокрыта "под капотом" этого супер-интернет-авто, несомненно достойного легендарного агента 007. Если бы он проводил свои секретные операции в Интернет, то наверняка воспользовался бы этой программой. Именно эта аналогия с начиненной современными технологиями машиной Джеймса Бонда у меня возникла при первом же знакомстве с этой мощной и универсальной программой. Мало того, с каждым днем я открываю все новые функциональные возможности заложенные в Xedant Human Emulator его разработчиками. Потенциал программы огромен. Мало того, по моей просьбе иногда в течение нескольких часов делаются новые фичи в программу, будь то расширение фукциональности окон диалогов, проверка коннекта или дополнительные возможности отладчика. Спасибо, ребята, за отличный инструмент.

понедельник, 27 октября 2008 г.

Где брать белый контент?

Не для кого не секрет, что для того, что бы ваш сайт или блог был популярным вам нужно всего ничего - белый контент. И это хорошо если у вас есть чем поделиться с миром или у вас хорошо подвешан язык или же вы имеете широкий кругозор и можете довольно компетентно вести беседу на разные темы или же вы спец в какой то облости... а если нет... а если вам просто в падлу или же трудно писать, но вы очень хотите, что бы ваш сайт или блог был посещаем...Что делать тогда?

Всё очень просто.

Мы берём тематику для статьи. Находим соответствующий контент на английском языке, переводим его и редактируем. И при этом за вас работает компьютер. В моём случае я использую скрипт, который работает с помощью программы Xedant Human Emulator. Скрипт делает следующее - он находит по заданному вопросу заданное количество статей на заданных иностранных ресурсах (можно задавать английский, итальянский, французкий и т.д. язык и источник, например, поиск по блогам google и т.д.), используя google переводчик переводим статьи на русский и сохраняем результат в файл. В итоге мы имеем так называемый серый контент, потому как качество перевода Google переводчика оставляет желать лучшего и вот тут вот для того что бы получить белый контент мы садимся и правим ручками этот перевод. На выходе имеем белый уникальный контент довольно хорошего качества.

Какие плюсы и минусы данного процесса.

Минус один - всё равно приходится править ручками.
А плюсы - вам не надо думать над тематикой - достаточно просто ввести словосочетание new car в тематику поиска и вы получите статьи на данную тематику, из которых вы выбираете интересные вам. То есть вам не приходится ничего придумывать, а вы уже выбираете из готового. К тому же отредактировать такую статью намного легче и намного быстрее, чем написать новую.

Удаляем лишние строки из файла по ключевой фразе

Сегодня поступил ко мне такой вопрос -

этот скрипт удаляет строки, в которых содержится фраза. та что указана тут -
if (!preg_match ("/ETUFRAZUUVIDEL/i", $str))
а как сделать чтобы он удалял из исходного файла все строки, в которых есть фразы, которые содержатся в текстовом файле, допустим 1.txt ?



$strs = array ();
$fi = fopen ("in.txt", "r");
while (!feof ($fi))
{
$strs [] = trim (fgets ($fi, 4096));
}
fclose ($fi);
$fo = fopen ("out.txt", "w");
foreach ($strs as $str)
{
if (!preg_match ("/ETUFRAZUUVIDEL/i", $str))
{
fputs ($fo, $str . "\n");
}
}
fclose ($fo);


Можно сделать таким вот образом:


// грузим строки в массив
$text = file("1.txt");

$res ="";
// проверяем есть ли фраза в каждой строке массива
for($i=0;$iменьшеcount($text);$i++)
{
global $res;
$ind=strpos($text[$i],"фраза");
// если нет такой вот фразы добавляем к результирующей строке
if($ind==null)
$res="$res.$text[$i];
}

тут $res уже будет без лишних строк и мы можем её использовать как нам будет далее угодно :)

воскресенье, 12 октября 2008 г.

Сборная Украины по футболу и Кличко

Сегодня произошло два важных события для Украины на спортивных аренах. Сборная Украины по футболу встречалась с Хорватией, а наш Виталий Кличко после 3-х летнего перерыва вновь вернулся на ринг и провёл бой с чемпионом мира WBC Сэмом Питером.

Что касается сборной по футболу то меня не очень впечатлила игра вообще и нашей сборной в частности. Было два момента когда нам откровенно повезло, но как говорят дома и стены помогают :) Не знаю как наши собираются выигрывать у Англии с такой игрой... Да Хорватия сильная команда и то что мы сыграли в ничью с ними, как сказал Михайличенко сразу после матча, это тоже хорошо... но ни этого ждёт Украина... наша команда ещё не разу не выигрывала у топ-сборных - Италлия, Франция, Голландия и д.р. и это не может не разочаровывать. Если мы хотим на ЧМ 2010 это надо менять это и в апреле выигрывать у Англии! ОЛЕ!ОЛЕ!ОЛЕ!

Что касается Кличко, то Виталий откровенно порадовал столь уверенной победой. Не зря так нервничал Питер на пресс-конференции явно уже чувствовал, что это последнии мгновения когда он ещё держит чемпионский пояс в своих руках :) А вот что откровенно не порадовало это трансляция на Интере и комментатор. Интер придумал новшество и почти после каждого раунда вставлял рекламу отчего получилась мишанина рекламы и боя. Ну просто ох...ели такого говна я ещё не видел нигде, жаль нету на них управы. Не знаю кто им там продаёт права, но так испортить такое шоу это только у нас умеют. Я бы не хотел следующий матч Кличко глядеть на Интере и скорее всего и не буду, найду по спутнику или в инете, где поглядеть!!! А комментаторы у нас воще песня. Они просто не компетентны, вместо того что бы комментировать то, что происходит на ринге, он ведёт беседы с телезрителями на отвлечённые темы, типа мы итак видим что происходит на ринге, а вот последнии сплетни о Кличко мы ещё не слышали. УЖАС!!!! Так что я очень рад за Виталия и желаю ему только побед, но... шоу мне испортили! :)

суббота, 11 октября 2008 г.

О политике и телевидении...

Есть такой интересный человек Савик Шустер. Это корреспондет и телеведущий, который появился на украинском телевидении после "великой" поморанжевой революции и это чуть ли не единственный её положительный результат. Так вот этот человек как по мне сделал для политики и телевидения Украины больше, чем сами политики. Савик Шустер работал на трёх(на третьем он работает сейчас) телеканалах Украины на ICTV с программами "Свобода слова" и "Третий тайм", на Интер это проекты "Великие Украинцы" и "Свобода Савика Шустера" и сейчас проект на ТРК Украина "Шустер Live". После каждого ухода с канала он оставлял после себя передачу, которая шла в прямом эфире и говорила о политике. В итоге политики имеют возможность общаться с народом постоянно, причём на всех передачах сразу:), а мы имеем возможность увидить их во всей их красе :). Это особенно важно перед грядущими очередными досрочными выборами в парламент, та и воще не помешает знать кто и что из себя представляет.

Как мне кажется, самым удачным проектом оказался "Шустер Live" на ТРК Украина по своему содержанию и формату.

среда, 8 октября 2008 г.

Дальнею дорогой стелится земля ...

Дальнею дорогой стелится земля
Сколько дней прошло всё мимо города
Я хожу-брожу ищу тебя
Где же ты красавица моя судьба

Сколько дней исхожено сколько троп
Пробирал меня и зной и озноб
По пустыням и полям я ходил
Облик твой в душе своей я хронил

Дальнюю дорогу постелила мне земля
Чередою дни идут и города
Я иду к тебе судьба моя
Погоди немного я найду тебя

вторник, 7 октября 2008 г.

Чем хорош и чем плох AdSense

Итак у вас есть сайт, который имеет отличный и вполне привлекательный контент и на который каждый день приходит куча народу. И вы думаете о том, следует ли использовать программу Google AdSense на вашем сайте, чтобы он начал приносить вам какой то доход. Так вот, в этой статье перечислены преимущества и недостатки реализации AdSense объявлений на вашем сайте.

Начнём с плюсов +.

Прежде всего, создать AdSense кампанию на сайте очень просто. Все, что вам нужно сделать, это скопировать код JavaScript с вашего AdSense аккаунта, а затем вставить его в свою веб-страницу и AdSense объявления будут показываться на Вашем сайте постоянно. Вы всегда можете изменить цвет, формат и фон вашего объявления AdSense, если вы обнаружите, что существующие не подходят для вашей веб-страницы. Кроме того, AdSense объявления, которые показываются на Вашем сайте будут весьма актуальны для Вашего содержания. Если ваша веб-страница про кредитование жилья, AdSense объявления появляющиеся на ваших страницах будут также иметь отношение к кридитованию жилья. Если ваши страницы о страховании, Вы получите страховое объявления AdSense на ваших страницах. То есть эти объявления гарманируют с вашим контентом и таким образом имеется больше шансов что ваши поситители обратят на них внимание и сделают столь желанный клик. Появление AdSense сделало возможность заработка в сети намного проще. Раньше большинство людей зарабатывали деньги в сети, продавая что то в интернете. И если у вас не было хороших знаний и опыта в интернет-маркетинге, то вам было трудно получить даже одну продажу чего либо через ваш сайт и соответственно заработать. Заработать с помощью AdSense намного проще, потому что вы просто размещаете объявления AdSense у себя на сайте и как я уже говорил выше объявление тематически совпадают с содержимым вашего сайта и таким образом привлекают внимание ваших посетителей, и часть из них нажимает на AdSense объявления, и за это вам платят деньги. Чем больше посетителей приходит на ваш сайт, тем больше кликов на AdSense объявления, и тем больше денег вы будете зарабатывать. Однако, программа AdSense не является совершенной. Есть несколько негативных аспектов использования рекламы AdSense.

Недостатки или минусы -.

Очевидно, что самый большой недостаток программы AdSense является то, что ваша учетная запись AdSense может быть закрыта Google в любое время, если Google посчитает что на вашем сайте идут махинации в отношении программы. Google AdSense постоянно проверяет каждого издателя веб-сайта. Если Google обнаружил "кликовое мошенничество" на вашем сайте, ваш аккаунт AdSense будет приостановлен, и вы больше не будете в состоянии использовать AdSense, чтобы зарабатывать деньги. "Кликовое мошенничество" это то, чего трудно избежать. Если это произойдет с вами, то, скорее всего, ваш AdSense аккаунт будет отключен. Google должен делать это для защиты своего бизнеса. Конечно, существует альтернатива закрытому AdSense, это Yahoo Publisher Net(YPN) и яндовский бегун. Но эти две системы имеют свои большие минусы. YPN доступен только для жителей США на данный момент, а у бегуна меньше заработок при том же объёме кликов. И, наконец, еще одним недостатком AdSense является то, что вам постоянно необходимо, наполнять свой сайт большим количеством качественного контента. Ваш новый материал всегда должен представлять ценность для ваших посетителей, с тем чтобы сделать ваши объявления AdSense более прибыльными. Регулярный ввод нового контента это то, что многие веб-мастера не имееют желание делать, поскольку это требует много времени и умственных затрат.

Вот такие вот cуществуют аргументы за и против использования Google AdSense для получения прибыли. Теперь выбор стоит за вами.

Новый скрипт для XHE

Сегодня наконец-то закончил новый скрипт для нашей программы Xedant Human Emulator и этот скрипт делает следующее :

1. он создаёт блог на созданный заранее аккаунт - то есть у вас есть мыло на gmail вот вам и готовый аккаунт - так вот для этого аккаунта скрипт создаёт новый блог и постит первое сообщение на него

2. далее скрипт ищет по заданной ключевой фразе (на английском) на http://blogsearch.google.com/ соответствующюю статью на английском языке и получает контент этой статьи

3. после этого используя опять же google-вский перводчик http://translate.google.com/translate_t#enru скрипт переводит эту статью на наш великий и могучий

4. после чего публикует в этот блог

Таким образом скрипт автоматом наполняет созданный им же блог свежим и уникальным контентом, хотя надо сказать, что перевод не совершенен, но понять можно о чём идёт речь. К тому же если у вас будет желание, то вы запросто сможете отредактировать созданный уникальный контен, сделав его ещё уникальнее, это в любом случае будуте проще, чем писать его самому.

пятница, 3 октября 2008 г.

Шахтёр -Барселона своими глазами

Узнав о том, что 1 октября Шахтёр будет играть у себя дома с Барселоной я сразу понял, что хочу попасть на этот матч. И собственно говоря попал...чему бескрайне рад и в тоже время растроин. Растроин, потому что Шахтёр так нелепо отдал свою победу, до которой оставалось всего 8 минут... Да уж... Но обо всём попорядку!

Перед началом матча вокруг стадиона царила неимоверная атмасфера: огромная толпа людей заполнила почти всё пространство вокруг стадиона и почти у каждого была какая то черно-оранжевая символика любимой комнады: шарфик, кепка, флаг и т.д. Организованая толпа фанов в количестве где то человек 50 ходила вокруг стадиона и в один голос выкрикивала кричалки про донецкий Шахтёр, а следом за ними повсюду ходили пятеро здоровенных бойцов Беркута, видимо что бы фанов не побили :). Проезжающие мимо стадиона машины сигналили фанам, выражая таким образом свою поддержку любимой команде. У всех было хорошее настроение и каждый верил в победу донецкого Шахтёра... и ничего не предвешало трагедии...

Мы зашли на стадион и нашли свой сектор, сели на свои места, где нас уже ждали оранжевые флажки с символикой Шахтёра. До матча оставалось ещё минут 20 и стадион был уже заполнен более чем на половину. В ярком свете стадионных фонарей зелень газона словно сияла и, казалось, что ты даже ощущаешь запах травы. На поле разминались команды, но вскоре ушли в раздевалку.

Минут через десять команды снова появились на поле, но уже для игры. И стадион взревел, встречая свой любимый донецкий Шахтёр. Прозвучал гимн лиги чемпионов... команды попреветствовали друг друга... раздался свисток арбитра... и матч начался! До трагедии 87 минут...

В первом тайме Шахтёр, как по мне, действовал намного лучше, чем Барселона. Игроки Шахтёра много стралась атаковать и не подпускать соперников к своим воротам и в принципе это им удавалось. Было несколько упущенных моментов у ворот Барселоны и Шахтёра...

В это время на трибунах творилась что то неимоверное. Волна за волной прокатывалась по стадиону чуть затихая в ценральных сектарах, в тех что сразу под ложей, и только опасные моменты у тех или иных ворот остановливали её. Но момент проходил под раздасадованые вздохи или нервные выдохи и волна вновь рождалась и прокатывалась стадионом круг за кругом под восторженный гул требун. Болельщики яростно выкрикивали всё что они думают про судью, игроков Барселоны и тех игроков Шахтёра, которые не попадали по воротам... но больше всё таки про судью и каталонцев...

И вот она 45 минута - стадион взорвался неимоверным воплем радости - Илсиньо забил гол!!!
Шахтёр ведёт!...
и продолжает атаковать вплоть до свитка на перерыв.

Кто то пошёл за пивом, но так его и не нашёл, потому как пиво запретили продавать на стадионе, кто то попытался попасть в туалет, кто то остался на своём месте, кто то фотографировался на фоне поля. Так прошли 15 минут перерыва и команды снова вышли на поле, под радостные крики донецких болельщиков. Все ждали что Шахтёр снова бросится в атаку, как и до перерыва...

Со свистом арбитра Барса просто насела на воротах Шахтёра, игроки которого яростно и не без труда отбивали атаку за атакой. Пятов не раз спасал команду, вытаскивая просто невероятные мечи, но... надо сказать что Шахтёр вместо того что бы пытаться атаковать соперника, банально и вполне уже обыденно для нашего украинского чемпионата начал тянуть время. То там, то сям игроки донецкой команды от простого столкновения с соперником падали и корчились от боли будто их сбивали локомотивом... и за это оказались наказаны... После того как в очередной раз решил прилечь на газон Селёзнёв, а Дуляй вроде как выбил в аут... по этой причине... Барса не стала возвращать мяч и провела стремительную атаку... а игроки Шахтёра в этот момент стоя на своих местах требовали вернуть им мяч... В итоге 1:1 на 87 минуте матча и драка на поле... Но ничего не изменить, гол защитан. Естественно, что игроки Шахтёра явно подсели морально и начали ошибаться, потеряв концентрацию, чего и требовалось противнику и на 90+5 минуте Лео Месси забивает второй гол...

Ещё после первого гола стадион просто был шокирован, а многие начали покидать свои места, двигаясь в строну выхода, но когда забили второй гол, почти весь стадион поднялся и с полным разочарованием направился к выходу... Несколько флажков полетели в сторону поля...Некоторые, не желая верить в то что произошло, так и остались сидеть на своих местах, уткнувшись в взглядом в поле... прозвучал сивсток арбитра... и Шахтёр проиграл Барселоне у себя дома со счётом 1:2, выигрывая до 87 минуты... это ли не трогедия... для всех тех болельшиков, для которых до победы их любимой команды оставалось всего 8 минут...

На выходе, и за стадионом, по пути к транспорту на улицах Донецка болельщики в самых ярких и не всегда в цензурных тонах делились своим горем с другими болельшиками... Кто винил Луческу, кто судьбу, кто игроков Шахтёра... но почти все говорили о том, что сколько уже можно заниматься симулянством в надежде затянуть время, вместо того что бы продолжать бороться до последней секунды игрового времени... может быть это и есть тот рок Шахтёра, о котором так часто стали сейчас говорить.

суббота, 27 сентября 2008 г.

Автоматизация Word из С++

Когда я ещё работал не на себя было у меня такое задание автоматизировать работу Word под создание в нём шаблонов для различных документов. И я тогда с этим естественно столкнулся впервые и много рыл по инету. Много кода всякого нашлось, часть которого мне пригодилась, часть оказалась не нужной.

Вот кусок кода по автоматизации word из С++, который достаточно хорошо раскрывает, что к чему.


_Application oWord;
Documents oDocs;
_Document oDoc;
Selection oSelection;
Paragraphs oParagraphs;
Tables oTables;
Table oTable;
Range oRange;
Columns oColumns;
Column oColumn;
Rows oRows;
Row oRow;
Cells oCells;
Cell oCell;
Shading oShading;
Hyperlinks oHyperlinks;
MailMerge oMailMerge;
MailMergeFields oMailMergeFields;
COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR),
vtTrue((short)TRUE),
vtFalse((short)FALSE);
CString StrToAdd;

// запускаем word
if (!oWord.CreateDispatch("Word.Application")) {
AfxMessageBox("Word failed to start!");
} else {
// делаем его видимым
oWord.SetVisible(TRUE);

// добавляем новый документ
oDocs = oWord.GetDocuments();
oDoc = oDocs.Add(vtOptional,vtOptional);
CreateMailMergeDataFile(&oWord,&oDoc);

//добавляем адресс
StrToAdd = "State University\r\nElectrical Engineering " \
"Department";
oSelection = oWord.GetSelection();
oParagraphs = oSelection.GetParagraphs();
oParagraphs.SetAlignment(1); // 1 = wdAlignParagraphCenter
oSelection.TypeText(StrToAdd);
InsertLines(&oSelection,4);
oParagraphs.SetAlignment(0); // 0 = wdAlignParagraphLeft
oMailMerge = oDoc.GetMailMerge();
oMailMergeFields = oMailMerge.GetFields();
oMailMergeFields.Add(oSelection.GetRange(),"FirstName");
oSelection.TypeText(" ");
oMailMergeFields.Add(oSelection.GetRange(),"LastName");
oSelection.TypeParagraph();
oMailMergeFields.Add(oSelection.GetRange(),"Address");
oSelection.TypeParagraph();
oMailMergeFields.Add(oSelection.GetRange(),"CityStateZip");
InsertLines(&oSelection,4);

// устанавливаем правое равнение абазца
oParagraphs = oSelection.GetParagraphs();
oParagraphs.SetAlignment(2); // 2 = wdAlignParagraphRight

// вставляем текущюю дату
oSelection.InsertDateTime(COleVariant("dddd, MMMM dd, yyyy"),\
vtFalse,vtOptional);
InsertLines(&oSelection,2);

//меняем выравнивание на Justify
oParagraphs = oSelection.GetParagraphs();
oParagraphs.SetAlignment(3); // 3 = wdAlignParagraphJustify
oSelection.TypeText("Dear ");
oMailMergeFields.Add(oSelection.GetRange(),"FirstName");
oSelection.TypeText(",");
InsertLines(&oSelection,2);

// добавлем сообщение
StrToAdd = "Thank you for your recent request for next " \
"semester's class schedule for the Electrical " \
"Engineering Department. Enclosed with this letter " \
"is a booklet containing all the classes offered " \
"next semester at State University. Several new " \
"classes will be offered in the Electrical " \
"Engineering Department next semester. These " \
"classes are listed below.";
oSelection.TypeText(StrToAdd);
InsertLines(&oSelection,2);

// добавляем новую таблицу с 9 рядами и 4 колонками
oRange = oSelection.GetRange();
oTables = oDoc.GetTables();
oTable = oTables.Add(oRange,9,4);

// задаём ширину каждой колонки
oColumns = oTable.GetColumns();
oColumn = oColumns.Item(1);
oColumn.SetWidth(51.0,0); // 0 = wdAdjustNone
oColumn = oColumns.Item(2);
oColumn.SetWidth(198.0,0); // 0 = wdAdjustNone
oColumn = oColumns.Item(3);
oColumn.SetWidth(100.0,0); // 0 = wdAdjustNone
oColumn = oColumns.Item(4);
oColumn.SetWidth(111.0,0); // 0 = wdAdjustNone

// задаём утенение для 1 ряда как wdGray25
oRows = oTable.GetRows();
oRow = oRows.Item(1);
oCells = oRow.GetCells();
oShading = oCells.GetShading();
oShading.SetBackgroundPatternColorIndex(16); // 16 = wdGray25

// вернуть жирный шрифт для первого ряда
oRange = oRow.GetRange();
oRange.SetBold(TRUE);

// задать выравнивание по сентру для ячейки 1,1
oCell = oTable.Cell(1,1);
oRange = oCell.GetRange();
oParagraphs = oRange.GetParagraphs();
oParagraphs.SetAlignment(1); // 1 = wdAlignParagraphCenter
// Fill in the class schedule data
FillRow(&oTable,1,"Class Number","Class Name",\
"Class Time","Instructor");
FillRow(&oTable,2, "EE220", "Introduction to Electronics II", \
"1:00-2:00 M,W,F", "Dr. Jensen");
FillRow(&oTable,3, "EE230", "Electromagnetic Field Theory I", \
"10:00-11:30 T,T", "Dr. Crump");
FillRow(&oTable,4, "EE300", "Feedback Control Systems", \
"9:00-10:00 M,W,F", "Dr. Murdy");
FillRow(&oTable,5, "EE325", "Advanced Digital Design", \
"9:00-10:30 T,T", "Dr. Alley");
FillRow(&oTable,6, "EE350", "Advanced Communication Systems", \
"9:00-10:30 T,T", "Dr. Taylor");
FillRow(&oTable,7, "EE400", "Advanced Microwave Theory", \
"1:00-2:30 T,T", "Dr. Lee");
FillRow(&oTable,8, "EE450", "Plasma Theory", \
"1:00-2:00 M,W,F", "Dr. Davis");
FillRow(&oTable,9, "EE500", "Principles of VLSI Design", \
"3:00-4:00 M,W,F", "Dr. Ellison");

// перейти в конец документа
oSelection.GoTo(COleVariant((short)3), // 3 = wdGoToLine
COleVariant((short)-1),vtOptional,vtOptional); // -1 = wdGoToLast
InsertLines(&oSelection,2);

// добавить текст
StrToAdd = "For additional information regarding the " \
"Department of Electrical Engineering, " \
"you can visit our website at ";
oSelection.TypeText(StrToAdd);

// добавить гипрессылку на домашнюю страничку
oHyperlinks = oSelection.GetHyperlinks();
oHyperlinks.Add(oSelection.GetRange(),
COleVariant("http://www.igvard.blogspot.com"
),vtoptional/);

// завершительная часть текста
StrToAdd = ". Thank you for your interest in the classes " \
"offered in the Department of Electrical " \
"Engineering. If you have any other questions, " \
"please feel free to give us a call at (999) " \
"555-1212.\r\n\r\n" \
"Sincerely,\r\n\r\n" \
"Kathryn M. Hinsch\r\n" \
"Department of Electrical Engineering\r\n";
oSelection.TypeText(StrToAdd);

// выполнить слияние писем
oMailMerge.SetDestination(0); // 0 = wdSendToNewDocument
oMailMerge.Execute(vtFalse);

// закрыть документ
oDoc.SetSaved(TRUE);
oDoc.Close(vtFalse,vtOptional,vtOptional);
}
}
/////////////////////////////////////////////////////////
void InsertLines(Selection *pSelection, int NumLines)
{
int iCount;

// вставить NumLines пустых линий
for (iCount = 1; iCount <= NumLines; iCount++) pSelection->TypeParagraph();

}
/////////////////////////////////////////////////////////
void FillRow(Table *pTable, int Row, CString Text1,
CString Text2, CString Text3, CString Text4)
{

Cell oCell;
Range oRange;

// вставить данные в заданную ячейку
oCell = pTable->Cell(Row,1);
oRange = oCell.GetRange();
oRange.InsertAfter(Text1);
oCell = pTable->Cell(Row,2);
oRange = oCell.GetRange();
oRange.InsertAfter(Text2);
oCell = pTable->Cell(Row,3);
oRange = oCell.GetRange();
oRange.InsertAfter(Text3);
oCell = pTable->Cell(Row,4);
oRange = oCell.GetRange();
oRange.InsertAfter(Text4);
}
/////////////////////////////////////////////////////////
void CreateMailMergeDataFile(_Application *pApp,_Document *pDoc)
{

_Document oDataDoc;
MailMerge oMailMerge;
Documents oDocs;
Tables oTables;
Table oTable;
Rows oRows;
int iCount;
COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR),
vtFalse((short)FALSE);

// создать источник данных C:\DataDoc.doc содержащий данные
oMailMerge = pDoc->GetMailMerge();
oMailMerge.CreateDataSource(COleVariant("C:\\DataDoc.doc"),
vtOptional,vtOptional, \
COleVariant("FirstName, LastName, Address,CityStateZip"),\
vtOptional, vtOptional,vtOptional,vtOptional,vtOptional);

// открыть документ для вставки данных
oDocs = pApp->GetDocuments();
oDataDoc = oDocs.Open(COleVariant("C:\\DataDoc.doc"), \
vtOptional,vtOptional,vtOptional,vtOptional,\
vtOptional,vtOptional,vtOptional,vtOptional,\
vtOptional);
oTables = oDataDoc.GetTables();
oTable = oTables.Item(1);
oRows = oTable.GetRows();
for (iCount=1; iCount<=2; iCount++) oRows.Add(vtOptional);
// заполнить данными
FillRow(&oTable, 2, "Steve", "DeBroux", \
"4567 Main Street", "Buffalo, NY 98052");
FillRow(&oTable, 3, "Jan", "Miksovsky", \
"1234 5th Street", "Charlotte, NC 98765");
FillRow(&oTable, 4, "Brian", "Valentine", \
"12348 78th Street Apt. 214", "Lubbock, TX 25874");

// сохранить и закрыть файл
oDataDoc.Save();
oDataDoc.Close(vtFalse,vtOptional,vtOptional);
}

Cтатья откуда взят код на английском языке http://support.microsoft.com/kb/278260

пятница, 26 сентября 2008 г.

как получить элементы созданные JavaScript из DOM VC++

Сегодня столкнулся с такой вот проблемой - надо было получить элемент на web-страничке созданный javascript-ом из DOM VC++ кода.

Потратив уйму времени на поиски ответа в интернете, я уже было отчаялся, но
на самом деле всё оказолось намного проще, чем я ожидал :) В общем, что бы получить элемент в своё управление надо его получать через id, так как и сам скрипт обращается к созданым им элементам через их id.

Наглядный пример доступа к элемнету в javascript:


function Paste(text)
{
element = document.getElementById("message");
element.focus();
element.text = "какой то текст";
}


Тогда для vc++ будет:

// результат
IHTMLDocument2* pHtmlDoc2=NULL;

// интерфейс диспатча
LPDISPATCH lpDispatch=NULL;
if (!pBrowser)
lpDispatch=pHtmlCtrl->GetHtmlDocument();
else
{
HRESULT hr=pBrowser->get_Document(lpDispatch);

// Получим интерфейс докуменрта
HRESULT hr=lpDispatch->QueryInterface(IID_IHTMLDocument2, (void**)pHtmlDoc2);

// осовободим
lpDispatch->Release();
lpDispatch=NULL;

// получим список всех элементов документа
IHTMLElementCollection* pAllElements=NULL;
HRESULT hr=pHtmlDoc2->get_all( pAllElements );

pHtmlDoc2->Release();
pHtmlDoc2=NULL;

// получим количество элементов
long iCount;
pAllElements->get_length( &iCount );

// это тот самый элемент, который мы ищем
IHTMLElement* pElement=NULL;

// или вот этот диспатч
LPDISPATCH lpDispatch=NULL;
VARIANT bstrValue;
// пройдемся циклом по всем элементам
long i;
CString sID;
bool bFound =false;
for( i=0; iitem( i, i, &lpDispatch );
if (!lpDispatch)
continue;


// Получим интерфейс докуменрта
HRESULT hr=lpDispatch->QueryInterface(IID_IHTMLElement, (void**&pElement);

if (!pElement)
continue;

// получим id i-того элемента
CString strAt="id";
BSTR bstrAt = strAt.AllocSysString();
pElement->getAttribute(bstrAt,1,&bstrValue );

CString strNameVal ="";
if ( bstrValue.vt!=1 )
{
BSTR reVal = bstrValue.bstrVal;
sID=CString(reVal);
SysFreeString(bstrAt);
SysFreeString(reVal);
}

if(sID==sInputID) //sInputID - это id по которому мы и ищем элемент

// в нашем случае (message)
{
bFound =true;
break;
}

pElement->Release();
pElement =NULL;
}

// осовбодим интерфейсы если ничего не нашли
if (!bFound)
{
lpDispatch->Release();
lpDispatch=NULL;

pElement->Release();
pElement =NULL;

// в зависимости от того что вам надо на выходе

// вы можете использовать или lpDispatch элемента

// или же сам элемент как IHTMLElement интерфейс (pElement)

// но надо помнить что из lpDispatch мы можем получить конечный интерфейс

// элемента например IHTMLInputElement если это INPUT элемент
}

pAllElements->Release();
pAllElements=NULL;


// установим текст в элемент message
pElement->put_innerText(BSTR str);


Так же надо не забывать, что для получения элемента созданного javascript необходимо убедится, что скрипт уже отработал. ID-шники нужных элементов можно найти в исходном коде странице после выполнения скрипта.

вторник, 23 сентября 2008 г.

Всем кто надеется посвещается.

Надежда

Надежда словно червь
Терзает мою душу
Я жду от жизни всё
Надежда меня душит

Давно пора убить
Надежду и сомненье
Давно пора решить
Что делать в трудное мгновенье

Не надо ждать чего то с неба
Давай решай проблему сам
Надежда это лишь сомнение
Что травит душу нам

Она мешает делать дело
Спасать себя. ты ждёшь подмоги.
Она выигрывает время
Когда его осталось так немного.

Краткое описание программы Xedant Human Emulator.

Программа Xedant Human Emulator.

Кому может понадобится такая программа:


1. SEO-шники или те кто занимается бизнесом в интернете.
2. обычные пользователи, которые собирают каую либо инфу в интернете, активно обащаются на форумах, публикуют что либо в интернете на блогах, сайтах и т.д.


Что может делать программа:


Заполнение различных веб-форм, в том числе и формы которые растянуты на несколько веб-страниц (то есть что то ввели перешли к следующей и т.д.) .Это регистрация, добавление постов, комметарев, статей, ведение блога, создание отправление почтового сообщение и т.д.


Извлечение, сбор и исследование данных. Это загрузка котировок акций, сбора и сравнения цен на Веб-сайтах, получение ключевых слов и информации по ключевым словам и разного подобного рода информации.

Работа с веб-приложения(сайтами) использующие(-ми) AJAX.

Тестирование сайта - проверка валидности, функционаьлности и т.д.

Сохранять картинки с сайтов.

Менять устанвоки браузера - разрешать/запрещать прокси, всплывающие окна, диалоги отладки, сообщения браузера, рисунки, ActiveX, Java, все диалоги браузера и т.д.

Проверка обновлений сайтов.

Закачивать сайты на сервисы.

Создавать игровых ботов для большенства брузерных игр.


Безопасность - никакие ваши данные не передаются на наш или какой то другой сайт , а только на компьютер на котором установленна программа.


Плюсы.



Небольшая цена для подобных программ.

Возможность запуска множества окон программы одновреммено и, соответственно, множественное исполнение скритов одновременно.

Лицензия на программу даёт возможность устанавливать её на несколько компьютеров (в разумных приделах конечно).

Хорошая поддержка программы и помощь в написание не сложных скриптов.

Постоянно расширяющийся функционал.

Доступен весь функционал PHP языка.

Поддержка прокси.


Технические плюсы.


Расписание скриптов.
Автосоздание скриптов.
Удобный редактор PHP с раскраской синтаксиса, возможностью создания шаблонов, с диалогом вставки кода этих шаблонов, с диалогом вставки объектов XHE и их функций и т.д.


Язык Скриптов.

Язык скриптов PHP, так же есть возможность управления из VC++.



Возможности объектов программы:

Элементы HTML страницы.

Ссылка - объект xhe аnchor - элемент страницы A href - кликнуть на ссылку (по номеру, по имени, href, тексту), получить все ссылки на странице, получить текст всех ссылок на странице, установить фокус на ссылку(по имени, номеру), проверить есть ли ссылка, установить фокус на ссылку.

INPUT Кнопка - объект xhe button - элемент страницы INPUT ( input type=button, submit, reset) - нажать на кнопку по различным её атребутам, получить текст со всех кнопок на странице, проверить есть ли кнопка, установить фокус на кнопку.

Кнопка - объект xhe btn - элемент страницы BUTTON - нажать на кнопку по различным её атребутам, получить текст со всех кнопок на странице, проверить есть ли кнопка, установить фокус на кнопку.

Рисунок - объект xhe image - элемент страницы IMG - получить HREF, получить ALT, ширину, высоту, даты создание и изменения, размер файла рисунка, загружен ли, сохранение рисунка в файл, нажать на рисунок, установить фокус.

Фрайм - объект xhe frame - элемент страницы FRAME,IFRAME,FRAMESET - получить ширину, высоту, источник, список всех элементов фрайма.

Таблица - объект xhe table - элемент страницы TABLE - получить количество колонок, рядов, ширину и высоту.

Форма - объект xhe form - элемент страницы FORM - просабмитеть и обновить.

Поле ввода - объект xhe input - элемент страницы INPUT ( input type=text, password) - ввести/получить текст, получить alt, проверить есть ли такое поле, установить фокус.

Поле ввода имени файла - объект xhe input - элемент страницы INPUT ( input type=file) - ввести/получить текст, установить фокус.

Поле ввода большого текста - объект xhe textarea - элемент страницы TEXTAREA - ввести/получить текст, получить/установить состояние поля, получить количество колонок и рядов, установить фокус.

Чекбокс - объект xhe checkbox - элемент страницы INPUT ( input type=checkbox) - установить/получить состояние, установить фокус.

Радиобокс - объект xhe radiobox - элемент страницы INPUT ( input type=radiobox) - установить/получить состояние, установить фокус.

Поля выбора - объект xhe listbox - элемент страницы SELECT - выбор значения, выбор нескольких значений (если поддерживает элемент), получить индекс выбранного значения, количество значений, тип элемента выбора, установить фокус, выбрать значение по куску текста значения.

Скрипт - объект xhe script - элемент страницы SCRIPT -получить/установить defer скрипта, получить/установить событие запуска скрипта, получить состояние скрипта, получить/установить текст скрипта, получить/установить источник скрипта, получить/установить тип скрипта, получить/установить htmlfor скрипта.

Объекты не связанные с HTML страницами.

Мышь - объект xhe mouse - сэмулировать щелчок левой/правой кнопки мыши, сэмулировать нажатие на левую/правую кнопку мыши , сэмулировать отпускание левой/правой кнопки мыши, двойной щелчок, передвинуть курсор мыши, получить координаты курсора мыши.

Клавиатура - объект xhe keyboard - эммулирует нажатие всех символов заданой строки, эммулирует нажиматие одной кнопки, эмулирует нажатие специальных клавиш, таких как CTRL,ALT и т.д.

Сигнал - объект xhe sound - подать звуковой сигнал, проиграть wav - файл.

Буффер обмена - объект xhe clipboard - задать/получить текст в/из буффер обмена

Текстовый файл - объект xhe textfile - отсортировать заданный файл, получить количество строк, убрать одинаковый строки, собрать все файлы из папки в дин файл, уровнять файлы, объединить файлы, собрать все файлы из одной папки в другую.

Браузер - объект xhe browser - перейти на заданную страницу, обновить, остановить, назад браузер, проверяет - занят ли щас браузер навигацией, ожидать пока браузер освободится, удалять кэш, удалять историю, удалить историю из комбо адреса, очистить куки, разрешить прокси на заданное соединение, запретить прокси на заданном соединении, задать,сбросить логин и пароль для http соединений по умолчанию, установить ширину браузера, установить высоту браузера, задать User-Agent строку, задать параметр Accept, задать параметр Accept-Encoding, задать параметр Accept-Language, задать параметр Accept-Charset,получить версию браузера, получить выбранный текст из браузера, управлять настройками браузера (рисунки, актив X, Java и т.д. )

Web - Страница - объект xhe webpage - получить текущий урл браузера, получить исходный текст текущей веб страницы, получить длинну исходного текста текущей веб страницы, получить текст в тэге body, получить заголовок страницы, сохранить исходный текст страницы в файл, сохранить содержимое заданного урла в файл (любое cодержимое - и картинки), сделать копию экрана страницы в файл, получить html заданного элемента на странице.

СЕО - объект xhe seo - получить ранк страницы, получить тиц для сайта.

Приложение - объект xhe app - задать текст окна приложения, задать статус мигания приложения, выход (коррекное завершение скрипта), пауза (приостановить обработку скрипта), показать диалог ввода каптчи из картинки по заданному улру, диалог ввода каптчи из картинки c заданным номером, выполнить bat команду, выполнить php текст, выполнить заданнное приложение, получить файл с диска, вызывать диалог для ввода строки.

Отладка - объект xhe debug - диалоговое сообщение, открыть закладку с заданным именем, закрыть отладочную панель, добавить на закладку текст, сохранить содержимое отладочной панели в файл, очистить содержимое отладочной панели.

Виндоуз - объект xhe windows - получить ширину экрана, получить высоту экрана, задать разрешение экрана.


Примеры скриптов.
Примеры скриптов и более подробное описание можно найти на сайте поддержки программы.

четверг, 18 сентября 2008 г.

Лига Чемпионов

Поздравляю всех любителей украинского футбола Шахтёр выиграл свой матч на выезде против Базеля, а Динамо, как по мне (особенно после прошлой лиги чемпионов) очень хорошо сыграло в ничью против грозного Арсенала (который кстати ещё не разу не выигрывал на Украине :) ).

Будем болеть за наши клубы и в дальнейшем!!! Поеду в Донецк на Шахтёр - Барселона. Надеюсь только на победу. Шахтёр в состоянии выиграть у Барсы!!!! ОЛЕ-ОЛЕ-ОЛЕ-ОЛЕ!!!

среда, 17 сентября 2008 г.

Регистрация по каталогам

Текущее, чем щас занимаюсь, это пишу скрипты для регистрации по каталогам. То есть в Xedant Human Emulator создаю кучу скриптов, которые регистрируют сайт по каталогам. Пока что уже сделано для 20 каталогов - планирую сделать для 500-1000 каталогов. Скрипт будет доступен вместне с программой (без неё он сам по себе ни какой ценности не представляет).

Пример скрипта регистрации в каталоге:



// переходим на страницу
$browser->navigate("http://www.lar.placeforyou.ru");
$browser->wait(1);

// задаём данные
$input->set_value_by_name("url",$site_url);
$input->set_value_by_name("title",$site_title);

//$listbox->select_name_by_inner_name("cat_id","2050");
$listbox->select_part_value_by_name("cat_id",$category,"false");

$textarea->set_value_by_name("description",$site_description);
$input->set_value_by_name("email",$email);
$input->set_value_by_name("fio",$name);
// отправить
$button->click_by_number(0);
$browser->wait(1);

Получение из RTF простого текста

Это функция, которая получает из RTF строки обычный текст. Для этого я использую контрол CRichEditControl50W унаследованный от CRichEditCtrl (этот класс я отрыл в инете). Как это работает имеем на входе sContent - строка RTF и rchEdit - указатель на контрол. Запихиваем строку в контрол и получаем с него текст. В моём случае мне надо було получать текст из другого контрола и там находить. Поэтому пришлось добавлять в диалог скрытый rchEdit контрол и с ним уже работать.

Без участия контрола я так и не смог найти в инете решение. Были функциии, которые заменяли RTF текст на Text посредством замены RTF символов, но эти функции настолько не предсказуемо работали, что я просто отказался от их использования.


CString GetTextFromRTF(CRichEditControl50W *rchEdit,CString sContent)
{
long res;
// read the text in
EDITSTREAM es;
es.dwError = 0;
es.dwCookie = (DWORD) &sContent;
es.pfnCallback = CBStreamIn;

rchEdit->ModifyStyle(0,SEL_TEXT SEL_MULTICHAR SEL_MULTIOBJECT);

rchEdit->LimitText50W(-1);
// do it.
rchEdit->SetTextTo50WControl(sContent,ST_SELECTION, 1200);

rchEdit->SetSel50W(0, -1);

CHARRANGE cr;
cr.cpMin = 0;
cr.cpMax = -1;
// select all text in richedit ctrl
SendMessage(rchEdit->m_hWnd, EM_EXSETSEL, 0, (LPARAM)&cr);

// get number of chars in selected text
SendMessage(rchEdit->m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr);

int numchars = (cr.cpMax-cr.cpMin+2)*2; //allow for trailing null too

//create a buffer for all those chars
wchar_t* lpsz = (wchar_t*)_alloca(numchars);
lpsz[0] = NULL;


SendMessage(rchEdit->m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpsz);
CString sRes = CString(lpsz);

return sRes;
}

Мои проекты

Проектов у меня было много... Раскажу про те, которые щас для меня актуальны.

Последний проект, в котором я принимаю активное участие - Xedant Human Emulator(XHE). Это платная программа, которая позволяет автоматизировать вашу работу в инете. Пишешь скрипт на PHP и можно автоматом регаться на сайтах, в каталогах, парсить какие то данные из инета и многое многое другое. В принципе можно даже автомтизировать добавление постов в ваш блог - просто пишешь скрипт, который скажем добавляет ваш пост из .txt файла и вам не надо логинется заходить вставлять - всё это сделает за вас XHE.
Вообщем http://humanemulator.info - тут всё более подробнее...

Что касается кода, то в этом проекте я с толкнулся с такой новой для ся фигнёй, как DOM, с чем в предыдущих проектах не сталкивался... Меня впечатлила работа тех людей кто это писал... Понятно, что это не сразу, и не одним человеком, но всё таки кода написано там, конечно, просто дохренищаа!!!

Следующий проект, который тоже актуален - это программа оргонайзер Seo Note. Прога бесплатна и все желающие могут скачать её отсюда http://www.seonote.info. Программа пишется уже много лет, в фоне с другими проектами и не одним только мною. За эти многие года, она обрасла таким количеством кода, что просто писец, самому приходится снова вникать, когда долго не занимаешься этим проектом, а потом вдруг надо чегось сделать :).

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

Так же учавствую в проектах-сайтах www.carnote.info, www.buildernote.info и другие, которые не буду перечислять.
Конечно, заработок от сайтов мал, так как щас он поступает только от системы Adsense, а трафик на них слабенький... хотя при том времени, что сейчас им уделяется это не удивительно :)

Так же есть огромная куча идей новых проектов, но совсем нет на них времени :)

Нахрена

Создал блог и тут же задался мыслью, а нахера мне это надо... Та и воще нафига люди заводят болги... Наверное, что бы нести чушь на весь мир :), а может просто в надежде на то что ты ещё кому то станешь интересен, а может... та собственно говоря хрен с ним. Просто напишу немного о себе.

И начнёмс с самого начала...

Как и многие из нас был я рождён в великом могучем СССР. В великой и уже не существующей державе, в которой было много говна, но так же много и хорошего. Родился я на самых задворках великой империи на Камчатке в одном из военных городков, так как батя мой был в то время подводником. Жил я то на Камчатке с родоками, то в Севастополе у бабушки. Октябрёнок, потом пионер, потом развал. И я оказался в Украинском городе Российских моряков - в городе-герое Севастополе - уже с концами, так как батя, как раз перед развалом попал под сокращение.
Школа, о которой и вспоминать не хочется совсем, потом 5 курсов универа, который так и не домучал. Работал в море по специальности - судовым механиком пару лет, но меня совсем не впечатлила морская романтика (чему поспособствовали график работы и морская болезнь :)) и я ушёл и с парохода и из универа (просто стало не интересно учится :)).

Потом пошёл на Мангуп-Кале(есть тут у нас такая волшебная гора и, хочу сказать, что уже далеко не в первый раз я туда пошёл) и познакомился там с одним человечком, который раскрыл для меня мир программирования :) в двух словах так сказать. И я понял это моё...
Начал с Java, но на тот момент работы по нему не було и я засел за узучение С++, потом VB (можно сказать что с ним и С#), а потом и многое другое...

Особо за теорией я не сидел, только тогда, когда сталкивался с чем то новым и то редко, больше практикой брал, любой код понятней, чем заумные термины, поэтому искал примеры, разбирался в них и по аналогии писал свой код. Ведь в программировании важна логика, а уж инструменты для реализации мы выбираем в зависимости от нашего уровня.

Ну, вот так вот потихоньку год за годом я и стал тем самым программистом, заметки которого вы ща и читаете:)

Начало ...

Вот и я теперь присоеденился к многомиллионной армии блогеров :) Очень долго упорно сопротивлялся, но ... увы позиции сданы и вот на ещё один блог стало в инете больше :)