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

մի քանի շաբաթ առաջ կարդացի 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֊ը։

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

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

Ասանկ բաներ…

Պատասխանել մեյլով

IPv6 Ucom֊ում, բայց խնդիրներով

մի քանի օր առաջ ուրախացած գրում էի, որ Ucom֊ում կայ IPv6 ցանց, ու ուրախացած որոշեցի իրենց բզեմ, որ իմ տանն էլ միացնեն։

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

Սկզբի համար զանգեցի իրենց մասնագէտներին, աւանդական ձեւերով՝ 444, ու խնդրեցի որ իմ մօտ էլ միացնեն IPv6։ ահագին զարմանալի էր, որ ինձ հարցրեցին «իսկ ձեզ ինչի՞ համար ա պէտք»։ ուզում էի սարկաստիկ պատասխանէի «քանի որ 1999 թուականում չեմ ապրում» բայց ասեցի դէ լաւ, դեռ առաջին օրն ա, ու բարի բարի ասեցի «յաճախորդներիս մօտ կայ IPv6-only ցանց, ու չեմ ուզում ամէն անգամ VPN֊ուեմ, որ կպնեմ դրանց»։ Ասաց՝ դէ գրանցում եմ։

Յաջորդ օրը զանգեցին ու ասեցին որ միացած ա, ասեցի օհ հրաշալի, հեսա փորձարկեմ։

Փորձարկելու համար արագի մէջ կարգաւորեցի dhcpcd(8), գիտեմ֊գիտեմ, տառերը շատ են, ինքը նշանակում ա DHCP Client Daemon։ ահա կարգաւորումը իմ տանը՝

# cat /usr/local/etc/dhcpcd.conf
controlgroup wheel
# Let FreeBSD worry about IPv4
ipv6only
# Do not run these hooks
nohook resolv.conf, hostname, ntp.conf
# Only igb1
allowinterfaces igb1
# No router solicitation (RS) globally by default
noipv6rs

# Use igb2 LAN interface but do not modify it
interface igb2

# Use igb1 WAN interface
# Do router solicitation (RS)
# Request normal address (NA)
# Request prefix delegation (PD) for igb2
interface igb1
  ipv6rs
  ia_na 1
  ia_pd 2 igb2/0

էստեղ ասում ենք որ Normal Address ուզի igb1 ինտերֆեյսի համար եւ ապա prefix delegation անի igb2 ինտերֆեյսի համար։

ապա ստանում էի հետեւեալը՝

[...]
igb1: Router Advertisement from fe80::cecf:83ff:fe98:408
igb1: adding address fc01:3daa:12:86ee:20d:b9ff:fe47:8531/64
igb1: adding route to fc01:3daa:12:86ee::/64
igb1: adding default route via fe80::cecf:83ff:fe98:408
[...]

ակնյայտօրէն ինչ֊որ կարգաւորման խնդիր կար, քանզի չէի ստանում 2000::/3֊ից ոչ մի հասցէ։

Որոշեցի մի անգամ էլ բզել, նոր ticket բացեցին, ու զանգեցին ինձ, ասեցին՝ խնդիրը լուծել ենք, բայց սրանից էն կողմ էլ ոչ մի բան չենք կարող անել, ասեցի դէ լաւ ստուգեմ։

igb1: Router Advertisement from fe80::cecf:83ff:fe98:408
igb1: adding address 2a00:cc47:2073:5c00:20d:b9ff:fe47:8531/64
igb1: adding address fc01:3daa:12:86ee:20d:b9ff:fe47:8531/64
igb1: adding route to 2a00:cc47:2073:5c00::/64
igb1: adding route to fc01:3daa:12:86ee::/64
igb1: adding default route via fe80::cecf:83ff:fe98:408
igb1: fe80::1: DHCPv6 REPLY missing IA Address
igb1: REPLY6 received from fe80::1
igb1: renew in 900, rebind in 1440, expire in 1800 seconds
lo0: adding reject route to 2a00:cc47:2073:5cff::/64 via ::1
igb1: delegated prefix 2a00:cc47:2073:5cff::/64
igb2: adding address 2a00:cc47:2073:5cff::1/64
igb2: changing route to 2a00:cc47:2073:5cff::/64

ահա՛, արդէն ստանում եմ Ucom֊ի ցանցից հասցէ, ու նաեւ ստանում եմ հասցէ igb2֊ի համար։ Էդ հասցէն պէտք է յետոյ բաժանեմ իմ տան ներքին ցանցում կամ Router Advertisement Daemon֊ով, որը SLAAC ա օգտագործում, կամ էլ DHCPv6ով։

