[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [MISC] Lidt om Kylix



Historien fortsætter.
Efter en del kamp lykkedes det at få XManager til at køre, hvilket medførte
en øjeblikkelig aflivning af Kylix. Min beslutning om at installere i /usr
medførte, at jeg som almindelig bruger skulle til at have nogle rettigheder
jeg ikke havde i forvejen. For nu ikke at vælte hele adgangssystemet, valgte
jeg derfor at geninstallere, denne gang under /home/e (det er også mig;).

Efter det sædvanlige råberi (det er altså irriterende), kom goddag verden op
igen. Jeg fatter ikke, at Borland altid har brugt ideen med at lægge egne
filer ind i en folder under programmet selv som default, den er jeg ikke
varm på.
Jeg holder på, at man skal kunne slette en programfolder/dir uden risiko for
at miste egne data. På det punkt slæber Kylix nogle Win-traditioner over i
Linux-verdenen, hvor man, så vidt jeg har kunnet se, har en vis tradition
for at placere egne data under /home/bruger.
Nu kan jeg med andre ord ikke længere bruge Kylix som root! Pest eller
kolera. Gør jeg det alligevel, vil alle nye filer få root og ikke "e" som
ejer, og det giver bøvl, selv om det er mig selv i begge tilfælde ;)
Jeg vælger for en tid at blive ved med kun at kunne arbejde som bruger e,
vel vidende, at det nok ikke rækker, når jeg skal i gang med at oprette en
database.

