PCPROG.3

26 Jul 1993 - 22 Apr 1994

Messages - clipper

clipper.824 bulaja,
**** new file **** R:\IBMPC\DATABASE\*.* ---------------------- dbx132 arj 188705 dbMAX v1.32, utility za rad sa DBF datotekama (obj+hlp) dbx132ex arj 271776 dbMAX v1.32, utility za rad sa DBF datotekama (exe) dbMAX(tm) Version 1.32 Copyright (c) 1991-1993 David A. Kennedy. All rights reserved. INTRODUCTION ============ dbMAX is an xBASE utility that will allow complete multi-user access to any xBASE databases and indexes. The program uses a CUA-type menu system with Brief(R)-style hot keys and can browse databases in up to 250 moveable, sizable windows. Almost every Clipper(R)/dBASE(R) command is available, allowing dbMAX to replace the dBASE Assist/Control Center or Computer Associates' DBU utility. dbMAX also has a partially open architecture, allowing programmers to create their own menus and operate on dbMAX internal data structures.
clipper.825 milanv,
Iz ovog pitanja verovatno će delovati kao da sam upravo pikirao s marsa :) al' ja propisno olupah glavom zid a i dalje mi nije jasno kako da dođem do pojedinačnih fajlova sa instalacionih disketa CLIPPER-a 5.1, konkretno GETSYS.PRG, kome sam namerio izvesne ispravke. Da podsetim, fajlovi su u meni nepoznatom .LIF obliku.
clipper.826 bulaja, -> #825, milanv
│kako da dođem do pojedinačnih fajlova sa instalacionih disketa CLIPPER-a │5.1, konkretno GETSYS.PRG, kome sam namerio izvesne ispravke. │Da podsetim, fajlovi su u meni nepoznatom .LIF obliku. └─── GetSys.prg se instalira u \clipper5\sample\sys\ zajedno sa ostalim primerima, ako prilikom instalacije zadas da ti se kopiraju i primeri.
clipper.827 nbatocanin, -> #823, dr.grba
> U umetku "Clipper 5.2" u poslednjim "Računarima" se > pominje tzv. mađarska notacija. Potpuno je jasno šta ona > znači i čemu služi. Ima u BYTE od 1991. lep tekst. Autor teksta je autor i ove notacije (Charles Simonyi). Kaže da je prvi put upotrebio ovu notaciju 1972. Zove se ovako zato što je ovaj tip Mađar i što se u njoj tip promenljive stavlja pre imena, kao kod ličnih imena u Mađarskoj. Mislim da je članak odličan i rado bi ga video prevedenog u R. > I jedna stvar u kojoj želim da izrazim svoje neslaganje, a > to je terminološki momenat pojma "relaciona baza". > Ali se ne slažem sa uravnilovkom tabela <=> relacija u > kontekstu pojma "relaciona baza podataka". C.J. Date: Database Systems - "The reasons such systems are called 'relational' is because the term 'relation' is essentially just a mathematical term for a table. For most practical purposes, indeed, the terms 'relation' and 'table' can be taken as synonymous." > Nenade, nadam se da te ne vređa ovo što napadam ovaj deo > tvog (inače odličnog) umetka. Taman posla, već sam mislio da te teorijske delove svi preskaču ;)
clipper.829 ndragan, -> #766, bulaja
/ fn_isNet() provides a simple way to determine if the user / running your program is logged in. if fn_isNet() == 0, Da ne bude samo fn_isNovel()? Imam nezgodno iskustvo sa sličnim funkcijama, koje prepoznaju neke mreže, a neke ne. U Foksu, sys(0) treba da da ime čvora/stanice na kome se nalazite, propraćeno jednobajtnim id brojem. To radi pod RPTI mrežom bez problema. Ista funkcija pod Novelom daje "# 0", tj. "nisi u mreži". FoksPro, inače, ume da sarađuje sa Novelovim spulerom, tj ima naredbu tipa Set Print To Spooler <ime> ili tako nešto. Pretpostavljam da se ta i slične funkcije oslanjaju na neke službene adrese na koji mreže ostavljaju neke svoje oznake dok rade; stvar je uveliko problematična zbog poznate "standardnosti" DOSa. Nema garancije da postoji bajt u onih 640 K koji sve mreže koriste, pa još na isti način. žak sam spremniji da poverujem da postoje značajne razlike i među verzijama iste mreže. Bue_ Ndragan
clipper.830 ndragan, -> #782, bulaja
/ SIxRDD drajvera i MachSIx query optimizera. Blizi se dan kada ces i / ti poceti da razmisljas o prelasku sa FoxPro-a na Clipper :). Da sam imao vremena da naučim C, možda. Previše sam razmažen interpreterskom okolinom. Gooomilu stvari uradim iz komandnog prozora. Kad bih za to sve morao da pišem rutine, pa da ih kompajliram, život bi mi bio mnogo kraći - dok sam radio u (kobolu i u) petlji editor-> kompajler-> linker-> run, za svako linkovanje duže od minuta palio sam cigaru. Sve što možete da uradite na računaru, a traje preko deset sekundi od editovanja do testiranja, škodi zdravlju :> Btw, Kliper to nema u dućanu, to se dokupljuje na buvljaku pa se instalira pa dojavljuje linkeru pa je često i kompatibilno jedno s drugim. Foks sve to ima u startu i radi odmah. Dakle, nismo iz iste ulice (nisam ni ja iz iste ulice, preselio sam se :) Bue_ Ndragan
clipper.831 ndragan, -> #784, i.a.n.
/ Za brzinu Foxove SQL SELECT naredbe više je zaslužan ugrađeni / optimizator nego .CDX indeksi. Ako se tabele pootvaraju klasičnim A optimizator upravo najbolje voli cedeiksove. Baška što dobro odabranim tegovima možeš da ubrzaš mnoge stvari. Btw, setih se da priupitam kliperaše da li cdx drajver ima isti bugi ko u foksu: indeksirajte jednu datoteku pet ili deset puta uzastopce po istom tegu, ne brišući već postojeći istovetan teg. Ako to uradite iz Foksa, .cdx će nenormalno da raste. Zato smo u rutine za indeksiranje ubacili da se generiše jedno Delete Tag All pre samog indeksiranja. Nije neki bag, baš i ne pravi neku štetu, osim što malo pojede diska dok ga ne primetite. Kako se ponaša Kliper? Bue_ Ndragan
clipper.828 ndragan, -> #785, i.a.n.
/ ali ne vidim razlog da se forsira zarez kao decimalni separator, dosad / nisam sreo ama baš nikog kome bi decimalna tačka smetala. Ne vidim ni ja - čak sam celu ovu pantljičaru od niza poruka posvetio prebrojavanju problema koje to stvara. Kad su se pojavili šifonjeri, kružila je priča da će računari naterati ceo svet da standardizuje mere, da će se uvesti SI itd. Jedino su Englezi napravili decimalnu lovu, a sve ostalo je ostalo na "svaka vaška obaška". Obično ispisivanje datuma, po kalendaru koji je svetski priznat više vekova, ima desetak varijanti. Ameri i Englezi uporno forsiraju colove, unce, jarde (i milijarde :), nemački predlog o podeli pravog ugla na sto gradi je ugrađen u nešto kalkulatora i ni u jedan programski jezik, i najzad, Evropa uporno koristi decimalni zarez i tačku za hiljade, osim na računarima koji su američka izmišljotina i rade upravo obratno. Nije problem odštampati broj sa decimalnim zarezom, to se uveliko radi, ali za unos je to maksimalno bezvezna tehnika kad je zarez tako daleko. Mada, kad se setim PAKA terminala, imali su i zarez (iznad entera, a plus je bio upola manji). Bue_ Ndragan
clipper.832 saks, -> #831, ndragan
Pazi ovako: U uputstvu za SixDrivers (imam verziju 1.0), lepo pise da se reindeksiranjem taga isti ne brise, vec se nadopisuje na postojeci CDX. Ako hoces da CDX ne raste, nemoj reaindeksirati ni tagove pojedinacno, ni CDX u celini, vec ih kreiraj. Sledi => Porast CDX-a nije bug vec osobina. Sory. Sasa
clipper.833 i.a.n., -> #823, dr.grba
>> Slažem se sa matematičkim pojmom relacije, kao i sa prikladnošću da >> podaci budu prezentirani kao tabela. Ali se ne slažem sa uravnilovkom >> tabela <=> relacija u kontekstu pojma "relaciona baza podataka". Na ovo je nbatocanin već odgovorio... >> Naime, naziv "relaciona baza" ne potiče zbog te mogućnosti prezentacije u >> tabeli, već zbog mogućnosti da se uspostavi relacija između dve ili više >> baza postedstvom zajedničkog podatka - ključa relacije. Da ne zalazimo u >> implementaciju, mislim na "set relation...". ... a ovo je bilo i moje uverenje dok me C.J. Date nije prosvetlio. ;) Posle toga sam počeo da sumnjam da li Fox ili Clipper uopšte zaslužuju naziv "relacioni sistemi". Evo šta Date kaže (svi navodi su iz "An Introduction to Database Systems", Vol. I): Data independence can most easily be understood by first considering its opposite. [...] the way in which the data is organized in secondary storage and the technique for accessing it are both dictated by the requirements of the application under consideration, and moreover _knowledge of that data organization and that access technique is built into the application logic and code._ Example: [...] Then the (data-dependent) application in question will typically be aware of the fact that the index exists, and aware also of the file sequence as defined by that index, and the internal structure of the application will be built around that knowledge. USE tabela INDEX ind1, ind2... Upravo to. A dva od Coddovih dvanaest pravila (o tome koji se sistem može smatrati potpuno relacionim) zahtevaju "physical" i "logical data independence". Ima tu još zahteva po kojima Fox i Clipper definitivno padaju. Dobro, da vidimo onda tzv. "early 1980s definition", po kojoj je sistem minimalno relacioni ako podržava sledeće: - Relational databases (i.e., databases that are perceived by the user as tables, and nothing but tables); - The operations restrict, project, and (natural) join, without requiring any predefinition of physical access paths to support these operations. Pa sad. Fox ovde prolazi kroz iglene uši, za Clipper ne bih bio siguran, zbog zahteva #2. Još jedan sistem koji zadovoljava ove zahteve je Paradox, koji ima i neke zgodne dodatne operacije, npr. "outer join", za šta se na Foxu treba mučiti sa UNION. Sve u svemu, xBase sistemi još i najviše liče na ono što Date naziva "inverted list systems" (Dodatak A). A tu se nalazi i ohrabrujuća tvrdnja: "Many relational systems -- though not all -- can be thought of as inverted list systems at the internal (i.e. physical) level". Što znači da se možemo nadati da xBase sistemi postanu pravi relacioni -- kad malo porastu. :)
clipper.834 djelovic, -> #827, nbatocanin
> Ima u BYTE od 1991. lep tekst. Autor teksta je autor i ove notacije > (Charles Simonyi). Kaže da je prvi put upotrebio ovu notaciju 1972. > Zove se ovako zato što je ovaj tip Mađar i što se u njoj tip > promenljive stavlja pre imena, kao kod ličnih imena u Mađarskoj. > Mislim da je članak odličan i rado bi ga video prevedenog u R. Inace se ova notacija najvise koristi u C programima za Windowse da bi se odrzala jaka tipizacija podataka. U modernijim jezicima za tako nesto nema potrebe jer o tipovima podataka brine kompajler - ako pokusas da pozoves funkciju sa argumentima pogresnog tipa, on ti javi gresku.
clipper.835 petrovics, -> #823, dr.grba
>> Naime, naziv "relaciona baza" ne potice zbog te mogucnosti prezentacije u >> tabeli, vec zbog mogucnosti da se uspostavi relacija izmedu dve ili vise >> baza postedstvom zajednickog podatka - kljuca relacije. Da ne zalazimo u >> implementaciju, mislim na "set relation...". Ja pak delim misljenje Nenada Batocanina :). Smatram da je njegova interpretacija termina "relacione baze podataka" ispravna i da naziv bas dolazi od toga sto su podaci organizovani u tabelama (relacijama) izmedju kojih je moguce uspostavljati veze (ono sto neki Clipper-asi nazivaju relacijama ;). U Clipperu, kao relacionoj bazi podataka, relacija je DBF fajl a SET RELATION TO veza izmedju relacija. Ovakva terminologija je saglasna i sa Oracle-om koji je jedan tipican predstavnik relacione baze podataka. Inace na ovu temu se svojevremeno u SETNetu vodila rasprava koja nije dala rezultata. Svi su ostali na svojim stanovistima. Zato bih zamolio nekog ko je dovoljno kompetentan ili jos bolje ima adekvatnu literaturu da objasni pojam *relaciona baza podataka* jednom za svagda ;). Inace ova diskusija na SETNetu je vodjena i oko toga da li je izraz "baza podataka" ili samo "baza" adekvatan za .DBF datoteku ? Ja mislim da nije a vi?
clipper.836 ndragan, -> #813, d.petrovic
/ Kakve veze sad zatvaranje ima sa UPS-ovima? Pa svi se slažemo da, ako / ne zatvaraš, koristiš redovno DBCommit(). Hm... jedino čemu bih verovao je da taj DbCommit() uredno forsira DOS da upiše sve i u FAT i u direktorij (mislim na dužinu fajla, alocirane klastere). Uostalom, pokušaj da posle svakog dodatog sloga u bazi pratiš njenu dužinu onako kako piše u direktoriju. Ako je ne povećava uredno, onda ipak ima opasnosti. Bue_ Ndragan
clipper.837 ndragan, -> #808, bcetina
/ Na primer to kod foxa radi, normalno. Foks iznutra radi do 15 značajnih cifara, bar toliko pristaje da upiše u .dbf, međutim otkako me inflacija naterala da pravim izveštaje sa 18 i 20 cifara (bez decimala), primećujem da ih sabira tačno. Zblanut sam. Btw, i select 000000000000000+sum(iznos) as iznos from... itd, daje bazu širu od one koja se može stvoriti redovnim Create ili Create Table, i u njoj iznosi tačno sabrani na više od 15 cifara. Sad ili su na nekim mestima odustali od IEEE formata brojeva, ili foks ipak podržava više cifara, jedino se pravi blesav tamo gde treba da ostane kompatibilan sa dibejzom? Bue_ Ndragan
clipper.838 bestbp,
Sta je najbolje uraditi sa bazama ukoliko se radi na racunarima na kojima su cesti ispadi struje ? Naime , program je kasa za PP pa bi bilo pozeljno da se max jedan racun izgubi u slucaju nestanka struje . Da li bi najbolje bilo da se baze otvaraju samo pri upisu ili neko ima bolju ideju. hvala GM
clipper.839 dragisha, -> #827, nbatocanin
-> Ima u BYTE od 1991. lep tekst. Autor teksta je autor i ove notacije -> (Charles Simonyi). Kaže da je prvi put upotrebio ovu notaciju 1972. -> Zove se ovako zato što je ovaj tip Mađar i što se u njoj tip -> promenljive stavlja pre imena, kao kod ličnih imena u Mađarskoj. -> Mislim da je članak odličan i rado bi ga video prevedenog u R. I tip radi u Microsoft-u i šef je ili tako nešto tima za Windows, i notacija je napravljena prvenstveno za potrebe tog projekta (što se vidi u svakoj liniji Windows.H:). Bilo bi lijepo da neko barem dovuče ASCII formu članka, pretpostavljam da je ima na bix::byte91. -- [Postscript,..Prescript,..what's the difference?]
clipper.840 i.a.n., -> #835, petrovics
>> Inace ova diskusija na SETNetu je vodjena i oko toga da li je >> izraz "baza podataka" ili samo "baza" adekvatan za .DBF >> datoteku ? Ja mislim da nije a vi? Ditto. Odgovarajući izraz bi bio "tabela".
clipper.841 dr.grba, -> #827, nbatocanin
>> Mislim da je članak odličan i rado bi ga video prevedenog u R. I ja. >> > Ali se ne slažem sa uravnilovkom tabela <=> relacija u >> > kontekstu pojma "relaciona baza podataka". >> >> C.J. Date: Database Systems - "The reasons such systems are called >> 'relational' is because the term 'relation' is essentially just a >> mathematical term for a table. For most practical purposes, indeed, >> the terms 'relation' and 'table' can be taken as synonymous." No comment. E, šta da se radi, evo 16.589-og primera neusaglašenosti referentne literature. Organizaciju podataka sam slušao kod Radmila Simića na Višoj informatičkoj, i neke stvari koje sam čuo od njega mi ostadoše u glavi, pogotovo kada je u pitanju princip projektovanja baza. Ne bi me čudilo ni da naletim na neko n-to objašenjenje, sasvim komplementarno svim ostalim koje sam do sada čuo. Ovo me priseti na predavanja na PMF-u, gde nema šanse da čuješ dva predavača mat. analize da pričaju istu priču... >> Taman posla, već sam mislio da te teorijske delove svi preskaču ;) Jes', pa posle "Kako ovo?"... (: Tvoje tekstove čitam veoma pažljivo, na sopstvenu korist i zadovoljstvo. Već ti rekoh da bih voleo da pročitam tvoju knjigu u kojoj se baviš projektovanjem programa u Clipperu. Kako ono beše? A, da, SetBlink(.F.)... (:
clipper.842 dr.grba, -> #833, i.a.n.
Vrlo zanimljiv prilog! >> USE tabela INDEX ind1, ind2... Upravo to. A dva od Coddovih >> dvanaest pravila (o tome koji se sistem može smatrati potpuno >> relacionim) zahtevaju "physical" i "logical data independence".... Može li svih dvanaest, ako nije zametno da prepišeš? I uostalom, molio bih par reči i bližu referencu na knjigu koju pomenuste nbatocanin i ti.
clipper.843 dr.grba, -> #835, petrovics
>> Inace na ovu temu se svojevremeno u SETNetu vodila rasprava koja >> nije dala rezultata. Svi su ostali na svojim stanovistima. Zato Bio ja u pravu ili ne, drago mi je da je ono moje pitanje Nenadu pokrenulo ovu raspravu, jer bi trebalo da bude svima na korist. Jer sam siguran: kada bismo bolje razumeli teorijske koncepte, u praksi bi se mogli videti bolji rezultati. A ja rekoh da sam spreman da korigujem svoje mišljenje uz valjanu argumentaciju. Prvi argumenti su već stigli i ja sam veoma raspoložen da ih proučim. Hvala Bogu, najzad konstruktivna rasprava na Sezamu! >> Inace ova diskusija na SETNetu je vodjena i oko toga da li je >> izraz "baza podataka" ili samo "baza" adekvatan za .DBF >> datoteku ? Ja mislim da nije a vi? Za mnoge je XXX.EXE program. Za mene nije. To je za mene datoteka u kojoj se nalazi kod nekog programa, koji se učitava u memoriju blablabla... E, pa šta je YYY.DBF? Baza? Datoteka čiji se sadržaj može interpretirati kao baza podataka u dBase i sličnim sistemima? Skup formatiranih podataka u ASCII obliku? ________________? (dopisati po želji...) Ovde smo tek kod pojma datoteke, pazite. Još nismo došli do pojma baze ili baze podataka. Tu bi rasprava mogla da ide u nedogled... To su mutne vode, te terminološke zavrzlame...
clipper.844 bulaja,
**** new file **** R:\IBMPC\CLIPPER\*.* ---------------------- frank arj 242263 Frankie lib v2.1: Clip. mouseable User Interface Engine frankg arj 86579 Frankie lib v2.1: Norton Guide frankn arj 11015 Frankie lib v2.1: Newsletter frankr arj 66109 Frankie lib v2.1: Reference (text) What is the Frankie Library? ──────────────────────────── The Frankie library is a collection of Clipper 5.01/5.2 mouseable and configurable user interfaces. Every UI is built upon an engine that has default looks and functionality, but can be reconfigured. The reconfiguration takes place by sending messages to the engine via APIs. The Engines ─────────── The following UI engines are available in version 2.0: 1. Database Browser 2. Get/Read Subsystem 3. Boxed Gets 4. Vertical Menu 5. Horizontal Menu 6. Dialog Box 7. Push Buttons 8. Radio Buttons 9. Scroll Bar 10. File Viewer The APIs ──────── Each engine has its own set of API functions that serve to configure the engine (a Config API), interrogate its state (an Info API), or instruct it to do something (an Action API). Specialized UI Fucntions ──────────────────────── In addition to the generic engines, Frankie contains a number of specialized UI functions: 1. Drives picklist 2. Directory picklist 3. Files picklist 4. Fields picklist 5. "Drive Not Ready" dialog box 6. "Printer Not Ready" dialog box 7. "Which Drive?" dialog box 9. "Which Floppy?" dialog box 10. Switch toggler dialog box 11. Database browser scroll bars 12. Horizontal and vertical push buttons 13. A Read of one Get (two variants) Miscellaneous Functions ─────────────────────── Aside from the engine functions and their APIs, Frankie contains a wide variety of miscellaneous and useful functions. These, however, are primarily for the purpose of supporting the Frankie engines. They are not intended to serve as a full repertoire of Clipper functions. Frankie is primarily a UI engines library.
clipper.845 gari,
Da li bi neko znao da mi objasni zasto 1. primer radi, a drugi radi nekoliko desetina puta u petlji X pa onda odjednom izleti sa sledecom porukom: Error BASE/1003 Variable does not exist: T_DATUM Razumem ja da on izleti prvi put kad udje u petlju zbog koriscenja LOCAL varijabli u makrou, ALI da to uradi N-ti put (N=promenljiva velicina, koja zavisi od raspolozenja mikroprocesora, vremenske prognoze, gravitacije,... ;), E TO MI NIJE JASNO! Evo saljem primere (ko voli probleme, ETO IH): ********************** *** GLAVNI PROGRAM *** ********************** do while ...neka petlja X ... t_kol := Vrati_Kolicinu(t_sif_robe,t_objekat,t_datum) ... enddo **************** *** PRIMER 1 *** OVO RADI ... **************** FUNCTION Vrati_Kolicinu(t_sif_robe,t_objekat,t_datum) LOCAL t_kolicina:=0, t_uslov if valtype(t_datum) == "D" t_uslov:={|p1,p2|p1==SIF_RO .and. p2==DATUM .and. !eof()} else t_datum:=date() t_uslov:={|p1,p2|p1==SIF_RO .and. !eof()} endif select POCETNO seek t_objekat+t_sif_robe if found() t_kolicina+=KOLICINA endif select PRODAJA set order to 2 seek t_objekat+t_sif_robe do while eval(t_uslov,t_sif_robe,t_datum) t_kolicina-=BOMBONA skip enddo ... ... RETURN t_kolicina **************** *** PRIMER 2 *** ... A OVO NE RADI UVEK !? **************** ^^ FUNCTION Vrati_Kolicinu(t_sif_robe,t_objekat,t_datum) LOCAL t_xxx, t_yyy, t_zzz, t_kolicina:=0, t_uslov if valtype(t_datum) == "D" t_uslov:="t_sif_robe==SIF_RO .and. ; t_datum>=DATUM .and. !eof()" else t_uslov:="t_sif_robe==SIF_RO .and. !eof()" endif select POCETNO seek t_objekat+t_sif_robe if found() t_kolicina+=KOLICINA endif select PRODAJA set order to 2 seek t_objekat+t_sif_robe do while &t_uslov && <- OVDE GA IZBACI, A PRE t_kolicina-=BOMBONA && TOGA PROSAO DESETAK PUTA skip enddo ... ... RETURN t_kolicina
clipper.846 ppekovic, -> #835, petrovics
>> organizovani u tabelama (relacijama) izmedju kojih je moguce Tabela nije isto što i relacija. Tabela je skup pojavljivanja jedne relacije. Tako, može postojati više tabela (skupova pojavljivanja) jedne relacije. Paya
clipper.847 i.a.n., -> #842, dr.grba
>> Može li svih dvanaest [Coddovih pravila], ako nije zametno da prepišeš? 1. The information rule 2. The guaranteed access rule 3. Systematic treatment of null values 4. Active online catalog based on the relational model 5. The comprehensive data sublanguage rule 6. The view updating rule 7. High-level insert, update, and delete 8. Physical data independence 9. Logical data independence 10. Integrity independence 11. Distribution independence 12. The nonsubversion rule (1) je drugi način da se kaže da svi podaci u bazi treba da budu predstavljeni na jedan jedini način, u vidu tabela. (2) zahteva da se svakoj pojedinačnoj vrednosti unutar baze može pristupiti, što povlači postojanje primarnog ključa za svaku relaciju, pošto se po relacionoj teoriji do određenog sloga (n-torke) može doći jedino njegovim korišćenjem. (3) je po Dateovom mišjenju slaba tačka većine današnjih relacionih sistema. žesto je potrebno da se u bazi nađu podaci tipa "nepoznat", "ne postoji" itd. koji bi trebalo da budu a) predstavljeni vrednostima različitim od svih ostalih mogućih vrednosti, i b) dosledno tretirani od strane relacionog sistema. SQL rešenje (NULL vrednosti) je daleko od potpunog. (4) traži postojanje on-line kataloga sa podacima o bazama i tabelama unutar njih. Katalogu treba da je omogućen pristup putem standardnog upitnog jezika, naravno ako korisnik ima dovoljna ovlašćenja. (5) znači da treba da postoji bar jedan relacioni jezik koji se može koristiti za celokupan rad sa bazom: upite, ažuriranja, definiciju novih tabela/baza, transakcioni rad, davanje prava pristupa i postavljanje pravila integriteta. Dodatni zahtev je da se jezik dostupan i interaktivno i u aplikacijama, bez znatne izmene sintakse u bilo kom slučaju. Po pravilu (6), sistem mora biti sposoban za ažuriranje svih pogleda za koje teorija kaže da je ono moguće. I ovde stvari stoje klimavo, i teorijski i praktično. (7) zahteva operacije INSERT, UPDATE i DELETE koje ne bi bile ograničene na rad slog po slog, već sposobne da deluju nad više slogova odjednom. (8) i (9) sam ranije spomenuo. Prema (10), pravila integriteta moraju da se zadaju nezavisno od aplikacija i da budu smeštena u katalogu. Takođe se mora omogućiti njihova izmena bez uticaja na postojeće aplikacije. (11) se odnosi na uvođenje distribuirane verzije sistema i kasniju preraspodelu podataka u njemu: postojeće aplikacije i dalje treba da rade bez izmena. Najzad, (12): ako sistem omogućava pristup podacima na niskom nivou, pri čemu se ne misli na direktno brljanje po datotekama, već rad sa pojedinačnim slogovima, onda se u takvom načinu rada ne sme dozvoliti narušavanje postojećih pravila integriteta i prava pristupa. >> I uostalom, molio bih par reči i bližu referencu na knjigu koju >> pomenuste nbatocanin i ti. C.J. Date: "An Introduction to Database Systems", Vol. I (5th ed.), Addison-Wesley, Reading, MA, 1990. Knjiga se smatra za standardni priručnik/udžbenik opšteg tipa. Neki zameraju Dateu isključivost (relacioni model, i šlus!), ali Bože moj. Lični utisak: pred ovim bi svi YU udžbenici organizacije podataka trebalo da se posakrivaju u mišju rupu. Toliko je jasno i dobro napisano da ne shvatiš da ti u stvari nemilosrdno trpa u glavu hrpu činjenica i teorije do trenutka kad se malo osvrneš. Praktičan rezultat čitanja je, u najmanju ruku, ovaj: moje aplikacije B.D. (Before Date :) su nastajale tako što bih pet dana pisao program, a posle ga tri meseca doterivao. A.D. postupak je dve nedelje projektovanja, istih onih pet dana pisanja, nedelju-dve doterivanja i to *radi*. Da ne spominjem koliko su sva kasnija dodavanja i menjanja lakša.
clipper.848 djelovic, -> #847, i.a.n.
> (2) zahteva da se svakoj pojedinačnoj vrednosti unutar baze može > pristupiti, što povlači postojanje primarnog ključa za svaku relaciju, > pošto se po relacionoj teoriji do određenog sloga (n-torke) može doći > jedino njegovim korišćenjem. Jel može šire objašnjenje zašto je primarni ključ neophodan? Još bolje, ukoliko bi mogao da nađeš neki ilustrativan primer...
clipper.850 petrovics, -> #838, bestbp
>> Sta je najbolje uraditi sa bazama ukoliko se radi na racunarima na kojima >> su cesti ispadi struje ? Naime , program je kasa za PP pa bi bilo >> pozeljno da se max jedan racun izgubi u slucaju nestanka struje . Da li >> bi najbolje bilo da se baze otvaraju samo pri upisu ili neko ima bolju >> ideju. Smatram da je dovoljno samo da se posle svake izmene/dodavanja sloga forsira upis na disk naredbom tipa COMMIT. Mislim da nije od nekog sireg znacaja da li su u trenutku nasilnog prekida rada programa datoteke bile zatvorene. Ipak ne mogu sa sto posto sigurnosti ovo da tvrdim jer se zasniva na mom iskustvu a to nije dovoljno da se izvede generalni zakljucak.
clipper.849 petrovics, -> #843, dr.grba
>> Bio ja u pravu ili ne, drago mi je da je ono moje pitanje Nenadu >> pokrenulo ovu raspravu, jer bi trebalo da bude svima na korist. Svaka konstruktivna rasprava je korisna :). Inace slazem se sa tobom da na Sezamu bas i nema puno konstruktivnih rasprava :(. >> Jer sam siguran: kada bismo bolje razumeli teorijske koncepte, >> u praksi bi se mogli videti bolji rezultati. Nista bez teorije :). Na zalost mnogi i ne haju za ovu vaznu komponentu bavljenja racunarom. Da ne pominjem one sto misle da su naucili da programiraju u trenutku kad su zapamtili sve rezervisane reci nekog jezika... Inace i ja sam za to da ovde cujem nesto pametno i konstruktivno o relacionim bazama podataka.
clipper.851 i.a.n., -> #848, djelovic
>> Jel može šire objašnjenje zašto je primarni ključ neophodan? Još >> bolje, ukoliko bi mogao da nađeš neki ilustrativan primer... Teorija definiše telo relacije kao skup (n-torki), a u skupu nisu mogući duplikati. Definicija primarnog (zapravo kandidatskog) ključa zahteva da obeležje koje ga čini zadovoljava uslov da ni u jednom trenutku ne postoje dve n-torke sa istom vrednošću tog obeležja. Ovo znači da svaka relacija ima primarni ključ -- za razliku od tabele, gde se može desiti da postoje istovetni slogovi, u kom slučaju tabela više ne može da se smatra fizičkom predstavom relacije. Dopuštanje duplikata u tabelama može da dovede do anomalija prilikom brisanja ili ažuriranja, recimo. Primer? Svakom primeru koga bih ovde mogao da navedem suđeno je da deluje budalasto, ali ajde: Ime Kompjuter ----------------------------- Ivan 80386SX Dejan 80386 Dejan 80386 Operacija UPDATE oprema SET Kompjuter = "80486" WHERE Ime = "Dejan" AND Kompjuter = "80386"; bila bi logički uspešna samo ako oba Dejana dobijaju 486-icu. A šta ako treba promeniti samo jednog? Morao bi da se uvede redosled (prvi i drugi Dejan u tabeli), a relacije (opet zbog toga što su definisane kao skupovi) nemaju uređenje.
clipper.852 djelovic, -> #851, i.a.n.
> UPDATE oprema > SET Kompjuter = "80486" > WHERE Ime = "Dejan" AND Kompjuter = "80386"; > > bila bi logički uspešna samo ako oba Dejana dobijaju 486-icu. A šta > ako treba promeniti samo jednog? S obzirom da ti ovde pričaš o velikim sistemima (SQL i sl.), sasvim sam saglasan da svaka tabela mora da ima primaran indeks. Međutim, kod standardnih aplikacija koje se danas vrte u 99% firmi korisnik slog koji se menja bira interaktivno, kroz nekakvu vrstu tabele (mislim da se to na Clipperu zove TBrowse?), tako da postojanje primarnog ključa koji ničemu ne služi a veštački se kreira zaista ničemu ne služi (?). Kad treba - treba, al kad ne treba zašto onda sistem da još dodatno opterećuje programera kreiranjem "veštačkog" primarnog ključa kao što to radi Paradox Engine?
clipper.853 nbatocanin, -> #834, djelovic
> U modernijim jezicima za tako nesto nema potrebe jer o > tipovima podataka brine kompajler - ako pokusas da pozoves > funkciju sa argumentima pogresnog tipa, on ti javi gresku. Ne bi se baš složio, iz više razloga: prvi razlog je čitljivost programa. Na primer, čitaš neki program, a ono u sredini modula od 5000 linija (ne, ljudi nisu savršeni => ne pišu savršene programe) nađeš f(x). Da, prevodilac će javiti grešku ako X nije dobrog tipa, ali tebi treba u trenutku čitanja da znaš tačan tip. E, a za to moraš da trčiš na početak modula, ili da imaš editor sa dva prozora u svet ;) Nije ni malo bezveze što FORTRAN ima konvenciju sa prefiksom promenljivih. Mislim da je deklarisanje promenljivih u strogo tipiziranim jezicima tehničko ograničenje koje će vrlo brzo (?) doći na red za usavršavanje. Klasična deklaracija na početku bloka je čista usluga koju programer pravi prevodiocu da bi ovaj lakše uradio posao. Mislim da će se to bolje rešiti. Razmislite: zašto ne bi prevodilac na osnovu primene određene promenljive sam provalio kog je tipa, a ako baš ne može da ukapira, nek pita. Jedini razlog koji mi pada na pamet je brzina rada, a to je već njegov problem ;)
clipper.854 nbatocanin, -> #841, dr.grba
> Ne bi me čudilo ni da naletim na neko n-to objašenjenje, > sasvim komplementarno svim ostalim koje sam do sada čuo. Nikako ne bi smelo. O tome zašto se relacioni *model* zove tako, nema nikakvog spora: zato što se realni objekti modeliraju relacijama. A relacione baze podataka se zovu tako zato što koriste relacioni model kao osnovu.
clipper.855 nbatocanin, -> #833, i.a.n.
> Posle toga sam počeo da sumnjam da li Fox ili Clipper uopšte > zaslužuju naziv "relacioni sistemi". Evo šta Date kaže (svi navodi > su iz "An Introduction to Database Systems", Vol. I): Da, ovde može uslediti jedna pošira rasprava o tome. Ono što je sigurno to je da nijedan xBase jezik neće zadovoljiti sve uslove za pravi relacioni sistem. Osnovni razlog za to je nivo obrade: u relacionom sistemu se zahteva da taj nivo bude mnogo viši od onoga u kome se radi sa xBase jezicima. E, sad tu ima par kvaka: prvo, ni jedan sistem se ne pravi tako što sednu neki tipovi i kažu: "ajde da napravimo jedan relacioni sistem" ili se bar to retko radi. Skoro uvek se pravi alatka za određenu vrstu problema, a rezultat - gde upadne. dBase je nastao kao mala baza podataka na računaru sa veoma skromnim mogućnostima, pa nije bilo ni govora o tome da se implementira mogućnost transparentnog rada sa relacijama. Clipper i ostali su nastali kao naslednici dBase-a, pa nisu imali mnogo izbora. Osim toga, ovi proizvodi i nisu bili namenjeni izradi "pravih" baza podataka, već poslovnih aplikacija koje, doduše, skoro uvek rade sa većim količinama podataka. Druga stvar je shvatanje relacionog modela. To je jedno formalno predstavljanje realnog sistema čija je osnova da se realni objekti i njihove veze predstavljaju relacijama. Praktična *realizacija* tog modela je drugi problem: može biti na ovom ili onom nivou. Ali, po osnovnom principu svi xBase derivati spadaju u grupu relacionih sistema. Mada, nije nemoguće neki drugi model (mrežni, na primer) realizovati u xBase-u. Kao što rekoh, to je pitanje realizacije.
clipper.856 nbatocanin, -> #835, petrovics
> Inace ova diskusija na SETNetu je vodjena i oko toga da li > je izraz "baza podataka" ili samo "baza" adekvatan za .DBF > datoteku ? Ja mislim da nije a vi? Baza podataka ima više značenja. Osnovno značenje je otprilike "organizovan skup podataka koji kontroliše sistem za upravljanje bazom podataka". U širem značenju, baza uključuje i te podatke i softver. To znači da DBF nije baza podataka. Međutim, iz ko zna kog razloga se vrlo često sreće termin "baza" za DBF datoteku i kod nas i u inostranstvu. Moja deviza je: važno je da se razumemo :)
clipper.857 djelovic, -> #853, nbatocanin
> Ne bi se baš složio, iz više razloga: prvi razlog je čitljivost > programa. Na primer, čitaš neki program, a ono u sredini modula od > 5000 linija (ne, ljudi nisu savršeni => ne pišu savršene programe) > nađeš f(x). Da, prevodilac će javiti grešku ako X nije dobrog tipa, > ali tebi treba u trenutku čitanja da znaš tačan tip. E, a za to moraš > da trčiš na početak modula, ili da imaš editor sa dva prozora u svet ;) Mađarska notacija nastala je (ili se prvi put primenjivala u većem obimu) za pisanje Windows programa u C-u. Kao takva ona je inžinjersko rešenje (prljavo al' efikasno) za problem koji ti navodiš, a nikako nešto čemu treba težiti. Dalje, i kao rešenje za čitljivost programa Mađarska notacija je uveliko zastarela. Ajmo redom: 1. "žitljivost programa". Danas skoro da ne postoji editor koji ne može da prikaže više fajlova u raznim prozorima. U jedan prozor staviš tekst programa, u drugi deklaracije, i problem je rešen. Štaviše, ukoliko koristiš programski jezik koji ne podržava deklaracije funkcija (fuj!), uvek postoje programi koji protrče kroz sors i povade ih, makar samo za dokumentaciju. Danas je ta mogućnost ugrađena i direktno u većinu C kompajlera. 2. Opet "čitljivost programa". Dodavanje dva slova na početak imena promenljive direktno krši pravilo da "ime promenljive ne sme da bude kriptično i treba jednostavno i jasno da govori čemu ona služi". (Iz ovog pravila se naravno izuzimaju promenljive 'i' i 'j' koje svi koristimo kao brojače :).) 3. Dobar dizajn je zasnovan na podacima, i to je jedan od razloga zašto se programski jezici okreću ka objektnoj orijentaciji. Ako me sećanje dobro služi, i ti misliš da je OOP dobra stvar. Kako onda misliš da koristiš Mađarsku notaciju kada nemaš pet osnovnih tipova podataka nego pet hiljada tipova podataka, tj. sve klase koje si do sada napravio? > Nije ni malo bezveze što FORTRAN ima konvenciju sa prefiksom > promenljivih. Od popularnih jezika samo Fortran i Bejzik koriste takve konvencije. Nije slučajno da su oba ta jezika nastala u predhistojiji :) računarstva. > Mislim da je deklarisanje promenljivih u strogo tipiziranim jezicima > tehničko ograničenje koje će vrlo brzo (?) doći na red za > usavršavanje. Klasična deklaracija na početku bloka je čista usluga > koju programer pravi prevodiocu da bi ovaj lakše uradio posao. Mislim > da će se to bolje rešiti. Razmislite: zašto ne bi prevodilac na > osnovu primene određene promenljive sam provalio kog je tipa, a ako > baš ne može da ukapira, nek pita. Jedini razlog koji mi pada na pamet > je brzina rada, a to je već njegov problem ;) Dva su razloga za deklaraciju promenjljivih: Klasičan: Deklaracija promenljivih te rešava muke kada negde u programu pogrešno napišeš promenljivu a to ne primetiš. Recimo, imaš promneljivu "brojacLjudi" a na jednom mestu u programu napišeš "broavLjudi". Kompajler ti ne javlja grešku, a program ne radi. Takođe, ukoliko se promenljive ne deklarišu postoji zabuna kada globalna i lokalna promenljiva treba da imaju isto ime, što sa količinom podataka u današnjim programima nije nimalo redak slučaj. OOP: Naslednik neke klase ponaša se isto kao i ona sama, tako da kompajler nema načina da sazna na osnovu primene promenljive da li se radi o promelnjivoj tipa X, ili nekog naslednika klase X. P.S. > ne, ljudi nisu savršeni => ne pišu savršene programe Pokušavajući da napišem savršen C++ program često se setim metode William J. Buckleya kako naslikati savršenu sliku: "Postanite vi savršeni i onda slikajte prirodno."
clipper.858 i.a.n., -> #852, djelovic
>> S obzirom da ti ovde pričaš o velikim sistemima (SQL i sl.), sasvim >> sam saglasan da svaka tabela mora da ima primaran indeks. Izgleda da sam bio nedovoljno precizan -- nisam naglasio da u teorijskom smislu, u kome ga spominjem, postojanje primarnog ključa ne povlači postojanje *indeksa* definisanog po njemu. Indeksi su neophodni kod implementacije relacione baze, u teoriji nisu. Znači, u onome što sam pisao: "mora postojati primarni ključ" = "ne sme biti duplikata u tabelama". A Paradoxovske zavrzlame sa indeksima su i meni gazile po nervima. ;)
clipper.862 dr.grba, -> #855, nbatocanin
>> Da, ovde može uslediti jedna pošira rasprava o tome. Ono što je >> sigurno to je da nijedan xBase jezik neće zadovoljiti sve uslove za >> pravi relacioni sistem. Osnovni razlog za to je nivo obrade... >> ... >> njihove veze predstavljaju relacijama. Praktična *realizacija* tog >> modela je drugi problem: može biti na ovom ili onom nivou. Ali, po >> osnovnom principu svi xBase derivati spadaju u grupu relacionih >> sistema... Ovaj momenat pomalo liči na raspravu o sistemima koji (ne) zadovoljavaju atribut "objektni". Izgleda da su kompromis i popustljivost u principima projektovanja sistema postali sasvim uobičajena stvar. Na sreću ili na žalost...
clipper.861 dr.grba, -> #853, nbatocanin
>> usavršavanje. Klasična deklaracija na početku bloka je čista usluga >> koju programer pravi prevodiocu... ...i sebi.
clipper.860 dr.grba, -> #852, djelovic
>> saglasan da svaka tabela mora da ima primaran indeks. Međutim, kod >> standardnih aplikacija koje se danas vrte u 99% firmi korisnik slog >> koji se menja bira interaktivno, kroz nekakvu vrstu tabele (mislim >> da se to na Clipperu zove TBrowse?), tako da postojanje primarnog >> ključa koji ničemu ne služi a veštački se kreira zaista ničemu ne >> služi (?). Kad treba - treba, al kad ne treba zašto žovek pomenu PROJEKTOVANJE baza, a dobro projektovan sistem za rad sa nekom bazom neće dozvoliti ad hoc brisanje - izmenu podataka, bar ne legalno. Ne mali broj projektanata (barem dvojica koje poznajem) vrše neko kriptovanje slogova baze ne zbog nekog straha od zloupotrebe, nego da bi sprečili korisnika i njegove prijatelje da čeprkaju po bazi na nepredviđen način.
clipper.859 dr.grba, -> #848, djelovic
>> Jel može šire objašnjenje zašto je primarni ključ neophodan? Još >> bolje, ukoliko bi mogao da nađeš neki ilustrativan primer... Po ovom, ako dobro shvatam, taj kriterijum obezbeđuje ostale kriterijume. To znači, na primer (teoretski i praktično): ne smem izbrisati podatke o nekom komitentu jer imam živu neku analitičku karticu sa njegovim podacima. Dakle, uvodeći *obavezni* primarni ključ, i (sigurno) neke dodatne mehanizme, obezbeđen je integritet podataka. Osim toga, primarni ključ je jedinstven, bar bi trebalo da bude. Dakle, ne mogu da imam dva komitenta 233-001.
clipper.863 ndragan, -> #832, saks
/ tagove pojedinacno, ni CDX u celini, vec ih kreiraj. Sledi => Porast / CDX-a nije bug vec osobina. Sory. Ružna osobina, preuzeta iz originala. Stvar postaje bezvezna, jer ako imaš dva istovetna tega, održavaju se oba, a praktično se čita samo onaj prvi. Očekivao sam da kraj toliko drugih pametnih stvari prepozna ponovno indeksiranje po nečem što već postoji. U mom generatoru programa za indeksiranje stoji da uvek prvo obriše .cdx fajl, pa onda da pravi tegove ispočetka. Očetkivao sam da je siks malo pametniji. Bue_ Ndragan
clipper.864 bestbp,
Eeee, ljudi, ovaj BLINKER 3.0 je bas... Izgleda da su se bas potrudili. Do sada se odlicno pokazuje. Videcu dalje. Usput , sto se tice Visual Objects-a, pravo ime bi trebalo da mu bude ASPEN. pozdrav
clipper.865 domana, -> #842, dr.grba
Primetio sam da postujes teoriju (ja takodje) pa 'ajde da podelimo onda ovo sto ja usput skupljam baveci se bazama... Upozoravam da tekst nije u originalu vec je onako kako ga ja shvatam - pa mozda negde i gresim... ****************************************************************************** 12 ZLATNIH PRAVILA RELACIONE TEORIJE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (E.F.CODD 1970.) ! 1. PRIKAZ INFORMACIJE - iskljucivo na LOGICKOM NIVOU kao TABELARNI iznos !!! 2. PRISTUP PODATKU - kombinacija imłna: tabele + kljuca + kolone ~~~~~~~~~~~~~~~~~~~~~~~~ ! 3. OBRADA VRIJEDNOSTI kojih nema u relaciji ali se dobiju izvedeno 4. PROMJENLJIVI "ON LINE" KATALOG za tipove datoteke i programe 5. RAZVIJEN JEZIK unutar postojeceg relacionog modela !! 6. AZURIRANJE SISTEMA nezavisno od konceptualne seme 7. AZURIRANJE TABELE - bilo po jednom ili vise podataka (skupova) !! 8. FIZICKA NEZAVISNOST PODATAKA od logicke konstrukcije i koncepta ! 9. LOGICKA NEZAVISNOST PODATAKA kod promene konceptualne seme 10. NEZAVISNOST SIGURNOSTI na svim nivoima a ne u programima 11. NEZAVISNOST OD DISTRIBUCIJE PODATAKA i BAZE PODATAKA (lokacija) 12. NEMOGUCNOST SUBVERZIJE - INTEGRITET kod izmene i manipulacije podacima ------------------------------------------------------------------------------ 12 ZLATNIH PRAVILA RELACIONE TEORIJE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (E.F.CODD PC Magazine, May 1988.) ...tabela: 1. Struktura baze podataka se na LOGICKOM nivou prestavlja TABELOM, na fizickom je to bilo sta, recimo dvostruko ulancana lista... ...pristup: 2. Pristup SVAKOM podatku (u relacionoj bazi podataka) moguc/ostvariv je preko kombinacije imłna: tabele/relacije + kljuca + kolone/atributa znaci BEZ: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - unapred zadatih pristupnih puteva - rekurzija - iteracija ...relaciona nula: 3. Postoji SPECIFICNI INDIKATOR/podatak za predstavljanje NULA VREDNOSTI BEZ OBZIRA NA TIP PODATKA (razlicit od bilo kog znaka normalno upotrebljivog). Sistem podrzava/omogucava i sve MEDJUSOBNE operacije izmedju nula vrednosti (tog specificnog indikatora) i svih ostalih tipova podataka. ...katalog, meta podaci: 4. Postoji KATALOG/recnik tipova PODATAKa i PROGRAMa koji se LOGICKI prestavlja na ISTI nacin kao i sama baza podataka tako da KORISNIK moze da pristupi tim META podacima koristeci ISTI jezik koji koristi i pri pristupu svarnim podacima u bazi podataka. ..jezik: 5. Sistem mora posedovati BAR 1 jezik koji podrzava: 1 - definiciju podataka/DATA 2 - definiciju pogleda/VIEW 3 - manipulaciju podacima - kroz programe i interaktivno 4 - definiciju pravila integriteta 5 - granice transakcija/BEGIN - COMMIT - ROLLBACK 6 - autorizaciju/sigurnost podataka ...azuriranje sistema, SAMOodrzavanje: 6. AZURIRANJE SISTEMA nezavisno od konceptualne seme - algoritmom koji za svaki definisani pogled/VIEW u TRENUTKU NJEGOVOG DEFINISANJA OD STRANE KORISNIKA moze da odredi da li se i koje operacije odrzavanja MOGU da primene na taj pogled/VIEW i koji te operacije SMESTA U KATALOG baze podataka (po zelji korisnika). ...azuriranje tabela (baznih): 7. I nad BAZNIM RELACIJAMA i nad POGLEDIMA mogu se izvrsavati ne samo operacije pretrazivanja vec i operacije odrzavanja baze podataka bilo po jednom ili po vise podataka (skupova). ...fizicka nezavisnost: 8. FIZICKA NEZAVISNOST PODATAKA od logicke konstrukcije i koncepta - i aplikacioni program i interaktivna komunikacija korisnika OSTAJU NEIZMENJENI kada/ako se promeni: - fizicka organizacija baze ili - fizicki metod pristupa, record-manager, Btrieve ...logicka nezavisnost: 9. LOGICKA NEZAVISNOST PODATAKA kod promene konceptualne seme - i aplikacioni program i interaktivna komunikacija korisnika OSTAJU NEPROMENJENI kada/ako se dese BILO KOJE promene u strukturi baznih tabela OSIM promena samih podataka koje bazne tabele cuvaju, recimo promena redosleda polja/atributa (a mozda i naziva polja - ipak malo teze...) ...integriteti u katalogu: 10. PRAVILA INTEGRITETA se definisu u okviru/trenutku definisanja baze podataka i cuvaju u katalogu podataka, ne implementiraju se kroz aplikacioni program/kod. ...nezavisnost od distribucije: 11. Sve gore navedene karakteristike nezavise od DISTRIBUCIJE podataka i baze podataka, lokacije/mesta FIZICKOG smestanja podataka... ...integritet promena podataka: 12. Ako relacioni sistem radi sa nekim jezikom trece generacije koji u jednom trenutku obradjuje/menja samo jenu n-torku/zapis kroz taj jezik se NE MOGU zaobici pravila integriteta zadana preko samog relacionog jezika. ****************************************************************************** E, sad, moja razmisljanja: Prvo, svi kazu a i meni se cini, da ZASTA NE POSTOJI relacini jezik koji zadovoljva POTPUNO SVIH 12 principa; mozda im se najvise priblizi Magic... Drugo, relaciona teorija je samo jedna od ostalih - postoje i drugaciji nacini SHVATANjA i PRISTUPA problematici OBRADE PODATAKA izmedju kojih narocito svi isticu Chen-ov model OBJEKTI-VEZE. Model je zaista krajnje prirodno elegantan jer, bar se meni cini, polazi od toga kako covek razmislja - a razmislja na nivou OBJEKATA izmedju kojih pravi VEZE - i gotovo, nema vise, to su TEMELjI svega... Gde su onda aplikacije koje se oslanjaju na ostale pristupe podacima ? Jednostavno ih nema jer teoreticari NISU prakticari - kud' bi oni da pored toga sto smisle nov nacin GLEDANjA NA PODATKE jos se bakcu i sa jezikom koji bi podrzao sve to... Bar se meni cini da tako stvari stoje, mozda i gresim, ali znam da postoji standardan postupak da se Chen-ov model KONKRETNOG RESENJA nekog problema PREBACI na relacio fazon. Cini mi se da teoreticari modela samo teoretisu a kada resenje treba pretociti u aplikaciju - 'ajmo na relacione dijalekte... A Chen-ov model je tako divan... Gledas graficki prikaz i BUKVALNO citas RECENICE kojima svi mi tako prirodno komuniciramo medjusobom... Da ne budem pristrasan evo i spiska ostalih modela: - MODEL OBJEKT-VEZE (MOV) (Chen 1976) //obrati paznju na godinu ! - BINARNI MODEL PODATAKA - PROSIRENI RELACIONI MODEL (RT/M) (Codd 1979) //u praksi je stari model ! - SDM-IBM (IBM) - MODEL PODATAKA SEMANTICKIH MREZA (Roussopoulos & Mylopoulos) - SEMANTICKI MODEL PODATAKA (SDM) (Hammer & McLeod 1978) - PETRI-jeve mreze (Reti di Petri) - SEMANTIC ASSOCIATION MODEL (SAM) (Stanlay) - D-GRAPH MODEL (Weber) - PALMER (Palmer) - DIAM II (Senko) Spisak je prepisan iz: _"Sistem analiza i modeliranje podataka", Mile Pavlic_ i to samo iz grupe modela podataka III generacije a kazu postoji i IV... KnjiziCA je zaista zgodan PRIRUCNIK za nuzdu, preporucujem je svim NAIVNIM UMETNICIMA koji su problematici obrade podataka pristupali direktno kroz neki aplikacioni jezik (recimo Clipper) - i sebe ubrajam u iste... Mozda tek posle njenog DETALJNOG iscitavanja naivac shvati da jezik na kome se pisu aplikacije nije sustina vec samo KRAJNjI CIN celog postupka, da su jezici orijentisani ka obradi podataka samo "igle i makaze" ili mozda oko 20% cele problematike... Jednostavno, po meni, treba bar zavrsiti FON ili BAR citati njihove udzbenike ili BAAAR koristiti CASE alate... Da malo "elaboriram" one "igle i makaze". Svi mi koji zivimo od pisanja poslovnih aplikacija smo ustvari ZANATLIJE u smislu da kada nekom zatreba odelo ode kod krojaca da mu ga PO MERI sasije. Ne sporim da, kao sto krojaci treba dobro da barataju iglama i makazama, treba i "kreatori" aplikacija da detaljno vladaju finesama jezika kojim MODELIRAJU ali majstor se ne postaje cistom vestinom baratanja alatima svog zanata - treba imata i nesto vise, ono sto razlikuje krojaca od modnog kreatora; vestina igala i makaza je samo TRECI obavezan PREduslov (drugi je poznavanje teorije a prvi je ideja, po meni). NajLepse od cele price je cinjenica da je sivenje/kreiranje odela LICNI CIN stvaranja NECEG NOVOG - dakle MOZE nastati i umetnicko delo (gde ja odoh...). Izvinjavam se na opsirnosti sve u nadi da cu biti konstruktivan... Miki P.S. Prosto su mi smesne one tirade od "diskusija" koje se bave tackama i zarezima... Naiva...
clipper.866 ppekovic, -> #865, domana
>> 12 ZLATNIH PRAVILA RELACIONE TEORIJE >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> (E.F.CODD 1970.) U knjigama sam najčešće čitao o kriterijumima za ocenu relacionih SUBP-a (DBMS-a). >> Prvo, svi kazu a i meni se cini, da ZASTA NE POSTOJI relacini jezik koji >> zadovoljva POTPUNO SVIH 12 principa; Tačno. Codd navodi da IBM-ov DB2 zadovoljava samo 7, a neki kao Cullinet-ov IDMS/R ili CA Datacom, čak nijedan. Kritični su uglavnom kriterijumi koji se odnose na pravila integriteta, zatim održavanje pogleda, nula vrednosti, ditribucija, i dr. >> relaciona teorija je samo jedna od ostalih - postoje i drugaciji nacini >> SHVATANjA i PRISTUPA problematici OBRADE PODATAKA Da, mrežni i hijerarhijski na primer, ali je relacioni model najrasprostanjeniji i najviše SUBP-a (DBMS-a) podržavaju ovaj model. >> izmedju kojih narocito >> svi isticu Chen-ov model OBJEKTI-VEZE. Model je zaista krajnje prirodno >> elegantan jer, bar se meni cini, polazi od toga kako covek razmislja - a >> razmislja na nivou OBJEKATA izmedju kojih pravi VEZE - i gotovo, nema vise, >> to su TEMELjI svega... Ne možeš porediti relacioni model i model objekti-veze jer pripadaju različitim "generacijama" modela podataka. Takođe, niti jedan do sada poznati DBMS ne podržava implementaciju modela objekti-veze, već se ovaj model mora prevesti u neki model druge generacije (relacioni, mrežni, hijerarhijski, ...) koji se zatim implementiraju u neki od postojećih DBMS-a. Takođe, moguće je model treće generacije prevesti i u modele prve generacije tj. konvencionalne programske jezike. Paya P.S. Veliki deo podataka je iz skripte za vežbe i predavanja iz predmeta "Baze podataka" autora prof. dr. Branislava Lazarevića.
clipper.867 i.a.n., -> #859, dr.grba
>> Po ovom, ako dobro shvatam, taj kriterijum obezbeđuje ostale >> kriterijume. To znači, na primer (teoretski i praktično): ne >> smem izbrisati podatke o nekom komitentu jer imam živu neku >> analitičku karticu sa njegovim podacima. Smeš, ako postoji mehanizam koji će obezbediti da budu obrisani i svi podaci koji su vezani za njega. Drugo je pitanje da li je takvo brisanje poželjno ili ne. >> Dakle, uvodeći *obavezni* primarni ključ, i (sigurno) neke >> dodatne mehanizme, obezbeđen je integritet podataka. U primeru koji navodiš, referencijalni integritet. Ideja je da se u sistemskom katalogu čuvaju i pravila za njegovo očuvanje, na primer DELETE RESTRICTED ili DELETE CASCADES. Prvi slučaj dopušta brisanje samo ako nema vezanih podataka, drugi briše i njih.
clipper.868 bulaja,
**** new file **** R:\IBMPC\CLIPPER\*.* ---------------------- ct_bli arj 3414 Automatically overlaying CA-Clipper Tools with Blinker Ustedite 20 Kb root prostora: -------------- Most of the networking functions of CA-Clipper Tools are dynamically overlayable with Blinker. The easiest way of taking advantage of this is to split the original CL.LIB library in two seperate libraries, one of them being automatically overlayable and one of them still having to be linked into the root. If you own a copy of a Microsoft library manager (LIB.EXE) you can create this two libraries easily by using the batch file SPLIT_CT.BAT. ... The script file CA-CON.LNK for Blinker shows how to use the two libraries to create the CA-Clipper Tools sample CA-CON.EXE. The load size displayed by Blinker using CTROOT.LIB and CTOVL.LIB is 248 KB compared to 267 KB when using CT.LIB without any overlaying features.
clipper.869 nbatocanin, -> #857, djelovic
> Mađarska notacija nastala je (ili se prvi put primenjivala > u većem obimu) za pisanje Windows programa u C-u. "I (Simonyi) first used the Hungarian style in 1972. Since then, programming teams at Xerox, Apple, and 3Com have used it, as well as hundreds of Microsoft programmers in most Microsoft applications (e.g. Multiplan, Word, and Excel) and also in large parts of Microsoft Windows systems. Since its inception, many people have contributed to the refinement of the Hungarian style" > 1. "žitljivost programa". Danas skoro da ne postoji editor > koji ne može da prikaže više fajlova u raznim prozorima. U > jedan prozor staviš tekst programa, u drugi deklaracije, i > problem je rešen. Štaviše, ukoliko koristiš programski > jezik koji ne podržava deklaracije funkcija (fuj!), uvek > postoje programi koji protrče kroz sors i povade ih, makar > samo za dokumentaciju. Danas je ta mogućnost ugrađena i > direktno u većinu C kompajlera. Ovo je direktan argument meni u prilog. Ako uvek kada treba da analiziram parče programa treba da otvaram dva prozora, pa da trčim na deklaracije, pa search, ... Da ne govorim o ponovnom startovanju kompajlera zbog generisanja deklaracija ;( Zar nije jednostavnije potrebne podatke pročitati upravo na mestu na kome ti i trebaju? Ako si radio na nekom iole većem (naročito timskom) projektu, prosto mi je neverovatno da nisi došao do nekog sličnog rešenja. Sećam se da smo uvek u timovima uvodili neke prefikse za svakog člana ekipe, pa za funkcionalne celine i sl. u zajedničkim delovima koda kako bi se lakše pratio i održavao program. > 2. Opet "čitljivost programa". Dodavanje dva slova na početak imena > promenljive direktno krši pravilo da "ime promenljive ne sme da bude > kriptično i treba jednostavno i jasno da govori čemu ona služi" Prvo, mađarska notacija ne podrazumeva navođenje prefiksa od samo dva slova: može ih biti i manje ili više i odnose se na tip promenljive. Dalje se mogu dodavati atributi promenljive (brojač, privremena, save, ...) itd. U suštini, MN je *predlog* za oformljavanje celog imena promenljive. E, sad, da je nečitko, ne slažem se: onaj ko čita takav listing duže od 2 minuta navikne se da preskače prefiks pisan malim slovima pri čitanju, a ako mu zatreba, tu je. Da su u "sredini" programa potrebne dodatne informacije, dokazuje i pojava "kolor" editora koji za sada boje oficijelne stvari kao što su rezervisane reči i sl. Ne vidim prepreku da tako na neki način olakšam razumevanje i mog dela ;) > Kako onda misliš da koristiš Mađarsku notaciju kada nemaš pet > osnovnih tipova podataka nego pet hiljada tipova podataka, tj. sve > klase koje si do sada napravio? Uopšte nije stvar u strogo formalnom pokrivanju svih klasa koje sam kreirao. Dovoljno je za važnije napraviti mnemonik od 1-3 slova koji označava objekte iz te klase pa da ih daleko lakše uočavam u programima. Uostalom, dovoljno mi je samo "o" za "object", pa da bude korak napred. >> Nije ni malo bezveze što FORTRAN ima konvenciju sa >> prefiksom promenljivih. > Od popularnih jezika samo Fortran i Bejzik koriste takve > konvencije. Nije slučajno da su oba ta jezika nastala u > predhistojiji :) računarstva. Nisam mislio da je ova osobina nešto što je i danas dobro, nego da se još davno ukazala potreba za dodatnim informacijama o promenljivim. > Recimo, imaš promneljivu "brojacLjudi" a na > jednom mestu u programu napišeš "broavLjudi". Kompajler ti > ne javlja grešku, a program ne radi. Opet da ponovim: mislim da je deklarisanje promenljivih u strogo tipiziranim jezicima tehničko ograničenje koje će vrlo brzo doći na red za *usavršavanje*. Znači, ne izbacivanje, nego usavršavanje.
clipper.871 saks, -> #863, ndragan
>> Ruzna osobina, preuzeta iz originala. Stvar postaje bezvezna, jer >> ako imas dva istovetna tega, odrzavaju se oba, a prakticno se cita >> samo onaj prvi. Ocekivao sam da kraj toliko drugih pametnih stvari >> prepozna ponovno indeksiranje po necem sto vec postoji. Nije bas da istovremeno azurira i stari i novu verziju istog taga vec se jednostavno stara verzija taga pretvara u nekoristan prostor. Uostalom, evo navoda iz njihovog NG-a: Q: Why does my .CDX keep growing when I re-create an existing tag?: A: When an existing tag in a compound index (.CDX) is rebuilt using INDEX ON ... TAG ... the space from the original tag is not automatically reclaimed. Instead, the new tag is added to the end of the file, causing the file size to increase. You can use the REINDEX command to "pack" the index file. REINDEX rebuilds each tag, eliminating any unused space in the file. If you rebuild your indexes on a regular basis, it is recommended that you either delete your .CDX files before rebuilding the tags or use the REINDEX command to rebuild them instead. Sasa
clipper.872 petrovics, -> #856, nbatocanin
>> u inostranstvu. Moja deviza je: vazno je da se razumemo :)
clipper.873 smoki,
Ako neko ima NULLHERC.OBJ iz paketa DGX neka me emajlira. Miloš ps. mislim da se tako nekako zove.
clipper.876 dr.grba, -> #864, bestbp
>> Eeee, ljudi, ovaj BLINKER 3.0 je bas... Izgleda da su se bas >> potrudili. Do sada se odlicno pokazuje. Videcu dalje. Šta konkretno najviše voliš? Dual mode? >> Usput , sto se tice Visual Objects-a, pravo ime bi trebalo da mu >> bude ASPEN. Radiš li sa njim? Imaš praktična iskustva? De, pričaj malo, zanima nas sve, siguran sam.
clipper.875 dr.grba, -> #863, ndragan
>> U mom generatoru programa za indeksiranje stoji da uvek prvo obriše >> .cdx fajl, pa onda da pravi tegove ispočetka. Nema šta, tako verovatno radi većina nas. >> Očetkivao sam da je siks malo pametniji. E, sad... Očetkaj malo bolje, možda nestanu fleke (:
clipper.874 dr.grba, -> #857, djelovic
>> 2. Opet "čitljivost programa". Dodavanje dva slova na početak imena >> promenljive direktno krši pravilo da "ime promenljive ne sme da >> bude kriptično i treba jednostavno i jasno da govori čemu ona >> služi". (Iz ovog pravila se naravno izuzimaju promenljive 'i' i 'j' >> koje svi koristimo kao brojače :).) Dodavanje dva slova po mnemoničkom principu ničim ne krši jednostavnost. Sorry, ali nisam baš najbolje shvatio negiranje kvaliteta mađarske notacije. BTW, da li ti programiraš u Clipperu? Znam da si zaražen sa C++++++++++.....
clipper.877 bestbp, -> #876, dr.grba
ASPEN nije jos zvanicno izasao. U uputstvu za Clip-4-Win od Skelton Softwarea stoji: "Aspen is a code name for the Windows xBase product that CA are busy working on. It will no doubt be marvellous, but is not expected to be shipping for 6-9 months. You can use Clip-4Win to gain invaluable expirience with Windows raedy for Aspen." Ovo je iz jula '93. Imam problem kod burazera na racunaru u vezi novog Blinker-a. Naime, on ima 386DX/33/240ÚM i instalirao sam mu Funcky II i CA Tools zajedno sa novim Blinker-om 3.0. Medjutim , pri linkovanju on javlja sledece: BLINKER : 1115 : FUNCKY88.LIB(_malloc) : '__str_alloc' :unresolved external Funcky88.lib je na putanji i navedena je u link fajlu, ali on ovo i dalje javlja. U drugim programima (examples od FUNCKY-ja) javlja po vise gresaka. So, ako neko zna ... Usput, evo jedan koristan program koji kupi sve podatke iz baza, probajte... pozdrav clipvars.exe
clipper.878 djelovic, -> #874, dr.grba
> Dodavanje dva slova po mnemoničkom principu ničim ne krši jednostavnost. > Sorry, ali nisam baš najbolje shvatio negiranje kvaliteta mađarske > notacije. Uzmi neki srpski tekst i dodaj na kraj svake reči u superskriptu slovo koje označava šta je ona (p za pridev, g za glagol itd.). To mnogo manje smeta nego par slova na početku promenljive a ipak će te izluđivati. Sve ovo pričam zato što sam svojevremeno i ja koristio Mađarsku Notaciju. Kao rešenje za jedan tadašnji problem ona je bila odlična. Danas, ona je potpuno nepotrebna i, po mom mišeljnju, čak i kontraproduktivna. > BTW, da li ti programiraš u Clipperu? Znam da si zaražen sa C+++++++++... Ne programiram u Clipperu. Smatram da je on dobar za pravljenje baza podataka zbog svojih low-level rutina, ali da je kao jezik dosta loše koncipiran. Doduše, vidim da njegovi autori polako izbacuju iz njega razne "arhaizme" i kradu iz drugih jezika koliko god mogu, tako da će se verovatno kroz par verzija razviti u moderan jezik. Videćemo...
clipper.879 djelovic, -> #869, nbatocanin
> Zar nije lakše potrebne podatke pročitati upravo na mestu na kome ti i > trebaju? Jes' vala, oduvek sam se čudio onim budalama koje u knjige stavljaju fusnote umesto da ih smeste direktno u tekst :). > Ako si radio na nekom iole većem (naročito timskom) projektu, prosto mi > je neverovatno da nisi došao do nekog sličnog rešenja. Sećam se da > smo uvek u timovima uvodili neke prefikse za svakog člana ekipe, pa > za funkcionalne celine i sl. u zajedničkim delovima koda kako bi se > lakše pratio i održavao program. Prefikse za svakog člana ekipe nikada nismo uvodili i ne znam čemu vodi takva praksa? No, uvođenje prefiksa za različite module, ili u mom slučaju hijerarhije, sasvim je normalna stvar. Na taj način se uvodi red u izvorni kod i izbegava se "name space polution". No stavljanje prefiksa na imena funkcija i/ili klasa sasvim je različita stvar od stavljanja prefiksa na promenljive. > Opet da ponovim: mislim da je deklarisanje promenljivih u strogo > tipiziranim jezicima tehničko ograničenje koje će vrlo brzo doći na > red za *usavršavanje*. Znači, ne izbacivanje, nego usavršavanje. Naravno. I kod i podaci se sve više kreću ka dinamičnim formama, pa će se i mehanizmi deklaracije u skladu s time promeniti i usavršiti. S tim što sam ja skeptik po pitanju tvog 'vrlo brzo' - ući ćemo mi u 21. vek pre nego što se to dogodi.
clipper.880 dr.grba, -> #867, i.a.n.
>> >> Dakle, uvodeći *obavezni* primarni ključ, i (sigurno) neke >> >> dodatne mehanizme, obezbeđen je integritet podataka. >> >> U primeru koji navodiš, referencijalni integritet. Ideja je da se u >> sistemskom katalogu čuvaju i pravila za njegovo očuvanje, na primer >> DELETE RESTRICTED ili DELETE CASCADES. Prvi slučaj dopušta brisanje >> samo ako nema vezanih podataka, drugi briše i njih. Da li je ovo implementirano u Oracle-u ili Progress-u? žini mi se vrlo zanimljivim alatom. Šta kaže praksa?
clipper.881 d.petrovic, -> #821, arazumenic
Ă> -> Sa Blinker-om sam se ponovo rodio :)). Nije sporo prevođenje, Ă> samo me -> nervira kad počne novi modul da me zeza pa pre RMAKE-a Ă> (.rmk je po -> defaultu na "/n /a /l" moram zbog ručnog "clipper Ă> novi /n /a" -> (bez /l) da čekam puno linkovanje. Ă> Ă> Nisam razumeo šta si hteo da kažeš, pogotovo onim "ručnog". Pre nego što otkucam "rmake bla" moram "clipper truc /n /a"
clipper.882 i.a.n., -> #880, dr.grba
>> >> DELETE RESTRICTED ili DELETE CASCADES. Prvi slučaj dopušta >> >> brisanje samo ako nema vezanih podataka, drugi briše i njih. >> >> Da li je ovo implementirano u Oracle-u ili Progress-u? žini mi se >> vrlo zanimljivim alatom. Šta kaže praksa? Oracle 7 nešto od toga ima, ako je suditi po reklamama. DB2 u novoj verziji takođe. Za ostale ne znam. Stvar je u praksi i te kako potrebna, a implementacija je problem utoliko što treba omogućiti da mehanizam dejstvuje za proizvoljan broj nivoa veza, a da se održe razumne performanse celog sistema.
clipper.883 ndragan, -> #852, djelovic
/ se kreira zaista ničemu ne služi (?). Kad treba - treba, al kad ne / treba zašto onda sistem da još dodatno opterećuje programera / kreiranjem "veštačkog" Da, to i jeste praktična mana toga. Banalan primer su dani pred denominaciju, gde se iznos ukucava iz pet puta po 9000000...000, jer broj sa nulom više ne može da stane, a numerička polja su već proširena do daske. Pojavljuju se parovi, trojke, ... entorke istovetnih slogova. Izmišljanje unikatnog ključa je nepotrebno - stavke imaju broj naloga, datum i ostalo što im treba. Kad malo bolje razmislim, većini prometnih datoteka uopšte ne smeta što je najčešće nemoguće napraviti unikatni ključ od postojećih polja. S druge strane, u .dbf sistemima su baze istovremeno sekvencijalne, relativne i indeksne, dok su raniji sistemi ove tipove držali strogo odvojeno: ako ste imali pristup po broju sloga, niste imali indekse i obratno (VAX RMS, naprimer). Unikatni ključ je bio bitan, da bi se slog uopšte mogao locirati. Nije se mogao menjati, ni duplirati. Paradoks prati tu logiku; .dbf sistemi to ne moraju, i čini mi se da je zahtev za postojanjem unikatnog indeksa nastao dok je takav sistem bio jedini moguć. Situacija sa ovako komfornim indeksima s kojima je moguće bukvalno da se igramo, zahtevaće doradu teorije. Bue_ Ndragan
clipper.884 ndragan, -> #879, djelovic
/ Jes' vala, oduvek sam se čudio onim budalama koje u knjige stavljaju / fusnote umesto da ih smeste direktno u tekst :). E, ozbiljno: oduvek sam se čudio onim budalama koje u knjigama stavljaju fusnote na kraj knjige umesto da ih smeste na dno strane Bue_ Ndragan
clipper.885 arazumenic, -> #881, d.petrovic
-> Pre nego što otkucam "rmake bla" moram "clipper truc /n /a" Ne moraš. Pogledaj još jednom moju poruku 11.636 iz ove konferencije. Saša
clipper.886 bestbp,
Da li je moguce zadati neki format PICTURE, tako da se pri unosu u GET polje ono ponasa kao kasa, dakle ako se unosi 90000, da on ima zarez - 90.000,00. Bolje receno, da unos ide s desne na levu stranu, a ne sa leve na desnu. pozdrav
clipper.887 fric, -> #878, djelovic
> Uzmi neki srpski tekst i dodaj na kraj svake reči u > superskriptu slovo koje označava šta je ona (p za pridev, > g za glagol itd.). To mnogo manje smeta nego par slova na > početku promenljive a ipak će te izluđivati. Nije vic u izluđivanju, već da čitajući s leva u desno odmah znaš o čemu se radi, a prvo veliko slovo u imenu na koje se naiđe označava kraj prefiksa i početak samog imena. > Kao rešenje za jedan tadašnji problem ona je bila odlična. > Danas, ona je potpuno nepotrebna i, po mom mišeljnju, čak > i kontraproduktivna. U (glupom) kliperu nemaš tipove, ne moraš ništa da deklarišeš na početku ... Kako drugačije, sem uz pomoć konvencija (u koje spada i mađarska notacija), mogu sa kakvom-takvom preciznošću znati na šta se odnosi neko _ime_ na koje naletim u sred procedure: na logučku promenljivu, znakovnu, numeričku, niz, polje u bazi (ne daj Bože), neku ko-zna-gde definisanu global ili private ili parameter (sve gore od goreg) promenljivu ... Idealna pravila za kliper bi po meni bila: strogo deklarisanje svega, nema makroa, kompajliranje /w, uz sve to mađarska notacija i još neke konvencije (o imenima globalnih promenljivih i o imenima polja u bazama), i sve treba da bude ok (valjda:). Radio sam nekad u Moduli 2 (timski rad, veliki projekat) i zavoleo njenu _strogu_ tipiziranost, case-sensitive & unlimited (almost) length imena (procedura, modula, promenljivih), itd. Doduše, bilo je ponekad kilavo (bez pomoći pametnog, 'uradi umesto mene' editora) zaroniti u duboko ugnježdene .def fajlove da bi se stiglo do pra-definicije nekog tipa podataka da bi se se razjasnila njegova _prava_ suština. Lepa vremena to behu, kad me nije mogao s*ebati neki variable-not-found error.
clipper.889 nbatocanin, -> #879, djelovic
> Prefikse za svakog člana ekipe nikada nismo uvodili i ne > znam čemu vodi takva praksa? Da, zaista nije neko rešenje, ali to je bio projekat od nekoliko godina na kome je radilo kuso i repato. Skoro sve procedure su bile PUBLIC, pa ajde ti izaberi neko ime koje neko već nije upotrebio ;) A tek da u *tom* trenutku ne piše f-ju sa istim nazivom.
clipper.891 nbatocanin, -> #873, smoki
> Ako neko ima NULLHERC.OBJ iz paketa DGX neka me emajlira. > Miloš Misliš li na NULEXHRC.OBJ iz dGE?
clipper.890 nbatocanin, -> #876, dr.grba
>>> Usput , sto se tice Visual Objects-a, pravo ime bi >>> trebalo da mu bude ASPEN. > > Radiš li sa njim? Imaš praktična iskustva? De, pričaj > malo, zanima nas sve, siguran sam. VO se *ne* zove Aspen: to je bio radni naziv projekta koji je započeo Nantucket, a sada je deo VO. Imam ja neki tekst na nemačkom, al' ga ič ne razumem :( Znam samo da gledam slike.
clipper.888 nbatocanin, -> #878, djelovic
> ali da je kao jezik dosta loše koncipiran. Šta mu konkretno zameraš?
clipper.892 ndragan, -> #882, i.a.n.
/ potrebna, a implementacija je problem utoliko što treba omogućiti da / mehanizam dejstvuje za proizvoljan broj nivoa veza, a da se održe Imao sam sličan problem par puta; recimo, u bazi kupaca ima nekih indikatora (npr. šifra magacina iz kojeg pazari), koji se prevlače u prometnu bazu. Onda, kad se indikator u matičnoj promeni (mušterija se sad snabdeva iz drugog magacina), treba protrčati kroz prometnu i prepraviti u svim stavkama. U neku ruku bi bilo elegantnije da se taj indikator ne prepisuje u prometnu, nego čita iz matične, ali s druge strane taj baš služi za grupisanje po magacinima kad se vuku izveštaji. Verovatno se stvar može i elegantnije rešiti nekom SQL kombinacijom, ali zasad stoji tako i radi pristojnom brzinom. U većini slučajeva nema načina da se korisnik spreči da uništi neku šifru - jer čak i ako se to zabrani iz aplikacije, on uvek može da nekim drugim programom uleti u bazu i sve to pročačka ručno. Zasad se stvar rešava banalnim upozorenjima, tj niko nije lud da brljavi po sopstvenim podacima, i da posle doživljava zaslužene probleme baš u vreme završnih računa. Međutim, ne bih se čudio da se pojavi neki uvređeni kućni programer da to uradi iz osvete. DOS ne omogućava zaštitu. Bue_ Ndragan
clipper.893 dr.grba, -> #886, bestbp
>> Da li je moguce zadati neki format PICTURE, tako da se pri unosu u >> GET polje ono ponasa kao kasa, dakle ako se unosi 90000, da on ima >> zarez - 90.000,00. Bolje receno, da unos ide s desne na levu >> stranu, a ne sa leve na desnu. Dremaš, a? (: Pogledaj, za početak poruku (i skini priloženi fajl) 11.639, u kojoj Aquarius predlaže jedno prilično kvalitetno rešenje. A usput pročitaj i pratećE reference posle te poruke.
clipper.894 dr.grba, -> #890, nbatocanin
>> VO se *ne* zove Aspen: to je bio radni naziv projekta koji je >> započeo Nantucket, a sada je deo VO. Imam ja neki tekst na >> nemačkom, al' ga ič ne razumem :( Znam samo da gledam slike. Potpuno isti slučaj: postoji neki bilten što izlazi u nekom nemačkom 'PC magazine' časopisu, a koji se bavi Clipperom. Tamo videh nešto o Win verziji Clippera, ali sam, kao i ti, samo bespomoćno zurio u ilustracije...
clipper.895 ficus, -> #893, dr.grba
Pogledaj, za pocetak poruku (i skini prilozeni fajl) 11.639, u kojoj Aquarius predlaze jedno prilicno kvalitetno resenje. A usput procitaj i pratecE reference posle te poruke. pOGLEDAH NABRZAKa predlozeno resenje i ... to je i meni padalo napamet ako sam dobro provalio o cemu se radi ali .... :(((((( kolko sam provalio moram stalno da se zezam sa preblock i postblock moja ideja i ja sam tako kod sebe uradio je da se izmeni getsys.prg (funkcija aplykey kolko se secam) tako da standardni readmodalpoziva tu drugu varijantu. doda se jos jedna proverica za tip parametra i .... program ne zahteva nikakve izmene samo se ulinkuje novi getsys i calc unos radi a u programu sve isto ko da se unosi numerik.
clipper.896 saks, -> #894, dr.grba
Imam neki casopis QBS Software News, koji se bavi samo Clipperom. Tu je izasao neki prikaza prvih utisaka o VO. Tu se ne kaze previse, ali ima nekoliko bas lepih slika. Elem: "Clipper programeri su na Techniconu bili impresionirani onim sto VO pruza. Isti obuhvata elemente XBase, Clipper-a, VBasica, VC++-a i Windows API-ja. Postojece aplikeacije se mogu direktno prebaciti u njega. Radice pod Win-om kao prava W31 aplikacija, bez mem ogranicenja, ali u karakter rezimu. Garantovano je 90+ posto kompatibilnosti C5.01 i C5.2 sa VO. VO ima u sebi "form painter", "menu painter", "report painter", "visual debugger" itd. Aplikacija razvijena pomocu njega podrzava Multiple Document Interface lako i brzo (zan li neko sta to znaci?). VO-ov "Repositoru" uklanja potrebu za make fajlovima, automatski, bez programerskih zahvata. Kad se klikne na "build button", Repositoru automatski kompiluje samo one entitete aplikacije koji su menjani. Entiteti imaju svoje browsere koji se automatski startuju u zavisnosti od toga koji je entitet pozvan na izmenu. Kod koji se dobija kompilacijom je pravi (ne pseudo) kod, brzi oko 60 puta od dosadasnjeg. Najveca snaga VO-a lezi u "CommonView class library". To je GUI biblioteka objekata. Ti objekti su svesni tipa podataka kojim manipulisu i automatski predlazu browsere, formatiranje, validaciju... Inicijalno VO database server podrzava operacije u DBF i ODBC/SQL formatima." Sasa
clipper.897 dsisic,
Da li se nekad nekom desilo da program povezan blinkerom sa opcijama: - BLINKER INCREMENTAL PAD ... radi, za razliku od - BLINKER INCREMENTAL OFF gde se javlja nedefinisano pucanje programa ( potpuna blokada ) na komandi : SET RELATION TO ... Potpuno je iskljucena mogucnost greske u postavljanju relacije ( to je prva SET RELATION komanda), inace radi se o CLIPPER 5.2c. Greska se ne javlja pod CLIPPER 5.01a. Greska se javlja prilikom upotrebe blinkera 2.01 i 3.0. RDD je SIXCDX. Vrlo cudno !?
clipper.898 dpredovic,
Jel to stvarno samo ja imam problema sa Blinkerom 3.0 i Funcky-jem, ili svi ostali ćute? Problem sam locirao na __videoinit, ali šta sa tim? Cu, Dejan
clipper.899 bestbp, -> #898, dpredovic
Probaj da izbacis neku FUNCKY biblioteku iz CL.BAT. I ja sam imao slicne probleme , a izgleda da on mesa razlicite LIBeĘ._nä pzdrav
clipper.900 saks, -> #898, dpredovic
FUNCKY Ima problema sa EXO-Space-om. Tako na primer i FUNCKY-jeva funkcija FRead() izaziva blokadu masine linkovane sa ES-om. Citao sam pre par dana da je F sada kompatibilan sa istim, pa verovatno treba potraziti novi upgrade. Ako je kompatibilan sa ES-om, verovatno je i sa B3.0, jer je sustina problema u radu u protected modu. Sasa
clipper.901 dpredovic, -> #899, bestbp
> Probaj da izbacis neku FUNCKY biblioteku iz CL.BAT. I ja sam > imao slicne probleme , a izgleda da on mesa razlicite LIBeĘ._nä > pzdrav Da izbacim neki lib? Ne moze, svi trebaju...
clipper.902 smoki, -> #891, nbatocanin
Da, treba mi NULEXHRC.OBJ i DGEHRC kao i iskustva sa DGE-om na Herc-u. HK Miloš. PS. DGEHRC.OBJ :)KKK
clipper.904 neman, -> #903, rzoltan
> podacima, i da posle dozivljava zasluzene probleme bas u > vreme zavrsnih racuna. Medutim, ne bih se cudio da se > pojavi neki uvredeni kucni programer da to uradi iz > osvete. DOS ne omogucava zastitu. > > Bue_ Ndragan Mada je poruku potpisao ndragan, ide mi u soru kao rzoltan, ali nema veze :) Ja nameravam da bas zbog tog problema uvedem kontrolni znak za svaki zapis a da u samom programu proverim definiciju dbf datoteke. Glede toga, bas je zgodan onaj programcic Clipvars neman
clipper.905 bestbp,
//a da u samom programu proverim definiciju dbf datoteke. Glede toga, bas je //zgodan onaj programcic Clipvars Hvala, hvala. Nadao sam se da ce vam koristiti kao sto i meni koristi. pozdrav
clipper.906 cnenad,
Instalirao sam novi BLINKER 3. i primetio da nešto nije u redu sa inkrementalnim linkovanjem. Ubacio sam u LNK datoteku BLI INCREMENTAL ON, mada po NG-u to je stanje po DEFAULT-u. Svako linkovanje mu traje oko 12-14 sec. dok 2.01 INCREMENTAL radi oko 0.4-0.6 sec. Da li treba još nešto da se podesi ?
clipper.907 arazumenic,
Juče sam saznao tužnu istinu. Htedoh da isprobam NUM2CALC, pustih kompajler, kad ono ne može da nadje getexit.ch. Pogledam lepo na mestu gde bi trebao da bude, kad tamo su svi ostali .ch fajlovi, samo ovog nema. Verovatno sam ga greskom izbrisao. Stoga molim dobru dušu da mi gorepomenuti fajl pošalje. Saša
clipper.908 gari, -> #907, arazumenic
Evo ti getexit.ch (Clipper 5.2c) Nadam se da ce pomoci. pozdrav, Gari. getexit.ch
clipper.909 ndragan, -> #887, fric
/ svega, nema makroa, kompajliranje /w, uz sve to mađarska notacija Nema makroa? žoveče, pa vraćaš se u kameno doba. Dobro, u poslednje vreme makroe zamenjujem sa Eval ili (ime) gde ima smisla, ali svejedno - makroi ti omogućuju da prenosiš imena ili delove imena procedura, funkcija, .fr? i drugih fajlova kao _argumente_ u potprograme opšte namene. Blago rečeno, ne bih mogao da živim bez toga. Bue_ Ndragan
clipper.910 bulaja, -> #909, ndragan
│Nema makroa? žoveče, pa vraćaš se u kameno doba. Dobro, u poslednje vreme │makroe zamenjujem sa Eval ili (ime) gde ima smisla, ali svejedno - makroi │ti omogućuju da prenosiš imena ili delove imena procedura, funkcija, .fr? │i drugih fajlova kao _argumente_ u potprograme opšte namene. └─── Bljak, discusting. :) Jesi li nekad prosao pored nekog CODE BLOCK-a?
clipper.911 arazumenic, -> #908, gari
-> Evo ti getexit.ch (Clipper 5.2c) Zahvaljujem. Saša
clipper.912 arazumenic,
Povodom NUM2CALC. Fino uradjeno. Postoji par sitnih problema koje sam ustanovio isprobavajući. 1. Ako se kreira get objekt za unos promenljive nVrednost, a nVrednost nije 0, onda bi trebalo da pritiskom na prvu cifru obriše prethodnu vrednost, kao što to radi "normalan" READ. 2. Kurzor nije na pravom mestu ako se stavi picture "čE 999,999.- ". Možda ovo i nije toliko bitno, ali kvari utisak. 3. nVrednost se mora zadati na sledeći način: nVrednost := 0.00, jer na obično nVrednost := 0 javlja se isti problem kao i pod 2. Nadam se da će se autor ovog veoma korisnog dodatka potruditi da ovo ispravi, jer smatram da ovo zaslužuje da se nadje u predloženom SEZAM.LIB. Saša
clipper.913 djelovic, -> #888, nbatocanin
> Šta mu konkretno zameraš? Uffff... puno toga. Clipper je, po mom mišeljnju, najviše osakaćen dBase kompatiliblnošću, pa tamo i treba potražiti njegove najveće mane: mali broj osnovnih tipova podataka, nepostojanje struktura i unija, nekonzistentnu i lošu sintaksu, slabu tipiziranost podataka i sl. Da se sada po meni ne bi osulo drvlje i kamenje, odmah da naglasim da je po meni i C++ daleko od idealnog jezika, zbog svoje šugave C sintakse. Najbliže idealu bi čini mi se bio nekakav Turbo Pascal 5.0 + objektne ekstenzije identične onima iz C++-a. Na žalost, taj je voz već propušten :(. P.S. Da li je u Clipperu moguće odvojiti definiciju i implementaciju? Ako nije, eto još jednog minusa :(.
clipper.914 ndragan, -> #910, bulaja
/ Bljak, discusting. :) De gusibus non est disputandum :). Ovo mi omogućava da pravim rutine opšte namene, koje rade jedan deo posla, a kao parametre im prosleđujem druge stvari, te upravo postižem ono što je cilj modularnog programiranja: manje koda, manje ponavljanja. / Jesi li nekad prosao pored nekog CODE BLOCK-a? Hm, u firmu stiže ukupno jedan primerak Računara te promakne da ga ne primetim, a kad je to bilo na jelovniku imali smo nesporazum sa pretplatnom službom, ili sam iz nekih drugih razloga džonjao na času... Jel može u kratkim crtama šta je tu suštinski novo? Bue_ Ndragan p.s. nisam potencijalni kliperaš, nego radoznao.
clipper.915 .bale., -> #913, djelovic
> P.S. Da li je u Clipperu moguće odvojiti definiciju i implementaciju? > Ako nije, eto još jednog minusa :(. Pa Clipper je polu-interpreter. To razdvajanje mu dođe samo kao još jedna komplikacija.
clipper.916 bulaja,
**** new file **** R:\IBMPC\CLIPPER\*.* ---------------------- bumenu14 zip 12460 BuMenu 1.4, poboljšani sistem menija za Clipper(bulaja) 04.02.94 - v1.4 ───────────────── - dokumentacija u obliku NG (Norton Guide) - ukljucena BuMenu.ch include datoteka za lakse koriscenje BuMenu sistema i emulaciju standardne @..PROMPT.. i MENU TO.. sintakse - ispravljene jos neke sitnice, samo se vise ne secam koje :) 02.09.93 - v1.31 (never released:) ────────────────── - ispravljen mali bug :) u bu_MenuColor(), zbog koga nije Ok radilo ne-automatsko podesavanje boja
clipper.918 fric, -> #909, ndragan
> Nema makroa? žoveče, pa vraćaš se u kameno doba. Dobro, u > poslednje vreme makroe zamenjujem sa Eval ili (ime) gde ... > Blago rečeno, ne bih mogao da živim bez toga. Well, _teoretksi_, upotrebom kodnim blokovima je moguće izbaciti potrebu za makroima. Makroe, kaže dalje teorija, treba izbegavati jer se zbog njih (ako se samo jednom pojavljuju u kodu) ulinkljuje :) i ceo interpreter za iste. Drugi razlog za izbegavanje istih je, normalno, pouzdanost: kompajler ne može da provali da li ono što je protureno kroz makro ima smisla; error bupne tek kad se makro lepo razvije :) U praksi, makroe i dalje koristim :) ponekad kad me mrzi da provalim kako bih isto uradio sa kodnim blokovima.
clipper.919 vlaslo,
hi :-) da li neko moze da mi objasni oblik ntxXXX.obj filea u clp 5.2 jer zeleo bih da napravim index za madjarski jezik. cu
clipper.920 drdjokic,
Imam sledeci problem. U mrezi koristim svoj program, kada posaljem stampu na stampac on ne reaguje. Stampa tek kada izadjem u DOS. Isti problem imam i sa nekim komercijalnim softverom. Sta da radim ? Hvala u napred !
clipper.921 bulaja,
Moze li se nekako iz #command / #translate direktiva pristupati članovima niza? Standardnim načinom aNiz[i] to naravno nije moguće, pošto pretprocesor [ ] smatra kao separatore opcionih argumenata. Pod rešenjem ne podrazumevam pravljenje neke funkcije kao što je: FUNC ArrayElement (aArray, nIndex) RETURN aArray[nIndex] :) već me interesuje da li #command/#translate omogućavaju direktan pristup članovima niza?
clipper.922 cnenad, -> #916, bulaja
ŁŁŁ - ispravljene jos neke sitnice, samo se vise ne secam koje :) Jel ono sa MESSAGE ako je negde na sredini pa seče ram koji je iscrtan na ekranu ?
clipper.923 dsisic,
Stigao je patch za SIXCDX 1.5. Po nekom mom rezonu bilo bi OK da ga tutnem ovde, ako ni to ne moze, bicu dostupan preko mail-a.
clipper.924 nbatocanin, -> #913, djelovic
>> Šta mu konkretno zameraš? > mali broj osnovnih tipova podataka, Da, ovde bi se moglo dodati ponešto... > nepostojanje struktura i unija Strukture on ima: kako drugačije da zoveš ovo: {1, "ABC", Date()}. Što se tiče unija, nisam baš lud za njima: to je mašinska caka za uštedu prostora koji se u Clipper-u ne štedi ni na mnogo važnijim mestima ;) > nekonzistentnu i lošu sintaksu, Paaa... Ne bih se baš složio. Šta je nekonzistentno? Meni jedino smetaju "doslovni argumenti" (USE Test, a ne USE "Test"), ali i to je sad sređeno. > slabu tipiziranost podataka i sl. ;) E, ovde se ne slažemo. Meni čak odgovara netipiziranost. Izgleda da je najbolje rešenje zlatna sredina primenjena u VO: 'oš tipizirane, 'oš netipizirane podatke, pa biraj :) > Da se sada po meni ne bi osulo drvlje i kamenje, odmah da naglasim da > je po meni i C++ daleko od idealnog jezika, zbog svoje šugave C > sintakse. Najbliže idealu bi čini mi se bio nekakav Turbo Pascal 5.0 > + objektne ekstenzije identične onima iz C++-a. Na žalost, taj je voz > već propušten :(. C je svoje pristalice dobio tako što je bio prvi jezik koji je zaista oslobodio programera: lično me je strašno nerviralo što kad radiš u nekom jeziku ne možeš sve da uradiš u njemu, nego spajaj sa ovim, pa sa onim, itd. C je tu napravio revoluciju - prevodilac ti skoro kaže: "bato, piši šta oćeš, pa šemo da vidimo". I to je nešto što se i meni kao programeru zaista sviđa - uostalom, ko voli ograničenja? E, sad: naravno da se tako nešto i gubi. Pascal (ili Modula) su mnogo lepši jezici za čitanje, ali nisu postali tako popularni uglavnom samo zato što su imali glupa ograničenja (je*eš jezik bez stepenovanja). Eto, Borland je dodao par caka u TP i vidite šta je napravio. No, tu smo gde smo i nema nam izlaza ;) A da je voz propušten, nisam siguran - ko zna šta će sutra biti... > P.S. Da li je u Clipperu moguće odvojiti definiciju i > implementaciju? Ako nije, eto još jednog minusa :(. Slušaj, razmišljanje ti je kontekstno vezano: probaj malo da se prebaciš u drugu klasu problema. Clipper je sa te strane tipičan izvršibilan jezik: čak su i deklaracije poput PUBLIC izvršne naredbe. Tačno, ima to nedostataka. Međutim, imaj u vidu pri proceni Clipper-a da su neke stvari zaista originalne: pretprocesor, koncepcija core jezika kome pretprocesor daje finalni izgled; kod blokovi - jedna zaista odlična ideja - *akcije* koje se tretiraju kao podaci (sasvim u duhu OOP-a); potpuno modularna struktura: pristup bazi podataka, terminal, GET sistem, obrada grešaka... Naročito sistem za obradu grešaka.
clipper.925 bulaja, -> #923, dsisic
│Stigao je patch za SIXCDX 1.5. Po nekom mom rezonu bilo bi OK │da ga tutnem ovde, ako ni to ne moze, bicu dostupan preko mail-a. └─── Baci ga meni na mail :), pa ako može da ide u dir (a trebalo bi da može:), prebacicu ga.
clipper.926 bulaja, -> #922, cnenad
│Jel ono sa MESSAGE ako je negde na sredini pa seče ram koji je iscrtan │na ekranu ? └─── Nemam pojma, uopšte ne koristim MESSAGE :)).