Technik, Gothic und Anderes

Technik ist Spiel, Gothic ist ernst und Zeit hat man zuviel

  • Kategorien

  • Tags

  • Archiv

  • Links

    zu Bee5

    blog.oncode.info läuft bei Cyon und ich bin sehr glücklich damit.

Archiv für 'Uncategorized' Kategorie

Webanwendungen: Office 2007 Dateien werden als ZIP heruntergeladen

Geschrieben von skaldrom am 26. November 2009

zipper Ein Server von uns versuchte wiedereinmal besonders originell zu sein: Eine in Wordpress hochgeladene “.docx” Datei wurde im Internet Explorer als “.zip” zum Download offeriert. So richtig böse kann man dem dem Server nicht sein, hat er doch recht: Die Office 2007 Dateien sind an sich Zips, und trotzdem möchte man sie mit Word öffnen, oder?

Nach einigem Fluchen bin ich auf den korrekten Eintrag gestossen und konnte die Lösung ableiten. In der Datei /etc/mime.types folgendes am Ende hinzufügen und gut is:

application/vnd.ms-word.document.macroEnabled.12 .docm
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
application/vnd.ms-powerpoint.template.macroEnabled.12 potm
application/vnd.openxmlformats-officedocument.presentationml.template potx
application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam
application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm
application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
application/vnd.ms-excel.addin.macroEnabled.12 xlam
application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb
application/vnd.ms-excel.sheet.macroEnabled.12 xlsm
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
application/vnd.ms-excel.template.macroEnabled.12 xltm
application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx
Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • Facebook
  • Google Bookmarks
  • Netvibes
  • Reddit
  • Twitter
  • Print
  • email
  • LinkArena

Eingeordnet in Uncategorized | Keine Kommentare »

Kubuntu update und GRUB Wiederherstellung

Geschrieben von skaldrom am 1. November 2009

facepalmEntropie in Reinkultur: Alles tendiert zum grösstmöglichen Chaos und guter Wille pflastert den Weg ins Grab. Auf meinem Lieblingsrechner wurde vor langer Zeit Kubuntu installiert. Mit dem Update auf Version 9.10 hat sich gerade eine schon lange fällige Neuinstallation von Windows gekreuzt. (Neuinstallation weil: Vista Basic Home Premium – entgegen der Meinung des MS Update-Assistant – nicht auf Windows 7 Professional upgedatet werden kann. Warum? Das weiss wohl nur ein Microsoft Certified Client System Upgrade Engineer, der wohl ein Live Upgrade über Windows Vista Home Half Master Business Game Edition oder so empfehlen würde *gna*.)

Windows startet nun wunderbar, hat aber natürlich meinen Bootloader (GRUB) überschrieben und ich kann nimmer in mein geliebtes, frisch upgedatetes Kubuntu booten. Das kennen wir von früher und mit Hilfe einer Boot-CD hat das schon bei Lilo wunderbar geklappt. Nicht jedoch dieses mal: Fehlermeldungen von nicht gefundenen Partitionen ("Could not find device for /boot: Not found or not a block device.") lachten Hohn über ganz verschiedene Anleitungen.

Ein paar ausgerissene Haarbüschel später und nach einer sehr formal geordneten Analyse (*lach*) hab ich dann das Problem erfasst. Beim Update wird der alte Grub 0.97 weiterverwendet, eine Neuinstallation (und auf der 9.10 Life-CD) ist der neue Grub 1.97.

Nach ein paar weiteren Tritten gegen die Maschine war die Lösung dann einfach: Eine alte Knoppix mit altem Grub rausgekramt, gebootet:

$> sudo grub
grub> find /boot/grub/stage1
 (hd0,5)
grub> root (hd0,5)
grub> setup (hd0)
grub> quit

Und alle sind wieder glücklich, die Haare wachsen nach, die Falten werden sich wieder glätten und die neuen Dellen im PC werden nicht weiter auffallen (is ja ein Dell *höhö_und_schenkelklopf*).

Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • Facebook
  • Google Bookmarks
  • Netvibes
  • Reddit
  • Twitter
  • Print
  • email
  • LinkArena

Eingeordnet in Uncategorized | Keine Kommentare »

Unicode Textverzwurbler

Geschrieben von skaldrom am 16. July 2009

hieroEs sind Ferien, darum ein paar entspannte Links, die etwas Würze in Twitter und Foren (auch explizit nichtgenannte) bringen. UTF-8 und Unicode echt mal sinnvoll angewendet *evil_grin*.

Als Erstes: TextFlip: ¡ɯn ʇxǝʇ uǝp ʇɥǝɹp sǝ.

