Կարգերով պահոցներ՝ Տեք

Անդրանիկ Վարդանեան

24 Մարտի, 2026

պէտք է ասել՝ շատ յաճելի է հետ անցնել Յունիքսական համակարգերի համակարգչի եւ լափթոփի վրայ։

Ճիշտ է՝ մակՕՍ-ն էլ է յունիքս, ու շատ դէպքերում նոյնիսկ աւելի շատ յունիքս ա քան ասենք ոմն Լինուքս համակարգրե (ուբունտու, քեզ եմ նայում) բայց մի տեսակ հաւէս ա կրկին աշխատել KDE-ով, WindowMaker-ով, օգտագործել qtPass առանց խնդիրների, ունենալ նորմալ package manager։

Շատ խնդալու է սակայն, ու եթէ ինձ պատմէին սա մի տաս տարի առաջ չէի հաւատայ, որ Լինուքսի հետ անցնելու իմ գլխաւոր պատճառը կը լինի խաղեր խաղալը։

Մի քանի ամիս առաջ հաւաքեցի խաղեր խաղալու համակարգիչ՝ NVidia GPUով, եւ այլն։ ու ինձ ՕՀ էր պէտք, որ օգտագործեմ։ Դէ Վինդոզ հո չէի՞ դնելու։

Վերջում որոշեցի փորձել CachyOS, որը շատ աւելի լաւ էր քան սպասում էի։ նախ՝ հետը ZFS է գալիս, յետոյ էլ կարողանում եմ նորմալ bootloader-ներ օգտագործել ու ազատուել GRUB-ից։ այս դէպքում օգտագործեցի limine, բայց երեւի կուզէի անցնել ZFS Boot Manager-ին։

Էկսպերիմենտը էնքան լաւ անցաւ, որ վերջում որոշեցի իմ Lenovo ThinkPad T480s-ի վրայ էլ դնել CachyOS. դրա համար պէտք էր նախ փոխել մարտկոցը (done) ու քանի որ տանը ունեմ լաւ ցանց՝ փոխել Wi-Fi-ի չիպը (done).

Արդէն երկու շաբաթ Լինուքս օգտագործելուց յետոյ պէտք ա ասեմ՝ ահաւոր հաւէս ա ազատութիւնը բայց ահաւոր վատն ա ամէն ինչ ։Ճ such an amazing turn of events, yes?

նորայրը կասէր «դէ անդրանիկ դու ստրուկ ես որ մակՕՍ ես օգտագործում» բայց արի ու տես որ մակՕՍ-ում աւելի լաւ ա աշխատում spell checker-ը, աւելի լաւ ա աշխատում input-ների համակարգերը (այո, փորձել եմ եւ X11, եւ Wayland, երկուսն էլ վատն են), աւելի լաւ է աշխատում memory management-ը, աւելի յարմար է ունենալ global menu վերեւում, աւելի լաւ է ինտեգրուած ամբողջ համակարգը իրար հետ, քան ասենք Լինուքսի վրայ ունենալ KDE/Gnome/WindowMaker.

Էլ չասեմ, որ կան շատ բարձր որակի ծրագրեր մակՕՍ-ի վրայ, որը անհնար է գտնել յունիքսական համակարգերի համար։ օրինակ՝ MarsEdit, NetNewsWire եւ իհարկէ OmniFocus, որ առանց իրա չեմ կարող նոյնիսկ ապրել։

Միւս կողմից, պէտք ա ասել, որ մակՕՍ-ը էնքան վատ ուղղութեամբ ա գնում, որ կարող ա ուզած-չուզած հետ անցնեմ, մշտականապէս, Լինուքսի (կամ ինչու չէ նաեւ, FreeBSD desktopի)։

բայց մինչեւ էդ օրը գալը, պէտք է լաւացնել Լինուքսի ու այլ Յունիքսական համակարգերի առօրեայ օգտագործման վիճակները։

Հա, քանի յիշեցի՝ հաւանաբար լիքը սխալներ կան այս գրածիս մէջ, քանի որ ՕՀ-ի ծրագրերի մի մասը մի տեղից են կարդում ուղղագրիչի ֆայլերը, մնացածը՝ ուրիշ տեղից։ free software my ass, իմաստը որն ա էդքան ազատ լինելու եթէ իրար հետ չեն շփուելու։

