GeekLand

TopStorys, Bilder und anderer Content für die Geek-Com
Subscribe

Archive for the ‘Programmieren’

Neue und schicke Regionalplattform

January 09, 2009 By: Geek5 Category: Programmieren, Internet, Drupal, Webdesign 1 Comment →

isartal.info Screenshot Thumb Ich habe an einer neuen Drupal 6 Plattform mitgearbeitet die seit heute in der Beta-Phase, d.h. öffentlich, ist. Isartal.info ist eine “local collaboration plattform” nach web2.0 Schema (hehe).

Entwickelt ist das Ganze in Drupal 6.x / PHP 5.x / MySQL 5.x und läuft auf Apache 2. Würde mich freuen, wenn Ihr mal draufschaut!

Webapplikationen in JAVA

June 27, 2008 By: Geek5 Category: Admin, Linux, Programmieren, Internet 2 Comments →

Ende aus Micky MausIch habe vor etwa 8 Jahren für eine große Direktbank tolle Software für den Börsenhandel der Kunden konzipiert und als Projektleiter umgesetzt. Damals nutzen wir BEA Weblogic als Applicationserver und Oracle als Datenbankbackend. Die Software an sich war was man damals unter J2EE/EJB Architektur verstand. Das MVC Konzept war gerade erst geboren und zumindest als Pattern noch nicht in der Praxis angekommen.

Heute schreibe ich Webapplikationen als modulares Gemisch von Datenhaltung, Businesslogik und Präsentation in mehreren Sprachen. Die Module kommunizieren über einfaches XML-RPC und beschränken sich auf Kernaufgaben.

JAVA spielt dabei keine Rolle mehr. PHP ist einfacher und weniger fehleranfällig. C++ ist schneller und einfacher zu deployen, meine Server kommen mit 1GB Speicher aus - bei 5 Applikationen. MySQL ist schlanker und leichter zu installieren als Oracle. tomcat brauche ich überhaupt nicht mehr (gibt es BEA noch?). JavaScript und Ajax direkt zu programmieren ist ein Kinderspiel - brauche ich JAVA Frameworks dafür oder erhöht das meine Komplexität unnötig? CMS Frameworks übernehmen praktisch alle Standardaufgaben wie Userverwaltung oder Sessionhandling. Den Ballast eines Eclipses in dessen Workspace 5.000 Dateien mit 20.000 Klassen (davon 18.000 generierte) verwaltet werden habe ich abgeworfen.

Ok, J2EE ist skalierbar, kann hot-standby und hot-swap. Es gibt massenweise Generatoren für Code-Frameworks am Markt. Aber hey, wer braucht das heute noch?

Ein 4GB, 4×2GHz mit Flatrate Anbindung kostet mich 50 EUR Miete pro Monat. Davon zwei (einen für Appl., einen für DB mit Privatnetz verbunden) und ich kann jede LAMP Anwendung für einen Bruchteil der Kosten einer vergleichbaren J2EE Architektur betreiben.

Webapplikationen heute noch in JAVA zu bauen ist etwa so, wie Windows Applikationen 1994 in Assembler zu schreiben. Java ist ein Kind des distributed workstation computing.

Diese Zeit ist um.

jQuery Slideshows die auch Google mag

May 27, 2008 By: Geek5 Category: Admin, Programmieren, Internet, Webdesign 2 Comments →

an der page schrauben Slideshows sind eine prima Technik um mehr Inhalt auf wenig Platz unterzubringen. Zusätzlich dazu freut sich der Betrachter darüber, dass ein wenig Firlefanz auf der Site auftaucht.

Problem oft: Blende ich meine Slideshows via AJAX ein, dann bekommt Google davon nichts mit. Google macht nämlich kein JavaScript (wobei ich den Verdacht habe, dass inzwischen auch Google ein bisschen JavaScript macht…). Anderes Problem: Blende ich die zuerst unsichtbaren Bereiche mittels ‘display:none’ aus, gibt’s womöglich gar ein böses Penalty vom Google.

Die gute Lösung: Den ganzen Content via div’s separieren und auf die Klammer (z.B. ein ul) dann eine jQuery Slideshow draufbauen.

