Sida aan u isticmaalnay WebAssembly si loo dedejiyo codsiga shabakadda 20 jeer

Sida aan u isticmaalnay WebAssembly si loo dedejiyo codsiga shabakadda 20 jeer

Maqaalkani waxa uu ka hadlayaa kiis ku saabsan dedejinta codsiga browserka iyadoo lagu beddelayo xisaabinta JavaScript WebAssembly.

WebAssembly - waa maxay?

Marka la soo koobo, kani waa qaab tilmaameedka laba-geesoodka ah ee mashiinka farsamada gacanta ku salaysan. Wasm (magaca gaaban) waxaa badanaa loogu yeeraa luqadda barnaamijka, laakiin maaha. Qaabka wax-baridku waxa lagu fuliyaa browserka oo ay la socdaan JavaScript.

Waa muhiim in WebAssembly lagu heli karo ururinta ilaha luqadaha sida C/C++, Rust, Go. Halkaan waxaa la isticmaalaa qorista tirakoobka iyo waxa loogu yeero nooca xusuusta flat. Koodhka, sida aan kor ku soo sheegnay, waxaa lagu kaydiyaa qaab binary ah oo is haysta, taasoo ka dhigaysa mid ku dhow sida ugu dhakhsaha badan ee loo socodsiinayo codsiga iyadoo la adeegsanayo khadka taliska. Awoodahan ayaa horseeday kobaca caannimada WebAssembly.

Waxaan xusuusineynaa: dhammaan akhristayaasha "Habr" - qiimo dhimis ah 10 rubles marka la qorayo koorso kasta oo Skillbox ah iyadoo la adeegsanayo koodhka xayeysiinta "Habr".

Skillbox waxay ku talinaysaa: Koorso wax ku ool ah "Developer Mobile PRO".

Waqtigan xaadirka ah, Wasm waxaa loo isticmaalaa codsiyo badan, laga bilaabo ciyaaraha sida Doom 3 ilaa codsiyada web-ported sida Autocad iyo Figma. Wasm sidoo kale waxaa loo isticmaalaa meelaha sida xisaabinta server-la'aanta ah.

Maqaalkani wuxuu bixiyaa tusaale isticmaalka Wasm si loo dedejiyo adeegga shabakadda falanqaynta. Si loo caddeeyo, waxaanu qaadanay codsi shaqo oo ku qoran C, kaas oo lagu soo ururiyey WebAssembly. Natiijadu waxa loo isticmaali doonaa in lagu beddelo qaybaha aan shaqayn ee JS.

Isbeddelka Codsiga

Tusaalaha ayaa isticmaali doona adeegga browserka fastq.bio, kaas oo loogu talagalay dadka hidde-yaqaannada ah. Qalabku wuxuu kuu ogolaanayaa inaad qiimeyso tayada isku xigxiga DNA-da (deciphering).

Waa kan tusaale codsiga ku jira:

Sida aan u isticmaalnay WebAssembly si loo dedejiyo codsiga shabakadda 20 jeer

Faahfaahinta geeddi-socodku maaha mid u qalma in la galo maadaama ay aad ugu adag yihiin kuwa aan takhasuska ahayn, laakiin marka la soo koobo, saynisyahannadu waxay isticmaali karaan macluumaadka kor ku xusan si ay u fahmaan in habka isku-xiridda DNA-ga uu u dhacay si habsami leh iyo dhibaatooyinka soo kordhay.

Adeegani waxa uu leeyahay door kale, barnaamijyo desktop ah. Laakiin fastq.bio wuxuu kuu ogolaanayaa inaad dardar geliso shaqadaada adigoo sawiraya xogta. Inta badan kiisaska kale, waxaad u baahan tahay inaad awood u yeelatid inaad la shaqeyso khadka taliska, laakiin dhammaan geneticists ma laha waayo-aragnimada lagama maarmaanka ah.

Wax walba si fudud ayey u shaqeeyaan. Gelintu waa xog lagu soo bandhigay qaab faylka qoraalka ah. Faylkan waxaa soo saaray qalab gaar ah oo isku xigxiga. Faylku wuxuu ka kooban yahay liis taxane DNA ah iyo dhibcaha tayada ee nucleotide kasta. Qaabka faylka waa .fastq, waana sababta adeeggu u helay magaciisa.

Hirgelinta JavaScript