ու իմ վրայ մի այլ տիպի ազդում ա յունիքսական համակարգերի վրայ գտնուող վատ հայկական ստեղնաշարերի վիճակը։ Կրկին պէտք է ծախսեմ մի քանի ժամ որ լաւ լեյաութ սարքեմ։ Նոյնիսկ Հայերէն գրամեքենայի լեյաութի վրայ պակաս բաներ կան։

Տեսնենք եթէ գոնէ մի տարի ձգելու եմ, թէ ոչ։

Անդրանիկ Վարդանեան

8 Սեպտեմբերի, 2025

Մի քանի օր առաջ տանը նոր դարակ ենք հաւաքել (ես ու Կօֆէն միասին, մուրճով խփում էինք, որ հաւաքուի, ու մուրճը իհարկէ վերցրել էինք հարեւանի մօտից), որի գլխաւոր նպատակն էր լինել դարակ տան սպասարկիչների համար։

Իհարկէ ստացուեց ոնց ուզում եմ, ու սիրուն տեղադրեցինք։ ահա նկար —

բայց ամենակարեւորն այն է, որ վերջապէս սվիչը՝ HPE OfficeConnect 1820֊ը, փոխել եմ Mikrotik CSS318–16G–2S+֊ով, որը ամբողջովին անձայն է։

էլ դզզզզզ ձայն չկայ տանը։

մնացած մանրամասները երեւի կը գրառեմ անգլերէն բլոգում։

ու տենց։ Կը ներէք որ, սերւիսները մօտ 12 ժամ անջատուած էին ։Ճ

Անդրանիկ Վարդանեան

16 Հունիսի, 2025

Մի քանի օր առաջ երբ որոշեցի BSides֊ի համար գրել events2ics ծրագիրը, հասկացայ որ մենք չունենք լոգ անելու գրադարան Օբերոնի համար։

Այդ պատճառով էլ գրեցի Logger գրադարանը։ մօտաւորապէս էս տեսքն ունի օգտագործելուց՝

MODULE LoggerTest;
  IMPORT Logger;
VAR log: Logger.Logger;
BEGIN
  log := Logger.New();

  log.SetLevel(Logger.DEBUG);
  log.Info("Program initialized");
  log.InfoInt("The answer to life, the universe, and everything: ", 42);

  log.SetPrefix("Web Server");
  log.Warn("Web Server is loading slowly");
  log.WarnInt("Current threads: ", 4)
END LoggerTest.

Բայց երբ վերջացրեցի Logger֊ը գրել, հասկացայ որ նաեւ չունենք Semantic Versioning֊ի գրադարան Օբերոնի համար։ Սա իրականում պէտք էր որ կարողանամ Վիշապ Օբերոնի գրադարանների համակարգը՝ Vipak֊ը աւելի լաւ օգտագործել։

Նաեւ գրեցի SemVer գրադարանը, որը այս պահին կարողանում ա միայն Parse անել, այսպէս՝

MODULE SemVerExample;
  IMPORT SemVer, Out;
VAR
  v: SemVer.Version;
  ok: BOOLEAN;
BEGIN
  SemVer.Parse("1.2.3-alpha.1+build.5", v, ok);
  IF ok THEN
    Out.String("major="); Out.Int(v.Major, 1); Out.String("; ");
    Out.String("minor="); Out.Int(v.Minor, 1); Out.String("; ");
    Out.String("patch="); Out.Int(v.Patch, 1); Out.String("; ");
    Out.String("preRelease="); Out.String(v.PreRelease); Out.String("; ");
    Out.String("build="); Out.String(v.Build); Out.String(";");
    Out.Ln;
  ELSE
    Out.String("Invalid version string."); Out.Ln;
  END;
END SemVerExample.
 $ voc ../src/SemVer.Mod -s SemVerExample.Mod -m 2>/dev/null && ./SemVerExample
../src/SemVer.Mod  Compiling SemVer.  New symbol file.  5302 chars.
SemVerExample.Mod  Compiling SemVerExample.  Main program.  1204 chars.
major=1; minor=2; patch=3; preRelease=alpha.1; build=build.5;

Բայց այլ բաներ էլ են պէտք, օրինակ Compare, Match, եւ այլն։ Մտածում եմ երեւի արժի Հաքերսփեյսի ժամանակ մարդիկ աշխատեն դրա վրայ, համ էլ լաւ ուսումնական մօտեցում կը լինի քանի որ հիմնականում ալգորիթմներ պէտք է գրել։

Էլ ի՞նչ գրադարան արժի գրել։

Անդրանիկ Վարդանեան

6 Մարտի, 2025

