25 Jun 2009 @ 9:19 AM 

Vorwort

Der meiste Schaden, den der Computer potentiell zur Folge haben könnte, hängt weniger davon ab, was der Computer tatsächlich machen kann oder nicht kann, als vielmehr von den Eigenschaften, die das Publikum dem Computer zuschreibt. Der Nichtfachmann hat überhaupt keine andere Wahl, als dem Computer die Eigenschaften zuzuordnen, die durch die von der Presse verstärkte Propaganda der Computergemeinschaft zu ihm dringen.

Joseph Weizenbaum, 1972[1]

Jeder hat das Recht, seine Meinung in Wort, Schrift und Bild frei zu äußern und zu verbreiten und sich aus allgemein zugänglichen Quellen ungehindert zu unterrichten. Die Pressefreiheit und die Freiheit der Berichterstattung durch Rundfunk und Film werden gewährleistet. Eine Zensur findet nicht statt.

Grundgesetz Artikel 5

In Deutschland wird zensiert?

Laut dem am 18.06.2009 beschlossenem Gesetzentwurf[2] nur Seiten mit kinderpornografischem Inhalt. Soweit auch nicht schlimm.

Warum aber beschweren sich dann so viele darüber?

Stoppt die Zensur!

Quelle http://www.rettet-das-internet.de/zensursula.htm

Vielleicht ja deswegen:

Unsere gewählten und für uns dadurch “in unserem Sinne” entscheidenden Menschen, haben also teilweise nur wenig oder gar keine Ahnung von den ganzen “Computersachen”. Wo informiert man sich da? Natürlich bei der Presse oder im TV, sagte ja auch schon Weizenbaum, aber bei der Killerspieldebatte ging ja schon genug schief.

Bei den Interviews merkt man den Politikern die stehts gleichen Phrasen mit absurden Versprechern an.

Jederzeit … Massenmarkt … massives Interesse

Wir wissen, dass bei den vielen Kunden, die es gibt, rund 80 Prozent die ganz normalen User des Internets sind. Und jeder, der jetzt zuhört, kann eigentlich sich selber fragen, wen kenne ich, der Sperren im Internet aktiv umgehen kann. Die müssen schon deutlich versierter sein. Das sind die 20 Prozent. Die sind zum Teil schwer Pädokriminelle. Die bewegen sich in ganz anderen Foren. Die sind versierte Internetnutzer, natürlich auch geschult im Laufe der Jahre in diesem widerwärtigen Geschäft”,

DNS-Sperre, das ist was technisches

300.000 – 400.000 Versuche, die man jeden Tag

Quelle: http://www.radioeins.de/programm/sendungen/eine_stunde_zeit/kopf_der_woche/ursula_von_der_leyen.html

Okay da wirds wohl Zeit zur Selbstanzeige

Sehr geehrte Frau Leyen,

ich bin ein versierter Internetbenutzer, im Gegensatz zu Ihnen und ihren Kollegen, mit Ausnahme vllt. von Jörg Tauss, browse ich seit dem Jahr 2000 fast täglich im Internet. Ich habe während der gesamten letzten 9 Jahren noch nie eine Kinderpornoseite (jederzeit Massenmarkt klar …. ) gesehen noch einen Link(das ist etwas wo man draufklickt und dann ‘ne andere Seite aufgeht … bei ihrem Bildungsstand erklär ich das mal lieber) auf ebensolche gesehen. Und ich habe auch Computerspiele gespielt. Sogar E- Mails, Foren und Chats habe ich benutzt. Ich gehöre zu den 40 Millionen Internetbenutzern in Deutschland. Wenn also jeder dieser Benutzer täglich einmal ins Internet geht und eine Seite aufruft, dann sind ihre 400.000 Versuche quasi 1% der Anfragen. Ich wette mit ihnen das nichtmal 1% der Internetbenutzer in Deutschland Kinderporno-Sucher sind. Ich würde sogar mit ihnen wetten, weil ich weiss ich gewinne, dass der Anteile der Bundesbürger die nach Kinderpornos sucht, geringer als der Anteil im deutschen Bundestag ist.

P.S: Jörg Tauss ist ein aktueller Bundestagsabgeordneter und steht unter Kinderporno- Verdacht und wechselt aktuell zur Piratenpartei.

