Покажи теми - PhrozenCrew
Виж публикациите на потр. | * Виж темите на потр. | Виж прикачените файлове на потр
Страници: [1]
1  Програмиране / Web development / Молба за тест на система за добавяне на реципрочни линкове -: Mar 11, 2013, 21:55
Опитвам се да направя система за добавяне на реципрочни линкове, като целта е да се добавят само определени категории, свързани с съдържанието на целеви сайт или конкретни страници. Може би малко сложно го казах. Примерно ако имам сайт за резервни части на автомобили, искам да приложа, като субдомейн система за размяна на линкове, като ще има категории свързани само с услуги за автомобили - продажба, сервиз, внос, застраховки и т.н.
Системата я пиша така, че да поддържа лесно добавяне на различни дизайни. За сега има само 2 шаблона, които се управляват от простичък административен панел.
Всъщност цялата информация се управлява от административния панел. За сега поддържа:
- потвърждаване на линка от администратора
- изтриване или редактиране на линковете
- препоръчани линкове

Потребителите също могат да се логват и да редактират или изтриват линковете си.

Не съм сигурен дали може подобна система да се продава и може би ще я пусна като OpenSource проект.
Може да се тества от тук: http://www.nediko.info/add-url-demo/
Админ панел: http://www.nediko.info/add-url-demo/admin

В момента съм забранил да може да се рови от търсачки, така, че могат да се слагат всякакви глупости.
Ще се радвам, ако споделите мнения, критика и идеи. Дали например да и добавя и възможност за писане на кратки статии или нещо от сорта. Най-вече, мислите ли, че има смисъл от система с реципрочни линкове?
Предварително ви благодаря!
2  Програмиране / Общ форум / Регулярни изрази за Tiny C Compiler - SLRE или друга библиотека? -: Jul 18, 2012, 13:09
Здравейте,

Пиша малка прграма на C за обработка на текст. Спрях се на Tiny C Compiler, защото изпълнимите файлове са изключително малки. Но не мога да намеря библиотека за регулярни изрази, която да работи с този компилатор.
Попаднах на проекта на един пич Sergey Lyubka, който е написал на C много малка библиотека за регулярни изрази - SLRE, но не разбирам достатъчно от програмиране на C и не знам как да я подкарам.
Бих искал да помоля някой, ако може да погледне и да метне насам простичък работещ пример. Нещо възможно най-елемнтарно, колкото да мога да започна.
Или, ако някой е използвал друга библиотека за Tiny C Compiler и може да я препоръча, също ще ми е полезно.

Предварително ви благодаря!
3  Програмиране / Общ форум / Зареждане на Python27.dll от AutoIt или друг език -: Apr 03, 2012, 11:15
Здравейте,

Има ли начин да използвам Python, като заредя динамично Python27.dll или (Python25.dll) в AutoIt или примерно в C++?
И изобщо някой ползвал ли е подобна библиотека от динамичен език, като Python, Ruby, Perl, PHP без да има инсталирани тези интерпретатори, а само библиотека с базата на езика. Например, както може да се използва Assembler в C++.
Представям си го като зареждане на динамична библотека с стандартните фукнции на дадения език и изпълнение на команди от този език (с eval, DLLCall или нещо подобно) и прихващане на изхода.
Може би въпроса ми е глупав, но си мисля, че би трябвало да има начин. Иска ми се да е възможно, за да може да се съкрати писането.
Предварително благодаря за всяка идея!
4  Linux секция за начинаещи / Настройка на програми / конфигуриране и запис на boot.img от ISO-файл? -: Feb 03, 2012, 21:08
Привет,

