Bananas Development Blog: share your thoughts

E-Mail via Perl versenden

Das ist leider nicht immer so einfach. Dazu soll es ja auch nicht nur auf einem System funktionieren, sondern portabel sein.

Problems with and solutions to sending e-mail with Perl. Short on time? Try Email::Sender. See also Email Hates The Living. Do not, I repeat, do not attempt to send e-mail by piping data directly to sendmail or mail(1).

Sending E-mail with Perl

Nun, dann auf ein gutes Gelingen.

Perl und UTF-8

Kurzes aus dem Maschinenraum ;-)

Zeichenkodierungen oder „Warum funktionieren meine Umlaute nicht?”

Linux Perfomance Monitoring

Jeder möchte ja wissen was der Rechner den so treibt und was es auslastet.

Die folgende Liste, hat eine schöne Sammlung von Tools mit dem man sehr bequem an diese Informationen rannkommt:
6 Command Line Tools for Linux Performance Monitoring

wget --output-document und das Datum der Datei

Wenn man mit wget eine URL abfrägt und sich das Ergebnis in eine Datei schreiben lässt, dann wird man sich freuen oder nicht.

Denn die Datei hat das Datum der angefragten URL.

In vielen Fällen nützlich. Aber leider nicht immer.

Wenn man nun diese Methode dazu nimmt um Inhalte mit anderen abzugleichen, dann kommt man zu dem Punkt bei dem man sich frägt wie oft dies geschehen soll. Ok hat man die Möglichkeit auf einen cronJob dann ist das eh egal.

Hat man aber diese Möglichkeit nicht, dann muss man sich irgendwas einfallen lassen, wie man herausfinden kann ob man die Aktion erneut ausführen soll oder nicht. Denn es ist ja unnötig die Abfrage zu starten wenn eh nichts neues dabei raus kommt.

Da ja nun die Datei aber das Erstelldatum hat und nicht das Datum an dem die letzte Abfrage durchgeführt wurde, kann man nicht über die Datumsinfo der Datei gehen wie alt den diese ist. Oder doch ?

Nun ja im Grunde ganz einfach ;-)
#!/bin/bash
wget -q urld.de -O savefile.html
touch -d `date +%R` savefile.html

Damit wir das Änderungsdatum der savefile.html Datei auf die aktuelle Systemzeit gesetzt.

Somit hat man nun die Möglichkeit über das Änderungsdatum der Datei herauszufinden ob diese zu alt ist oder nicht.



Gentoo und libpng12

Argh.

mit der libpng12 gibt es da so ein paar Probleme:
Watch out for the libpng 1.4 update

Also warten oder:
emerge libpng:1.2


Danach sollte eine libpng12.so.0 unter /usr/lib/ vorhanden sein.

MVC Framework für Perl. Moving-camel

Wenn man seinen Code mit dem MVC erstellt ist das schon was feines.

Mun hat gibt es moving-camel, dass die Erstellung und Benutzung von MVC in Perl vereinfacht.
MovingCamel is an open-source Perl Web-Framework to ease the creation of Webapplications.
MovingCamel follows the Model, View, Controller patterns to separate data, design and logic.


Habe es selber schon mal probiert und muss sagen, das sieht schon mal vielversprechend aus.
Es ist zwar noch keine stabile Version vorhanden aber die aktuelle Dev Version kann man schon verwenden.




xorg 1.8 ohne hald und VMWare ging nicht mehr

Nachdem ich ein Upgrade auf xorg 1.8 gemacht habe und dieser nun keinen hald braucht, ging meine vmware Workstation nicht mehr. Also der Client.

Die Lösung ist einfach, dass man den hald vorher starten muss. Nach dem beenden von VMWare kann man ja diesen Dienst wieder beenden.

Gentoo xorg-server 1.8 update u. Nvidia

Da ich auf "unstable" bin (~x86) hat mein System ein Update auf xorg-server-1.8 vorgeschlagen.
Ist ja eigentlich nichts besonderes. Aber bei diesem Update wurde HAL entfernt und durch udev ersetzt. ( Hier ein nicht so positives Kommentar darüber ;-) )

Nachdem die nvidia-driveres auf 195.36.24 aktualisiert worden sind, beschwerte sich das emerge -uDNpv nicht mehr über irgendwelche Konflikte und ich konnte das Update durchführen.

Leider gibt es da Dinge zu beachten ansonsten hat man das Problem, dass die Tastatur und Maus nicht mehr Funktionieren und die einzige Möglichkeit das System wieder zu bedienen ist einen kompletten Restart zu machen.

Diese Anleitung hier hat mir sehr weiter geholfen.
Wichtig ist die Reihenfolge, ansonsten beschwert sich xorg über falsche Modulversionen.

Danach lief alles wie geschmiert.

Digitus WLAN 150N RTL8188S

Fals jemand diesen USB Stick hat und ihn nicht unter Linux zum laufen bekommt, ist hier meine Anleitung dazu.

http://main.bananas-playground.net/Tutorials/Digitus+150N+RTL8188S.html