Aber zurück zum Thema, unsere Politiker wollen also unser Recht frei durch das Netz zu surfen beschneiden. Wir haben das Recht aber noch, und  wir wissen dass es in China[3] , Australien[4] , Afgahnistan[5] schwere Fälle von Zensur gibt und minder schwer die Schweiz, Dänemark, Finnland, Schweden und Österrreich das Internet zensieren. (Fehlt ein Land ? Schreibt nen Kommentar!)

Und wo Zensur anfängt, hört sie nicht auf. Ich habe echt Angst davor, dass solche Menschen( bessere Worte kann ich für inkompetemte Politiker nicht finden) durch Vorurteile und schlechte Beratung Entscheidungen treffen, die meine Freiheit weiter beschneiden. Unabhängig sind eure Medien auch nicht.  Bevor eine neue “Aktion wider den undeutschen Geist“(1933) stattfindet, bitte ich jeden einzelnen Politiker, sich mit den Themen intensiver zu befassen, über die ihr entscheidet, oder einfach mal nichts sagen, wenn man nichts zu sagen hat.

Ich wohne in Leipzig und bei uns gibt es die ComputerSpielSchule, gibt es an der VHS Kurse zum Thema Internet. Zwei wunderbare Institutionen die es Eltern und Grosseltern erlaubt, sich mit den “Comuptersachen” unter Anleitung auseinanderzusetzen, Gibt es sowas bei euch nicht oder habt ihr da einfach keinen Bock drauf und versteckt euch lieber hinter lächerlichen und schlecht recherchierten “Fakten”?

Politik muss gefallen und mit dem Web 2.0 gibt es eine Generation Web 2.0 vergesst uns nicht … we watch you

Fazit

und die gaaaanz grosse Bitte: wechsel endlich die Partei bevor wir dich weitere 4 Jahre ertragen müssen.
denn da gehörst du hin

Links

http://nurtext.zeit.de/1972/03/Albtraum-Computer?page=5
http://dip21.bundestag.de/dip21/btd/16/128/1612850.pdf

http://www.heise.de/newsticker/Google-muss-Teile-seines-Suchdienstes-in-China-sperren-Update–/meldung/140780
http://www.heise.de/newsticker/Jeder-australische-Internetzugang-soll-gefiltert-werden–/meldung/117422
http://www.sarsura-syrien.de/islamkritik-20-jahre-haft_1862.html

Posted By: tkdmatze
Last Edit: 25 Jun 2009 @ 10:21 AM

EmailPermalinkComments (2)
Tags
Categories: MyWeb, privat, web 2.0
 16 Jun 2009 @ 7:19 PM 

Vorwort

Ich habe mich die letzte Zeit sehr intensiv mit dem Framework Grails[1] beschäftigt. Und ich muss zugeben ich bin beeindruckt. Dieser Artikel soll eininge der Vor- und auch natürlich auch die Nachteile des “Railsway” nach meiner Sichtweise dokumentieren. Viele der Kommentare lassen sich auf Ruby on Rails, CakePHP, Symfony und andere Frameworks anwenden.

Buzzword-Bingo

Für jeden der das Spiel kennt:

Rapid Application Development(RAD), Model Driven Development(MDD), Best Practises, Spring, The Yahoo! User Interface Library (YUI), Hibernate, Don’t repeat yourself (DRY),Agile Development, Database Migaration, Code Generation, SLF4J, DOM4J, Groovy, Metaclass, Sitemesh, Model View Controller (MVC), Apache Ant, JUnit, Jakarta Commons, HSQLDB, OSCache, Apache ORO,Apache Ivy, Rapid Prototyping,Keep it simple and straightforward (KISS), Single Point of Truth(SPOT),Convention over configuration(COC), Domain Specific Languages (DSL), Scaffolding, Dynamic Finders, Create -Retríeve- Update- Delete(CRUD)

So spätestens jetzt sollte einer Bingo schreien.

Intro Railsway

Um was gehts beim Railsway? Um eins : Geschwindigkeit!
Alles fing an mit einem Video[2].
Ein Webblog in 16 Minuten.
REVOLUTION!
Was schaffen normale Softwarefirmen in 16 Minuten?

  • ein Angebot schreiben? vielleicht
  • ein Pflichtenheft schreiben? nö
  • eine einzige Zeile Code? ganz sicher nicht!

Was ist der Railsway?

Zum einen geht es darum, dem Entwickler möglichst viele Entscheidungen abzunehmen.  Man benutzt einfach diese Sachen, die Standard sind.
Hat jemand von euch schon mal so ein Meeting erlebt?

