[Quicktip] Apache Ant sshexec Befehle per && kombinieren

Wenn man in einem Apache Ant Build Script bei einem sshexec mehrere Befehle aneinanderreihen möchte, dann kann man nicht wie von Linux gewohnt mittels “&&” konkatinieren – Ant wirft dann einen Fehler, dass ein & nicht von einem & gefolgt werden darf. Die Lösung ist sehr banal:

<sshexec host=”${host.name}” trust=”true” username=”${user}” password=”${pw}” keyfile=”${optional.keypair}” command=”command1 &amp;&amp; command2  &amp; &amp; command3″/>

[Symfony2] Wie kann man bei einem Repository findAll eine Sortierung setzen?

Mit den Magic Methoden der Symfony Repositories kann bekommt man automatisch Methoden wie findBy[Feldname] oder findAll bereitgestellt. Mit dabei ist jedoch keine direkte Möglichkeit, die Ergebnisse bereits zu sortieren. Über einen kleinen Trick geht aber auch das:

Möchte man ein findAll umsetzen, sieht der Code so aus:

$repository->findBy(array(), array('name' => 'asc'));

Jetzt werden alle Entities für dieses Repository geladen, jedoch erfolgt die entsprechende Query mit einem “ORDER BY name ASC”. Möchte man das findAll in eine spezifizierte Suche umwandeln, muss man das erste Array einfach mit dem gewünschten Feldnamen und dem zu suchenden Wert befüllen:

$repository->findBy(array('active' => 1), array('name' => 'asc'));

[php] Oracle XE und Doctrine/Symfony funktioniert nicht

Kurzer Warnhinweis: ich bin kein Freund von Oracle und finde es zumindest im Bezug auf php relativ kompliziert in der Einrichtung. Dieser Artikel besteht daher zum Teil aus gefährlichem Halbwissen – falls ich also Blödsinn erzähle, korrigiert mich bitte per Kommentar oder Mail 😉

Wenn ihr ein Symfony 2 Projekt mit einer Oracle XE Datenbank verbindet und dann folgende Fehler auftauchen – z.B. bei einem app/console doctrine:schema:create :

[Doctrine\ORM\Tools\ToolsException]
Schema-Tool failed with Error '' while executing DDL: CREATE TABLE Foo (id NUMBER(10) NOT NULL, name VARCHAR2(100) NOT NULL, PRIMARY KEY(id))
[Doctrine\DBAL\Driver\OCI8\OCI8Exception]

Dann müsst ihr folgende Dinge richtig machen:

Eure Konfiguration sollte so aussehen:

parameters:
    database_driver:   oci8
    database_host:     localhost
    database_port:     1521
    database_name:     xe
    database_user:     dbuser
    database_password: dbpass

Beim Treiber könnte man auch pdo_oci verwenden – was auch in vielen Tutorials empfohlen wird. Das Problem ist jedoch, dass dieser Treiber sehr instabil ist. Daher einfach oci8 verwenden 😉

Hostname und Port sollten klar sein, der Datenbankname ist bei einem Oracle XE grundsätzlich “xe”. Was ihr dann innerhalb eures Oracle Clients seht, was sich ähnlich wie eine DB in MySQL anfühlt, ist in der Oracle Sprachwelt ein Schema. Das Schema ist in der Regel gleich dem DB-Nutzernamen.

So, dass zu den Einstellungen. Der fiese Part, durch den es zum oben genannten Fehler kommen kann, ist, dass man noch zwei Umgebungsvariablen auf der Shell und im Apachen setzen muss, damit die Verbindung von Symfony zu Oracle korrekt läuft:

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export LD_LIBRARY_PATH=/usr/local/lib

Diese beiden Zeilen (natürlich mit den jeweils korrekten Pfaden für euer System) packt ihr entweder in die .bashrc des jeweiligen Users oder in die envvars Datei vom Apachen (diese Angaben beziehen sich primär auf ein Standard Debian, wie es in anderen Distributionen aussieht weiß ich nicht!).

Falls ihr die Variablen für den Apachen setzen müsst, nicht vergessen, diesen mittels Neustart dazu zu bewegen, diese auch zu laden 😉

Nun sollte die Verbindung laufen.

[Quicktip] Starten von Apache httpd unter Mac OSX nur als root möglich

