Archive for the ‘soft’ Category

Windows has you

Суббота, августа 11, 2007

Сегодня решил поиграться и поставить на ноут Counter Strike, для того, чтобы погонять на местных серваках. Но виндовс почему то решил, что игра может причинить вред операционной системе и заблокировал напрочь мое приложение. Я попытался внушить ОС, что игра не опасна, для чего залез в параметры DEP, чтобы сделать соответствующие настройки, на что многоуважаемый виндовс выдал мне нижеследующее окно:

winda.bmp

Если подытожить, то можно сказать ”налево пойдешь, коня потеряешь, ну а направо пойдешь, потеряешь…коня опять же”. Можно конечно пофилосовствовать по пути отсутствия выбора у пользователей, которые юзают ось от майкрософт и бла бла бла, но сегодня суббота, уикенд и как то влом, возможно в будущем напишу что-нибудь такое.

Эффективное использование Gigafone (:

Среда, июля 25, 2007

Сравнительно недавно я начал пользоваться смартфоном (это такая штука, которая умнее телефона, но чуть глупее КПК, для тех, кто не знает :)) Так вот. Почти тут же мне на глаза попалась реклама гигафона (http://9909.ru). Эта организация занимается, грубо говоря, мобильной рекламой. Т.е. скачиваешь специальную софтину, ставишь её себе на смарт и она постоянно висит в памяти и при это показывает рекламные баннеры, когда на телефон поступает смс или звонок.

По условиям компании, показывается и, соответственно, оплачивается не более 5 баннеров в час (на самом деле это и было так до определенного момента, но сейчас ситуация почему то изменилась и гигафон как то нестабильно показывает\оплачивает рекламу).Ну разговор не об этом, это их дело, платить или нет. А мой интерес распространяется на то, как бы получить прибыль от этой всей системы. Сходил на их форум, посмотрел, что пишут люди. Пришел к выводу, что люди банально накручивают себе показ баннеров звонками с мобильных(стационарных) телефонов. Т.е. звонят, но не берут трубку, а баннер показывается. Так же и с смс. Можно посылать запросы оператору, благо у каждого “опсоса” есть куча всяких смс сервисов халявных, отправляя запрос на которые, можно получать ответ и, опять же, смотреть на баннеры. Да, это конечно и может оказаться эффективным, но рано или поздно ручная работа надоест и все это дело будет послано далеко и на долго. Автоматизация ручной работы – ключ к успеху! ;) Идея об “автоматической накрутке” пришла не так давно. А подтолкнуло думать в этом направлении то, что так хорошо сложились некоторые обстоятельства :) Собственно к самой схеме. Как известно, многие операторы позволяют посылать смс посредством e-mail. Делается это все через шлюзы, которые преобразовывают обычные сообщения e-mail в смс. Например, чтобы послать смс на определенный номер, нужно всего лишь в строке адреса для отправления письма указать что-то наподобие 7ххххххххххххх@адрес_шлюза. Если поискать в сети, то можно найти адреса этих шлюзов для большинства российских операторов и сидеть посылать смс через свою любимую почтовую прогу :) Но, опять же, автоматизм отсутствует (если только не найти/написать прогу, которая с заданным интервалом шлет почту на адрес). Я пользуюсь услугами Билайна, поэтому номер, на который нужно отправлять смс выглядит как 7хххххххххх@sms.beemail.ru. Для того, чтобы автоматизировать процесс отправки смс понадобится компьютер, постоянно висящий в сети ака сервер, доступ к cron’у (для тех, кто не в теме -> google.ru) + настроенные на этом сервере почтовик, допустим postfix и рабочий php. Обобщение: доступ к cron’у, рабочий почтовый сервер и рабочий php. Это минимум, который необходим. Даже знаний php не нужно, ибо использовать нужно только одну функцию, которая зовется mail(). Первое, сочиняем скриптик вида: <?php mail(“7xxxxxxxxxx@sms.beemail.ru”, “любой текст”, “любой текст”; ?>
Кладем его в то место, куда можно добраться с вэба (да, еще нужен рабочий веб-сервер :)). Например, http://your_site/gigafone/send.php. Далее, нужно добавить задание в крон, что-нибудь похожее на */30 * * * * /usr/bin/lynx -source “http://your_site/gigafone/send.php”. Это задание запускает консольный браузер lynx, который обращается к нашему скрипту каждые 30 минут (при желании можно понаглеть и уменьшить период отправки, но думаю забанит не только гигафон, но и билайн ;)). Если почтовик настроен правильно и обрабатывается функция mail() в php, то скрипт будет запускаться через промежуток времени, который отведен ему по заданию. При желании, можно кинуть в каталог со скриптом файл .htaccess, который запретит доступ к файлу всем, кроме ip, с которого крутится lynx (так сделано у меня). Вобщем то все, смс приходят, баннеры показываются, если не наглеть, то можно стабильно получать денежки за показ баннеров. Билайн вроде ничего против частой отправки смс через мыльный шлюз не имеет :) Можно зафлудить любой номер билайна, при желании (тсс, я этого не говорил). Это всего лишь один из способов того, как можно стабильно получать показ баннеров и не быть (надеюсь) забаненным :Ь

