duminică, 16 iulie 2017

Crearea modulelor kernel in linux

           # Crearea modulelor kernel in linux.

## Ce este un modul kernel?
    Kernelul face legatura intre hardware si software. Kernelul este un program alcatuit din module si poate fi extins cu alte module. In urmatoarele randuri v-om scrie un modul kernel pe un sistem Fedora 24. Pentru acest lucru este nevoie de instalarea programului kernel-devel.

        sudo dnf install kernel-devel
``` C
/*
 * hello-1.c Cel mai simplu modul kernel.
 */
#include <linux/module.h>   /* Necesar in toate modulele */
#include <linux/kernel.h>   /* Necesar pt. KERN_INFO */

int init_module(void){

    printk(KERN_INFO "Hello world 1.\n");
    /*
     * Returnarea altei valori decat 0 inseamna ca modulul nu
     *  poate fi incarcat.
     */
    return 0;
}

void cleanup_module(void){
   
    printk(KERN_INFO "Goodby world 1.\n");
}
```
Trebuie creata fila Makefile:
```
obj-m += hello-1.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
```

Rularea programului se executa in directorul curent cu comanda:

        make

vineri, 14 iulie 2017

Utilizarea editorului de texte vi

 ## Ce este vi?

    Vi este un editor de texte folosit de catre profesionisti si care se gaseste pe majoritatea distributiilor Unix. Acum acesta este cunoscut si sub denumirea de VIM(Vi IMpruved). Este un editor multiplatforma ce poate fi utilizat pe sisteme Linux, Windows si Mac OS. Mai multe informatii puteti obtine de la adresa [http://www.vim.org/](http://www.vim.org/).

    Editorul vim are trei moduri de lucru: modul de inserare, utilizat prntru scrierea textului, modul de comanda, folosit pentru a "naviga" in cadrul textului, pentru a salva fisierul in curs de editare, pentru a marca blocuri de text etc. si modul numit ex, care se utilizeaza pentru functii aditionale, cum ar fi cautarea unui sir de caractere in cadrul textului.

    Programul vim porneste in modul comanda. Pentru a intra in modul inserare, se foloseste tasta "i" (Insert). Pentru intoarcerea in modul comanda, se apasa tasta "Esc"(Cancel). Tastele mai importante de navigare in cadrul textului( valabile in modul de comanda) sunt:
        h - un caracter la stanga;
        j - o linie in jos;
        k - o linie in sus;
        l - un caracter la dreapta;
        w - un cuvant inainte;
        b - un cuvant inapoi;
        $ - sfarsitul liniei;
        0 - inceputul liniei;
        G - inceputul buffer-ului;

    Alte comenzi importante sunt:
        x - sterge un caracter;
        d - sterge un obiect. Prin obiect se intelege un bloc de text, desemnat cu ajutorul comenzilor de navigare. Spre exemplu, comanda dw inseamna "sterge urmatorul cuvant";
        dd - sterge linia;
        D - sterge textul dintre cursor si sfarsitul liniei;
        u - reface ultima modificare adusa textului;

    Comenzile pentru iesirea din vim:
        :wq - salveaza fisierul inainte de iesire;
        :q  - iese din vim doar daca nu s-au facut modificari si nu au fost             salvate;
        :q! - iese din program chiar daca modificarile nu au fost salvate;

    Comenzile pentru salvarea fisierului sunt:
        :w - salveaza fisierul pe disc;
        :w fisier - salveaza buffer-ul in fisierul specificat.

    De altfel ca orice alt program despre vim se pot obtine mai multe informatii din pagina de manual cu comanda: man vim.

marți, 11 iulie 2017

Windows comenzile din terminal (cmd)

1. help -afiseaza comenzile disponibile in terminalul Windows.
C:\Users\>help
For more information on a specific command, type HELP command-name
ASSOC          Displays or modifies file extension associations.
ATTRIB         Displays or changes file attributes.
BREAK          Sets or clears extended CTRL+C checking.
BCDEDIT        Sets properties in boot database to control boot loading.
CACLS          Displays or modifies access control lists (ACLs) of files.
CALL           Calls one batch program from another.
CD             Displays the name of or changes the current directory.
CHCP           Displays or sets the active code page number.
CHDIR          Displays the name of or changes the current directory.
CHKDSK         Checks a disk and displays a status report.
CHKNTFS        Displays or modifies the checking of disk at boot time.
CLS            Clears the screen.
CMD            Starts a new instance of the Windows command interpreter.
COLOR          Sets the default console foreground and background colors.
COMP           Compares the contents of two files or sets of files.
COMPACT        Displays or alters the compression of files on NTFS partitions.
CONVERT        Converts FAT volumes to NTFS.  You cannot convert the
               current drive.
COPY           Copies one or more files to another location.
DATE           Displays or sets the date.
DEL            Deletes one or more files.
DIR            Displays a list of files and subdirectories in a directory.
DISKCOMP       Compares the contents of two floppy disks.
DISKCOPY       Copies the contents of one floppy disk to another.
DISKPART       Displays or configures Disk Partition properties.
DOSKEY         Edits command lines, recalls Windows commands, and
               creates macros.
DRIVERQUERY    Displays current device driver status and properties.
ECHO           Displays messages, or turns command echoing on or off.
ENDLOCAL       Ends localization of environment changes in a batch file.
ERASE          Deletes one or more files.
EXIT           Quits the CMD.EXE program (command interpreter).
FC             Compares two files or sets of files, and displays the
               differences between them.
FIND           Searches for a text string in a file or files.
FINDSTR        Searches for strings in files.
FOR            Runs a specified command for each file in a set of files.
FORMAT         Formats a disk for use with Windows.
FSUTIL         Displays or configures the file system properties.
FTYPE          Displays or modifies file types used in file extension
               associations.
GOTO           Directs the Windows command interpreter to a labeled line in
               a batch program.
GPRESULT       Displays Group Policy information for machine or user.
GRAFTABL       Enables Windows to display an extended character set in
               graphics mode.
HELP           Provides Help information for Windows commands.
ICACLS         Display, modify, backup, or restore ACLs for files and
               directories.
IF             Performs conditional processing in batch programs.
LABEL          Creates, changes, or deletes the volume label of a disk.
MD             Creates a directory.
MKDIR          Creates a directory.
MKLINK         Creates Symbolic Links and Hard Links
MODE           Configures a system device.
MORE           Displays output one screen at a time.
MOVE           Moves one or more files from one directory to another
               directory.
OPENFILES      Displays files opened by remote users for a file share.
PATH           Displays or sets a search path for executable files.
PAUSE          Suspends processing of a batch file and displays a message.
POPD           Restores the previous value of the current directory saved by
               PUSHD.
PRINT          Prints a text file.
PROMPT         Changes the Windows command prompt.
PUSHD          Saves the current directory then changes it.
RD             Removes a directory.
RECOVER        Recovers readable information from a bad or defective disk.
REM            Records comments (remarks) in batch files or CONFIG.SYS.
REN            Renames a file or files.
RENAME         Renames a file or files.
REPLACE        Replaces files.
RMDIR          Removes a directory.
ROBOCOPY       Advanced utility to copy files and directory trees
SET            Displays, sets, or removes Windows environment variables.
SETLOCAL       Begins localization of environment changes in a batch file.
SC             Displays or configures services (background processes).
SCHTASKS       Schedules commands and programs to run on a computer.
SHIFT          Shifts the position of replaceable parameters in batch files.
SHUTDOWN       Allows proper local or remote shutdown of machine.
SORT           Sorts input.
START          Starts a separate window to run a specified program or command.
SUBST          Associates a path with a drive letter.
SYSTEMINFO     Displays machine specific properties and configuration.
TASKLIST       Displays all currently running tasks including services.
TASKKILL       Kill or stop a running process or application.
TIME           Displays or sets the system time.
TITLE          Sets the window title for a CMD.EXE session.
TREE           Graphically displays the directory structure of a drive or
               path.
TYPE           Displays the contents of a text file.
VER            Displays the Windows version.
VERIFY         Tells Windows whether to verify that your files are written
               correctly to a disk.
VOL            Displays a disk volume label and serial number.
XCOPY          Copies files and directory trees.
WMIC           Displays WMI information inside interactive command shell.

For more information on tools see the command-line reference in the online help.
Windows-ul, ca si mai toate sistemele de operare majore, are implementate interfete grafice de interactiune cu utilizatorii sai astfel ca utilizarea acestuia este intuitiva si rapida. Insa comenzile execute in cadrul windows-ului cat si cele rulate in unele aplicatii care se executa in sistemul de operare au ca baza un sistem propriu de comenzi sub forma textuala numit CMD (Command Prompt) care interpreteaza comenzile introduse si le executa. Interfetele windows-ului ofera solutii pentru gestiunea generala a sistemului, insa uneori fie acestea nu sunt bine organizate astfel ca utilizatorul trebuie sa acceseze multiple interfete intr-un mod nepractic, fie nu exista o solutie automatizata de executare a comenzilor sau a operatiilor astfel ca utilizatorul trebuie sa acceseze manual diferite interfete sau sa ruleze diferite programe sau comenzi interne. In plus, exista si cazuri in care sistemul de operare Windows nu ofera interfate avansate pentru controlul sau gestiunea unor caracteristici proprii sau a unor dispozitive conectate la sistem.

  Despre Command Prompt (CMD)

CMD este o aplicatie de tip DOS (Disk Operating System), care pe langa faptul ca face parte din nucleul Windows-ului si este apelat de catre foarte multe programe care ruleaza in sistem, ofera si posibilitatea de a executa comenzi din line de comanda si nu neaparat din interfetele existente. Mai pe scurt CMD este o consola in care se poate introduce text ce reprezinta sintaxa unei comenzi de executat iar la apasarea tastei Enter sistemul va analiza comanda introdusa si o va executa asa cum a fost ea definita intern.

Pe oricare calculator cu Windows exista in mod standard si interpretorul de comenzi Command Prompt iar deschiderea lui se face prin mai multe modalitati. Una dintre ele este rularea unei aplicatii interne menita sa deschida rapid programe, se numeste Run si poate fi rulat prin apasarea tastelor Windows + R (tasta windows este situata intre Ctrl si Alt, avand logo-ul specific Windows); in fereastra deschisa tasteaza cmd si apasa Enter si se va deschide CMD. Alte modalitati de a accesa CMD este prin delasarea la meniul Start si cautarea programului scriind in caseta de cautare cmd - in cazul in care versiunea windowsului este mai recenta sau egala cu Vista-, daca versiunea este anterioara acesteia, de exemplu Win XP, Run este prezent direct in meniul de start.

Pentru a rula o comanda acceseaza cmd folosind una din modalitatile descrise mai sus, cu mentiunea ca sunt unele comenzi care necesita drepturi de administrator si deci in cazul Windows Vista, 7, 8, 8.1 si 10 trebuie ca programul cmd sa fie pornit cu astfel de drepturi. O posibila cale de a face acest lucru este prin cautarea cmd-ului in meniul de start, apoi se da click dreapta pe el si se alege optiunea "Run as administrator". Un mesaj de confirmare va aparea si va trebui sa se dea click pe Yes pentru a finaliza deschiderea interpretorului de comenzi cu drepturi depline asupra sistemului.

  Cum sa creezi un script cu comenzi CMD

Un script cmd, cunoscut si ca batch, este un fisier de tip text care contine o succesiune de comenzi cmd. Odata ce este rulat, adica este deschis asa cum este deschis un program (de ex. o aplicatie EXE) programul va lua pe rand fiecare comanda continuta in fisier si o va executa. Avantajul acestui lucru este ca pot fi imbinate o serie de operatii si comenzi care altfel nu ar fi fost posibile din cadrul interfetelor de sistem.

Procesul prin care se poate crea un script este foarte simplu. In locatia dorita, unde se doreste a exista scriptul (un bun exemplu ar fi desktop-ul) se da click dreapta in spatiu liber fara sa fie selectat in prealabil ceva si se alege New apoi Text Document, si se introduce un nume de fisier (de exemplu script) si apoi se apasa Enter. Va fi creat deci un document de tip text cu extensia txt. Deschideti fisierul si introduceti cate o comanda pe line apoi salvati modificarea facuta apasand Ctrl+S.

Exemplu de script cmd:

echo "Se incepe executarea scriptului"
@set a=%username%
msg * "Numele de utilizator este "%a%
pause

In acest stagiu, documentul nu poate fi executat pentru ca este de tipul text si de aceea trebuie sa fie modificata extenisa fisierului in .bat sau .cmd  Redenumiti deci fisierul astfel ca extensia .txt sa fie inlocuita cu una din cele doua mentionate anterior. Daca extensia nu apare la sfarsitul numelui de fisier, de exemplu script.txt atunci trebuie sa setezi din windows sa fie afisate extensiile tuturor fisierelor (vezi tutorialul de aici: Cum sa faci sa se afiseze extensia fisierelor in Windows). Dupa redenumire documentul trebuie sa fie de forma script.bat sau script.cmd.

Pentru a rula scriptul trebui sa dai dublu click pe acesta, caz in care va fi afisata consola cmd si stagiul executarii comenzilor din cadrul scriptului, eventual mesajele pe care comenzile le genereaza. Scriptul cmd dat exemplu mai sus va avea drept rezultat afisarea intr-o casuta de dialog a numelui utilizatorului

Exemplu de rulare script din command prompt (CMD).

sâmbătă, 8 iulie 2017

Agenda Telefonica proiect realizat in C++


In acest post v-om creea o aplicatie in limbajul de programare C++, care v-a rula in terminal si are ca scop stocarea datelor de contact ale unei persoane: nume, prenume, email, numar de telefon.
 
Codul sursa al acestei aplicatii este open source si poate fi descarcat de la adresa: https://github.com/mhcrnl/CppPhoneBook.
 


Resurse: https://www.sourcecodester.com/tutorials/cc/7726/simple-phone-book-c.html
Proiect nou: https://github.com/mhcrnl/PhoneBook-33


contact.h

1:  #ifndef CONTACT_H_INCLUDED  
2:  #define CONTACT_H_INCLUDED  
3:  #include <iostream>  
4:  #include <string>  
5:  #include <iomanip>  
6:  using namespace std;  
7:  class Contact{  
8:    string p_nume, p_prenume, p_email, p_telefon;  
9:  public:  
10:  /**  
11:    Constructorii clasei  
12:  */  
13:    Contact();  
14:    Contact(string nume);  
15:    Contact(string nume, string prenume);  
16:    Contact(string nume, string prenume, string email);  
17:    Contact(string nume, string prenume, string email, string telefon);  
18:    /**  
19:      Get/set methods  
20:    */  
21:    const string& getNume() const;  
22:    void setNume(const string& nume);  
23:    const string& getPrenume() const;  
24:    void setPrenume(const string& prenume);  
25:    const string& getEmail() const;  
26:    void setEmail(const string& email);  
27:    const string& getTelefon() const;  
28:    void setTelefon(const string& telefon);  
29:    const string getNumeIntreg();  
30:    void afisare();  
31:  };  
32:  #endif // CONTACT_H_INCLUDED  


Console Application Load, Save, Add, Delete, Sort, and Modify your contacts. Aplicatia este scrisa in c++ si este rulata in Code::Blocks 16.01 pe un sistem linux Fedora 24. Proiectul este realizat in 422 linii de cod.

Instalare

 

git clone https://github.com/mhcrnl/PhoneBook-1.git
cd PhoneBook-1
Deschiderea proiectului in Code::Blocks.

Functii

 

void Create();
void Load();
int Query(char Search[20]);
void Add();
void Delete();
void Modify();
void Print();
void Save();
void clean();
int valid(char num[]);
void sort();
void split(char string[100],char spliter);

Aplicatii in terminalul linux

Aceste  aplicatii sunt utilizate in terminal, iar instalarea lor s-a facut pe sistemul Fedora 24.

13. cat 
Permite crearea de file, vizualizarea continutului, concatenarea filelor si redirectarea acestora catre terminal sau fisiere.
Sintaxa:
  cat  [OPTIONS] [FILE] ...
Utilizare:
cat /etc/passwd   -afisarea continutului unei file

12. lp
submits files for printing, or alters a pending print job. Use a file name of "-" to specify printing from the standard input.
Utilizare:
 lp file.pdf      -printeaza fila.pdf in ton de gri
 lp -o ColorModel=color file.pdf   -printeaza color

11. lpr
Trimite fisiere la imprimanta pentru a fi printate. 
Utilizare:
lpr myfile.txt    -printeaza fila myfile.txt
cat myfile.txt | lpr   -citeste din standard input si trimite la copire fisierul
lpr -#3 myfile. txt    - 3 copii ale fisierului 

10. git 
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. 


9. top 
The top command is the traditional way to view your system’s resource usage and see the processes that are taking up the most system resources. Top displays a list of processes, with the ones using the most CPU at the top.




8. enscript
Enscript  converts  text  files  to  PostScript  and  spools  generated
       PostScript output to the specified printer or leaves it to file.  If no
       input files are given, enscript processes standard input.  Enscript can
       be extended to handle different output media and it  has  many  options
       which can be used to customize printouts.

7. grep 
grep este o comandă UNIX pentru căutare de text. Denumirea vine de la primele litere ale „global/regular expression/print”, ce reprezintă o serie de comenzi pentru editoare de text precum ed. Comanda "grep" caută în fișiere sau în intrarea standard liniile care corespund unei expresii regulate date și le scrie către ieșirea standard.
Utilizare:
   grep apple fruitlist.txt

6. ffmpeg 
FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created.
Instalare:
   sudo dnf install ffmpeg

5. wget 
GNU Wget is a free utility for non-interactive download of files from the Web. It supports HTTP, HTTPS, and FTP protocols, as well as retrieval through HTTP proxies. 
Instalare:
   sudo dnf install wget 
Utilizare: 
 wget http://www.bankofengland.co.uk/publications/Documents/inflationreport/2017/may.pdf
 
4. links 
Web browser.
Instalare:
    sudo dnf install links

3. cmus 

is a small, fast and powerful console music player for Unix-like operating systems.
Instalare:
    sudo dnf install cmus


2. newsbeuter

Newsbeuter is an open-source RSS/Atom feed reader for text terminals. It runs on Linux, FreeBSD, Mac OS X and other Unix-like operating systems. Newsbeuter's great configurability and vast number of features make it a perfect choice for people that need a slick and fast feed reader that can be completely controlled via keyboard.
Instalare:
    sudo dnf install newsbeuter

1. abook

Este o agenda telefonica in terminal. 
Instalare:  
   sudo dnf install abook
Utilizare: 
man abook  >afiseaza manualul aplicatiei
abook -h >afiseaza meniul help al aplicatiei

Clienti de blogging

Pentru cei care utilizeaza platformele de blogging (Wordpress, Blogger, etc.), incerc sa gasesc cativa clienti de blogging pentru editarea continutul offline si publicarea online.


Instructiuni de instalare
Pentru Fedora acesta se poate instala cu comanda:
sudo dnf install gscribble -y