Ein schönes Kapitel aus dem The Unix-Haters Buch, passend zu einem Thema dieser Woche.
Sencha [Update]
Nov 11
Es ist noch nicht so lange her, da schlossen sich die Firmen bzw. Entwickler von Ext JS, Raphaël und jQTouch zusammen und bildeten die Firma Sencha Inc. bzw. die Sencha Labs Foundation. Ext JS entwickelt ein gleichnamiges RIA-JavaScript-Framework sowie eine eigene Schnittstelle zu GWT (Ext GWT), während Raphaël ein JavaScript-Framework ist, welches mit generiertem SVG (auch IE-kompatibel) Charts und Graphen erzeugt. Mit Hilfe des jQTouch-Framework kann man Webanwendungen bauen, die nahezu wie native iPhone-Apps aussehen und sich auch ähnlich bedienen lassen.
Seitdem hat sich vieles getan: Sencha hat SenchTouch vorgestellt, welches aktuell als RC auf Version 1.0 zusteuert. Ähnlich wie jQTouch lässt sich mit diesem RIA-ähnlichen-JavaScript-Framework (stark verwandter Unterbau wie Ext JS) eine Applikation für mobile Endgeräte (typischerweise iPads und iPhones) bauen — inklusive mit den entsprechenden speziellen, optimierten UI-Elementen. Außerdem gibt es den Ext Designer: eine eigene grafische Oberfläche zum Entwickeln von Ext JS Komponenten. Super praktisch, und im professionellen Einsatz sicher sein Geld wert.
Dazugekommen sind außerdem:
- Connect: ein node.js basierter Applicationserver
- JavaScript InfoVis Toolkit: Ein JavaScript-Framework zur Darstellung von Graphen, etwa Bäumen oder anderer Strukturdiagramme.
- CSS3PIE: macht neue CSS3-Attribute auch für die IE6-8 über JavaScript verfügbar.
- Sencha Animator (Beta): Animationen erstellen mit Ausgabemodus “HTML5+CSS3″
- RemoteJS: macht das (Remote-)Debuggen “on device” für Android-Entwickler einfacher
… und wahrscheinlich noch ein paar schöne Dinge. Wie etwa eine eigene Messe nächste Woche, die SenchaCon. Leider ist die San Francisco. ![]()
Der Sencha Verbund entwickelt sich so langsam zu einer richtig guten Sache, die auch schön viel in die Community bringt.
Update (01.12.2010): tinySrc ist jetzt auch dabei.
Links
- Sencha Company Profile
- Ext JS und Examples
- Ext GWT für Google Web Toolkit
- Raphaël (Demos weiter unten)
- jQTouch und Previewlink (etwa mit iPhone, iPod, Simulator oder auch mit WebKit-Browsern)
- Sencha Touch Overview
- Ext Designer
- Connect Howto
- Sencha Accquires the JavaScript InfoVis Toolkit
- CSS3 PIE
- CSS3 is now part of Sencha Labs
- Sencha Animator
- RemoteJS
Lobbyismus für Dummies
Nov 6
Ein neues Werk von Alexander Lehmann. Wie immer sehenswert.
{DEVELOPERS SHAME DAY}
Nov 3
Cem hat kürzlich den Developers Shame Day ins Leben gerufen.
Als Stichtag würde ich den 3.11.2010 vorschlagen. Ich stelle mir vor, dass an diesem Tag alle Entwickler, die ein Blog oder eine Seite betreiben, ein kleines Stück Code präsentieren, dass aus heutiger (oder vielleicht auch damaliger) Sicht total hirnverbrannt ist. Ein Stück Code, dass uns selbst die Schamröte ins Gesicht steigen lässt. Dabei ist egal, ob es sich um PHP, JavaScript, CSS, HTML, Java, C oder sonst etwas handelt. Es muss nur von euch sein und es darf nicht verändert werden (umeventuell doch als total verrückter Hund dazustehen ). Ein kleiner erläuternder Text sollte natürlich auch nicht fehlen.

