Wil je meedoen?

Wil je ook dat jouw weblog wordt opgenomen op Linuxweblogs? Neem dan contact op via onze contactpagina. Alleen Nederlandstalige weblogs die schrijven over Linux of open source komen in aanmerking voor syndication.

Volg ons en laat van je horen via Twitter

www.twitter.com/linuxweblogs

Volg ons op Twitter en communiceer met andere belangstellenden van het Linux besturingssyteem.

Geen weblog en toch mee willen doen?

Als het je ook leuk lijkt om ook af en toe een bijdrage te leveren voor dit project dan kan je altijd contact opnemen. Je kan dan via deze website je ervaringen kwijt. Of schrijf je liever een column? Laat maar weten.
Mrt
01

Programmeren is een kunst…

By jc · Comments (0)

Er was eens....

een bank met vele kantoren door het land. De medewerkers in de kantoren klaagden dat de nieuwe computers te traag waren. Dit speelde in de tijd dat electronisch bankieren, pinnen en geldautomaten nog een onbeduidende rol speelden. Klanten gingen naar de bank om geld op te nemen, en door de trage computers ontstonden er lange rijen. Daarom wilde de bank af van het contract met de leverancier.

Maar de leverancier stuurde een performance analyse en tuning expert om de oorzaak van de problemen te onderzoeken. Hij zag al snel dat één specifiek programma vrijwel alle CPU capaciteit opsoupeerde. Met een profiling tool kon hij inzoomen op het programma, en vond hij de uiteindelijke oorzaak. In de source code van het programma stond:

for (i=0; i<strlen(s); ++i) {
    if (... s[i] ...) ...
}

Die string s was gemiddeld vele duizenden karakters lang en iedere aanroep van strlen loopt langs alle karakters van de string op zoek naar de afsluitende null-byte. De string veranderde echter nooit in het lusje, dus hoefde de programmeur ook maar één keer de lengte vast te stellen. Daarmee zouden duizenden aanroepen van strlen bespaard kunnen worden, en dus miljoenen karaktervergelijkingen.

De code (door de bank zelf geschreven) werd snel aangepast, en de bankbedienden leefden nog lang en gelukkig:

n=strlen(s);
for (i=0; i<n; ++i) {
    if (... s[i] ...) ...
}

Had de programmeur niet beter zijn best moeten doen? Hij had toch moeten weten dat door de code zo op te schrijven als hij gedaan had, de code CPU-tijd nodig heeft die kwadratisch schaalt met de lengte van de string?

Iedere programmeur kent het motto: "first make it work, then make it work fast". Hiermee worden de valkuilen van micro-optimalisatie voorkomen. Maar het bovenstaande voorbeeld zou je bijna doen geloven dat de programmeur een Machiavelliaans motto aanhing "first make it work slowly."

Deze onnadenkendheid komt regelmatig voor. En het is niet alleen maar een kwestie van "je moet niet proberen het wiel opnieuw uit te vinden". Soms tikken onwetende programmeurs zonder na te denken "in het wilde weg" en hebben ze op die manier zomaar bubble sort "uitgevonden". En dan zijn ze er misschien nog trots op ook!

Naast het kiezen van het goede algoritme, moet je ook de goede datastructuur kiezen voor het soort probleem dat je aan het oplossen bent. De keuze voor een datastructuur kan erg veel invloed hebben. Als je bijvoorbeeld een gelinkte lijst gebruikt voor de opslag van miljoenen items waar je ook nog in wilt kunnen zoeken, heb je weer een suboptimale oplossing gevonden. Een gehashte datastructuur of een binaire boom laat je in dit geval de te zoeken data veel sneller vinden.

Programmeurs moeten dus het wiel niet proberen uit te vinden, en zoveel mogelijk gebruik maken van bestaande bibliotheken. Maar om problemen zoals die van de bank hierboven te vermijden, moeten de programmeurs wel wéten wat de eigenschappen van algoritmes en datastructuren zijn. Goed programmeerwerk begint dus bij een goede opleiding. Is het alleen maar de mooie opschmück in moderne tekstverwerkers die er voor zorgt dat ze net zo traag aanvoelen als old-school programma's zoals WordStar die in de jaren 80 van de vorige eeuw op 8-bits processor's draaiden in computers met 64KB geheugen?

Velen zeggen dat hergebruik is waar het om draait. Maar bovenal moeten programmeurs weten wanneer je wat op welke manier moet hergebruiken. Ze moeten dus kennis hebben van het probleemdomein, en van algoritmes en datastructuren.

Een goede programmeur weet ook wanneer een inferieur algoritme toch betere resultaten op zal leveren. Als je bijvoorbeeld zeker weet dat je nooit meer dan vijf items wilt sorteren (denk aan de vijf dobbelstenen in een Yahtzee spel), kun je misschien wel het beste kiezen voor bubble sort, omdat dat bubble sort gegeven de beperkte probleemgrootte het snelst en simpelst is.