Բազմաթիւ կազմակերպութիւններ ինձ դիմում են, որ իրենց մօտ շատ կոնկրետ խնդիրներ լուծեմ։ Հիմնականում՝ սերվերների ու այլ ՏՏ֊ական հարցերի մասով։ Բայց շատ դէպքերում ասում են «դէ մնայ միւս հարցերով էլ օգնի», լինի դա անվտանգութիւն, կամ ծրագրաւորում, կամ որոշել թէ ինչ տեսակի համակարգ օգտագործեն նոթագրելու համար։

Վերջին տարին ահագին բզել եմ շատերին (երբ հարց է առաջացել) որ ունեն ներքին Վիկի։ Բոլոր դէպքերում էլ էդ ներքին վիկին ես եմ տեղադրում, ապա սկսում եմ արագի մէջ կարգաւորել, մի տաս հատ էջ սարքել, որ ամբողջովին դատարկ չլինի։

Պէտք է ասեմ, որ ամենաշատ ROI֊ը (Return on Investment֊ը) ունի ներքին Վիկին։ Ինձ թւում էր թէ ticket֊ների համակարգը կը լինի ամենաազդեցիկը, բայց չէ, իրականում Վիկին ա։

Ի տարբերութիւն ասենք Google Docs֊ի, մարդիկ միասին չեն աշխատում իր վրայ միաժամանակ, բայց էդ բերում ա նրան, որ աւելի խորն են մտածում գրելուց, չեն «մնում ուրիշի յոյսին»։ Միւս կողմից էլ, կուզէի որ վիկիները ունենային նման հնարաւորութիւն, բայց բնաւ պարտադիր չի։

Այս շաբաթ երկու կազմակերպութեան համար էլ դրել եմ, մէկը շատ փոքր, մէկն էլ միջին չափսի։ Տեսնենք ոնց կստացուի։

Նաեւ հետաքրքիր ա տեսնել թէ Ticketing֊ի համակարգը ոնց ա ահագին զբաղուած մարդկանց զբաղուածութիւնը քչացնում։ էլ չեն վազվզում, զանգերի մէջ չեն լինում, այլ ուղղակի հատիկ֊հատիկ իրանց գործն են անում։

Անդրանիկ Վարդանեան

27 Փետրվարի, 2025

Երեկուայ ելոյթը OWASP֊ի հանդիպման ժամանակ օկ էր։ ուղիղ 2 ժամ կարողացայ լրացնել, ու նաեւ մարդիկ ուզեցին որ աւելի տեխնիկական բաներն էլ մի օր առանձին պատմեմ, աւելի խորացուած։ երեկ ուղղակի մակերեսային էի պատմում։

Ամէն դէպքում ելոյթի սլայդները դրել եմ այստեղ՝ System Administration for InfoSec Professionals։ պլանաւորում եմ միւս շաբաթ վերջապէս հրապարակեմ իլլուրիայի նոր կայքը, ու այնտեղ արդէն կը լինեն մեր բոլոր ելոյթները, բոլոր տարիների։

Շնորհակալութիւն բոլոր նրանց, ովքեր միացան, հետաքրքիր հարցեր տուեցին, ու մասնակցեցին։

OWASP Yerevan February meetup

Ի դէպ վաղը ունեմ ելոյթ, OWASP Yerevan֊ի հանդիպման ժամանակ։

Չաթում գրել են հետեւեալը՝

OWASP Yerevan February 2025 meetup — ամսուայ վերջին չորեքշաբթին, փետրուարի 26, 19:00 — AUA, 314W PAB 

Agenda՝ 

System Administration for InfoSec people — Antranig Vartanian

յոյս ունեմ հետաքրքիր կը լինի։

Անդրանիկ Վարդանեան

15 Հունվարի, 2025

Ամէն առաւօտ մտնում եմ LinkedIn, որ տեսնեմ եթէ հետաքրքիր բան կայ, ու ամէն առաւօտ էլ հիասթափւում եմ։

Ուզում էի մանրամասնել թէ ինչի, բայց արի ու տես որ մէջս էլ էներգիա չկայ։ Ոնց որ ջուրը ծեծես։

In other news, երեկ ելոյթ եմ տուել մեյլ սերուէրների մասին, այսօր յղումները կը դնեմ։

Ասք Ruby֊ով սերւիսները ինքնաշարժաբար միացնելու մասին

