Սկիզբ » Ուսումնական նյութեր » Ծրագրավորում » Ծրագրավորման լեզուներ » Pascal և Delphi » ասք բառարանների եւ հաքերութեան մասին

ասք բառարանների եւ հաքերութեան մասին

| Սեպտեմբեր 9, 2014 |

Իսկական հաքը՝ ինչ֊որ անկապ ու անպէտք բան կոտրելը չէ։ Իսկական հաքը իմաստ պիտի ունենայ, խնդիր լուծի։

Հիմա պատմեմ ինչպէս եմ ես լուծել մի խնդիր։

Ժամանակին, 2000֊2001 թուերին կար հաւէս բառարան, որ բոլորը իրենց պարտքն էին համարում իրենց համակարգերում ունենալ, կոչւում էր՝ armdicto։ Պատրաստել էր ոմն Տրոյը, իսկ նրան օգնել էին երկու աղջիկ, ում անունները «էբաութ» բաժնում նշել էր։

Այդ բառարանը անցեալ դարի բառարան է։

Նախ, որովհետեւ այսօր արդեն ընդունուած չէ ազատ ԾԱ֊ի տարածման շնորհիւ (բարեբախտաբար) որ բառարանի հետ աշխատող ծրագիրը, եւ բառարանի նիշքերը իրենք, կապուած լինեն։

Նաեւ, այս բառարանը աշխատում էր Windows ՕՀ֊ում x86֊ի վրայ։

Իսկ ի՞նչ անել GNU/Linux կամ MacOSX օգտագործողների՞ն։

Օկեյ, սա դեռ լուծելի է։ wine֊ի օգնութեամբ լինում է աշխատեցնել որոշ windows ԾԱ GNU/Linux եւ MacOS X համակարգերում։

Ահա եւ աղջիկների անունները՝

armdicto_about

Իսկ ի՞նչ եթէ ես ուզում եմ այլ բառարանի ծրագրի հետ աշխատեցնել այս բառարանի բառերի բազա՞ն։
Իսկ ի՞նչ եթէ ես չեմ վստահում ոչ ազատ ԾԱ֊՞ին։ Ի դէպ, Տրոյ անունը լաւ յոյսեր չի ներշնչում։ Ի՞նչ իմանաս ինչ է անում այս ծրագիրը։

Իսկ ի՞նչ, եթէ ես ուզում եմ պատճենել փակցնել թարգմանուած բառը, իսկ այն, փաստօրէն, armscii-8 կոդաւորումով է։

Բայց լաւ, մենք արդեն իրօք 21֊երորդ դարում ենք, եւ ոչ միայն Յունիկոդ ենք օգտագործում,այլ եւ ոչ միայն Ինթել պրոցեսորներ։ Ասենք ես երեւի աւելի շատ ARM ունեմ քան Intel։
Բացի դրանից ես ունեմ PowerPC պրոցեսորով երկու համակարգիչ, իսկ ոմանք ունեն MIPS պրոցեսորներով լափթոփներ։

Իսկ ի՞նչ, եթէ ես ուզում եմ օգտուել այս աշխատանքով իմ խելախօսի վրայ։
Ասենք դուք կարող է ունէք Անդրոիդ կամ ԻՕՍ, իսկ ես ասենք ունեմ Սեյլֆիշ։
Այսինքն մեզ պէտք է այս բառարանը ARM֊ի վրայ։ Ի՞նչ անել։

Նախ կարողանալ հանել այդ բառարանը ծրագրից։

Ես գտել եմ (գուգլի օգնութեամբ) այս ծրագիրը համացանցում՝ http://users.freenet.am/~osprog1/ArmDicto%20v1.1.rar

Չգիտեմ ով է այս osprog1֊ը, բայց շնորհակալութիւն նրան։

Քաշեցինք՝

wget -c http://users.freenet.am/~osprog1/ArmDicto%20v1.1.rar

Հիմա բացենք ռառ֊ով։

rar x "ArmDicto v1.1.rar"

Օկեյ, ոչ մի բառարանի նիշք էլ չկայ։
Այն ինչ֊որ տեղ թաքցուած է։ Ո՞րտեղ։ Այստեղ՝ data1.cab նիշքում։

unshield x data1.cab

