Материалы за Сентябрь, 2009
Скачать все утилиты в одном архиве: redoublers
Сегодня выложу несколько утилит, не так чтобы сильно оригинальных, но мне лично сэкономивших массу времени и нервов. Все они связаны с работой со списками, с задачами типа «отобрать строки из файла 1, которых нет в файле 2″, «убрать дубли доменов» и подобными.
Что это такое. Собственно, я не претендую на оригинальность или какое-то «ноу-хау» в этих тривиальных задачах. Мало того, есть программа Text Pipe Pro, которая умеет делать все что мои утилиты и еще много-много чего. Мало того, таких утилит полно. НО – мне было влом как-то искать соответствующие програмки, писать их недолго… Ну и конечно, за 10 лет профессионального программирования я научился составлять нормальные алгоритмы, так что скорость работы у утилит, мне кажется, на высоте.
В общем первая утилита – обычный раздубливатель. Из «фишек»:
- Можно сравнение проводить не на основании всей строки, а на основании доменов. То есть если строки – это www-адреса, ftp или email, то утилитка вычленит домены, и будет сравнивать их, ну а в результат конечно будут записаны не домены, а сами строки полностью.
- Штатными средствами можно выбрать несколько файлов, утилита прочтет их все и сделает уникальный список на основании всех файлов. Удобно, когда есть старая база и надо добавить одну или несколько новых, прочекивая на дубли. Кстати, вернемся к режиму сравнения по доменам. Если выбрать сначала старую базу, а потом новые, то СНАЧАЛА в результат добавятся значения старой базы, а новые URL с таким же доменом не добавятся. Ну и наоборот, то есть какой файл первый выбираешь – имеет значение.
- Естественно, программа рассчитана на многомиллонные списки. Скажем 15 миллионов (файл около 400 Mb) я ей раздубливал.
Вот скрин:
Утилита бесплатная, текущая версия 1.00, думаю что и последняя
Скачать можно здесь: ReDoubler
Ну и еще парочку утилит, которые делают следующее. Первая утилита отбирает в результат из файла №1 только те строки, которые есть в файле №2. Вторая – удаляет из файла №1 строки, которые есть в файле №2. Типичные задачи – чекинг по блэк-листу, или выборка общих значений из двух баз.
Выглядят вот так, как близницы
Обе программы бесплатные.
Качать отсюда: Первая и вторая.
Все утилиты в одном архиве: redoublers
Довольно давно столкнулся с интересной задачей: необходимо было управлять ссылками на свои ресурсы, проставляя/добавляя/удаляя их по ftp. По некоторым причинам (
), доступ к этим ftp должен был осуществляться анонимно, с сокрытием реального IP адреса. Система управления должна была работать на сервере иметь www-интерфейс. Короче, продвинутый многопоточный фрэймер, работающий через соксы.
Было это пару лет назад, программу я успешно написал и сдал. И остался для будущих проектов от нее класс работы с ftp, написанный на php. В нем нет ни одной функции пхп, начинающейся с ftp_: весь протокол ftp реализован чисто с помощью сокетов. Соответственно главный плюс – возможность работать по ftp через соксы.
Вот так выглядит использование класса:
<?php
require_once 'ftp.class.php';
// Создание объекта, через который будем управлять по ftp
$fc1 = new ftpcom();
// Можно при создании сразу указать, с каким ftp будем работать
$fc2 = new ftpcom('ftp://login:pass@domain.com');
// Можно сразу указать socks-5 прокси, например 127.0.0.1:3128
$fc3 = new ftpcom('ftp://login:pass@domain.com', '127.0.0.1:3128');
// Впрочем, можно параметры присвоить и позже:
$fc1->Host = 'domain.com';
$fc1->Port = '21'; // По умолчанию порт и так 21
$fc1->User = 'login';
$fc1->Pass = 'pass';
// Сколько секунд ждать ответа от сервера, по умолчанию 30
$fc1->ConnectTimeOut = 10;
// Коннект и логин осуществляется вот так:
// Connect без параметров подключает к domain.com, как задано
if(!$fc1->connect()) exit($fc1->Error);
$fc1->login(); // Ну и логинимся с логином и паролем, заданным выше
// Подконнектится к domain3.com, к порту 21, ждать максимум 200 секунд
if(!$fc2->connect('domain3.com', 21, 200)) exit($fc1->Error);
// При логине тоже можно задавать напрямую логин и пароль
$fc2->login('Login2', 'mysecretpass');
// Ну удобней всего конечно так:
if(!$fc3->connect() or !$fc3->login()) exit($fc3->Error);
// Остальные операции соответствуют синтаксису встроенных в пхп функций работы с ftp. Например:
$fc1->rawlist(); // Возвращает список файлов в текущей директории
$fc1->chdir('http_docs'); // поменяет текущцю директорию
// Скачает file.php с текущей директории и сохранит как file.php
$fc1->get('file.php');
// Скачает файл index.php и сохранит в temp.php.
// Режим скачивания - текстовый
$fc1->get('temp.txt', 'index.php', 'FTP_ASCII');
echo $fc1->pwd(); // Возвращает текущую директорию
// Локальный файл temp.php зальет на ftp с именем index.php
$fc1->put('temp.php', 'index.php');
// В переменной Error хранится результат последней операции
echo $fc->Error;
?>
Код класса можно скачать отсюда: ftp.class.zip
Сегодня – аналитический материал, без программ
Начнем пожалуй с прикола. Набирал я как-то в поисковике запрос, и вот что мне «подсказал» великий гугль:
«Да уж» – подумал я, – прикольные запросы наш народ вводит. Но этот курьезный случай навел меня на одну мысль…
А теперь серьезно. Эти подсказки формируются, исходя из частоты введенных запросов за прошлый месяц. Логично? А давайте тогда сделаем так.
- Возьмем ВЧ-запрос, ну скажем полуторамиллионник ringtones.
- Добавим к нему супер-НЧ, ну скажем ringtones MyBestRTServiceDownload
- Сделаем лэндинг с рингтонами, и выведем в ТОП-1 по ringtones MyBestRTServiceDownload. Это несложно, так как MyBestRTServiceDownload – по условию супер-НЧ.
- Попросим гугля 2 милиона раз найти сочетание ringtones MyBestRTServiceDownload
- На следующий месяц пользователи, набирая ringtones, получат в подсказке ringtones MyBestRTServiceDownload. Часть из них нажмет на нее и попадет на выдачу, первым в которой стоит наш лэндинг.
Первый вопрос – оценка валовой прибыли. С полутора миллионов запросов в месяц считаем пусть треть вообще пользуется сервисом подсказок. Итого 500 тысяч. Из них на подсказку ткнет пусть каждый десятый. 50 тысяч. На первый результат по статистике тыкает треть юзеров – т.е. район 20 тысяч трафа в месяц – наш. Учитывая средний бид PPC по ringtones порядка 5 центов, и считая таким же конверт на нашем лэндинге (ну не хуже же чем на ППС мы его сконвертим!) – получаем $1000. Да, я сознательно несколько занизил количество тыкнувыших на подсказку – думаю их будет больше.
Второй вопрос – затраты. Вопрос мной не изучался, но тут есть мнение, что гугль в данном случае считает по кукам, а не по IP. Намек понятен?
Ну и дополнение: такого плана услугу (вывод запроса в подсказку поисковика) оказывает пару «предпринимателей» на серче, но на поток не поставлено, что кстати видно и по их ценам.
Удачной работы.
Предыстория. С введение SP2 в ОС Windows XP было принято решение ограничить количество одновременных исходящих соединений (если быть точным, то только полуоткрытых соединений, ну не будем углубляться в дебри – счас это не принципиально). Изначально идея состояла в том, чтобы огранчить скорость распространения червей. Решение достаточно сомнительное, но специалисты Microsoft посчитали его оправданным.
Итак, на текущий момент положение таково:
- Windows XP – максимум 10 одновременных соединений
- Windows Vista Home – максимум 5 соединений
- Windows Vista Ultimate – максимум 25 соединений
Как Вы понимаете, для программ, активно во много потоков использующих сеть – такое ограничение является неприемлимым. В том числе и большинство моих программ буду чувствовать себя «неуютно», а то и нестабильно работать, если это ограничение не убрать.
Патч для Windows XP / Vista. Мне наиболее удобным кажется патч Half-open_limit_fix_4.1 от www.half-open.com. Вот такая небольшаяутилитка для виндовс решает проблему соединений:
Удачной работы.
Скачать можно здесь: HttpAnswer
Ну, собсно как и обещал, раз блог сделал, стало быть надо его вести. На сегодняшнюю запись решил долго не придумывать ничего нового, а так – полез на винт и посмотрел что из программ ранее не выкладывалось, и что можно без жалости отдать в паблик. Кстати программ, скриптов и других проектов на винте оказалось почти 400. Эт я типа горжусь
. Итак:
Что это такое: Еще одна десктопная утилита. Получает ответы от сервера апача и раскладывает список URL в соответствующие файлики. Часто бывает что-нить напарсил, и перед передачей результатов в какую-нибудь сложную программу обработки (спамилку например) удобно быстренько пробежаться по списку, и те что не отвечают – сразу выкинуть.
Что умеет:
- Задаем имя файла с исходными URL. Оптимизировано под большие размеры файлов, хоть 100 гигов.
- Нажимаем кнопку старт/пауза. Проверяет страницы из файла-списка, и раскладывает по файликам-типам ответов. Работает на голых сокетах, устойчивая и шустрая. Я проверял около 10 лямов URL без проблем.
- Количество потоков выставляется в файлике settings.ini
Если вдруг кто не знает что какие ответы значат:
- 2xx – все ОК, сервер отдает страничку (xx – любые цифры)
- 3xx – страница перемещена, сервер отдает новый адрес
- 4xx – страница недоступна – не существует, нет прав на просмотр, т.п.
- 5xx – различные ошибки сервера
Внимание! По умолчанию операционная система Windows XP не позволяет держать большое количество одновременных соединений. Если у Вас XP и Вы не пропатчили систему, то производительность программы будет низкая, и при большом количестве потоков будут ноормальные странички отправляться в «Нет ответа». Как пропатчить – расскажу в следующем посте (завтра, седня влом).
>>> UPD. Вот, как и обещал: http://solutionfix.org/other/connection-limit-fix/
Скриншот. Да, вот, пожалуйста.
Бесплатная. Текущая версия 1.01 (она же единственная).
Скачать можно здесь: HttpAnswer