ASCII Generator auf der Console. FIGlet u. TOIlet

Man kennt bestimmt ASCII Generator.

Da kann man Text als ASCII Kunst darstellen lassen.

Nun gibt es das auch auf der Console:
FIGlet is a program for making large letters out of ordinary text

http://www.figlet.org/

Bei Gentoo ist es im portage
Da gibt es sogar eine Alternative die figlet ersetzten soll.

Fehlermldungen sind wichtig. Gnu/Linux gibt Abhilfe

Fehlermeldungen sind wichtig, denn ohne Sie kann man ja nie sagen, was eigentlich gerade falsch gemacht worden ist.
Leider ist es nicht immer so einfach eindeutige Fehlermeldungen zu erstellen, oder man hat einfach keine Lust dazu.

Nun gibt es unter Gnu/Linux ein wenig Abhilfe. Die Bibliothek libexplain hilft, Fehlermeldungen noch verständlicher zu machen, damit man selber dahinter kommen kann und vielleicht sogar den Fehler beheben.

Nutzer stolpern nicht selten über unverständliche Fehlermeldungen, die ihr Computer von sich gibt. Zumindest unter Linux/Unix ist dagegen mittlerweile ein wirkungsvolles Kraut gewachsen: die Bibliothek libexplain.
Aussagefähige Fehlermeldungen erzeugen | User Friendly

Es geht auch schneller, aber man muss wissen wie.

Fast jeder neue PC der über den Ladentisch geht, hat ja einen Multicore Prozessor.
Leider gibt es recht wenige Programme die wirklich mehrerer Prozessoren auch verwenden bzw. sie richtig einsetzen.

Multi-Core-CPUs sind mittlerweile allgegenwärtig. Allerdings kann nicht jede Software ihre gesamte Rechenkraft für sich nutzen.
(...)
Trotzdem soviel geballter Rechenleistung sitzt der durchschnittliche Anwender oft vor dem Bildschirm und wartet darauf, dass der PC sein Werk verrichtet. Manche Aufgaben lassen sich auch mit vielen Kernen nicht schneller bewältigen – etwa solche, die viele Plattenzugriffe erfordern. Andere hingegen ließen sich in einem Bruchteil der Zeit erledigen, wenn die genutzte Software es verstünde, die Fähigkeiten des Prozessors voll auszureizen.


In dem Artikel wird das an Packen und Auspacken verdeutlicht und das es schon dafür Programme gibt. Man muss es nur wissen.
-> Force Majeure | von Michael Riepe

Was ich schon immer mir dachte: KDE ist ein Energiekiller.

Dass KDE irgendwie mehr Ressourcen braucht als Gnome oder Xfce war mir immer klar.
Aber nun gibt es hier die Zahlen:

Bei Benutzung des Desktops (Starten des Desktop-eigenen Dateimanagers und Webbrowsers, Navigieren durch die Menüs und ähnliches) verbrauchte KDE 4 mit 14,1 Watt mehr Energie als Xfce (13,3 Watt), Gnome (13,1 Watt) und LXDE (12,9 Watt). Ohne Desktop-Aktivität lag die Stromaufnahme der Desktops gleichauf.

Power & Memory Usage Of GNOME, KDE, LXDE & Xfce

Gnu/Linux ist flexibel ;-)

Wie bekommt man unter Gnu/Linux für den cp Befehl eine Prozessanzeige ?

Nun ja man könnte ja den Befehl an sich neu schreiben, aber das ist einfach zu viel des Guten.

Was macht man dann ?
Nun ja man erstellt sich einen neuen Befehl bzw. Alias in Bash ! Mehr nicht !
#!/bin/sh
cp_p()
{
strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
| awk '{
count += $NF
if (count % 10 == 0) {
percent = count / total_size * 100
printf "%3d%% [", percent
for (i=0;i<=percent;i++)
printf "="
printf ">"
for (i=percent;i<100;i++)
printf " "
printf "]\r"
}
}
END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}

"Can you get cp to give a progress bar like wget?"

Dazu braucht man keinen compiler, sources etc. sondern nur die hauseigenen Mittel die eh schon da sind. So einfach und flexibel kann Software sein.

Ok, es ist nicht die schnellste und beste Art dies zu machen, aber es ging einfach nur darum zu zeigen, dass dies gejt.

Performanter und besser ist pv
cp file1 /path/to/ | pv -pe

Und schon hat man seinen Prozessanzeige und ist wehsentlich Performanter.

Warum denn immer cat *.txt | grep bla ?

Warum muss immer die Katze (cat) die Sachen zusammensuchen nur damit der Crepe (grep) dies nicht zu machen braucht ?
cat *.log | grep hallo
Ist doch total unnötig.
grep hallo *.log
geht doch auch.

Hier ist nun auch ein Performance-Beweis:
The savings of a fraction of a second isn’t the point. It’s just a silly way to go about doing it. It’s not the end of the world, just plain old inefficient logic at work. Watching someone do this is almost as annoying as seeing them run “rm -rf” when they’re deleting a single file.

Stop piping cat into grep