Որոշեցի բզբզալ ու փորձել իմ տան սերւէրին պինգ անել՝

root@evn0:~ # ping6 -t1 -W1 -c1 bsd.am
PING6(56=40+8+8 bytes) 2a00:cc47:2073:5c00:20d:b9ff:fe47:8531 --> 2001:470:1f15:e4::1

--- bsd.am ping6 statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss

օհ օհ, բան տեղ չի հասնում։ ինչո՞ւ, կարող ա՞ խնդիր կայ։ մի հատ փորձեմ traceroute անել։

root@evn0:~ # traceroute6 -a -q1 -w3 -m10 bsd.am
traceroute6 to bsd.am (2001:470:1f15:e4::1) from 2a00:cc47:2073:5c00:20d:b9ff:fe47:8531, 10 hops max, 28 byte packets
 1  [AS44395] 2a00:cc47:2073:5c00:cecf:83ff:fe98:408  0.499 ms
 2  *
 3  *
 4  *
 5  *
 6  *
 7  *
 8  *
 9  *
10  *

ակնյայտօրէն խնդիր կայ, բայց ի՞նչ խնդիր ա։ Որոշեցի երկկողմանի traceroute անել իմ Ամստերդամի սերւէրի եւ տան միջեւ՝

ահա, խնդրեմ, պակետները ոչ դուրս են գնում, ոչ ներս են գալիս։

Զանգեցի Ucom ու տեղեկացուցի խնդրի մասին, աւաղ, իրենց պատասխանն էր «քանի մեր մօտ IPv6֊ը փորձնական ա, ապա այլ ոչ մի հարցով չենք կարող օգնել»։

Որոշեցի tcpdump֊ով նայեմ ինչ ա կատարւում՝

root@evn0:~ # tcpdump -n -s0 -i igb1 -c3 icmp6 and dst host 2a00:cc47:2073:5c00:20d:b9ff:fe47:8531
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on igb1, link-type EN10MB (Ethernet), capture size 262144 bytes
14:30:43.641777 IP6 2a05:f480:1400:2eb9::7372:7630 > 2a00:cc47:2073:5c00:20d:b9ff:fe47:8531: ICMP6, echo request, seq 56710, length 24
14:30:43.676499 IP6 2a05:f480:1400:2eb9::7372:7630 > 2a00:cc47:2073:5c00:20d:b9ff:fe47:8531: ICMP6, echo request, seq 56711, length 24
14:30:43.751418 IP6 2a05:f480:1400:2eb9::7372:7630 > 2a00:cc47:2073:5c00:20d:b9ff:fe47:8531: ICMP6, echo request, seq 56712, length 24
3 packets captured
170 packets received by filter
0 packets dropped by kernel

ահա, ակնյայտօրէն պակետները հասնում են իմ տուն, բայց դուրս չեն գալիս։ IPv6֊ով պէտք պատասխան գայ ICMP6֊ի միջոցով, թէ ուր ա խնդիրը։

root@evn0:~ # tcpdump -n -s0 -i igb1 -c1 'icmp6 and dst host 2a00:cc47:2073:5c00:20d:b9ff:fe47:8531 and ip6[40] = 1 and ip6[41] = 0' 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on igb1, link-type EN10MB (Ethernet), capture size 262144 bytes
14:38:15.591959 IP6 2a00:cc47:2000:3::1 > 2a00:cc47:2073:5c00:20d:b9ff:fe47:8531: ICMP6, destination unreachable, unreachable route 2a05:f480:1400:2eb9::7372:7630, length 72
1 packet captured
10245 packets received by filter
0 packets dropped by kernel

ահա, փաստօրէն 2a00:cc47:2000:3::1֊ի մօտ խնդիր կայ։

Այս ամբողջ ինֆորմացիան ուղարկեցի  Ucom, սպասում եմ պատասխանի։

Իրականում եթէ ցանցը փորձնական ա, ապա պէտք ա աւելի շատ ուզենային օգնել, քանի որ ահա մարդ կայ հայաստանում, ով իրենց յաճախորդն ա ու հասկանում ա IPv6֊ից, բայց աւաղ, you can’t always get what you want.

Եթէ պատասխանեն՝ ապա կը գրեմ այստեղ։

Ասանկ բաներ…

Պատասխանել մեյլով

IPv6 Ucom֊ո՞ւմ։

Ծնողների տանն ենք, տեսնում եմ, որ իրանց տանը կայ IPv6։ ահա ստուգեցի՝