Persistenz-Schicht(DAO)

  • JDO
  • JPA
  • Hibernate
  • Selbstgeschriebenes SQL (dann noch die Diskussion um Prepared Statements )
  • Dynamisches Selbstgeschriebenes SQL (dann noch die Diskussion um Prepared Statements )
  • SQL-Injection Handling

Views

  • Java Server Pages(JSP)
  • Java Server Pages (JSP)+ Java Standard Template Library (JSTL)
  • Java Server Faces (JSF) und dann die Distribution (MyFaves/IceFaces etc .. )
  • XSS Handling

Code

  • Java 1.4.2
  • Java 1.5
  • Java 1.6
  • Alles Andere

Abhängigkeiten

  • Spring
  • Maven
  • Ivy
  • Guice
  • Eigenproduktion

Sonstige Entscheidungen

  • put the most annoying part of each meeting here

Beim Railsway gibt es solche Meetings nicht mehr. Per Default ist es Hibernate+ Java Server Pages (JSP)+ Java Standard Template Library (JSTL) + Ivy + Java (1.5+) oder Groovy
Okay starten wir … Eclipse ? Natürlich!

Vorher : Create new Dynamic Web Project  …  bla bla bla  … MyProject    … bla bla bla … Jars kopieren …  Buildpath … pom.xml…. oh 16 minuten schon überschritten?
Railsway : grails create.app MyProject … Import existing Project

Model – View – Controller

Dieses Prinzip ist sicher jedem Entwickler bekannt. Bei Grails wird es strikt gefordert und bedankt sich dafür mit viel generiertem Code, der Überstunden erspart.

(M)Modelle

In den meissten Applikation entspricht eine Klasse einer Zeile irgendeiner Tabelle der Datenbank.
Warum also nicht die Tabelle so benennen wie die Klasse?
Diese Frage stellt sich der Railsway einfach nicht, sondern macht es.
Bei Grails entspricht auch jede Klasse einem Problem, einer eigenen Domäne.
Als Beispiel soll fogendes dienen:

class JsecUser {
String username
String passwordHash
String email
static constraints = {
username(nullable: false, blank: false)
email (email:true)
}
def setPassword(word){
passwordHash = new Sha1Hash(word).toHex()
}
}

(M2) Dynamische Mehoden

Mit Grails ist folgendes möglich :

JsecUser user = new JsecUser()
user.setUsername("admin")
user.setPassword("gayheim")
user.password = 'gayheim99'
user.save()

Die Setter in Zeile 2 und 3 haben wir nie geschrieben, sie wurden für uns generiert. Jeder der Eclipse benutzt weiss, dass man Getter und Setter auch in Eclipse generieren kann. Allerdings die die entstehende Klasse inklusive Outline-Ansicht nicht wirklich unterscheidbar nach “wo passiert das Standard-Zeug” und “wo passiert wirklich etwas”, hier hilft Grails die Übersicht zu behalten.

In Zeile 4 sieht es für Java-Entwickler so aus, als würde man direkt auf eine Eigenschaft zugreifen, doch weit gefehlt! Solche Zuweisungen gehen immer über Getter und Setter.

Die grösste Überraschung sollte aber die Zeile 5 darstellen. Alles was dazu benötigt wird, folgt nun.

(C)Persistenz in 0.5 Sekunden

Egal für welches Framework man sich entschieden hat, man konfiguriert das ganze erstmal. Ganz schlecht sind hier die selbstgeschriebenen Lösungen.
Bei Grails kann man mit

def scaffold=true

die normale CRUD-Funktionalität erreichen. Und viel mehr … ein Zauberwort ist hier Dynamic Finders

def user = JsecUser.findByUsername("admin")

ist ein gültiger Ausdruck, obwohl wir die Methode nie geschrieben haben. Alles was benötigt wird, ist eine Klasse, welche wie die Domainklasse + das Suffix Controller heisst und im Ordner “controller” abgelegt wird. Nebenbei hat man durch den Einsatz von Hibernate einen L2-Cache und SQL-Injection-Schutz OnBoard. Standard…….

(V) wunderliche Views

In Grails gibt es eine einfache Regel

/$controller/$action/$param

So würde der Aufruf

/laender/view/deutschland

folgendes bewirken:

  • gehe zum Controller LaenderController
  • führe die Methode “view” mit dem Argument “deutschland”  aus