Опитвам се да създам DVD ISO-файл в който да набутам 3 огледални образи на 3 различни операционни системи. Обаче имам проблем с конфигурирането на boot. Boot-файла го екстрактвам от iso на Acronis True Image Home с инструмента bbie10 (free soft).
Код:
Size of bootrecord_t: 2048
Size of section_entry_t: 32
Size of validation_entry_t: 32
Handle for "Acronis Media.iso" is 7E8
Reading boot record from sector 17 (0x11)
2048 bytes read from handle 7E8
Reading boot catalog from sector 20 (0x14)
2048 bytes read from handle 7E8
1) mode "no emulation". Sector is 33 (0x21)
Writing 1 block(s) to "image1.bin"
Handle for "image1.bin" is 7F4
2048 bytes read from handle 7E8
2048 bytes written to handle 7F4
Closing handle 7F4
Closing handle 7E8

С InfraRecorder (open source) използвам следните настройки (по подразбиране):

Но явно нещо в "Boot load segment" или с "Boot load size" не е наред. Получава се следната грешка:
Код:
Starting Acronis loader...
Boot failed, press any key..

Какво трябва да задам като параметри и как да преобразувам в hex стойностите, които извличам с bbie10? Сигурен съм, че имам отговора, но не знам как да го въведа  ???.
Предварително ви благодаря за идеите!
5  Програмиране / Общ форум / PoetryHaxor - програмка за търсене на рими -: Dec 04, 2011, 18:48
Здравейте,

Написах програмка за търсене на рими. Програмата има версия за linux и Win. За Win я писах на C++, като използвах wxWidgets (IDE-wxDevC++). Много тромаво се получи, но кода е елементарен и който иска може да го промени и отимизира.
PoetryHaxor for Windows

За linux използвах perl, а за GUI използвах GTK2, че ми се стори най-лесно и бързо ;D. Пък и в тая комбинация би трябвало да върви на всички системи с инсталиран GTK2.:
PoetryHaxor for Linux


И двата архива са с приложен сорскод. Нямам лицензни условия, защото си нямам на идея как може да се лицензира такъв софтуер примерно под няква OpenSource форма.
Ако имате идеи свиркайте, особено за оптимизирането на C++-версията. Предварително благодаря!
6  Програмиране / Web development / Подарявам WEB дизайн готов за ползване -: Nov 01, 2011, 22:22
Здравейте,

Подарявам тоя дизайн. Послужи ми да се запозная с blueprint, че тоя fw ми беше непознат, но нямам проект към момента, където да го използвам. Ако на някой му харесва, нека си го ползва, нямам никви претенции към лиценза:



Демо на дизайна, валидиран по xHTML тук:
http://themplates.nediko.info/blueprin01/

Последните два линка от футъра са работещи и от там може да се изтегли сорса и да се чекне xhtml валидацията.
7  Програмиране / Web development / HTML цветен дизайнер, работи и с Kuler -: Oct 22, 2011, 22:03
Здравейте,

Създадох много простичък цветен дизайнер, за да мога за секунди да подбирам  цветове за проектите си. Ето го:
HTML Color Designer

Получи прилично и реших да го споделя с вас. Ако ви хареса можете да го ползвате.
Якото е, че може да екстрактва цветовете от теми в Kuler. Само се пише ID-то на темата.
Ако се изтегли HTML-сорса (+css) може да се ползва и на локална машина, но естествено няма да може да сваля цветове от Kuler.

С дизайнера се работи много простичко - слагате си цветовете, които сте си харесали или извлекли от Kuler и след това влачите с мишката до полето, което искате да промените. Могат да се променят и текстовете и бекграунда. Не съм го пробвал под други браузери освен Firefox 3.6, така, че е възможно да има проблеми.
Ето няколко скрийншота за да се види за какво става дума:





Имам идея да доразвия проекта, като му добавя възможност за смяна на шаблона, за съхраняване на цветните теми, система за логване и оценяване на темите и т.н. Но, ако ми остане веме  :).
8  Програмиране / Web development / Система за малки хотели, вили и семейни къщи -: Aug 26, 2011, 21:56
Здравейте,

Разработвам малка и много простичка OpenSource система за управление на съдържание за хотели и малки семейни къщи. За разделяне на съдържанието от програмирането ползвам простичкия PHP MiniTemplator, който доста ми помогна да съкратя кода. А и много лесно ще могат да се правят нови шаблони за дизайна. Системата (малко пресилено е да се нарече система) ползва простички текстови бази данни и няма нужда от регистриране или предварително създаване на SQL-базирани таблици.