Wenn ihr Apache httpd per Homebrew auf eurem Mac installiert und ihn als normalen User starten möchtet, dann kann es sein, dass ihr folgende Fehlermeldung erhaltet:

(13)Permission denied: make_sock: could not bind to address [::]:80

Diese Meldung hat einen einfachen Hintergrund: unter OSX kann nur root die Ports mit den Nummern kleiner als 1024 belegen (das scheint im Unix Umfeld allgemein so zu sein). Und nichts anderes sagt diese Meldung aus. Ändert also in eurer http.conf (/usr/local/etc/apache2/httpd.conf) den Parameter “Listen 80” auf z.b. “Listen 8080” und ändert ggf. noch die Listening Ports für Virtual Hosts, falls ihr welche eingerichtet habt. Anschließend sollte Apache auch von einem nicht-root User gestartet werden können. Falls ihr den Apachen vorher bereits als root gestartet habt, denkt bitte dran, alle Logfiles zu löschen oder die Schreibrechte anzupassen, da der Apache sonst nicht starten wird…

[Quicktip] Photoshop CS 4 unter Mac OSX 10.8 Mountain Lion crasht beim Verschieben von Layern

Was für ein fieser Bug. Seit einer Weile passiert es mir nun schon in Photoshop, dass es aus unerfindlichen Gründen abschmiert. Heute war das Fass übergelaufen und ich habe mich intensiv damit befasst, herauszufinden, wann genau der Fehler auftritt. Und zwar ist es letztendlich nur das Verschieben von Layern (Ebenen) per Drag & Drop. Sobald man den Drag startet, schmiert Photoshop ab. Die Lösung ist relativ leicht, aber darauf muss man erstmal kommen: es liegt an der automatischen Grafikkartenumschaltung von Mac OS. Alle neueren Macbook Pro haben zwei Grafikkarten verbaut – eine einfache Intel Karte und in den meisten Fällen noch eine Geforce. Um bei der normalen Arbeit Strom zu sparen, wird die 3D Karte deaktiviert, da die “einfache” Grafikkarte für’s Surfen, Texte schreiben usw. völlig ausreicht. Nur, wenn man z.B. spielt oder Videos anschaut, oder eben Programme nutzt, die von einer 3D Karte profitieren, wird diese aktiviert. Und Photoshop ist eines dieser Programme.

Unter OSX verwendet Photoshop dafür die QuickDraw Library, die unter Mountain Lion scheinbar einen Bug im Zusammenspiel mit dem automatischen Grafikkartenwechsel hat. Um das Problem zu beheben, muss man folgendermaßen vorgehen:

  • Systemeinstellungen öffnen
  • den Punkt “Energie sparen” öffnen
  • den Haken bei “Automatischer Wechsel der Grafikmodi” abwählen

Nun sollte Photoshop auch beim Verschieben von Layern nicht mehr abstürzen. Bitte daran denken, dass ihr den Haken nach getaner Arbeit wieder aktiviert, da sonst eure Akkulauftzeit darunter leiden wird.

Warum Apple endlich einen eigenen Fernseher herausbringen sollte

Die Antwort ist einfach: weil alle anderen Geräte Schrott sind!

Aber machen wir es ausführlich:

Vor ca. 3 Jahren habe ich mir den ersten LCD Fernseher gekauft – einen Philips mit Ambilight. Ein echt tolles Gerät, aber leider auch ein sehr typischer Vertreter der ersten Smart TVs mit einer unterirdisch schlechten Leistung. Das Bild ist echt super, ABER: Ein Tastendruck führt dazu, dass erst ca. 1 Sekunde später die Reaktion auf dem Bildschirm sichtbar ist, die Internet Inhalte brauchen eine gefühlte Ewigkeit, ehe sie geladen sind usw. – es fühlt sich einfach nur träge an. Hinzu kommen Unzulänglichkeiten, wie etwa, dass bei eingestecktem Kopfhörer (ich schließe so mein 2.1 Audio System an den Fernseher an) trotzdem die Lautsprecher des Fernsehers aktiv bleiben und die Lautstärkeregelung weiterhin nur für diese funktioniert und nicht etwa, wie man annehmen würde, für die Kopfhörer…und zu guter letzt wird man mit einer relativ langen Anschaltzeit sowie einer furchtbaren Sendersortierung bestraft. Ein paar gute Ideen der Techniker sind schon erkennbar, aber trotzdem stellt sich die Frage, warum man ein solches Gerät guten Gewissens in den Laden stellt. Es wirkt wie ein Prototyp, der noch den letzten Feinschliff benötigt.

