Kreuvfs Allerweltsblog

2008-10-06

Referer filtern

Abgelegt unter Scripts,Software von Kreuvf um 18:38:47

Da ich mich immer weiter mit Linux anfreunde, bleibt natürlich auch das Thema Shell Scripting nicht unberührt. Daher gibt es mit diesem Post eine neue Kategorie, die Kategorie Scripts, in der alle Scripts, die ich täglich benutze, veröffentlicht werden.

Der Grund? Ich bin Anfänger und da hat man eben nunmal schon desöfteren ein Brett vor’m Kopf und müht sich überaus umständlich mit einer Sache ab, die auch sehr viel einfacher geht. Und Probieren geht über Studieren, zumindest habe ich keine Lust mir vor der Benutzung eines Tools erst irgendwelche Riesendokumente durchzulesen. Es ist daher möglich, dass sich sehr viele teils schlimme Dinge in den Scripts finden werden. Wenn ich mir meine ersten HTML-Seiten so anschaue, weiß ich wie schlecht das sein kann. Ich lade daher jeden recht herzlich ein Fehler und Verbesserungsvorschläge (vor allem Sicherheitsbedenken gehören dazu) per Mail oder in die Kommentare zu posten.

Aber nun zum eigentlichen Thema: Auf Warzone2100.de werden HTTP-Anfragen geloggt – ja, ich bin ein gaaanz böser Speicherer und mache das schon jahrelang. Ein typischer Eintrag sieht dann in etwa so aus:

XXX.XXX.XXX.XXX – – [05/Oct/2008:00:29:55 +0200] “GET / HTTP/1.1” 302 – “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3”

Was interessiert mich an diesen Daten? Das “-“, denn es handelt sich dabei um einen leeren Referer. Weiterhin interessiert es mich nicht, ob der Besucher von warzone2100.de, über die Yahoo- oder Google-Suche gekommen ist oder gar einem Link auf Wikipedia folgt. Am allerwenigsten interessiert mich, ob er keinen Referer hat oder die Seite direkt ansteuert. Daher besteht die zweite Aufgabe darin genau jene Zeilen zu leeren und anschließend alle Leerzeilen zu entfernen. Ich brauche dazu zwei Scripts, obwohl auch eines ausreichen würde, wollte mich aber gestern Abend nicht in die Untiefen von sed stürzen und habe es in dieser Form belassen.
Referers filtern
Hilfsdatei für wz_logs_get_referers.sh

Kommentare zu diesem Post abgeben (benötigt Boardaccount)

2008-09-22

Bakterien zur Diabetesprävention

Abgelegt unter Schulmedizin von Kreuvf um 19:24:17

Nein, ich werde nicht müde zu erzählen wie toll ich Bakterien finde, schließlich werde ich in dieser Ansicht ja auch dauernd bestätigt.

In a dramatic illustration of the potential for microbes to prevent disease, researchers at Yale University and the University of Chicago showed that mice exposed to common stomach bacteria were protected against the development of Type I diabetes.

The findings, reported in the journal Nature, support the so-called “hygiene hypothesis” – the theory that a lack of exposure to parasites, bacteria and viruses in the developed world may lead to increased risk of diseases like allergies, asthma, and other disorders of the immune system. The results also suggest that exposure to some forms of bacteria might actually help prevent onset of Type I diabetes, an autoimmune disease in which the patient’s immune system launches an attack on cells in the pancreas that produce insulin.

Quelle: EurekAlert.org – ‘Friendly’ bacteria protect against type 1 diabetes, Yale researchers find
Hervorhebung von mir.

Wir Menschen brauchen also den Großteil der kleinen Viecher, die täglich um uns rumschwirren und in und auf uns Arbeit verrichten, man könnte sogar so weit gehen zu behaupten, dass es sich dabei um Symbiose handelt.

Was mich aber ein wenig stört an dem Artikel, ist, dass das “friendly” in Hochkommas gefasst wurde, so als dürfte man das nicht zu wörtlich nehmen. Aber wenn es dann heißt, dass irgendwelche bösen Bakterien was anstellen, wird da nix in Hochkommas gesetzt.