Бих помолил да тествате системата и ако забележите бъгове да ми пишете. Проекта още не е тестван и вероятно има какво да му се оправя. Ако ви се занимава можете да погледнете тук: BGHotel CMS

Предварително ви благодаря за всяка идея или критика!
9  Програмиране / Общ форум / CygWin Bash - четене на файл ред по ред. Проблем с прочитане на последния ред. -: Jul 20, 2010, 12:25
Здравейте,

Опитвам се с CygWin да чета текстов файл и да обработвам всеки ред по този начин:
while read line ; do echo -e "$line"; done < text.txt
И резултата е:
* This is the line 1
* This is the line 2
* This is the line 3

А файла text.txt е с 4 реда, т.е. скрипта не ми принти 4-ят ред. Прочита първите 3 реда и до там. Някакви идеи?
10  Програмиране / Общ форум / Bash - взимане на няколко реда от средата на текст файл -: Dec 03, 2009, 12:28
Здравейте,

Случайно да се сещате за някоя команда на bash, която да може да извлече да речем 10 реда от файл, като почне от 5-я ред. Ползвал съм tail, cat, tac, head, но не се сещам те да имаха възможност да зададеш от кой ред да почне да чете. Почти съм убеден, че имаше някаква такава команда.
Интересуваме да се команда, защото искам да взимам отрязъци от файл, който е над 30 000 реда.

Благодаря ви предварително!

11  Програмиране / Общ форум / bash - Принтване на 2 променливи от масив при цикъл -: Nov 16, 2009, 11:15
Здравейте,

Опитвам се да направя простичка текстова база данни, но нещо не мога да се сетя как да изкам втори или трети елемент от масива. Ето примера:
файл дб - users.txt
Ime1:Vor name 1:addres 1
Ime2:Vor name 2:addres 2
Ime3:Vor name 3:addres 3
Ime4:Vor name 4:addres 4

Кода с който изваждам имената

USERS=users.txt
n=1

for name in $(awk 'BEGIN{FS=":"}{print $1}' < "$USERS" )
do
  echo "USER $n = $name"
  let "n += 1"
done

Желаниеето ми е на този ред:
echo "USER $n = $name"
да мога да добавя $addres.
Предварително благодаря за всяка идея!
12  Програмиране / Общ форум / Perl ftp tutorial, static blog site -: May 02, 2006, 21:09
Perl FTP tutorial, static blog site

Свързване с FTP сървар през Perl, създаване на статичен блог сайт

Ето и идеята на програмирането за FTP под Perl. На първо място е необходимо да се регистрирате в някой free сървар за да си получите безплатното интернет пространство. Такива сървари с лопата да ги ринеш в БГ – hit.bg, bol.bg(казват ,че е видим от цял свят), centrum-group.com и още знайни и незнайни. След като вече имате акаунт към някой от фрее сърварите е добре да знаете как да се свържете с него. Ако сте си направили акаунт например към free.techno-link.com и името на акаунта ви е pen4o, а паролата pencho17, тогава значи за да се свържете ще трябва да стартирате някой FTP клиент и данните за връзка ще са:

ftp pen4o.centrum-group.com
user: pen4o
pass: pencho17
Направете си директория tutorials на този адрес и сложете някакви файлове в нея. Например: Perl_FTP_Tutorial.pdf и my_CV.doc

Пиша тези неща за да ми е по лесно по-късно в тутора. Приемам , че вече сте си изтеглили Perl. Аз ползвам Perl 5.6. В тази дистрибуция е включен необходимия ни за работа модул NET::FTP. Да преминем директно към същността. Ще напиша скрипта и ще го коментирам между редовете. Така мисля, че ще ви е по-ясно. Скрипта по долу можете да го напишете в най-обикновен текстов редактор, например Notepad (има го във всички Windows или cat – всички Linux, Unix), и го съхранете като PerlFTP.pl

#!/usr/bin/perl
use Net::FTP; # да заредим модула, който ни трябва