3 Jahre später, ich stehe mal wieder im Elektronikfachgeschäft und sehe mir die neuesten Errungenschaften der Technik an. Das Bild hat sich nicht allzusehr gewandelt. Gut, die Preise sind etwas runter gegangen, aber letztlich bekommt man noch lange keine Topgeräte für sein Geld. Nachdem verschiedene Prototypen begutachtet sind, entscheide ich mich für ein Samsung Gerät – vor allem wegen Empfehlungen aus dem Bekanntenkreis. Die Verkäufer faseln irgendwas von Dualcore Prozessoren und Erweiterungsschächten, mit denen man die Kiste später updaten kann. Ich nehme die günstigere Variante (6000er Serie) mit Single Core CPU (so ganz einig waren sich die zwei Verkäufer doch nicht und behaupteten jeweils, dass es ein Single Core oder eben ein Dualcore ist) und freue mich aufs auspacken.

Das Gerät ist schnell montiert und die Einrichtung geht auch einfach von der Hand – allerdings schon mit deutlich zu viel Fachchinesisch. Warum geht das nicht einfacher und mit mehr Bildchen?
Nun ja, nachdem ich nun den ersten Sender sehe, ist der natürliche Reflex, erstmal die Sender ordentlich zu sortieren. Denn das macht so ein smarter Fernseher nicht etwa für mich – er sortiert die Sender lieber einfach alphabetisch. Schön gemischt mit verschlüsselten Sendern, obwohl er bereits gemerkt haben sollte, dass ich keine Decoder Karte eingesteckt habe und diese Sender daher ohnehin nicht sehen kann. Er müsste sie ja noch nicht mal löschen, aber ausblenden wäre eine Option. In irgendwelchen Videos im Netz habe ich gesehen, dass man irgendwo beim Sendersuchlauf einstellen kann, ob man überhaupt verschlüsselte Sender haben will. Einmal hatte ich diese Option auch, beim nächsten mal war sie verschwunden. Wahrscheinlich stelle ich mich auch einfach zu blöd an. Aber ist es nicht gerade die Aufgabe eines smarten Fernsehers, für mich mitzudenken und mir das Leben so leicht wie möglich zu machen?

Um so richtig Smart zu sein, bietet Samsung natürlich auch eine App. für diverse mobile Endgeräte an, mit der man den Fernseher auch per WLAN steuern kann. An sich eine sehr nette Idee, aber warum genau ist diese App. nichts anderes als eine virtuelle Fernbedienung, die nur ab und zu bei Textfeldern – hier kann man dann die Tastatur des mobilen Gerätes verwenden) wirklich nützlich ist? Wisst ihr, was mir zuerst in den Sinn kommen würde, wenn ich so eine App. bauen würde? Ich würde die Senderliste als echte Liste auf dem Handy anzeigen, sodass man Sender direkt auswählen könnte. Eine Einstellungsseite würde die gleiche Liste, aber mit Sortieroption bieten – einfacher könnte man eine Sendersortierung fast nicht mehr gestalten. Ich würde Menüpunkte einbauen, die direkten Zugriff auf die Apps des Fernsehers ermöglichen. Diese Ansicht gibt es sogar bereits, aber nur, wenn man den Smart Hub des Fernsehers aufruft. Wenn ich soweit mit der Fernbedienung navigiert habe, warum sollte ich nun das Handy in die Hand nehmen? Warum kann ich nicht direkt in der App. das Epg sehen, meine Aufnahmen planen oder mir auch den Videotext ansehen? Vielleicht verstehe ich den Begriff smart aber auch nur falsch…