Für die normalen Aktionen (CRUD ;) ) werden die Views “list”, “create” , “show” und “edit” erzeugt, welche man an seine Bedürfnisse anpassen kann.

Wo ist das Aber?

Grails unterstützt und beschleunigt den kompletten Entwicklungsprozess.
Der Start geht sehr schnell und reibungslos.
Der Railsway erzeugt sehr schnell funktionierende Webanwendungen.

Aber

Das Ganze hat auch seinen Preis :

  • Die Modelle
    • generieren standardmässig alles
    • brauchen im Gegensatz zu handgeschriebenen Klassen mehr Speicher
  • Die Controller
    • generieren auch viel Overhead
    • haben einige tricky Bugs
    • die generierten SQL-Statements sind teilweise suboptimal
    • die generierten SQL-Statements benutzen selten die DBMS-spezifischen Optimierungen
  • Die Views
    • durchlaufen mit Sitemesh und JSP zwei Kompilierungsprozesse

Fazit

  • Mit Grails kann man sehr schnell an ordentliche Ergebnisse kommen.
  • Mit Grails konzentriert man sich auf die wesentlichen Elemente der Entwicklung
  • Mit Grails hält man sich an Standards
  • Mit Grails muss man einen gewissen Overhead einrechnen
  • High-Performance und Optimierung kostet einen Grossteil der Zeit, die man spart

Links

http://www.grails.org/

http://www.youtube.com/watch?v=Gzj723LkRJY

http://adhockery.blogspot.com/2009/06/querying-by-association-redux.html

http://adhockery.blogspot.com/2009/04/when-is-pirate-not-pirate-when-its.html

Posted By: tkdmatze
Last Edit: 25 Jun 2009 @ 10:21 AM

EmailPermalinkComments (1)
Tags
Categories: grails, MyWeb, web 2.0
 07 Jun 2009 @ 10:25 PM 

Motivation

Entscheidungen zu fällen ist eigentlich ganz leicht, die Schwierigkeit besteht immer darin, die richtige Entscheidung zu fällen. Eine Formel, immer die richtige Entscheidung zu treffen kann keiner aufstellen, man kann lediglich die Chance erhöhen, die richtige Entscheidung zu fällen. Als Softwarearchitekt oder Entwickler steht man sehr oft vor Entscheidungen, meisst geht es um die Entscheidung, eine standardisierte oder ein selbstgeschriebene Lösung zu wählen, um ein Problem zu lösen.

Hier sind 6 kleine Schritte, nach denen man viel eher in der Lage ist, eine Entscheidung zu treffen und somit die Chance auf die richtige Entscheidung steigt.

1. Analyse

Jegliche Entscheidung besteht aus einer Wahl zwischen mehreren Möglichkeiten. Wichtig ist hier alle Wahlmöglichkeiten so sehr zu analysieren, dass man für jeden Parameter der Möglichkeiten eine eindeutige  Vergleichsmöglichkeit hat. Bei IT- Projekten sind typische Parameter:

  • Kosten in €
  • Zeitaufwand (aka Kosten in MannTagen)
    • Für die Implementierung
    • Für die Einarbeitung in die fremde API
  • Performance
  • Wartbarkeit
  • Wiederverwendbarkeit
  • Robustheit

2.Akzeptanz

Nun haben wir eine gute Übersicht über die Alternativen. Allerdings sind wir Menschen. Und gerade in der IT beeinflusst eine Entscheidung meisst mehrere Menschen. Jetzt bewerten wir den sogenannten “Kuschel-Faktor”

  • Wie zufrieden bin ich mit jeder Alternative?
  • Wie zufrieden ist das Team mit jeder Alternative?

Es mag witzig erscheinen, aber wie in der Natur lassen sich Entscheider in 2 Kategorien einteilen.

Es gibt die Jäger und es gibt die  Beute.

Bei der Entscheidungsfindung handelt die Beute immer nach dem gleichen Prinzip: Sie hält an altbewährtem fest. Sie fühlt sich sicher in ihrer aktuellen Umgebung und wagt nur geringes Risiko.

Der Jäger hingegen ist offen für neues, akzeptiert Risiken zur Verbesserung und Kostenersparnis.

Die Erkenntnis, zumindestens in der IT, ist allerdings, dass obwohl die eben genannten Definitionen einen anderen Schluss zulassen, das Gesetz der Natur immer noch gilt :

Jäger frisst Beute

