{"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\/ro\/blog\/administrirovanie\/obzor-emulyatorov-terminala","title":{"rendered":"Prezentare general\u0103 a emulatorilor de terminal","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>C\u00e2teva cuvinte de la biroul nostru de traduceri: de obicei, toat\u0103 lumea \u00ee\u0219i propune s\u0103 traduc\u0103 cele mai recente materiale \u0219i publica\u021bii, \u0219i noi nu facem excep\u021bie. \u00cens\u0103 terminalele nu sunt ceva ce se actualizeaz\u0103 s\u0103pt\u0103m\u00e2nal. De aceea, am tradus pentru voi articolul lui Antoine Beaupr\u00e9, publicat \u00een prim\u0103vara anului 2018: \u00een ciuda \u201ev\u00e2rstei\u201d sale considerabile din perspectiva actual\u0103, din punctul nostru de vedere, materialul nu a pierdut deloc din relevan\u021b\u0103. \u00cen plus, \u00een original este o serie de dou\u0103 articole, dar am decis s\u0103 le combin\u0103m \u00eentr-o singur\u0103 postare mare.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a emulatorilor de terminal\" src=\"\/wp-content\/uploads\/2019\/08\/23b2893d4d23ee402f42f8d686fec788.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTerminalele ocup\u0103 un loc special \u00een istoria computerelor, \u00eens\u0103 \u00een ultimele decenii au fost \u00abnevoite\u00bb s\u0103 supravie\u021buieasc\u0103 al\u0103turi de linia de comand\u0103 \u00een fa\u021ba r\u0103sp\u00e2ndirii tot mai mari a interfe\u021belor grafice. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Terminal_emulator\">Emulatoarele de terminal<\/a><\/noindex> au \u00eenlocuit rudele lor <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Computer_terminal\">hardware<\/a><\/noindex>, care, la r\u00e2ndul lor, erau o modificare a sistemelor cu perfora\u021bie \u0219i comutatoare. Distribu\u021biile moderne vin cu o mul\u021bime de emulatoare de terminal \u00een toate formele \u0219i culorile. \u0218i, de\u0219i mul\u021bi se mul\u021bumesc cu terminalul standard furnizat de mediul lor de lucru, unii folosesc cu m\u00e2ndrie software-ul evident exotic pentru a-\u0219i rula shell-ul preferat sau editorul de text. Dar, a\u0219a cum vom vedea din acest articol, nu toate terminalele au fost create dup\u0103 acela\u0219i model: ele difer\u0103 semnificativ \u00eentre ele \u00een func\u021bionalitate, dimensiune \u0219i performan\u021b\u0103.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Unele terminale au adev\u0103rate lacune de securitate, iar majoritatea au seturi de func\u021bii complet diferite, de la suport pentru interfe\u021be cu taburi la scripturi. De\u0219i noi <noindex><a rel=\"nofollow\" href=\"https:\/\/lwn.net\/Articles\/88161\/\">am analizat emulatoarele de terminal acum mult timp<\/a><\/noindex>, acest articol reprezint\u0103 o actualizare a materialului anterior care va ajuta cititorii s\u0103 decid\u0103 ce terminal s\u0103 foloseasc\u0103 \u00een 2018. \u00cen prima jum\u0103tate a articolului se compar\u0103 func\u021biile, iar \u00een a doua se evalueaz\u0103 performan\u021ba.<\/p>\n<p>Iat\u0103 terminalele pe care le-am examinat:<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a emulatorilor de terminal\" src=\"\/wp-content\/uploads\/2019\/08\/be76032ca4392c23dd0c111a36b199ef.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEste posibil ca acestea s\u0103 nu fie cele mai recente versiuni, deoarece m-am limitat la versiuni stabile \u00een momentul scrierii materialului, pe care am reu\u0219it s\u0103 le rulez pe Debian 9 sau Fedora 27. Singura excep\u021bie este Alacritty. Este un descendent al terminalelor cu accelerare GPU \u0219i este scris \u00eentr-o limbaj neobi\u0219nuit \u0219i nou pentru aceast\u0103 sarcin\u0103 \u2014 Rust. Am exclus din recenzia mea terminalele web (inclusiv \u0219i la <noindex><a rel=\"nofollow\" href=\"https:\/\/electronjs.org\/\">Electron<\/a><\/noindex>), deoarece testele preliminare au ar\u0103tat o performan\u021b\u0103 extrem de sc\u0103zut\u0103.<\/p>\n<h4>Suport pentru unicode<\/h4>\n<p>\nMi-am \u00eenceput testele cu suportul unicode. Primul test al terminalelor a fost afi\u0219area unui \u0219ir de caractere unicode din <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Unicode#Web\">articolul de pe Wikipedia<\/a><\/noindex>: \u201e\u00e9, \u0394, \u0419, \u05e7, \u0645, \u0e57, \u3042, \u53f6, \u8449 \u0219i \ub9d0\u201d. Acest test simplu arat\u0103 dac\u0103 terminalul poate func\u021biona corect \u00een \u00eentreaga lume. Terminalul xterm nu afi\u0219eaz\u0103 simbolul arab <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mem\">Memorie<\/a><\/noindex> \u00een configura\u021bia implicit\u0103:<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a emulatorilor de terminal\" src=\"\/wp-content\/uploads\/2019\/08\/92e1b9f6e7f3129a55d09cd48310c699.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nImplicit, xterm folose\u0219te o font \u201efix\u0103\u201d clasic\u0103, care, conform <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Open-source_Unicode_typefaces\">acelea\u0219i Wiki<\/a><\/noindex>, are \u201ecobor\u00e2re substan\u021bial\u0103 a unicode-ului din 1997\u201d. \u00cen aceast\u0103 font apare ceva ce face ca simbolul s\u0103 fie afi\u0219at sub form\u0103 de un cadru gol \u0219i doar c\u00e2nd dimensiunea fontului este m\u0103rit\u0103 la 20 puncte sau mai mult simbolul \u00eencepe \u00een sf\u00e2r\u0219it s\u0103 fie afi\u0219at corect. Cu toate acestea, acest \u201efix\u201d stric\u0103 afi\u0219area altor simboluri unicode:<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a emulatorilor de terminal\" src=\"\/wp-content\/uploads\/2019\/08\/4300f72d87bb9b729d4c682e876b4998.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAceste capturi de ecran au fost realizate \u00een Fedora 27, deoarece aceasta a oferit cele mai bune rezultate, spre deosebire de Debian 9, unde unele versiuni vechi de terminale (\u00een special \u2014 mlterm) nu puteau func\u021biona corect cu fonturile. Din fericire, aceasta a fost corectat\u0103 \u00een versiunile ulterioare.<\/p>\n<p>Acum, observa\u021bi afi\u0219area \u0219irului \u00een xterm. Se pare c\u0103 simbolul Mem \u0219i urm\u0103torul s\u0103u Semitic <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Qoph\">Qoph<\/a><\/noindex> apar\u021bin scenariilor de scriere RTL (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Right-to-left\">right-to-left<\/a><\/noindex>), a\u0219a c\u0103 tehnic ar trebui s\u0103 fie afi\u0219ate de la dreapta la st\u00e2nga. Programele de navigare web, cum ar fi Firefox 57, gestioneaz\u0103 corect \u0219irul de mai sus. O variant\u0103 mai simpl\u0103 de text RTL este cuv\u00e2ntul \u201e<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Sarah\">Sara<\/a><\/noindex>\u201d \u00een ebraic\u0103 (<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\">Pagina Wiki despre texte bidirec\u021bionale<\/a><\/noindex> spune urm\u0103toarele:<\/p>\n<blockquote><p>\u201eMulte programe de calculator nu pot afi\u0219a corect text bidirec\u021bional. De exemplu, numele evreiesc \u201eSara\u201d este format din simboluri sin (\u05e9) (care apare la dreapta), apoi resh (\u05e8) \u0219i, \u00een final, he (\u05d4) (care ar trebui s\u0103 apar\u0103 la st\u00e2nga)\u201d.<\/p><\/blockquote>\n<p>\nMulte terminale nu trec acest test: terminalele Alacritty, cele derivate VTE din Gnome \u0219i XFCE, urxvt, st \u0219i xterm afi\u0219eaz\u0103 \u201eSara\u201d \u00een ordinea invers\u0103, ca \u0219i cum am scrie acest nume ca \u201eAras\u201d.<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a emulatorilor de terminal\" src=\"\/wp-content\/uploads\/2019\/08\/9decee6d198bd9d3e4f4883a8f2b0da6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO alt\u0103 problem\u0103 a textelor bidirec\u021bionale este c\u0103 trebuie cumva aliniate, mai ales c\u00e2nd este vorba de amestecarea textelor RTL \u0219i LTR. Scripturile RTL ar trebui s\u0103 \u00eenceap\u0103 din partea dreapt\u0103 a ferestrei terminalului, dar ce ar trebui s\u0103 se \u00eent\u00e2mple pentru terminalele care, \u00een mod implicit, func\u021bioneaz\u0103 cu englez\u0103 LTR? Majoritatea dintre ele nu au mecanisme speciale \u0219i aliniaz\u0103 tot textul la st\u00e2nga (inclusiv, \u0219i \u00een Konsole). Excep\u021biile sunt pterm \u0219i mlterm, care respect\u0103 standardele \u0219i aliniaz\u0103 astfel de linii la dreapta.<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a emulatorilor de terminal\" src=\"\/wp-content\/uploads\/2019\/08\/a32675d44e7cadce6d197d6eb5c8d9e2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Protec\u021bie \u00eempotriva inser\u021biei<\/h4>\n<p>\nUrm\u0103toarea caracteristic\u0103 critic\u0103 pe care am identificat-o pentru mine este protec\u021bia \u00eempotriva inser\u021biei. De\u0219i este bine cunoscut faptul c\u0103 vr\u0103jile de tip:<\/p>\n<pre><code class=\"plaintext\">$ curl http:\/\/example.com\/ | sh<\/code><\/pre>\n<p>\nsunt comenzi de execu\u021bie a codului, pu\u021bini \u0219tiu c\u0103 comenzile ascunse pot p\u0103trunde \u00een consola atunci c\u00e2nd sunt copiate \u0219i lipite dintr-un browser web, chiar \u0219i dup\u0103 o inspec\u021bie atent\u0103. <noindex><a rel=\"nofollow\" href=\"http:\/\/thejh.net\/misc\/website-terminal-copy-paste\">Site-ul de verificare al lui Janna Horne<\/a><\/noindex> arat\u0103 str\u0103lucit cum o comand\u0103 care pare inofensiv\u0103:<\/p>\n<pre><code class=\"plaintext\">git clone git:\/\/git.kernel.org\/pub\/scm\/utils\/kup\/kup.git<\/code><\/pre>\n<p>\nse transform\u0103, atunci c\u00e2nd este lipit\u0103 de pe site-ul lui Horne \u00een terminal, \u00eentr-o problem\u0103 nepl\u0103cut\u0103:<\/p>\n<pre><code class=\"plaintext\">git clone \/dev\/null;\n    clear;\n\techo -n \"Hello \";\n\twhoami|tr -d 'n';\n\techo -e '!nA fost o idee proast\u0103. Nu copia\u021bi cod de pe site-uri \u00een care nu ave\u021bi \u00eencredere! \n\tIat\u0103 prima linie din \/etc\/passwd: ';\n\thead -n1 \/etc\/passwd\n\tgit clone git:\/\/git.kernel.org\/pub\/scm\/utils\/kup\/kup.git<\/code><\/pre>\n<p>\nCum func\u021bioneaz\u0103 asta? Codul d\u0103un\u0103tor este scos \u00eentr-un bloc <b>&lt;sp\u0430n&gt;<\/b>, care este mutat din c\u00e2mpul vizual al utilizatorului prin mijloace CSS.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/cirw.in\/blog\/bracketed-paste\">Modul de lipire Bracketed<\/a><\/noindex> este destinat \u00een mod special neutraliz\u0103rii unor astfel de atacuri. \u00cen acest mod, terminalele \u00eencadreaz\u0103 textul lipit \u00eentr-o pereche de secven\u021be de escape speciale, pentru a informa shell-ul despre provenien\u021ba acestui text. Astfel, shell-ul prime\u0219te semnalul c\u0103 poate ignora caracterele speciale pe care le poate con\u021bine textul lipit. Toate terminalele, p\u00e2n\u0103 la venerabilul xterm, suport\u0103 aceast\u0103 func\u021bie, dar lipirea \u00een modul Bracketed necesit\u0103 suport din partea shell-ului sau aplica\u021biei care ruleaz\u0103 pe terminal. De exemplu, software-ul care folose\u0219te <noindex><a rel=\"nofollow\" href=\"https:\/\/tiswww.case.edu\/php\/chet\/readline\/rltop.html\">GNU Readline<\/a><\/noindex> (acela\u0219i Bash), necesit\u0103 un fi\u0219ier <b>~\/ .inputrc<\/b>:<\/p>\n<pre><code class=\"plaintext\">set enable-bracketed-paste on<\/code><\/pre>\n<p>\nDin p\u0103cate, site-ul de testare Horn arat\u0103, de asemenea, cum s\u0103 ocoli\u021bi aceast\u0103 protec\u021bie prin auto-formatizarea textului \u0219i a \u00eencheia prematur aplicarea modului Bracketed. Acest lucru func\u021bioneaz\u0103 pentru c\u0103 unele terminale filtreaz\u0103 incorect secven\u021bele escape \u00eenainte de a ad\u0103uga propriile lor. De exemplu, \u00een cazul meu, nu am reu\u0219it s\u0103 finalizez cu succes testele Konsole, chiar \u0219i av\u00e2nd \u00een vedere configura\u021bia corect\u0103. <b>.inputrc<\/b> fi\u0219ier. Aceasta \u00eenseamn\u0103 c\u0103 pute\u021bi suferi daune ale configura\u021biei sistemului din cauza unei aplica\u021bii neacceptate sau a unei consol\u0103 configurate incorect. Acest lucru este deosebit de periculos atunci c\u00e2nd v\u0103 conecta\u021bi la servere remote, unde o configurare atent\u0103 este mai rar \u00eent\u00e2lnit\u0103, mai ales dac\u0103 ave\u021bi multe dintre aceste ma\u0219ini remote.<\/p>\n<p>O solu\u021bie bun\u0103 pentru aceast\u0103 problem\u0103 este pluginul de confirmare a inser\u021biei pentru terminal <b>urxvt<\/b>, care pur \u0219i simplu solicit\u0103 permisiunea de a insera orice text care con\u021bine noi linii. Nu am g\u0103sit o variant\u0103 mai sigur\u0103 pentru atacul textului descris de Horn.<\/p>\n<h4>Tab-uri \u0219i profilu<\/h4>\n<p>\nO func\u021bie popular\u0103 \u00een acest moment este suportul pentru interfa\u021ba cu tab-uri, pe care o vom defini ca o fereastr\u0103 de terminal care con\u021bine mai multe terminale. Pentru diferite terminale, aceast\u0103 func\u021bie difer\u0103, \u0219i de\u0219i terminalele tradi\u021bionale de tip xterm nici m\u0103car nu suport\u0103 tab-uri, incarn\u0103rile moderne ale terminalului, cum ar fi Xfce Terminal, GNOME Terminal \u0219i Konsole, au aceast\u0103 func\u021bie. De asemenea, urxvt are suport pentru tab-uri, dar doar cu condi\u021bia utiliz\u0103rii unui plugin. \u00cens\u0103, din perspectiva suportului pentru tab-uri, Terminator este liderul incontestabil: nu numai c\u0103 suport\u0103 tab-uri, dar poate de asemenea plasa terminalele \u00eentr-o ordine aleatorie (vezi imaginea de mai jos).<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a emulatorilor de terminal\" src=\"\/wp-content\/uploads\/2019\/08\/5ac2cdbdd969420cd7c19597d20c8c35.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO alt\u0103 caracteristic\u0103 a Terminator este posibilitatea de a \u201egrupa\u201d aceste tab-uri \u00eempreun\u0103 \u0219i de a trimite acelea\u0219i ap\u0103s\u0103ri de taste c\u0103tre mai multe terminale simultan, oferind un instrument simplu pentru a efectua opera\u021biuni \u00een mas\u0103 pe mai multe servere simultan. O func\u021bie similar\u0103 este implementat\u0103 \u0219i \u00een Konsole. Pentru a folosi aceast\u0103 func\u021bie \u00een alte terminale, este necesar s\u0103 utiliza\u021bi software ter\u021b, cum ar fi <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> sau <noindex><a rel=\"nofollow\" href=\"https:\/\/tmux.github.io\/\">, demonul<\/a><\/noindex>.<\/p>\n<p>\u00cen special, taburile func\u021bioneaz\u0103 bine \u00eempreun\u0103 cu profilele: de exemplu, pute\u021bi avea o tab pentru e-mail, alta pentru chat \u0219i a\u0219a mai departe. Acest lucru este bine sus\u021binut de terminalul Konsole \u0219i GNOME Terminal. Ambele permit fiec\u0103rei tab s\u0103 porneasc\u0103 automat propriul profil. Terminator suport\u0103 de asemenea profile, dar nu am reu\u0219it s\u0103 g\u0103sesc o modalitate de a lansa automat anumite programe c\u00e2nd se deschide o tab specific\u0103. Alte terminale nu au deloc no\u021biunea de \u201eprofil\u201d.<\/p>\n<h4>Volan<\/h4>\n<p>\nUltimul lucru pe care \u00eel voi analiza \u00een prima parte a acestui articol este aspectul terminalelor. De exemplu, GNOME, Xfce \u0219i urxvt suport\u0103 transparen\u021ba, dar recent au renun\u021bat la suportul pentru imagini de fundal, ceea ce a determinat unii utilizatori s\u0103 treac\u0103 la un terminal. <noindex><a rel=\"nofollow\" href=\"https:\/\/gnunn1.github.io\/tilix-web\/\">Tilix<\/a><\/noindex>. Personal, m\u0103 mul\u021bumesc \u0219i simplu. <b>Xresources<\/b>, care stabile\u0219te setul de culori de baz\u0103 pentru fundal pentru urxvt. Cu toate acestea, temele de culori personalizate pot crea \u0219i probleme. De exemplu, <noindex><a rel=\"nofollow\" href=\"http:\/\/ethanschoonover.com\/solarized\">Solarized<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/altercation\/solarized\/issues\/220\">nu func\u021bioneaz\u0103<\/a><\/noindex> cu aplica\u021biile <noindex><a rel=\"nofollow\" href=\"http:\/\/hisham.hm\/htop\/\">htop<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"http:\/\/iptraf.seul.org\/\">IPTraf<\/a><\/noindex>, deoarece ele utilizeaz\u0103 deja propriile sale culori.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/VT100\">Terminalul original VT100<\/a><\/noindex> nu suporta culori, iar cele moderne sunt adesea limitate la o palet\u0103 de 256 de culori. Pentru utilizatorii avansa\u021bi, care \u00ee\u0219i personalizeaz\u0103 terminalele, cererile shell-ului sau liniile de stare \u00een moduri complicate pot deveni o limitare nepl\u0103cut\u0103. <noindex><a rel=\"nofollow\" href=\"https:\/\/gist.github.com\/XVilka\/8346728\">Gist<\/a><\/noindex> urm\u0103re\u0219te ce terminale au suport pentru \u201eTrue Color\u201d. Testele mele confirm\u0103 c\u0103 st, Alacritty \u0219i terminalele bazate pe VTE suport\u0103 excelent True Color. Alte terminale se descurc\u0103 mai pu\u021bin bine \u0219i de fapt nu afi\u0219eaz\u0103 nici m\u0103car 256 de culori. Mai jos pute\u021bi vedea diferen\u021ba dintre suportul True Color \u00een terminalele GNOME, st \u0219i xterm, care se descurc\u0103 destul de bine cu aceast\u0103 sarcin\u0103 folosind paleta sa de 256 de culori, \u0219i urxvt, care nu doar c\u0103 nu trece testul, dar arat\u0103 chiar \u0219i anumite simboluri care clipesc \u00een locul lor.<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a emulatorilor de terminal\" src=\"\/wp-content\/uploads\/2019\/08\/bc6ceac84a1918b9bfa14a5cadd28746.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUnele terminale analizeaz\u0103, de asemenea, textul pentru \u0219abloane URL, pentru a face linkurile clicabile. Acest lucru se aplic\u0103 tuturor terminalelor derivate din VTE, \u00een timp ce urxvt necesit\u0103 un modul plug-in special care s\u0103 transforme adresele URL prin clic sau printr-o combina\u021bie de taste. Alte terminale pe care le-am testat afi\u0219eaz\u0103 adresele URL \u00een alte moduri.<\/p>\n<p>\u00cen sf\u00e2r\u0219it, noul trend al terminalelor este op\u021bionalitatea bufferului de derulare. De exemplu, \u00een st nu exist\u0103 buffer de derulare; se presupune c\u0103 utilizatorul va folosi un multiplexor de terminal, cum ar fi tmux \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gnu.org\/software\/screen\/\">GNU Screen<\/a><\/noindex>.<\/p>\n<p>\u00cen Alacritty, de asemenea, lipsesc buffer-ele de scroll invers, dar <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jwilm\/alacritty\/issues\/124\">\u00een cur\u00e2nd se va ad\u0103uga<\/a><\/noindex> sus\u021binerea acestuia datorit\u0103 \"feedback-ului extins\" pe aceast\u0103 tem\u0103 din partea utilizatorilor. \u00cen afar\u0103 de aceste excep\u021bii, fiecare terminal pe care l-am verificat, pe care am reu\u0219it s\u0103-l g\u0103sesc, suport\u0103 derularea invers\u0103.<\/p>\n<h4>Concluzii intermediare<\/h4>\n<p>\n\u00cen partea a doua a materialului (<i>\u00een original au fost dou\u0103 articole diferite, \u2014 nota editorului.<\/i>) vom compara performan\u021ba, utilizarea memoriei \u0219i \u00eent\u00e2rzierea. Dar vedem deja c\u0103 unele dintre terminalele examinate au deficien\u021be serioase. De exemplu, utilizatorii care lucreaz\u0103 regulat cu scripturi RTL pot observa mlterm \u0219i pterm, deoarece acestea fac fa\u021b\u0103 mai bine unor astfel de sarcini. Konsole s-a dovedit de asemenea a fi performant. Utilizatorii care nu lucreaz\u0103 cu scripturi RTL pot alege altceva.<\/p>\n<p>Din punct de vedere al protec\u021biei \u00eempotriva inser\u021biei de coduri d\u0103un\u0103toare, urxvt se distinge datorit\u0103 implement\u0103rii sale speciale de protec\u021bie \u00eempotriva acestui tip de atacuri, pe care o consider \u00een mod cert convenabil\u0103. Cei care caut\u0103 diverse func\u021bii avansate ar trebui s\u0103 se uite la Konsole. \u00cen cele din urm\u0103, merit\u0103 men\u021bionat c\u0103 VTE este o baz\u0103 excelent\u0103 pentru terminale, care garanteaz\u0103 suport pentru culori, recunoa\u0219terea URL-urilor \u0219i a\u0219a mai departe. La prima vedere, terminalul implicit livrat cu mediul t\u0103u preferat ar putea s\u0103 \u00eendeplineasc\u0103 toate cerin\u021bele, dar s\u0103 l\u0103s\u0103m aceast\u0103 \u00eentrebare deschis\u0103 p\u00e2n\u0103 c\u00e2nd ne ocup\u0103m de performan\u021b\u0103.<\/p>\n<p><i><\/p>\n<h4>Continu\u0103m discu\u021bia<\/h4>\n<p><\/i><br \/>\n\u00cen general, performan\u021ba terminalelor poate p\u0103rea o problem\u0103 exagerat\u0103, totu\u0219i, a\u0219a cum s-a dovedit, unele dintre ele demonstreaz\u0103 o \u00eent\u00e2rziere surprinz\u0103tor de mare pentru un software de un asemenea tip fundamental. De asemenea, nu vom analiza ceea ce se nume\u0219te \u00een mod tradi\u021bional \u201evitez\u0103\u201d (de fapt, este vorba despre viteza de derulare) \u0219i consumul de memorie al terminalului (av\u00e2nd \u00een vedere c\u0103 ast\u0103zi acest lucru nu mai este at\u00e2t de critic ca \u00een trecut).<\/p>\n<h4>\u00cent\u00e2rziere<\/h4>\n<p>\nDup\u0103 o cercetare am\u0103nun\u021bit\u0103 a performan\u021bei terminalelor, am ajuns la concluzia c\u0103 cel mai important parametru \u00een acest sens este dimensiunea \u00eent\u00e2rzierei (ping-ului). \u00cen articolul meu <noindex><a rel=\"nofollow\" href=\"https:\/\/pavelfatin.com\/typing-with-pleasure\/\">\u201eTip\u0103rim cu pl\u0103cere\u201c<\/a><\/noindex> Pavel Fatin a analizat \u00eent\u00e2rzierile diverselor editoare de text \u0219i a sugerat c\u0103 terminalele pot func\u021biona, \u00een acest caz, mai lent dec\u00e2t cele mai rapide editoare de text. Aceast\u0103 sugestie m-a condus, \u00een cele din urm\u0103, s\u0103 lansez propriile teste \u0219i s\u0103 scriu acest articol.<\/p>\n<p>Dar ce este o \u00eent\u00e2rziere \u0219i de ce este at\u00e2t de important\u0103? \u00cen articolul s\u0103u, Fatin a definit-o ca \u201e\u00eent\u00e2rzierea dintre ap\u0103sarea unei taste \u0219i actualizarea corespunz\u0103toare a ecranului\u201d \u0219i a citat <noindex><a rel=\"nofollow\" href=\"https:\/\/books.google.com\/books\/about\/Handbook_of_Human_Computer_Interaction.html?id=WuQbERgXR10C&amp;redir_esc=y\">\u201eGhidul interac\u021biunii om-computer\u201d<\/a><\/noindex>, \u00een care se spune: \u201e\u00cent\u00e2rzierea \u00een feedback-ul vizual pe ecranul computerului are un impact semnificativ asupra comportamentului operatorului \u0219i satisfac\u021biei sale\u201d.<\/p>\n<p>Fatin explic\u0103 faptul c\u0103 un astfel de ping are consecin\u021be mai profunde dec\u00e2t simpla satisfac\u021bie: \u201etastarea devine mai lent\u0103, se produc mai multe erori, iar tensiunea ocular\u0103 \u0219i muscular\u0103 cre\u0219te\u201d. Cu alte cuvinte, o \u00eent\u00e2rziere mai mare poate duce la gre\u0219eli de tipar \u0219i la o calitate mai sc\u0103zut\u0103 a codului, deoarece genereaz\u0103 o sarcin\u0103 cognitiv\u0103 suplimentar\u0103 pentru creier. Dar, mai grav, ping-ul \u201ecre\u0219te tensiunea ocular\u0103 \u0219i muscular\u0103\u201d, ceea ce sugereaz\u0103, evident, <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Repetitive_strain_injury\">dezvoltarea accident\u0103rilor profesionale<\/a><\/noindex> \u00een viitor (<i>aparent, autorul se refer\u0103 la problemele cu mu\u0219chii oculari, spatele, m\u00e2inile \u0219i, bine\u00een\u021beles, vederea - n.r.<\/i>) din cauza tensiunii repetitive.<\/p>\n<p>Unele dintre aceste efecte sunt cunoscute de mult timp, iar rezultatele <noindex><a rel=\"nofollow\" href=\"https:\/\/doi.org\/10.1080\/00140137608931531\">cercet\u0103ri<\/a><\/noindex>, publicate \u00eenc\u0103 din 1976 \u00een revista Ergonomics, arat\u0103 c\u0103 o \u00eent\u00e2rziere de 100 de milisecunde \u201e\u00eempiedic\u0103 semnificativ viteza de tastare\u201d. Recent, a fost introdus \u00een ghidul utilizatorului GNOME <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.gnome.org\/hig-book\/3.12\/feedback-response-times.html.en\">un timp de r\u0103spuns acceptabil<\/a><\/noindex> de 10 milisecunde \u0219i, dac\u0103 mergem mai departe, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=vOvQCPLkPt4\">Microsoft Research<\/a><\/noindex> arat\u0103 c\u0103 idealul este de 1 milisecund\u0103.<\/p>\n<p>Fatin \u0219i-a desf\u0103\u0219urat testele pe editoare de text; el a creat un instrument portabil numit <noindex><a rel=\"nofollow\" href=\"https:\/\/pavelfatin.com\/typometer\">Typometer<\/a><\/noindex>, pe care l-am folosit pentru a verifica pingul \u00een emulatorul de terminale. Re\u021bine\u021bi c\u0103 testul a fost efectuat \u00een modul de simulare: \u00een realitate, trebuie s\u0103 lu\u0103m \u00een considerare \u0219i \u00eent\u00e2rzierea de intrare (tastatur\u0103, controler USB etc.) \u0219i de ie\u0219ire (bufferul pl\u0103cii video, monitor). Conform lui Fatin, \u00een configura\u021bii tipice, aceasta este de aproximativ 20 ms. Cu echipamente de gaming, se poate ajunge la un indicator de doar 3 milisecunde. Av\u00e2nd deja astfel de echipamente rapide, aplica\u021bia nu ar trebui s\u0103 introduc\u0103 \u0219i ea o \u00eent\u00e2rziere. Scopul lui Fatin este s\u0103 reduc\u0103 \u00eent\u00e2rzierea aplica\u021biei la 1 milisecund\u0103 sau chiar s\u0103 ajung\u0103 la un set f\u0103r\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.jetbrains.com\/idea\/2015\/08\/experimental-zero-latency-typing-in-intellij-idea-15-eap\/\">\u00eent\u00e2rziere m\u0103surabil\u0103<\/a><\/noindex>, ca \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/confluence.jetbrains.com\/display\/IDEADEV\/IDEA+15+EAP\">IntelliJ IDEA 15<\/a><\/noindex>.<\/p>\n<p>Iat\u0103 rezultatele m\u0103sur\u0103torilor mele, precum \u0219i unele rezultate ale lui Fatin pentru a ar\u0103ta c\u0103 experimentul meu este \u00een concordan\u021b\u0103 cu testele sale:<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a emulatorilor de terminal\" src=\"\/wp-content\/uploads\/2019\/08\/d7ae46c8309e9cfd517164d5fed093f7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrimul lucru care m-a surprins a fost timpul de r\u0103spuns mai bun al programelor mai vechi, cum ar fi xterm \u0219i mlterm. Cu o \u00eent\u00e2rziere de \u00eenregistrare mai mare (2,4 ms), acestea au ar\u0103tat rezultate mai bune dec\u00e2t cel mai rapid terminal modern (10,6 ms pentru st). Niciun terminal modern nu scade sub pragul de 10 milisecunde. \u00cen special, Alacritty nu corespunde cerin\u021belor de \u201ecel mai rapid dintre emulatorii de terminal care exist\u0103\u201d, de\u0219i rezultatele sale s-au \u00eembun\u0103t\u0103\u021bit de la prima verificare din 2017. De fapt, autorii proiectului <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jwilm\/alacritty\/issues\/673\">sunt con\u0219tien\u021bi de situa\u021bie<\/a><\/noindex> \u0219i lucreaz\u0103 la \u00eembun\u0103t\u0103\u021birea afi\u0219\u0103rii. De asemenea, este important de men\u021bionat c\u0103 Vim, care folose\u0219te GTK3, este cu mult mai lent dec\u00e2t omologul s\u0103u GTK2. Din aceasta se poate concluziona c\u0103 GTK3 introduce o \u00eent\u00e2rziere suplimentar\u0103, iar acest lucru se reflect\u0103 asupra tuturor celorlalte terminale care \u00eel utilizeaz\u0103 (Terminator, Xfce4 Terminal \u0219i GNOME Terminal).<\/p>\n<p>Totu\u0219i, pentru ochi, diferen\u021bele pot fi neobservabile. A\u0219a cum explic\u0103 Fatin: \u201enu este necesar s\u0103 con\u0219tientizezi prezen\u021ba unei \u00eent\u00e2rziere pentru ca aceasta s\u0103 aib\u0103 un efect asupra ta\u201d. Fatin de asemenea avertizeaz\u0103 asupra abaterii standard: \u201eorice varia\u021bii \u00een durata \u00eent\u00e2rzierii (tremur) creeaz\u0103 o sarcin\u0103 suplimentar\u0103 din cauza imprevizibilit\u0103\u021bii lor\u201d.<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a emulatorilor de terminal\" src=\"\/wp-content\/uploads\/2019\/08\/e128a7e6c32a1517c98ffc612fe09128.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGraficul de mai sus a fost ob\u021binut pe un sistem Debian 9 (stretch) curat, cu <noindex><a rel=\"nofollow\" href=\"https:\/\/i3wm.org\/\">managerul de feronerie i3<\/a><\/noindex>. Aceast\u0103 mediu ofer\u0103 cele mai bune rezultate \u00een teste de laten\u021b\u0103. Se pare c\u0103 GNOME introduce un ping suplimentar de 20 ms pentru toate m\u0103sur\u0103torile. O explica\u021bie posibil\u0103 pentru acest lucru este existen\u021ba programelor care proceseaz\u0103 sincronizat evenimentele de intrare. Fatin d\u0103 ca exemplu \u00een acest caz <noindex><a rel=\"nofollow\" href=\"http:\/\/www.workrave.org\/\">Workrave<\/a><\/noindex>, care adaug\u0103 \u00eent\u00e2rziere proces\u00e2nd toate evenimentele de intrare sincronizat. Implicit, GNOME este dotat de asemenea cu un manager de feronerie <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mutter_(software)\">Mutter<\/a><\/noindex>, care creeaz\u0103 un nivel suplimentar de buffering, ceea ce influen\u021beaz\u0103 ping-ul \u0219i adaug\u0103 un minim de 8 milisecunde \u00eent\u00e2rziere.<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a emulatorilor de terminal\" src=\"\/wp-content\/uploads\/2019\/08\/3585d1edf4cee214d7a53858943b1845.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Viteza de derulare<\/h4>\n<p>\nUrm\u0103torul test este o verificare tradi\u021bional\u0103 a \u201evitezei\u201d sau a \u201el\u0103\u021bimii de band\u0103\u201d, care m\u0103soar\u0103 c\u00e2t de repede terminalul poate derula pagina, afi\u0219\u00e2nd o cantitate mare de text pe ecran. Mec\u00e2nica testului variaz\u0103; testul original consta \u00een generarea acelea\u0219i linii de text folosind comanda seq. Alte teste includ verificarea lui Thomas E. Dick (asociat cu xterm), \u00een cadrul c\u0103ruia se descarc\u0103 repetat <noindex><a rel=\"nofollow\" href=\"https:\/\/invisible-island.net\/xterm\/xterm.faq.html#scroll_speed\">fi\u0219ierul terminfo.src<\/a><\/noindex>. \u00centr-o alt\u0103 revizuire a performan\u021bei terminalelor <noindex><a rel=\"nofollow\" href=\"https:\/\/danluu.com\/term-latency\/\">Den Luu<\/a><\/noindex> folose\u0219te o linie de byte aleatorii \u00een codificarea base32, care este afi\u0219at\u0103 \u00een terminal folosind cat. Luu consider\u0103 c\u0103 un astfel de test este \u201eat\u00e2t de inutil pe c\u00e2t se poate imagina\u201d \u0219i propune utilizarea \u00een schimb a r\u0103spunsului terminalului ca principal indicator. Dick de asemenea nume\u0219te testul s\u0103u \u00een\u0219el\u0103tor. Totu\u0219i, ambii autori recunosc c\u0103 l\u0103\u021bimea de band\u0103 a feronerie terminalului poate fi o problem\u0103. Luu a descoperit c\u0103 Emacs Eshell se blocheaz\u0103 la afi\u0219area fi\u0219ierelor mari, iar Dick a optimizat terminalul pentru a elimina lentorile vizuale din xterm. Prin urmare, \u00een acest test exist\u0103 \u00eenc\u0103 un anumit sens, dar deoarece procesul de redare variaz\u0103 semnificativ de la un terminal la altul, poate fi folosit \u0219i ca un component de testare pentru verificarea altor parametri.<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a emulatorilor de terminal\" src=\"\/wp-content\/uploads\/2019\/08\/3231877fdcd7725c3248fb393185ece4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAici putem observa c\u0103 rxvt \u0219i st \u00ee\u0219i iau avans fa\u021b\u0103 de concuren\u021bi, urmat de mult mai noul Alacritty, dezvoltat cu accent pe performan\u021b\u0103. Apoi urmeaz\u0103 Xfce (familia VTE) \u0219i Konsole, care func\u021bioneaz\u0103 aproape de dou\u0103 ori mai repede. Ultimul este xterm cu un indice de cinci ori mai lent dec\u00e2t rxvt. \u00cen timpul testului, xterm a avut, de asemenea, un tremur puternic, textul care trecea fiind greu de distins, chiar dac\u0103 era aceea\u0219i linie. Konsole s-a dovedit rapid, dar a avut momente de \u201e\u0219mecherie\u201d: display-ul se bloca din c\u00e2nd \u00een c\u00e2nd, ar\u0103t\u00e2nd textul par\u021bial sau nereprezent\u00e2ndu-l deloc. Alte terminale au afi\u0219at liniile clar, inclusiv st, Alacritty \u0219i rxvt.<\/p>\n<p>Diki explic\u0103 c\u0103 diferen\u021bele de performan\u021b\u0103 sunt legate de designul bufetelor de derulare din diferitele terminale. \u00cen special, el acuz\u0103 rxvt \u0219i alte terminale c\u0103 \u201enu respect\u0103 reguli generale\u201d:<\/p>\n<blockquote><p>\u201eSpre deosebire de xterm, rxvt nu a \u00eencercat s\u0103 afi\u0219eze toate actualiz\u0103rile. Dac\u0103 r\u0103m\u00e2ne \u00een urm\u0103, el va renun\u021ba la unele actualiz\u0103ri pentru a recupera \u00eent\u00e2rzierile. Acest lucru a avut un impact mai mare asupra vitezei percepute de derulare dec\u00e2t asupra organiz\u0103rii memoriei interne. Un dezavantaj a fost c\u0103 anima\u021bia ASCII a fost oarecum inexact\u0103.\u201d<\/p><\/blockquote>\n<p>\nPentru a corecta aceast\u0103 aparent\u0103 lentitudine a xterm, Diki sugereaz\u0103 utilizarea resursei <noindex><a rel=\"nofollow\" href=\"https:\/\/invisible-island.net\/xterm\/manpage\/xterm.html#VT100-Widget-Resources:fastScroll\">fastScroll<\/a><\/noindex>, permi\u021b\u00e2nd xterm s\u0103 elimine unele actualiz\u0103ri ale ecranului pentru a nu r\u0103m\u00e2ne \u00een urm\u0103 fa\u021b\u0103 de flux. Testele mele confirm\u0103 c\u0103 fastScroll \u00eembun\u0103t\u0103\u021be\u0219te performan\u021ba \u0219i trage xterm pe acela\u0219i nivel cu rxvt. Acesta este, totu\u0219i, un workaround destul de grosier, a\u0219a cum explic\u0103 Diki: \u201euneori xterm \u2014 la fel ca \u0219i konsole \u2014 pare s\u0103 se opreasc\u0103, a\u0219tept\u00e2nd un nou set de actualiz\u0103ri ale ecranului dup\u0103 ce unele dintre acestea au fost eliminate\u201d. \u00cen aceast\u0103 privin\u021b\u0103, pare c\u0103 alte terminale au g\u0103sit cel mai bun compromis \u00eentre vitez\u0103 \u0219i integritatea display-ului.<\/p>\n<h4>Consumul de resurse<\/h4>\n<p>\nIndiferent de oportunitatea de a lua \u00een considerare viteza de derulare ca un indicator de performan\u021b\u0103, acest test permite simularea \u00eenc\u0103rc\u0103rilor pe terminale, ceea ce, la r\u00e2ndul s\u0103u, ne permite s\u0103 m\u0103sur\u0103m alte parametrii, cum ar fi utilizarea memoriei sau a discului. Metricile au fost ob\u021binute prin rularea testului specificat <b>seq<\/b> sub monitorizarea procesului Python. Acesta a colectat datele contorului <noindex><a rel=\"nofollow\" href=\"http:\/\/man7.org\/linux\/man-pages\/man2\/getrusage.2.html\">getrusage ()<\/a><\/noindex> pentru <b>ru_maxrss<\/b>, suma <b>ru_oublock<\/b> \u0219i <b>ru_inblock<\/b> \u0219i un temporizator simplu de timp.<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a emulatorilor de terminal\" src=\"\/wp-content\/uploads\/2019\/08\/df378c145a559ed4aad98fa70b58c72c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen acest test, ST ocup\u0103 primul loc cu cel mai mic consum mediu de memorie, de 8 MB, ceea ce nu este surprinz\u0103tor, av\u00e2nd \u00een vedere c\u0103 ideea principal\u0103 a proiectului este simplitatea. Urm\u0103toarele sunt mlterm, xterm \u0219i rxvt, care consum\u0103 aproximativ 12 MB. Un rezultat notabil este Alacritty, care necesit\u0103 30 MB pentru func\u021bionare. Apoi urmeaz\u0103 terminalele din familia VTE, cu consumuri \u00eentre 40 \u0219i 60 MB, ceea ce este destul de mult. Acest consum poate fi explicat prin faptul c\u0103 aceste terminale utilizeaz\u0103 biblioteci de nivel mai \u00eenalt, precum GTK. Konsole se afl\u0103 pe ultimul loc, cu un consum uria\u0219 de 65 MB de memorie \u00een timpul testelor, de\u0219i acest lucru poate fi justificat de gama sa foarte larg\u0103 de func\u021bionalit\u0103\u021bi.<\/p>\n<p>Comparativ cu rezultatele anterioare, ob\u021binute acum zece ani, toate programele au \u00eenceput s\u0103 consume semnificativ mai mult\u0103 memorie. Acum, Xterm necesit\u0103 15 MB doar pentru a porni, fa\u021b\u0103 de 4 MB anterior. O cre\u0219tere similar\u0103 a consumului se observ\u0103 \u0219i la rxvt, care acum necesit\u0103 din start 16 MB. Terminalul Xfce consum\u0103 34 MB, de trei ori mai mult dec\u00e2t \u00eenainte, \u00een timp ce GNOME Terminal necesit\u0103 doar 20 MB. Desigur, toate testele anterioare au fost efectuate pe arhitecturi de 32 de bi\u021bi. La LCA 2012, Rusty Russell <noindex><a rel=\"nofollow\" href=\"https:\/\/lwn.net\/Articles\/477155\/\">a spus<\/a><\/noindex>, sunt multe motive subtile care pot explica cre\u0219terea consumului de memorie. Cu toate acestea, tr\u0103im acum \u00eentr-o er\u0103 \u00een care avem gigabytes \u00eentregi de memorie, a\u0219a c\u0103 ne putem descurca cumva.<\/p>\n<p>Cu toate acestea, nu pot sc\u0103pa de senza\u021bia c\u0103 alocarea unei cantit\u0103\u021bi mai mari de memorie pentru un software at\u00e2t de fundamental, precum terminalul, este o risip\u0103 de resurse. Aceste programe ar trebui s\u0103 fie cele mai mici dintre cele mici, av\u00e2nd capacitatea de a func\u021biona pe orice \"cutie\", chiar \u0219i pe o cutie de pantofi, dac\u0103 vreodat\u0103 va fi necesar s\u0103 le dot\u0103m cu sisteme Linux (\u0219i \u0219ti\u021bi c\u0103 a\u0219a va fi). Dar cu aceste cifre, utilizarea memoriei va deveni o problem\u0103 \u00een viitor \u00een orice mediu la deschiderea mai multor terminale, cu excep\u021bia cazurilor cu cele mai u\u0219oare \u0219i limitate func\u021bionalit\u0103\u021bi. Pentru a compensa acest lucru, GNOME Terminal, Konsole, urxvt, Terminator \u0219i Xfce Terminal au un mod Daemon, care permite gestionarea mai multor terminale printr-un singur proces, limit\u00e2nd astfel consumul de memorie.<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a emulatorilor de terminal\" src=\"\/wp-content\/uploads\/2019\/08\/65ade9cc81284f24f0c44322eec73ef0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen timpul testelor mele, am ajuns la un rezultat nea\u0219teptat \u00een ceea ce prive\u0219te citirea \u0219i scrierea pe disc: m\u0103 a\u0219teptam s\u0103 nu v\u0103d nimic aici, dar s-a dovedit c\u0103 unele terminale scriu cele mai voluminoase date pe disc. Astfel, biblioteca VTE stocheaz\u0103, de fapt, un buffer de derulare pe disc (aceast\u0103 caracteristic\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/bugzilla.gnome.org\/show_bug.cgi?id=631685\">a fost observat\u0103 \u00eenc\u0103 din 2010<\/a><\/noindex>, \u0219i acesta se \u00eent\u00e2mpl\u0103 \u0219i acum). Dar, spre deosebire de vechile implement\u0103ri, acum, cel pu\u021bin, aceste date sunt criptate folosind AES256 GCM (<noindex><a rel=\"nofollow\" href=\"https:\/\/bugzilla.gnome.org\/show_bug.cgi?id=664611#c48\">\u00eencep\u00e2nd cu versiunea 0.39.2<\/a><\/noindex>). \u00cens\u0103 apare o \u00eentrebare legitim\u0103, ce este at\u00e2t de special \u00een biblioteca VTE, \u00eenc\u00e2t necesit\u0103 o abordare at\u00e2t de neconven\u021bional\u0103 \u00een implementare\u2026<\/p>\n<h4>Concluzie<\/h4>\n<p>\n\u00cen prima parte a articolului, am descoperit c\u0103 terminalele bazate pe VTE au un set bun de func\u021bii, dar acum vedem c\u0103 acest lucru se leag\u0103 de anumite costuri pentru asigurarea performan\u021bei lor. \u00cen prezent, memoria nu este o problem\u0103, deoarece toate terminalele VTE pot fi gestionate printr-un proces Daemon care le limiteaz\u0103 apetitul. Cu toate acestea, vechile sisteme, care au constr\u00e2ngeri fizice privind cantitatea de memorie RAM \u0219i buffer-ul nucleei, pot avea \u00een continuare nevoie de versiuni anterioare ale terminalelor, deoarece acestea consum\u0103 semnificativ mai pu\u021bine resurse. De\u0219i terminalele VTE s-au comportat bine \u00een teste de l\u0103\u021bime de band\u0103 (derulare), \u00eent\u00e2rzierea afi\u0219\u0103rii datelor pe ecranul este peste limita stabilit\u0103 \u00een manualul utilizatorului GNOME. Probabil c\u0103 dezvoltatorii VTE ar trebui s\u0103 ia \u00een considerare acest aspect. Av\u00e2nd \u00een vedere c\u0103, chiar \u0219i pentru utilizatorii \u00eencep\u0103tori de Linux, \u00eent\u00e2lnirea cu terminalul este inevitabil\u0103, ei ar putea face asta mai prietenos \u00een raport cu utilizatorul. Pentru geekii experimenta\u021bi, trecerea de la terminalul implicit ar putea \u00eensemna chiar o reducere a oboselii vizuale \u0219i posibilitatea de a evita traumatismele profesionale \u0219i bolile \u00een viitor din cauza sesiunilor de lucru prelungite. Din p\u0103cate, doar vechile xterm \u0219i mlterm ne conduc c\u0103tre pragul magic de ping de 10 milisecunde, ceea ce pentru mul\u021bi este inacceptabil.<\/p>\n<p>M\u0103sur\u0103torile de control au ar\u0103tat, de asemenea, c\u0103, datorit\u0103 dezvolt\u0103rii mediilor grafice Linux, dezvoltatorii au fost nevoi\u021bi s\u0103 fac\u0103 o serie de compromisuri. Unora dintre utilizatori le-ar trebui s\u0103 ia \u00een considerare gestionarii de feronerie standard, deoarece ei asigur\u0103 o reducere semnificativ\u0103 a ping-ului. Din p\u0103cate, pentru Wayland nu am reu\u0219it s\u0103 m\u0103sor \u00eent\u00e2rzierea: programul Typometer pe care l-am folosit a fost creat pentru a preveni exact ceea ce Wayland este destinat - spionajul asupra altor feronierii. Sper c\u0103 compozitul Wayland va performa mai bine dec\u00e2t X.org \u0219i, de asemenea, sper c\u0103 \u00een viitor cineva va g\u0103si o modalitate de a evalua nivelul \u00eent\u00e2rzierei \u00een acest mediu.<br \/>\n<br \/>Sursa: <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.2.1 - 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\/ro\/blog\/administrirovanie\/obzor-emulyatorov-terminala\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Recenzia emulatoarelor de terminal | ProHoster","description":"C\u00e2teva cuvinte din partea biroului nostru de traduceri: de obicei, toat\u0103 lumea tinde s\u0103 traduc\u0103 cele mai recente materiale \u0219i publica\u021bii, iar noi nu facem excep\u021bie. Dar terminalele nu sunt ceva ce se actualizeaz\u0103 s\u0103pt\u0103m\u00e2nal.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/obzor-emulyatorov-terminala","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/37222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=37222"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/37222\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/27911"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=37222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=37222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=37222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}