Quelle: EurekAlert.org – ‘Friendly’ bacteria protect against type 1 diabetes, Yale researchers find

Kommentare zu diesem Artikel abgeben (benötigt Boardaccount)

2008-09-19

Programmieren lernen mit C, 4. Auflage

Abgelegt unter Rezension,Software von Kreuvf um 16:20:56

Rezensiert wird im folgenden das Buch “Programmieren lernen mit C” von Karlheinz Zeiner in der vierten Auflage (ISBN: 3-446-21596-4). Die beiliegende CD habe ich dabei nicht beachtet, da das Buch aus einer Bibliothek ausgeliehen wurde und die CD nicht dabei war.

Das Buch wurde mir von einem Informatiker empfohlen, der am Warzone 2100 Resurrection Project teilnimmt, als ich den Wunsch äußerte eben auch das benötigte C zu lernen, um Code beisteuern zu können (auf absehbare Zeit).

Gute Seiten

Es ist für einen Anfänger äußerst hilfreich, wenn wie im Buch geschehen, Standards beachtet werden. Der Autor beschreibt sowohl C89 als auch C99 und gibt darüberhinaus noch Anleitung wie man mit dem auf der CD mitgelieferten Programm und gcc kompiliert unter Beachtung eben jener Standards.

Das Buch ist in übersichtliche Kapitel angeordnet und es werden Kapitel zu den Themen strukturierte Programmierung und Softwareentwicklung angeschnitten, man erhält also über das Basiswissen in der Programmiersprache auch gleich noch weiterführende Informationen.

Viele der Beispiele erläutern den teils schwierigen Stoff gut, allerdings ist dies noch verbesserungswürdig. Das Buch ist so aufgebaut, dass ein Anfang gemacht wird mit einfachen Hallo Welt!-Programmen, bei denen man als Leser nicht zu viel des verwendeten Codes hinterfragen sollte, da man teilweise erst in einigen Kapiteln später erklärt bekommt, was man da eigentlich genau gemacht hat. Es ist also für Anfänger leicht die ersten paar Programmzeilen zusammenzuschreiben und halbwegs zu wissen was das Programm macht.

Die Kapitel zu den einzelnen Themen widmen sich vielen Themen, manche werden auch mehrfach, aber aus einem anderen Blickwinkel, behandelt, um so das Verständnis zu vertiefen.

Sehr gut gelungen sind die vielen Übungsaufgaben im Buch, auch wenn dies meiner Meinung nach teilweise über das Ziel hinausgeschossen war.

Schlechte Seiten

Viele Erklärungen sind für ein Lehrbuch zu schwammig und ungenau, andere Erklärungen wiederum sind richtig, erklären aber nicht den Sinn (warum sollte ich das benutzen, wenn es so doch auch geht?) eines bestimmten Konstrukts oder die Unterschiede zu einem ähnlichem Konstrukt.

Äußerst ärgerlich sind Fälle wie die Erklärung zu dem Wesen einer inline-Funktion. Man spürt förmlich wie sich der Autor darum windet eine Erklärung abzuliefern. Natürlich hat dies vermutlich den Sinn niemanden zu verschrecken, aber dann sollte man doch explizit sagen, warum man etwas nicht erklärt bzw. erklären kann/will.

Ebenfalls wird erst zu spät im Buch erklärt was der Sinn ist, der hinter der Benutzung von Zeigern steckt. Grundsätzlich ist die Erklärung zu Zeigern, also was Zeiger sind, in wenigen Worten getan, warum aber ist es unmöglich bereits an dieser Stelle zu erklären, dass man Zeiger zum Beispiel deswegen an eine Funktion übergibt, weil man nicht die Variable an sich übergeben möchte, sondern eben nur einen Verweis darauf, um unnötige Kopierarbeiten zu sparen und so effizienter zu sein? Es gibt einige weitere Beispiele dieser Art, die es mir unnötig schwer machten den Sinn hinter bestimmten Features von C zu finden.