my $host="pen4o.centrum-group.com"; #FTP сървара ви
my $directory="tutorials"; # някоя от директориите

# нека създадем една ftp връзка
$ftp=Net::FTP->new($host,Timeout=>240) or $newerr=1;

  # нека направим семпла проверка за грешки и да изкараме
  # съобщение, ако има такива
  # с push добавяме грешката към масив @ERRORS
  push @ERRORS, "Can't ftp to $host: $!\n" if $newerr;
  # стартиране на подпрограмата за грешки, ако има такива
  myerr() if $newerr;

# ако всичко е нормално
print "Connected\n";

# сега нека да се логнем в сървара
$ftp->login("pen4o","pen4o17") # логваме се с нашите данни
    or $newerr=1; # проверка дали сме логнати

# да изпише съобщение когато се свържем
print "Getting file list";

  # отново да проверим за грешка
  # и да излезем от сървара ако има такава
  push @ERRORS, "Can't login to $host: $!\n" if $newerr;
  $ftp->quit if $newerr;
  myerr() if $newerr;

# ако всичко е нормално
print "Logged in\n";

$ftp->cwd($directory)    # нека да идем директно в директорията,
         # която искахме по-горе – tutorials

    or $newerr=1; # отново да проверим за грешка

 # нека скрипта да ни изпише нещо ако
 # намери грешка в името на директорията или друга
 push @ERRORS, "Can't cd  $!\n" if $newerr;
  myerr() if $newerr;
  # разкачи връзката ако има грешка
  $ftp->quit if $newerr;

# да зададем команда на FTP сървара
# в случая аз си избирам ‘dir’, но може да е всяка
# друга команда която поддържа този FTP сървар
@files=$ftp->dir
   # нова проверка за грешки
   or $newerr=1;
  
  # нека изпечата съобщение за грешката
  # с push добавяме грешката към масив @ERRORS
  push @ERRORS, "Can't get file list $!\n" if $newerr;
  myerr() if $newerr;

# ако всичко е ок нека видим файловете в директорията
print "Got  file list\n";  
foreach(@files) # правим листата с файловете на масив @files
  {
  print "$_\n"; # принтваме на екрана файл по файл
       # със специалната променлива на Perl,
       # която обслужва елементи на масиви
  }
# след като сме изпечатали всичко, което ни е необходимо
# излизаме нормално от сървара
$ftp->quit;

# нека да създадем подпрограмата за грешки,
# за която споменах по-горе
sub myerr {
  print "Error: \n";
  print @ERRORS;
  exit 0;
}

Уххх, че много коментари! Да вземем малко да ги делнем а ?? И да видим как би изглеждал скрипта:

#!/usr/bin/perl
use Net::FTP;
my $host="pen4o.centrum-group.com";
my $directory="tutorials";
$ftp=Net::FTP->new($host,Timeout=>240) or $newerr=1;
  push @ERRORS, "Can't ftp to $host: $!\n" if $newerr;
  myerr() if $newerr;
print "Connected\n";
$ftp->login("pen4o","pen4o17") or $newerr=1;
print "Getting file list";
  push @ERRORS, "Can't login to $host: $!\n" if $newerr;
  $ftp->quit if $newerr;
  myerr() if $newerr;
print "Logged in\n";
$ftp->cwd($directory) or $newerr=1;
 push @ERRORS, "Can't cd  $!\n" if $newerr;
  myerr() if $newerr;
  $ftp->quit if $newerr;
@files=$ftp->dir or $newerr=1;
  push @ERRORS, "Can't get file list $!\n" if $newerr;
  myerr() if $newerr;
print "Got  file list\n";  
foreach(@files) { print "$_\n"; }
$ftp->quit;
sub myerr {
  print "Error: \n";
  print @ERRORS;
  exit 0; }

Мдам, на 28 реда събрахме програмка, която прави всички проверки за грешки и прави някакви мизерии в FTP сървар '<img'>. Аз лично не знам друг език, който толкова елегантно и ясно да направи това. Като се зачетете в кода може наистина да усетите какво означават думите на Larry Wall (създателя на Perl), който казва: “Пърл е като говоримите езици – рационален, простичък и невероятно богат откъм изразни средтва..”.