Էս տարին լիքն է թարմացումներով։ Վերջապէս ժամանակ ունեցայ իմ տեղական Huginn֊ը տեղափոխել աւելի թարմ FreeBSD֊ի վրայ, ինչպէս նաեւ թարմացրեցի հենց Huginn֊ը, նաեւ իրան աշխատեցնող Ruby֊ն։

Ինչեւէ, նորայրը բողոքում էր որ՝

երբէք էլ չի աշխատել նորմալ։ սարեանից գոնէ ամէն անգամ ռեսթարտից յետոյ լոկ երկու օր էր բերում ստեղ, ու էլի չէր աշխատում։

որոշեցի արագի մէջ սերւիս հաւաքեմ, որ reboot֊ից յետոյ նորմալ միանայ Huginn֊ը, ինչպէս նաեւ ուղարկեցի իրենց որպէս պատչ։

Քանի չեմ մոռացել, ահա նաեւ սերւիսը՝

#!/bin/sh

# PROVIDE: huginn
# REQUIRE: NETWORKING mysql
# KEYWORD: shutdown

. /etc/rc.subr

name="huginn"
rcvar="huginn_enable"
pidfile="/var/run/${name}/${name}.pid"
logfile="/var/log/${name}/${name}.log"
huginn_user="${name}"
huginn_chdir="/usr/home/huginn/huginn"
huginn_command="/usr/local/bin/foreman start"

PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/huginn/bin"
HOME="/usr/home/huginn"

command="/usr/sbin/daemon"
command_args="-P ${pidfile} -T ${name} -o ${logfile} ${huginn_command}"

load_rc_config $name
: ${huginn_enable:=no}
run_rc_command "$1"

սա քիչ անց պէտք կը գայ նաեւ սարեանի համար, որը նոյնպէս գրուած է Ruby֊ով։

գնացի մի քանի բան էլ թարմացնեմ։

Անդրանիկ Վարդանեան

18 Հոկտեմբերի, 2024

Լրիւ մոռացել էի բլոգել այն մասին, որ Վիշապ Օբերոնը նոր կայք ունի, որը գտնւում ա vishap.oberon.am հասցէում։

Յաջորդ շաբաթները ընթացքում գրելու եմ ու հրապարակեմ Vishap Oberon Handbook֊ը, որը ունենալու ա ամէն ինչ՝ տեղակայումից մինչեւ C binding֊ներ անել։

Հիպերմեդիա համակարգերը եւ Հայաստանեան կայքերը

մի քանի շաբաթ առաջ կարդացի Hypermedia Systems գիրքը, ու պէտք ա ասել որ երբէք այսքան կպնող գիրք չեմ կարդացել։ Խօսքը իհարկէ ՏՏ գրքերի մասին է։

եթէ վերջին տաս տարում մի բան կար, որ շատ էր խանգարում ինձ, դա այսպէս կոչուած front-end ծրագրաւորման աշխարհն էր։ ամէն ինչ ահագին բարդ ա սարքած։

Երբ ես որոշեցի front-end ծրագրաւորում սովորել, այսինքն կոդ գրել բրաուզերի համար, ապա շատ հեշտ էր ամէն բան։ բացում էի մի հատ ֆայլ ու մէջը գրում էի ինչ ուզում եմ որ իմ ծրագիրը կատարի։ ապա էդ ֆայլը աւելացնում էի օգտագործելով <script> պիտակը։ ահագին պարզ ու հանգիստ պրոցես ա։

Բայց յետոյ ինչ֊որ պատճառով բրաուզերի ծրագրաւորումը սկսեց բարդանալ։ էլ չէիր կարող ուղղակի <script> պիտակը օգտագործել։ չէ, չէ։ պէտք էր ինչ որ bundler ունենայիր որը քո JS ֆայլերը կը «սեղմի» ու կը դարձնի մի հատ անհասկանալի ֆայլ։

Յետոյ եկաւ 2015 թուականը, եւ մարդիկ սկսեցին օգտագործել React֊ը, որը ոչ թէ աշխատում էր HTML֊ի հետ, այլ ստանում էր JSON տուեալներ ու դրա հիման վրայ նկարում էր էկրանին ինչ֊որ միջերես։

Չեմ ուզում շատ խորանալ այս թեմայով, ի վերջոյ՝ Hypermedia Systems գիրքը շատ լաւ բացատրում ա ամէն ինչ։

Բայց նման գրքերը ինձ միշտ յիշացնում են Հայաստանի մասին։ բացատրեմ.