Weiterhin finde ich es absolut schwachsinnig mitten im Buch mehrere Kapitel zu bringen (da musste ich mich regelrecht durchquälen), die nichts mit C an sich zu tun hatten, sondern sich um Softwareentwicklung im Allgemeinen drehten. Sowas kann ans Ende gepackt werden in einen Anhang, aber es hat nichts unmittelbar damit zu tun eine Programmiersprache zu lernen, also zu lernen sich in einer Programmiersprache korrekt auszudrücken.

Mir hat auch nicht gefallen, dass am Anfang fast nichts erklärt wird, man den Code in einer “Friss oder stirb!”-Mentalität vor den Latz geknallt bekommt und dann erst später nach und nach alles systematisch angegangen wird. Ein Ansatz, bei dem von Anfang an systematisch erklärt wird, hätte mir um Längen besser gefallen.

Effizienzbetrachtungen habe ich an vielen Stellen vergeblich gesucht. Es ist in jeder Programmiersprache wichtig zu wissen wie effizienter Code arbeitet und welche Probleme es häufig in ineffizientem Code gibt. Gerade C kann doch hervorragend eingesetzt werden, um zeitkritische Dinge mit für andere Sprachen atemberaubender Geschwindigkeit auszuführen und das noch unter geringem Speicherverbrauch (huhu, Java).

Dass viele Dinge am Ende des Buches offen blieben, erkenne ich daran, dass ich insgesamt 53 Fragen (nach der Zahl der Fragezeichen gerechnet) an den Informatiker weitergeleitet habe. Darunter waren eher lapidare Dinge wie Unterschiede zu anderen Plattformen (Endianness), aber auch fundamentale wie der Sinn hinter Unionen, da gerade diese im Buch nur sehr kurz dran kamen. Ebenfalls vermisste ich Beispiele aus der realen Welt, die Gebrauch von Funktionen machen, die eben nicht aus den Standardbibliotheken stammen (Bibliotheken Dritter, keine selbstgemachten). Aber auch Hinweise zum Debugging von Programmen, vor allem welche Möglichkeiten man dazu nutzen kann, wären sehr hilfreich gewesen. Das hätte man als letzte Kapitel nehmen können und, wenn das Buch dann zu dick wäre, eben die Kapitel über Softwareentwicklung rauslassen oder vekürzen können.

Zusätzlich zu all diesen Problemen kommen die vielen kleinen Dinge, die mich enorm störten. Darunter ist das typografische Unding (imho) normalen Text linksbündig zu gestalten. Dazu gesellen sich viele kleine Unschönheiten wie etwa “z.B.” statt “z. B.” und so weiter. Das dauernd zu lesen, sorgt dafür, dass der Spaß daran enorm darunter leidet.

Es hat zwar nur nebensächlich etwas mit dem Buch zu tun, aber Herr Zeiner hat seine Meinung zu C als erste Programmiersprache mittlerweile gewandelt, die Relevanz zur Rezension zum Buch kommt nach dem Zitat:

Heute würde ich für den Schulunterricht vorschlagen, gleich mit C# (oder Java) zu beginnen. Das Hauptproblem von C ist, dass die Programmierung einer zeitgemäßen grafisch orientierten Benutzerschnittstelle in C heute uninteressant ist. Der heutige Jugendliche ist eher für die Gestaltung eines Fensters mit Controls zu motivieren als für das Nachdenken über Algorihmen. Eine Konsolapplikation ist für ihn sehr unattraktiv. In C# kann auch der Anfänger relativ rasch eine Windows-Applikation mit einigen Edit-Controls für die Ein-/Ausgabe erstellen. Allerdings gilt auch für C#: Was man in C lernen muss, muss man auch in C# lernen. Lediglich die Zeiger sind verschwunden.

