clipper.615dr.grba,
-> #612, dvesic>> P.S. Izvinjavam se onima koji ovo gledaju drugi ili treci put !
Treći put gledam samo ja (((:
clipper.614dr.grba,
-> #610, snemcev>> I'll send something else, ok?
I to sa kamatom 100%.
clipper.616svaba,
žudi me da ovo do sada niko nije pitao... Ili se nisam uključio
dovoljno rano?
Naime, pri prevođenju programa sa CLIPPER 5.xx pojavljuje se poruka u
stilu "string space exhausted", sa navođenjem funkcije i rednog broja
linije u kome mu je to zasmetalo. Ja shvatim da je prevodilac
"prepunio" neko svoje mesto gde drži stringove, pa podelim tu funciju
na dve manje (u prvoj stavim poziv one druge). Posle ovoga, poruka se
više ne javlja, i sve radi normalno.
Inače, problem koji sam opisao mi se pojavio kad sam jedan program
koji je fino radio pod '87, hteo da prevedem sa CLIPPER 5.xx.
E sad, ja nisam zadovoljan ovim rešenjem - stvarno je seljačko. Zna li
neko šta je uzrok ovome i da li se taj "string space" može proširiti?
clipper.617neman,
-> #612, dvesic> Nadam se da ce nekom koristiti ...
> Moja iskustva u radu sa CDX ideksima
U tvojoj poruci nedostaje ono sto je najvaznije a to je uporedjenje
sa .NTX datotekama po pitanju brzine izvrsavanja indeksiranja i jos
vise samu brzinu pretrazivanja. Prvi test koji sam uradio sa CDX
indeksima je bilo brzina SEEK naredbe u petlji od vise hiljada puta
gde se trazilo jedan slog u bazi od par hiljada slogova. To je bio
i poslednji test koji sam uradio zato sto sam na osnovu rezultata
merenja dosao do zakljucka da NTX drajver pamti gde se nalazi pri
pretrazivanju tj. SEEK-u a CDX iznova cita indeksnu datoteku. Po secanju,
NTX je bio oko 50 puta brzi od CDX-a. Kasnije se pojavio i test u
Racunarima koji je samo potrvdio tezu da je CDX dosta traljavo realizovan
i da vise sluzi sminke radi negoli da se stvarno zelelo unapredjenje
Clippera.
Pored toga, mislim da brzini pravih CDX indeksa doprinosi u stvari
pomenuta cinjenica da se u datoteku upisuje samo razlika u kljucu
( zato valjda i cita od pocetka datoteku :) nego to da postoji samko
jedna datoteka. Ti moras da preturis xxx K(M)B indeksa kroz mrezu
pa bili oni jedna ili vise datoteka.
neman
clipper.618nbatocanin,
-> #596, dzoric> S' vremena na vreme aplikacija pukne sa porukom "Internal
> stack overflow" :(((
Vrlo čudno. Kako tačno glasi poruka, tj. je li to poruka Clipper-ovog
run-time sistema?
clipper.619ndragan,
-> #598, aquarius/ <> On Key Label "." Keyb ","
/ <> ali je malo nezgodno ako zaboravite da ga skinete.
/ Jest' nezgodno to u FOX-u, al' zato nije u Clipperu. :) Ujedno
Šta, definišeš tačku da ti izigrava zarez, i zaboraviš da je skineš, i
kompajler sam zna kad ti više ne treba pa skine sam? Ili moraš za svaki
GET gde ti to treba da pozivaš premapiranje tastera? Ili mu je svejedno
da li kucaš tačku ili zarez - oboje smatra za tačku? Nisi jasan.
clipper.620dvesic,
-> #617, neman>> U tvojoj poruci nedostaje ono sto je najvaznije a to je
>> uporedjenje sa .NTX datotekama po pitanju brzine izvrsavanja
>> indeksiranja i jos vise samu brzinu pretrazivanja. Prvi test
>> koji sam uradio sa CDX indeksima je bilo brzina SEEK naredbe u
>> petlji od vise hiljada puta gde se trazilo jedan slog u bazi
>> od par hiljada slogova.
Nisam hteo da siroke narodne mase davim brojcanim podacima,
ali ces me ti naterati ...
Prvo, koliko puta ti u tvojim programima trazis jedan te isti
slog ? Logika koju ja koristim je :
dbSeek(Prvi_Slog koji zadovoljava uslov)
While <uslov zadovoljen>
Obradi slog
dbSkip()
End While
U obradi n slogova brzina dbSeek-a je (skoro) nevazna
u odnosu na brzinu dbSkip-a uz odredjene indekse.
>> uradio zato sto sam na osnovu rezultata merenja dosao do
>> zakljucka da NTX drajver pamti gde se nalazi pri pretrazivanju
>> tj. SEEK-u a CDX iznova cita indeksnu datoteku. Po secanju,
>> NTX je bio oko 50 puta brzi od CDX-a.
Secanje te vara. Ako bas insistiras, petlja od 1000 dbSeek
je kod NTX radila 3.76, kod CDX 17.8 (znaci 5 a ne 50 puta).
Grozan rezultat ? Citaj dalje.
>> test u Racunarima koji je samo potrvdio tezu da je CDX dosta
>> traljavo realizovan i da vise sluzi sminke radi negoli da se
>> stvarno zelelo unapredjenje Clippera.
Sminke radi ? Gledaj sad ovaj test :
dbSeeek(Neki_Slog)
For i:=1 to 3000
dbSkip()
Next i
Brojcano : NTX - 0.61 CDX - 0.71
Gde je razlika od 5 (50) puta ? Nesumnjivo su NTX indeksi za
koji procenat brzi, sto je i logicno - ipak su oni genericki
format za Clipper. Mozda ce sledeca implementacija CDX-a
prevazici decije bolesti.
>> Pored toga, mislim da brzini pravih CDX indeksa doprinosi u
>> stvari pomenuta cinjenica da se u datoteku upisuje samo
>> razlika u kljucu ( zato valjda i cita od pocetka datoteku :)
>> nego to da postoji samko jedna datoteka. Ti moras da preturis
>> xxx K(M)B indeksa kroz mrezu pa bili oni jedna ili vise
>> datoteka.
Pa sad, razlika provlacenja 2.4 Mb u odnosu na 700 kb se itekako
da osetiti ! 'Jednu datoteku' sam pomenuo u vezi sa brojem
otvorenih fajlova u jednom trenutku a NE u vezi sa brzinom
indeksa.
Da rezimiram: onaj tekst je bio rezime *prakticnih* iskustava sa
CDX indeksima - svakom ostavlja na volju da proba i odluci koji
tip indeksa nosi bolji odnos brzina/performanse. Ja sam izabrao
CDX : mali su, pakuju se u jednu datoteku, mogu im se obracati
preko naziva a ne preko broja (doduse, ovo zadnje mogu i NTX).
Na vama je da odlucite sta je bolje za vase potrebe.
Nemoj da te zavaraju vestacki izgradjeni testovi. Ne sumnjam
da bi se slican test dao naci i za NTX. Probaj ih u aplikaciji.
U krajnjem slucaju, uvek se mozes vratiti na staro.
Pozdrav,
Dejan.
clipper.621dzoric,
-> #618, nbatocaninGreška "Internal stack overflow" je DOS-ova greška, i u priručniku za
DOS je napomenjena i navodno se problem rešava povećanjem broja i
veličine stekova( npr. STACKS=9,256 ). U aplikaciji je ugradjen
Clipper Error Handler System. Debagiranjem programa ne mogu da
otkrijem
ništa, pod debagerom sve radi. Baze i indekse otvaram kroz DATA
DICTIONARY
i uvek kod 5 -og rekorda gde se otvara baza SETUP.DBF program je
otvori
i u svim poljima upiše "TTTTTT" (blaži slučaj), program stane na prvi
Inkey( 0 ) i tu je kraj. Sve mi je jasno, ali da posle resetovanja
uništi
FAT, to mi nije jasno. Pre mesec dana sam u CONFIG.SYS ubacio naredbu
DOS=HIGH,UMB i od tada radi, ali do kada će. Negde sam čuo da DOS >
3.31
nema totalnu kontrolu upada u FAT, i da je po tom pitanju DOS 3.31
najsigurniji. Ako među kliperašima ima i DOS majstora možda imaju
odgovor na ovo pitanje.
Još nešto :)
Da li je neko primetio bag u Expand.lib v3.0 kada se više puta pozove
funkcija za promenu palete XPvgaColor() ili XPegaColor(), mašina
zablokira.
Pozdav ..
Dejan
clipper.622snemcev,
-> #620, dvesic>> Prvo, koliko puta ti u tvojim programima trazis jedan te isti
>> slog ? Logika koju ja koristim je :
Moram da priznam da se u svim mojim programima, obrada svodi ili na celu
bazu, ili na neki njen deo koji pronalazim baš preko dbSeek() , a dalje
ide dbSkip() sve dok je uslov zadovoljen.
>> Secanje te vara. Ako bas insistiras, petlja od 1000 dbSeek
>> je kod NTX radila 3.76, kod CDX 17.8 (znaci 5 a ne 50 puta).
>> Sminke radi ? Gledaj sad ovaj test :
>> Brojcano : NTX - 0.61 CDX - 0.71
Evo još jedno testiranje(nema mreže, nema cache)
FOR i=1 to 1000
dbGoTop()
dbSeek('9', .t.) // a devetke ni od korova...
// baza ima ¸4,700 slogova u ¸476K
NEXT
Vremena: NTX: 1.52; CDX: 5.22. Znači, usporenje je oko 3.44 puta.
Svodeći to na samo jednu pretragu dobijamo vremena od 0.00152 i 0.00522
sec. Koji korisnik tu razliku primeti (pa još u mreži), svaka mu čast!
>> Pa sad, razlika provlacenja 2.4 Mb u odnosu na 700 kb se itekako
>> da osetiti !
Mislim da ovde CDX, bar u mreži odnosi pobedu nad NTX-om.
clipper.623dzoric,
Kako da nateram GET da skroluje numerike s'desna ulevo,
kao na klasičnim digitronima.
#define NUMERIC_FORMAT "999,999,999.99"
E sad kad radim GET npr:
LOCAL nVar := 1
č x, y GET nVar PICTURE NUMERIC_FORMAT
READ
...dobijam skrolovanje udesno sa "rupama" umesto zareza.
Da li mogu klauzuli PICTURE podmetnuti svoju UDF.
Pozdrav..
Dejan
clipper.624neman,
-> #620, dvesic>>> Pored toga, mislim da brzini pravih CDX indeksa
>>> doprinosi u stvari pomenuta cinjenica da se u datoteku
>>> upisuje samo razlika u kljucu ( zato valjda i cita od
>>> pocetka datoteku :) nego to da postoji samko jedna
>>> datoteka. Ti moras da preturis xxx K(M)B indeksa kroz
>>> mrezu pa bili oni jedna ili vise datoteka.
>
> Pa sad, razlika provlacenja 2.4 Mb u odnosu na 700 kb se
> itekako da osetiti ! 'Jednu datoteku' sam pomenuo u vezi
> sa brojem otvorenih fajlova u jednom trenutku a NE u vezi
> sa brzinom indeksa.
*II. Indeksi su *mnogo* manji - kod CDX-a se za susedni slog
*smesta samo razlika u kljucu u odnosu na kljuc prethodnog
*sloga (koliko to mnogo : Npr. NTX indeksi u velicini od
*2.4 Mb su se konvertovali u 0.7 Mb CDX pandana; naravno,
*sve zavisi i od tipa kljuca, ali cete ustedeti bar pola)
Pravdanje odnosa 1:5 na stetu CDX-a dolazi u obzir samo kod
pojedinacnog pristupa podacima. Kod bilo kog preracunavanja
zasnovanog na pristupu podacima preko indeksa tako nesto
nije prihvatljivo.
Postoji jos jedan problem sa CDX-om. RTlink na zavrsetku povezivanja
prijavljueje potrebu za 70Kb vecom memorijom potrebnom da bi se
program startovao, pod uslovom da se NTX drajver ne iskljuci iz
EXE programa.
neman
clipper.625aquarius,
-> #617, neman<> Po secanju, NTX je bio oko 50 puta brzi od CDX-a.
1. Secanje je secanje, al' izmeri jos jednom... Cini se da nije
bas toliko drasticno, narocito ne u praksi. Stotinka vise,
manje...
<> jedna datoteka. Ti moras da preturis xxx K(M)B indeksa kroz
<> mrezu pa bili oni jedna ili vise datoteka.
2. Nece biti da je to bas isto :), ima i mreza svoje prohteve,
a "Murphy's Law" kaze... Osim toga xxx K(M)B je dosta manje
kod CDX drajvera nego kod NTX-a, je'l da ?
3. Use File_1 Index Ind_1, Ind_2, Ind_3, ... Ind_15 via DBFNTX
ili
Use File_2 Index Indx_1 via DBFCDX
Bez komentara...
4. set order to 1
goto recno() -> ovo zbog bug-a, kod DBFNTX drajvera
vs
set tag to F_ime
Komentar kao pod brojem 3.
5. Use File_1 via DBFNTX
Index on Filed_1 to Ind_1 FOR
Use File_2 via DBFCDX
Index on Filed_1 to Ind_1 FOR / WHILE / REST / NEXT / DESCENDING
moze ovo i DBFNTX al' REINDEX ne radi, moras da pazis...
6. Memo polja
DBFCDX blok 64 bytes
vs
DBFNTX blok 512 bytes, pa brzina pristupa, velicina, pa binar...
<> vise samu brzinu pretrazivanja. Prvi test koji sam uradio sa
<> CDX indeksima je bilo brzina SEEK naredbe u petlji od vise
<> hiljada puta gde se trazilo jedan slog u bazi od par hiljada
<> slogova. To je bio
7. Imas li takvu aplikaciju, koja sadrzi gore opisanu petlju ? :)
8. Verzija 5.2c ima neke izmene u pogledu RDD-a, a ne znam koju
verziju ti koristis.
9. Ima tu jos toga, ali svako je kovac svoje srece...
10. A da je DBFNTX brz u pretrazivanju, brz je...
Aquarius
clipper.626aquarius,
-> #610, snemcev<> I'll send something else, ok?
Na primer CRC32 :)
Aquarius
clipper.627aquarius,
-> #604, dr.grba<> Od jute, sa aplikacijama od plute (((:
A pluta, je'l domaca :)
Aquarius
clipper.628aquarius,
-> #614, dr.grba<> I to sa kamatom 100%.
Jel dnevno ? ;)
Aquarius
clipper.629aquarius,
-> #623, dzoric<> Kako da nateram GET da skroluje numerike s'desna ulevo,
<> kao na klasicnim digitronima.
Vidi fajl NUM2CALC.ZIP uz poruku 11.598
Aquarius
clipper.630aquarius,
-> #619, ndragan<> Sta, definises tacku da ti izigrava zarez, i zaboravis da je
<> skines, i kompajler sam zna kad ti vise ne treba pa skine sam?
<> Ili moras za svaki GET gde ti to treba da pozivas premapiranje
<> tastera? Ili mu je svejedno da li kucas tacku ili zarez -
<> oboje smatra za tacku? Nisi jasan.
Kompajler zna ono sto mu se kaze. Sta ce oznaciti decimalu
odredis sam u nizu aKeys, tacka je zgodna zbog toga sto se
nalazi na numerickoj tastaturi. Mislim da je "pemapiranje"
teska rec u ovom kontekstu. Ovo pisem on-line, ako nisam jasan
odgovoricu opet. Osim toga kod je tu, pa svako moze da ga
preuredi.
Aquarius
clipper.631dvesic,
-> #623, dzoric>> Kako da nateram GET da skroluje numerike s'desna ulevo,
>> kao na klasicnim digitronima.
Pogledaj nekoliko dana unazad u ovoj konferenciji,
za jednu od poruka je prikacen NUM2CALC.ZIP, koji
je pravo resenje tvog problema.
Pozdrav,
Dejan.
clipper.632dr.grba,
-> #622, snemcev>> Vremena: NTX: 1.52; CDX: 5.22. Znači, usporenje je oko 3.44 puta.
>> Svodeći to na samo jednu pretragu dobijamo vremena od 0.00152 i
>> 0.00522 sec. Koji korisnik tu razliku primeti (pa još u mreži),
>> svaka mu čast!
Mislim da je nadalje izlišno baviti se brzinama koje dobijamo ili gubimo
primenom ovog ili onog drajvera indeksa. Hajde malo da se apsolvira utrošak
memorije, mislim da je ovo kritičnije.
>> Mislim da ovde CDX, bar u mreži odnosi pobedu nad NTX-om.
Sa ovim se, već na nivou dvesiceve rasprave, u potpunosti slažem.
clipper.633dr.grba,
-> #623, dzoric>> Kako da nateram GET da skroluje numerike s'desna ulevo,
>> kao na klasičnim digitronima.
U 11.598 je aquarius priložio funkciju koja to radi; mada ima prilično čudno
ponašanje po pitanju decimalne tačke i onoga iz nje, funkcija radi prilično
zanimljivo.
clipper.634dvesic,
-> #624, neman>> prijavljueje potrebu za 70Kb vecom memorijom potrebnom da bi
>> se program startovao, pod uslovom da se NTX drajver ne
>> iskljuci iz EXE programa.
Pa nesto moras da platis ako zelis pristup i vako i nako !
clipper.635dr.grba,
-> #633, dr.grbaMolim za pomoć u delu Clippera kojim ne vladam dobro.
Dvesic mi je poslao demo program, koji je u cilju uštede UL/DL procedura
smlatio PLL opcijom. Prethodno sam i ja njemu slao neki demo, a on nije mogao
da ga startuje. Nakon par poruka dobio sam sugestiju da relinkujem BASE52.PLL,
jer to nisam uradio nakon PATCH operacije na reviziju Clipper 5.2c.
Ja to i uradih, a potom sam startovao program i dobio:
error est0003: Error loading required .PLL "BASE52.PLL" .... .RTLink Startup
Abort.
error est0008: Incorrect PLL Checksum.
Važna napomena je da sam prilikom relinkovanja PLL datoteke dobio
poruku linkera:
UNDEFINED SYMBOL(S) AFTER LIBRARY SEARCH:
SYMBOL FIRST REFERENCE
------ ---------------
'RDDSYS' CLIPPER.LIB
(Not defined by
user request)
'ERRORSYS' CLIPPER.LIB
(Not defined by
user request)
'__START_SYM' CLIPPER.LIB
(Not defined by
user request)
'_end' CLIPPER.LIB
'_edata' CLIPPER.LIB
These should be resolved at .EXE generation time
Obratite pažnju na ovaj poslednji red...
Osećam se prilično bespomoćno... Možete li naslutiti u kom smeru je
razrešenje? Da se pripremim za preinstalaciju Clippera? (o, ne samo to ne!)
Napominjem da sam Clipper instalirao, a potom upotrebio direktan patch na
reviziju C, dakle bez međukoraka. Po dokumentaciji, ovo je u redu.
Takođe napominjem da su sve putanje, SET varijable i okruženje sistema
postavljeni po propisu, višestruko prekontrolisano. Koristim 286 mašinu sa 2 MB
RAM, što znači da nikakve egzotike ne leže rezidentno, osim ponekad NG.
---> Whatever you think you see, this is not a tagline.
clipper.636arazumenic,
Ovo je odgovor na neku od prethodnih poruka, greskom izbrisanom iz SOR-a.
Rec je o datoteci PALETA.ZIP, konkretno o PALETA.RMK.
Ja koristim PROG.RMK datoteku na sledeci nacin:
#ifdef i
// instalaciona verzija
Linker = rtlink čprog.lnk /silent
exefile = prog.exe
dirobj = c:ĐprogĐinstall
.prg.obj:
clipper $** /l /m /n /w /o$(dirobj)Đ$*.obj
#else
#ifdef d
// debug verzija
Linker = rtlink prog.lnk /silent
exefile = debug.exe
dirobj = c:ĐprogĐdebug
.prg.obj:
clipper $** /b /m /n /w /dDEBUG /o$(dirobj)Đ$*.obj
#else
// radna verzija
Linker = blinker prog.ln1
exefile = radni.exe
dirobj = c:ĐprogĐradni
.prg.obj:
clipper $** /m /n /d /w /o$(dirobj)Đ$*.obj
#endif
#endif
$(dirobj)Đglavni.obj : glavni.prg
$(dirobj)Đinit.obj : init.prg
......
$(exefile) : $(dirobj)Đglavni.obj $(dirobj)Đinit.obj Đ
....
$(Linker)
Ovde koristim tri poddirektorijuma koji mi sluze samo za cuvanje .OBJ fajlova:
install, debug, radni.
Prednosti:
- ne moraju da se brisu .obj fajlovi kada god se prevodi sa drugim svičem što
prouzrokuje da se uvek prevode samo menjani fajlovi, a ne svi
- manje je fajlova u osnovnom (prog) direktorijumu
Mana:
- povecan utrosak prostoru na hard disku (oko 500kb - zanemarljivo)
Saša
clipper.637zorand,
-> #616, svaba> Naime, pri prevodenju programa sa CLIPPER 5.xx pojavljuje
> se poruka u stilu "string space exhausted", sa navodenjem
> funkcije i rednog broja
Bug Clippera 5.2 (CA) - !! Resenje: PATCH na 5.2c
Zoran
clipper.638v.nesic,
-> #623, dzoric> Kako da nateram GET da skroluje numerike s'desna ulevo,
> kao na klasičnim digitronima.
PC.PROG.3: 11.299, autor toma.
clipper.639aquarius,
-> #619, ndragan
Takav sam covek, pa moram jos da pojasnim :), on-line je on-line,
a editor je editor.
<> Sta, definises tacku da ti izigrava zarez, i zaboravis da je
<> skines, i kompajler sam zna kad ti vise ne treba pa skine sam?
<> Ili moras za svaki GET gde ti to treba da pozivas premapiranje
<> tastera?
nVar1 := 0.00
...
ob1Get:reader := { |oGet| NL_GetReader( oGet ) }
OVDE tacka i zarez iniciraju postavljanje kursora na
odgovarajuce mesto
cVar1 := Spac(10)
...
ob2Get:reader := { |oGet| NL_GetReader( oGet ) }
OVDE tacka i zarez imaju svaka svoju funkciju
...
READMODAL( GetList )
TACKA izigrava ZAREZ samo u slucaju NUMERICKIH promenjivih,
i to samo ako se koristi *NL_GetReader()*, -izigrava- ga u smi-
slu da postavlja kursor na odgovarajuce mesto, dakle ako pogle-
das source, videces da kompajler nema veze s tim, u smislu ne-
kog prepoznavanja kad, sta i kako, niti formulacija "premapira-
nje" tu ima mesta. A kad smo vec kod "premapiranja", koje
izgleda predstavlja problem, sta se dobija komandom FOX-a :
<> On Key Label "." Keyb ","
i sta tu izigrava TACKA :))), i moze li se poistovetiti sa ne-
cim iz mojeg koda? O zaboravljanju i skidanju nema potrebe ra-
zmisljati, jer tu nista nije ni pamceno, ni postavljano, sve
sto treba uraditi je:
oGet:reader := { |oGet| NL_GetReader( oGet ) }
a funkcija *fNumsOnly()* brine dalje.
<> tastera? Ili mu je svejedno da li kucas tacku ili zarez -
<> oboje smatra za tacku?
U ovom slucaju TACKA je zgodnija od ZAREZA jer se nalazi
na numerickoj tastauri.
Clipper 5.2c
n := 0.00
@ 10, 10 Get n Pict "999.99"
Read
Gde ce se postaviti cursor pritiskom na taster TACKA ".",
a gde pritiskom na TASTER zarez "," ???
U OBA slucaja na DECIMALU.
<> Nisi jasan.
Da li sada jesam ?
I na kraju, namera je bila da dam svoj prilog lepoj akciji.
Svako neka prosudi i presudi, pa ako nadje za shodno ili
zgodno da to upotrebi bice dobro, ako ne opet dobro. U sva-
kom slucaju, spreman sam da prodiskutujem o svemu.
btw - Da li si probao kako radi NUM2CALC.exe ?
Moze li nesto slicno da se uradi u FOX-u ?
P.S. Ovo me je nateralo da ponovo pregledam kod, te ustanovih
da pritisak na ZAREZ nema isti efekat kao pritisak na TACKU.
Saljem fajl sa ispravkom ove greske.
Sretna Srpska Nova Godina svim Sezamovcima !
Aquarius
num2calc.zipclipper.640aquarius,
-> #633, dr.grba<> U 11.598 je aquarius prilozio funkciju koja to radi; mada ima
^^^^^^^^
<> prilicno cudno ponasanje po pitanju decimalne tacke i onoga iz
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<> nje, funkcija radi prilicno zanimljivo.
^^^
?
Aquarius
clipper.641dzoric,
Poziv svim Clipper, C, ASM programerima !!!
Imam predlog da zajedničkim snagama uradimo Public Domain
Library za Clipper( SEZAM.LIB ), možda po uzoru na Nanfor.lib.
Svako bi dostavio predlog funkcija koje bi ušle u LIB. Tačno je
da postoje lib-ovi koji rade sve i svašta ali ima i dosta
specifičnih stvari koje su vezane za naše podneblje. Ajde da
sve to sredimo, dokumentujemo i stavimo svima na raspolaganje.
Možda bi moderator konferencije mogao da vodi ovaj projekat.
Iznesite svoje mišljenje...
P.S. Zahvalan sam za Num2Calc.zip, to je to...
Pozdrav..
Dejan
clipper.642aquarius,
-> #612, dvesic<> Evo moj mali doprinos radu konferencije ...
<>
<> Nadam se da ce nekom koristiti ...
<>
<> Moja iskustva u radu sa CDX ideksima
Directory of C:\CLIPPER5\OBJ
NTXLOCK2 OBJ 302 06-10-93 5:22p
CDXLOCK OBJ 6679 08-06-93 5:23p
Vec sam pitao dva puta, ali bezuspesno. Imas li iskustva
sa ova dva fajla. Narocito me zanima CDXLOCK.OBJ . Cemu sluze.
Aquarius
clipper.643bulaja,
-> #641, dzoric│Imam predlog da zajedničkim snagama uradimo Public Domain
│Library za Clipper( SEZAM.LIB ), možda po uzoru na Nanfor.lib.
└───
Razmisljao sam ja jos davno o tome, ali sam zakljucio da jos nije
vreme za to :). Bice vreme onda kada se na Sezamu skupi kriticna
kolicina raznih domacih funkcija i biblioteka za Clipper, a za
sada (i pored nekoliko zanimljivih priloga u poslednje vreme) to
jos uvek nije slucaj. No, ne treba odustajati od ove ideje :) -
mozda vec za mesec-dva budemo mogli konacno da napravimo
SezamClip v1.0 Library! :).
clipper.644nbatocanin,
-> #620, dvesic> U obradi n slogova brzina dbSeek-a je (skoro) nevazna
> u odnosu na brzinu dbSkip-a uz odredjene indekse.
Ne uvek. Ako je tekuća tabela spojena sa SET RELATION sa 2-3 druge,
onda ti je svako pomeranje pokazivača sloga u tekućoj tabeli, u
stvari, nekoliko puta SEEK. A ovo je veoma često.
> Gde je razlika od 5 (50) puta ? Nesumnjivo su NTX indeksi
> za koji procenat brzi, sto je i logicno - ipak su oni
> genericki format za Clipper.
SIX drajver koristi isti format, pa je (izgleda) brži od NTX
drajvera. Pre će biti da CA namerno traljavi sa CDX drajverom i tako
ostavlja prostor za druge proizvođače.
clipper.645ndragan,
-> #630, aquarius/ Kompajler zna ono sto mu se kaze. Sta ce oznaciti decimalu
/ odredis sam u nizu aKeys, tacka je zgodna zbog toga sto se
/ nalazi na numerickoj tastaturi. Mislim da je "pemapiranje"
Ajmo onda u detalje. Kad ja u foksu stavim
on key label "." keyboard ","
on mi do daljnjeg (dok ne skinem) svaki pritisak na tačku pretvara u
zarez. Zato to i ne radim, nego na GET ostavim decimalnu tačku, a na
izveštajima držim decimalni zarez i tačku za hiljade.
Mislio sam na premapiranje tog jednog tastera za vreme GETa, što u
načelu može da se izvede i ovako. Kada se radi ta predefinicija u
kluperu, i odakle dokle važi. Da li na nivou jednog GETa, na nivou
jednog READa, ili od stavljanja do skidanja?
clipper.646ndragan,
-> #617, neman/ Racunarima koji je samo potrvdio tezu da je CDX dosta traljavo
/ realizovan
CDX je super, možda je drajver traljav. U samom foksu, gde je taj indeks
domaći, doprinosi poprilično.
Za pravi test, nemoj hiljadu puta tražiti isti slog. Strpaj sto ključeva
iz sto slučajnih slogova u niz, pa traži kroz petlju te slogove redom.
Tako ćeš odsimulirati stvarnu situaciju bolje nego u prvom testu.
Drugo, ideja .cdx indeksa nije samo u dobijanju kompaktnijeg indeksa,
nego da se za masovne pretrage po bazi ne čita sama baza, nego samo
indeks. Ubrzanje je u foksu drastično, a čisto sumnjam da je baš cela
Rašmor tehnologija ugrađena u CDX drajver za kliper.
clipper.647dvesic,
-> #644, nbatocanin>> SIX drajver koristi isti format, pa je (izgleda) brzi od NTX
>> drajvera. Pre ce biti da CA namerno traljavi sa CDX drajverom
>> i tako ostavlja prostor za druge proizvodace.
Razlike u brzini sa SIX i (najnovijim) CDX drajverom su vrlo
male (provereno).
Sto se tice relacija, opet, kada sve uzmes u obzir korisnik
NECE primetiti usporenje u MREZNOJ varijanti (provereno ;)
Doduse, malo, malecno usporenje se primecuje u jednokorisnickoj
varijanti, ali to sam ja primetio, jer sam na to obracao
paznju.
clipper.648dr.grba,
-> #635, dr.grba>> Osećam se prilično bespomoćno... Možete li naslutiti u kom smeru je
>> razrešenje? Da se pripremim za preinstalaciju Clippera? (o, ne samo
>> to ne!)
Preinstalacijom Clippera i patch procedurom ispočetka stvar je sređena.
Evidentno sam nešto pobrljavio u prvobitnoj proceduri. Jedinno logično
objašnjenje je, dakle, moja greška.
I zato se izvinjavam na buci koju sam napravio.
clipper.649dr.grba,
-> #636, arazumenic>> Mana:
>> - povecan utrosak prostoru na hard disku (oko 500kb - zanemarljivo)
...koji je po mom viđenju izlišan. Vidiš, onaj RMK koji ja koristim radi
dobro zato što ću radnu verziju (bez brisanja .OBJ) koristiti redovno,
a DEMO ili FINAL verziju uradiću na samom kraju, a najviše jednom u par
dana. Prema tome, izlišno je bojati se praktično retkih prilika kada
se svi PRG fajlovi ponovo kompiluju. Taj utrošak vremena kod mene u praksi
teško da prelazi pet minuta nedeljno...
No, sad, taj tvoj primer je izvrsna ilustracija mogućnosti RMAKE skriptova.
Krajnja namera i meni je bila reklamiranje onog što je svima nama ispred nosa,
a što mnogi od nas - bez ikakvog logičnog razloga - ne upotrebljavaju.
I sa zadovoljstvom ću se poigrati tim skriptom.
clipper.650snemcev,
-> #642, aquarius>> NTXLOCK2 OBJ 302 06-10-93 5:22p
Ovo ima veze sa zaključavanjem .ntx datoteka u mreži. Stari Clipper
koristi ofset 1,000,000,000 decimalno, a kako se ispostavilo da to nije
uvek dovoljno daleko, nov koristi FFFFFFFFh (što je i maksimum) tako da
po tom pitanju nisu kompatibilni, pa ako hoćeš da koristiš novu šemu
zaključavanja (što radiš svesno znajući da u neki stari program može da
upotrebi ovako zaključan index i izazove ko zna kakve posledice), moraš
eksplicitno navesto zahtev za linkovanje ovog .obj u .exe.
clipper.651arazumenic,
-> #649, dr.grba-> dobro zato što ću radnu verziju (bez brisanja .OBJ) koristiti redovno,
-> a DEMO ili FINAL verziju uradiću na samom kraju, a najviše jednom u par
Da, ovo je tačno. Ali ne užasno nervira čekanje da izvrši prevodjenje svih
.PRG fajlova (jedan program ima ih tačno 50, oko 420 kb sorsa).
A još kada bi moglo u .LNK fajlu da se napiše nešto kao:
#ifdef d
...
#endif
pa da nemam dva-tri skript fajla za linker, bilo bi izvanredno.
Saša
clipper.653dr.grba,
-> #643, bulaja>> mozda vec za mesec-dva budemo mogli konacno da napravimo
>> SezamClip v1.0 Library! :).
Podržavam ovu izvanrednu ideju iz sve snage!
Mislim da bi Bulaja bio dobar koordinator akcije.
clipper.652dr.grba,
-> #640, aquarius>> <> prilicno cudno ponasanje po pitanju decimalne tacke i onoga iz
...
>> ?
Ako otkucam 1234.5<ENTER>, ja očekujem da sam otkucao 1234.50, a ne 1234.05.
Ovo je u najmanju ruku čudno, ako ne bismo stvar nazvali i bagom.
Da li je sad jesna moja opservacija?
clipper.654neman,
-> #646, ndragan> indeks. Ubrzanje je u foksu drasticno, a cisto sumnjam da
> je bas cela Rasmor tehnologija ugradena u CDX drajver za
> kliper.
Ja Rushmore tehniku ubacujem sam u program, a i nisam znao da se to
tako zove :)
neman
clipper.655dr.grba,
-> #651, arazumenic>> Da, ovo je tačno. Ali ne užasno nervira čekanje da izvrši
>> prevodjenje svih .PRG fajlova (jedan program ima ih tačno 50, oko
>> 420 kb sorsa).
Ne znam kako ti to radiš, ali ovi momenti su kod mene posvećeni toploj, crnoj
mirišljavoj tečnosti proizvedenoj kuvanjem praha dobijenog mlevenjem prženih
semenki jedne tropske biljke (:
>> A još kada bi moglo u .LNK fajlu da se napiše nešto kao:
(((: A ja mislio da sam jedina lenština među kliperašima na Sezamu (((:
clipper.656dr.grba,
-> #654, neman>> Ja Rushmore tehniku ubacujem sam u program, a i nisam znao da se to
>> tako zove :)
A kako to radiš?
---> Peek Poke, čaj za bolje programiranje.
clipper.657dragisha,
-> #646, ndragan-> Drugo, ideja .cdx indeksa nije samo u dobijanju kompaktnijeg indeksa,
-> nego da se za masovne pretrage po bazi ne čita sama baza, nego samo
Bilo koji indeks koji koristi nešto jače od običnog B drveta ne čita
bazu, osim kad radi Get (i piše kad radi Delete)!? Razlika u brzini između
ta dva pristupa je ogromna i ne mogu da vjerujem da neko ima komercijalan
DBMS koji koristi obično B drvo!? Ima li?:)
BTW (da ne pravim dvije replike:) dvesic je rekao da manji broj
datoteka doprinosi brzini mrežnog rada. Malo kliperaški ograničeno:), nije
mu palo na pamet da je najbrži mrežni rad onaj u kome se datoteke ne bi
stalno otvarale-zatvarale kako to radi većina "mrežo-podržavajućih"
programa.
clipper.658madamov,
Interesuje se jedan moj drugar da li postoji neka biblioteka za Clipper za
rad sa bar kodom?
clipper.659dvesic,
-> #657, dragisha>> BTW (da ne pravim dvije replike:) dvesic je rekao da manji
>> broj datoteka doprinosi brzini mreznog rada. Malo kliperaski
>> ograniceno:), nije mu palo na pamet da je najbrzi mrezni rad
>> onaj u kome se datoteke ne bi stalno otvarale-zatvarale kako
>> to radi vecina "mrezo-podrzavajucih" programa.
Palo mi je na pamet ! Objasni mi samo, molim te, kako da u
projektu za celu firmu (Velikoprodaja, maloprodaja, plate,
sintetika, analitika, reprodukcija ...) dobijem na brzini
drzeci otvorenih 36 baza sa pripadajucim indeksima ?
Pozdrav,
Dejan.
clipper.660neman,
-> #656, dr.grba> A kako to radis?
Zar stvarno neznas sta je Rushmore ;)
neman
clipper.661neman,
-> #659, dvesic>>> onaj u kome se datoteke ne bi stalno otvarale-zatvarale
>>> kako to radi vecina "mrezo-podrzavajucih" programa.
> sintetika, analitika, reprodukcija ...) dobijem na brzini
> drzeci otvorenih 36 baza sa pripadajucim indeksima ?
A sto da ne budu otvoreni. Radi se samo o tome da radis dbcommit() redovno
i sve je ok. Inace otvaranje & zatvaranje datoteka je spora stvar da bi se
non-stop izvrsavala.
neman
clipper.662arazumenic,
-> #655, dr.grba-> (((: A ja mislio da sam jedina lenština među kliperašima na Sezamu (((:
Nije ovde u pitanju samo lenjost, već mi se dešavalo da zaboravim da dodam
funkciju u skript fajl. A najgora stvar je ta kada izbacujem neku funkciju,
ako zaboravim da je izbacim iz skript fajla, onda se onda ulinkuje u program
i nepotrebno zauzima mesto.
Saša
clipper.665dr.grba,
Poznato mi je da postoji jedan bit koji će opredeliti da li će
deklaracija boje "N/W*" rezultovati blinkom ili highlight pozadinom.
Hteo bih da mogu ovo da iskoristim, tj. da bude pod mojom kontrolom.
Dakle, ako hoću jedno, da ekran izgleda tako, ako hoću drugo, takođe.
Kako nisam poznavalac asemblera, koji je verovatno neophodan da bi se
ovo rešilo, molio bih neku dobru dušu da mi pomogne.
Takođe bih voleo da čujem raspravu na temu kako se ovo ponaša na
različitim video kartama. Poseban akcenat u mojim potrebama jeste
Hercules grafika.
---> žaj Peek Poke, podmladite svoje programe!
clipper.664dr.grba,
-> #661, neman>> i sve je ok. Inace otvaranje & zatvaranje datoteka je spora stvar
>> da bi se non-stop izvrsavala.
Ne non stop. Ali kad treba.
Ježim se od programa koji na početku otvore sve moguće baze i pripadajuće
indekse, trebale one - ne trebale, po principu "Vozi, Miško". To je u
najmanju ruku neozbiljno i nedostojno profesionalnog pristupa programiranju.
---> žaj Peek Poke, low level inspiracija.
clipper.663dr.grba,
-> #660, neman>> > A kako to radis?
>>
>> Zar stvarno neznas sta je Rushmore ;)
Znam šta je Rushmore. I znam da je inplementiran na niskom nivou. Što će
dalje reći da nije na meni kao programeru da se time bavim. A tvoja poruka
je aludirala na neke ručne intervencije koje bi trebalo da posećaju na Rushmore
tehnologiju. Ako sam te pogrešno razumeo, izvini. A ako te nisam pogrešno
razumeo, onda te molim da u par reči kažeš kako ti to radiš, čisto
informativno, jer sticajem okolnosti ova tema u ovoj konferenciji se
bavi razmenom iskustava u radu sa Clipperom.
----> žaj Peek Poke, za vašeg kompjutera skok!
clipper.666djelovic,
-> #664, dr.grba> Ježim se od programa koji na početku otvore sve moguće baze i pripadajuće
> indekse, trebale one - ne trebale, po principu "Vozi, Miško". To je u
> najmanju ruku neozbiljno i nedostojno profesionalnog pristupa programiranju
A zašto da se ne radi tako? Ne vidim razloga da se ekonomiše sa otvorenim
datotekama. Jel to neka specifičnost Clippera ili opšti princip?
clipper.667bulaja,
-> #665, dr.grba│Poznato mi je da postoji jedan bit koji će opredeliti da li će
│deklaracija boje "N/W*" rezultovati blinkom ili highlight pozadinom.
│Hteo bih da mogu ovo da iskoristim, tj. da bude pod mojom kontrolom.
└───
Nisam bas siguran da sam shvatio sta hoces :), ali u Clipper-u postoji
funkcija SetBlink() kojom odredjujes kako ce se tretirati "*" u color
atributima:
SETBLINK()
Toggle asterisk (*) interpretation in SETCOLOR() string between blinking and
background intensity
──────────────────────────────────────────────────────────────────────────────
Syntax
SETBLINK([<lToggle>]) --> lCurrentSetting
Arguments
<lToggle> changes the meaning of the asterisk (*) character when it
is encountered in a SETCOLOR() string. Specifying true (.T.) sets
character blinking on and false (.F.) sets background intensity. The
default is true (.T.).
Returns
SETBLINK() returns the current setting as a logical value.
Description
SETBLINK() is an environment function that toggles the
blinking/background intensity attribute and reports the current state of
SETBLINK(). When SETBLINK() is on, characters written to the screen can
be made to blink by including an asterisk (*) in a color string passed
to SETCOLOR(). When SETBLINK() is off, the asterisk (*) causes the
background color to be intensified instead. Thus, blinking and
background intensity attributes are not available at the same time.
clipper.668madamov,
-> #666, djelovic
> Jel to neka specifičnost Clippera ili opšti princip?
Valjda opšti princip, jer ako skikne da se nanese što manje štete po
otvorene datoteke.
clipper.669neman,
-> #663, dr.grba> Znam sta je Rushmore. I znam da je inplementiran na niskom
> nivou. Sto ce dalje reci da nije na meni kao programeru da
> se time bavim.
Ja radim to isto, znaci da pri pravljenju upita na bazu sam
povedem racuna o tome da li mogu da ubrzam pristup odgovarajucim
podacima koriscenjem indeksa. Samim tim smatram da jeste na meni
da vodim racuna o organizaciji podataka. A Rushmore tehniku u konkretnoj
implementaciji na Foxu nisam koristio, citao sam samo o tome u Racunarima,
i informisao se tu i tamo a mislim i ovde:).
neman
clipper.670neman,
-> #664, dr.grba> Ne non stop. Ali kad treba.
Treba samo kad se izlazi iz programa ili neko pokusava reindeksiranje.
> Jezim se od programa koji na pocetku otvore sve moguce
> baze i pripadajuce indekse, trebale one - ne trebale, po
> principu "Vozi, Misko". To je u
Pa i ja mislim i primenjujem to da program treba da otvori sve potrebne
datoteke ( mislim i na indekse ) pa bilo njih i 30-40.
neman
clipper.671neman,
-> #668, madamov> Valjda opsti princip, jer ako skikne da se nanese sto
> manje stete po otvorene datoteke.
Jel se to opet vracamo na raspravu o DBCOMMIT()-u ??
neman
clipper.672dejanr,
-> #666, djelovic>> > Ježim se od programa koji na početku otvore sve moguće baze i
>> > pripadajuće indekse, trebale one - ne trebale, po principu
>> > "Vozi, Miško". To je u najmanju ruku neozbiljno i nedostojno
>> > profesionalnog pristupa programiranju
>>
>> A zašto da se ne radi tako? Ne vidim razloga da se ekonomiše sa otvorenim
>> datotekama. Jel to neka specifičnost Clippera ili opšti princip?
Ako se radi "po knjizi", datoteku treba otvarati tek onda kada je njen
sadržaj potreban i zatvarati u onom trenutku kada njen sadržaj prestane
da bude potreban. Tako se, u teoriji (a i u praksi) obezbeđuje maksimalna
sigurnost podataka, pošto je zatvorena datoteka manje podložna oštećenjima
od otvorene.
Sa druge strane, ja ne držim previše do te teorije - prečesto otvaranje
datoteka i indeksa troši dosta vremena (uvek probaj, dal' je na disku,
dal' su indeksi na disku, može li da se otvori itd), a sigurnost je sasvim
dovoljna ako se po intervenciji uradi COMMIT (ili odgovarajuća naredba).
clipper.673dvesic,
Jedna mala zanimljivost :
Usmerite kreiranje OBJ fajlova u (skoro) pun direktorijum i
krenite da kompajlirate neki veliki projekat .. Dobija se
greska koja nema bas mnogo veze sa problemom ...
clipper.674snemcev,
>> Usmerite kreiranje OBJ fajlova u (skoro) pun direktorijum i
A kakav je to "pun direktorijum"? Zar Dos ne alocira klastere za
direktorijume po potrebi?
clipper.675dr.grba,
-> #667, bulaja>> Nisam bas siguran da sam shvatio sta hoces :), ali u Clipper-u
>> postoji funkcija SetBlink() kojom odredjujes kako ce se tretirati
>> "*" u color atributima:
A? Gubim kosu!
I pokrivam se ušima. Da, trebalo mi je to što radi ta funkcija.
...Ali ja i dalje odbijam da naučim napamet sve funkcije i komande Clippera.
clipper.676dr.grba,
-> #670, neman>> Pa i ja mislim i primenjujem to da program treba da otvori sve
>> potrebne datoteke ( mislim i na indekse ) pa bilo njih i 30-40.
Kako hoćeš. Ja ostajem pri svome.
clipper.677dr.grba,
-> #673, dvesic>> Usmerite kreiranje OBJ fajlova u (skoro) pun direktorijum i
>> krenite da kompajlirate neki veliki projekat .. Dobija se
Htede li ti to reći "pun disk"?
clipper.678madamov,
-> #671, neman
> Jel se to opet vracamo na raspravu o DBCOMMIT()-u ??
Nemam pojma, u Clipperu samo gostujem ponekad, pratim ovu temu zbog drugara
koji se njime bave a nisu na Sezamu. Mislio sam da je dr.grba govorio i
generalno o kulturi otvaranja/zatvaranja fajlova.
clipper.679dr.grba,
-> #678, madamov>> koji se njime bave a nisu na Sezamu. Mislio sam da je dr.grba
>> govorio i generalno o kulturi otvaranja/zatvaranja fajlova.
E, da. Moglo bi se pričati i o mnogim drugim sličnim stvarima, ali čak i
mene moj sopstveni cinizam ponekad umori...
clipper.680dvesic,
-> #674, snemcev>> A kakav je to "pun direktorijum"? Zar Dos ne alocira klastere
>> za direktorijume po potrebi?
Alocira. Greska u izrazavanju.
Nisam mislio "pun" u smislu da je npr. u root-u popunjeno 63 od 64
mesta za fajlove vec u smislu da je na tom disku ostalo jos
kilobajt - dva.
clipper.681bulaja,
-> #666, djelovic│A zašto da se ne radi tako? Ne vidim razloga da se ekonomiše sa otvorenim
│datotekama. Jel to neka specifičnost Clippera ili opšti princip?
└───
Pa svaka otvorena datoteka ti guta odredjenu memoriju za file buffer.
Ako je prostor koji se koristi za smestanje buffer-a ogranicen (a mislim
da je kod Clipper-a ogranicen na 64 Kb za sve otvorene datoteke), onda
ce veci broj otvorenih datoteka znaciti manji prosecan buffer, sto opet
znaci dosta sporiji rad sa diskom. Cak i da ovaj prostor nije interno
ogranicen, cini mi se da je mnogo bolje da se neke datoteke otvaraju
samo po potrebi. Npr. ako imas neku datoteku koja se koristi (i to
retko) samo u jednom modulu aplikacije, daleko lakse za odrzavanje ce ti
biti da kompletne poslove sa njom (sto ukljucujue i kreiranje, otvaranje
i zatvaranje) radis samo u tom modulu.
clipper.682djelovic,
-> #681, bulaja> Pa svaka otvorena datoteka ti guta odredjenu memoriju za file buffer.
> Ako je prostor koji se koristi za smestanje buffer-a ogranicen (a mislim
> da je kod Clipper-a ogranicen na 64 Kb za sve otvorene datoteke), onda
> ce veci broj otvorenih datoteka znaciti manji prosecan buffer, sto opet
> znaci dosta sporiji rad sa diskom.
To je daklem Clipper specifičnost :).
BTW, što se tiče sigurnosti podataka, pa i onako se pri svakom
otključavanju sloga/datoteke svi baferi prazne (da bi promene bile vidljive i
ostalim radnim stanicama), te si opet na istom kao da si zatvorio datoteku samo
što si posao uradio znatno brže. A ako gledamo logiku programa, ima li šta
logičnije i konzistentnije od toga da se sve tabele na jednom mestu otvore i na
jednom mestu zatvore, mesto da se to radi po celom programu pa kada naknadno
dodaš joj jedan indeks moraš svuda da menjaš program?
Izgleda da je jedini valjani razlog da se eksplicitno otvaraju i zatvaraju
datoteke po celom programu ušteda fajl hendlova što je bilo bitno na nekim
ranijim sistemima (Novell 2.X mi pada na pamet), ali je danas potpuno nebitno.
Doduše, troši se i neka memorija ali je ona zanemarljivo mala.
clipper.683nbatocanin,
-> #647, dvesic> Sto se tice relacija, opet, kada sve uzmes u obzir
> korisnik NECE primetiti usporenje u MREZNOJ varijanti
> (provereno ;)
Odlično, to je dobra vest. Baš sam ozbiljno nameravao da pređem na
DBFCDX, ali sam odustao zbog povećane potrošnje memorije. Ipak mislim
da je pametno sačekati da nova stvar "odstoji" pa je onda baciti u
realan i surov život.
clipper.684nbatocanin,
-> #646, ndragan> Za pravi test, nemoj hiljadu puta tražiti isti slog.
> Strpaj sto ključeva iz sto slučajnih slogova u niz, pa
> traži kroz petlju te slogove redom. Tako ćeš odsimulirati
> stvarnu situaciju bolje nego u prvom testu.
Naravno, tako i radim. O kom testu govoriš (pišeš)?
clipper.685ndragan,
-> #639, aquarius/ TACKA izigrava ZAREZ samo u slucaju NUMERICKIH
/ promenjivih,
Tj, ti kačiš svoju funkciju kao GET drajver i to je to. Tako nešto ne
postoji u foksu, nego se lepo okači da svaki pritisak na tačku gurne zarez
u bafer tastature i to je onda to. To je onda OKL (on key label) rutina
koja mapira jedan taster, i ako se ne skine na vreme, ostaje aktivna do
kraja.
To je ta razlika što je kliper otvoren za sve moguće manipulacije koje ti
padnu na pamet, a foks već ima sve što mi je dosad palo na pamet.
Eventualno bi se moglo postići odgovarajućom kombinacijom When i Valid
funkcija postići da se pozove tako neki drajver i onda rezultat ukucavanja
direktno krkne u varijablu odnosno polje, i forsirano pređe na sledeći
GEt.
clipper.686ndragan,
-> #657, dragisha/ mu palo na pamet da je najbrži mrežni rad onaj u kome se
/ datoteke ne bi stalno otvarale-zatvarale kako to radi
E pa moraju s vremena na vreme da se zatvaraju. Nemaju sve mušterije
UPSove na svim mašinama. Sad je samo štos u tome da se to minimizuje.
clipper.687ndragan,
-> #659, dvesic/ drzeci otvorenih 36 baza sa pripadajucim indeksima ?
Sve otvoreno? Kako izdržavaš tu promaju?
clipper.688ndragan,
-> #662, arazumenic/ Nije ovde u pitanju samo lenjost, već mi se dešavalo da
/ zaboravim da dodam funkciju u skript fajl. A najgora stvar
Aman čoveče napiši neko programče koje će da ti pretrči po direktoriju
i ispiše nov .lnk fajl. Ili si ona druga vrsta lenjih programera koju
mrzi da napiše nešto nego kuca istu kobasicu sto puta?
clipper.689arazumenic,
-> #688, ndragan-> Aman čoveče napiši neko programče koje će da ti pretrči po direktoriju
-> i ispiše nov .lnk fajl. Ili si ona druga vrsta lenjih programera koju
-> mrzi da napiše nešto nego kuca istu kobasicu sto puta?
Nije problem u tome da se napiše to programče, a naravno da mi je lakše da
ga napišem nego da stalno ispravljam sve .lnk fajlove. Ali (večito ali)
tu ima jedan problem.
Glavni meni ima 5 izbora. Svaki od njih ima još 3-9 podizbora, a neki od njih
još 2-7 podpodizobra. U .rmk i .lnk fajlovima su navedeni po meni najlogičnijim
redosledom:
// glavni1
podizbor1
podpodizbor1
podpodizbor2
...
podizbor2
podpodizbor1
podpodizbor2
...
// glavni2
E to programče ne može znati gde da ga doda.
Saša
clipper.690arazumenic,
-> #675, dr.grba-> ...Ali ja i dalje odbijam da naučim napamet sve funkcije i komande Clippera.
Pa ne moraš da ih učiš napamet. Kada ti nešto zatreba, startuj NG, otvori
uputstvo, pregledaj ranije poruke...
Saša
clipper.691dr.grba,
-> #681, bulaja>> samo po potrebi. Npr. ako imas neku datoteku koja se koristi (i to
>> retko) samo u jednom modulu aplikacije, daleko lakse za odrzavanje
>> ce ti biti da kompletne poslove sa njom (sto ukljucujue i
>> kreiranje, otvaranje i zatvaranje) radis samo u tom modulu.
Amin!
clipper.692dr.grba,
-> #682, djelovic>> logičnije i konzistentnije od toga da se sve tabele na jednom mestu
>> otvore i na jednom mestu zatvore, mesto da se to radi po celom
>> programu pa kada naknadno dodaš joj jedan indeks moraš svuda da
>> menjaš program?
A zar ne bih mogao da iskoristim funkciju Open(dbf_name)? Pa u njoj da
obavim sve vudu vradžbine?
clipper.693bulaja,
Da li je neko slucajno imao prilike da vidi :) fajl C52G03B.NG -
Clipper 5.2 Technical Reference? :)
clipper.694bulaja,
-> #682, djelovic│A ako gledamo logiku programa, ima li šta logičnije i konzistentnije od
│toga da se sve tabele na jednom mestu otvore i na jednom mestu zatvore,
│mesto da se to radi po celom programu pa kada naknadno dodaš joj jedan
│indeks moraš svuda da menjaš program?
└───
Logicno je ako se radi o bazama podataka koje se koriste cesto, tj.
koje su osnova programa. Ali ako imas baze podataka koje se koriste
retko i samo u odredjenim delovima programa, onda nema nikakve potrebe
da ti ta baza zvrji otvorena i trosi handle ili file buffer. Ako imas
standardizovane funkcije za otvaranje baza i indeksa (npr. preko
recnika podataka), za promene koje bi nastale dodavanjem indeksa ne
treba uopste da brines.
Zamisli slucaj da imas neke baze podataka koje se relativno retko
pozivaju - npr. u programu imas popunjavanje nekih obrzaca sa
adresama, siframa delatnosti, kursem marke itd. Korisnik moras
omoguciti da iz polja za unos pozove help gde iz tabele moze izabrati
neki postanski broj mesta, sifru delatnosti, ili kurs marke iz baze
kurseva. Mozes uraditi da ti te baze stoje stalno otvorene, a mozes ih
otvarati tek po potrebi, iz help procedure. Ako se odlucis da takve
baze otvaras tek kad ti zatrebaju (u help proc), onda mozes kompletan
help za izbor odredjenog podatka (PostBroj, SifDel, KursDEM) da
zatvoris u jedan modul i prekines da brines o bilo cemu. Onda istu
proceduru mozes da koristis u drugim programima, ne misleci da li su
baze otvorene i ne. Cak i da u nekom programu istu bazu drzis vec
otvorenu, ne moras mnogo da lupas glavu oko toga jer se ista baza kao
shared moze bez problema otvoriti u vise oblasti.
clipper.695dr.grba,
-> #690, arazumenic>> Pa ne moraš da ih učiš napamet. Kada ti nešto zatreba, startuj NG,
>> otvori uputstvo, pregledaj ranije poruke...
Nogekako. Moj NG direktorijum ima najveći obim od svih: preko 6 MB. (:
Samo je fora videti sve. Nekako nije kunst sedeti i listanjem tražiti
šta sve ide kuda kako kome koliko zašto gde i kada.
Osim toga, imam Sezam (:
P.S. A šta misliš, šta sam uradio 20 sekundi nakon što sam pročitao onu
Bulajinu poruku? (:
clipper.696aquarius,
-> #652, dr.grba<> Ako otkucam 1234.5<ENTER>, ja ocekujem da sam otkucao 1234.50,
<> a ne 1234.05. Ovo je u najmanju ruku cudno, ako ne bismo stvar
<> nazvali i bagom.
<>
<> Da li je sad jesna moja opservacija?
A ako otkucas 1234.50<ENTER> dobices 1234.50 :) . Covek je
trazio skrolovanje numerickog GET-a, s desna na levo. Inace
mislim da si u pravu, ali bi to sto ti ocekujes bilo malo te-
sko za kontrolu. A da ti pravo kazem, meni je to jednom trebalo
zbog neke aplikacije, ljudi bili zadovoljni, i ja to tako ostavio,
nisam dalje razmisljao. Mozda sad hocu! Uostalom ima li predloga ???
Aquarius
clipper.697aquarius,
-> #645, ndragan<> Ajmo onda u detalje. Kad ja u foksu stavim
<>
<> on key label "." keyboard ","
...
<> Mislio sam na premapiranje tog jednog tastera za vreme GETa,
<> sto u nacelu moze da se izvede i ovako. Kada se radi ta
<> predefinicija u kluperu, i odakle dokle vazi. Da li na nivou
<> jednog GETa, na nivou jednog READa, ili od stavljanja do
<> skidanja?
Ta predefinicija ne postoji u Clipper-u, mada bi mogla da se
simulira. Ali sto se tice NUM2CALC-a, nema ni potrebe.
Aquarius
clipper.698aquarius,
-> #692, dr.grba<>>> logicnije i konzistentnije od toga da se sve tabele na
<>>> jednom mestu otvore i na jednom mestu zatvore, mesto da se
<>>> to radi po celom programu pa kada naknadno dodas joj jedan
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<>>> indeks moras svuda da menjas program?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<>
<> A zar ne bih mogao da iskoristim funkciju Open(dbf_name)? Pa u
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<> njoj da obavim sve vudu vradzbine?
Probaj da iskoristis DBFCDX drajver. :) !
Aquarius
clipper.699aquarius,
-> #695, dr.grba<> Nogekako. Moj NG direktorijum ima najveci obim od svih: preko
<> 6 MB. (:
^^^^
Samo ?
<>
<> Samo je fora videti sve. Nekako nije kunst sedeti i listanjem
<> traziti sta sve ide kuda kako kome koliko zasto gde i kada.
Treba procitati makar jednom, da ti ostane u secanju da tako nesto
postoji, pa posle samo potrazis. Uostalom zar tvoja poruka 11.206 ne
zapocinje ovako :
<> Mnogi progameri, u koje spada vecina nas, su skloni da
<> preskacu drugarske sugestije kojih ima na tone po raznim
<> tutorijalima, NG i Hypertext fajlovima, istovremeno se ljuteci
<> zasto "bas ovo nedostaje u jeziku, kakva glupost, sad moram to
<> sam da resavam....."
:)))
Aquarius
clipper.700aquarius,
-> #685, ndragan<> Tj, ti kacis svoju funkciju kao GET drajver i to je to. Tako
<> nesto ne postoji u foksu, nego se lepo okaci da svaki pritisak
<> na tacku gurne zarez
Tako nekako... Samo sto je to o:GetReader, a ne drajver.
Aquarius
clipper.702aquarius,
-> #693, bulaja<> Da li je neko slucajno imao prilike da vidi :) fajl C52G03B.NG
<> - Clipper 5.2 Technical Reference? :)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Bilo bi zanimljivo videti, mada sam nacuo da to ide uz knjigu
sa istim nazivom koji si gore naveo.
Aquarius
clipper.701aquarius,
-> #664, dr.grba<> Jezim se od programa koji na pocetku otvore sve moguce baze i
<> pripadajuce indekse, trebale one - ne trebale, po principu
<> "Vozi, Misko". To je u najmanju ruku neozbiljno i nedostojno
<> profesionalnog pristupa programiranju.
Mozda me utisak vara, ali ima li smisla stalno otvarati i zatvarati
baze ako aplikacija koristi 5-10 baza i isto toliko indeksa (CDX) ?
Cini se da Misko brze vozi ako su mu sve baze otvorene, a jos ako ih
nema puno, onda moze i vezanih ociju u rikverc :) .
Aquarius
clipper.703arazumenic,
-> #695, dr.grba-> Nogekako. Moj NG direktorijum ima najveći obim od svih: preko 6 MB. (:
A tebi je nepotreban gubitak (za slučaj moje aplikacije) od 0,5 MB za
.obj datoteke u posebnim direktorijumima?
I šta si sve tu nagurao?
Saša
clipper.704dr.grba,
-> #693, bulaja>> Da li je neko slucajno imao prilike da vidi :) fajl C52G03B.NG -
>> Clipper 5.2 Technical Reference? :)
Trebalo bi zašušuriti po američkim mrežama. Da pitamo snemceva:
Ima li toga u onim spiskovima?
clipper.705dr.grba,
-> #696, aquarius>> A ako otkucas 1234.50<ENTER> dobices 1234.50 :) . Covek je
>> trazio skrolovanje numerickog GET-a, s desna na levo. Inace
>> ...
>> zbog neke aplikacije, ljudi bili zadovoljni, i ja to tako ostavio,
>> nisam dalje razmisljao. Mozda sad hocu! Uostalom ima li predloga ???
Ama, stvar je vrlo dobra! Moja primedba je sitnica u odnosu na dobitak.
Jedino mesto gde je meni zatrebao takav unos je, srećom, za ceo broj (:
A, sad, ne bi bila loša ni ta ispravka, e zbog vremena u dalekoj budućnosti
koja ćemo možda doživeti, a u kojima ćemo opet koristiti delove dinara.
--< * >--
Nije pravo mesto, ali moram da vam ispričam. Pre par dana došli prijatelji u
posetu. Njihov trogodišnji sin pronašao gumenu kasicu prasicu koju je Ana
dobila od komšinice da se igra. I dečko video otvor na leđima praseta:
- Dlagane, a šta je ovo?
- Otvor da ubacuješ novčiće, pa kad uštediš punu kasicu prasicu...
Tog trenutka su svi prisutni pogledali u mene, a je se ugrizao za jezik. Hoće
li naša deca znati šta je to kasica prasica? ):
clipper.706dr.grba,
-> #698, aquarius>> Probaj da iskoristis DBFCDX drajver. :) !
žik pogodi čime se aktuelno igram (((:
clipper.707dr.grba,
-> #699, aquarius>> ... Uostalom zar tvoja poruka 11.206
>> ne zapocinje ovako :
>>
>> <> Mnogi progameri, u koje spada vecina nas, su skloni da
>> <> preskacu drugarske sugestije kojih ima na tone po raznim
>> <> tutorijalima, NG i Hypertext fajlovima, istovremeno se ljuteci
(((:
Imaš piće za ovo! (:
clipper.708dr.grba,
-> #703, arazumenic>> -> Nogekako. Moj NG direktorijum ima najveći obim od svih: preko 6 MB. (:
>> ...
>> I šta si sve tu nagurao?
Kurtu i Murtu (:
clipper.709dragisha,
-> #686, ndragan-> / mu palo na pamet da je najbrži mrežni rad onaj u kome se
-> / datoteke ne bi stalno otvarale-zatvarale kako to radi
->
-> E pa moraju s vremena na vreme da se zatvaraju. Nemaju sve mušterije
-> UPSove na svim mašinama. Sad je samo štos u tome da se to minimizuje.
Ali sve mušterije imaju Flush, zar ne? Od DOS 3.3 pa naviše, standardna
funkcija u okviru 21H.
--
["She's sleeping with Prince Valium tonight..."]
clipper.710dragisha,
-> #668, madamov-> > Jel to neka specifičnost Clippera ili opšti princip?
->
-> Valjda opšti princip, jer ako skikne da se nanese što manje štete po
-> otvorene datoteke.
Nema štete, bar ne više nego sa Close. Commit (iliti Flush) će završiti
isti posao za mnogo kraće vrijeme.
E sad, fora je i tome što svaki otvoreni fajl i index guta mem. Kad neko
radi u kliperu, teško će se odreći nekih 100 kb za te stvarčice.
--
["Life," said Marvin, "Don't talk to ME about life!"]
clipper.711dragisha,
-> #664, dr.grba-> Ježim se od programa koji na početku otvore sve moguće baze i
-> pripadajuće indekse, trebale one - ne trebale, po principu "Vozi,
-> Miško". To je u najmanju ruku neozbiljno i nedostojno profesionalnog
-> pristupa programiranju.
Ježim se od ljudi koji gledaju crno-bijelo:)
U svojim programima većinu datoteka otvorim na početku jer mi je veća
glupost da pri korištenju otvaram, koristim, zatvaram. Manjina su one
datoteke koje su recimo vlasništvo nekog drugog programa i koje se koriste
na malo mjesta u programu. Njih otvaram po potrebi i zatvorim vrlo brzo.
--
[Where can I get one of those computer bats!!]
clipper.712snemcev,
-> #704, dr.grba>> Ima li toga u onim spiskovima?
Sorry, no bonus. Ako sam dobro shvatio dokumentaciju, dobijaš ga kad
kupiš štampan Reference Manual. Ko zna, možda je pod copyright-om. Al'
opet, kad je to bio problem za nas... ;)
clipper.713dr.grba,
-> #711, dragisha>> Ježim se od ljudi koji gledaju crno-bijelo:)
Nemam komentara, iako trošim poruku da bih to rekao ):