Unelte utilizator

Unelte site


hcloud:dezv

4. Nivel programare

4.1. Cum sunt portate programele sub Linux?

FIXME IM

4.2. Ce principii se aplică?

4.2.1. Fişiere

Cale absolută cu drive în faţa:     D:\AAA.EEE\BBB.EEE\FFF.EEE
Catalog absolut cu drive în faţa:   D:\AAA.EEE\BBB.EEE
Cale absolută fără drive în faţa:   \AAA.EEE\BBB.EEE\FFF.EEE
Catalog absolut fără drive în faţa: \AAA.EEE\BBB.EEE
Cale relativă                       BBB.EE\FFF.EEE
Catalog relativ                     BBB.EE
Cale cu revenire:                   ..\BBB.EEE\FFF.EEE
Catalog cu revenire:                ..\BBB.EEE

4.2.2. Regula

În programele HAMOR Soft numele de fişiere de date întotdeauna sunt cu majuscule. Ex. PLANCONT.DBF, FACTURI.DBF, etc.

Pot exista alte fişiere, de ex. .not, .txt la care numele este scris cu litere mici.

Toate fişierele: „*“ în Linux, „*.*“ în Windows.

Din acest motiv pentru teste, accesare se folosesc variantele Hamor ale funcţiilor: h_File(), h_MemoRead(), etc.

4.2.3. Drive

La Windows A:, B:, C:, ….

La Linux nu există drive A:, B:, … este un catalog oarecare, pot exista linkuri simbolice cu numele de A:, B:, etc.

Caracterul despărţitor între segmentele din căile de acces este:
Windows \
Linux /
dar nu se foloseşte direct, există variabilă sistem h_OsPathS care la lansarea programului se setează cf. sistemului de operare.

4.2.4. Căi de acces

Întotdeauna se păstrează în format Windows (în Catalogul fişierelor), dar în fereastra de ajutor care se lansează se afişează cf. SO

Acceptă şi în format Linux!

Pentru traducere: h_OsPath(file→PATH)
Poate fi lansat şi pe Windows

4.2.5. Mapare cu variabile de mediu

În catalogul fişierelor se admit mapări de forma %s%cale numai la începutul căilor de acces, unde s este o variabilă de mediu, şi trebuie să fie definită.

  • se acceptă mapări de forma %A%\AAA\BBB sau %B%\AAA\BBB
  • la lansare %A% se înlocuieste cu valoarea din variabila de mediu A
  • dacă variabila de mediu A nu există –> eroare sau mesaj în funcţie de situaţie

Catalog comun sub Linux, SERVER ←→ STATIE

  • Pe serverul Linux, catalogul se vede cu calea completă
  • Pe staţie h_stPath() înlocuieşte partea de început printr-un drive dacă există o variabilă de mediudefinită care conţine partea de început din calea de acces

Variabila de mediu: H=\HAMOR\hamor

Transformare cale de acces: \\
''? h_StPath("\HAMOR\hamor\hGROUP\RO\DOC\hmarfa.htm")'' >> "H:\hGROUP\RO\DOC\hmarfa.htm"

În scripturi, programe nu se folosesc căi de acces explicite, dacă totuşi se folosesc, acestea se trec prinh_OsPath()

4.2.6. Funcţii

h_AbsPath()  --> apelează h_OsPath()
h_TruePath() --> apelează h_AbsPath() deci şi h_OsPath()
h_AddPath()  --> nu apelează, nu cred că trebuie pus

FIXME IM

Uzuale şi necesare în scripturi

h_OsPath()    - traduce calea de acces cf. SO (\,/ şi %SS%)
                eventual să rezolve şi numele generic de fişiere ?  
h_StPath()    - station path  <segmentul_de_început> --> A,S,U,H
h_FileEx()    - testează case sensitive existenţa unui fişier 
h_MemoRead()  - memoread case sensitive la nume de fişiere
                Deja existent, nu este nou
h_Directory() - testează case sensitive existenţa unui catalog
h_AllF()      - nume generic de fişier în funcţie de OS

FIXME IM

Interne, nu sunt necesare în scripturi