Заметка о “premature script headers” или “Читай доки до просветления!”

Вторник, июля 17, 2007

Размышляя о блоге, подумал, что неплохо было бы настроить на серваке обработку perl и cgi скриптов. Задача нетривиальная, решается буквально за несколько минут, конечно, при должном уровне знаний. Благо знания есть, но как оказалось, это всего лишь необходимое условие, но не достаточное, чтобы выполнить ту или иную задачку. Итак, обо всем по порядку.

Излагать буду с позиции новичка, так что все претензии > /dev/null. Ось LInux, perl стоит как интерпретатор в /usr/bin/perl. Первым делом подправил конфиг апача и в виртуальный хост добавил нужные директивы, все по докам с оффсайта (http://httpd.apache.org/docs/2.0/howto/cgi.html). Сделал рестарт апачу и в папку cgi-bin для теста кинул простейший perl скрипт, который выводит “ok”. Скрипт рабочий, на других серваках отрабатывал нормально. Запускаю – апач отваливается с 500 ошибкой. Ну, думаю, сейчас посмотрим логи и выясним, что за дела. Иду в логи и вижу преславутую запись “Premature end of script headers“. Вот тут то и встал в ступор. Headers в начале скрипта прописаны, перенос строки в стиле unix систем, путь до perl правильный. Все, что знал о данной ошибки к моему скрипту не имело отношения, все условия выполнялись. Попробовал запустить скрипт прямо на шелле, все гуд, отрабатывает. Пришлось лезть в google, искать, в чем же причина такого поведения сервера, но наткнулся лишь на известные мне ошибки, исправив которые, у людей скрипты начинали работать. Совсем не мой случай. Прошел день, но я так и не выяснил в чем же моя проблема (начали подступать мысли о проблеме в днк :). На второй день зарегился на форуме бородатых сисадминов и спросил совета там. Обсуждение пошло по такому направлению, что нужно протестить запуск скрипта в шелле от юзера апача. Процесс осбуждения ни к чему не привел и я опять закинул запрос в гугл в надежде отыскать хотя бы намек на то, что за х… творится у меня :) Наткнулся на FAQ об апаче 1.3 (у меня 2.0.59), в котором мельком проскользнула мессага о том, что причина ошибки может заключаться в директивах RLimitCPU и RLimitMEM, которые могут ограничивать ресурсы, которые юзаются апачем. Вспомнил, что недавно игрался с RLimitMEM и выставил небольшое значение, чтобы апач не шиковал. Закомментировал директиву, перезапустил апач и О, чудо! Мой скриптек вывел “OK”, все заработало. Отписался на форуме о том, что нашел решение проблемы и меня ткнули носом в оффициальную документацию по апачу, там действительно было описание данной проблемы (http://httpd.apache.org/docs/1.3/misc/FAQ.html#premature-script-headers). Вот так. Из всего выше сказанного, для себя сделал вывод, что прежде чем впадать в панику, нужно досконально изучить документацию, а если и там ничего не находится, то опять с еще большим старанием изучить документацию, чтобы наконец таки понять, что если есть инструкции, то их _обязательно_ нужно прочесть. Не повторяйте моих ошибок, удачи!

Apache2 + PHP5 + MySQL5 + Perl на Windows (Часть II)

Четверг, июля 12, 2007

Вторая часть статьи о том, как замутить у себя на компьютере web-сервер с php, perl’ом и mysql для тестов, а возможно и как  рабочий сервак под управлением Windows. В первой части я рассказал, как поставить Apache + php, это не слишком сложно, впрочем, во второй части тоже ничего сложного нет, главное следовать инструкциям и быть внимательным.  Начнем.

1. Скачиваем Perl (на момент установки работала ссылка http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.8.820-MSWin32-x86-274739.msi) и устанавливаем, например в С:\Program Files\Perl. После установки нужно протестить как поставилось. Для этого создаем test.pl, с содержанием

#!/usr/bin/perl
print “Content-type: text/html\n\n”;
print “OK”;

и кидаем в корень С:\, заходим в cmd (winkey +r и там cmd), далее cd C:\ и пишем perl test.pl, если видим “OK” то значит все нормально, perl работает.
2. Настройка взаимодействия Apache + Perl. Открываем httpd.conf и находим строку с AddHandler и добавляем .pl .cgi и расскоментируем строку ScriptInterpreterSource registry. Сохраняемся. По умолчанию, обрабатываются скрипты, которые лежат в “С:\Program Files\Apache Software Foundation\Apache2.2\cgi-bin\” (можно в любой момент изменить на любой другой путь, который интересует). Кидаем наш test.pl в папку cgi-bin и открываем в браузере http://localhost/cgi-bin/test.pl, если видим “OK”, значит Perl с сервером взаимодействуют нормально.
3. Настраиваем MySQL. Скачиваем MySQL-сервер (например, по ссылке http://www.mysql.ru/download/files/mysql-5.0.18-win32.zip). В процессе конфигурирования оставляем все по умолчанию, в пункте default character set выбираем кодировку cp1251 и далее задаем пароль рута. После установки появится новая служба MySQL (проверить, набрав services.msc в “Выполнить” и посмотреть список активных служб).
4. Настраиваем MySQL и проверяем взаимодействие связки. Идем в директорию, куда поставили MySQL и открываем для редактирования файл my.ini, в секцию [mysqld] добавляем

character-set-server=cp1251
collation-server=cp1251_general_ci
init-connect=”SET NAMES cp1251″

Перезапускаем службу.
5. Далее в httpd.conf добавляем директиву PHPIniDir “path_to_php”, где path_to_php – путь до папки с php. Это нужно, чтобы
Apache видел, где лежит php.ini. Еще нужно подключить для php расширения, чтобы он нормально работал с MySQL. Открываем php.ini и расскоментируем строку с extension php_mysql.dll (ну и extension php_mysqli.dll заодно). Из папки с php копируем libmysql.dll в system32.
6. Для тестирования коннекта с БД, создаем файл mysql.php с содержанием:

<?php
$dbServer=’localhost’;
$dbUser=’root’;
$dbPass=’пароль_который_задали_при_установке_mysql ‘;
$dbName=’test’;
mysql_connect(“$dbServer”, “$dbUser”, “$dbPass”, “$dbName”) or die
(“Could not connect”);
?>

кидаем его в htdocs и открываем в браузере http://localhost/mysql.php, если не появится сообщения “Could not connect”, то значит коннект с базой прошел удачно и связка работает. На этом настройка связки Apache + PHP + PERL + MySQL закончена, можно еще поставить PhpMyAdmin для управления базами через web-интерфейс, но там нету ничего сложного и ман по установке можно найти на оффсайте. Удачи! ;)

Apache2 + PHP5 + MySQL5 + Perl на Windows (Часть I)

Понедельник, июля 9, 2007

Почитав в сети статьи об установке связки Apache + PHP + MySQL + PERL на Windows, я заметил, что статьи довольно таки старые, и речь в них идет о не совсем новых версиях программного обеспечения. Решил “накорябать” свою статейку на сей счет, потому что данная связка понадобилась на моем компьюетере, а ставить Denver уже как то неохота, не та гибкость у него, хотя возможно не такие гибкие руки как раз таки у меня ;)

Вобщем, разобью статью на две части, в первой об установке Apache2 + PHP5, а уже во второй вдогонку пойдут Perl и MySQL. Для наглядности, все будет разбито по пунктам, думаю, так восприятие и усваивание материала будет лучше :) Что ж, дамы и господа, поехали?
1. Скачиваем Apache с оффсайта http://apache.org (на момент установки последний стабильный релиз лежал по адресу http://apache.rediska.ru/httpd/binaries/win32/apache_2.2.4-win32-x86-no_ssl.msi)