Hat man allerdings ein Team aus Beutetieren, wäre es alles andere als die richtige Entscheidung, deren Kuschelfaktor zu ignorieren und revolutinäres zu wagen. Sie würden mit Entscheidungen, mit denen sie nicht zufrieden sind leben müssen,  unzufrieden sein und weniger produktiv. Hat man allerdings alles richtig gemacht und Guy Kawasakys Rat[1]

Hire infected people

befolgt, sind sich immer alle über den Kuschel-Faktor einer Entscheidung einig.

Ein typisches Beispiel dafür ist Java Server Faces, die einen vergöttern es, die anderen verteufeln es. Hier ist es wichtig, dass das gesamte Team hinter der Entscheidung Pro oder Contra steht. Andere Beispiele sind Google oder Microsoft, die polarisieren. Der Pol, an dem das Team steht, ist der Richtige.

3.Die Risiken

Jede Entscheidung trägt die unweigerliche Folge mit sich, die Falsche sein zu können. Das ist auch der Grund, warum so viele Menschen dazu tendieren, Entscheidungen anderen zu überlassen. Macht man sich allerdings die Risiken jeder Möglichkeit bewusst, dann muss man sie nicht fürchten, sondern einkalkulieren.

Die Typischen Kriterien der IT

  • Zeit (In- Time)
  • Qualität (In- Quality)
  • Kosten (In- Budget)

4.Die Vorteile

Hier kommt meisst derjenige ins Spiel, der eine Möglichkeit vorgestellt oder ins Rennen geschickt hat, natürlich muss man seine hohe Meinung respektieren, analysieren und bewerten. Jedes Mitglied des Teams muss erkannt haben, dass ein Möglicher Vorteil eines der 3 eben angesprochenen Kriterien verbessert.

5.Die Freiheit

Jede Entscheidung die man trifft hat Auswirkungen und wenn man eine Entscheidungskette hat, kann es sein, dass Entscheidungen die am Anfang getroffen werden, Möglichkeiten weiter hinten in der Entscheidungskette ausschliessen.

Wenn wir uns jetzt für A entscheiden, können wie nie wieder x-en

Um in der IT zu bleiben, wer sich für .NET entscheidet, wird nie Hibernate benutzen können.

6.Verteidigbarkeit

Wer bis hierhin gelesen und durchgeführt hat, hat eine sehr gute Übersicht über die Fakten der Entscheidung, wie die Entscheidung angenommen wird, welche Vor- und Nachteile sie hat, und welche Wege sie versperrt. Jetzt gibt es nur noch eine Hürde: die Entscheidung mitteilen.

Man muss jetzt schauen, wem man die Entscheiung mitteilen muss. In der IT hat man meisst eine gewisse Kontrollschicht. Dieser kann man entweder Diagramme zeigen oder einfach nur zusichern, dass diese oder jene Entscheiung die Richtige ist. Leider haben vor allem die Vorgesetzten eine eigene Meinung zu jeder Entscheidung und bewerten einen der 5 vorher aufgeführten Punkte besonders hoch. Die Optimisten sehen die Vorteile, die Pessimisten sehen die Nachteile, Freiheit und Akzeptanz sind für andere wichtig. Und die Controller, die Analysten werden mit besonderm Auge auf die Tabelle aus dem Punkt 1 schauen. Die Entscheidung muss jenem, dem die mitgeteilt wird zufriedenstellen und möglichst viele gute Bewertungen aus den ersten 5 Punkten haben.

Entschluss

Geht man diese 6 Schritte  durch, hat man die Möglichkeiten vergleichbar gemacht, kennt man alle Vor- und Nachteile, kennt man die Wege die es einem verbaut und  kennt (in etwa)die Reaktion “nach oben” und “nach unten” auf diese Entscheidung. Das ist eine Formel, die, wie angesprochen nicht immer die richtige Entscheidung hervorbringt, aber die Chance auf ebenejene erhöht.

Links

The Art of the Start

Posted By: tkdmatze
Last Edit: 25 Jun 2009 @ 10:22 AM

EmailPermalinkComments (0)
Tags
Categories: MyWeb, privat

 Last 50 Posts
 Back
Change Theme...
  • Users » 2
  • Posts/Pages » 30
  • Comments » 6
Change Theme...
  • VoidVoid « Default
  • LifeLife
  • EarthEarth
  • WindWind
  • WaterWater
  • FireFire
  • LightLight