Scripten

Iedereen kan hier terecht met vragen over allerhande open source software die niet in de andere fora past.
Plaats reactie
Freston
Berichten: 147
Lid geworden op: 24 januari 2007, 14:19
    unknown unknown

Scripten

Bericht door Freston »

Ik vraag het hier even, want ik weet dat er hier mensen zijn die het weten ;)

Het Gnu/Linux virus heeft mij goed te pakken. En dus met ik onder het motto 'De beste programma's schrijf je zelf' druk aan het scripten. Ik heb er al een paar af waar ik erg content mee ben en regelmatig mee werk.

Dit is wat ik nu wil cq nodig heb:

Een script waarmee ik een data-base aan kan maken en kan onderhouden met cliëntgegevens. Dit moet vanuit de Konsole oproepbaar zijn. Over het systeem en de interface heb ik zo mijn gedachten. Dat komt wel goed. Het ontwerp is nagenoeg af.

Echter, het script moet een paar dingen kunnen. Het moet 1) data in een bepaalde format toe kunnen voegen aan de database. Het moet 2) betrouwbaar gegevens uit de database kunnen halen en weergeven in een bepaalde format. En het moet 3) gegevens uit de database kunnen vervangen met andere gegevens.

De eerste twee punten zijn een makkie natuurlijk, maar het laatste punt baart mij wat zorgen. Het kan wel met sed, maar dan schrijf ik dus de hele database weg naar een tempfile behalve wat ik weg wil hebben. Dan de hele database weer terugzetten, en weg is wat ik weg wilde hebben. Dat kan. Maar een database met honderden, zo niet duizenden entries op die manier onderhouden vind ik gewaagd. Zeker omdat het zakelijke relaties zijn, dus het mag niet misgaan ;)

Vandaar mijn vraag. Is er een geschiktere methode om gegevens (lijnen) uit een database te filteren, info toe te voegen aan een lijn of hem te vervangen? Wellicht is dan een andere taal (python, perl, etc) geschikter? Misschien heeft iemand een aanrader?

Ik dank U met zwierende zwaai en een diepe buiging.
Got Slack?
common sense
Berichten: 656
Lid geworden op: 2 augustus 2006, 13:45
    unknown unknown

Bericht door common sense »

rebil
Berichten: 505
Lid geworden op: 25 april 2006, 20:07
    unknown unknown
Contacteer:

Bericht door rebil »

Als je geen al te hoge eisen hebt (lees: als je geen bank bent), moet je zelfs geen 'echte' databank opzetten. Het zeer lichte, maar verbazend volledige, SQLite zal waarschijnlijk ook al prima aan je noden voldoen. Het wordt ondersteund door zo ongeveer elke programmeertaal die je kan bedenken en is ook toegankelijk via de shell.
Freston
Berichten: 147
Lid geworden op: 24 januari 2007, 14:19
    unknown unknown

Bericht door Freston »

Oké, onwijs bedankt!

Perl of SQL, dat lijken mij twee hele goeden voor mijn noden. Ik vind het echt fantastisch om mijn benodigdheden steeds meer in eigen hand te krijgen. Het is een hoop werk, maar leuk en voldoenend werk. En ik kick ook wel een beetje op mijn eigen interface. Tekstueel, en razend snel.

Alleen ben ik vandaag wezen shoppen, en vond maar bar weinig over programmeertalen; los van een C++ voor dummies. En dat is jammer, want ik heb juist behoefte aan wat toelichting om commando's te voeden met variabelen. Daar tast ik nog wat in het duister.

't Is allemaal nogal basic (pun intended), en ik zal er niemand mee lastig vallen, maar de taal waarin is niet zonder importantie. Bedankt nogmaals. Ik ga hier achteraan. Daarover hebbende:

Wie heeft er wel eens van Ruby gehoord? Ik wel ooit op de zijlijn, maar vandaag had ik een boek in handen dat veelbelovend leek. Niet gekocht. Is dat jammer?

--------------

