Кіріспе
Ашық кодты Интернет реле чаты клиенті
Visual IRC (ViRC) – Windows операциялық жүйесі үшін ашық кодты Интернет реле чаты клиенті. Көптеген басқа IRC клиенттерінен өзгеше, ViRC-дегі мүмкіндіктердің көбі қоса берілген IRC скрипті арқылы басқарылады, соның салдарынан бағдарламаның жұмысын бастапқы кодты өзгертпестен кеңейтуге немесе өзгертуге болады.
Тарих
Visual IRC (16 бит) – 1995 жылы Windows 3.x үшін шығарылған, MeGALiTH жазған. Бұл бағдарламада көптеген кіріктірілген мүмкіндіктер болды, сонымен қатар VPL (ViRC Programming Language) арқылы скрипттеуге болатын, ол ViRCScript және Versus тілдерінің алдындағысы. Visual IRC '96 (кейін Visual IRC '97, Visual IRC '98) – 1996 жылы шығарылған, MeGALiTH жазған. Бұл Windows 9x/NT үшін жазылған ViRC-нің алғашқы 32 биттік нұсқасы болды. 16 биттік ViRC-ге енгізілген көптеген мүмкіндіктер ViRC '96-дағы әдепкі скрипт арқылы басқарылды. ViRC '98 құрамында Тара МакГрю, қатысты аты "Mr2001", жазған код бар, әсіресе ViRCScript қозғалтқышына енгізілген жақсартулар. Бұл скрипт тілі алдыңғы нұсқамен үйлесімсіз болды. Кейінгі нұсқаларда дауыстық байланыс және бейнеконференция мүмкіндіктері қосылды. Екінші нұсқасының дамуы баяулады және 2000 жылы Visual IRC жойылған сияқты көрінді. Бастапқы автор MeGALiTH (Адриан Кейбл) бастапқы кодын бұрын код үлесін қосқан және жасырын түрде Bisual IRC (BIRC) деп аталатын клонын жасап жатқан Mr2001 (Тара МакГрю) пайдаланушысына берді. ViRC '98 код базасын қайта дамытудың орнына, ол ViRC '98 мүмкіндіктерінің бір бөлігін BIRC-ке біріктіріп, оны Visual IRC 2 ретінде шығарды. Visual IRC 2 – Алғаш рет 2001 жылы Mr2001 шығарды, бұл нұсқаның Versus скрипт тілі ViRCScript-ке негізделген, бірақ ішкі құрылымы толығымен жаңадан жазылған. Шындығында, ViRC 2 тек ViRC '98 кодымен бірнеше жүз жол ғана ортақ. Бұл нұсқада дауыстық және бейнеконференция мүмкіндіктері алынып тасталды, себебі оларды іске асыру үшін қолданылған кітапханалар енді қолдау көрсетілмейді. BIRC, ViRC 2 және олармен байланысты құралдардың көп бөлігі бастапқы коды жобаның веб-сайты мен SourceForge арқылы GPL лицензиясымен жарияланды.
қарсы
Versus - бастапқыда Bisual IRC IRC клиенті үшін жасалған, ал қазір Visual IRC-де қолданылатын скрипт тілі. Ол ircII және mIRC, сондай-ақ Tcl және C тілдерінде қолданылатын скрипт тілдеріне көп жағынан ұқсас. "Versus" атауы "VS" деп қысқартылуы мүмкін болғандықтан таңдалды, бұл Visual IRC '96 мен '98 жылдары қолданылған ViRCScript тілінің танымал аббревиатурасы еді. Versus көбінесе ViRCScript-пен кері үйлесімділік сақтап келді, сондықтан "VS" деп аталған бұрынғы құжаттама мен түсіндірмелер Versus-қа қолданғанда да дәлдігін жоғалтпады. Атау сондай-ақ BIRC-тің ViRC-тің орнын басу мақсатымен пайда болғанын көрсетеді. Object Versus немесе OVS – Versus тілінің объектіге бағытталған мүмкіндіктерін білдіреді. Скрипттер сыныптарды анықтап, мәтіндік деректер мен псевдонимдердің орнына объектілер мен әдістермен жұмыс істей алады; бірақ іс жүзінде OVS көбінесе ViRC интерфейсін құрайтын VCL объектілерін өңдеу үшін қолданылады.
The name "Versus" was chosen because it could be shortened to "VS", which was a common abbreviation for ViRCScript, the language used by Visual IRC '96 through '98. Versus remained mostly backward compatible with ViRCScript, so existing documentation and commentary that mentioned "VS" remained mostly accurate when applied to Versus. The name also alluded to BIRC's origins as a replacement for ViRC. Object Versus, or OVS, refers to the object oriented features of Versus. Scripts can define classes and work with objects and methods instead of textual data and aliases; however, in practice, OVS is mostly used to manipulate the VCL objects that make up ViRC's interface.
Скриптті сақтау
Скрипттер файлдарда сақталады, әдетте файл кеңейтімімен, бірақ кейде lib кеңейтімі де қолданылады. Versus скрипт файлында скрипт жүктелген кезде орындалатын нұсқаулар болады; скриптте анықталған кез келген блок (төменде қараңыз) бұрынғы скрипттердегі бірдей аттас блоктарды жаңартады.
Скриптте анықталатын блоктар
Атаулар – бұл кіші бағдарламалар. Оларды кез келген терезедегі командалық жолдан немесе скрипттің басқа бөліктерінен шақыруға болады. Мәнді қайтаратын атаулар функциялар деп аталады; атаулар мәнді қайтаруды күтетінін анықтай алады, содан кейін функция немесе команда ретінде әрекет етеді. Сыныптар объектіге бағытталған скриптте (OVS) қолданылады. Әр сыныпта қасиеттер, әдістер, конструктор және деструктор болуы мүмкін. Оқиғалар IRC серверінен келетін хабарларды, сондай-ақ файлдарды беруді аяқтау немесе жаңа терезе ашу сияқты жүйелік немесе клиенттік деңгейдегі оқиғаларды өңдеу үшін қолданылады. Серверлік оқиғалар серверден келген хабарламаларды сәйкестендіру үшін үлгілерді немесе Versus-тің жабайы символдарын пайдаланады. Егер бірнеше серверлік оқиғалар белгілі бір хабарламаға сәйкес келсе, тек ең жоғары басымдыққа иесі (үлгінің ұзындығы және ондағы жабайы символдардың салыстырмалы "мәні" бойынша есептелгені) орындалады. Клиенттік оқиғалар атаумен анықталады: мысалы, <OnCreateWindow foo> және <OnCreateWindow bar> жаңа терезе ашылғанда орындалады. Олар сондай-ақ осы оқиғаны тудыратын нақты жағдайларды шектейтін үлгілерді де қамтуы мүмкін (мысалы, жаңа арна терезесі құрылған кезде ғана орындалуы). Мәзір ағаштары мен мәзір элементтері клиент интерфейсінің әртүрлі элементтері үшін пайда болатын контексттік мәзірлерді, сондай-ақ әрқашан көрінетін негізгі мәзірді анықтайды. Мәзір ағашы блоктары мәзірдің құрылымын анықтайды және әр элемент үшін тақырыптарды белгілейді; мәзір элементі блоктары элемент басылғанда орындалатын скрипт кодын анықтайды. Құралдар жолағы мен құралдар жолағы элементтері мәзір ағашы мен мәзір элементтері блоктарына ұқсас, бірақ олар әр терезеге байланысты құралдар жолағын анықтайды. Интерфейске жаңа құралдар жолағын бірегей атау таңдау арқылы қосуға болады. Атаулар, әдістер (конструкторлар мен деструкторларды қоса), оқиғалар, мәзір элементтері және құралдар жолағы элементтері процедуралар немесе код блоктары деп аталады.
Файлдар
Скрипттер $RandomRead және $ReadLine функцияларымен, сондай-ақ CreateFile және AppendText командалары арқылы файлдарға қол жеткізе алады. Скрипттер TStringList VCL класын пайдаланып, толық мәтін файлын жадқа оқуға, өңдеуге және сақтауға болады.
Өзгергіштер
Барлық айнымалылар 4 ГБ-қа дейін дерек сақтауы мүмкін. Айнымалылардың атаулары доллар белгісінен ($) басталып, содан кейін үлкен әріп, кіші әріп немесе астын сызу таңбасы болуы керек. Айнымалыларда кез келген символдар болуы мүмкін, бірақ көбінесе олар басылатын мәтін үшін қолданылады. Жергілікті айнымалылар @L командасымен белгіленеді және олар жасалған процедураның контекстінде ғана қолданылады. Процедура аяқталғанда олар жойылады. Мысалы, $C – ағымдағы арнаның атауын білдіретін сияқты, кейбір жергілікті айнымалылар алдын ала анықталған. Жалпы айнымалылар @ командасымен белгіленеді және кез келген процедурадан қол жетімді болады. Клиент жабылып қалғанда олар жойылады. Алиастар $fresult деген жалпы айнымалыға мән тағайындау арқылы нәтиже қайтара алады. Сақталған айнымалылар @S командасымен белгіленеді және жалпы айнымалылар сияқты кез келген жерде қол жетімді. Олардың мәндері дереу тұрақты жадқа сақталады және клиент келесі рет іске қосылғанда қалпына келтіріледі.
Ассоциативтік массивтер
Ассоциативтік массивтер кілттерді мәндермен байланыстырады. Кілттер мен мәндер рұқсат етілген таңбаларға шектеусіз 4 ГБ дейін деректерді қамтуы мүмкін. Жергілікті, жаһандық және сақталатын массивтік мәндерді @L, @ және @S командаларын пайдаланып орнатуға болады, олар тиісті айнымалылар сияқты жұмыс істейді. Сақталатын массивтің мәні орнатылғанда, бүкіл массив сақталады. $arrayname[key] синтаксисі нақты кілт үшін мәнді орнату немесе алу үшін қолданылады. $arrayname синтаксисі ғана массивті кілт-мәнді жұптардың тізімі ретінде қарастырады, бұл скриптке массивтің барлық мазмұнын бірден орнатуға немесе қазірдің өзінде бар кілттер арқылы итерациялауға мүмкіндік береді.
Псевдауыш
Псевдоайнымалылар (немесе pvars) синтаксисі жағынан айнымалыларға ұқсас, бірақ олардың мәнін өзгертуге болмайды. $0-ден $9-ға дейінгі pvars ағымдағы процедураға жіберілген параметрлерді реті бойынша сақтайды. $0 процедураның атын, $1 параметрлер жолының бірінші сөзін және т.б. қамтиды. $0-ден $9-ға дейінгі pvars ағымдағы процедураға жіберілген параметрлерді және одан кейінгі барлық параметрлерді сақтайды. $0 процедураның атын және барлық параметрлер жолын, $1 барлық параметрлерді, $2 бірінші параметрден кейінгі барлық параметрлерді және т.б. қамтиды. $?="PROMPT STRING" ерекше тізбегі пайдаланушыдан мәнді енгізуді сұрайтын диалог терезесін ашады.