Այո, այսպիսի հաւէս ծրագրեր կան ԻնսթալՇիլդ ցաբ նիշքեր բացելու համար։

Հիմա գտնում ենք main.dat նիշքը Program_Executable_Files/Data պանակում։

Օկ, եթէ փորձենք հասկանալ ի՞նչ ֆորմատի է, բան պարզ չէ։

$ file main.dat 
main.dat: data

Օկեյ, նայենք այն հեքս խմբագրիչով։

armdicto_aback

Ահա, տեսնում ենք, ինչ֊որ զրօներ են, յետոյ ինչ֊որ “(null)” յետոյ՝ BB EF 2C 20 BBEF BB ED C7 F3 …

Սա հաստատ ARMSCII-8 է։ Ստուգում ենք՝ այո, թարգմանութեան տեքստն է։

Յետոյ էլի գնում են զրօներ, իսկ յետոյ յաջորդ բառը՝ abandon, եւ ամէնը կրկնւում է։

Լաւ, իսկ ի՞նչ է մեզ պէտք վերջում։ Մեզ պէտք է ասենք tab separated նիշք, ուր սկզբից բառն է, յետոյ ԹԱԲ է գնում, յետոյ բառի թարգմանութիւնը։ Կարծես կարելի է փորձել կոտրել։

Դէ, ամէն ինչ այդքան պարզ չէր։
Նախ, զրօներ անկապ յայտնւում են, պարզւում է, եւ բառերի, եւ թարգմանութիւնների արանքում։

Բաւական ջանք է պահանջում, ահա այսպէս է արւում՝ https://github.com/norayr/armdicto-hack/blob/master/armdictohack.Mod

Արանքում պէտք է քոնուերտել արմսքի֊ից դէպի յունիկոդ՝ https://github.com/norayr/armdicto-hack/blob/master/ArmsciiUTF.Mod

լաւ, կարծես լինում է։ Սա իրականում ամենաբարդ մասերից էր, չնայած այնքան պարզ անցանք այստեղ։
բայց եւ կոդը ամէն ինչ բացատրում է։

Ինչ֊որ սխալ armscii-8 շարուածք են օգտագործել, այդ պատճառով և֊ը սխալ է, a2֊ի տեղը a8 է, սխալ տառատեսակներ էլ կային, յիշում եմ։ Նախ սա ուղղում ենք՝

sed 's/\xa8/\xa2/g' main.dat > maintest.dat

Հիմա կարծես թէ նորմալ ելքային նիշք է տալիս, բայց ինչ֊որ անկապ նիշեր կան, ասենք minor բառը նորմալ չի երեւում։
Օկ, նայում ենք մութքային նիշքը։

armdicto_bug0

Էս ի՞նչ «FB» է, ինչո՞ւ ոչ նորմալ, լատինատար «o»։ Պարզւում է, fb֊ն armscii֊ի «օ»֊ն է։ Երեւի աղջիկները հաւաքելիս շփոթուել են, կամ սխալ շարուածք ունէին։ Ինչեւէ։ Իսկ ո՞նց է ինքը արմդիկտո֊ն սա ցոյց տալիս։
Պարզւում է՝ ոչ մի ձեւ չի կարողանում։

armdicto_bug0_

minor բառը պարզապէս չի կարողանում գտնել, ու բաց է թողնում։

Լաւ, մենք գտանք տուեալների բազայի սխալ։ Ուղղենք, եւ հասանելի դարձնենք այս բառը մեր ազատ ծրարգրերում։

Ինչպէ՞ս բայց։ Ես չեմ ուզում ձեռքով նիշք խմբագրել։ Համ էլ, կարող է էլի՞ նման խնդիրներ լինեն։

Աւտոմատացնում ենք։

function replaceByte() {
    printf "$(printf '\\x%02X' $3)" | dd of="$1" bs=1 seek=$2 count=1 conv=notrunc &> /dev/null
        }

Ափդեյթ․ հիմա մտածում եմ, ինչքան աւելի էլեգանտ կը լիներ նոյնը անել Օբերոնով՝

Files.Set(r, f, offset);
Files.WriteByte(r, 111);

Պարզապէս գիշերը չէի մտածել, որ ծրագիրը կարելի է ոչ միայն կոնուերտելու համար օգտագործել։