Нека ви дам една идея. Можете да накарате този скрипт да прави backup на важните ви файлове които сте поставили в някоя директория или по-точно да съхраните данните(файлове, които е добре да бъдат защитени по някакъв начин – например като архиви или PDF-и с парола) в internet пространството. Нека погледнем реда :

@files=$ftp->dir or $newerr=1;

Спокойно можете да използвате не ‘dir’, а някоя друга команда (put, get ...). Да видим как се прави това. Първо е добре да познавате FTP командите които ви позволява вашия сървар. Всички FTP сървари позволяват командата put. Това е команда с която казвате на сървара да качи някой файл от хард диска ви на FTP директорията ви.

Аз заменям:

@files=$ftp->dir or $newerr=1;

със:

$blog = 'C:\blog\index.html'; # ако сте под Windows
$ftp->put($blog)  or $newerr=1;
@files=$ftp->dir or $newerr=1;

Така качихме файл на FTP сървара ни. Ако искате да качите всички файлове от директорията:

 C:\blog

Можете да го направите като замените горните редове така:

for (glob('C:\blog\*.*''<img'>) { # ако сте под Windows
$ftp->put($_);
}
@files=$ftp->dir or $newerr=1;

Използвах папката блог, защото ми дойде на ум, че така можете да си направите собствен статичен блог сайт който да оновявате по много лесен начин '<img'>). Много Хитро, нали. А има блогерски програми, които ви карат да плащата сума левчета за да им ползвате тъпнята, която дoри не знаете какво прави с вашите данни. Да е жива и здрава идеята OpenSource.

Тъй като сайто може да промени символите от кода прилагам тутора като PDF тук:
http://nediko.fortunecity.com/perl/Perl_Net_FTP_tutorial_ned.zip
И целия код с блогерската програмка тук:
http://nediko.centrum-group.com/Program....erl.zip
Не забравяйте да експериментирате. Например добре би било да изтривате качените файлове за да не ги чакатe да се качат отново и да не ви объркват.  Файловете с Perl се изтриват с командата unlink. Пример:

unlink "index.html";

Можете да замените еденичните кавички с двойни, но тогава внимавайте с шпациите в файловете. Ще трябва да използвате двойно наклонени черти. Пример:


for (glob("C:\\blog\\*.*")) { # ако сте под Windows
$ftp->put($_);
}
@files=$ftp->dir or $newerr=1;

Айде стига толква. Perl е толкова лесен и необятен, че човек като почне да пише за него и няма спирачки. Дано ви хареса тутора. В следващия тутор може да закачим и малко сериозното програмиране с Perl, макар, че с тоя език няма сериозност, всичко става като на майтап. Все пак не се заблуждавайте, всички C unix/linux гурота ползват доволно Perl като алтернативен език.

ПС: Не забравяйте да смените сървара с вашия и да си попълните всички ваши данни. Скриптовете са тествани и работят с:
perl, v5.6.1 built for MSWin32-x86-multi-thread
Видях, че има проблеми с копирането на кавичките в PDF-a, заменете ги ръчно с кавички под английска клавиатура.
13  Програмиране / Общ форум / Perl irc bot programming -: May 01, 2006, 19:59
Прост Perl IRC бот

Програмиране на семпъл IRC робот, който да се свързва с IRC сървар и след това да влиза в канал по Ваш избор.

В този туториал ще се опитам в лесни стъпки да ви покажа как можете да се свържете с IRC сървар, да влезете в някой канал и да манипулирате в него. Думата бот, която често се използва в IRC, всъщност е съкращение на робот. IRC ботовете могат да имат много предназначения – съхраняват информация (логинг), следят за чистотата на канала (административни ботове), ботове за игри, бойни ботове (с цел завземане на чужди канали, флоодинг, нюкинг, порт-сканинг...). В този туториал е невъзможно да се обобщят всички приложения на IRC ботовете, а и нашата цел днес не е такава.