Nogmaals mijn intentie, ik zei het net al. GUI zegt mij steeds minder. Zoals ik werk moet ik gewoon een razend snelle (en daarmee tekstuele) interface hebben. Snel data op kunnen halen en weg kunnen schrijven, zonder mijn cliënten uit het oog te verliezen (letterlijk). Het kán, en jullie hebben mij geholpen Hulde, hulde, driewerf hulde!!!
Got Slack?
common sense
Berichten: 656
Lid geworden op: 2 augustus 2006, 13:45
    unknown unknown

Bericht door common sense »

Freston schreef: Alleen ben ik vandaag wezen shoppen, en vond maar bar weinig over programmeertalen; los van een C++ voor dummies. En dat is jammer, want ik heb juist behoefte aan wat toelichting om commando's te voeden met variabelen. Daar tast ik nog wat in het duister.
Klopt, bij veel (de meeste) traditionele boekhandels moet je de uitgaves van O'Reilly bestellen, ze staan er niet op de plank. On-line zijn ze beter te krijgen. Deze uitgever heeft echt alles op het gebied van scripting, SQL, eigenlijk bijna alles wat een Unix guru nodig heeft...

Voor Perl is de "bijbel" the Camel book.
Freston schreef: Wie heeft er wel eens van Ruby gehoord? Ik wel ooit op de zijlijn, maar vandaag had ik een boek in handen dat veelbelovend leek. Niet gekocht. Is dat jammer?
Ruby is the newer-kid on the block, en Perl is een ouwe rot met een flinke userbase. Ruby werkt denk ik ook prima, maar richt zich nog nadrukkelijker op object georienteerd programmeren, en dat moet je toevallig maar net je ding zijn ... In Perl is OO ook mogelijk, maar het is geen moetje, dus daarom ligt Perl me wel 8)

(ik word al moe bij het idee dat ik klassen moet verzinnen en UML diagrammen moet tekenen ...)

Verder ken ik Ruby niet zo goed, dus een echt zinnig oordeel over Perl vs Ruby kan ik niet geven.
rebil
Berichten: 505
Lid geworden op: 25 april 2006, 20:07
    unknown unknown
Contacteer:

Bericht door rebil »

Je hoeft niet noodzakelijk een boek te kopen. Op het Web is ook al heel wat te vinden, bv. Python, bash, Java en C++. Op de officiële website van de meeste vrije programmeertalen vind je meestal wel minstens een beginnershandleiding en documentatie.

Ruby heeft sinds zijn opkomst enige tijd geleden de plaats van Python ingenomen als meest sexy programmeertaal. Het is afkomstig uit Azië en dat valt soms te merken aan documentatie die nog niet helemaal vertaald is. Het schijnt heel intuïtief te zijn om mee te werken, maar heeft nog niet alle mogelijkheden die je mag verwachten van een volwassen taal. Het wordt vooral gebruikt als platform voor het web, in de vorm van Ruby On Rails. Ik heb er zelf geen ervaring mee, dit heb ik allemaal van horen zeggen.
Freston
Berichten: 147
Lid geworden op: 24 januari 2007, 14:19
    unknown unknown

Bericht door Freston »

Dank dank,

Ik denk dat Perl de taal is die ik zoek, althans wijst de documentatie van Perl mij makkelijker op de dingen die ik wil. Bij de anderen moet ik echt spitten, of omwegen verzinnen. Perl is wat directer, voor wat ik wil in ieder geval.

Een boek kopen is inderdaad niet een vereiste, maar het leest wat lekkerder.

Overigens ben ik al een eind in bash gekomen. Als ik hier toch eens omheen kwam, kon ik alles met bash bereiken:

Code: Selecteer alles

sed '/patroon/d' database >> nieuwe_database
mv nieuwe_database database
Ik vind dat omslachtig om patroon uit de database te krijgen. Het klinkt voor mij een beetje als

Code: Selecteer alles

Zet '/asbak/behalve' alles uit huiskamer >> andere_kamer
Noem andere_kamer huikamer
En dat alles om de asbak te legen. Of ben ik nou aan het zeuren :roll:


Het werkt immers wel :D
Got Slack?
common sense
Berichten: 656
Lid geworden op: 2 augustus 2006, 13:45
    unknown unknown

