Projekat

Općenito

Profil

Akcije

Nove funkcije #19460

Zatvoren

fmk harbour ... kako dalje .. čišćenje

Dodano od Ernad Husremović prije skoro 15 godina. Izmjenjeno prije više od 14 godina.

Status:
Odbačeno
Prioritet:
Normalan
Odgovorna osoba:
Početak:
20.01.2010
Završetak:
% završeno:

0%

Procjena vremena:

Povezani tiketi 2 (0 otvoreno2 zatvorenih)

korelira sa harbour - Nove funkcije #19371: build harbour, fmk - hbmk2 sistem, hudson c-iZatvorenoErnad Husremović11.01.2010

Akcije
korelira sa developer toolbox - Prijedlozi #19596: port harbour gt, rdd? -> ? ima li smisla raditi port ?! ruby, eclipse, qtZatvorenoErnad Husremović03.02.2010

Akcije
Akcije #1

Izmjenjeno od Ernad Husremović prije skoro 15 godina

što se samog developmenta tiče to je sada ok

međutim juče sam zarovio u bazu pa sam tu sa ovim netio zaglavio ...

većina stvari ne radi. tom prilikom sam rovio po fmk_lib (uglavnom) i ... šta da kažem nego da je to brate zbrkano do boli :(

vratiću se na ciljeve koje imam sa harbour build-om:
  1. linux i windows klijent (odgovarajući GT odabrati)
  2. dbf koji će omogućiti jednostavno portiranje clipper projekata, ali koji će omogućiti da se i problemi tipa - reindex e sad izađite svi uđite riješe ...
    • poznato je da je to jedan od glavnih problema kod korisnika - reindeksiranje i pucanje integriteta baze

NETIO mi može u tome puno pomoći pa obziljno razmišljam da zarovim malo žešće po fmk_lib-u a ne samo da to zakrpim sa namjerom da netio proradi

Akcije #2

Izmjenjeno od Ernad Husremović prije skoro 15 godina

netio nije klasičan client-server databaza.

međutim sa netiom se određene stvari mogu implementirati kao client server. tako recimo kreiranje baza može da se definiše da ih obavlja server, a da ih (ovlašteni klijent) samo inicira

i upravo to razmišljam da promjenim u odnosu na postojeću client-only strukturu.

sve je krenulo od problema kod kreiranja baza gdje sada stoji

if file(dbf_taj_i_taj) ... db_create() ... endif

ne funkcinoše jer se gleda lokalna baza a netio pravi bazu na serveru ...

to se može ispraviti ali ja sada kontam da to napravim čestitije, da se sve te stvari prebace na srv_fmk koji je već sada netio server.

Akcije #3

Izmjenjeno od Ernad Husremović prije skoro 15 godina

  • Naslov promijenjeno iz fmk harbour ... kako dalje u fmk harbour ... kako dalje .. čišć
Akcije #4

Izmjenjeno od Ernad Husremović prije skoro 15 godina

  • Naslov promijenjeno iz fmk harbour ... kako dalje .. čišć u fmk harbour ... kako dalje .. čišćenje

započeo sam u svom repos-u veliko čišćenje fmk_lib

razbijam ogromne prg fajlove na logične cijeline, preimenujem ih i stavljam u osnovni direktorij. podirektoriji su mi suvišni

 9 files changed, 1559 insertions(+), 2087 deletions(-)
 rename common/array_util.prg => array_utils.prg (98%)
 delete mode 100644 common/ini.prg
 delete mode 100644 db/db_admin.prg
 create mode 100644 db_fmk_manage_indexes.prg
 create mode 100644 db_fmk_pack.prg
 create mode 100644 fmk_ini.prg
 create mode 100644 mod_structure.prg

Akcije #5

Izmjenjeno od Ernad Husremović prije skoro 15 godina

pored čišćenja samih naziva fajlova, i njihovog razbijanja na manje cjeline ako su ogromni kao gore ...

krećem i u promjenu naziva funkcija - više nisam ograničen na 10 slova

Akcije #6

Izmjenjeno od Ernad Husremović prije skoro 15 godina

recimo CreKorisn => db_create_korisn ...

Akcije #7

Izmjenjeno od Ernad Husremović prije skoro 15 godina

DBCREATE2 => db_fmk_create

Akcije #8

Izmjenjeno od Ernad Husremović prije skoro 15 godina

CreFmkSvi => db_create_common_fmk_tables()

OFmkSvi => open_common_fmk_tables()

Akcije #9

Izmjenjeno od Saša Vranić prije skoro 15 godina

Ernad Husremović je napisao/la:

CreFmkSvi => db_create_common_fmk_tables()

OFmkSvi => open_base_fmk_tables()

logično bi bilo:

OFMKSvi => open_common_fmk_tables()

Akcije #10

Izmjenjeno od Ernad Husremović prije skoro 15 godina

upravo sam to ispravio vsasa

Akcije #11

Izmjenjeno od Ernad Husremović prije skoro 15 godina

više firmi, više sezona, više korisnika

više firmi

ako na server kažemo u nekom ini fajlu

; baza firme bringout
[db_bringout] 
BASE=bringout
ADMIN=hernad
USERS=bjasko vsasa vzeljka

znaćemo da trebamo na server_base/bringout kreirati bazu

svaki od korisnika ima svoj korisnički dir bringout/hernad, bringout/bjasko itd ...

e sad dolazimo do tabela ...

to je do sada bilo priv_path, kum_path, sif_path

kako je to najpametnije ?

korisnički direktorij je logično mjesto i za privpath .. međutim mi sada imamo pripr tabelu u fin, u kalk u fakt ....

da li da to ostavimo ? hm meni se to čini jedna od nepotrebnih komplikacija ...

puno je elegantnije - prirodnije da bude bringout/hernad/fin_pripr.dbf, bringout/hernad/kalk_pripr.dbf

a šta to znači što se tiče promjena u kodu ?

Akcije #12

Izmjenjeno od Ernad Husremović prije skoro 15 godina

#xcommand O_PRIPR   => select(F_PRIPR); USEX (PRIVPATH + "pripr") ; set order to tag "1" 

=>

#xcommand O_PRIPR   => select(F_PRIPR); USEX (  fmk_server() + SLASH + fmk_database() + SLASH + db_user() + "_pripr") ; set order to tag "1" 

ali ovo je komplikovano

Akcije #13

Izmjenjeno od Ernad Husremović prije skoro 15 godina

za početak pravim

bringout@bringout-developer-amd64:~/devel/fmk/fmk_lib$ cat db_fmk_vars.prg

#include "fmk.ch" 

function fmk_server()

return "127.0.0.1" 

function fmk_port()

return "2497" 

function fmk_database()

return "bringout" 

function fmk_user()

return "hernad" 

Akcije #14

Izmjenjeno od Ernad Husremović prije skoro 15 godina

ali čekaj malo, zašto proceduralno programiram ?

zar mi nije lakše to objektno programirati ?

Akcije #15

Izmjenjeno od Ernad Husremović prije skoro 15 godina

postoji TDB klasa

bringout@bringout-developer-amd64:~/devel/fmk/fmk_lib$ ./skeleton/skeleton_db.prg

uh jest na bezveznom mjestu

Akcije #16

Izmjenjeno od Ernad Husremović prije skoro 15 godina

bringout@bringout-developer-amd64:~/devel/fmk/fmk_lib$ git mv ./skeleton/skeleton_db.prg class_fmk_db.prg

Akcije #17

Izmjenjeno od Ernad Husremović prije skoro 15 godina

uh šta sam ja trao u ovu jadnu TDB klasu i menije i ko zna šta ...

Akcije #18

Izmjenjeno od Ernad Husremović prije skoro 15 godina

ove dvije klase imenujem:
  • TFmkDb
  • TFmkApp
Akcije #19

Izmjenjeno od Ernad Husremović prije skoro 15 godina

TFmkDesktop

Akcije #20

Izmjenjeno od Ernad Husremović prije skoro 15 godina

stvari se do boli zakuhavaju ....

uvodim novu klasu koja će biti nasljednik FmkDesktop klase

CLASS TFmkCuiDesktop FROM TFmkDesktop
        method menu
        method msg
        method msgO
        method MsgC
        method Box
        method BoxCls
        method Beep
END CLASS

sve funkcije koje koriste ovi metodi stavljam kao static

mirso je mnogo duplih funkcija pravio (sa copy paste) ili neke svoje verzije ... to sam za sada smjestio u cui_desktop_2.prg

Akcije #21

Izmjenjeno od Ernad Husremović prije skoro 15 godina

klase klase ...

e sada ono što sam započeo može skroz drugačije da se napiše

CLASS TFmkDb
        DATA oApp
        DATA cName

        DATA cSezona
        DATA cRadimUSezona

        DATA cSezonDir
        DATA cBase
        DATA cDirPriv
        DATA cDirKum
        DATA cDirSif
        DATA cBaseDir
        DATA cUser
        DATA nPassword
        DATA lAdmin

        DATA server  INIT "127.0.0.1" 
        DATA serverPort INIT "2497" 
        DATA name INIT  "bringout" 
        DATA user INIT  "hernad" 

...        
END CLASS

zašto ova gore notacija varijabli slozenoImeVarijable

to je uobičajena notacija za metode i data elemente

pogledao sam u harbour source i ta se notacija imenovanja koristi pa ću je i ja slijediti

zašto sam gore uveo user kada već imam cUser

ostaviću sada staru varijablu ... lahko je kasnije izbrisati ...

Akcije #22

Izmjenjeno od Ernad Husremović prije skoro 15 godina

TFmkDb ... babe i žabe

iz ove klase se moraju izbaciti svi dijelovi koji pripadaju interakciji sa korisnikom.

ona mora biti neovisna o TFmkDesktop-u (objektu koji će se napraviti na osnovu klase TFmkDesktop)

Akcije #23

Izmjenjeno od Ernad Husremović prije skoro 15 godina

MVC pattern

pokušaću uspostaviti Model - View - controller pattern

samo mi on omogućava da da se iz ovih veza iskobeljam

Akcije #24

Izmjenjeno od Ernad Husremović prije skoro 15 godina

harbour klase kako šta

dobar primjer testpers

Akcije #25

Izmjenjeno od Ernad Husremović prije skoro 15 godina

šta ne pripada FmkDb

mInstall - administratorski meni - to je korisničko sučelje a ne metod vezan za pohranu podataka

Akcije #26

Izmjenjeno od Ernad Husremović prije skoro 15 godina

pravim novu klasu

CLASS TFmkAdmin INHERITS TFmkApp
   DATA desktop
   method menuInstall()
END CLASS

method menuInstall() CLASS TFmkAdmin

Akcije #27

Izmjenjeno od Ernad Husremović prije skoro 15 godina

menu, menu_sc ??

interesanto je pitanje funkcije Menu_SC - to je funkcija koja poziva funkciju menu i koja se uobičajeno koristi

zato sam je u TFmkCuiDesktop definisao kao metod menu a funkciju menu sam definisao kao static function menu_0

Akcije #28

Izmjenjeno od Ernad Husremović prije skoro 15 godina

fmk parametri

uh ovo je haos ja sam ovo sve rasturio ... ovo je tako sve komplikovano postavljeno u milion nekih procedura koja jedna drugu poziva ... sad sam to sve razbuco

Akcije #29

Izmjenjeno od Ernad Husremović prije više od 14 godina

  • Status promijenjeno iz Dodijeljeno u Odbačeno
Akcije

Također dostupno kao Atom PDF