Átok

Curses a neve a szoftver könyvtár , amely lehetővé teszi a fejlesztés a Unix a teljes képernyős környezetben szöveges módban , függetlenül a számítógép terminál használható, és minden típusú alkalmazásokat.

Ez származott a BSD forgalmazás Unix, amelyben azt használják vi szöveg szerkesztő , és a Rogue játék .

Az átkok felhasználásával a programozók szöveges mód alapján tervezhetnek alkalmazásokat, függetlenül az egyes terminálok sajátosságaitól. Az átokkönyvtár gondoskodik a megfelelő vezérlő karakterek küldéséről a monitorra, miközben a program fut, és megpróbálja optimalizálni, amit tud, amikor csak tud.

Ha szöveges módban marad, de így közvetlenül a képernyőn bárhová címez, akkor nem kell aggódnia a grafikus kezelő miatt sem, amelyet a Linux vagy a Unix használhat.

Az 1990-es években több Linux-telepítő teljes képernyős szöveges módot használt, kezdve a híres Slackwareét .

Előnyök

Átokkal bármikor lehet írni a képernyő bármely pontján, ami megkönnyíti a program előrehaladásának követését kevésbé fárasztó körülmények között, mint az írógép típusú áramlási mód. Ezzel a módszerrel bejegyzéseket is készíthet, például szöveges módban létrehozhat egyszerű űrlapokat, vagy akár teljes képernyős terminált, például egy 3270-et is szimulálhat . Változatok léteznek még egy Minitel szimulálására is .

Művelet

A fő funkciók nagyon egyszerűek:

initscr() inicializálja a teljes képernyős módot.

move(ligne, colonne) gyakorlatilag mozgassa a kurzort

addstr(chaîne) írjon egy karakterláncot, ahol a kurzor található

refresh() igazítja a valós képernyőt és a virtuális képernyőt

endwin() befejezi a teljes képernyős módot, és visszaállítja a képernyőt abba az állapotba, amelyben a belépés előtt volt.

A Curses / ncurses alapértelmezés szerint telepítve van néhány disztribúcióhoz. Más, mint az Ubuntu Studio vagy a Mint esetében , ilyet kell telepíteni a gcc 5-hez egy konzolról sudo apt install libncurses5-dev.

Egyszerű példa

A következő nagyon egyszerű program számít a szavak a Francia szótár / usr / share / dict / french a GNU / Linux által hosszában .

// Se compile par exemple avec gcc cursef.c -lcurses && ./a.out #include <curses.h> #include <string.h> int c; // colonne ((0,0) en haut à gauche) int count[128], total; // à 0; comptage des mots de chaque longueur int main() { WINDOW* win; FILE* infile; char d, xxx[128], out[128]; infile = fopen("/usr/share/dict/french", "r"); // Dictionnaire win = initscr(); // Initialisation cbreak(); // Ne pas exiger ENTER noecho(); // Pas d'écho demandé clear(); // Fenêtre à blanc refresh(); // Exécution de ce qui a été préparé dans la fenêtre int octets, glyphes; // En unicode, quelques glyphes sont multi-octets while (!feof(infile)) { fgets(xxx, 100,infile); // Bidouillage pour unicode (car glyphes multioctets) octets=0; glyphes=0; while (xxx[octets]) { if ((xxx[octets] & 0xC0) != 0x80 ) ++glyphes; ++octets; } --glyphes; ++count[glyphes]; // négliger retour ligne // Fin du bidouillage sprintf(out, "%7d %s", count[glyphes], xxx); move(glyphes-1,0); addstr(out); // préparer la ligne dans la fenêtre refresh(); // afficher la fenêtre ++total; } sprintf(out, "%7d mots au total", total); move (26,0); addstr(out); refresh(); d=getch(); // Attente d'un caractère pour effacer fenêtre et sortir endwin(); // curses call to restore the original window and leave }

Hordozhatóság

Az átokkönyvtár funkcionalitásának Windows rendszeren történő használata a PDcurses könyvtár használatával válik lehetővé, amely ncurses alapú . Ez nem azonos, de lehetővé teszi a legtöbb funkció használatát. Például a Python nyelvvel és annak 3.7 verziója óta ez egyszerűen a windows-curses csomag telepítésével valósítható meg.

Alternatív

A kurzor mozgásparancsainak közvetlen elküldése a terminálra (valamint a karakter színének és hátterének megváltoztatása) a legtöbb karakter képernyőn is lehetséges, ezek általában a VT100- mal kompatibilis CSI ( Control Sequence Introducer) nevű ANSI szekvenciáknak felelnek meg .) A gyakorlatban az átkok használata megkönnyíti a programkarbantartást (a CSI használata elkerülhetetlen marad a szkriptekben). Ezenkívül az a tény, hogy egy új kijelző csak átokkal történik, refresh()és nem minden alkalommal, amikor új bejegyzés történik a terminálon, jobb vizuális élményt nyújthat a felhasználó számára azáltal, hogy a teljes képernyőt egyszer megjeleníti. azt.

Megjegyzések és hivatkozások

  1. 3270-es terminál szimulációja átokkal .
  2. Minikurok: a Minitel "à la átkok" szimulációja .
  3. Az átok- és ncurs- könyvtárak itt funkcionálisan nem különböznek egymástól
  4. különösen, ha az unicode-ban nem kellett megkülönböztetni a bájtok és a karakterek számát . Ezt könnyű lett volna átalakítani a fájlt UTF-8 kódolásból ISO-8859-15 kódolássá, ahol minden francia karakter egy bájtra illeszkedik ( iconv -f UTF-8 -t ISO8859-15 /usr/share/dict/french >xxx). A fájl 2016. áprilisi változatában ezután 1 542 061 és 1 480 824 karakter között mozog, szigorúan azonos tartalommal. Az Unicode által viszonylag alacsony büntetés (4%) az általa nyújtott szabadságért a gyors elfogadásban szerepet játszott.
  5. "  A standard átok modul támogatása Windows rendszeren  " , https://pypi.org ,2019. október 16

Lásd is

Kapcsolódó cikkek

  • ncurses , átkok utódja.
  • PDcurses , átkok verziója a nyilvánosság számára.

Bibliográfia

  • (en) John Strang, Programozás átokkal , O'Reilly ( ISBN  0-937175-02-1 ) .

Külső linkek