Bericht door common sense »

Freston schreef: En dat alles om de asbak te legen. Of ben ik nou aan het zeuren :roll:
Je zou ook de -i optie van sed kunnen gebruiken, dan pas je de "database" direct aan, zonder kopie. Ik geloof dat alleen GNU sed dit kent, dus ymmv.

Let wel dat dit soort eenvoudige "databases" niet geschikt zijn voor meerdere simultane gebruikers (bijvoorbeeld voor een website). Daarvoor heb je een echte database met "locking" nodig.
Freston
Berichten: 147
Lid geworden op: 24 januari 2007, 14:19
    unknown unknown

Bericht door Freston »

common sense schreef:Je zou ook de -i optie van sed kunnen gebruiken, dan pas je de "database" direct aan, zonder kopie.
Nou! Heb ik daar dan al die tijd overheen gekeken!?! Ik kan zweren dat ik meermaal en herhaaldelijk de manier die ik schetste als mogelijkheid heb gelezen, en de -i optie is nieuw voor mij. Of, was nieuw voor mij. Bedankt common sense voor het helpen open deuren te slechten.
common sense schreef:Let wel dat dit soort eenvoudige "databases" niet geschikt zijn voor meerdere simultane gebruikers (bijvoorbeeld voor een website). Daarvoor heb je een echte database met "locking" nodig.
Ja en daar leg de de vinger op de zere plek. Echte databases zijn mij door al hun features en toeters en bellen te ingewikkeld. Ik ben al heel lang op zoek naar iets eenvoudigs voor mijn noden. Gegevens erin, gegevens eruit. Snel, betrouwbaar en eenvoudig.

Ik heb slechte ervaringen met database programma's. Knoppen waarvan ik niet weet wat ze doen, termen die me niets zeggen, formats die ik niet aangepast krijg. En het ergste, niet weten of je uit je systeem krijgt wat je er in hebt gestopt. Ik krijg nachtmerries als ik denk aan 'er zit een typefout in het factuurnummer, de datum weet ik niet meer en de klant wil weten op wiens naam het staat'.

Vandaar dat ik aanvankelijk alles in Excel deed, en nu tegenwoordig (voortschrijdend inzicht ;)) in Calc. Maar dat zijn spreadsheets en kennen hun beperkingen, zeker als de database te groot wordt.

Kijk! Dit is hoe een interface eruit hoort te zien (aldus Freston, ik denk niet dat een ander er wat aan heeft):

Afbeelding

Bedankt voor de hulp in ieder geval :D
Got Slack?
rebil
Berichten: 505
Lid geworden op: 25 april 2006, 20:07
    unknown unknown
Contacteer:

Bericht door rebil »

Als je zoiets kunt programmeren zou je toch ook niet veel moeite mogen hebben met echte databanken. Met een goed boek dat de beginselen uitlegt kom je al ver. Met welke programma's heb je die slechte ervaringen dan opgedaan? Als je zelf van de grond af je databank en de interface opbouwt (met OpenOffice.org Base of met SQLite+Perl) weet je toch wat alles doet? Ik zou zelf een echte databank in dit geval een stuk handiger vinden.
Freston
Berichten: 147
Lid geworden op: 24 januari 2007, 14:19
    unknown unknown

Bericht door Freston »

rebil schreef:Als je zoiets kunt programmeren zou je toch ook niet veel moeite mogen hebben met echte databanken.
Hmmm.. dank je. :P Maar op de een of andere manier heb ik het geduld er niet voor.
rebil schreef:Met welke programma's heb je die slechte ervaringen dan opgedaan?
Voornamelijk Base, Kexi en .. eh .. die van M$, hoe heet ie ook al weer?
Ach, weet je, die programma's zijn prima geschikt als je je personeelsadministratie voor een groot bedrijf wilt onderhouden. Voor mijn eigen gekneuter zijn ze niet, of krijg ik ze niet aan de praat.
rebil schreef:Ik zou zelf een echte databank in dit geval een stuk handiger vinden.
Je hebt waarschijnlijk gelijk. Ik moet mij meer gaan verdiepen in die SQLite+Perl. Dat zag er veelbelovend uit.