Quelle: Seite zum Buch von Herrn Zeiner Hervorhebungen von mir.
So wie es mir im Buch vorkam, nehmen Zeiger und die dahinterstehende Logik aber großen Raum in C ein. Wenn man Zeiger nun aber “weglässt”, dann muss dieses Konzept doch denjenigen, der dann doch C machen will, erst noch beigebracht werden, oder nicht? Und die Gestaltung eines Fensters ist nicht die Aufgabe eines Programmierers, sondern die eines GUI-Designers, der sich nach allen Usability-Regeln darum kümmert, dass die Funktionen des Programms über die vorhandene Oberfläche so intuitiv und sinnvoll wie nur irgend möglich genutzt werden können. Und auch wenn sich das einfach anhört, kann dies ein hochbezahlter Job sein. Ich merke daran aber, dass es Herrn Zeiner mit seinem Buch wohl eher darauf angekommen ist das Programmieren zu lehren als Programmieren in C zu lehren. Dies ist sehr schade.

Fazit

Alles in allem kann ich dieses Buch nicht weiterempfehlen für diejenigen, die wie ich gerne ein bisschen mehr wissen wollen, also über den Tellerrand hinausblicken möchten. Nach dem schrittweisen Durcharbeiten des Buches über gut zwei Wochen, sind noch viele Fragen geblieben und da mir o. g. Informatiker anbot meine Fragen zu beantworten, bekam er vier DIN A4-Seiten (mit dem Computer geschrieben) mit 22 teils fundamentalen Problemen und insgesamt 53 Fragen.

Da Herr Zeiner auch vor Veröffentlichung des Buches schon Programmierübungen gegeben hat, liegt es nahe zu vermuten, dass er durch das Zusammenstellen aller Lehreinheiten und Übungsaufgaben versucht hat mit bereits getaner Arbeit Geld zu machen (dies ist eine pure Vermutung, sollte aber nicht unerwähnt bleiben).

Für jemanden, der allerdings noch nie in irgendeiner Form programmiert hat, kann es den ersten Kontakt mit der Programmiersprache C herstellen und, wenn man die Übungen macht (habe ich größtenteils ausgelassen), sollte man auch schnell fit in der Syntax und im “Denken in C” werden. Ich nehme daher auch an, dass das Buch nicht mich als Zielgruppe hatte, da ich bereits erste Erfahrungen darin hatte “wie ein Computer zu denken” und mir wenige Teile daher auch auf die Nerven gingen. Es hilft allerdings jedem, der dieses Buch liest, ungemein, wenn jemand, der sich in C auskennt und etwaige Fragen beantworten kann, zur Verfügung steht.

Da ich keinerlei Praxiserfahrung habe, würde ich mich dennoch immer noch nur als C-Anfänger bezeichnen, was aber nichts mit der Qualität des Buches zu tun hat. Ich wäre wahrscheinlich nach dem Lesen jedes Buches, das in eine Programmiersprache einführt, nicht mehr als ein Anfänger.

Kommentare zu diesem Artikel abgeben (benötigt Boardaccount)

2008-09-16

KgL – Teil 03: Neue Heimat Linux

Abgelegt unter In eigener Sache,Software von Kreuvf um 21:20:48

Über ein Jahr ist es jetzt her seit ich den letzten Teil meiner Pseudo-Dokumentation “Kreuvf goes Linux” veröffentlicht habe. Die interessanteste Frage dürfte dabei schon mit dem Titel beantwortet sein: Ich bin immer noch bei Linux und werde auch nicht zurück.

Eine Neuerung in diesem Artikel wird sein, dass ich keinen Ausblick auf den nächsten Teil mehr geben werde, weil mich das zum einen einschränkt und zum zweiten nicht so interessant wird für diejenigen, die dann den nächsten Teil lesen (weil der ungefähre Inhalt bereits bekannt ist).

Nun gut, ich habe dennoch im Teil 02: Distributionswahl in die Zukunft geschaut und in Aussicht gestellt, dass es dieses Mal Details zu meiner Hardware gibt (was habe ich mir dabei nur gedacht oO) und ich zudem noch meine Ersatzprogramme für Windows-only-Kram wie mIRC und WinAmp aufschreibe.