På serveren kører kylix nu fint. I Xmanager 1.3.8 er det den rene
elendighed.
Underliggende skærme opdateres ikke. Trækker man et vindue rundt, droppes en
sort skygge, som efterhånden maler alt andet sort. Eftersom X er startet
begge steder på samme bruger ID, må fejlen vel mest sandsynligt ligge i
Xmanager, og dog. Alle andre forme flytter fint. Et terminalvindue og KMySQL
deles fint om pladsen i nabovinduet.
Nu kan man naturligvis blot lade sine forme stå, men de små hint's der
kommer når musen kommer over en komponent maler også baggrunden sort.
Skærmskift med Ctrl+F? lader til at skulle blive en fast del af
indtastninger :(
Et forsøg med at lade det hele flyde rundt i løse vinduer gav et lidt mere
acceptabelt resultat, men godt er det ikke. Nu er der ikke en anden skærm at
skifte over til, når mørket breder sig.
Resultatet blev, at jeg valgte at prøve med X-Win32.
Voila, alt fungerer, sådan næsten da, den kører max i 2 timer og kun i 45
dage, men det er vel til at løse (for 249$). Hverken VNC eller Xmanager er i
min opsætning egnet til at køre Kylix. På grund af manglende tidssans, er
den fri X-Win32 nok heller ikke løsningen.
Jeg tog konsekvensen, og gik direkte på serveren.

Da jeg satte KDE2 til at snakke dansk, kom højdepunktet i hele forløbet. Nu
ved jeg, hvordan jeg skal få min gamle mor i gang med EDB, noget hun ellers
har afvist på det kraftigste. Hun skal til at hækle en ny skærmskåner til
min KDE, skal hun!! Sådan en fin en, der kan ligge på skærmen, og foldes ned
over den, når solen skinner ind. Med lidt held, kan jeg få en Tux med
solbriller på, nu får vi se. I betragtning af, at en Screen saver slider på
en moderne skærm, som ellers blot ville slukke sig, topper udtrykket på
listen over meningsforstyrrende undersætteslser. Da maven holdt op med at
ryste (og det tog af andre grunde sin tid), gik jeg i gang med at luge ud i
genvejstasterne.

Defaultopsætningen bruger CTRL+F1..F? til at skifte mellem de virtuelle
skærmen. Smart nok, hvis man altså ikke lige skal lave noget i et program i
en af skærmene, og dette program skal bruge kombinationen selv. På en eller
anden måde er der noget forkert ved, at operativsystemet, hvad man vel må
sammenligne KDE med her, fanger tasterne inden programmerne får adgang til
dem. Om det nu er et KDE eller Kylixproblem skal jeg ikke forsøge at gøre
mig klog på, men sammen virker de ikke. Det samme gør sig desværre gældende
med mc. Hvis jeg lærer den tasterne at kende, går kylix helt agurk og
omvendt. Min løsning her og nu er nok lidt radikal, men jeg kører altså mc i
en tekstkonsol, og skifter over til den når behovet opstår. Ikke specilet
fleksibelt, så jeg ender vel med at finde mig en anden løsning en dag. Lige
nu er mc det eneste faste holdepunkt, og nyheder er der nok af.
Imidlertid er dette et af de punkter, hvor mit mangelende kendskab til KDE
kommer mig til gode. Vi, der endnu ikke har fået CTRL+F? ind i fingrene, er
langt bedre stillet end alle jeg andre. Lidt har også ret.
Jeg kan uden problemer lægger funktionerne over på andre taster, hvis jeg
skulle ønske det, og få kylix til at køre på vanlig vis.
Dette er faktisk et væsentligt punkt i hele processen. Den største
omkostning i et firma ved at skifte fra en tekstbehandler til en anden er
ikke anskaffelsessummen, men derimod den foringede produktivitet i
omstillingsperioden.

Nu skal der programmeres, men hvad? Jeg skal have lavet et lønsystem, men
det er jo ikke lige noget at starte med som det første, så jeg fik defineret
en anden lille opgave til mig selv.
Jeg har brug for at kunne uddelegere root-rettigheder til en bruger, så
vedkommende kan oprette/slette brugere. Verden er en skole, brugeren en
lærer, og han skal kunne håndtere elev-konti uden at kunne noget andet som
root.
Det job kan jeg ikke lige se, man kan løse som mulighederne er nu, ret mig
venligst ikke lige nu, jeg er gået i gang.
Hvis man nu fifler lidt med det, så kunne et program vel danne et script,
som via et cron-job oprettede og slettede de relevante brugere om natten.
Det var ideen i al sin enkelhed, nu skal den så bare have lidt kød på.

Først skal der laves en simpel database. Det bliver i MySQL, den vandt
kapløbet om først at gøre sig tilgængelig for mig, mest p.gr.a. kMySQL og
kMyAdmin.
Der skal være følgende basis-tabeller:
Elever (ElevID, Fornavn, Efternavn, Klasse_ID)
Laerere (LaererID, Fornavn, Efternavn,Password)
Klasser (KlasseID, Bet, StartAar, Spor)
Grupper (GruppeID,Gruppenavn)
og et par relationstabeller:
ElevTilGruppe (Elev_ID, Gruppe_ID)
LaererTilGruppe(Laerer_ID, Gruppe_ID)
På den baggrund (sikkert med et par justeringer undervejs) kan man nu give
en lærer adgang til at oprette/slette elever i udvalgte grupper, og han har
ikke brug for at kunne arbejde med andre grupper, end lige netop den eller
de, som den egentlige root tillader at han arbejder i ved at gøre dem
tilgængelige i databasen.
Blot en løs ide, og muligvis en blindgyde, men det giver lidt stof at lege
med.

Ind med tabellerne i MySQL, oprette en bruger SkoleAdm med et password, og
så er der gjort klar til Kylix.

Det første er at få startet en ny applikation, og få den gemt. Her dukker
problem 1 op, man kan ikke som i Windows oprette en ny folder, når man vil
gemme. Den funktionalitet kunne man godt ønske sig.
Ethvert program under Delphi/Kylix bør efter min (og Borlands) mening have
mindst to forme, en til det brugeren ser, og et datamodul. Der er
naturligvis undtagelser ("Goddag verden"), men de er sjældne.
I datamodulet oprettes nu pænt indkapslede objekter, som kan servicere
resten af programmet med data.

Først skal der etableres en forbindelse til databasen.
Dette gøres med en SQLConnection i datamodulet. Der sættes lidt parametre op
på den, Driver, database, bruger og evt. password. Det sidste valgte jeg at
hardkode ind i komponenten, da jeg ikke ønsker, at den/de lærere, der skal
bruge den skal have direkte adgang til selve databasen. Det password, der er
på de enkelte lærere, skal således benyttes til at åbne programmet selv for
lærerens adgang, ikke andet. Tingene ser lidt anderledes ud, men ikke så
meget, så det generer.
Den aktiveres lige for at se, om alt nu er korrekt. (Det var det ikke, så
der gik noget tid med at få MySQL korrekt sat op)

Dernæst skal man have fat i data. Selv om databasen blot er rystet ud af
ærmet, er den faktisk pænt normaliseret (prale bare lidt;), så det at få de
rigtige oplysninger om en elev er ikke så enkelt. En tabel-komponent kan kun
give oplysninger om eleven, ikke om hvad han gør (dvs. hvilken klasse han
går i), derfor vælger jeg en TSQLQuery komponent, hvor man selv kan
definere, hvad man vil have, og hvordan man det skal serveres.
Ind med en TSQLQuery, på med dens connection og på med SQL-editoren.
Teksten er enkel nok, vi skal lige have eleverne og deres klassebetegnelse:

"Select Elever.*, Klasser.Bet from Elever where
Elever.Klasse_ID=Klasser.KlasseID"

Her kommer den første lidt mere alvorlige mangel.
Stringlist editoren i D5 har en [code editor] - knap, hvor den slags kan
komme op i en fuldskærms editor med syntaks highlight.
Den facilitet mangler i Kylix.
Det skal dog siges, at man i Kylix i det mindste kan ændre på vinduets
størrelse, hvad man ikke kan i D5, men syntaksen og dermed det hurtige
overblik mangler altså.
Værre er det, at hvor CTRL+Insert og SHIFT+Insert virker fint i
kodeeditoren, er det kun CTRL+C og CTRL+V der dur i Stringlist-editoren. Her
er Borland ikke blot sprunget over gærdet, hvor det er lavest, de har gravet
en grøft. CTRL+C og CTRL+V har nemligt helt andre funktioner med Classic
Keymapning i kildeteksten. Marker en blok, og CTRL+C dropper markeringen og
rykker ned i teksten.
Selve det at åbne editoren sker med et klik på en lille ikon med tre
punkter. Der gik en del tid, inden det gik op for mig, at man ikke skal
klikke men trykke på den med venstre musen. Den reagerer utroligt sløvt.
Dette er prisen for at begynde at arbejde på en server, det kan ganske
enkelt ikke anbefales. Der er tale om en ikke særligt travl PII-333, men den
arbejder som en god gammel tante 486 i kylix.
Personligt foretrækker jeg at samle data op i en stringlist i programmet, og
lukke min query efter mig. Tag ikke fejl, jeg er helt klar over, at et
program, der skal håndtere store datamængder og mange samtidige brugere
stille andre krav (det er såmænd lige før jeg også ved hvilke, hvis jeg
bliver trængt lidt:).
Her er verdensbilledet imidlertid, at een lærer skal kunne styre eleverne i
een eller flere klasser, mens to lærere skal ikke sidde og ændre på de samme
elevers adgang på samme tid. Den eneste grund til ikke blot at bruge en
tekst-fil er, at der er bedre styr på adgangsmulighederne i MySQL, og så
naturligvis fordi det er det jeg har lyst til at afprøve.

For at samle de eksisterende elever op, går jeg derfor ind på eventet
AfterOpen på min SQLQuery.

Her kommer så den næste overraskelse (den står i manualen, så Borland vidste
godt, at det ville overraske sådan en som mig, der bare kører på).

En tSQLQuery er en ekstremt slank komponent, hvor man har fjernet alt hvad
der kunne sløve den ned. Det betyder bla.:
1. Man kan ikke hente oplysninger fra to tabeller i samme query (eksemplet
fra før fejler).
2. Man ikke kan referere til felterne efter navn, men må gøre det efter
løbenummer.

I realiteten begrænser det den komponents anvendelighed temmelig kraftigt,
men til simple ting er den fin nok.
Da jeg skulle rette lidt, viste det sig, at min fine brede stringeditor
havde været på skrump i mellemtiden. Det kommer til at irritere mig mange
gange, at den opsætning ikke i det mindste huskes så længe programmet er
åbent.. Formen er modal, så man kommer ikke videre før den er blevet lukket,
og har glemt alt om sin størrelse.

Nu er jeg lidt stædig, så det måtte blive en anden komponent, der skulle
holde for. Det blev et TSQLClientDataSet.
Navnet siger det hele. I stedet for blot at være resultatet af et
SQL-statement er der tale om et dataset, som opsamler og gør ved. Det er
endnu ikke gået op for mig, hvorfor jeg ikke kan få en komponent, som fladt
fyrer et statement af og leverer resultatet, men sådan er det altså . Dette
er en af de hæmninger der stadig plager Borland, og som gør livet en del
lettere for tredjeparts-udbydere. Nok har de afliver BDE, meeen.
Nu virker det, og jeg kan få tingene som jeg vil have dem, og må så blot
finde mig i, at der spildes ressourcer på faciliteter jeg ikke vil bruge.

Kylix har et ret afslappet forhold til store/små bogstaver ligesom Delphi.
Det passer mig utroligt godt, jeg laver slåfejl nok endda.
MySQL er til gengæld helt hysterisk (ligesom Linux) på det punkt, så her er
en ubehagelig fejlkilde. Det er derfor meget praktisk, at man kan vække sine
komponenter til live, og se om alt er i orden.
Det rejser imidlertid også et behov for en lidt mere seriøs query-builder
end den kmysql indeholder. På det punkt er Borland ikke med endnu, men det
skulle komme.
Jeg må indrømme, at jeg har noget svært ved at se begrundelsen for, at MySQL
i Windowsverdenen ikke er case sensitive, mens den er det i UNIX udgaverne.
Tomme traditioner, eller er UNIX'ere virkeligt interesseret i at have en
tabel med to felter hvor det ene hedder "Vane" mens det ander kaldes "vane"?
De kunne dog bare kalde det ene af dem for Uvane i stedet 8-)