h_OsPathS     - separatorul din căile de acces în funcţie de SO 
h_MapPath()   - mapările de forma %Z% -numai de la început, fără imbricări !
h_TrPath()    - traducere separatori cf.OS / --> \ sau \ --> /
h_IsDir()     - testează case sensitive, calea transmisă este un catalog ?
h_SetFileCase() - nume de fişiere majuscule/mixt/litere mici

Funcţii existente care ţin cont de FileCase

h_MemoRead()
h_Directory()
h_DirChange()

4.2.3. Baze de date

Indiferent dacă a fost creată/modificată sub Linux sau Windows, baza de date poate fi utilizată sub ambele sisteme de operare, nu există diferenţe de structură. Deci o bază de date poate fi trecută de la un sistem de operare la altul fără probleme.

4.3. Elaborare scripturi

  • se va folosi h_OsPath, nu se va folosi direct \
  • se va folosi h_AllF(), nu *.* sau *
  • file→PATH se trece prin h_OsPath()
  • : în Linux poate să existe în numele de catalog, sau fişier
  • Pentru construirea unei căi de acces se vor folosi
    funcţii specifice (h_AddPath(), h_Path(), etc)
  • Să nu se execute operaţii cu fişier direct prin:
    MemoRead(), File(), Directory()
    contează setarea FileCases, din acest motiv se recomandă variantele h_
  • Pentru testarea programului, dacă este Windows sau Linux în cadrul scriptului se foloseşte h_Build()
#IF "windows" $ Lower(h_Build())
#ENDIF 
#IF "linux" $ Lower(h_Build())
#ENDIF
  • în caz de LINUX_TS sau LINUX_WP înainte de generarea fişierului .CMD căile de acces se trec prin h_StPath()

4.3.1. Principii

Drepturile de acces fişiere: Utilizatorii HAMOR trebuie să fie în aceeaşi grupă.

În Linux, indiferent cine este proprietarul, dacă membrii grupei au drept de scriere în folder, fişierele pot fi şterse.

Drepturile necesare pentru foldere:

  • read by owner,
  • write by owner,
  • search by owner,
  • read by group,
  • write by group,
  • search by group,
  • read by others -funcţional nu este necesar,
  • search by others -funcţional nu este necesar

Drepturile necesare pentru fişiere:

  • read by owner,
  • write by owner,
  • read by group,
  • write by group,
  • read by others -funcţional nu este necesar

4.3.2. Variabile sistem

h_OsPathS

  • Se setează imediat după lansarea programului.
  • În program, în scripturi trebuie folosită această variabilă.
  • Nu se va folosi \ sau /
  • Linux: h_OsPath –> /
  • Windows: h_OsPath –> \

4.3.3. Funcţii

GetPrinter() 
  Citeşte lista imprimantelor pe calculatorul pe care se rulează.
  Depune lista imprimantelor intr-un catalog PRINTERSss.TXT
  Este o funcţie cu ajutorul căreia hSTART.exe citeşte imprimantele
  de pe staţia de lucru.
 
GetShortFileName()
   Dublat pentru Linux dar nu transformă numele de fişier,
   sub Linux numele scurt nu are sens.

h_AllF()
   Returnează:
    - *.* -sub Windows,
    - *   - sub linux
   Nu se mai foloseşte direct numele generic *.* sau *
 
h_Chmod()
  Setează atributele unui fişier Linux
  Sintaxa
   h_Chmod(sfile,nattrib)
  Parametri
  -sfile   -calea de acces către fişier
  -nattrib -număr, reprezentând atributele fişierului
  Returnează
   Număr reprezentând atributele setate
  Descriere
   Setează atributele unui fişier.
   Atributele sunt reprezentate sub forma de număr întreg.
   Pentru facilitarea prelucrării poate fi folosită funcţia CtoN()
  Exemple:
    h_Chmod(h_OsPath("MARF.DEM"),  CtoN("111111101",2))
    h_Chmod("HMET2UP",CtoN("111111101",2))
  Semnificatia sirului binar,
    sunt  3 grupe de cate 3 cifre
    111  111  101
    Grupa 1: owner
    Grupa 2: group
    Grupa 3: public
  Cifrele din group:
    Cifra 1: Read
    Cifra 2: Write
    Cifra 3: Execute