Wie man aus dem Titel schon erkennen kann, habe ich darüber hinaus aber noch einiges anderes geplant.

Kreuvfs Hardware

  • Pentium III mit 1 GHz
  • 512 MB SD-RAM
  • Geforce 4 Ti-4200 mit 64 MB Speicher

Der Rest ist sowas von egal, bis auf das CD/DVD-Kombilaufwerk, die Festplatte und der Netzwerkkarte (gab es für 5,12 € und bei dem Preis muss man doch einfach zuschlagen) ist an dem Rechner genau nichts neu, alles gebrauchte Teile. Aus welchem Grund? Geld! Wer keine Erfahrung mit Linux hat, wird das nicht auf einem neuen Rechner ausprobieren und da ich mit meinem absolut topmodernen Windows 98 auch nicht auf einen neuen Rechner wechseln konnte und Linux auf dem alten ausprobieren, musste ich das eben so machen.

Ein Seitenhieb muss noch sein: Vista ist natürlich viel zu scheiße, um auch nur irgendwie auf meinen Rechnern zu laufen. Jetzt warte ich auf die Heise-Foren-Gänger, die mich da eines Besseren belehren wollen, mir dann sagen, dass ich zu scheiße bin, weil ich keine besseren Rechner habe und dann einsehen müssen, dass Vista (aka Windows ME 2) scheiße ist. Kurzzusammenfassung: Ich mag Vista nicht nur nicht wegen des Ressourcenverbrauchs, sondern auch nicht wegen diverser technischer Mängel (DRM ist ein Mangel). Dass ich für derartige Produkteigenschaften auch tatsächlich noch zahlen soll, grenzt schon eindeutig an Verblendung. Dass ich für ein Betriebssystem, das ich nicht mag, auch nicht noch eine Straftat begehen will (@Rechtsmenschen: wäre es das überhaupt?), habe ich bereits im ersten Teil von Kreuvf goes Linux geschrieben.

Ersatzsoftware für Windows-only-Programme

Vorweg: Es ist sehr schade, dass es heute noch Programme gibt, die es nur für eine Plattform bzw. einen Plattformtypen gibt (und noch dazu closed source sind, was die Arbeit für Dritte so gut wie unmöglich macht). Ein Programm, das nur für eine Plattform existiert, schränkt deren Benutzer unnötig eben auf genau nur diese eine Plattform ein. Spiele seien da mal außen vor gelassen, weil es da zu viele vertragliche Verstrickungen zu geben scheint zwischen Spieleentwicklern, Publishern, Hardware- und Softwareherstellern. Alle sonstigen Programme dürften nach einiger Portierungsarbeit aber auf vielen Plattformen nativ lauffähig sein (denn darauf kommt es an).

Für mich kommen daher Programme, die es eben nur auf einer Plattform gibt, nur noch in Ausnahmefällen in Frage. Ich will die von mir benutzte Software so gut wie überall einsetzen können (theoretisch), damit ich mich nicht für jede Plattform auf andere Tools umgewöhnen muss. Wie gesagt, gilt nur für Tools, Standardprogramme wie eines zum Abspielen von Ogg/Vorbis oder MP3 findet man überall.

Als Ersatz für mIRC dient mir bisher XChat relativ gut, auch wenn ich nach mehreren Suchläufen keine vernünftige Dokumentation dazu finden konnte und der/die Autor(en) die Windowsversion immer ein wenig aktueller halten als andere Versionen. Was mir besonders gefällt, ist die Möglichkeit die Logs nach Belieben organisieren lassen zu können (habe bei mIRC 6.03 aufgehört, kA, ob das da auch geht).

