Tooltipps für Runterlader
Gregor Ottmann | Mai 30, 2007 on 2:09 pm | In CSS, JavaScript, Know-How | No CommentsTooltipps sind total super - wenn eine Software sich mit Hilfe dieser Biester halbwegs selbst erklärt, kann man sich das Lesen des Handbuchs schreiben. Manchmal sogar das Schreiben besagten Dokuments, was noch viel, viel feiner ist als die erste Ersparnisvariante. Mal ganz ehrlich: Wer schreibt schon gerne Doku?
Damit es mit dem Nichtschreiben so richtig klappt und man dabei auch ein Nichtimplementieren zugrunde legen kann, sollte man sich die Sammlung praktischer Tooltipp-Scripts für Websitebasteleien bookmarken, die ich bei Dr. Web gefunden habe. Gut geklaut ist bekanntlich besser als schlecht selbst gemacht, und Zeit spart man damit auch noch. Zeit, die man in das Verfassen der leider nicht automatisch generierbaren Texte stecken kann. Oder in World of Warcraft, je nach persönlicher Präferenz und Leidensfähigkeit der Anwender.
Nur am Rande angemerkt: Am allergeilsten finde ich die minimalistischen Tooltipps mit reinem CSS - ich finde es geradezu unglaublich geil, wie man ganz ohne Script alles das hinkriegt, was man haben will. Noch dazu mit derart primitivem Markup… Extrem schick. Muss ich gelegentlich auch mal irgendwo verwenden.
Schicke Seitenwechsler: CSS für Paginierungen
Gregor Ottmann | Mai 30, 2007 on 2:03 pm | In CSS, Know-How | No CommentsEines der wohl am häufigsten auf Websites eingebauten Standardelemente dürfte wohl das berüchtigte Paginierungsdings sein, das uns auf die vorige, die nächste oder eine ganz bestimmte Seite von irgendwas springen lässt. Traurig ist, dass diese Dingsbumse in den meisten Fällen reichlich grottig aussehen, weil der geneigte Entwickler sich normalerweise mit solchem Kleinkram keine große Mühe gibt, was das Styling angeht.
Nun, ganz so viel Mühe muss man sich gar nicht machen, es reicht aus, sich einen der praktischen Stylesheet-Schnippsel für Mehrseitennavigationsleistendingsbumse zu schnappen, die ich heute gefunden habe - schon sieht die Navigation halbwegs ordentlich aus und man musste dafür nicht mal seine Kaffeepause opfern. Höchstens seinen Selbstrespekt, weil man solchen Kleinkram kopiert hat, statt ihn schnell selbst zu machen - aber mit der Selbstachtung sieht es ja bei vielen Leuten, die zum HTML-Hacken verdonnert werden, obwohl sie eigentlich Backend-Code schreiben wollten, sowieso schlecht aus. Sagt man. Gilt natürlich als unbestätigtes Gerücht. Das hat mich aber noch nie davon abgehalten, sowas einfach mal in den Raum zu stellen.
Das Fliegengewicht, ein offensichtlich leichtes Entwurfsmuster
Gregor Ottmann | Mai 24, 2007 on 12:46 pm | In Know-How, Vermischtes | No CommentsIch möchte diesen Post mit einem Reim beginnen
Es nützt dem RAM auf lange Sicht
das Pattern namens “Fliegengewicht”
Diese Zeilen sind insofern bemerkenswert, als sie nicht nur demonstrieren, dass ich das berüchtigte “Flyweight” durchaus verstanden habe, sondern auch unmissverständlich zeigen, dass man mich nicht als Dichter beschäftigen sollte. Nicht mal dann, wenn man sonst gar keinen Dichter hätte.
Sehr wohl empfehlenswert ist dahingegen die Lektüre des Artikels über das “Flyweight”-Pattern, den ich irgendwann neulich gelesen und dann in meinem Posteingang gebunkert hatte, bis mal wieder genug Zeit für ein Blog-Posting war. Der zeigt einem nämlich nicht nur, warum man in Java so manches halt tut, wie man es nun mal tut, sondern auch, was man sonst noch alles so tun kann. Nützlich, lehrreich und völlig frei von schlechter Poesie, so schätze ich die Artikel, auf die ich hier verweise.
Hirntod durch Zusammenführung: Mergen in Subversion
Gregor Ottmann | Mai 24, 2007 on 12:11 pm | In Know-How, Vermischtes | No Comments“Subversion ist toll”, haben sie alle gesagt, “nimm das statt CVS”. Nun gut, nachdem die Annahme, dass 12 Milliarden Fliegen sich nicht irren können, sich schon massiv auf meinen Speiseplan ausgewirkt hat, befolgte ich auch diesen Rat und ließ mir für ein Projekt vom lieben Admin Subversion einrichten, statt mal wieder CVS zu verwenden. Die Features klingen ja auch toll, gerade bezüglich des Verschiebens von Dateien ohne Verlust der gespeicherten Versionshistorie, da kann man nix sagen.
Ihr könnt Euch nicht vorstellen, wie erstaunt ich war, als man mir sagte, dass SVN sowas wie einen “Branch” nicht kennt und dass man stattdessen halt einfach das Repository kopiert. Ja, OK, das mag bei SVN ohne allzu heftige Platzverschwendung gehen, aber trotzdem… Wer lässt sich denn sowas einfallen? War derjenige vielleicht betrunken? Man weiß es nicht, man munkelt nur.
Jedenfalls habe ich mich so weit mit dem “branch by copy”-System arrangiert. Man muss es nicht lieben, solange es irgendwie funktioniert, sage ich mir immer. Dann kopiere ich halt, ist mir doch egal. Pfft!
Bisher gab es für mich erfreulicherweise auch noch nie eine Situation, in der ich zwei Zweige des Reporitories hätte zusammenführen müssen (wir Informatiker nennen das “mergen”), und das mag eventuell gut sein. Ich habe nämlich heute eine Mail von CSpeldrich bekommen, die mich vermuten lässt, dass ich an dem Versuch kläglich gescheitert wäre - ich zitiere einfach mal den Hinweis, der mir ein leichtes Frösteln über den Rücken gejagt hat:
But which two trees should be compared? At first glance, the answer may seem obvious: just compare the latest trunk tree with your latest branch tree. But beware-this assumption is wrong, and has burned many a new user!
Ja, wie jetzt? Wenn ich nicht den Brantsch mit dem Trunken vergleichen bzw. mergen soll, was dann? Die Antwort hat das leichte Frösteln im Rückenbereich in eine dicke Eisschicht verwandelt:
To express only the changes that happened on your branch, you need to compare the initial state of your branch to its final state. Using svn log on your branch, you can see that your branch was created in revision 341. And the final state of your branch is simply a matter of using the HEAD revision. That means you want to compare revisions 341 and HEAD of your branch directory, and apply those differences to a working copy of the trunk.
Ok, alles klar. Ist ja ganz logisch, dass ich den Punkt, an dem ich verzweigt habe, mit dem aktuellen Zustand… Ach, komm, geh weg, die spinnen doch alle. Die haben nicht nur gesoffen, die haben genmanipuliertes Gras gekifft wie die kaputten Öfen, als die sich das haben einfallen lassen. Die haben das doch alles in INTERCAL implementiert und Zusatzmodule in Ook! dazugebaut. Es mag die Aussage eines elenden Weichhais sein, aber ich will mein CVS zurück.
Beide Zitate stammen übrigens aus dem SVN-Buch von Red Bean, und zwar von dieser Stelle hier. Ich danke CSpeldrich für den Link und dem Schicksal dafür, dass es auch noch andere Versionskontrollsysteme gibt.
XSLT 2.0 in wenigen Worten
Gregor Ottmann | Mai 21, 2007 on 12:17 pm | In Aktuelles, Vermischtes | No CommentsWas soll ich sagen: In XSLT2 gibt es endlich nur noch Node-Sets, keine Tree-Fragments mehr. Juhuu, es geschehen noch Zeichen und Wunder!
Ja, OK, vermutlich war das für Leute, die sich intensiv mit der Thematik beschaffen, keine wirklich neue Information - aber für Gelegenheitstransformatoren wie mich mag es ein unerwarteter Grund zur Freude sein. Für alle anderen verweise ich noch schnell auf eine Funktionsreferenz für XPath2, die im anderen Artikel für meinen Geschmack etwas zu unauffällig verlinkt wurde, so dass ich hier nochmal mit einem etwas prominenteren Verweis nachlegen will.
SSH als Dateisystem für Linux
Gregor Ottmann | Mai 21, 2007 on 10:41 am | In Know-How, Tools, Vermischtes | 5 CommentsMeine private Website wird auf einem Server gehostet, der nach außen hin sinnvoll dicht gemacht wurde: FTP und Co. sind aus, jeglicher Zugriff geht nur über SSH mit Public-Key-Authentifikation. Das ist schön und halbwegs sicher, es als bequem zu bezeichnen, zeugt jedoch von nicht unerheblicher Leidensfähigkeit. Lokal arbeiten und dann immer explizit auf den Server kopieren rockt einfach nicht, ich will mein externes Webroot als Laufwerk (Windows-Denke) oder gemountetes Dateisystem (Linux-Nomenklatur).
An dieser Stelle ahlt es sich aus, dass ich neulich alle meine Privatrechner konsequent auf Ubuntu umgestellt habe. Die folgende Zeile war nämlich im Grunde das Ende meiner Qualen:
sudo apt-get install sshfs
Damit wurde nämlich die endlos coole Software “sshfs”, mit der man per SSH zugängliche Verzeichnisse als Dateisystem mounten kann, installiert - und schon kurz danach hatte ich unter “~/website” alles, was ich haben wollte. Ich liebe es, um es noch mit vorsichtigen Worten auszudrücken. Weniger vorsichtig gewählte Worte würden auf körperliche Reaktionen hinweisen, auf die ich in diesem Blog nicht näher eingehen will…
Als Zusatzinfo möchte ich noch auf ein nettes HowTo bei nixCraft hinweisen, das fast alle wichtigen Hinweise enthält - außer dem, dass die User, die auf sshfs zugreifen sollen, Mitglied der Gruppe “fuse” sein müssen. Wahlweise kann man auch globale Zugriffsrechte auf “/usr/bin/fusermount” und “/dev/fuse” vergeben, aber eins von beiden muss man tun, wenn das alles richtig klappen soll.
Windows-User sehen übrigens mal wieder in die Röhre, aber damit muss man in solchen Angelegenheiten halt leben, wenn man sich für Fenster statt Pinguine entscheidet.
Wie man HTML-Tabellen von der Layoutsprengung abhält
Gregor Ottmann | Mai 15, 2007 on 12:06 pm | In CSS, Know-How | No CommentsDie HTML-Tabelle an sich neigt zur Zickigkeit, besonders wenn sie mit vom User eingegebenem Text gefüttert wird. Wer hat sich nicht schon über ewig lange URLs in Kommentaren gefreut, die das hübsche Layout eines Blogs um eine 8000 Pixel breite Contentspalte bereichert haben? Oder über Text, der lustig über die Randspalten fließt und sich nur durch seine naturgegebene Virtualität davon abhalten lässt, gar aus dem Monitor zu quellen? Ja, sowas sind Standardfeatures in HTML, da findet sich jeder von uns mehr oder weniger wieder…
Langer Rede kurzer Sinn: Ich habe einen einfachen Tipp für die Vermeidung überbreiter Tabellen gefunden, den ich trotz fehlender Originalität und mangelndem Anspruch unter’s Volk (ja, das seid Ihr) bringen möchte. Die Benutzer von textbasierten Browsern, die von CSS keine Ahnung haben, werden natürlich nicht davon profitieren, aber die sind ohnehin generalbenachteiligt und verdienen kein Mitleid. Höchstens einen neuen Browser.
Ein extrem einfacher Testmailserver
Gregor Ottmann | Mai 15, 2007 on 12:00 pm | In Tools | No CommentsAn anderer Stelle in diesem Blog habe ich mich schon einmal über die Installation eines lokalen Mailservers zu Testzwecken ausgelassen - wenn mich nicht alles täuscht, ging es damals um den relativ dicken Server “Mercury”, der für die Anforderungen eines normalen Entwicklers (nimmt Mails entgegen, zeigt sie an, kocht Kaffee) eigentlich schon fast etweas überdimensioniert ist. Ich möchte mich dem Thema jetzt noch einmal widmen, weil PRogalinski mir etwas empfohlen hat, was mich persönlich stark erregt.
Es geht um ein Werkzeug mit dem zweckdienlichen Namen “Test Mail Server Tool”, das genau das macht, was es machen soll: Es nimmt Mails entgegen. Die entgegengenommenen Mails werden in einem Verzeichnis auf dem Desktop abgelegt und auf Wunsch direkt mit dem aktuellen Standardmailer geöffnet, mehr passiert nicht. Kein POP3, kein IMAP, kein LDAP und kein anderes Bier - genau so soll es sein.
JSR-286 - die Zukunft der Portlet-API
Gregor Ottmann | Mai 8, 2007 on 9:18 am | In Aktuelles, Know-How | 2 CommentsDie Kollegen bei Sun haben, wie jeder andere Hersteller, nicht immer ein glückliches Händchen bei der Spezifikation von Standards. Während beispielsweise die Servlet-Spezifikation durchaus rockt und auch die XML-Funktionen nicht wirklich übel sind, war EJB von Anfang an eher eine Totgeburt, die auch durch den dreisten Klau von Ideen bei Spring und Hibernate in EJB3 nicht sehr viel weniger komisch riecht als vorher. Wenn man mich aber fragt, welches die bisher lausigste API war, die jemals durch den JCP gerutscht ist, würde ich sofort JSR-168 nennen. Die Portlet-Spec, jene diabolische API aus den tiefsten Tiefen jener Spezialhölle, in der Elternmörder und Kinderschänder ewig braten.
Um Abmahnproblemen durch Leute ohne genaue Peilung vorzubeugen: Selbstverständlich halte ich keinen der JSR-168-Entwickler für einen Elternmörder oder Kinderschänder, ich halte nur den für alle Ewigkeit andauernden Zwang zur Verwendung dieser JSR für eine durchaus geeignete Maßnahme zur Bestrafung besagter Subjekte.
Keine Schmähung sollte ohne Begründung bleiben, und so möchte ich kurz darstellen, warum ich JSR-168 so hasse: Sie ist kompliziert, die Spezifikation liest sich so unterhaltsam wie mein letzter Steuerbescheid und es ist einem verdammten Portlet nicht möglich, verdammte Ressourcen auszuliefern, so dass schon die verdammte Implementierung eines verdammten Wetterportlets mit einer verdammten Wolkengrafik darin zu einer verdammten Strafe wird. Wen man damit strafen könnte, habe ich oben schon erwähnt.
Wie schon bei EJB zeigt Sun sich aber gnädig und arbeitet an einer neuen Version des Standards. Die erste Version der JSR-268 (Portlets 2.0) kann man sich auch schon besorgen und sie sich zu Gemüte führen, wobei sofort einige Dinge auffallen:
- Portlets können jetzt auch Ressourcen ausliefern, hurra!
- Portlets dürfen miteinander kommunizieren, statt isoliert und sozial verarmt in ihrem Container abzuhängen - Events machen es möglich.
- Viele Punkte, deren definitorische (gibt es das Wort?) Klarheit in der ersten Spezifikation in Richtung Milchglas oder gar Milchreis tendierten, sind deutlich präziser Formuliert.
- Der Zugriff auf User-Informationen ist immer noch in einer Weise spezifiziert, die mir das Wort “*$§&/!” entlockt.
- Mein Steuerbescheid lässt immer noch größeres schriftstellerisches Talent beim Autor vermuten als die Spec.
Wie dem auch sei, die Spezifikation ist ja noch nicht fertig und der gute Wille seitens Sun ist deutlich erkennbar, das ist ja schon mal ein Anfang. Vielleicht wird ja doch noch was aus den Java-Portlets und wir müssen nicht alle auf Sharepoint umschwenken, wo man derzeit meiner Meinung nach deutlich stressfreier zum Ziel kommt.
Diagramme mit JavaScript erzeugen
Gregor Ottmann | Mai 4, 2007 on 8:17 am | In JavaScript, Tools | No CommentsFür eine klassische schwarzwälder Kirschtorte braucht man einen Ofen, für ein Tortendiagramm ohne Sahne und Fruchteinlage reichen im Regelfall ein Webserver und ein paar Grafikfunktionen nebst einem Minimum an Gehirnschmalz. Wer seine Diagramme auf dem Server generiert, muss allerdings damit rechnen, heutzutage nicht mehr als besonders “hip” zu gelten, ja, nichtmal als “alete”. Schließlich leben wir im Jahrtausend des clientseitigen Scriptings, in dem nur noch alte Säcke, Anzugträger und Entwickler mit gesundem Menschenverstand (bedauernswerte Randgruppen also) auf die Idee kommen, irgendwelche Logik auf dem Server auszuführen.
Da das Streben nach Coolness dem Entwickler im Blute liegt und mir wiederum sehr am Glück meiner Leser gelegen ist, möchte ich also den Link zum JavaScript-Diagrammtoolkit “PlotKit” weitergeben, den mir der stets umtriebig recherchierende PRogalinski zugesteckt hat. Dieses Dings läuft rein clientseitig, verlangt wenig bis keine Ahnung bezüglich der Feinheiten der Diagrammerstellung und scheint dennoch Haarausfall bedingt durch Browserinkompatibilitäten weitestgehend zu vermeiden. Hurra. Ich werde trotzdem weiterhin entsprechende PNGs auf dem Server erzeugen, was man mir aufgrund meines wahrhaft biblischen Alters (ich wurde mitte der Siebziger des vergangenen Jahrhunderts geboren) bitte nachsehen möge.
Entries and comments feeds.
Valid XHTML and CSS. ^Top^
:RSS2-Feed