Und weiter geht es mit den Einstellungen des Fernsehers. Glücklicherweise sind die schon kompakt gehalten, aber warum muss ich mich z.B. beim Bild mit einzelnen Punkten wie Schärfe, Farbwert usw. herumschlagen? Ich finde es gut, dass es die Einstellmöglichkeit gibt, aber bitte nicht auf der ersten Menüebene. Auf dieser will ich ein paar perfekt optimierte Vorgaben wie Film, normales Fernsehen, analoges Fernsehen, usw. auswählen können. Gerne auch mit der Möglichkeit, dass ich diese Einstellung pro Quelle (also Tuner, hdmi1, hdmi2,… usw.) auswählen kann. Da sich natürlich digitale, digitale Hd sowie analoge Sender in meiner liste befinden, sollte ich für jede Art den Modus festlegen können. Aber das natürlich auch nur optional. Die restlichen Einstellungen sind mehr oder weniger kryptisch. So war es mir nicht möglich, bei eingestecktem LAN Kabel das WLAN zu konfigurieren. Es gibt noch Menüpunkte wie Datennutzung oder Direct Wifi, mit denen ich nicht viel anfangen kann.

Ich öffne die Social tv App (der Fernseher ist leider noch nicht so Smart, dass ich dies als Standardfall nehmen kann) und möchte nebenher Statusmeldungen von Facebook lesen. Nach ca. 15 Sekunden Ladezeit sehe ich auch die Statusmeldungen und kann sie nun durch einzelne Tastendrücke durchscrollen. Möchte ich spontan einen Status absetzen, muss ich erstmal wieder ganz nach oben scrollen – also über jeden einzelnen Beitrag zurück gehen. In dieser Form ist die App. einfach nur unbrauchbar. Das Verhalten zieht sich durch mehrere Apps durch. Ich bezahle jeden Monat für eine 32.000er Internetanbindung. Jedes meiner Geräte profitiert davon – außer der Fernseher.

Die 3D Funktion des Fernsehers ist wirklich nett und gefällt mir persönlich deutlich besser als die passive Variante, welche man im Kino zu sehen bekommt. Mit der App. Explore3d bekommt man entsprechendes Bildmaterial direkt übers Internet kostenlos geliefert. Besonders die Doku über Alligatoren ist sehr beeindruckend. Außerdem bemerkt die Youtube App., wenn sie 3D Material wiedergibt und aktiviert dann auch gleich die Brillen. Hier muss ich jedoch anmerken, dass 3D mit verschwommenen youtube Videos nicht so toll ist. Ein weiteres nettes Feature ist die Möglichkeit, dass man bei angeschlossener Konsole den 3D Modus dazu verwenden kann, dass bei Spielen mit geteiltem Bildschirm jeder Spieler nur sein Bild sieht. Den Modus kann man wunderbar aktivieren und prinzipiell würde er auch funktionieren, aber leider kommt dann folgendes heraus: auf dem linken Auge sieht man das Bild des ersten Spielers, auf dem rechten das des zweiten Spielers. Ich habe keine Ahnung, was ich noch einstellen muss, oder, ob es evtl. spezielle Brillen für diesen Modus gibt. Das online Manual auf dem Fernseher weist darauf zumindest nicht hin. Und eine kurze google suche ergab auch nichts brauchbares. So habe ich prinzipiell eine tolle Funktion, kann sie aber nicht nutzen. Richtig imposant wird es aber, wenn Konsolenspiele den 3D Modus an sich unterstützen. Sofern man frontal vor dem Fernseher sitzt, schwingt dann die Wumme im Call of Duty Match in wunderbarem 3D vor einem hin und her.

Ein Lichtblick ist die Aufnahme bzw. Timeshift Funktion. Hierfür muss der eingesteckte USB Stick bestimmte Anforderungen (Schreib- und Lesegeschwindigkeit) erfüllen, die der Fernseher vor der ersten Verwendung überprüft. Sobald der Stick geprüft und formatiert ist, kann man jederzeit die Aufnahme oder Pause Taste drücken und startet somit entweder eine Aufnahme, oder aber Timeshift. Über die Ladezeit, bis Timeshift wirklich aktiv ist, kann man sich streiten, mit ca. 5 bis 10 Sekunden ist sie aber noch immer gut im Rahmen. Aufgrund gewisser Interessengruppen ist es leider nicht möglich, den Stick mit Aufnahmen an den Rechner oder auch nur an einen anderen Fernseher des gleichen Types zu stecken. Zumindest nicht mit Bordmitteln – zu gegebener Zeit werde ich nochmal schauen, was da möglich ist…