Много хора мислят, че Perl е най-добрия език за писане на IRC ботове, тъй като една от най-силните му страни е перфектната поддръжка на регулярни изрази и лесната обработка на големи обеми текст. Съществува още един много разпространен език за писане на ботове – TCL. Като възможности TCL доста отстъпва пред Perl, но се е наложил поради първоначалния замисъл на езика – създаване на теоретични модели на физични процеси. Всъщност един IRC бот може да бъде написан почти на всички съществуващи езици, които поддържат работа с сокети, но нека не се отклоняваме от темата.
 За да създадем нашия прост робот трябва да сте наясно, че IRC RFC изисква всяка команда или съобщение да завършва “return” и нов ред (ето така \r\n), а също трябва да отговаря адекватно на PING съобщението на сървара!

Стартиране на нашия IRC робот
 Просто извикайте скрипта без никакви аргументи, ето така:
   % perl irc.pl

Резултат

В резултат на стартирането трябва да видите нещо от сорта:

:irc.del.bg 005 simple_r WALLCHOPS KNOCK EXCEPTS INVEX MODES=4 MAXCHANNELS=15 MAXBANS=120 MAXTARGETS=4 NICKLEN=15 TOPICLEN=150 KICKLEN=150 :are supported by this server
:irc.del.bg 005 simple_r CHANTYPES=#& PREFIX=(ohv)@%+ CHANMODES=eIb,k,l,imnpsta NETWORK=ShakeIT CASEMAPPING=rfc1459 CALLERID :are supported by this server
:irc.del.bg 251 simple_r :There are 5 users and 2350 invisible on 27 servers
:irc.del.bg 252 simple_r 56 :IRC Operators online
:irc.del.bg 254 simple_r 2622 :channels formed
:irc.del.bg 255 simple_r :I have 576 clients and 1 servers
:irc.del.bg 265 simple_r :Current local  users: 576  Max: 1398
:irc.del.bg 266 simple_r :Current global users: 2355  Max: 4883
:irc.del.bg 250 simple_r :Highest connection count: 1399 (1398 clients) (431982 connections received)
...
:irc.del.bg 372 simple_r :-  Priaten chat vi jelae equipat na Davidov Net! ;-)
...

Това може да изглежда малко объркващо отначало, но ако разгледате отговора на сървара линия по линия ще ви стане по-ясно. Накратко – сървара отговаря, че ви е разпознал като клиент и е готов за работа.
Ако желаете може спокойно да използвате регулярните изрази за да филтрирате цялата тази информация и да покажете само това което ви интересува.

А сега нека да напишем робота

За да пишете Perl програми ви е напълно достатъчен и най-простия текстови редактор, който имате (ed - unix, cat - *x, notepad – win...). Ще съхраним нашия робот с разширението .pl. За да ми е по-лесно ще изпиша целия код и ще го коментирам между редовете.

#!/usr/local/bin/perl -w
# irc.pl
# Простичък IRC robot.
# Стартиране: perl irc.pl

use strict;

# Ще използваме сокет за да се свържем с IRC.
# Модулът по-долу би трябвало да присъства
# по подразбиране във вашата Perl дистрибуция
use IO::Socket;

# Сървар за връзка и нашите данни.
my $server = "irc.del.bg";   # любимия ви сървар
my $nick = "simple_r";   #  прякор с който желате да влезете
my $login = "ne6to_si";

#  Канал в който искате да влезе бота.
my $channel = "#sladur";