Dazu ein wenig Beispielcode von meiner Beratungsseite entnommen:

Im header der Seite müssen die Scripts inkludiert werden:

<script type=“text/javascript” src=“/jquery.js”></script>
<script type=“text/javascript” src=“/jquery.cycle.all.js”></script>

Die entsprechenden Quellen gibt es hier (jquery.js) und hier (jquery.cycle.all.js) abzuholen.Dann braucht es eine Funktion, die die Slideshow definiert und einen Starttrigger der die Show “afterload” anstartet:

<script type=“text/javascript”>
function CycleRefs() {
 $(’#referenzen’).cycle({
    fx:     ’scrollRight’,
    delay: -1000,
    xsync: 1
 });
} 

$(document).ready( function(){
  CycleRefs();
});

</script>

Wie man sieht, versucht die Funktion CycleRefs() ein DOM Element mit der Id “referenzen” zu benutzen. Dieses Element muss man im HTML-Quelltext also definieren:(Ab jetzt geht’s im body Bereich weiter)

<div id=“referenzen” class=‘whatever’>
  <div>
    <img>
    <span class=‘description’>
      <h4>Ein Header</h4>
          Ein blabla.
    </span>
  </div> 

  <div> <img ..>
    <span class=‘description’>
       <h4>Mehr Inhalt</h4>
       Mehr blabla.
    </span>
  </div>
</div>

Wichtig dabei ist, dass das Element mit der referenzierten id ein block-level element ist (also per default ein display: block hat). Die zweite Ebene an block-level Elementen wird dann rotiert. Falls man da “li”’s haben will, muss man die li’s per CSS zum block-level Element machen.

Soweit, sogut. Wenig Arbeit für einen hübschen Effekt! Und weil alles im Klartext als HTML dasteht, kommt auch Google und Co. gut klar.

C, C++, JAVA, PHP, RUBY, Perl, Pascal und Basic

September 01, 2007 By: Geek5 Category: Programmieren, Business 6 Comments →

Ein nicht ganz so kurzes Essay über aktuelle Programmiersprachen.

Programmieren ist toll, die Sprache spielt dabei eigentlich eine untergeordnete Rolle.

Vor einigen Jahren war C/C++ noch unangefochten und alleine auf weiter Flur an der Spitze (Anfang der Neunziger sprach kein Mensch mehr von Fortran, Cobol, Lisp, Algol und all dem anderen alten Kram den wir auf der Uni noch anschauen mussten). Dann kam Java und hat C/C++ zumindest den Projektanfragen von Gulp zufolge von der Spitze gestoßen.

Inzwischen wird auch JAVA von allen Seiten bedrängt, besonders nachteilig für den Platzhirschen ist dabei die JVM bedingte Schwere der Installation. Hoster bieten JAVA praktisch nie an, und selber hosten ist immer noch recht teuer. Billige VServer taugen für JAVA mangels Performance noch lange nicht. Und die ursprüngliche Idee, die JVM als Betriebssystem zu verstehen, hat sich angesichts der jetzt dominierenden Browser Interfaces auch erledigt.

Inzwischen ist die Aufteilung nach Anwendungssgebiet einigermaßen abgesteckt

PlayC/C++ wird dort verwendet, wo es entweder recht systemnah zugeht (OS API’s), wo Resourcen knapp sind (Embedded) oder wo es auf Geschwindigkeit ankommt (physikalische Simulationen etc.) - Und übrigens: Nein, JAVA ist nicht annähernd so schnell wie C, auch nicht mit Compilern und sonstigen Tricks. Der Grund ist derselbe, warum C nicht so schnell ist wie Assembler. Optimizer sind immer noch schlechter als gute Entwickler und der JAVA Sprachstandard ist für schnelle Programmierung schlicht nicht geeignt - erstes Beispiel: [*ptr++ = wert] geht nicht, zweites Beispiel: Garbage Collection.

C/C++ ist übrigens (ordentlich programmiert) nicht plattformabhängig (siehe Linux)!