Da ich mir die anderen Marken nur im Geschäft angesehen habe, kann ich nicht wirklich ein volles Urteil abgeben. Was ich jedoch vor Ort gesehen habe, hat mich nicht unbedingt umgehauen. Letztlich sind alle Fernseher mit technischen Spielereien ausgestattet, die man zwar mitbezahlt, aber eigentlich nicht braucht. Hätte man die Zeit und das Geld lieber darin investiert, die bestehenden Features perfekt zu machen, wäre allen geholfen…

Was mir nicht so recht in den Kopf gehen will: es arbeiten sehr viele Leute bei den jeweiligen Herstellern, die die eigenen Geräte ja höchstwahrscheinlich auch täglich verwenden. Fällt das alles niemandem auf, oder habe ich einfach zu hohe Ansprüche? Meiner Meinung nach bekomme ich für 1000€ bereits einen sehr ordentlichen Rechner mit relativ großem Display. Alles, was den Fernseher unterscheidet, ist das größere Panel. Mir kann niemand erzählen, dass das den Preis so extrem nach oben schraubt, sodass man gezwungen ist, extrem billige und leistungsschwache Technik einzubauen. Um die Teile flotter zu machen, muss man ja noch nicht mal viel Geld in die Hand nehmen. So ein guter mobiler Chip bewegt sich irgendwo im Bereich bis ca. 20€ – wenn überhaupt. Damit würde die Gesamthaptik deutlich profitieren. Ein Hersteller, der sowas durchsetzt, würde auch deutlich Profit davon tragen.

[Quicktip] Wie kann man mit Plesk für eine Subdomain eine Weiterleitung einrichten?

Plesk unterstütz diese Anforderung leider nicht – also z.B. blog.domainname.com auf firmenblog.com weiterzuleiten. Man kann sich aber folgender Tricks bedienen:

  • die einfachste Möglichkeit, sofern man die entsprechenden Rechte hat, ist einfach eine neue Domain in Plesk anzulegen (“Domains” – “add new Domain”). Dazu trägt man die komplette Domain ein, also in unserem Beispiel blog.domainname.com – wobei es egal ist, ob diese Haupt-Domain bereits eingerichtet ist. Im nächsten Schritt kann man entscheiden, um welche Art von Hosting es sich handelt. Hier wählt man nun Standard Weiterleitung (“Standard forwarding”) aus und gibt anschließend die Ziel Domain ein. Fertig.
  • Sofern man die entsprechenden Rechte nicht hat, erzeugt man eine normale Subdomain und legt in ihren httpdocs/httpsdocs Ordner eine index.html Datei mit folgendem Inhalt an:

    <html>
        <head>
            <meta "refresh" content="0; URL=http://zieldomain.com">
        </head>
        <body>
        </body>
    </html>

    Zieldomain.com würde in unserem Beispiel mit firmenblog.com ersetzt werden. Die Zahl 0 davor gibt an, nach wie vielen Sekunden die Weiterleitung erfolgen soll. Wenn ihr also noch einen Hinweis an den Besucher loswerden wollt, setzt die Zahl hoch und fügt eure Meldung innerhalb des Body Tags ein.

[Infografik] wie viel kostet es, eine App zu erstellen

Auch wenn es die eine oder andere gut klingende Erfolgsstory von der “Millionen App übers Wochenende” gibt, so ist die Realität dann doch, dass so eine App ordentlich Zeit und Geld kostet – außer man ist Entwickler und auch grafisch begabt…dann kostet es nur Zeit 😉

20130213-082004.jpg

via ideatoappster.com

Die wahrscheinlich größte private Spielesammlung, die es jemals gab

Wahnsinn! 6850 Spiele, 330 Konsolen und 220 Controller und 185 Zubehörteile sollten über eBay zu einem Preis von 500.000$ verkauft werden. Der erste Anlauf hat scheinbar nicht geklappt, also stehen eure Chancen gut, das Zeug zu ergattern:

link zur Auktion

20130211-225038.jpg

20130211-225201.jpg

20130211-225151.jpg

20130211-225144.jpg

Der Verkäufer hat insgesamt 10.000 Bilder geschossen, um alles erfassen zu können. Um die Übersichtlichkeit zu wahren, wurden die Bilder auf 500 Stück zusammenfasst und ergeben nun eine eindrucksvolle Sammlung der Spielgeschichte. Die Bilder findet ihr hier….

Via Stadt-Bremerhaven