$ curl -6 ifconfig.bsd.am
2a00:cc47:4455:d00:1988:f8b7:e108:e80e
curl/8.3.0
source: /index.Mod

դեռ անգիր չեմ արել Հայաստանի IPv6  ցանցը, բայց ահա ստուգեցի՝

$ whois 2a00:cc47:4455:d00:1988:f8b7:e108:e80e | grep desc
descr:          UCOM CJSC

հիմա պէտք ա ստուգել եթէ իմ տանը տալիս են, ու եթէ կարող են կազմակերպել Prefix Delegation։

ահագին առաջընթաց կայ, վատ չի։

բայց նաեւ խնդիրներ կան, օրինակ երկու հատ IPv6 DNS resolver ա push լինում DHCP֊ով, սակայն երկուսից մէկը չի աշխատում՝

$ cat /etc/resolv.conf  | grep nameserver
nameserver 2a00:cc40::10
nameserver 2a00:cc40::53
nameserver 192.168.5.1

IPv4֊ովը աշխատում ա, էս մի հատն էլ ա խաշտում՝

$ dig -6 _dk.bind.am TXT +short @2a00:cc40::53  
"Gentoo has an --ignore-world flag and it fixes everything; Just like in real life; Wait no, it doesn't actually do that; Just like in real life. @dakami - RIP"

իսկ միւսը՝

$ dig -6 _dk.bind.am TXT +short @2a00:cc40::10 

; <<>> DiG 9.10.6 <<>> -6 _dk.bind.am TXT +short @2a00:cc40::10
;; global options: +cmd
;; connection timed out; no servers could be reached

երեւի տեղեկացնեմ Ucom֊ին, ու նաեւ լաւ կը լինի հրապարակեն տեխնիկական մանրամասների մասին։

Ու նաեւ հարց ա, եթէ կարող են IPv6 տրամադրել ստատիկ IP ունեցողներին։

Մինչ։

Պատասխանել մեյլով

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

5 Հունիսի, 2024

քանի ժամ ա ցածր ձայնով երաժշտութիւն եմ լսում։ Մտածում էի երեւի հարեւաններից մէկն ա ու ինչ հաւէս ա որ սենց լաւ երգեր ա լսում։

Նոր տեսայ որ ուղղակի iPod֊ս միացրած էի մոռացել ու ձայնը գալիս էր ականջակալներից։

Պատասխանել մեյլով

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

29 Մայիսի, 2024

Հայկ սրճարանը ահագին վատացել ա, ու ինձ ասեցին որ փաստօրէն վաճառուել ա, բայց մանրամասներն եմ ուզում։

Կօֆեն դեռ լաւն ա, բայց առաջ աւելի լաւ ուտելիքներ ունէին, իսկ հիմա աւելը «ստանդարդ»

Չգիտեմ եթէ կը շարունակեմ գալ Հայկ, բայց ինքը դեռ իր տեղն ունի, իմ պայուսակի վրայ։ դէ քանի որ պայուսակիս վրայ Հայկի pin կայ, զուտ դրա համար։

Էհ։

Պատասխանել մեյլով

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

10 Մայիսի, 2024

Շատ լուրջ մշակութային խնդիր ունենք. Երբ մարդիկ հարց են ունենում, մի անգամից ինձ են հարցնում անձնական նամակով, լինի դա ջաբերով կամ մեյլով։

Բայց ես ու նորայրը ահագին ջանք ենք դրել որ լինեն հանրային քննարկման սենեակներ, ինչպիսին է սարեանը, նաեւ ահագին ջանք ենք դրել, որ մարդիկ հանգիստ հարց տան, երկարաժամկէտ պատասխան սպասելու դէպքում՝ ֆորումների տեսքով։

Բայց արի ու տես որ էդ ամէնը էական չի, մարդիկ մէկ ա, օրուայ վերջում, գրում են մեզ անձնական նամակով, ու երբ մէկ կամ մի քանի ժամ չես պատասխանում, քանի դէ մենք էլ ենք մարդ, գործ, տուն, տեղ ու ընտանիք ունենք, ապա մի մասը սկսում են գոռալ «էդ ինչի՞ չես պատասխանում»։

Ինձ թւում ա շատ տրամաբանական կարողութիւններ պէտք չի հասկանալու համար, որ եթէ շատ ստանդարդ հարց ունես, նոր գիւտ չես անում, ապա 20+ անդամներով հանրային սենեակում հարցնելը աւելի լաւ տարերակ ա, քան մի հոգուն հարցնելը։