մենք շատ փոքր երկիր ենք։ Ինչքան էլ ասենք, որ մեր մօտ ՏՏ ոլորտը զարգացած ա, մէկ ա մեր մօտ միշտ հետ ա լինելու աշխարհից։ Մեր ֆինանսական կարողութիւնները թոյլ չեն տալիս խմբերով ծրագրաւորողներ պահել մի հատ ֆորմի ու մի հատ վճարման համակարգից օգտուելու համար։

Սա նաեւ գլխաւոր պատճառներից ա, թէ ինչու եմ սիրում Open Source լուծումները։ Խոշոր կոմերցիոն կազմակերպութիւնները չեն մտածում մեր մասին, սակայն մենք կարող ենք փոքր համայնքներին ֆինանսաւորել եւ ստանալ աւելի լաւ արդիւնք, քան խոշորները երբեւէ կարող են։ փոքր ու ապակենտրոնը միշտ աւելի լաւ ա աշխատում քան խոշորն ու «չէ իրականում էս բագ չի ֆիչր ա մենք չենք կարող դա ուղղել այս վերսիայում»֊ը։

Նոյնը, ըստ երեւոյթին, վերաբերւում է վեբ ծրագրաւորման մասին։

Այս պահին մի քանի հոգի մարդ է պէտք։ մէկը որ բիզնես լոգիկայ գրի, մէկը որ JSON֊ական բաներ գեներացնի, մէկն էլ որ էդ JSON֊ները ստանայ, ու միջերեսը նկարի։

Հարց է առաջանում՝ մինչեւ JSON API֊ները ի՞նչ էինք անում։ Ո՞նց էինք ստեղծում վեբ միջերեսներ։

Անում էինք այն, ինչ ճիշտ էր՝ ուղղակի ուղարկում էինք HTML֊ը սերւէրից դէպի բրաուզեր, ու ամէն ինչ ճիշտ աշխատում էր։

Կային (ու մինչեւ հիմա կան) շատ լաւ գրադարաններ, ինչպիսին ա jQuery֊ն, որը ինչ֊որ մի ձեւ հեշտացնում էր ծրագրաւորողի գործը։ ինքը իմպերատիւի ու դեկլարատիվի միջեւ է ընկնում։

Բայց Hypermedia Systems գրքի հեղինակները առաջարկում են նոր մօտեցում, նոր գրադարան, որը կոչւում է HTMX։

Առաջին հայեացքից ակնյայտ չի ինչ ա, բայց մի քանի վայրկեան կարդալուց յետոյ պարզ է դարնում որ ինքը ուղղակի դեկլարատիվ կտորներ է աւելացնում HTML֊ի վրայ։

Ասենք ուզում ես ինչ որ տեղ ուղարկել ինչ֊որ GET յայց ու դրա պատասխանը ուզում ես մի տեղ դնել։ Կամ նոյնիսկ ուզում ես ինչ֊որ ֆայլ ուղարկել POST֊ով ու պատասխանը ցոյց տալ։ առաջ պէտք էր կամ խառը JavaScript գրել, կամ jQuery։ Իսկ հիմա կարող եմ ուղղակի գրել հետեւեալը։

<form hx-encoding='multipart/form-data' hx-post='/submit’>
<input type='file' name=‘file’>
<button>Upload</button>
</form>

ուզում ա ասել, որ երբ Upload կոճակն ես սեղմում, ապա ֆայլը ուղարկի դէպի /submit օգտագործելով POST մեթոդը։

Այս մօտեցումը ինձ էնքան դուր եկաւ, որ որոշեցի վերջում, մի քանի ընկերների համար արագի մէջ կայք պատրաստել՝ arm2txt (source), որը ստանում է նկարներ եւ PDF֊ներ հայերէն տեքստով եւ վերադարձնում ա հայերէն տեքստ, ու NetAdoption (source), CERT-AM֊ի նոր նախագծերից մէկն ա, որը ստուգում ա IPv6֊ն ու DNSSEC֊ը։

Ինձ շատ ա դուր գալիս որ մի ժամուայ ընթացքում կարողանում եմ արագի մէջ կայք հաւաքել ու ինձ շատ շատ ա դուր գալիս, որ սա կատարւում ա մի ֆայլանոց գրադարանի կողմից։

Ինձ թւում ա պէտք ա խօսել նման բաների մասին Հայաստանում։ Մեզ պէտք չեն թանկ ու կրակ արտադրանքներ։ Մեզ պէտք են պարզ եւ էժան լուծումներ։

Ասանկ բաներ…