{"id":37222,"date":"2019-10-31T22:16:26","date_gmt":"2019-10-31T19:16:26","guid":{"rendered":"https:\/\/prohoster.info\/blog\/obzor-emulyatorov-terminala\/"},"modified":"2019-10-31T22:16:26","modified_gmt":"2019-10-31T19:16:26","slug":"obzor-emulyatorov-terminala","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/obzor-emulyatorov-terminala","title":{"rendered":"Pregled emulatora terminala","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Par rije\u010di iz na\u0161e prevodila\u010dke agencije: obi\u010dno svi te\u017ee prevesti najnovije materijale i objave, i mi nismo iznimka. Me\u0111utim, terminali nisu ne\u0161to \u0161to se a\u017eurira svaka dva tjedna. Stoga smo za vas preveli \u010dlanak Antoinea Boprea, objavljen u prolje\u0107e 2018. godine: unato\u010d solidnoj 'starosti' prema dana\u0161njim mjerilima, smatramo da materijal nije izgubio na relevantnosti. Osim toga, izvorno se radi o seriji od dva \u010dlanka, no odlu\u010dili smo ih spojiti u jedan veliki post.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Pregled emulatora terminala\" src=\"\/wp-content\/uploads\/2019\/08\/23b2893d4d23ee402f42f8d686fec788.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTerminali zauzimaju posebno mjesto u povijesti ra\u010dunalstva, ali su u posljednjim desetlje\u0107ima bili 'prisiljeni' doslovno pre\u017eivjeti uz naredbeni redak usred sveprisutnih grafi\u010dkih su\u010delja. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Terminal_emulator\">Emulatori terminala<\/a><\/noindex> zamijenili su <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Computer_terminal\">svoje<\/a><\/noindex>hardverske kolege<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>, koji su, s druge strane, bili modifikacije sustava na perforiranim karticama i prekida\u010dima. Moderni distribucije dolaze s mno\u0161tvom emulatora terminala svih oblika i boja. Dok mnogi mirno koriste standardni terminal koji pru\u017ea njihovo radno okru\u017eenje, neki s ponosom koriste otvoreno egzoti\u010dan softver za pokretanje svoje omiljene ljuske ili ure\u0111iva\u010da teksta. No, kako \u0107emo vidjeti iz ovog \u010dlanka, nisu svi terminali stvoreni jednaki: zna\u010dajno se razlikuju po funkcionalnosti, veli\u010dini i performansama. <noindex><a rel=\"nofollow\" href=\"https:\/\/lwn.net\/Articles\/88161\/\">Neki terminali imaju iznimne sigurnosne rupe, a osim toga, ve\u0107ina nudi potpuno razli\u010dit skup funkcija, od podr\u0161ke za su\u010delja s karticama do skripti. Iako smo<\/a><\/noindex>razmatrali emulatore terminala u davnoj pro\u0161losti<\/p>\n<p>, ovaj \u010dlanak predstavlja a\u017euriranje prethodnog materijala, koje \u0107e pomo\u0107i \u010ditateljima da odaberu koji terminal koristiti u 2018. godini. U prvoj polovici \u010dlanka uspore\u0111uju se funkcije, a u drugoj se ocjenjuju performanse.<\/p>\n<p><img decoding=\"async\" alt=\"Pregled emulatora terminala\" src=\"\/wp-content\/uploads\/2019\/08\/be76032ca4392c23dd0c111a36b199ef.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMo\u017eda ovo nisu najnovije verzije, budu\u0107i da sam se oslanjao na stabilne verzije u trenutku pisanja, koje sam mogao instalirati na Debian 9 ili Fedora 27. Jedino isklju\u010denje je Alacritty. On je potomak terminala s GPU ubrzanjem i napisan je na neobi\u010dnom i novom jeziku za ovu svrhu \u2014 Rust. Isklju\u010dio sam iz svog pregleda web terminale (uklju\u010duju\u0107i i na <noindex><a rel=\"nofollow\" href=\"https:\/\/electronjs.org\/\">Electron<\/a><\/noindex>), budu\u0107i da su preliminarni testovi pokazali njihovu izuzetno nisku izvedbu.<\/p>\n<h4>Podr\u0161ka za unicode<\/h4>\n<p>\nSvoje testove sam zapo\u010deo s podr\u0161kom za unicode. Prvi test terminala bio je prikazivanje Unicode stringa iz <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Unicode#Web\">artikla na Wikipediji<\/a><\/noindex>: \u00ab\u00e9, \u0394, \u0419, \u05e7, \u0645, \u0e57, \u3042, \u53f6, \u8449 \u0438 \ub9d0\u00bb. Ovaj jednostavni test pokazuje mo\u017ee li terminal ispravno raditi s globalnim znakovima. Terminal xterm ne prikazuje arapski znak <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mem\">Mem<\/a><\/noindex> u zadnjem konfiguraciji:<\/p>\n<p><img decoding=\"async\" alt=\"Pregled emulatora terminala\" src=\"\/wp-content\/uploads\/2019\/08\/92e1b9f6e7f3129a55d09cd48310c699.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrema zadanim postavkama xterm koristi klasi\u010dni \u201efiksni\u201d font, koji, prema <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Open-source_Unicode_typefaces\">istom Wikipediji<\/a><\/noindex>, ima \u201ezna\u010dajno pokrivanje unicode-a od 1997. godine\u201d. U ovom fontu se doga\u0111a ne\u0161to \u0161to uzrokuje da znak bude prikazan kao prazan okvir i tek pri pove\u0107anju fonta teksta na 20+ to\u010daka znak kona\u010dno po\u010dinje ispravno prikazivati. Me\u0111utim, takvo \u201epopravak\u201d uni\u0161tava prikaz drugih unicode znakova:<\/p>\n<p><img decoding=\"async\" alt=\"Pregled emulatora terminala\" src=\"\/wp-content\/uploads\/2019\/08\/4300f72d87bb9b729d4c682e876b4998.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOve snimke zaslona su napravljene na Fedora 27, jer je ona davala najbolje rezultate, za razliku od Debiana 9, gdje neki stari terminali (konkretno \u2014 mlterm) nisu mogli ispravno raditi s fontovima. Na sre\u0107u, to je ispravljeno u novijim verzijama.<\/p>\n<p>Sada obratite pa\u017enju na prikaz stringa u xterm. Ispostavlja se da znak Mem i onaj koji slijedi Semitic <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Qoph\">Qoph<\/a><\/noindex> pripadaju skriptama za desno na lijevo (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Right-to-left\">right-to-left<\/a><\/noindex>), pa bi ih tehni\u010dki trebalo prikazati s desna na lijevo. Web preglednici, poput Firefox 57, ispravno obra\u0111uju navedeni string. Jednostavniji primjer RTL teksta je rije\u010d \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Sarah\">Sara<\/a><\/noindex>\u00bb na hebrejskom (<noindex><a rel=\"nofollow\" href=\"https:\/\/he.wikipedia.org\/wiki\/%D7%A9%D7%A8%D7%94\">\u05e9\u05e8\u05d4<\/a><\/noindex>). <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Bi-directional_text\">Wiki stranica o dvosmjernim tekstovima<\/a><\/noindex> ka\u017ee sljede\u0107e:<\/p>\n<blockquote><p>\u00abMnoge ra\u010dunalne programe ne mogu ispravno prikazati dvosmjerni tekst. Na primjer, hebrejsko ime \u201eSara\u201d sastoji se od znakova sin (\u05e9) (koji se pojavljuje s desne strane), zatim re\u0161 (\u05e8) i kona\u010dno he (\u05d4) (koji bi trebao biti s lijeve strane)\u00bb.<\/p><\/blockquote>\n<p>\nMnogi terminali ne prolaze ovu provjeru: Alacritty, VTE-derivativni terminali Gnome i XFCE, urxvt, st i xterm prikazuju \"Saru\" obrnutim redoslijedom, kao da smo to ime zapisali kao \"Aras\".<\/p>\n<p><img decoding=\"async\" alt=\"Pregled emulatora terminala\" src=\"\/wp-content\/uploads\/2019\/08\/9decee6d198bd9d3e4f4883a8f2b0da6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDrugi problem dvosmjernih tekstova je \u0161to ih treba nekako poravnati, osobito kada se radi o mije\u0161anju RTL i LTR tekstova. RTL skripte trebaju po\u010deti s desne strane prozora terminala, ali \u0161to bi trebalo biti s terminalima koji po zadano rade s LTR engleskim? Ve\u0107ina njih nema nikakve posebne mehanizme i poravnavaju sav tekst lijevo (uklju\u010duju\u0107i i Konsole). Izuzetak su pterm i mlterm, koji se pridr\u017eavaju standarda i poravnavaju takve retke desno.<\/p>\n<p><img decoding=\"async\" alt=\"Pregled emulatora terminala\" src=\"\/wp-content\/uploads\/2019\/08\/a32675d44e7cadce6d197d6eb5c8d9e2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Za\u0161tita od umetanja<\/h4>\n<p>\nSljede\u0107a kriti\u010dna zna\u010dajka koju sam za sebe odredio je za\u0161tita od umetanja. Iako je \u0161iroko poznato da su upute kao:<\/p>\n<pre><code class=\"plaintext\">$ curl http:\/\/example.com\/ | sh<\/code><\/pre>\n<p>\npush komande za izvr\u0161avanje koda, malo tko zna da se skrivene naredbe mogu probiti u konzolu pri kopiranju-i-umetanju iz web preglednika, \u010dak i nakon pa\u017eljivog pregleda. <noindex><a rel=\"nofollow\" href=\"http:\/\/thejh.net\/misc\/website-terminal-copy-paste\">Provjeravaju\u0107a stranica Johna Horna<\/a><\/noindex> briljantno pokazuje kako bezazleno izgledaju\u0107a komanda:<\/p>\n<pre><code class=\"plaintext\">git clone git:\/\/git.kernel.org\/pub\/scm\/utils\/kup\/kup.git<\/code><\/pre>\n<p>\nizgleda pri umetnju sa stranice Horna u terminal ovako neugodna:<\/p>\n<pre><code class=\"plaintext\">git clone \/dev\/null;\n    clear;\n\techo -n \"Hello \";\n\twhoami|tr -d 'n';\n\techo -e '!nTo je bila lo\u0161a ideja. Ne kopirajte kod s web stranica kojima ne vjerujete! \n\tEvo prve linije va\u0161eg \/etc\/passwd: ';\n\thead -n1 \/etc\/passwd\n\tgit clone git:\/\/git.kernel.org\/pub\/scm\/utils\/kup\/kup.git<\/code><\/pre>\n<p>\nKako to funkcionira? Maliciozni kod je iznesen u blok <b><span><\/b>, koji je pomaknut iz vidnog polja korisnika putem CSS-a.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/cirw.in\/blog\/bracketed-paste\">Bracketed paste na\u010din<\/a><\/noindex> jasno je namijenjen neutralizaciji sli\u010dnih napada. U ovom na\u010dinu, terminali okru\u017euju umetnuti tekst parom posebnih escape sekvenci kako bi obavijestili ljusku o podrijetlu tog teksta. Tako ljuska dobiva signal da mo\u017ee ignorirati posebne simbole koje mo\u017ee sadr\u017eavati umetnuti tekst. Svi terminali, \u010dak i cijenjeni xterm, podr\u017eavaju ovu funkciju, ali umetanje u Bracketed modu treba podr\u0161ku ljuske ili aplikacije pokrenute na terminalu. Na primjer, softver koji koristi <noindex><a rel=\"nofollow\" href=\"https:\/\/tiswww.case.edu\/php\/chet\/readline\/rltop.html\">GNU Readline<\/a><\/noindex> (isto Bash), treba datoteku <b>~\/.inputrc<\/b>:<\/p>\n<pre><code class=\"plaintext\">set enable-bracketed-paste on<\/code><\/pre>\n<p>\nNa\u017ealost, testna stranica Horna tako\u0111er pokazuje kako zaobi\u0107i ovu za\u0161titu putem samog formatiranja teksta i prerano prekinuti primjenu Bracketed moda. To funkcioni\u0161e jer neki terminali pogre\u0161no filtriraju escape sekvence prije nego \u0161to dodaju svoje. Na primjer, u mojim poku\u0161ajima nisam uspio uspje\u0161no zavr\u0161iti testove Konsole \u010dak ni uz pravilnu konfiguraciju. <b>.inputrc<\/b> datoteke. To zna\u010di da lako mo\u017eete dobiti o\u0161te\u0107enja konfiguracije sistema zbog nepodr\u017eane aplikacije ili pogre\u0161no pode\u0161enog shell-a. Ovo je posebno opasno prilikom ulaska na udaljene servere, gdje se pa\u017eljivo obra\u0111ivanje konfiguracije susre\u0107u rje\u0111e, pogotovo ako imate vi\u0161e takvih udaljenih ma\u0161ina.<\/p>\n<p>Dobar na\u010din za re\u0161enje ovog problema je dodatak za potvrdu umetanja za terminal <b>urxvt<\/b>, koji jednostavno tra\u017ei dozvolu za umetanje bilo kog teksta koji sadr\u017ei nove redove. Nije prona\u0111ena sigurnija opcija za opisani Horna napad tekstom.<\/p>\n<h4>Kartice i profili<\/h4>\n<p>\nPopularna funkcija danas je podr\u0161ka za su\u010delje s karticama, koje \u0107emo definirati kao jedno terminalno prozori koje sadr\u017ei nekoliko terminala. Za razli\u010dite terminale ova funkcija se razlikuje, i iako tradicionalni terminali poput xterm uop\u0107e ne podr\u017eavaju kartice, modernije inkarnacije terminala poput Xfce Terminal, GNOME Terminal i Konsole imaju ovu funkciju. Tako\u0111er, podr\u0161ka za kartice postoji i u Urxvt-u, ali samo uz uslov kori\u0161\u0107enja dodatka. Me\u0111utim, \u0161to se ti\u010de podr\u0161ke za kartice kao takve, neosporni lider je Terminator: ne samo da podr\u017eava kartice, ve\u0107 tako\u0111er mo\u017ee raspore\u0111ivati terminale u proizvoljnom redu (vidi sliku ispod).<\/p>\n<p><img decoding=\"async\" alt=\"Pregled emulatora terminala\" src=\"\/wp-content\/uploads\/2019\/08\/5ac2cdbdd969420cd7c19597d20c8c35.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJo\u0161 jedna osobina Terminatora je mogu\u0107nost 'grupisanja' tih kartica zajedno i slanja istih pritisaka tastera na nekoliko terminala istovremeno, \u0161to omogu\u0107ava grubo sredstvo za izvo\u0111enje masovnih operacija na nekoliko servera. Sli\u010dna funkcija tako\u0111er je implementirana u Konsole-u. Za kori\u0161\u0107enje ove funkcije u drugim terminalima potrebno je koristiti softver tre\u0107e strane, kao \u0161to je <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/duncs\/clusterssh\">Cluster SSH<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/hea-www.harvard.edu\/~fine\/Tech\/xlax.html\">xlax<\/a><\/noindex> ili <noindex><a rel=\"nofollow\" href=\"https:\/\/tmux.github.io\/\">tmux<\/a><\/noindex>.<\/p>\n<p>Osobito dobro kartice rade u kombinaciji s profilima: na primjer, mo\u017eete imati jednu karticu za e-po\u0161tu, drugu za chat i tako dalje. To dobro podr\u017eava terminal Konsole i GNOME Terminal. Obojica omogu\u0107uju svakoj kartici da automatski pokrene svoj profil. Terminator tako\u0111er podr\u017eava profile, ali nisam uspio prona\u0107i na\u010din da automatski pokrenem odre\u0111ene programe prilikom otvaranja odre\u0111ene kartice. Druge terminale uop\u0107e nemaju pojam 'profil'.<\/p>\n<h4>Ru\u017eice<\/h4>\n<p>\nPosljednje \u0161to \u0107u razmotriti u prvom dijelu ovog \u010dlanka je izgled terminala. Na primjer, GNOME, Xfce i urxvt podr\u017eavaju prozirnost, ali su nedavno ukinuli podr\u0161ku za pozadinske slike, \u0161to je natjeralo neke korisnike da pre\u0111u na terminal. <noindex><a rel=\"nofollow\" href=\"https:\/\/gnunn1.github.io\/tilix-web\/\">Tilix<\/a><\/noindex>. Osobno me zadovoljava i jednostavno <b>Xresources<\/b>, koji postavlja osnovni set boja pozadine za urxvt. Me\u0111utim, neprilago\u0111ene boje mogu stvoriti i probleme. Na primjer, <noindex><a rel=\"nofollow\" href=\"http:\/\/ethanschoonover.com\/solarized\">Solarized<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/altercation\/solarized\/issues\/220\">ne radi<\/a><\/noindex> s aplikacijama <noindex><a rel=\"nofollow\" href=\"http:\/\/hisham.hm\/htop\/\">htop<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"http:\/\/iptraf.seul.org\/\">IPTraf<\/a><\/noindex>, budu\u0107i da ve\u0107 koriste vlastite boje.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/VT100\">Originalni terminal VT100<\/a><\/noindex> nije podr\u017eavao boje, a novi su \u010desto bili ograni\u010deni na 256-bojnu paletu. Za iskusne korisnike koji stiliziraju svoje terminale, zahtjevi ljuske ili trake stanja na neki komplicirani na\u010din mogu postati neugodno ograni\u010denje. <noindex><a rel=\"nofollow\" href=\"https:\/\/gist.github.com\/XVilka\/8346728\">Gist<\/a><\/noindex> prati koji terminali imaju podr\u0161ku za 'True Color'. Moja testiranja potvr\u0111uju da st, Alacritty i terminali temeljeni na VTE odli\u010dno podr\u017eavaju True Color. Ostali terminali u tom pogledu nisu dobro pro\u0161li i zapravo ne prikazuju \u010dak ni 256 boja. Ispod mo\u017eete vidjeti razliku izme\u0111u podr\u0161ke True Color u terminalima GNOME, st i xterm, koji se dobro snalaze s ovom zadatkom pomo\u0107u svoje 256-bojne palete, i urxvt, koji ne samo da ne prolazi test, ve\u0107 \u010dak pokazuje i neka trep\u0107u\u0107a obilje\u017eja umjesto njih.<\/p>\n<p><img decoding=\"async\" alt=\"Pregled emulatora terminala\" src=\"\/wp-content\/uploads\/2019\/08\/bc6ceac84a1918b9bfa14a5cadd28746.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNeki terminali tako\u0111er analiziraju tekst u potrazi za URL obrazcima kako bi u\u010dinili linkove klikabilnima. To se odnosi na sve terminale izvedene iz VTE, dok urxvt zahtijeva poseban dodatni modul koji \u0107e transformirati URL adrese jednim klikom ili uz pomo\u0107 pre\u010daca. Ostali terminali koje sam testirao prikazuju URL adrese drugim metodama.<\/p>\n<p>Napokon, novi trend terminala je opcionalna traka za pomicanje. Na primjer, u st nema trake za pomicanje; pretpostavlja se da \u0107e korisnik koristiti terminalski multiplexer, poput tmux-a i <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gnu.org\/software\/screen\/\">GNU Screen<\/a><\/noindex>.<\/p>\n<p>U Alacritty tako\u0111er nedostaju povratne trake za pomicanje, ali <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jwilm\/alacritty\/issues\/124\">u dogledno vrijeme \u0107e se dodati<\/a><\/noindex> njena podr\u0161ka zbog \"op\u0161irnog feedbacka\" na ovu temu od strane korisnika. Osim tih izuzetak, svaki terminal koji sam provjerio podr\u017eava povratno pomicanje.<\/p>\n<h4>Me\u0111utim, rezultati<\/h4>\n<p>\nU drugom dijelu materijala (<i>u originalu su to bile dvije razli\u010dite \u010dlanke, \u2014 napomena urednika.<\/i>) usporedit \u0107emo performanse, potro\u0161nju memorije i ka\u0161njenje. No ve\u0107 vidimo da neki od pregledanih terminala imaju ozbiljne nedostatke. Na primjer, korisnici koji redovito rade s RTL skriptama mogli bi obratiti pa\u017enju na mlterm i pterm, jer se oni bolje snalaze s takvim zadacima. Konsole se tako\u0111er dobro pokazao. Korisnici koji ne rade s RTL skriptama mogu birati ne\u0161to drugo.<\/p>\n<p>S gledi\u0161ta za\u0161tite od umetanja zlo\u0107udnog koda, urxvt se izdvaja zbog svoje posebne implementacije za\u0161tite od ovog tipa napada, koja mi se \u010dini svakako korisnom. Onima koji tra\u017ee neke dodatne mogu\u0107nosti, vrijedi pogledati Konsole. Na kraju, valja napomenuti da je VTE odli\u010dna osnova za terminale koja jam\u010di podr\u0161ku za boje, prepoznavanje URL-a i tako dalje. Na prvi pogled, zadani terminal koji dolazi s va\u0161im omiljenim okru\u017eenjem mo\u017ee ispuniti sve zahtjeve, ali ostavimo ovo pitanje otvorenim dok ne razjasnimo performanse.<\/p>\n<p><i><\/p>\n<h4>Nastavljamo razgovor<\/h4>\n<p><\/i><br \/>\nUop\u0107e, performanse terminala same po sebi mogu izgledati kao izmi\u0161ljeni problem, me\u0111utim, kako se ispostavilo, neki od njih pokazuju iznena\u0111uju\u0107e veliku latenciju za softver ove osnovne vrste. Tako\u0111er \u0107emo dalje razmotriti ono \u0161to se tradicionalno naziva \"brzinom\" (u stvari, to je brzina pomicanja) i potro\u0161nju memorije od strane terminala (s obzirom na to da danas to nije toliko kriti\u010dno kao prije desetlje\u0107a).<\/p>\n<h4>Ka\u0161njenje<\/h4>\n<p>\nNakon temeljitog istra\u017eivanja performansi terminala, do\u0161ao sam do zaklju\u010dka da je najva\u017eniji parametar u ovom pogledu veli\u010dina latencije (ping). U svom \u010dlanku <noindex><a rel=\"nofollow\" href=\"https:\/\/pavelfatin.com\/typing-with-pleasure\/\">\u201eTiskamo s zadovoljstvom\u201c<\/a><\/noindex> Pavel Fatin je ispitao ka\u0161njenje razli\u010ditih tekstualnih urednika i naglasio da terminali u tom smislu mogu raditi sporije od najbr\u017eih tekstualnih urednika. Ova naznaka na kraju me dovela do pokretanja vlastitih testova i pisanja ovog \u010dlanka.<\/p>\n<p>Ali \u0161to je to ka\u0161njenje i za\u0161to je to va\u017eno? U svom \u010dlanku, Fatin ga definira kao \"ka\u0161njenje izme\u0111u pritiska tipke i odgovaraju\u0107eg a\u017euriranja ekrana\" i citira <noindex><a rel=\"nofollow\" href=\"https:\/\/books.google.com\/books\/about\/Handbook_of_Human_Computer_Interaction.html?id=WuQbERgXR10C&amp;redir_esc=y\">\u201eVodi\u010d za interakciju \u010dovjeka s ra\u010dunalom\u201c<\/a><\/noindex>, u kojem se ka\u017ee: \"Ka\u0161njenje u vizualnoj povratnoj informaciji na ekranu ra\u010dunala ima zna\u010dajan utjecaj na pona\u0161anje otkucava\u010da i njihovo zadovoljstvo.\"<\/p>\n<p>Fatin obja\u0161njava da ta latencija ima dublje posljedice od samo zadovoljstva: \"pisanje postaje sporije, dolazi do vi\u0161e gre\u0161aka, a napetost o\u010diju i mi\u0161i\u0107a se pove\u0107ava.\" Drugim rije\u010dima, ve\u0107e ka\u0161njenje mo\u017ee dovesti do tipfelera, kao i smanjenja kvalitete koda, jer pove\u0107ava dodatno kognitivno optere\u0107enje na mozak. Ali \u0161to je jo\u0161 gore, latencija \"pove\u0107ava napetost o\u010diju i mi\u0161i\u0107a\", \u0161to o\u010dito sugerira <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Repetitive_strain_injury\">razvoj profesionalnih ozljeda<\/a><\/noindex> u budu\u0107nosti (<i>o\u010dito autor misli na probleme s o\u010dnim mi\u0161i\u0107ima, le\u0111ima, rukama i, naravno, vidom \u2014 nap. prev.<\/i>) zbog ponavljaju\u0107e napetosti.<\/p>\n<p>Neki od tih u\u010dinaka poznati su ve\u0107 dugo, a rezultati <noindex><a rel=\"nofollow\" href=\"https:\/\/doi.org\/10.1080\/00140137608931531\">istra\u017eivanja<\/a><\/noindex>, objavljeni jo\u0161 1976. u \u010dasopisu Ergonomics, govore da ka\u0161njenje od 100 milisekundi \"zna\u010dajno pogor\u0161ava brzinu otkucavanja.\" Nedavno je u korisni\u010dkom priru\u010dniku GNOME dodano <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.gnome.org\/hig-book\/3.12\/feedback-response-times.html.en\">prihvatljivo vrijeme odaziva<\/a><\/noindex> od 10 milisekundi, a ako se ode dalje, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=vOvQCPLkPt4\">Microsoft Research<\/a><\/noindex> pokazuje da je ideal 1 milisekunda.<\/p>\n<p>Fatin je svoje testove provodio na tekstualnim urednicima; stvorio je portabilni alat nazvan <noindex><a rel=\"nofollow\" href=\"https:\/\/pavelfatin.com\/typometer\">Typometer<\/a><\/noindex>, koji sam koristio za testiranje pinga u terminalnim emulatorima. Imajte na umu da je test proveden u simulacijskom re\u017eimu: u stvarnosti moramo uzeti u obzir i ka\u0161njenje unosa (tipkovnica, USB kontroler itd.) i izlaza (video memorija, monitor). Prema Fatinu, u tipi\u010dnim konfiguracijama to iznosi oko 20 ms. Uz gejmersku opremu, mo\u017ee se posti\u0107i samo 3 milisekunde. Budu\u0107i da ve\u0107 imamo takvu brzu opremu, aplikacija ne bi trebala dodavati dodatno ka\u0161njenje. Fatinov cilj je smanjiti ka\u0161njenje aplikacije na 1 milisekundu, ili \u010dak posti\u0107i set bez <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.jetbrains.com\/idea\/2015\/08\/experimental-zero-latency-typing-in-intellij-idea-15-eap\/\">mjerenog ka\u0161njenja<\/a><\/noindex>, poput <noindex><a rel=\"nofollow\" href=\"https:\/\/confluence.jetbrains.com\/display\/IDEADEV\/IDEA+15+EAP\">IntelliJ IDEA 15<\/a><\/noindex>.<\/p>\n<p>Evo rezultata mojih mjerenja, kao i nekih rezultata Fatina kako bih pokazao da moj eksperiment korespondira s njegovim testovima:<\/p>\n<p><img decoding=\"async\" alt=\"Pregled emulatora terminala\" src=\"\/wp-content\/uploads\/2019\/08\/d7ae46c8309e9cfd517164d5fed093f7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrvo \u0161to me iznenadilo su bolji odzivi starih programa, kao \u0161to su xterm i mlterm. Uz najgore ka\u0161njenje registracije (2,4 ms) pokazali su bolje rezultate od najbr\u017eeg modernog terminala (10,6 ms za st). Nijedan moderni terminal ne prelazi ispod praga od 10 milisekundi. Konkretno, Alacritty ne ispunjava zahtjeve za \u201enajbr\u017eim postoje\u0107im emulatorom terminala\u201c, iako su njegovi rezultati pobolj\u0161ani od prvih testova 2017. godine. Uistinu, autori projekta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jwilm\/alacritty\/issues\/673\">su svjesni situacije<\/a><\/noindex> i rade na pobolj\u0161anju prikaza. Tako\u0111er, potrebno je napomenuti da je Vim, koji koristi GTK3, znatno sporiji od svog analoga GTK2. Iz ovoga se mo\u017ee zaklju\u010diti da GTK3 stvara dodatno ka\u0161njenje, i to se odra\u017eava na svim ostalim terminalima koji ga koriste (Terminator, Xfce4 Terminal i GNOME Terminal).<\/p>\n<p>Me\u0111utim, razlike mogu biti neprimjetne oku. Kako obja\u0161njava Fatin: \"nije nu\u017eno biti svjestan prisutnosti ka\u0161njenja da bi ono imalo u\u010dinak na vas\". Fatin tako\u0111er upozorava na standardnu devijaciju: \"bilo kakva odstupanja u duljini ka\u0161njenja (tre\u0161nja) stvaraju dodatno optere\u0107enje zbog svoje nepredvidivosti.\"<\/p>\n<p><img decoding=\"async\" alt=\"Pregled emulatora terminala\" src=\"\/wp-content\/uploads\/2019\/08\/e128a7e6c32a1517c98ffc612fe09128.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGrafikon iznad dobiven je na \u010distom Debianu 9 (stretch) s <noindex><a rel=\"nofollow\" href=\"https:\/\/i3wm.org\/\">i3 upraviteljem prozora<\/a><\/noindex>. Ovo okru\u017eenje daje najbolje rezultate u testovima za identifikaciju ka\u0161njenja. Kako se ispostavilo, GNOME generira dodatni ping od 20 ms za sve mjere. Mogu\u0107e obja\u0161njenje za to je postojanje programa sa sinkroniziranom obradom ulaznih doga\u0111aja. Fatin navodi takav primjer. <noindex><a rel=\"nofollow\" href=\"http:\/\/www.workrave.org\/\">Workrave<\/a><\/noindex>, koji dodaje ka\u0161njenje obra\u0111uju\u0107i sve ulazne doga\u0111aje sinkronizirano. Po zadanim postavkama, GNOME je tako\u0111er opremljen upraviteljem prozora <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mutter_(software)\">Mutter<\/a><\/noindex>, koji stvara dodatni sloj me\u0111uspremnika, \u0161to utje\u010de na ping i dodaje minimalno 8 milisekundi ka\u0161njenja.<\/p>\n<p><img decoding=\"async\" alt=\"Pregled emulatora terminala\" src=\"\/wp-content\/uploads\/2019\/08\/3585d1edf4cee214d7a53858943b1845.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Brzina skrolanja<\/h4>\n<p>\nSljede\u0107i test je tradicionalna provjera \"brzine\" ili \"propusnosti\", koja mjeri koliko brzo terminal mo\u017ee skrolati stranicu, prikazuju\u0107i veliku koli\u010dinu teksta na ekranu. Mehanika testa varira; originalni test se sastojao u jednostavnom generiranju iste tekstualne linije pomo\u0107u naredbe seq. Ostali testovi uklju\u010duju provjeru Thomasa E. Dicka (koji prati xterm), u kojem se vi\u0161e puta <noindex><a rel=\"nofollow\" href=\"https:\/\/invisible-island.net\/xterm\/xterm.faq.html#scroll_speed\">izbacuje datoteka terminfo.src<\/a><\/noindex>. U jo\u0161 jednom pregledu performansi terminala <noindex><a rel=\"nofollow\" href=\"https:\/\/danluu.com\/term-latency\/\">Den Luu<\/a><\/noindex> koristi niz nasumi\u010dnih bajtova u base32 kodiranju, koja se ispisuje u terminal pomo\u0107u cat. Luu smatra ovaj test \"toliko beskorisnim benchmarkom koliko mo\u017ee\u0161 zamisliti\" i predla\u017ee kori\u0161tenje umjesto toga odziva terminala kao glavnog pokazatelja. Dick tako\u0111er smatra da je njegov test obmanjuju\u0107i. Ipak, obojica autori priznaju da propusnost terminalnog prozora mo\u017ee biti problem. Luu je otkrio zamrzavanje Emacs Eshell pri prikazivanju velikih datoteka, dok je Dick optimizirao terminal kako bi eliminirao vizualnu tromost xterm-a. Stoga, u ovom testu jo\u0161 uvijek postoji neki smisao, no s obzirom na to da se proces renderiranja drasti\u010dno razlikuje od terminala do terminala, mo\u017ee se koristiti i kao testna komponenta za provjeru drugih parametara.<\/p>\n<p><img decoding=\"async\" alt=\"Pregled emulatora terminala\" src=\"\/wp-content\/uploads\/2019\/08\/3231877fdcd7725c3248fb393185ece4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOvdje vidimo da rxvt i st napreduju u odnosu na konkurente, dok slijedi Alacritty, koji je mnogo noviji i razvija se s fokusom na brzinu. Zatim dolaze Xfce (obitelj VTE) i Konsole, koji rade gotovo dvostruko br\u017ee. Posljednji je xterm, koji je pet puta sporiji od rxvt-a. Tijekom testa, xterm je tako\u0111er imao ozbiljnih problema s prikazom, a bilo je te\u0161ko razabrati prolazni tekst, \u010dak i kad se radilo o istoj liniji. Konsole se pokazao brzim, ali je povremeno<\/p>\n<p>Diki obja\u0161njava da su razlike u performansama povezane s dizajnom spremnika za pomicanje u razli\u010ditim terminalima. Konkretno, optu\u017euje rxvt i druge terminale da \"ne po\u0161tuju op\u0107a pravila\":<\/p>\n<blockquote><p>\"Za razliku od xterm-a, rxvt nije poku\u0161avao prikazati sve promjene. Ako zakasni, odbacit \u0107e neke promjene kako bi nadoknadio izgubljeno. To je vi\u0161e utjecalo na prividnu brzinu pomicanja nego na organizaciju unutarnje memorije. Jedna od mana je \u0161to je ASCII animacija bila donekle neto\u010dna.<\/p><\/blockquote>\n<p>\nKako bi ispravio ovu prividnu sporost xterm-a, Diki predla\u017ee kori\u0161tenje resursa <noindex><a rel=\"nofollow\" href=\"https:\/\/invisible-island.net\/xterm\/manpage\/xterm.html#VT100-Widget-Resources:fastScroll\">fastScroll<\/a><\/noindex>, koji omogu\u0107ava xterm-u da odbaci neke a\u017euriranja ekrana kako ne bi kasnio za tokom. Moji testovi potvr\u0111uju da fastScroll pobolj\u0161ava performanse i izjedna\u010dava xterm s rxvt-om. Ovo je, me\u0111utim, prili\u010dno grubo rje\u0161enje, kako sam Diki obja\u0161njava: \"ponekad xterm \u2014 poput konsole \u2014 izgleda kao da se zaustavlja, \u010dekaju\u0107i novi set a\u017euriranja ekrana nakon \u0161to su neka od njih ve\u0107 uklonjena\". U ovom smislu, \u010dini se da su drugi terminali na\u0161li najbolji kompromis izme\u0111u brzine i cjelovitosti prikaza.<\/p>\n<h4>Kori\u0161tenje resursa<\/h4>\n<p>\nBez obzira na to koliko je opravdano razmatrati brzinu pomicanja kao indikativ performansi, ovaj test omogu\u0107ava simulaciju optere\u0107enja na terminalima, \u0161to zauzvrat omogu\u0107ava mjerenje drugih parametara, poput kori\u0161tenja memorije ili diska. Metri\u010dki podaci su dobiveni pokretanjem navedenog testa <b>seq<\/b> pod nadzorom procesa Pythona. Prikupljao je podatke o broja\u010dima <noindex><a rel=\"nofollow\" href=\"http:\/\/man7.org\/linux\/man-pages\/man2\/getrusage.2.html\">getrusage()<\/a><\/noindex> za <b>ru_maxrss<\/b>, zbroj <b>ru_oublock<\/b> i <b>ru_inblock<\/b> i jednostavni mjera\u010d vremena.<\/p>\n<p><img decoding=\"async\" alt=\"Pregled emulatora terminala\" src=\"\/wp-content\/uploads\/2019\/08\/df378c145a559ed4aad98fa70b58c72c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nU ovom testu ST zauzima prvo mjesto s najmanjom prosje\u010dnom potro\u0161njom memorije od 8 MB, \u0161to nije iznena\u0111uju\u0107e s obzirom na to da je osnovna ideja projekta jednostavnost. Malo vi\u0161e tro\u0161e mlterm, xterm i rxvt - oko 12 MB. Jo\u0161 jedan zna\u010dajan rezultat ima Alacritty, \u010dija je potreba za radom 30 MB. Zatim dolaze terminali iz obitelji VTE s pokazateljima od 40 do 60 MB, \u0161to je prili\u010dno puno. Ova potro\u0161nja mo\u017ee se objasniti time \u0161to ti terminali koriste biblioteke vi\u0161eg nivoa, poput GTK. Konsole zavr\u0161ava s kolosalnom potro\u0161njom od 65 MB memorije tijekom testova, iako se to mo\u017ee opravdati njegovim vrlo \u0161irokim skupom funkcija.<\/p>\n<p>U usporedbi s prethodnim rezultatima iz pre deset godina, svi programi sada tro\u0161e znatno vi\u0161e memorije. Prije je Xterm trebao 4 MB, a sada 15 MB samo za pokretanje. Sli\u010dan porast potro\u0161nje ima i rxvt, koji sada iz kutije zahtijeva 16 MB. Terminal Xfce zauzima 34 MB, \u0161to je tri puta vi\u0161e nego ranije, dok GNOME Terminal tra\u017ei samo 20 MB. Naravno, svi prethodni testovi provedeni su na 32-bitnoj arhitekturi. Na LCA 2012, Rusty Russell <noindex><a rel=\"nofollow\" href=\"https:\/\/lwn.net\/Articles\/477155\/\">ispri\u010dao<\/a><\/noindex>, postoje mnogi suptilniji razlozi koji mogu objasniti rast potro\u0161nje memorije. Uz sve to, sada \u017eivimo u vremenima kada imamo cijele gigabajte memorije, pa \u0107emo se nekako sna\u0107i.<\/p>\n<p>Ipak, ne mogu se oteti osje\u0107aju da je dodjeljivanje ve\u0107e koli\u010dine memorije za tako temeljni softver kao \u0161to je terminal - rasipanje resursa. Ovi programi trebali bi biti najmanji i najminimalniji, sposobni raditi na bilo kojoj \"kutiji\", \u010dak i na cipeli, ako ikada do\u0111emo do toga da ih treba opskrbiti Linux sustavima (a znate da ho\u0107emo). No, s ovim brojkama, potro\u0161nja memorije postat \u0107e problem u budu\u0107nosti u bilo kojem okru\u017eenju prilikom pokretanja vi\u0161e terminala, osim u situaciji s nekoliko najsitnijih i ograni\u010denih mogu\u0107nosti. Kako bi to nadoknadili, GNOME Terminal, Konsole, urxvt, Terminator i Xfce Terminal imaju Daemon na\u010din rada, koji omogu\u0107uje upravljanje vi\u0161e terminala putem jednog procesa, \u010dime se ograni\u010dava njihova potro\u0161nja memorije.<\/p>\n<p><img decoding=\"async\" alt=\"Pregled emulatora terminala\" src=\"\/wp-content\/uploads\/2019\/08\/65ade9cc81284f24f0c44322eec73ef0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTijekom svojih testova do\u0161ao sam do jo\u0161 jednog neo\u010dekivanog zaklju\u010dka o diskovnom \u010ditanju i pisanju: o\u010dekivao sam da ovdje ne\u0107u vidjeti ni\u0161ta, ali se ispostavilo da neki terminali na disk zapisuju najobimnije podatke. Tako, knji\u017enica VTE zapravo dr\u017ei u memoriji diskovni spremnik za pomicanje (ova osobina <noindex><a rel=\"nofollow\" href=\"https:\/\/bugzilla.gnome.org\/show_bug.cgi?id=631685\">primije\u0107ena je jo\u0161 2010. godine<\/a><\/noindex>, i to se doga\u0111a i dalje). No, za razliku od starih implementacija, sada su, barem, ti podaci \u0161ifrirani pomo\u0107u AES256 GCM (<noindex><a rel=\"nofollow\" href=\"https:\/\/bugzilla.gnome.org\/show_bug.cgi?id=664611#c48\">od verzije 0.39.2<\/a><\/noindex>). No, name\u0107e se razumno pitanje, \u0161to je to posebno u knji\u017enici VTE, da zahtijeva takav nesvakida\u0161nji pristup implementaciji\u2026<\/p>\n<h4>Zaklju\u010dak<\/h4>\n<p>\nU prvom dijelu \u010dlanka otkrili smo da terminali temeljeni na VTE imaju dobar skup funkcija, ali sada vidimo da je to povezano s nekim tro\u0161kovima za odr\u017eavanje njihove performanse. Trenutno, memorija nije problem, jer se svi VTE terminali mogu upravljati putem Daemon procesa, koji ograni\u010dava njihov apetit. Ipak, stare sustave s fizi\u010dkim ograni\u010denjima u pogledu broja RAM-a i predmemorije jezgre mo\u017eda i dalje trebaju ranije verzije terminala, jer tro\u0161e znatno manje resursa. Iako su terminali VTE dobro pokazali u testovima propusnosti (pomi\u010denje), njihovo ka\u0161njenje prikazivanja podataka na ekranu je iznad postavljenog praga u priru\u010dniku korisnika GNOME. Vjerojatno bi se programerima VTE trebalo uzeti to u obzir. Ako se uzme u obzir da \u010dak i za po\u010detnike Linux korisnike susret s terminalom je neizbje\u017ean, mogli bi ga u\u010diniti prijateljskijim prema korisniku. Za iskusne \u201egeekove\u201c, prelazak s terminala po defaultu mo\u017ee zna\u010diti \u010dak i smanjenje optere\u0107enja na vid i mogu\u0107nost izbjegavanja profesionalnih ozljeda i bolesti u budu\u0107nosti zbog dugotrajnih radnih sesija. Na\u017ealost, samo stari xterm i mlterm dovode nas do \u010darobnog praga pinga od 10 milisekundi, \u0161to je za mnoge neprihvatljivo.<\/p>\n<p>Kontrolna mjerenja su tako\u0111er pokazala da su se zbog razvoja grafi\u010dkih okru\u017eenja Linux programeri morali suo\u010diti s nizom kompromisa. Neki korisnici bi trebali razmotriti kori\u0161tenje klasi\u010dnih upravitelja prozora, jer oni zna\u010dajno smanjuju ping. Na\u017ealost, za Wayland nije bilo mogu\u0107e izmjeriti latenciju: program Typometer, koji sam koristio, bio je dizajniran da sprije\u010di ono \u0161to Wayland nastoji sprije\u010diti \u2014 \u0161pijuniranje drugih prozora. Nadam se da je performansa Wayland kompozitora bolja od one X.org i tako\u0111er se nadam da \u0107e netko u budu\u0107nosti prona\u0107i na\u010din za procjenu razine latencije u ovom okru\u017eenju.<br \/>\n<br \/>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/itsumma\/blog\/463785\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0430\u0440\u0430 \u0441\u043b\u043e\u0432 \u043e\u0442 \u043d\u0430\u0448\u0435\u0433\u043e translate-\u0431\u044e\u0440\u043e: \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0441\u0435 \u0441\u0442\u0440\u0435\u043c\u044f\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u0441\u0432\u0435\u0436\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0438 \u043c\u044b \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041d\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437 \u0432 \u043d\u0435\u0434\u0435\u043b\u044e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043f\u0435\u0440\u0435\u0432\u0435\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u0441\u0442\u0430\u0442\u044c\u044e \u0410\u043d\u0442\u0443\u0430\u043d\u0430 \u0411\u043e\u043f\u0440\u0435, \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0432\u0435\u0441\u043d\u043e\u0439 2018 \u0433\u043e\u0434\u0430: \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0441\u043e\u043b\u0438\u0434\u043d\u044b\u0439 \u043f\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u043c\u0435\u0440\u043a\u0430\u043c \u00ab\u0432\u043e\u0437\u0440\u0430\u0441\u0442\u00bb, \u043d\u0430 \u043d\u0430\u0448 \u0432\u0437\u0433\u043b\u044f\u0434, \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u043b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27911,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37222","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.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0430\u0440\u0430 \u0441\u043b\u043e\u0432 \u043e\u0442 \u043d\u0430\u0448\u0435\u0433\u043e translate-\u0431\u044e\u0440\u043e: \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0441\u0435 \u0441\u0442\u0440\u0435\u043c\u044f\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u0441\u0432\u0435\u0436\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0438 \u043c\u044b \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041d\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437 \u0432 \u043d\u0435\u0434\u0435\u043b\u044e.\" \/>\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\/hr\/blog\/administrirovanie\/obzor-emulyatorov-terminala\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"hr_HR\" \/>\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\u041e\u0431\u0437\u043e\u0440 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0430\u0440\u0430 \u0441\u043b\u043e\u0432 \u043e\u0442 \u043d\u0430\u0448\u0435\u0433\u043e translate-\u0431\u044e\u0440\u043e: \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0441\u0435 \u0441\u0442\u0440\u0435\u043c\u044f\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u0441\u0432\u0435\u0436\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0438 \u043c\u044b \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041d\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437 \u0432 \u043d\u0435\u0434\u0435\u043b\u044e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/obzor-emulyatorov-terminala\" \/>\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:16:26+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:16:26+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\udd47Pregled emulacija terminala | ProHoster","description":"Par rije\u010di iz na\u0161e prevodila\u010dke agencije: obi\u010dno svi nastoje prevoditi najnovije materijale i publikacije, a mi nismo iznimka. No, terminali nisu ne\u0161to \u0161to se a\u017eurira svaka dva tjedna.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/obzor-emulyatorov-terminala","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","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\u041e\u0431\u0437\u043e\u0440 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 | ProHoster","og:description":"\u041f\u0430\u0440\u0430 \u0441\u043b\u043e\u0432 \u043e\u0442 \u043d\u0430\u0448\u0435\u0433\u043e translate-\u0431\u044e\u0440\u043e: \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0441\u0435 \u0441\u0442\u0440\u0435\u043c\u044f\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u0441\u0432\u0435\u0436\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0438 \u043c\u044b \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041d\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437 \u0432 \u043d\u0435\u0434\u0435\u043b\u044e.","og:url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/obzor-emulyatorov-terminala","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:16:26+00:00","article:modified_time":"2019-10-31T19:16:26+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37222","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-01-23 16:48:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:31:24","updated":"2026-01-23 16:48:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/37222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=37222"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/37222\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/27911"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=37222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=37222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=37222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}