h_Directory()
   Identic cu Directory() dar case sensitive.
   Activează setare pentru litere mari şi mici, la sf.repune,
   în rest identic cu Directory()
   Cu setarea implicită din hMET (uppercase)
   Directory() nu ar lua în calcul cataloagele cu litere mici,
   dacă este ultimul din segment
   Ex. HAMOR/catalog

h_FileEx()
   Testează existenţa unui fişier case sensitive.
   Activează setarea pentru litere mari şi mici, la sf.repune,
   în rest identic cu File()
   Cu setarea implicită din hMET (uppercase)
   File() nu ar lua în calcul fişierele cu litere mici,
   dacă este ultimul din segment

h_IsDir()
   Setează litere mixte ca să fie luate în calcul cataloagele cu litere
   mari (ultimul din segment)

h_MapPath()
   Rezolva mapările de forma %ZZZ%

h_MemoRead()
   A existat şi până acum, doar că ţine cont de litere mari şi mici.

h_Os()
   Returnează codul sist.de operare al calculatorului pe care rulează programul
   h_Os(smode)
     -smode    -nil-nemodificat,l-litere mici,u-majuscule,
   Returnează: Şir de caractere reprezentând sistemul de operare
   Descriere:
    Returnează codul sistemului de operare al calculatorului 
    pe care rulează programul (server, sau calculator individual)
    Este codul sistemului de operare din punctul de vedere al
    programelor hMET: Windows_NT, Linux_WP, ...
    Implementat astfel: 
     -testează variabilă de sistem H_OS,
     -dacă nu este definit, variabile sistem OS   
   Exemple:
    If h_Os("l") = "linux_wp"
    EndIf

h_OsPath()
   Traducere cale de acces conform sistemului de operare.
   De fapt apelează h_MapPath() şi h_TrPath()

h_Path()
   Returnează partea de cale de acces, fără nume de fişier
   dintr-o cale de acces,
 
h_ProgType()
  Returnează tipul programului: W-Windows, D-DOS, L-Linux, U-necunoscut
  Sintaxa
   h_ProgType(sprog)
  Parametri
   sprog -cale de acces la fişierul în care este programul
  Returnează
   Tipul programului
  Descriere
   Stabileşte şi returnează tipul programului transmis prin 
   parametrul sprog
  Exemplu
   IF h_ProgType(sprog) $ "WD"
       ...
       h_MesErr("Nu poate fi executat sub Linux !")
   ENDIF

h_Rattrib()
  Citeşte atributele unui fişier Linux sub Linux
  Parametri 
    -sfile -calea de acces către fişier
  Returnează
    Număr reprezentând atributele fişierului
  Descriere
    Citeşte atributele fişierului transmis 
    în parametrul sfile. Valoarea returnată este un număr.
    Funcţia  NtoC() poate fi folosită pentru transformarea 
    numărului citit în şir de caractere, pentru o 
    prelucrare mai comodă.
  Exemplu
     Alert NtoC --> "1000000111110100"
 
h_RunhWTools() 
   Rutină pentru a rezolva aşteptarea după un task
   adică să fie aşteptat un task lansat cu hWTools, 
   până când se termină, sau timeout,
 
h_StOs()
   Returnează codul sistemului de operare al staţiei de lucru/
   h_Os(smode)
     -smode    -nil-nemodificat,l-litere mici,u-majuscule,
   Returnează: Şir de caractere reprezentând sistemul de operare de pe staţia de lucru
   Descriere:
    Returnează codul sistemului de operare al calculatorului 
    de pe staţia de lucru
    Implementat astfel: testează variabilă sistem H_STOS. Dacă nu este definită
    returnează ""      
   Exemple:
    If h_StOs("l") = "windows"
    EndIf
       
h_StPath() - Station path
   calea de acces de pe server şi de pe staţia de lucru 
   (deşi indică acelaşi catalog) diferă.
   Ex. documentaţia accesată de pe server şi staţie,
       se accesează acelaşi catalog dar căile de acces diferă
       pe cele doua calculatoare.
   Implementat astfel: 
   -citeşte variabilele de mediu (A,S,U,H)
   -dacă spath începe cu una dintre şirurile asociate de aceste variabila de mediu
    porţiunea este înlocuită cu <variabilă_mediu>:
   -ex. H=\HAMOR\hamor
        S=\HAMOR\hamor\hGROUP
        U=\HAMOR\hamor\hUSERS\$USER
        A=\HAMOR\hamor\hUSERS\$USER\RW\A 
   