Ebenfalls nett: BubbleText: Ⓓⓐ ⓦⓔⓡⓓⓔⓝ Ⓑⓤⓑⓑⓛⓔⓢ ⓔⓡⓩⓔⓤⓖⓣ…

Für die Kürzesten Kurzurls: Tinyarro.ws: Für dieses Blog kommt dann etwas heraus wie http://➽.ws/. Kürzer gehts nimmer :)

Zum Schluss noch was für C-64 Veteranen: Die Blockgrafik lebt:
▄▄█▀▀ ▀█▀ █▀█ █▀ █▄█▄█ █▀█ █▀ ▄▄█▀▀

Nachtrag 07.2009: 2keystrokes hat ein virtuelles Unicode-Keyboard. Nette Idee!

Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • Facebook
  • Google Bookmarks
  • Netvibes
  • Reddit
  • Twitter
  • Print
  • email
  • LinkArena

Eingeordnet in Coding, Uncategorized | 1 Kommentar »

Sortierung eines Dropdownwidgets in Symfony ändern (Doctrine)

Geschrieben von skaldrom am 6. July 2009

Frameworks sind toll. Man kann in vielen tausend Zeilen das tun, wozu man früher nur ein paar Statements gebraucht hat… Oder war es umgekehrt? Hier etwas Symfony spezifisches, das mir ein paar gefärbte Haare gekostet hat, weil ich sie mir ausreissen musste.

Das Problem

Es sei gegeben eine dreistufige Hierarchie: Kategorien → Fächer → Kurse. Es sind ganz saubere 1:n-Beziehungen: Jedes Fach gehört zu einer Kategorie und ein Kurs ist genau ein durchgeführtes Fach.

Folgt man dem (wirklich guten) Symfony-Tutorial, so wird an Tag 3 ganz unten gezeigt, wie aus der Tabellendefinition automatisch ein Formular generiert wird. Clevererweise werden für 1:n-Beziehungen Dropdowns generiert.

Wenn ein neuer Kurs generiert wird, so soll man angeben können, was für ein Fach er unterrichtet. Standardmässig werden Fächer wie folgt angezeigt:

  1. Ein Kategorienkürzel (“I” für Informatik, “A” für Ausdruckstanz (haha), …)
  2. Einer “Nummer” (normalerweise “01″ bis “15″ oder so)
  3. Dem Namen des Fachs

Das Fach braucht für seine Darstellung also das Kürzel aus dem Kategorien-Model (bin ich der Einzige der bei Models immer grinsen muss?).

Das generierte Dropdown zeigt die Namen der Fächer falsch und alles Kreuz und Rüben durcheinander an. Ha, nun ist guter Rat teuer.

dropdownstart

Lösung

Namen der Fächer

Das geht noch relativ einfach: Jedes Model besitzt eine __toString() Methode, die überschrieben werden kann:

# File: lib/model/doctrine/modelnamefach.class.php
[...]
  public function __toString() {
        return sprintf('%s %s %s', $this->FreifachNgKategorie->getKuerzel(), $this->getNummer(), $this->getName());
  }
[...]

Und tatsächlich:

dropdownbefore

Sortierung

Ich hätte mir eigentlich gewünscht, für jedes Model eine Defaultsortierung angeben zu können. Aber da nicht Weihnachten ist, werden meine Wünsche nicht erfüllt. Da hilft nur Quellcodestudium und glückliches Zusammenpuzzeln der Doctrine Anleitung, dem Symfony-Doctrine Buch und der API-Dokumentation (scrollen bis Doctrine): Beispiele gibts leider fast keine.

Nungut: Das Formular wird automatisch generiert (lib/form/doctrine/base/), darum sollte hier nur wer was ändern, der per Stunde bezahlt wird und das nach jeder Generierung wieder neu tun kann :) . Für uns Andere müssen wir das Choice in der Kinderklasse hacken und eine table_method reinbringen, die die Einträge nach unserem Gusto liefert:

# File: lib/form/doctrine/modelnamekurs.class.php
[...]
  public function configure()  {
      $this->setWidget('freifach_id', new sfWidgetFormDoctrineChoice(array('model' => 'FreifachNgFreifach', 'table_method' => 'retrieveFreifachOrderedByCategory')));
  }
[...]

Diese table_method muss auch noch codiert werden. Und das in der Tabellenklasse der Fächer (dochdoch, wenn man sich das überlegt ist es ganz logisch *irres_grinsen*).

# File: lib/model/freifachmodelnameTable.class.php
[...]
    function retrieveFreifachOrderedByCategory() {
        $q=Doctrine_Query::create()->from('FreifachNgFreifach f')->innerJoin('f.FreifachNgKategorie k')->orderby('k.kuerzel, f.nummer, f.name');
        //echo $q->getSql();
        return $q;
    }