Dus: leer van anderen (open source helpt!) en lees goede boeken (die je dan wel ook moet snappen). En mocht je de boekenserie bij uitstek goed lezen (Donald Knuths ``The art of computer programming'') zou je nog mazzel kunnen hebben en je onsterfelijk kunnen maken ook: Don Knuth betaalt een hexadecimale dollar ($2,56) voor iedere fout die je in het boek ontdekt.

Categories : Algemeen
Comments (0)

Als eigenaar en gebruiker van een Android toestel (HTC Magic) gebruik ik ook de agenda van Google. Dat is erg plezierig omdat Google Agenda altijd en overal is gesynchroniseerd. Ik hoef maar een afspraak te maken op b.v. mijn telefoon of die afspraak is ook te zien in Google’s Agenda op het web.

Die agenda is natuurlijk heel makkelijk in te zien vanachter je desktop computer. Dat kan vanuit de browser of vanuit b.v. de Prism versie van Google Calendar.

Er zijn echter nog meer mogelijkheden om de integratie van deze agenda te verbeteren. Elke Gnome desktop is immers standaard voorzien van de Gnome Clock Applet.

Als je op die applet klikt kan je ondermeer gebruik maken van de daarin opgenomen agenda. Helaas werkt die agenda standaard met de agenda functie van Evolution. En als gebruiker van Mozilla’s Thunderbird heb ik ervoor gekozen om die agenda functie niet te gebruiken.

Maar je kan alsnog ervoor zorgen dat e.e.a. op de juiste wijze wordt gecombineerd. Daarvoor moet je gebruik maken van een aparte voorziening uit de stal van Mozilla: Sunbird. En het werkt heel eenvoudig. Als volgt:

Voorbereiden:

In een terminal geef je de volgende twee commando’s:

sudo apt-get install python-evolution

sudo apt-get install sunbird

Vervolgens download je deze addon voor gebruik in Sunbird:

https://addons.mozilla.org/en-US/sunbird/addon/9656

Die addon sla je lokaal op je computer op.

Vervolgens start je Sunbird op. Ga met je muis naar het menu en kies voor Tools en dan voor add-ons. Zorg ervoor dat je in het Extensions tabblad staat en klik links onderaan op “Install” en blader dan naar de zojuist gedownloade en lokaal opgeslagen add-on (evolution_mirror-0.2.1-sb+tb-linux.xpi).

Integreren:

Vervolgens ga je jouw Google’s Agenda integreren in Sunbird. Neem daarvoor de volgende stappen:

  • File > New Calendar
  • Kies ‘On the Network’ en klik op next.
  • Kies voor de  CalDAV optie
  • Voer de volgende  URL (één regel) in the lokatie bar in:

https://www.google.com/calendar/dav/JOUWEMAILADRES@gmail.com/events

  • Kies ‘Next’ en geef een willekeurige naam aan deze agenda
  • Indien gewenst geef je nog een kleurtje
  • Geef vervolgens je Google inlognaam en wachtwoord op
  • Sunbird gaat vervolgens die agenda syncroniseren met Sunbird. Dat duurt een tijdje en het lijkt dan ook of Sunbird gaat bevriezen. Geen paniek..gewoon even wachten.
  • Als dat allemaal is gedaan kan er een alarmbel rinkelen voor reeds eerder verlopen afspraken. Cancel die alarmering en sluit vervolgens Sunbird af.
  • Klik vervolgens op de klok, kies voor een donkere datum en zie je afspraak daar staan.

De gebruikte add-on gebruikt de database van Evolution zodat je niet vanuit je clock applet Sunbird of Google Agenda kan starten. Je kan alleen maar kijken naar de gemaakte afspraken.

Evolution:

Uiteraard kan je ervoor kiezen om wel Evolution als agenda te gebruiken. Je moet dan wel eerst Evolution configureren als mail-client maar geef daarvoor dan b.v.  je gmail account op. Zet dan niet Evolution als standaard mail client op (als je ook Thunderbird gebruikt) en start de agenda op vanuit Toepassingen, Kantoor, Evolution e-mail en agenda.

Tot slot

Je kan er ook voor zorgen om de agenda te combineren met Thunderbird. Er is namelijk een add-on  beschikbaar die Sunbird laat samenwerken met Thunderbird. Het gaat om de Lightning add-on. Ik heb vooralsnog niet voor die oplossing gekozen omdat straks onder Ubuntu 10.4 de huidige versie van Thunderbird (2.0.0.23) zal worden opgevolgd door versie 3 of hoger. En ik weet nog niet of die combinatie problemen gaat opleveren.

del.icio.us Facebook FriendFeed Google Bookmarks eKudos email Identi.ca LinkedIn Live MySpace Netvibes NuJIJ Print Technorati Twitter StumbleUpon

Categories : Algemeen
Comments (0)
Je kan sinds Ubuntu 8.04 het besturingssysteem installeren via Wubi in Windows. Ik zal even hieronder het installatieproces uitleggen. Ik ga ervan uit dat je de CD van Ubuntu naast je hebt liggen. Als dat niet het geval is, ga dan even kijken op de volgende pagina's: 1. Om Ubuntu te downloaden: http://www.ubuntu-nl.org/getubuntu/download Om het downloadproces te beginnen kies je eerst de
Categories : Algemeen
Comments (0)
Feb
28