Tallaabada ugu horreysa ee isticmaaluhu marka uu la shaqeynayo fastq.bio waa inuu doorto faylka ku habboon. Isticmaalka shayga Faylka, arjigu waxa uu akhriyaa muunad random ah oo xog ah oo ka mid ah faylka iyo hababka dufcada. Shaqada JavaScript ee halkan waa in ay qabato hawlo xadhig fudud oo ay xisaabiso cabbirada. Mid ka mid ah waa tirada nucleotides A, C, G iyo T ee jajabyada DNA ee kala duwan.

Ka dib markii la xisaabiyo tilmaamayaasha lagama maarmaanka ah, waxaa lagu sawiraa iyadoo la adeegsanayo Plotly.js, adeegguna wuxuu bilaabay inuu la shaqeeyo muunad xog cusub. Jeexitaanka waxaa loo sameeyaa si loo hagaajiyo tayada UX. Haddii aad la shaqeyso dhammaan xogta hal mar, geeddi-socodku wuu barafoobayaa in muddo ah, maadaama faylalka leh natiijooyinka isku xigxiga ay qaataan boqolaal gigabytes oo meel fayl ah. Adeeggu wuxuu qaadaa qaybo ka mid ah xogta u dhexeysa 0,5 ilaa 1 MB wuxuuna la shaqeeyaa si tallaabo tallaabo ah, isagoo dhisaya xogta garaafyada.

Sidan ayay u shaqaysaa:

Sida aan u isticmaalnay WebAssembly si loo dedejiyo codsiga shabakadda 20 jeer

Laydiga cas wuxuu ka kooban yahay xargaha beddelka algorithm si loo helo muuqaal. Tani waa qaybta ugu xisaabinta badan ee adeega. Waxaa habboon in la isku dayo in lagu beddelo Wasm.

Tijaabinta WebAssembly

Si loo qiimeeyo suurtogalnimada isticmaalka Wasm, kooxda mashruuca waxay bilaabeen raadinta xalalka diyaarsan ee abuurista qiyaasaha QC (QC - xakamaynta tayada) oo ku salaysan faylasha fastq. Baaritaanka waxaa lagu sameeyay qalab ku qoran C, C++ ama Rust, si ay u suurtagasho in koodhka loo diro WebAssembly. Intaa waxaa dheer, qalabku waa inuusan noqon "ceeriin"; adeeg ay horay u tijaabiyeen saynisyahano ayaa loo baahnaa.

Natiijo ahaan, doorashada ayaa la doortay seqtk. Codsigu aad buu caan u yahay, waa il furan, luqadda isha waa C.

Kahor intaadan u beddelin Wasm, waxaa habboon in la eego mabda'a isku-darka ah ee seqtk ee desktop-ka. Sida laga soo xigtay Makefile, waa kuwan waxaad u baahan tahay:

# Compile to binary
$ gcc seqtk.c 
   -o seqtk 
   -O2 
   -lm 
   -lz

Mabda 'ahaan, waxaad ku ururin kartaa seqtk adigoo isticmaalaya Emscripten. Haddii aysan jirin, waxaan samaynaa samayn. Sawirka docker.

$ docker pull robertaboukhalil/emsdk:1.38.26
$ docker run -dt --name wasm-seqtk robertaboukhalil/emsdk:1.38.26

Hadii la rabo Adiga ayaa isku soo ururin kara, laakiin waxay qaadataa waqti.

Gudaha weelka, waxaad si fudud u isticmaali kartaa emcc beddelka gcc:

# Compile to WebAssembly
$ emcc seqtk.c 
    -o seqtk.js 
    -O2 
    -lm 
    -s USE_ZLIB=1 
    -s FORCE_FILESYSTEM=1

Isbedelada ugu yar:

Halkii laga soo saari lahaa faylka binary, Emscripten waxay isticmaashaa .wasm iyo .js si ay u abuurto faylasha, kaas oo loo isticmaalo in lagu socodsiiyo moduleka WebAssemby.

Calanka USE_ZLIB waxa loo isticmaalaa in lagu taageero maktabadda zlib. Maktabaddii waa la qaybiyay oo la geeyey WebAssembly, Emscriptenna waxa ay ku daraysaa mashruuca.

Emscrippten nidaamka faylka dalwaddii waa la dajiyay. Tani POSIX-sida FS, ku shaqeeya RAM gudaha browserka. Marka bogga la cusboonaysiiyo, xusuusta waa la nadiifiyaa.