Kommunikationen internt i programmet klares som vanligt med Events,
tilgangen til data med Property's, funktioner og procedurer, så bortset fra
at databasekomponenterne er forskellige fra dem jeg er fortrolig med, er der
ikke meget nyt på den side.
Datamodulet er lidt for primitivt. At man ikke kan sidde og designe en DB er
efter min bedste mening uden betydning (læs: den facilitet har jeg alligevel
aldrig brugt), men en explorer ville være nyttig at have, ikke mindst fordi
de enkelte komponenter kun kan vises som store klumpede ikoner. Man fristes
til at give korte navne, og det bærer jo straffen i sig selv.
Fra præsentationen på Arken mener jeg at huske, at det blev sagt, at frames
ikke var med. Det er heldigvis forkert husket (eller sagt). Denne meget
hurtige genvej til at skrive komplekse kompponenter eksisterer i bedste
velgående.

----
Indtil nu har forløbet været præget alt for meget af mine manglende
erfaringer med X, det vil jeg blankt erkende. Frustrationen over ting, der
ikke fungerede som forventet, har dog endnu ikke slået mig helt ud. Der er
bare så mange uvæsentlige ting, der skal ryddes op i, inden kylix kan komme
til sin ret.

Det næste skridt jeg tager bliver at forsøge mig med WinLinux på min
arbejdsplads. Med en ekstra HD til den, burde det vel kunne lade sig gøre at
få den til at køre (den bryder sig ikke om NTFS-2000, men det er der vis
ikke meget andet end Win2K der gør). Lykkes det, vender jeg tilbage med en
status (såmænd nok også, hvis det mislykkes, om ikke andet så på -teknik).

mvh
E. Sjørlund



 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 19:20 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *