Crea il tuo text editor in C++23: setup e struttura del progetto
Prima parte della serie: costruiamo da zero un editor di testo da terminale in C++23, senza librerie esterne. Struttura a cartelle con header, Makefile e un main.cpp pulito.
Esplora tutti gli articoli, le guide e le serie su C++, sistemi operativi e rete.
Prima parte della serie: costruiamo da zero un editor di testo da terminale in C++23, senza librerie esterne. Struttura a cartelle con header, Makefile e un main.cpp pulito.
Disattiviamo l'eco e la modalità canonica del terminale usando termios, incapsulando tutto in una classe RAII in terminal/raw_mode.hpp.
Sequenze di escape VT100, buffer di output, dimensioni del terminale e la prima classe Editor con le tildi stile vim, divisa in header.
Decodifichiamo le sequenze di escape di frecce, Home, End e Page Up/Down in terminal/input.hpp e muoviamo il cursore dentro lo schermo.
Apriamo un file, lo memorizziamo come vettore di righe in editor/row.hpp, gestiamo tab, scrolling verticale e orizzontale e aggiungiamo la barra di stato.
Inserimento e cancellazione di caratteri, ritorno a capo, salvataggio su disco, barra dei messaggi, flag di modifica e prompt di input in editor.hpp.
Implementiamo la ricerca incrementale con Ctrl-F, riusando il prompt con callback: ricerca mentre scrivi, frecce per navigare i risultati, Esc per tornare indietro.
Ultima parte: highlight.hpp e syntax.hpp per colorare commenti, stringhe, numeri e parole chiave del C++, evidenziamo la ricerca e vediamo dove andare dopo.
Come funzionano polymorphic memory resources, memory_resource e monotonic_buffer_resource, quando sono utili e quali errori di lifetime evitare.
Un approccio esplicito agli errori in C++ moderno: come funziona std::expected, quando usarlo e come comporre operazioni che possono fallire.
Dalla socket bloccante a un event loop non bloccante: epoll, readiness, gestione parziale di send e recv, e limiti di un server didattico.
Come un programma C crea processi su Unix, perché fork non esegue un nuovo programma e come gestire correttamente i processi figli.
I meccanismi del kernel Linux dietro i container: isolamento dei processi, limiti delle risorse e perché Docker non è una macchina virtuale.
Dalla unit file ai restart policy: come eseguire un programma come servizio Linux, leggere i log e applicare le direttive di hardening senza rompere il servizio.