Si loo fahmo sababta loogu baahan yahay nidaamka faylalka casriga ah, waxaa habboon in la barbardhigo habka aad u socodsiiso seqtk ee khadka taliska iyo habka aad u maamusho moduleka WebAssembly la soo ururiyey.

# On the command line
$ ./seqtk fqchk data.fastq
 
# In the browser console
> Module.callMain(["fqchk", "data.fastq"])

Helitaanka nidaamka faylalka farsamada waa lagama maarmaan si aan dib loogu qorin seqtk ee xarriiqda halkii la gelin lahaa faylka. Xaaladdan oo kale, jajabka xogta waxaa loo soo bandhigay sida faylka data.fastq ee FS-ga casriga ah oo leh wicitaanka ugu weyn () seqtk.

Waa kan dhismaha cusub:

Sida aan u isticmaalnay WebAssembly si loo dedejiyo codsiga shabakadda 20 jeer

Sawirku wuxuu muujinayaa in halkii xisaabinta ee dunta browserka ugu weyn, Shabakadda Shabakadda. Habkani wuxuu kuu ogolaanayaa inaad ku sameyso xisaabinta dunta asalka ah adigoon saameyn ku yeelan ka jawaab celinta browserka. Hagaag, kantaroolaha WebWorker wuxuu bilaabayaa Shaqaalaha, isaga oo maareynaya isdhexgalka dunta ugu weyn.

Amarka seqtk waxa lagu socodsiiyaa iyadoo la isticmaalayo Worker faylka la rakibay. Kadib dhamaystirka fulinta, Shaqaaluhu wuxuu soo saaraa natiijo qaab Ballan ah. Marka fariinta ay hesho dunta ugu weyn, natiijadu waxay isticmaashaa in lagu cusboonaysiiyo garaafyada. Iyo wixi la mid ah dhowr jeer.

Ka warran waxqabadka WebAssembly?

Si loo qiimeeyo isbeddelka waxqabadka, kooxda mashruucu waxay adeegsadeen hawlgallada akhrinta halbeegga labaad. Waqtiga ay qaadanayso in la dhiso garaafyo is-dhexgal ah lama tixgalinayo maadaama labada dhaqan-gal ay adeegsadaan JavaScript.

Markaad isticmaalayso xalka ka baxsan sanduuqa, korodhka waxqabadku wuxuu ahaa sagaal jeer.

Sida aan u isticmaalnay WebAssembly si loo dedejiyo codsiga shabakadda 20 jeer

Tani waa natiijo aad u fiican, laakiin, sida ay soo baxday, waxaa jira fursad lagu hagaajin karo. Xaqiiqdu waxay tahay in tiro badan oo natiijooyinka falanqaynta QC aan loo isticmaalin seqtk, si ay u tirtiraan karaan. Haddii aad tan samayso, natiijadu waxay soo hagaagaysaa 13 jeer marka la barbar dhigo JS.

Sida aan u isticmaalnay WebAssembly si loo dedejiyo codsiga shabakadda 20 jeer

Waxa lagu gaadhay in si fudud looga faalloodo amarada printf()

Laakiin intaas kuma koobna. Xaqiiqdu waxay tahay in marxaladdan, fastq.bio waxay helaysaa natiijooyinka falanqaynta iyagoo wacaya shaqooyinka kala duwan ee C. Mid kasta oo iyaga ka mid ah wuxuu xisaabiyaa sifooyinka gaarka ah, si qayb kasta oo faylka ah loo akhriyo laba jeer.

Si loo xaliyo dhibaatadan, waxaa la go'aamiyay in la isku daro laba hawlood oo mid ah. Natiijo ahaan, wax soo saarku wuxuu kordhay 20 jeer.

Sida aan u isticmaalnay WebAssembly si loo dedejiyo codsiga shabakadda 20 jeer

Waxaa xusid mudan in natiijada la taaban karo aan mar walba la gaari karin. Xaaladaha qaarkood, waxqabadka ayaa hoos u dhacaya, markaa waxaa habboon in la qiimeeyo kiis kasta.

Gabagabadii, waxaan dhihi karnaa in Wasm ay bixiso fursad lagu hagaajinayo waxqabadka codsiga, laakiin waxaad u baahan tahay inaad si caqli gal ah u isticmaasho.

Skillbox waxay ku talinaysaa:

Source: www.habr.com

Add a comment