[...]

Toll, und dann klappts auch mit dem Dropdown:

dropdownordered

Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • Facebook
  • Google Bookmarks
  • Netvibes
  • Reddit
  • Twitter
  • Print
  • email
  • LinkArena

Eingeordnet in Uncategorized | Keine Kommentare »

Synergy: Ein Tool, das die Arbeitsweise am Computer verändern kann

Geschrieben von skaldrom am 30. June 2009

synergyDie Arbeitsweise von Synergy ist einfach und bestechend: Die Tastatur und Maus eines Computers (genannt “Server”) kann benutzt werden um den Cursor und die Eingaben auf anderen Compies zu steuern. So weit so gut, aber Synergy macht das über das Netzwerk und (fast) betriebsystemunabhängig!

Was kann es nun?

Folgendes Szenario: Meine Grosse ist der Server und mein Arbeitsgerät. Rechts davon steht mein Laptop mit dem Mailclient und links davon mein Nettop mit Doku und Cheatsheets. Fahre ich mit der Maus links oder rechts aus dem Bildschirm der Grossen, erscheint der Cursor auf dem entsprechenden Kleincomputer. Die eine Tastatur kann benutzt werden um auf allen Compies Eingaben zu machen. Der Clou: Sogar die Zwischenablage wird synchronisiert. Ich kann also auf der Einen was kopieren und auf der Anderen wieder einfügen.

(Zwischenbemerkung: Ja, Computer sind weiblich).

Da das Ganze betriebssystemunabhängig (im Sinne von: Läuft auf Linux, Mac und Windows) funktioniert, eignet sich das hervorragend für Tests, Dokumentieraufgaben etc.

Bis auf die Spitze hat es Sembetu getrieben:

Lesen Sie den Rest dieses Beitrages »

Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • Facebook
  • Google Bookmarks
  • Netvibes
  • Reddit
  • Twitter
  • Print
  • email
  • LinkArena

Eingeordnet in Systemtechnik, Uncategorized | Keine Kommentare »

Firefox-Extension für das Bee5 affiliate System

Geschrieben von skaldrom am 29. April 2009

flying-bee5Über Bee5 habe ich ja früher schon geschrieben. Sie haben jetzt eine Tools-Offensive gestartet: alle Tools, die ihr API verwenden, werden an den Verkäufen die mit dem Tool getätigt werden beteiligt. Aus meiner Sicht eine gute Offerte und eine Win-Win-Situation: Anwender können das System einfacher nutzen, die Programmierer werden für die Arbeit entschädigt, Bee5 wird bekannter und alle sind glücklich.

Das war eine ideale Gelegenheit zu lernen, wie eine Firefox-Extension geschrieben wird. Bemerkenswerterweise ist sie sogar fertig geworden. Sie befindet sich im Tools-Verzeichnis auf der Bee5 Seite (Login wird benötigt. Klar, sonst macht die ganze Toolbar keinen Sinn!).

Das Bee5 Affiliate-System

Kurzrepetition: Bee5 handelt mit Shops und anderen Sites Verträge aus, um für die Beschaffung von Kunden und Verkäufen entlöhnt zu werden (Provisionen). Der Grossteil dieser Beträge wird an jene weitergegeben, die die Kunden beschaffen (Links weitergeben, selber in den Partnershps einkaufen, …). Damit identifiziert werden kann, wer was eingekauft hat, hat Bee5 einen Kurzurl-Dienst ins Leben gerufen. Wird ein Partner-Shop über eine solche URL angesurft, weiss Bee5 wem der Provisionsanteil zusteht. Dieser Kurzurldienst kann aber auch für beliebige URLs benutzt werden, nicht nur für die “Partner”.
Einfach gesagt läuft es folgendermassen ab:

  1. Man Surft zu einem Partnershop.
  2. Aus der URL wird über die Bee5-Seite eine Kurzurl gemacht.
  3. Man klickt auf diesen Link oder gibt ihn weiter.
  4. Es wird eingekauft.
  5. Der Provisionsanteil wird ausbezahlt.

Die Firefox Extension sollte folgende Features haben, um den Prozess zu erleichtern:

  • Anzeigen, wenn man sich auf einer Partnerseite von Bee5 befindet.
  • Per Knopfdruck diese Seite über einen Bee5 Link aufsuchen.
  • Die aktuelle Seite im Browser in einen Bee5 Link umwandeln.
  • Beliebige Links in Bee5 Links umwandeln.
  • Über das Guthaben bei Bee5 informieren.

