{"id":38,"date":"2016-06-01T13:58:47","date_gmt":"2016-06-01T11:58:47","guid":{"rendered":"http:\/\/www.hunggartorino.it\/ql\/?p=38"},"modified":"2016-05-13T14:57:12","modified_gmt":"2016-05-13T12:57:12","slug":"miacroemac-e-multi-edit","status":"publish","type":"post","link":"https:\/\/www.hunggartorino.it\/ql\/miacroemac-e-multi-edit\/","title":{"rendered":"MicroEMACS e multi edit"},"content":{"rendered":"<h1 style=\"text-align: justify;\">MicroEMACS e multi edit<\/h1>\n<p style=\"text-align: justify;\">MicroEMACS \u00e8 oggi sicuramente uno degli editor di testo piu&#8217; avanzati presenti sulla nostra piattaforma, la sua potenza e versatilit\u00e0 sono sicuramente le sue caratteristiche principali.<br \/>\nQuest&#8217;ultima in particolare rende difficile descrivere questo editor in poche righe perch\u00e9 parlare di un suo aspetto significa trascurarne immeritatamente gli altri.<br \/>\nPer questo motivo in passato ho provveduto a scrivere una serie di articoli, usciti nei passati numeri di QL Magazine, in cui per ogni articolo ne descrivevo una potenzialit\u00e0 o illustravo l&#8217;utilizzo di determinate opzioni.<br \/>\nQuesta volta vorrei parlarvi dell\u2019 editing contemporaneo di pi\u00f9 programmi e per farlo inizier\u00f2 descrivendo due &#8220;concetti&#8221; tipici di MicroEMACS, la finestra e lo schermo.<br \/>\nIn questo articolo user\u00f2 il termine &#8220;videata&#8221; per indicare quella che viene normalmente chiamata &#8220;finestra&#8221; in altri ambienti, ad esempio Windows, per non generare confusione con il concetto di finestra di MicroEMACS, che \u00e8 una cosa leggermente diversa.<\/p>\n<h1 style=\"text-align: justify;\">Lo schermo<\/h1>\n<p style=\"text-align: justify;\">In MicroEMACS si definisce &#8220;schermo&#8221; l&#8217;intera area editabile presente nel programma, quindi in pratica tutta la videata principale ad esclusione della barra di stato, dei men\u00f9, della barra del titolo e poche altre cosette.<br \/>\nCome sappiamo la videata di MicroEMACS \u00e8 ridimensionabile e quindi pu\u00f2 diventare molto grande, tanto per fare un esempio una videata a pieno schermo con una risoluzione 1024&#215;768 (\u00e8 consigliabile almeno un monitor 17 pollici) mette a disposizione un area editabile di circa 60 righe per 160 colonne (vado a memoria).<br \/>\nUn grande spazio quindi, che vedremo pi\u00f9 avanti come sfruttare al meglio.<br \/>\nPer ora aggiungiamo solo che posso avere a disposizione pi\u00f9 schermi, a ciascuno dei quali posso dare un nome mnemonico a mia scelta e che ho a disposizione un set di comandi per poter aprire\/chiudere\/scorrere questi schermi a mio piacimento usando appunto il nome mnemonico che ho impostato.<\/p>\n<h1 style=\"text-align: justify;\">La finestra<\/h1>\n<p style=\"text-align: justify;\">Ogni schermo \u00e8 divisibile in pi\u00f9 parti, chiamate finestre.<br \/>\nE&#8217; possibile associare ogni finestra ad un file diverso oppure per visualizzare parti differenti dello stesso file, oppure ancora delle soluzioni miste, non vi sono limitazioni.<br \/>\nAnche qui, come per gli schermi, ho a disposizione un set di comandi per manipolare a piacimento le mie finestre.<br \/>\nChiariti questi due concetti, con i quali il principiante spesso si confonde, vediamo come utilizzarli.<br \/>\nNon mi interessa in questa sede elencare una sbrodolata di comandi, questo \u00e8 un articolo e non un tutorial, mi interessa piuttosto comunicare dei concetti di utilizzo.<br \/>\nOvviamente tutto ci\u00f2 ha un qualche interesse nel momento in cui ho l&#8217;esigenza di editare pi\u00f9 file a tempo o passare rapidamente in zone differenti di un file molto lungo, o ancora entrambe le cose a tempo.<\/p>\n<h1 style=\"text-align: justify;\">Un semplice esempio.<\/h1>\n<p style=\"text-align: justify;\">Voglio riportare le modifiche fatte nel programma &#8220;PIPPO&#8221; anche nel programma &#8220;PLUTO&#8221; Apro quindi entrambi i programmi con MicroEMACS, a questo punto posso optare per diverse soluzioni:<\/p>\n<p style=\"text-align: justify;\">1. Posso scegliere ad esempio di avere due schermi differenti caricare un programma per ogni schermo e passare da un programma all&#8217;altro a seconda delle mie esigenze, tipico se dispongo di una risoluzione video modesta o se voglio lasciare parte dello schermo libero per altre attivit\u00e0.<\/p>\n<p style=\"text-align: justify;\">2. Posso decidere di avere un unico schermo e di dividerlo in due finestre, ognuna delle quali contenente un programma, soluzione comoda se dispongo di un monitor con un alta risoluzione.<\/p>\n<p style=\"text-align: justify;\">Come vedete MicroEMACS si pu\u00f2 adattare facilmente non soltanto alle vostre esigenze ma anche ai vostri gusti e al vostro modus operandi senza dover quindi imparare filosofie di utilizzo differenti ma semplicemente mutuarle da strumenti a voi gi\u00e0 noti.<\/p>\n<h1 style=\"text-align: justify;\">Un esempio complesso.<\/h1>\n<p style=\"text-align: justify;\">Un esempio complesso tipico \u00e8 quando devo modificare i parametri di passaggio tra un programma principale ed una serie di programmi secondari.<br \/>\nImmaginiamo di avere un programma &#8220;PAPERINO&#8221; che in due punti differenti dello stesso chiamer\u00e0 tre sottoprogrammi &#8220;QUI&#8221; &#8220;QUO&#8221; e &#8220;QUA&#8221; e di dover ad esempio aggiungere dei parametri di input.<br \/>\nMi sar\u00e0 molto comodo in questo caso avere tutti e quattro i programmi aperti, visualizzando le zone in cui dovr\u00f2 intervenire.<br \/>\nAvere per\u00f2 cinque finestre sullo stesso schermo pu\u00f2 creare aree di lavoro troppo piccole, limitare la visibilit\u00e0 del programma e rallentare il mio lavoro.<br \/>\nDefinir\u00f2 quindi uno schermo chiamato &#8220;MAIN&#8221; nel quale avr\u00f2 magari due finestre che visualizzano due parti differenti dello stesso file (i due punti che devo modificare).<br \/>\nIn seconda battuta definir\u00f2 un altro schermo, che chiamer\u00f2 &#8220;CALL&#8221;.<br \/>\nAll&#8217;interno di &#8220;CALL&#8221; definir\u00f2 tre finestre in cui inserir\u00f2 i tre programmi secondari.<br \/>\nIn questo modo posso sia cambiare schermo che passare da una finestra all&#8217;altra in maniera estremamente agevole, mantenendo al tempo stesso una buona visibilit\u00e0 su tutti i programmi e anche una certa struttura logica del mio lavoro, i programmi secondari sono infatti raggruppati nello stesso schermo e visto che probabilmente, fatta la modifica sul primo, posso riportare la stessa sugli altri due mi \u00e8 utile avere tutti e tre i punti sott&#8217;occhio.<br \/>\nLo stesso discorso vale per l&#8217;altro schermo dove i due punti di modifica del programma principale sono disponibili nello stesso schermo.<\/p>\n<h1 style=\"text-align: justify;\">Un occhio alle prestazioni.<\/h1>\n<p style=\"text-align: justify;\">Qualcuno potrebbe obiettare: &#8220;perch\u00e9 devo complicarmi la vita in questo modo assurdo? Apro un editor differente per ogni file ed il gioco \u00e8\u00a0fatto!&#8221;.<br \/>\nSicuramente \u00e8 vero, ma questa \u00e8 una soluzione prettamente da utente piuttosto che da sviluppatore.<br \/>\nIn altre parole \u00e8 una soluzione efficace ma non efficiente.<br \/>\nMi spiego meglio: ogni programma in esecuzione occupa notoriamente due aree di memoria, una per il codice, l&#8217;altra per i dati; se utilizziamo un editor multi file come MicorEMACS utilizziamo una sola area per il programma e un&#8217;area dati per ogni singolo file aperto, se invece lanciamo un editor differente per ogni file duplichiamo l&#8217;area dedicata al codice.<br \/>\nIl risultato visivo non cambia, la funzionalit\u00e0 \u00e8 la medesima ma l\u2019utilizzo delle risorse del nostro QL \u00e8 ben differente.<br \/>\nForse uno non si rende conto esattamente di quanto pesante sia quest&#8217;ultima soluzione finch\u00e9 non fa due calcoli, proviamo a farli assieme.<br \/>\nImmaginiamo per comodit\u00e0 di calcolo che l&#8217;ipotetico editor che sto utilizzando (non importa quale sia) occupi 50Kb e che i file da lui aperti siano tutti della stessa dimensione: 10 Kb.<br \/>\nNel caso dell&#8217;esempio semplice a due file avremo:<\/p>\n<p style=\"text-align: justify;\">50+10+10 = 70 kb utilizzati<\/p>\n<p style=\"text-align: justify;\">mentre nel caso multi editor avremo:<\/p>\n<p style=\"text-align: justify;\">50 + 10 + 50 + 10 = 120 Kb utilizzati<\/p>\n<p style=\"text-align: justify;\">una bella differenza!<br \/>\nAllo stesso modo nel caso dei 5 file aperti l&#8217;utilizzo della ram aumenta in modo esponenziale, avremo:<\/p>\n<p style=\"text-align: justify;\">50 + 10 + 10 + 10 + 10 + 10 = 100kb utilizzati<\/p>\n<p style=\"text-align: justify;\">contro i:<\/p>\n<p style=\"text-align: justify;\">50 + 10 + 50 + 10 + 50 + 10 + 50 + 10 + 50 + 10 = 300 kb!!!!<\/p>\n<p style=\"text-align: justify;\">Tenuto conto dei limiti di memoria del QL mi pare una scelta poco consigliabile, anche se ho memoria a sufficienza, rischio di &#8220;dimenticarmi&#8221; di essere quasi al limite delle mie risorse e di aprire qualche altra applicazione con il rischio di mandare in blocco la macchina e perdere tutto il mio lavoro.<br \/>\nLascio scegliere a voi.<\/p>\n","protected":false},"excerpt":{"rendered":"MicroEMACS e multi edit MicroEMACS \u00e8 oggi sicuramente uno degli editor di testo piu&#8217; avanzati presenti sulla nostra piattaforma, la sua potenza e \n<a class=\"moretag\" href=\"https:\/\/www.hunggartorino.it\/ql\/miacroemac-e-multi-edit\/\"> [..more...]<\/a>","protected":false},"author":1,"featured_media":137,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[37],"tags":[],"class_list":["post-38","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programmi"],"_links":{"self":[{"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/posts\/38","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/comments?post=38"}],"version-history":[{"count":7,"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/posts\/38\/revisions"}],"predecessor-version":[{"id":158,"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/posts\/38\/revisions\/158"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/media\/137"}],"wp:attachment":[{"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/media?parent=38"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/categories?post=38"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/tags?post=38"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}