2. Сливаем PHP с оффсайта http://php.net (опять же на момент установки, линк на архив http://www.php.net/get/php-5.2.3-Win32.zip/from/a/mirror, нужно выбрать зеркало, откуда качать)

3. Ставим Apache. В процессе установки в NetworkDomain и Server Name пишем, например, localhost, Administrator’s Email – свой емэйл, галочку внизу не трогаем,по умолчанию ставится в С:\Program Files\Apache Software Foundation\Apache2.2. После того как он поставился, проверяем работает или нет, открываем браузер и пишем http://localhost, если работает, то горит надпись “It works!“, если нет, идем и смотрим, например, фаерволл, на предмет того, блокирует он процесс сервера или нет.

4. Разархивируем скаченный PHP в С:\Program Files\Apache Software Foundation\Apache2.2\php (если конечно Apache поставили сюда), потом находим в httpd.conf, он лежит в папке conf и добавляем строку “LoadModule php5_module php/php5apache2_2.dll" (добавить можно в соответствующую секцию, найти которую не составит труда). Еще добавляем в DirectoryIndex строку index.php
и чуть ниже по конфигу строчку AddType application/x-httpd-php .php. Сохраняем файл.

5. Находим в папке, куда разархивировали php файл php.ini-recommended и переименовываем его в php.ini

6. Правим php.ini. Находим директиву session.save_path, раскомментируем её и изменяем путь на, допустим, C:/tmp, далее находим extension_dir и меняем на extension_dir = "С:\Program Files\Apache Software Foundation\Apache2.2\php\ext\" (путь до расширений php, возможно он будет другим). Сохраняем файл.

7. Для тестирования работоспособности связки Apache + PHP кидаем в С:\Program Files\Apache Software Foundation\Apache2.2\htdocs\ файл test.php с содержанием “<?php phpinfo(); ?> и перезапускаем сервер (значок управления сервером можно найти в трее). Открываем http://localhost//test.php в браузере и если видим инфу по php, то значит все работает нормально.

Если нет, смотрим внимательно, возможно что то упустили при установке или версии ПО отличаются от тех, которые ставил я.  Удачи! ;)