Qgis

By Richard · Comments (0)
Quantum GIS ... al een tijd op het oog, en deze week op het werk mee zitten 'spelen'. Wel onder windows, maar ja ... hier thuis wel lekker onder Linux. En als je vaak met ArcGIS moet werken, dan is Qgis een verademing. Snel, veel betere WMS en WFS ondersteuning, en eigenlijk alle basis GIS functionaliteiten aan boord. Als de ontwikkeling van Qgis zo door gaat dan is een overgang op het werk zeker een optie. Dan geen woeker licentie prijzen meer, maar het voornaamste is weer snel kunnen Gissen.
Iedereen die GIS leuk en interessant vindt .. probeer Qgis. Er zijn voor de meeste linux varianten wel packages aanwezig, en voor Windows gebruikers is er op de Qgis site een 'lite' versie (zonder Grass) te downloaden.
Met informatie over Qgis kun je hier vinden.

Categories : Algemeen
Comments (0)
Feb
28

Kwooty

By Richard · Comments (0)
Bij het werken onder KDE miste ik nog een goede QT 'nzb-grabber'. Er zijn mooie programma's zoals bijvoorbeeld LottaNZB en Nntpgrab, maar dit zijn GTK applicaties.
Onder KDE 3.x was er altijd het programma Klibido, maar deze is nooit naar QT 4 omgezet. Maar gisteren was het dan zover ... was weer even aan het zoeken, en ja ... Kwooty!. Een simpel mooie 'nzb-grabber' met opties voor uitpakken en repareren. Wat wil een mens nog meer ;)
Heb nog geen kant-en-klare package gevonden, maar de source is eenvoudig zelf te compileren. Kwooty kan je hier downloaden. En ... veel download plezier.

Categories : Algemeen
Comments (0)
In tegenstelling tot de meeste artikels hier op deze blog, die veel tekst bevatten, is er hier een screenshot tour van Lubuntu alpha 3.  De standaardesktop.Aanmelden kan hier. AbiWord Gnumeric Desktop appearance Bestanden opslaan is nog steeds simpel File manager Muziek en audio op Lubuntu In het algemeen kan ik wil zeggen dat het heel snappy en snel gaat in Lubuntu, wat uiteindelijk ook het
Categories : Algemeen
Comments (0)

Tot voor kort heb ik Javascript nooit echt serieus genomen. Die perceptie kwam voornamelijk door slechte programmeurs die hun beste beentje voorzetten op websites en allerlei plaatjes over het scherm lieten vliegen. Ook het inline definiëren van functies resulteert al snel in een brei ongestructureerde code. Voor mij leek het gewoon onmogelijk om enigssinds object-geörienteerd te werken met deze taal.

Toch ben ik er sinds een tijd wel wat serieuzer mee bezig en is Javascript niet zo slecht als ik dacht. Er zitten wel een aantal verschrikkingen in deze taal, waaronder de dynamische scoping, waardoor je door wat brandende hoepels moet springen om toch bij de juiste objecten te kunnen (var that = this voor de insiders). Wat ik wel goed vind aan deze taal is het feit dat functies gewoon eerste-klas objecten zijn. En dat het dus wel degelijk mogelijk is om object-geörienteerd programmeren te benaderen.

read more

Categories : Algemeen
Comments (0)
OpenOffice.org is zonder twijfel voor mij de beste office suite voor Linux. Helaas hadden alle vorige versies een irritant probleem: de toepassingen van OpenOffice.org 3.1 en vroeger konden niet omgaan met de open font standaard... OpenType was namelijk niet ondersteund.   Nu, in versie 3.2 is dit anders. Ik installeerde versie 3.2 op Ubuntu 9.10 en testte de ontwikkelingsversie in Lucid - en ik
Categories : Algemeen
Comments (0)
Feb
27

Windows 7 vs Vista vs Ubuntu

By idzme · Comments (0)

Er zijn al heel wat vergelijkingen gemaakt tussen Windows Vista en Ubuntu. Nu weet iedereen dat Vista niet echt een suces is geworden en dat er van Windows 7 veel meer verwacht gaat worden. OP dit moment is het marktaandeel van Windows7 al groter dan dat van Vista en de reacties zijn ook veel beter. Maar wat betekent dit voor de Linux distributie: Ubuntu?

Hier een aantal sites met vergelijkingen tussen de verschillende systemen: Oordeel zelf!!

http://www.tuxradar.com/content/benchmarked-ubuntu-vs-vista-vs-windows-7

Windows 7 vs. Ubuntu 9.10 – Strengths and weaknesses

Windows 7 vs Ubuntu

Have fun!!!

idzme


Categories : Algemeen, Uncategorized
Comments (0)
Feb
26

Hackfests

By Ruben Vermeersch · Comments (0)
Liefste hogere krachten,

Zou het mogelijk zijn om elk jaar een GNOME usability hackfest te organizeren? De magie die uit die dingen komt is geweldig.

Meer vraag ik niet.
Categories : Algemeen
Comments (0)