PlayJAVA wird in erster Linie innerhalb großer Frameworks verwendet. Dank Reflection und Classloader ist JAVA hier sehr gut geeignet. Bis vor einiger Zeit hatten sich Firmen auch noch für JAVA entschieden, weil Entwickler hierfür zahlreicher und billiger zu bekommen waren als für C++ (ist inzwischen nicht mehr der Fall). Die Entwicklung in JAVA ist sicherlich einfacher als die in C++ (wer C++ kann, braucht keine Woche um JAVA zu lernen - aber wohl ein paar Zusatztage um mal alle JSE Komponenten durch zu sehen), allerdings wird meiner Ansicht nach dieser Vorteil in der teureren Konfiguration von Laufzeit- und Entwicklungsumgebung wieder verspielt.

Nützlich: Große Firmen bauen in zentralen Design- und Architekturabteilungen wenig komplexe Frameworks die von Fachabteilungen angewandt werden um Standardprobleme der EDV zu lösen (Daten holen, Daten modifizieren, Daten speichern). Die Programmierung dieser Frameworks gleicht dann eher dem Zusammenklicken von Komponenten denn der Programmierung von Software - der große Vorteil: Die Fachabteilung braucht keine qualifizierten (und darum teuren) Softwareentwickler. Der Nachteil ist natürlich, das die mögliche Komplexität der zu entwickelnden Software von den Möglichkeiten des Frameworks begrenzt wird.

Die JAVA Entwicklung ist ohne Eclipse nicht mehr denkbar. Die plattformunabhängigkeit reicht auch bei JAVA nur für Serverprozesse, schon Swing sieht überall anders aus.

PlayRuby wird eigentlich nur “on Rails” verwendet, zeigt im Zusammenspiel mit diesem hervorragenden Framework allerdings überdeutlich, was für eine eintönige Angelegenheit die “Legacy-Systems on Browsers” Entwicklung eigentlich ist. Mit Ruby on Rails lässt sich mit wenigen Zeilen eine CRUD Application nach dem MVC Paradigma erzeugen (CRUD = Create, Read, Update, Delete :: MVC = Model, View, Controller). Rails erzeugt dabei die Datenbanktabellen, die Datenzugriffsschicht, den HTML View und den Ruby Controller. Nebenbei werden noch Gerüste zur Up/Down Migration, Testcases und einiges mehr erzeugt. “RoR” ist eigentlich J2EE auf einfacher. Leider ist die Syntax von Ruby “ungewöhnlich”.

PlayPascal und Basic leben eigentlich nur noch in den Dialekten “Borland Pascal” und “Visual Basic” und dienen in diesen Fassungen nur noch der Erstellung von nativen Windows Anwendungen - und Windows Automatisierungen. Da ich lange Zeit Delphi programmiert habe bin ich über Borlands Untergang (zumindest was Pascal betrifft) traurig - aber Technologien haben eben nur eine kurze Lebenserwartung. Visual Basic finde ich nicht der Rede wert.

PlayPerl hat die Liga der Scriptsprachen wieder stark gemacht und dient in verschiedenen Softwaresystemen als Konfigurationssprache. Die Vorteile gegenüber PHP sind aber gering (vor allem im Bereich der regulären Ausdrücke - also im Texthandling), die Sprachstruktur dagegen ist sehr gewöhnungsbedürftig. Außerdem hat Perl keinen Fokus auf Webapplikationen (obwohl es ls CGI Sprache populär wurde). Ich glaube Perl wird in seiner Bedeutung nicht mehr steigen.

Phyton - davon habe ich ehrlich gesagt nicht die geringste Ahnung.

PlayPHP ist momentan der Shooting-Star unter den Programmiersprachen, hat laut letztem IX die höchsten Steigerungsraten in der Anwendung. Eigentlich ist PHP eine Scriptsprache zur Erstellung von Webapplikationen - und genau deshalb momentan auch so gefragt. PHP bietet einen einfachen, an C angelegten Syntax, ab Version 5 eine an JAVA angelehnte Objektorientierung (in V 4 gibt es rudimentäre Unterstützung) und eine ausreichend umfangreiche Funktionsbibliothek - eben mit Fokus auf Webanwendungen (MySQL, Mails senden, Konvertierungen üblicher Codepages, URL Funktionen etc.). PHP bietet mit Unterstützung von GTK auch die Möglichkeit PC Applikationen zu erstellen - ich kann mir aber nicht vorstellen, dass das jemand macht. Durchaus nützlich ist allerdings das CLI Interface mit dem man PHP als OS Scriptsprache verwenden kann. Unter Unix gut wenn man umfangreiches Stringhandling braucht (dann mann man aber auch Perl nehmen), unter Windows gut weil es da im Scriptbereich sonst nur Unsinn gibt.
info