# Свързване с IRC сървара.
my $sock = new IO::Socket::INET(PeerAddr => $server,
                                PeerPort => 6667,
                                Proto => 'tcp''<img'> or
                                    die "Can't connect\n";

# Логване в сървара.
print $sock "NICK $nick\r\n";
print $sock "USER $login 8 * :Perl IRC Hacks Robot\r\n";

# Изчитане на редовете гот сървара,
# докато не ни каже, че сме се свързали.
while (my $input = <$sock>) {
        if ($input =~ /^PING(.*)$/i) {
            print $sock "PONG $1\r\n";
            #сървара обича да ни проверява с ping, затова му отговаряме
        }
    # Проверка на числовия отговор от сървара.
    if ($input =~ /004/) {
        # Сега вече сме логнати.
        last;
    }
    elsif ($input =~ /433/) {
        die "Nickname is already in use.";
    }
}

# Свързване с канал.
print $sock "JOIN $channel\r\n";

# Продължаваме да четем редовете от сървара.
while (my $input = <$sock>) {
    chop $input;
    if ($input =~ /^PING(.*)$/i) {
        # Трябва да отговоряме на PING-а за да не ни изхвърли.
        print $sock "PONG $1\r\n";
    }
    else {
        # Принтване на съобщенията от канала.
        print "$input\n";
    }
}

Надграждане на бота

След като имаме базовия бот, който се свързва с някой канал, вече можем да градим върху този бот по-голяма функционалност. Погледнете редa:

        # Принтване на съобщенията от канала.
        print "$input\n";

Този ред е онова което можем да разработим колкото си искаме. Например можем да накараме съобщенията от канала да се логват в някой текстови файл, който по-късно да разгледаме за интересни уеб адреси. Ето как:
Заместваме реда:

print "$input\n";

със

#----------------часта която ще замени реда
# създаваме файл в който логваме съобщенията
open (LOG, ">>$channel.log");
# >> означава, че файла ще се допълва
# и няма да се изгуби предишната информация в него

# филтрираме леко информацията
# с регулярен израз
$input =~ s/!.*PRIVMSG $channel :/:  /i;
# s/нещо-което-искаме-да-заменим/с-това/
# i-то накрая е за да укажем, че е без значение м. и гол. букви

#принтираме съобщенията от канала в този файл
print LOG "$input\n";

#затваряме файла
close LOG;
#-----------------край

Изчакайте малко и отворете файла, който се намира в директорията на скрипта channel.log. Когато вмъквате тези редове на конзолния ви прозорец няма да се показват никакви съобщения, тъй като принтваме директно във файл. Колко готино и лесно го прави Perl, нали '<img'>.  От тук нататък можем да накараме файла, който се логва да бъде HTML, но сега ме мързи да пиша. Все пак има много простичък начин да логваме директно в някоя статична уеб страничка с NET::FTP модула. Може би ще напиша скоро и за него едно семпло туторче.


Заключение

За да напишете подобен бот Perl ще ви предложи много начини. Философията на езика е, че “има повече от един начин за да направиш това...”. Можете да използвате доста модули подходящи за писане на IRC ботове. Някои от тях са NET::IRC и POE.
Тъй като сайта трие някои символи качвам тутора като PDF тук:
http://nediko.fortunecity.com/perl/Prost_IRC_bot_pod_Perl.zip
Целия скрипт можете да си свалите от тук:
http://nediko.fortunecity.com/perl/irc.pl.zip
Тествано с:
perl, v5.6.1 built for MSWin32-x86-multi-thread
Не забравяйте да смените сървара, ника, канала и там каквото си искате!
Спокойно можете да изтриете всички линии, които започват с # - знака за коментар. Може би така ще видите простотата в цял вид. Ето така:

use strict;
use IO::Socket;
my $server = "irc.del.bg";
my $nick = "simple_r";
my $login = "ne6to_si";
my $channel = "#sladur";
my $sock = new IO::Socket::INET(PeerAddr => $server,
                                PeerPort => 6667,
                                Proto => 'tcp''<img'> or
                                    die "Can't connect\n";
print $sock "NICK $nick\r\n";
print $sock "USER $login 8 * :Perl IRC Hacks Robot\r\n";
while (my $input = <$sock>) {

    if ($input =~ /^PING(.*)$/i) {
            print $sock "PONG $1\r\n";
        }

    if ($input =~ /004/) {
        last;
    }
    elsif ($input =~ /433/) {
        die "Nickname is already in use.";
    }
}
print $sock "JOIN $channel\r\n";
while (my $input = <$sock>) {
    chop $input;
    if ($input =~ /^PING(.*)$/i) {
        print $sock "PONG $1\r\n";
    }
    else {
   open (LOG, ">>$channel.log");
   $input =~ s/!.*PRIVMSG $channel :/:\t  /i;
   print LOG "$input\n";
   close LOG;
    }
}

редакцията по-долу от 24.08.06


Разбира се бихте могли да направите и друг бот, примерно инфо-бот, който да информира посетителите на канала ви за някоя irc команда (а защо не и linux-команда). В този случай бота би изглеждал така ако е писан за unibg.org, не че има значение от мрежата де:


use strict;
use IO::Socket;
my $server = "irc.techno-link.com";
my $nick = "sim_perl_b0t";
my $login = "lapaiks";
my $channel = "#help";
my $sock = new IO::Socket::INET(PeerAddr => $server,
                                PeerPort => 6667,
                                Proto => 'tcp''<img'> or
                                    die "Can't connect\n";
print $sock "NICK $nick\r\n";
print $sock "USER $login 8 * :Perl IRC Hacks Robot\r\n";
while (my $input = <$sock>) {
        if ($input =~ /^PING(.*)$/i) {
            print $sock "PONG $1\r\n";
        }
    if ($input =~ /004/) {
        last;
    }
    elsif ($input =~ /433/) {
        die "Nickname is already in use.";
    }
}
print $sock "JOIN $channel\r\n";
while (my $input = <$sock>) {
    chop $input;
    if ($input =~ /^(.*)$/i) {
        print $input;
    }

    if ($input =~ /^PING(.*)$/i) {
        print $sock "PONG $1\r\n";
    }
##### tuk ve4e moje da se omajete zdrawo, kwoto vi e kef
   #registrirane na nick
    if ($input =~ /^.*!bot regnick(.*)$/i) {
        print $sock ("PRIVMSG $channel :./msg ns reg <parola> <postoianna_parola>\r\n");
    }
    
       #registrirane na chan
    if ($input =~ /^.*!bot regchan(.*)$/i) {
        print $sock ("PRIVMSG $channel :./msg cs reg #chan pass1 pass2\r\n");
    }
    
       #gledane za posledni nicks ot IP
    if ($input =~ /^.*!bot nicksIP(.*)$/i) {
        print $sock ("PRIVMSG $channel :./msg seen seen *\@ip d5\r\n");
    }
    
       #ghost  
    if ($input =~ /^.*!bot ghost(.*)$/i) {
        print $sock ("PRIVMSG $channel :./msg ns ghost nick parola\r\n");
    }
    
    
    if ($input =~ /^.*!bot superop(.*)$/i) {
        print $sock ("PRIVMSG $channel :./msg cs set \$kanal Secureops on/off\r\n");
    }

    if ($input =~ /^.*!bot наздраве(.*)$/i) {
        print $sock ("PRIVMSG $channel :Наздраве, да го еба..\r\n");
    }
    if ($input =~ /^.*bot ща шибам(.*)$/i) {
        print $sock ("PRIVMSG $channel :Що бе'<img'> Майка ти спря ли да ти дава?!\r\n");
    }
    if ($input =~ /^.*kak da.*(.*)$/i) {
        print $sock ("PRIVMSG $channel :Pi4 ia pitai google.com : HowTo se precakam... am ako moje da mi wleze do iaia-ta! Ebavam se estestweno.. sa 6e izmislim ne6to, trai\r\n");
    }
      
#### do tuk    
    else {
        # Print the raw line received by the bot.
        print "$input\n";
    }
}

##############################
Знам, че може да се отнесе кода когато се публикува в интернет, затова ето ви и адресче на тоя инфобот само за БГ:
http://nediko.centrum-group.com/Program...._Bot.pl

Приятно кодиране '<img'>!

ПС: За тутора съм ползвал и чужди идеи, но убийте ме не знам точно от къде съм си свалял скриптовете.
Недялко Войняговски
Пловдив
01.05.06



Страници: [1]