? h_StPath("\HAMOR\hamor\hGROUP\RO\DOC\hmarfa.htm") --> "S:\RO\DOC\hmarfa.htm"
h_TrPath()
   Traduce separatoarele dintr-o cale de acces,
   în conformitate cu sistemul de operare (/ -- \ şi invers)

   Parametrul 2 forţează rezultatul pt.SO dorit.

h_SetFileCase(ncase, lForce)
   În variantele Windows şi Clipper are efect numai dacă lForce=.T.
   Linux h_SetFileCase() sau h_SetFileCase() -majuscule, 
                                              setarea implicită în programele HAMOR Soft.
h_SetFileCase(0)-mixt,
h_SetFileCase(1)-litere mici,
   
h_SetFileCase(0,.T.)  -mixt sub ambele sisteme de operare.

4.4. Funcţii specifice

HMENUE DBMENU/DBMENU h+ acces la F8 în hMENU în mod multisession

4.5. Configurarea platformei mobile

4.5.1. Prenecesităţi

  • grupe de programe:
    „Desktop“ „Desktop Platform“ „X Window System“ „Fonts“ „General Purpose Desktop“
  • programe:
    libreoffice xterm java-1.7.0-openjdk

4.5.2. Instalare

Trebuie adăugat repo-ul epel6 în funcţia arhitecturii sistemului.
De instalat: xrdp tigervnc-server

4.5.3. Configurare

  • /etc/sysconfig/vncservers are documentaţie online, trebuie completat cu utilizatorii
  • Regula de firewall de adăugat: iptables -I INPUT -p tcp -m state –state NEW -m tcp –dport 3389 -j ACCEPT
  • /etc/xrdp/sesman.ini
    KillDisconnected=1
    X11DisplayOffset=1
    MaxSessions=100

Configurare utilizator

  • Utilizatorul se creează prin hadmin după care se modifică parametrul de iniţializare la /bin/bash în /etc/passwd
  • /etc/sysconfig/vncservers are documentaţie inline, trebuie completat cu utilizatorul
  • În /etc/group trebuie completat grupul tsusers cu utilizatorul

Sau dacă nu e vorba despre LINUX_WP, se creează prin: useradd nume_utilizator

* Parola utilizatorului trebuie să fie de min. 6 caractere. Cu utilizatorul creat generăm parola deja dată şi pentru serverul VNC prin vncpasswd

  • Dezactivare appuri nefolositoare, ca şi screensaver, update manager, volume control
  • editare HMENU.BAT (single window):
    De verificat nr. staţiilor
  OS=LINUX
  export H_EXEXLS="soffice --calc &> /dev/null"
  • .Xresources trebuie să fie în catalogul utilizatorului
  • shortcut pe desktop cu parametru

xterm -fa 'Dejavu Sans Mono' -fs 15 -geometry 80×25+0+0 -e „cd /HAMOR/hamor/hGROUP/RW/HAMOR.DEM; ./HMENU.BAT“

  • Verificare HMETCOL.DBF, dacă culorile clipesc
  • adăugare fişier ~/.gtk-bookmars cu conţinutul:
  file:///HAMOR/hamor/hUSERS/SNOTE3 U: hUSER
  file:///HAMOR/hamor/hGROUP S: hGROUP
  file:///HAMOR/hamor/ H: hDATA
  file:///home/SNOTE3/Documents
  file:///home/SNOTE3/Pictures
  file:///home/SNOTE3/Downloads
  • setare firefox: home page setat la hamorsoft.ro, about:config → new boolean, network.manage-offline-status → false
  • dezactivare icoane nefolositoare: gconftool-2 --set --type=bool /apps/nautilus/desktop/computer_icon_visible false, home_…, trash
  • locul demoului: /HAMOR/mediu/hGROUP/RW/HAMOR.DEM
  • Pentru utilizatori xrdp nu avem nevoie de panoul de sus
  • devilspie pentru funcţionare HMENU.BAT fără bara cu titlu

(if (is (application_name) „HMENU.BAT“) undecorate)

hcloud/dezv.txt · Ultima modificare: 2022/05/08 22:40 (editare externă)