Ersatz für WinAmp sind mehrere Programme. Als “Spiele mir Musik ab und gut ist”-Programm dient das standardmäßig zum Einsatz kommende Rhythmbox, ich vermisse dort keine Features, weshalb ich damit auch zufrieden bin. Um meine ebenfalls heißgeliebten SPCs abspielen zu können, verwende ich das böse Programm Audio Overload (closed source). Das einzige, was mich ein wenig wurmt ist die miserable Midiwiedergabe, die über timidity erfolgt. Bei Freepats fehlen etliche Instrumente, sodass manche Stücke so gut wie leer sind. Wäre echt froh, wenn an dieser Stelle etwas getan werden könnte.
Update 07.01.2009: Gstreamer kann auch SPC, crasht allerdings beim Beenden nach mehreren Stunden Dauerlauf des gleiches Stücks (was ein Bug!). Zudem kann ich einzelne Kanäle nicht abschalten wie mit Audio Overload. Aber immerhin: SPC mit Gstreamer :D

Neue Heimat Linux

Nun aber zum eigentlichen Teil des Ganzen, nämlich der Erkenntnis, dass ich mich mittlerweile “Zuhause” fühle in Linux. Seit mehreren Monaten benutze ich meinen Linuxrechner weitaus häufiger als den Windows-Rechner (den eigentlich nur noch für Guild Wars und Warzone 2100) und ich plane auch fest den Windows-Rechner umzubauen, sodass ich dort ein Dualboot Windows/Linux habe, wobei mir die Linuxumgebung dann vor allem dazu dient mich mit Warzone 2100, Linux und C zu befassen. Ich habe eben nicht vor auf meinem Produktivsystem irgendwelche Experimente durchzuführen, vor allem nicht, wenn ich nicht zu 100% weiß was ich da tue. Zudem sind das einfach Freiheiten, die ich gerne habe: Machen, was einem so in den Sinn kommt, und dann gucken, ob es klappt. Nur so lassen sich mehr Erfahrungen sammeln und man kommt weiter.

Zudem will ich die Konsole nicht mehr missen, es ist einfach zu geil, was man selbst mit derart eingeschränkten Fähigkeiten wie ich sie auf diesem Gebiet bisher noch habe, schon alles machen kann. Zudem ist die Einfachheit, die vielfach dahintersteckt, einfach nur umwerfend. Weiterhin habe ich mich auch erfolgreich durch das Buch “Programmieren lernen mit C, 4. Auflage” gearbeitet und auch “Reguläre Ausdrücke, 3. Auflage” wartet darauf zuende gelesen zu werden (die Kapitel über Perl, VB.NET und Java habe ich allerdings ausgelassen, interessieren mich einfach nicht; Rezensionen folgen). Alles in allem also bin ich bereit mich tiefer in die FLOSS-Welt zu stürzen.

Und seit ich zum Warzone 2100 Resurrection Project beitrage, lerne ich fast automatisch neue und vor allem interessante Dinge kennen, die mir auch im täglichen Leben weiterhelfen.

Was mir allerdings am stärksten auffällt, sind dann natürlich weitere Unzulänglichkeiten von Windows 98: Unter anderem die unglaublich beknackte Einschränkung, dass nach einiger Zeit, in der man durch tiefe Ordnerstrukturen gegangen ist, die Anzeige im Explorer immer länger dauert. Teilweise braucht man dann für sowas wie C:\Ordner 1\Ordner 2\Ordner 3\Ordner 4\Ordner 5\Ordner 6\ MINUTEN, nur um sich die Inhalte anzeigen zu können. Unter Ubuntu geht das zwar nicht immer so flott wie es unter Windows die ersten paar Ordner geht, aber dafür konstant gleich schnell.

Genug für dieses Mal, wie versprochen gibt es keine Informationen zum nächsten Teil, weil ich mich ja dann jetzt schon wieder festlegen müsste :P

Kommentare zu diesem Artikel abgeben (benötigt Boardaccount)

2008-08-08

Spritpreise und Verkehrstote

Abgelegt unter Kurioses von Kreuvf um 11:06:35

Es wird sich ja dauernd an allen Ecken und Enden über die viel zu hohen Spritpreise aufgeregt. Dabei hat das doch auch gute Seiten: weniger Verkehrstote.

Quelle: Good news about $4 gas? Fewer traffic deaths – EurekAlert.org

Kommentare zu diesem Artikel abgeben (benötigt Boardaccount)

Nächste Seite »