եւս մի ափդեյթ․ իրականացրի ամէնը Օբերոնով, եւ ուղղեցի եւ֊երը եւ փոխեցի հայերէն տեքստի մէջ հանպիդող սխալ «~» նիշերը ճիշտ «՜» երկարացման նշաններով։ այսպէս, ահա։Ճ

հիմա այսպէս՝

replaceByte maintest.dat 2191531 111

111֊ը 6f֊ն է, այսինքն լատինատառ օ֊ն։

Այո՛, փոխուեց։
Է՞լ ինչ կայ ուղղելու։

Փաստօրէն, այստեղ, gyve բառից յետոյ ինչ֊որ սխալ բառ է՝

armdicto_gobble

Ահա, եւ կրկին ինքը արմդիկտո֊ն չի կարողանուց ցոյց տալ՝

armdicto_bug_

Ի դէպ, ինձ թւում է, ես փորձում էի այս բառը փնտրել, ուզում էի իմանալ, ինչո՞ւ էր իմ սիրած խաղերից մէկը gobbler կոչւում։ Ինչեւէ։

Ֆիքսում ենք՝

replaceByte maintest.dat 2999763 111

Իսկ սա՞ ինչ է, իմ ստացած նիշքում flance֊ից յետոյ ինչ֊որ b0 կայ, ահա եւ մուտքում էլ էր՝

armdicto_bug2

Ի՞նչ է անում, ինչո՞ւ համար՝

armdicto_bug2_

Ֆիքսում ենք՝

replaceByte maintest.dat 1815116 0

Հիմա կրկին աշխատացնում ենք հաքը, ու նայում ինչ է լինում՝

./armdictohack

ահա, հիմա եթէ տալիս ենք ասենք ինտերակտիւ stardict_stardict-editor ծրագրին, ասում է որ կրկնւող բառեր կան։ իրօք, դբ֊ի մէջ կան։ եւս մի սխալի տեսակ, որը գտանք։

օկ, սա արդեն հեշտ է լուծւում՝

cat out.txt | sort | uniq > armdicto.txt

եւ հիմա անելով

stardict_tabfile armdicto.txt

ստանում ենք ելքային բառարաններ։

Դրանք կարելի է տեղադրել ~/.stardict/dic պանակի մէջ եւ օգտագործել դեսքթոփի վրայ՝

armdicto_gobble2

իսկ կարելի է լցնել ~/.local/share/harbour-sidudict պանակի մէջ եւ օգտուել Սեյլֆիշի վրայ՝

20140909143744

20140909143806

Անդրոիդի համար էլ նման բառարաններ կան, դրանք են՝ GoldenDict, ColorDict, Wordmate Fora Dictionary եւ AntTek Dict, կարճ ասած՝ շնից շատ են։

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

Ամբողջ նախագիծը՝ հաք անող ծրագրի ելատեքստը եւ սկրիպտը ազատ լցուած են գիթհաբում՝ https://github.com/norayr/armdicto-hack

իսկ բառարանների պանակը՝ այստեղ է http://norayr.arnet.am/armdicto/

http://norayr.arnet.am/armdicto/armdicto.zip ստացուած բառարանի նիշքերը
http://norayr.arnet.am/armdicto/armdicto.txt թաբերով բաժանուած բառերի ելատեքստը։

ի դէպ, այդ ելատեքստը կարելի է եւ հետ ստանալ բառարանի նիշքերը դեքոմփայլ անելով։

Կրկնում եմ շնորհակալութիւնն անծանօթ Լուսինէ Յարութիւնեանին եւ Աննա Մխիթարեանին, ենթադրում եմ որ իրենք են կազմել այս բառարանը։

բարի գալուստ XXI֊րդ դար, ահա։

ու տենց

ասք բառարանների եւ հաքերութեան մասին, 10.0 out of 10 based on 3 ratings

Նշագրեր: , , , , , , , , , , , , , , , ,

Բաժին: Pascal և Delphi, Խելախոսներ, Ծրագրավորում, Հայերեն ՏՏ Տերմինաբանություն, Հայկական ՏՏ նորություններ, Վերլուծություն, Տվյալների բազաներ

Կիսվել , տարածել , պահպանել

VN:F [1.9.20_1166]
Rating: 10.0/10 (3 votes cast)

Մեկնաբանությունները փակված են

266