Und das ist mein Beitrag, wohl einer meiner ersten Gehversuche in PHP. Der Quellcode entstammt einer Datei namens “functions.inc.php” [sic!]. Und es scheint so
, also wäre es eine größere Anwendung gewesen, ich habe jedoch echt keine Ahnung mehr welche — vielleicht die erste PHP-Homepage in Eigenentwicklung? Die Datei hatte sich irgendwie auf meine “Informatik-Diskette” [sic!] (Oberstufenkurs) verirrt, von der ich tatsächlich noch ein Abbild hatte. Der Rest der Programmiersünden muss entweder (m)einen Backup-Aufräumaktionen oder einem vor einigen Jahren aufgetreten Backupmediumfehler zum Opfen gefallen sein. Zu meiner Verteidigung kann ich wohl nur sagen hoffen, dass dies einer erste Spielversion war und nie “produktiv” wurde.
Listing
Bitte in voller Länge genießen. Jede Zeile ist ein Genuss. *ankoppfass*
Unverändert, nur Benutzername/Passwort habe ich ausgeixt.
Datei: functions.inc.php (von 2002 oder 2003)
<?php
//conf.inc.php
//please don't change this file manually - go to your admin-area to change settings!!!
$listname="Meine Linkliste";
$listname2="Downloads";
$linkwidth="100%";
$addpagewidth="50%";
$catorder="name";
$incatsort="Hits";
$perpage="5";
$max_search="10";
$adminpw="a";
$max_desc_leng="500";
$html="ON";
$language="german.lang";
$timeformat="1";
@include("global/$language"); // language-file
@include("../global/$language"); // language-file
//connect.inc.php
// DON'T CHANGE THIS FILE MANUALLY - EDIT ONLY VIA ADMIN-AREA
$server="localhost";
$user="xxx";
$pass="xxx";
$mydb="xxx";
$db_prefix="xl_";
$db_prefix2="dl_";
function JPDiv ($a,$b) {
$i=0;
$j=0;
while($j==0) {
if(($a/($b*($i+1)))>1) {
$i++;
} else {
$j = 1;
}
}
return $i;
}
function JPDatumZeit ($a) {
$JPTag = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
$JPMonat = array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
$JPDatumTag = $JPTag[date("w",$a)];
$JPDatumMonat = $JPMonat[date("n",$a)-1];
$JPDatumJahr = date("Y",$a);
$JPZeit = date("H:i:s",$a);
$b = $JPDatumTag . ", " . date("j") . ". " . $JPDatumMonat . " " . $JPDatumJahr . " [" . $JPZeit . "]";
return $b;
}
function JPDatumZeit2 ($a) {
$JPDatumJahr = date("Y",$a);
$JPZeit = date("H:i:s",$a);
$b = date("j") . "." . date("w",$a)+1 . "." . $JPDatumJahr . " [" . $JPZeit . "]";
return $b;
}
class my_zugriff{
//Variablen für Zugangsdaten
var $user="xxx"; //Benutzername für den MySQL-Zugang
var $password="xxx"; //Passwort
var $host="localhost"; //Name (IP-Adr.) des Rechners mit MySQL
var $dbname="xxx"; //Name der Datenbank
//Weitere Variablen
var $db_verbindung=false; //Speichert die Verbindungskennung
var $sql_result=false; //Speichert die Kennung eines ausgewerteten SQL-Befehls
//Konstruktor definieren
function my_zugriff(){
//Funktion verbinden wird bei Aufruf der Klasse ausgeführt
$this->verbinden();
}
//Falls keine Verbindung besteht,
//Verbindung aufbauen und Datenbank als Standard definieren
function verbinden(){
if ($this->db_verbindung==false){
$this->db_verbindung = @mysql_connect($this->host, $this->user, $this->password);
if(empty($this->db_verbindung)){
$this->fehler("Beim Verbinden");
}
$auswahl = @mysql_select_db($this->dbname, $this->db_verbindung);
if(empty ($auswahl)){
$this->fehler("Beim Auswählen der DB");
}
return $this->db_verbindung;
}
}
//Gibt Fehlermeldung aus und beendet das Skript
function fehler($fehlerpunkt){
echo $fehlerpunkt . " ist ein Fehler aufgetreten!<br>";
echo mysql_error() . "<br>"; //Fehlerbezeichnung
echo mysql_errno(); //Fehlernummer
echo "</body></html>"; //Html-Tags schließen
exit;
}
//SQL-Befehl ausführen
function sql_befehl($sql){
$this->sql_result = @mysql_query($sql, $this->db_verbindung);
if (empty($this->sql_result)){
$this->fehler("Beim Senden der Abfrage");
}
return $this->sql_result;
}
//Falls zuvor ein SQL-Befehl ausgeführt wurde,
//wird hier das Array mit den Datensätzen ausgegeben
function sql_daten(){
if(!empty($this->sql_result)){
$sql_array=@mysql_fetch_array($this->sql_result);
return $sql_array;
}else{
$this->fehler("Beim Ausgeben der Datensätze");
}
}
//eig. Fkt
function sql_num_rows($sql){
$this->sql_befehl($sql);
$rows = MYSQL_NUM_ROWS($this->sql_result);
return $rows;
}
}
$db=new my_zugriff();
$db->sql_befehl("SELECT elem_string FROM elem_global WHERE elem_name='JPmyVersion'");
$myVersion_now = $db->sql_daten();
$JPmyVersion = $myVersion_now[0];
?>
Selbstreflexion
- Struktur: globale Variablen
- Struktur/Aufbau:Â als Script noch okay, aber als Include? Oweh..
- Includes mittendrin
- Variabel- und Funktionsnamen multilingual
- Inhalt der Funktionen..
- kein gängiger Codestyle (ja, der Blog zeigt’s richtig an)
- Inline-SQL(!)
Kurzum: What the hell…?
“Die Rente ist sicher.”
Nov 1
Nein, es geht nicht um die Rente. Sondern um den neuen Personalausweis.
Da hat die FAZ ein äußerst aufschlussreiches Interview mit der sog. IT-Beauftragten der Bundesregierung geführt. Ich formuliere es mal so: Aus Sicht der Komik hat es eine gute Note verdient.
Dazu ein lustiges Zwischen-den-Zeilen-lesen (Mirror, weil fefe den Server kaputt gemacht hat).
Apples Java-Support
Okt 29
Nur, falls das irgendjemand durch die ganzen Blogs, Techs & Co missverstanden hat:
The runtime provided by Apple (effectively everything in the .jdk bundle) is deprecated, but will continue to be supported throughout the service lifetimes of 10.5 and 10.6. The JavaVM.framework and it’s sub-frameworks are still supported API.
(Mike Swingler, Java Engineering, Apple Inc.) Quelle
Die Runtime ist “Java”, während das Framework quasi nur eine Schnittstelle ist. Und diese Schnittstelle ist *nicht* deprecated. Ganz im Gegenteil, sie wurde im letzten Update sogar aufgewertet (zugegeben, die Möglichkeit mehrere unterschiedlicher JVMs ist nur auf OSX ein Novum).
Ich hatte eben in den alten E-Mails gesucht, da ich mal “aufgeschrieben” hatte, was man alles für die Anmeldung [sic!] zur Diplomarbeit benötigt. Ich stelle den mal kommentarlos zur Verfügung.
Hallo zusammen,
wer gedacht hat, das Anmelden zur Diplomarbeit wäre bei der FH easy, der hat die Rechnung ohne das Prüfungsamt gemacht. Leider steht folgende Todo-Liste NICHT online, wohl aber findet man aber Formulare auf dieser Seite http://www.studium.fh-koeln.de/service/formulare/u/01256.php – wer also schon mal eine Diplomarbeit geschrieben hat, der weiß wie der Hase geht.. der Rest steht nur dumm da.
Erstens: Der Antrag auf Zulassung
Weil es ein Amt ist, gibt es keine “Anmeldung”, aber einen “Antrag auf Zulassung”. Klingt komisch, ist aber so. Den “Antrag auf Zulassung zur Diplomarbeit und Kolloquium…” muss in _zweifacher_ Ausfertigung abgegeben werden.. und nein, das war noch nicht alles..Zweitens: BAFÖG
Für diejenigen, die BaFög erhalten haben, müssen das zugehörige Formblatt abholen. Diejenigen, die kein BaFög erhalten haben, müssen aber auch ein Formular ausfüllen.. nämlich um zu unterschreiben, das sie.. ui, richtig.. kein Bafög bekommen haben. Warum? Die besten 30 Absolventen müssen weniger zurückzahlen. Eigentlich ja keine schlechte Sache.Drittens: Alle Guten Dinge sind drei – Externe Arbeiten
Sollte man außerhalb der FH eine Arbeit schreiben – was ja durchaus vorkommen wird – so benötigt man ebenfalls das Formblatt “Betreuerin/Betreuer der Diplomarbeit aus der Industrie/Wirtschaft”.. da bei ist es völlig egal, ob der externe Betreuer wirklich in Industrie/Wirtschaft sitzt, man könnte auch schreiben “nicht aus der FH Köln”. Richtig geraten, dieses Formblatt muss auch _zweifach_ ausgefertigt abgegeben werden.Der aufmerksame Leser, der gut im Kopfrechnen ist, sollte im schlimmsten Fall auf fünf Formulare gekommen sein, die auszufüllen sind.
Viele Grüße aus Köln,
JanJegliche Form von versteckter Ironie, Sarkasmus oder bösen Witzen sind rein zufällig. Wirklich.
Java auf dem Mac
Okt 24
Mit dem jüngsten Java-Update hat Apple angekündigt, dass ihre eigene Java-Version als “deprecated” markiert wurde und das nach dem üblichen Support-Lifecycle eine Java-Entwicklung eingstellt wird.
Oder, mit anderen Worten:
- OS X 10.6 “Snow Leopard” ist die letzte OS X Version, die ein vor-installiertes Java (JVM+JDK) besitzt und innerhalb der üblichen Apple-Updates aktualisiert wird;
- Apple hat mit dem jüngsten Update einige Änderungen in der internen Java-Framework-Architektur gemacht, damit parallele JVMs (und auch Nicht-Apple-JVMs) besser erkannt werden können und (einfacher) aktiviert werden können (ein nahe liegende Grund ist bspw. das Testen einer Developer-JVM, was bisher entweder gar nicht ging oder nur mit großem Aufwand);
- Apple macht damit in Zukunft genau das gleiche wie Microsoft.
Viel FUD kommt aber in einigen (Java-)Entwickler- oder Apple/Mac-Communities (oder auch der offiziellen Java-Mailingliste von Apple) auf, da die Ankündigung wahlweise als Java-Verbannung, “Jobs hates Java” oder sonstiger streng objektiven Aussagen interpretiert wird.
Zunächst einmal bedeutet das Wort “deprecated” nur, das beim Release der Schnittstelle/des Frameworks die “deprecated” Komponente eben zu einem späteren Zeitpunkt hinfällig wird. Damit ist also nicht etwa eine “veraltete [Java] Technik” gemeint. Also, Apple sagt nur, das ihre eigene entwickelte JVM eingestellt wird. (Genau das steht auch in den Release Notes.)
Zusammengefasst kann man als Java-Mac-Entwickler derzeit nur sagen:
- Schade, dass man sich auf lange Sicht in Zukunft nicht mehr auf der sicheren Seite bewegt, das eine JVM (und sogar JDK!) auf dem OSX-System vorhanden ist. Auch dort wird man also in einigen Monaten Hinweise auf das Vorhandensein von Java oder automatische Installationsangebote wiederfinden.
- Schade, dass es kein Vendor-Java gibt. (Es gibt Vorteile).
- Schön, denn die Releasezyklen sind bestenfalls so gut wie von Sun (Oracle), nie besser. Und aus der Vergangenheit wissen wir, dass OS X teilweise Wochen bis Monate (und im Falle von Java 6 sogar Jahre) auf neue Versionen warten musste. Das wäre bei Sun nicht passiert.
- Schön, denn die interne Grundlage mit dem jüngsten Update sorgt dafür, dass OS X’ Java-Framework-Komponente erst wirklich Non-Apple-JVM-tauglich ist.
Wirklich schlimm wäre es nur, wenn sich entweder keiner für eine (offizielle) Weiterentwicklung zur Verfügung stellt oder die einzige Weiterentwicklung nur mit X11 funktioniert. Beides würde dann tatsächlich das Aus bedeuten. Diese beiden Alternativen halte ich jedoch für unwahrscheinlich.
Zum Thema auch folgender Beitrag. Man beachte die beiden Kommentare von Ottinger und Gosling.
Und auch der hier, mit dem guten Hinweis auf die Apple Extension, die natürlich “in Gefahr” sein könnte. Für diejenigen, die die überhaupt benötigen.
ClickToPlugin
Sep 19
Seit ein paar Wochen nutze ich jetzt bereits die Safari Extension ClickToPlugin. Dabei handelt es sich um eine erweiterte Variante der Extension ClickToFlash des gleichen Entwicklers.
Während die Safari-Extension ClickToFlash nur auf das Blocken von Flash abzielt, geht ClickToPlugin weiter und blockiert auch andere Plugins (daher auch der Name): Silverlight, Java, usw. Es wäre richtig zu sagen: ClickToPlugin beinhaltet ClickToFlash.
Gemeinsam haben beide, dass sie ( vor allem bei Flash) reine Flash-Videoplayer versuchen zu erkennen und bei Erfolg in entsprechendes HTML5-Markup umwandelt.
Dabei konnte ich in den letzten Wochen bemerken, dass es erstaunlich viele Flash-Videoplayer gibt, die eigentlich nur H.264-Videoquellen abspielen. Daraus folgt glücklicherweise, dass der Browser weit aus weniger Flash laden muss (auch auf Anforderung = Click), denn die meisten Videos werden direkt als “HTML5 <video>” abgespielt.
Die Quintessenz: Ungeachtet der [mutmaßlichen] vielen “Nicht-HTML5-Ready”-Flash-Inhalten muss man jedoch anmerken, dass die Anzahl wohl tatsächlich weitaus geringer ausfallen würde, wenn entsprechende Weichen mehr eingebaut würden.
Buugle – das Bundes-Google
Sep 19
“Schöne” Alternative zu Google
Der Autor ist übrigens der Macher von “Du bist Terrorist!”.
via netzpolitik


