{"id":37019,"date":"2019-10-31T22:15:20","date_gmt":"2019-10-31T19:15:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/sistema-udalennogo-fajlovogo-dostupa-cage\/"},"modified":"2019-10-31T22:15:20","modified_gmt":"2019-10-31T19:15:20","slug":"sistema-udalennogo-fajlovogo-dostupa-cage","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","title":{"rendered":"Sistemi i aksesit t\u00eb skedar\u00ebve n\u00eb distanc\u00eb Cage","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>Q\u00ebllimi i sistemit<\/h3>\n<p><\/p>\n<p>Mb\u00ebshtetje p\u00ebr akses t\u00eb larg\u00ebt n\u00eb skedar\u00ebt n\u00eb kompjuter\u00ebt n\u00eb rrjet. Sistemi \"virtualisht\" mb\u00ebshtet t\u00eb gjitha operacionet kryesore t\u00eb skedar\u00ebve (krijimi, fshirja, leximi, shkrimi etj.) p\u00ebrmes shk\u00ebmbimeve t\u00eb transaksioneve (mesazheve) n\u00eb protokollin TCP.<\/p>\n<p><\/p>\n<h3>Fushat e aplikimit<\/h3>\n<p><\/p>\n<p>Funksionaliteti i sistemit \u00ebsht\u00eb efektiv n\u00eb rastet e m\u00ebposhtme:<\/p>\n<ul>\n<li> n\u00eb aplikacione native p\u00ebr pajisje mobile dhe embedded (smartphone, sisteme t\u00eb menaxhimit n\u00eb bord etj.), q\u00eb k\u00ebrkojn\u00eb qasje t\u00eb shpejt\u00eb n\u00eb skedar\u00ebt n\u00eb serverat e larg\u00ebt n\u00eb kushte t\u00eb mundshme nd\u00ebrprerjesh t\u00eb p\u00ebrkohshme n\u00eb lidhje (shkarkimi n\u00eb offline);<\/li>\n<li> n\u00eb DBMS t\u00eb ngarkuar, n\u00ebse p\u00ebrpunimi i k\u00ebrkesave kryhet n\u00eb server\u00eb t\u00eb ndrysh\u00ebm, nd\u00ebrsa ruajtja e t\u00eb dh\u00ebnave \u2013 n\u00eb server\u00eb t\u00eb tjer\u00eb;<\/li>\n<li> n\u00eb rrjete t\u00eb shp\u00ebrndara korporative p\u00ebr mbledhjen dhe p\u00ebrpunimin e informacionit, q\u00eb k\u00ebrkojn\u00eb shpejt\u00ebsi t\u00eb lart\u00eb n\u00eb shk\u00ebmbimin e t\u00eb dh\u00ebnave, rezervim dhe besueshm\u00ebri;<\/li>\n<li> n\u00eb sisteme komplekse me arkitektur\u00eb mikrosh\u00ebrbimesh, ku vonesat n\u00eb shk\u00ebmbimin e informacionit midis moduleve jan\u00eb kritikisht t\u00eb r\u00ebnd\u00ebsishme.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex> <\/p>\n<h3>Struktura<\/h3>\n<p><\/p>\n<p>Sistemi Cage (ka nj\u00eb realizim \u2013 beta version n\u00eb Python 3.7 n\u00eb OS Windows) p\u00ebrfshin dy pjes\u00eb kryesore: <\/p>\n<ol>\n<li> <b>Cageserver<\/b> \u2014 nj\u00eb program skedar serveri (paket\u00eb funksionesh) q\u00eb ekzekutohet n\u00eb kompjuter\u00ebt n\u00eb rrjet, p\u00ebr skedar\u00ebt e t\u00eb cil\u00ebve \u00ebsht\u00eb i nevojsh\u00ebm aksesimi i larg\u00ebt;<\/li>\n<li> klasa <b>Cage<\/b> me nj\u00eb bibliotek\u00eb metodash p\u00ebr softuerin e klientit, q\u00eb thjeshton kodimin e bashk\u00ebpunimit me server\u00ebt.<\/li>\n<\/ol>\n<p><\/p>\n<h3>P\u00ebrdorimi i sistemit n\u00eb an\u00ebn e klient\u00ebve<\/h3>\n<p><\/p>\n<p>Metodat e klas\u00ebs Cage z\u00ebvend\u00ebsojn\u00eb operacionet e zakonshme, \"rutinale\" t\u00eb sistemit t\u00eb skedar\u00ebve: <i>krijimi, hapja, mbyllja, fshirja <\/i>e skedar\u00ebve, si dhe <i>leximi\/shkrimi i t\u00eb dh\u00ebnave n\u00eb format binar<\/i> (me p\u00ebrcaktimin e pozit\u00ebs dhe madh\u00ebsis\u00eb s\u00eb t\u00eb dh\u00ebnave). Konceptualisht, k\u00ebto metoda jan\u00eb t\u00eb af\u00ebrta me funksionet e skedar\u00ebve n\u00eb gjuh\u00ebn C, ku hapja\/mbyllja e skedar\u00ebve kryhet \"n\u00eb kanalet\" e hyrje-daljes. <\/p>\n<p><\/p>\n<p>Me fjal\u00eb t\u00eb tjera, programuesi punon jo me metodat e objekteve \"t\u00eb skedar\u00ebve\" (klasa <b>_io<\/b> n\u00eb Python), por me metodat e klas\u00ebs Cage.<\/p>\n<p><\/p>\n<p>Gjat\u00eb krijimit t\u00eb nj\u00eb ekzemplar t\u00eb objektit Cage, ai vendos lidhjen fillestare me serverin (ose disa server\u00eb), kalon autentifikimin p\u00ebrmes ID-s\u00eb s\u00eb klientit dhe merr konfirmimin me numrin e portit t\u00eb caktuar p\u00ebr kryerjen e t\u00eb gjitha operacioneve me skedar\u00eb. Gjat\u00eb fshirjes s\u00eb objektit Cage, ai l\u00ebshon komand\u00ebn p\u00ebr serverin p\u00ebr t\u00eb ndaluar lidhjen dhe p\u00ebr t\u00eb mbyllur skedar\u00ebt. Nd\u00ebrprerjen e lidhjes mund ta inicirojn\u00eb edhe vet\u00eb server\u00ebt.<\/p>\n<p><\/p>\n<p>Sistemi rrit performanc\u00ebn e leximit\/shkrimit duke bazuar n\u00eb buferimin e fragmenteve t\u00eb p\u00ebrdorura shpesh t\u00eb skedar\u00ebve nga programet klient n\u00eb cache (bufer) t\u00eb memories operative.<br \/>\nProgrami klient mund t\u00eb p\u00ebrdor\u00eb \u00e7do num\u00ebr objektesh Cage me konfigurime t\u00eb ndryshme (kapaciteti i memories bufer, madh\u00ebsia e blloqeve gjat\u00eb shk\u00ebmbimit me serverin, etj.). <\/p>\n<p><\/p>\n<p>Nj\u00eb objekt Cage mund t\u00eb shk\u00ebmbej\u00eb t\u00eb dh\u00ebna me disa skedar\u00eb n\u00eb disa server\u00eb. Parametrat p\u00ebr lidhjen (adresa IP ose DNS e serverit, porta kryesore p\u00ebr autentifikim, rruga dhe emri i skedarit) caktohen gjat\u00eb krijimit t\u00eb objektit.<\/p>\n<p><\/p>\n<p>Pasqyra e secilit objekt Cage mund t\u00eb punoj\u00eb nj\u00ebkoh\u00ebsisht me shum\u00eb skedare, duke p\u00ebrdorur nj\u00eb hap\u00ebsir\u00eb t\u00eb p\u00ebrbashk\u00ebt memorie p\u00ebr buferimin. Madh\u00ebsia e caches \u2013 numri dhe madh\u00ebsia e faqeve \u2013 p\u00ebrcaktohet dinamikisht gjat\u00eb krijimit t\u00eb objektit Cage. P\u00ebr shembull, nj\u00eb cache prej 1 GB \u00ebsht\u00eb 1000 faqe me nga 1 MB, ose 10 mij\u00eb faqe me nga 100 KB, ose 1 milion faqe me nga 1 KB. Zgjedhja e madh\u00ebsis\u00eb dhe numrit t\u00eb faqeve \u00ebsht\u00eb nj\u00eb detyr\u00eb specifike p\u00ebr \u00e7do rast aplikimi.<\/p>\n<p><\/p>\n<p>\u00cbsht\u00eb e mundur t\u00eb p\u00ebrdoren disa objekte Cage nj\u00ebkoh\u00ebsisht p\u00ebr t\u00eb p\u00ebrcaktuar cil\u00ebsime t\u00eb ndryshme t\u00eb memorie buferi n\u00eb var\u00ebsi t\u00eb ve\u00e7orive t\u00eb aksesit n\u00eb informacion n\u00eb skedare t\u00eb ndryshme. Si baz\u00eb aplikohet algoritmi m\u00eb i thjesht\u00eb i buferimit: pas shpenzimit t\u00eb sasis\u00eb s\u00eb caktuar t\u00eb memories, faqe t\u00eb reja z\u00ebvend\u00ebsojn\u00eb t\u00eb vjetrat sipas parimit t\u00eb eliminimit me numrin minimal t\u00eb k\u00ebrkesave. Buferimi \u00ebsht\u00eb ve\u00e7an\u00ebrisht efektiv n\u00eb rastin e qasjes s\u00eb pandershme (n\u00eb kuptimin statistik) t\u00eb p\u00ebrbashk\u00ebt, s\u00eb pari, n\u00eb skedare t\u00eb ndryshme dhe, s\u00eb dyti, n\u00eb fragmente t\u00eb \u00e7do skedari. <\/p>\n<p><\/p>\n<p>Klasa Cage mb\u00ebshtet hyrje\/dalje jo vet\u00ebm p\u00ebr adresat e t\u00eb dh\u00ebnave (me specifikimin e pozit\u00ebs dhe gjat\u00ebsi t\u00eb vargut, \"duke z\u00ebvend\u00ebsuar\" operacionet e sistemit t\u00eb skedar\u00ebve), por edhe n\u00eb nj\u00eb nivel m\u00eb t\u00eb ul\u00ebt, \"fisik\" \u2014 sipas numrave t\u00eb faqeve n\u00eb memorie. <\/p>\n<p><\/p>\n<p>P\u00ebr objektet Cage mb\u00ebshtetet funksioni origjinal <i>\"hibernimit\"<\/i> (\"gjumit\") \u2013 ato mund t\u00eb \"minimizohen\" (p.sh., n\u00eb rast t\u00eb nd\u00ebrprerjes s\u00eb lidhjes me server\u00ebt, ose kur ndalon aplikacionin, etj.) n\u00eb nj\u00eb skedar lokal dump n\u00eb an\u00ebn e klientit dhe t\u00eb rikuperohen shpejt nga ky skedar (pas rinovimit t\u00eb lidhjes, kur aplikacioni fillon p\u00ebrs\u00ebri). Kjo e b\u00ebn t\u00eb mundur reduktimin e konsideruesh\u00ebm t\u00eb trafikut gjat\u00eb aktivizimit t\u00eb programit klient pas nj\u00eb largimi t\u00eb p\u00ebrkohsh\u00ebm \"offline\", pasi fragmentet e zakonshme t\u00eb skedar\u00ebve do t\u00eb jen\u00eb tashm\u00eb n\u00eb cache.<\/p>\n<p><\/p>\n<p>Cage p\u00ebrmban rreth 3600 rreshta kodi.<\/p>\n<p><\/p>\n<h3>Principet e nd\u00ebrtimit t\u00eb server\u00ebve<\/h3>\n<p><\/p>\n<p>Serverat e skedar\u00ebve Cageserver mund t\u00eb fillojn\u00eb me nj\u00eb num\u00ebr t\u00eb pakufizuar portesh, nj\u00eb prej t\u00eb cil\u00ebve (\u00abprincipal\u00bb) p\u00ebrdoret vet\u00ebm p\u00ebr t\u00eb autorizuar t\u00eb gjith\u00eb klient\u00ebt, nd\u00ebrsa t\u00eb tjer\u00ebt p\u00ebr shk\u00ebmbimin e t\u00eb dh\u00ebnave. Programi i serverit Cage k\u00ebrkon vet\u00ebm Python. Nd\u00ebrkoh\u00eb, kompjuteri me serverin e skedar\u00ebve mund t\u00eb kryej\u00eb \u00e7do pun\u00eb tjet\u00ebr. <\/p>\n<p><\/p>\n<p>Serveri fillon si nj\u00eb grup i dy proceseve kryesore:<\/p>\n<ol>\n<li><b>\u00abLidhjet\u00bb<\/b> \u2013 procesi p\u00ebr realizimin e operacioneve t\u00eb lidhjes me klient\u00ebt dhe mbylljes s\u00eb saj sipas iniciativ\u00ebs s\u00eb serverit;<\/li>\n<li><b>\u00abOperacionet\u00bb<\/b> \u2013 procesi p\u00ebr kryerjen e detyrave (operacioneve) t\u00eb klient\u00ebve lidhur me skedar\u00ebt, si dhe p\u00ebr mbylljen e seancave t\u00eb lidhjes sipas komandeve t\u00eb klient\u00ebve.<\/li>\n<\/ol>\n<p><\/p>\n<p>T\u00eb dy proceset nuk jan\u00eb t\u00eb sinkronizuara dhe jan\u00eb organizuar si cikle t\u00eb pafund t\u00eb pranimit dhe d\u00ebrgimit t\u00eb mesazheve mbi baz\u00ebn e radh\u00ebve t\u00eb shum\u00ebproceseve, objekteve proxy, bllokimeve dhe soketeve.<br \/>\nProcesi \u00abLidhjet\u00bb i alokon \u00e7do klienti nj\u00eb port p\u00ebr d\u00ebrgimin-marrjen e t\u00eb dh\u00ebnave. Numri i porteve p\u00ebrcaktohet gjat\u00eb fillimit t\u00eb serverit. Korrespondenca midis porteve dhe klient\u00ebve ruhet n\u00eb nj\u00eb memorie proxy t\u00eb p\u00ebrbashk\u00ebt midis proceseve.<\/p>\n<p><\/p>\n<p>Procesi 'Operacione' mb\u00ebshtet ndarjen e burimeve t\u00eb skedar\u00ebve, nd\u00ebrsa disa klient\u00eb t\u00eb ndrysh\u00ebm mund t\u00eb lexojn\u00eb t\u00eb dh\u00ebna nga nj\u00eb skedar t\u00eb nj\u00ebkohsh\u00ebm (<i>quasi-paralelisht<\/i>, pasi aksesin e menaxhon bllokimi) n\u00ebse kjo \u00ebsht\u00eb lejuar gjat\u00eb hapjes fillestare 'nga' klienti i par\u00eb. \n<\/p>\n<p>P\u00ebrpunimi i komandave p\u00ebr krijimin\/fshirjen\/hapjen\/mbylljen e skedar\u00ebve n\u00eb <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sq\/server\/dts-dronten\/\"   title=\"serveri\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2497\">serveri<\/a> kryhet n\u00eb vet\u00eb procesin 'Operacione' n\u00eb m\u00ebnyr\u00eb rigoroze radhazi duke p\u00ebrdorur sistemin e skedar\u00ebve t\u00eb OS-s\u00eb s\u00eb serverit.<\/p>\n<p><\/p>\n<p>P\u00ebr t\u00eb p\u00ebrshpejtuar t\u00eb lexuarit\/shkruarit, k\u00ebto operacione realizohen n\u00ebThreads, t\u00eb krijuara nga procesi 'Operacione'. Numri i Threads, zakonisht, \u00ebsht\u00eb i barabart\u00eb me numrin e skedar\u00ebve t\u00eb hapur. Detyrat p\u00ebr lexim\/shkrim nga klient\u00ebt paraqiten n\u00eb nj\u00eb radh\u00eb t\u00eb p\u00ebrbashk\u00ebt dhe Threads i lir\u00eb par\u00eb merr detyr\u00ebn nga kreu i saj. Logjika speciale lejon p\u00ebrjashtimin e operacioneve t\u00eb rip\u00ebrs\u00ebritjes s\u00eb t\u00eb dh\u00ebnave n\u00eb memorien operative t\u00eb serverit.<\/p>\n<p><\/p>\n<p>Procesi 'Operacione' monitoron aktivitetin e klient\u00ebve dhe ndalon sh\u00ebrbimin e tyre si sipas komandave t\u00eb tyre ashtu edhe kur kalon koh\u00ebn e pritjes p\u00ebr mosveprim.<\/p>\n<p><\/p>\n<p>P\u00ebr t\u00eb siguruar besueshm\u00ebrin\u00eb, Cageserver mban regjistrat e t\u00eb gjitha transaksioneve. Nj\u00eb regjist\u00ebr i p\u00ebrgjithsh\u00ebm p\u00ebrmban kopje t\u00eb mesazheve nga klient\u00ebt me porosi p\u00ebr krijimin\/hapjen\/riem\u00ebrimin\/fshirjen e skedave. P\u00ebr secil\u00ebn sked\u00eb pune krijohet nj\u00eb regjist\u00ebr i ve\u00e7ant\u00eb, n\u00eb t\u00eb cilin regjistrohen kopje t\u00eb mesazheve me porosi p\u00ebr leximin dhe shkrimin e t\u00eb dh\u00ebnave n\u00eb k\u00ebt\u00eb sked\u00eb pune, si dhe masat e t\u00eb dh\u00ebnave t\u00eb shkruara (t\u00eb reja) dhe masat e t\u00eb dh\u00ebnave q\u00eb jan\u00eb shkat\u00ebrruar gjat\u00eb mbivendosjes (shkrimi i t\u00eb dh\u00ebnave t\u00eb reja \"mbi\" t\u00eb vjetrat). <\/p>\n<p><\/p>\n<p>K\u00ebto regjistra sigurojn\u00eb mund\u00ebsin\u00eb si p\u00ebr rikuperimin e ndryshimeve t\u00eb reja n\u00eb kopjet rezerv\u00eb, ashtu edhe p\u00ebr \"kthimin\" nga p\u00ebrmbajtja aktuale n\u00eb momentin e d\u00ebshiruar n\u00eb t\u00eb kaluar\u00ebn. <\/p>\n<p><\/p>\n<p>Cageserver \u00ebsht\u00eb rreth 3100 rreshta kodi.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Sistemi i aksesit t\u00eb skedar\u00ebve n\u00eb distanc\u00eb Cage\" src=\"\/wp-content\/uploads\/2019\/08\/606d593347d73274b0c172dae34da0d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Nisja e programit t\u00eb serverit t\u00eb skedave Cageserver<\/h3>\n<p><\/p>\n<p>Gjat\u00eb nisjes n\u00eb dialog duhet t\u00eb p\u00ebrcaktohen:<br \/>\n \u2014 porti kryesor p\u00ebr autorizimin;<br \/>\n \u2014 numri i porteve p\u00ebr shk\u00ebmbimin e transaksioneve me klient\u00ebt e autorizuar (nga 1 apo m\u00eb shum\u00eb, grupi i numrave fillon nga numri pas atij t\u00eb portit kryesor).<\/p>\n<p><\/p>\n<h3>P\u00ebrdorimi i klas\u00ebs Cage<\/h3>\n<p><\/p>\n<p><b>class<\/b> cage.<b>Cage<\/b>( <i>cage_name=\u00bb\u00bb, pagesize=0, numpages=0, maxstrlen=0, server_ip={}, wait=0, awake=False, cache_file=\u00bb\u00bb<\/i> )<\/p>\n<p><\/p>\n<p>Nga kjo klas\u00eb krijohen objekte q\u00eb nd\u00ebrveprojn\u00eb me server\u00ebt e skedar\u00ebve dhe p\u00ebrmbajn\u00eb memorie nd\u00ebrmjet\u00ebse.<\/p>\n<p><\/p>\n<p><b><u>Parametrat<\/u><\/b><\/p>\n<p><\/p>\n<ul>\n<li> <b>cage_name<\/b>(<i>str<\/i>) \u2014 emri konvencional i objektit q\u00eb p\u00ebrdoret p\u00ebr identifikimin e klient\u00ebve n\u00eb an\u00ebn e serverit. <\/li>\n<li> <b>pagesize<\/b>(<i>int<\/i>) \u2014 madh\u00ebsia e nj\u00eb faqeje n\u00eb memorien nd\u00ebrmjet\u00ebse (n\u00eb byte).<\/li>\n<li> <b>numpages<\/b>(<i>int<\/i>) \u2014 numri i faqeve n\u00eb memorien nd\u00ebrmjet\u00ebse.<\/li>\n<li> <b>maxstrlen<\/b>(<i>int<\/i>) \u2014 gjat\u00ebsia maksimale e vargut n\u00eb operacionet e shkruarjes dhe leximit.<\/li>\n<li> <b>server_ip<\/b>(<i>dict<\/i>) \u2014 fjalori me adresat e p\u00ebrdorura, ku \u00e7el\u00ebsi \u00ebsht\u00eb emri konvencional i serverit (id e serverit brenda aplikacionit), nd\u00ebrsa vlera \u00ebsht\u00eb nj\u00eb varg me adresen: \u201cip adresa:port\u201d ose \u201cDNS:port\u201d (p\u00ebrputhja e emrave dhe adresave reale \u00ebsht\u00eb p\u00ebrkohshme, mund t\u00eb ndryshohet). <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sq\/server\/\"   title=\"servera\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1347\">servera<\/a>, ku \u00e7el\u00ebsi \u00ebsht\u00eb emri konvencional i serverit (id e serverit brenda aplikacionit), dhe vlera \u00ebsht\u00eb nj\u00eb string me adres\u00ebn: \u201cadresa ip:port\u201d ose \u201cDNS:port\u201d (korrigjimi i emrave dhe adresave reale \u2014 p\u00ebrkoh\u00ebsor, mund t\u00eb ndryshohet)<\/li>\n<li> <b>wait<\/b>(<i>int<\/i>) \u2014 koha e pritjes p\u00ebr p\u00ebrgjigje nga serveri gjat\u00eb marrjes s\u00eb porteve (n\u00eb sekonda).<\/li>\n<li> <b>awake<\/b>(<i>boolean<\/i>) \u2014 flamuri i m\u00ebnyr\u00ebs s\u00eb krijimit t\u00eb objektit (<i>False<\/i> \u2014 n\u00ebse krijohet nj\u00eb objekt i ri, <i>True<\/i> \u2014 n\u00ebse objekti krijohet nga nj\u00eb \"shkurtuar\" i m\u00ebparsh\u00ebm \u2014 duke p\u00ebrdorur operacionin e \"hibernimit\", e cila \u00ebsht\u00eb e paracaktuar False).<\/li>\n<li> <b>cache_file<\/b>(<i>str<\/i>) \u2014 emri i skedarit p\u00ebr hibernim.<\/li>\n<\/ul>\n<p><\/p>\n<p><b><u>Metodat<\/u><\/b><\/p>\n<p><\/p>\n<p>Cage.<b>file_create<\/b>( <i>server, path<\/i> ) \u2013 krijo nj\u00eb skedar t\u00eb ri.<\/p>\n<p><\/p>\n<p>Cage.<b>file_rename<\/b>( <i>server, path, new_name<\/i> ) \u2013 riem\u00ebro skedarin.<\/p>\n<p><\/p>\n<p>Cage.<b>file_remove<\/b>( <i>server, path<\/i>) \u2013 fshi skedarin.<\/p>\n<p><\/p>\n<p>Cage.<b>open<\/b>( <i>server, path, mod <\/i>) \u2013 hap skedarin.<\/p>\n<p><\/p>\n<p>Kthehet <i>fchannel<\/i> numri i kanalit. Parametri <i>mod<\/i> \u2014 \u00ebsht\u00eb moda e hapjes s\u00eb skedarit: \u00abwm\u00bb \u2014 monopol (lexim\/shkrim), \u00abrs\u00bb \u2014 vet\u00ebm leximi, dhe i ndar\u00eb vet\u00ebm p\u00ebr lexim nga klient\u00eb t\u00eb tjer\u00eb, \u00abws\u00bb \u2014 lexim\/shkrim, dhe i ndar\u00eb vet\u00ebm p\u00ebr lexim nga klient\u00eb t\u00eb tjer\u00eb. <\/p>\n<p><\/p>\n<p>Cage.<b>close<\/b> (<i>fchannel<\/i>) \u2013 mbyll skedarin<\/p>\n<p><\/p>\n<p>Cage.<b>shkruaj <\/b>(<i>fchannel, fillim, t\u00eb dh\u00ebna <\/i>) \u2013 shkruan nj\u00eb varg bajt\u00ebsh n\u00eb skedar<\/p>\n<p><\/p>\n<p>Cage.<b>read <\/b>(<i>fchannel, fillim, len_data<\/i> ) \u2013 lexon nj\u00eb varg bajt\u00ebsh nga skedari<\/p>\n<p><\/p>\n<p>Cage.<b>put_pages <\/b>( <i>fchannel<\/i> ) \u2013 \u00abshtyn\u00bb nga buferi n\u00eb server t\u00eb gjith\u00eb faqet e kanalit t\u00eb specifikuar q\u00eb jan\u00eb modifikuar. P\u00ebrdoret n\u00eb ato pika t\u00eb algoritmit kur duhet t\u00eb jesh i sigurt se t\u00eb gjitha operacionet n\u00eb kanal jan\u00eb ruajtur fizikisht n\u00eb skedarin n\u00eb server.<\/p>\n<p><\/p>\n<p>Cage.<b>push_all<\/b> () \u2013 \u00abshtyn\u00bb nga buferi n\u00eb server t\u00eb gjitha faqet e t\u00eb gjitha kanaleve p\u00ebr instanc\u00ebn e klas\u00ebs Cage q\u00eb jan\u00eb modifikuar. P\u00ebrdoret kur duhet t\u00eb jesh i sigurt se t\u00eb gjitha operacionet n\u00eb t\u00eb gjitha kanalet jan\u00eb ruajtur n\u00eb server.<\/p>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463085\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u00bb \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0434\u0440.) \u043f\u0443\u0442\u0451\u043c \u043e\u0431\u043c\u0435\u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438 (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438) \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u0422\u0421\u0420. \u041e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445: \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0438 embedded \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 (\u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b, \u0431\u043e\u0440\u0442\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0442.\u043f.), \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0445 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27748,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37019","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u00bb \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0434\u0440.) \u043f\u0443\u0442\u0451\u043c \u043e\u0431\u043c\u0435\u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438 (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438) \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u0422\u0421\u0420. \u041e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445: \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0438 embedded \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 (\u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b, \u0431\u043e\u0440\u0442\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0442.\u043f.), \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0445 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 Cage | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u00bb \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0434\u0440.) \u043f\u0443\u0442\u0451\u043c \u043e\u0431\u043c\u0435\u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438 (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438) \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u0422\u0421\u0420. \u041e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445: \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0438 embedded \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 (\u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b, \u0431\u043e\u0440\u0442\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0442.\u043f.), \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0445 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:15:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:15:20+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Sistema e aksesit n\u00eb skedar\u00ebt n\u00eb distanc\u00eb Cage | ProHoster","description":"Q\u00ebllimi i sistemit \u00ebsht\u00eb Mb\u00ebshtetje p\u00ebr aksesin n\u00eb distanc\u00eb t\u00eb skedar\u00ebve n\u00eb kompjuter\u00ebt brenda rrjetit. Sistemi mb\u00ebshtet \"virtualisht\" t\u00eb gjitha operacionet kryesore t\u00eb skedar\u00ebve (krijimi, fshirja, leximi, shkruanja dhe t\u00eb tjer\u00eb) p\u00ebrmes shk\u00ebmbimit t\u00eb transaksioneve (mesazheve) sipas protokollit TCP. Fushat e aplikimit Funksionaliteti i sistemit \u00ebsht\u00eb efektiv n\u00eb rastet e m\u00ebposhtme: n\u00eb aplikacione natyrore p\u00ebr pajisje mobile dhe t\u00eb integruara (smartphone, sisteme menaxhimi automatike etj.) q\u00eb k\u00ebrkojn\u00eb shpejt\u00ebsi.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 Cage | ProHoster","og:description":"\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u00bb \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0434\u0440.) \u043f\u0443\u0442\u0451\u043c \u043e\u0431\u043c\u0435\u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438 (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438) \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u0422\u0421\u0420. \u041e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445: \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0438 embedded \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 (\u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b, \u0431\u043e\u0440\u0442\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0442.\u043f.), \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0445 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:15:20+00:00","article:modified_time":"2019-10-31T19:15:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37019","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-09 21:52:49","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:34:26","updated":"2026-02-09 21:52:49","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/37019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=37019"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/37019\/revisions"}],"predecessor-version":[{"id":159779,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/37019\/revisions\/159779"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/27748"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=37019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=37019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=37019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}