Բայց աւաղ, սա մշակութային հարց ա, մարդկանց ասելով «խնդրում եմ չաթում հարցրու» ոչ մի բան չի փոխուի։

Պէտք է մտածենք այս մասին…

Պատասխանել մեյլով

Նոր ֆիշինգ՝ list.am֊ի միջոցով եւ HayPost֊ի անունով

Մի շաբաթ առաջ տեղափոխուեցինք նոր տուն։ Նոր տանը կար մի անկողին որը մեզ պէտք չէր եւ տան տէրը խնդրեց, որ վաճառեմ այն list.am֊ով, գումարն էլ կը ծախսենք տան կարիքների վրայ՝ մի հատ պահարան էստեղ, մի հատ վարագոյր էնտեղ, եւ այլն

Երեկ գիշերը թարմացրի յայտարարութիւնը, դրեցի ուրիշ հեռախօսահամար, եւ այլն։ ամէն ինչ շատ լաւ էր։

Այսօր առաւօտ ստացայ նամակ, WhatsApp֊ով (թէ ասա անդրանիկ ջան, jabber.am֊ի ադմինն ես, WhatsApp֊ը ինչ ես անում) որտեղ մի աղջիկ, Zara անունով, ասում էր թէ բա հետաքրքրուած ա իմ յայտարարութեամբ։

Առաջին «տարօրինակ» բանն այն էր, որ +373 համար ունէր, որը մոլդովական համար ա։ ասեցի դէ երեւի մոլդովահայ ա, էդ հեչ։

Ամէն ինչ լաւ էր, մինչեւ ուղարկեց մի յղում, որտեղ իբր թէ պէտք է քարտի համար տեղադրեմ, որ վճարումը փոխանցուի ինձ։

Դա տեսնելուց պատմեցի Լիլիթին, ով որոշեց թէ բա պէտք ա զանգի իրան, քանի որ ինքը ատում ա սկամերներին։

Ահա թէ ինչ ա բերում էդ կայքը՝

Ու ահա ինչ ա լինում, երբ սեղմում ես «ստացեք միջոցներ» կոճակի վրայ՝

Լիլիթը, կրկին ջղայնացած, որոշեց ղժժալ իրենց վրայ՝

Ամէն դէպքում, արդէն տեղեկացրել եմ ե՛ւ դոմեյն գրանցողին ե՛ւ Cloudflare֊ին։

Զգոյշ եղէ՛ք։

Ասանկ բաներ…

Պատասխանել մեյլով

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

30 Նոյեմբերի, 2023

Դուրս ա եկեկ MarsEdit֊ի նոր թողարկումը՝ 5.1։ ահա, նկար էլ եմ աւելացնում։ Յոյս ունեմ ճիշտ ա կցում ու հրապարակում այս գրառումը։

Պատասխանել մեյլով

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

28 Նոյեմբերի, 2023

Վերջերս նորայրը գրել էր այն մասին, որ փաթչել ա Գրքի տառատեսակը եւ միքսել ա Syntax տառատեսակի հետ։ Այսպիսով իր մօտ Հայերէն տեքստերը լինում են Գրքի֊ով եւ մնացածը՝ Syntax֊ով։

Ինձ էլ էր նման բան պէտք սակայն կայքի համար, բայց չէի ուզում փաթչել Գրքին։ Դրա փոխարէն կարողացայ օգտագործել մի քանի տող CSS որը Իւնիքոդի հիման վրայ որոշում ա ինչ տառատեսակ օգտագործի։

Ահա կոդը՝

@font-face {
     font-family: 'Arian Grqi';
     src: url(/misc/fonts/Arian_Grqi_U.eot);
     src: url(/misc/fonts/Arian_Grqi_U.eot) format('embedded-opentype'),
          url(/misc/fonts/Arian_Grqi_U.woff) format('woff'),
          url(/misc/fonts/Arian_Grqi_U.ttf) format('truetype'),
          url(/misc/fonts/Arian_Grqi_U.svg) format('svg');
     font-weight: normal;
     font-style: normal;
    unicode-range: U+0530-058F;
}

article, hgroup, p {
    font-family: 'Arian Grqi', Helvetica, Arial, sans-serif !important;
}

Հայերէնը սկսում ա U0530ից մինչեւ U058F, ըստ Վիկիպէ ձյաձյայի եւ Հայերէն իւնիքոդ բլոկի։

Ահա, հիմա կայքում ե՛ւ Գրքի ա, ե՛ւ Հելուեթիքա, Արիալ եւ այլն։

Ասանկ բաներ…

Պատասխանել մեյլով