Herausgekommen ist eine Extension, die sich hauptsächlich als Toolbar zeigt:

Die Bee5 Extension in Aktion

Die Bee5 Extension in Aktion

Anatomie einer Firefox Extension

Das ganze Prinzip, das hinter einer Firefox Extension steht ist ziemlich interessant. Grundsätzlich werden die GUI-Elemente in XML, genauer in XUL definiert. Für den Browser wird ein Overlay kreiert, in dem man seine Dinge in die Toolbar, das Menü und/oder in die Statusbar einhängt. Alle Ereignisse werden mittels Javascript implementiert. Ein Ausschnitt aus dem Overlay:

<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id="Bee5TB-Overlay">
    <stringbundleset id="stringbundleset">
        <stringbundle id="Bee5TB-stringBundle" src="chrome://bee5bar/locale/bee5bar.properties"/>
    </stringbundleset>
    <script type="application/x-javascript" src="chrome://bee5bar/content/bee5bar.js" />
    <toolbox id="navigator-toolbox">
        <toolbar id="Bee5TB-Toolbar" toolbarname="&bee5bar.toolbarname;" accesskey="&bee5bar.toolbarname.key;" class="chromeclass-toolbar" context="toolbar-context-menu" hidden="false" persist="hidden">
            <toolbaritem flex="0" id="Bee5TB-MainMenuTBItem">
                <toolbarbutton id="Bee5TB-MainMenu" type="menu" tooltiptext="&bee5bar.menu.tooltiptext;" label="&bee5bar.menu;" accesskey="&bee5bar.menu.key;">
                    <menupopup>
                        <menuitem label="&bee5bar.menu.website;" accesskey="&bee5bar.menu.website.key;" tooltiptext="&bee5bar.menu.website.tooltiptext;" oncommand="Bee5Bar.loadURL('http://bee5.de/beeoNu53a88')"/>
                        <menuitem label="&bee5bar.menu.mybee5;" accesskey="&bee5bar.menu.mybee5.key;" tooltiptext="&bee5bar.menu.mybee5.tooltiptext;" oncommand="Bee5Bar.loadURL('http://bee5.de/my/')"/>
                        <menuitem label="&bee5bar.menu.statistics;" accesskey="&bee5bar.menu.statistics.key;" tooltiptext="&bee5bar.menu.statistics.tooltiptext;" oncommand="Bee5Bar.loadURL('http://bee5.de/my/statistic-abstract.html')"/>

Lesen Sie den Rest dieses Beitrages »

Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • Facebook
  • Google Bookmarks
  • Netvibes
  • Reddit
  • Twitter
  • Print
  • email
  • LinkArena

Eingeordnet in Uncategorized | 2 Komentare »

Flickr: Private Photos posten

Geschrieben von skaldrom am 4. April 2009

flickrFlickr macht Spass! Mittels digikam und dfo hat man ihn auch unter Linux ganz gut im Griff. So ein Onlinealbum erfreut Familie und Freunde und dient zusätzlich als Backup.

Hier ein kleiner Trick, wie man (eigene!) private Photos publizieren kann. Zuerst: Warum sollte man das wollen? Ganz einfach: Man hat Photos, die man nicht allen zugänglich machen will. Was interessiert die Familie die Fastnacktfotos des letzten Betriebsfestes oder das lustige Chaos zu Hause? Wenn man die Sichtbarkeit auf “öffentlich” stellt, dann werden sie auf der Benutzerseite angezeigt und sind auch über die Suche findbar. Vielleicht möchte man aber genau diese Fotos einem eingeschränkten Benutzerkreis (im Firmenintranet beispielsweise) trotzdem zeigen.

Mit folgendem Vorgehen ist dies möglich:

  1. Die gewünschten Fotos auf “Nur Sie (privat)” stellen.
  2. Auf das Foto klicken, um die Detailansicht zu sehen.
  3. Über dem Foto auf die Lupe (“Alle Grössen”) klicken.
  4. Den Link “Diese Grösse herunterladen” kopieren. Er ist so in der Form http://farm2.static.flickr.com/3170/3414365629_d1ed214a27_b_d.jpg
  5. Den Link pasten, wohin man auch immer will.

Ist das eine Sicherheitslücke? Vielleicht. Ein Feature? Ganz sicher :)

Teile und geniesse:
  • Technorati
  • del.icio.us
  • MisterWong
  • Digg
  • StumbleUpon
  • Facebook
  • Google Bookmarks
  • Netvibes
  • Reddit
  • Twitter
  • Print
  • email
  • LinkArena

Eingeordnet in Uncategorized | 3 Komentare »