Maar inmiddels zit ik op 700 regels code, en dat ga ik ook niet zomaar weggooien. :roll: In mijn 'todo' lijstje staan alleen nog wat makkelijke zaken, zoals de print functionaliteit en een extra (beveiligings) filter voor de verwijderfunctie. Oh ja! En nog een manier om de datum aan te passen en nog een kernwoordfilter en nog.....

Hoezo nieuwe hobby?
Got Slack?
rebil
Berichten: 505
Lid geworden op: 25 april 2006, 20:07
    unknown unknown
Contacteer:

Bericht door rebil »

700 regels code? :shock: Dat lijkt al bijna een volwaardige databank engine. Als je het een beetje netjes geschreven hebt zou je het beschikbaar kunnen stellen als vrije software. Ik weet al een goede naam: ShellQL. Dan moet je nog wel even snel SQL-ondersteuning inbouwen. :D
Freston
Berichten: 147
Lid geworden op: 24 januari 2007, 14:19
    unknown unknown

Bericht door Freston »

rebil schreef:700 regels code? :shock:
817 om precies te zijn. En ik ben er nog niet.
rebil schreef:Dat lijkt al bijna een volwaardige databank engine.
Dank je ;) Het is wel een beetje steenkolenbash, maar het werkt. Oké, sommige features waren conceptueel handiger dan in de praktijk, dus terug naar de tekentafel. Het onderliggende idee is doorgaans moeilijker dan het uitwerken.
rebil schreef:Ik weet al een goede naam: ShellQL. Dan moet je nog wel even snel SQL-ondersteuning inbouwen. :D
Die naam is inderdaad ernstig goed! Eén keer uitspreken en ik was verliefd. ShellQL. Het heet nu 'zx', want dat kan je lekker snel typen en dan zit je met je hand al bij de navigatieknoppen. Gemak dient de mens.

Anyway, SQL ondersteuning inbouwen zal wel even duren nog, want ik moet eerst even Perl leren ;)
Het blijkt toch dat niet alles kan in Bash, en voor sommige features moet ik een uitstapje maken naar Perl. Misschien moet het maar helemaal in Perl dan, misschien maakt het niet uit.
rebil schreef:Als je het een beetje netjes geschreven hebt zou je het beschikbaar kunnen stellen als vrije software.
Mwa, ja, zover is het nog niet.
Got Slack?
common sense
Berichten: 656
Lid geworden op: 2 augustus 2006, 13:45
    unknown unknown

Bericht door common sense »

Freston schreef: want ik moet eerst even Perl leren ;)
:)
Freston schreef: Het blijkt toch dat niet alles kan in Bash, en voor sommige features moet ik een uitstapje maken naar Perl. Misschien moet het maar helemaal in Perl dan, misschien maakt het niet uit.
Een combinatie van Perl en Bash lijkt me niet zo sterk, ik zou een keuze maken. Ofwel alles in Bash ofwel alles in Perl. Ik heb niks tegen Bash scripts maar voor de executie snelheid zou ik dan alles in Perl schrijven.

En dan hoeft de Perl interpreter maar één keer gestart te worden. Of nog sneller, gebruik perlcc! Het starten van een normaal Perl script is nl redelijk kostbaar, vergelijkbaar met het starten van een Java programma.

Echt eenvoudige filemanipulaties doe ik meestal wel in Bash (of Ksh), maar zodra er rekensommen gemaakt moeten worden, en vooral patterns (strings) gematched, dan kies ik toch echt voor Perl. String manipulatie is in Perl een verademing in vergelijking met bash. Bash moet al snel externe speeltjes erbij halen zoals grep om tot veregelijkbaar resultaat te komen.

Nog veel succes met het leren van Perl! Ik heb het ook nog steeds niet helemaal onder de knie, maar dat komt omdat ik het veel te weinig doe.

Als het m'n dagelijkse ding zou zijn, dan was ik nu vast Perl-guru...
Plaats reactie