Meine Prognosen

  • Java hat seinen Zenit überschritten, mit dem Vordringen von “Webservices” (und Verwandtschaft) hat das letzte Stündlein für monolithische Applikationen geschlagen (und RMI etc. ist zu “dick”). Allerdings hat JAVA als Plattform meiner Meinung nach Zukunft (Ruby auf JVM, PHP auf JVM).
  • Perl verschwindet mangels Alleinstellungsmerkmal
  • C/C++ bleibt im Systembereich und da wo es auf Geschwindigkeit ankommt die Nummer 1. Interessant wird noch “D” werden, der halboffizielle Nachfolger von C++.
  • PHP wird die Websprache Nummer 1 (nicht zuletzt wegen wichtiger Frameworks wie Drupal, Plone, Wordpress, b2evo etc.)
  • Ruby wird wieder verschwinden weil die Vorteile zu gering sind und keine Lobby hinter der Sprache steht.

Geeky Espressomaschine

July 31, 2007 By: Geek5 Category: Programmieren, Freizeit No Comments →

Essepressokanne mit HerdMeine neue Lieblingsmaschine kocht Espresso. Und zwar ohne den ganzen Hochdruck-Kram. Kostet auch keine x-hundert Euro. Es ist einfach eine klassische Espressokanne mit E-Herd dabei.

Super Idee. Auf die Suche danach ging ich, nachdem ich das hier gelesen hatte. OK, bei hundert Tassen pro Tag hab ich es etwas schwerer. Aber für mich und meinen Laptop - passt schon!

La maccina est formidable!

Sie kann den Kaffee kochen und warmhalten. Was will man mehr? Aussderm sind noch zwei verschiedene Dosierungen möglich. Der Hersteller ist Splendida.

Programmieren in D

July 19, 2007 By: Geek5 Category: Programmieren No Comments →

D programmierenD ist der Nachfolger von C++, kennt noch nicht jeder ist aber voller Potenzial - und damit ein absolutes Geek-Must!

Suchst Du Infos ist “D” ein grausamer Name
Tippe D in Google und freue dich über x Fantastilliarden Ergebnisse! Ist für den Anfang also unbrauchbar. Was immer erstmal geht ist die gute alte Besserwisserplattform wikipedia. Dort liest man…

D is imperative, object-oriented, and metaprogramming
Das heißt D genügt einigen Ansprüchen an formale Sprachen, kennt Objekte und Klassen. Soweit so gut.

Weiter mit “Hello World”
Das gute alte Hallo Welt sieht in D C sehr ähnlich (hehe):

import std.stdio; // writefln() needs this module
int main(char[][] args)
{
writefln("Hello World!");
}

Das alte include Konzept ist also was paketigem gewichen - hat man wohl JAVA zu verdanken - ist ja auch nicht schlecht. Das kaskadierende includen war schon immer bisserl schwierig. printf() heißt jetzt writefln() - na gut.

Jetzt brauchen wir einen D Compiler
Hier beim dgcc Projekt gibt es alles was man braucht. Wenn der Compiler installiert ist kann es auch gleich losgehen. Compilieren mit “gdc test.d”. Raus kommt ein a.out executable (oder a.exe unter windows).
Das kann man starten und bekommt dann:

Hello World!
Error: AssertError Failure test.d(5)

Das liegt daran, weil wir main() nicht mit return abgeschlossen haben. D ist also strenger als C - und hat per default Laufzeit - Assertions. Füge ein return 0; nach dem writefln() ein - dann passts.

Als nächstes bauen wir einen IPv6 Server in D :-)