Konstanten im Zusammenhang mit Namespaces verwenden30 Dez

Von Julian am 30.12.2009. Es wurde noch kein Kommentar hinterlassen. Du kannst einen Kommentar hinterlassen oder trackbacken.

Da will man nach langer Zeit mal wieder etwas mit php hantieren und schon stößt man wieder auf kleine Unsinnigkeiten und Verhalten, die man so zunächst nicht erwarten würde.
Es geht um Konstanten und Namespaces.

Namespaces sind eigentlich eine sehr praktische Sache. Sie strukturieren Projekte und trennen verschiedene Systeme (welcher Art auch immer) voneinander, so dass man beispielsweise verschiedene Frameworks in einem Projekt verwenden kann. In meinen Augen eine wunderbare Sache.

Weiterlesen ..

Frohe Weihnachten25 Dez

Von Julian am 25.12.2009. Es wurde noch kein Kommentar hinterlassen. Du kannst einen Kommentar hinterlassen oder trackbacken.

Ich wünsche allen Lesern frohe und besinnliche Weihnachtstage, bevor der Stress im neuen Jahr wieder losgeht!

WordPress 2.9 released19 Dez

Von Julian am 19.12.2009. Es wurde noch kein Kommentar hinterlassen. Du kannst einen Kommentar hinterlassen oder trackbacken.

Kurze Notiz: WordPress 2.9 wurde mit beeindruckenden neuen Features veröffentlicht. Auch die deutsche Version ließ nicht lange auf sich warten und wurde bereits im Laufe des Tages auf wordpress-deutschland.org published.
Nach offiziellen Angaben wird WordPress 3.0 im Frühjahr 2010 erscheinen und man kann gespannt sein, was sich alles verändern und was hinzukommen wird. Angekündigt ist das Multi-User-Feature für den Kern, sowie ein neues Default-Theme. Allerdings war im heutigen Release-Note die Sprache von Plänen für die Medienverwaltung in WordPress. Ich bin mir sicher, dass sich da noch einiges tun wird.

Viel Spaß beim Bloggen ;)

Entwicklung an neuem Design17 Dez

Von Julian am 17.12.2009. Es wurde ein Kommentar hinterlassen. Du kannst einen Kommentar hinterlassen oder trackbacken.

Neues Design für das GIP Blog

Neues Design für das GIP Blog


Der guten Bekanntschaft zu http://geschossen.com ist es zu verdanken, dass wir in nächster Zeit an der Umsetzung eines neuen Designs für das Blog arbeiten können. In diesem Zusammenhang leite ich einige künftige Veränderungen ein. Die Projektseite GI-Project.de wird informativ über das Projekt gestaltet, so dass sich neue Besucher einen leichteren Überblick über unser Vorhaben machen können. Dies ist auch mit meinen momentanen Arbeiten an einer Dokumentation zum Spielprinzip und zur -technik verbunden. Dank neuen Kenntnissen in LaTeX wird diese in angemesserem Format als bisher in reinen Forenbeiträgen entwickelt werden.
Neben diesen oberflächlichen Änderungen, soll es aber auch inhaltliche Neuerungen geben. LaTeX ist zum Teil schwer verständlich dokumentiert und viele Tricks sind mühselig zu erarbeiten, weshalb ich überlege, den ein oder anderen Artikel darüber zu verfassen. Daneben bin ich dank dem Studium momentan vollkommen im Java-Lernen involviert und beschäftige mich ausgiebig mit paralleler Programmierung, so dass einer Entwicklung einer Server-Anwendung im nächsten halben Jahr nichts mehr im Wege stehen sollte.

Man kann sich also auf viel Neues – besonders über die Weihnachtszeit – freuen!

Mit freundlichen Grüßen,
Julian.

Neuigkeiten24 Okt

Von Julian am 24.10.2009. Es wurde noch kein Kommentar hinterlassen. Du kannst einen Kommentar hinterlassen oder trackbacken.

Hi,

nach so langer Zeit und trotz der Tatsache, dass dies ein junges weBlog ist, fällt es mir schwer wieder einen angemessenen Einstieg in das Verfassen neuer Artikel zu finden.
Inzwischen hat sich im Leben der meisten GI-Project-semi-Mitglieder einiges geändert, so dass zusammen mit der schwachen Koordination und Orientierungslosigkeit des Projektes ein gewisser Stillstand herrscht.
Kristian hat zum Semesterbeginn ein E-Technik-Studium in Stuttgart aufgenommen und ist schwer damit beschäftigt einen Einstieg zu finden und zwischen den diversen Örtlichkeiten zu pendeln. Die Tatsache, dass dabei ein Interessenswechsel weg von der Webentwicklung stattfindet, mal abgesehen, denn ein Studium fordert doch sehr.
Christian wird schwer im Familien- und Arbeitsleben involviert sein. Ich muss zugeben, dass ich leider wenig Kontakt zu ihm halten konnte in letzter Zeit. Auch hier liegen andere Prioritäten vor – ich kann es nachvollziehen.
Ich selbst habe ein Informatikstudium begonnen, das besonders im mathematischen Bereich sehr anspruchsvoll ist. Daneben herrscht ein totales Durcheinander mit Wohung, Pendeln und Eingewöhnung ins Studiumleben.
Alle anderen, bisher nicht namentlich genannten (Alex, Matthias, ..), haben ebenfalls viel zu tun – entweder schulisch oder arbeitstechnisch. Zudem fehlt die Motivation und die Orientierung in GI konstruktiv mitarbeiten zu können.
Was will ich damit ausdrücken?
Zunächst möchte ich verlorenen Stammlesern versichern, dass es uns noch gibt. Das Projekt schläft zwar, aber neue Ideen existieren. Von meiner Seite wird es mit Sicherheit neuen Schwung geben, sobald das neue Dell Notebook erschienen sein wird und ich mobiler sein kann. Dann beginne ich auch mit Überlegungen das Projekt zumindest Serverseitig auf JSP umzustellen.
Konkret kann ich aber versichern: Es gibt bereits erste Code-Fragmente und ich tüftle weiter an einem Grundstein, der andere dazu motivieren soll, mitzuhelfen.
Im Blog wird es vermutlich nicht all zu viel zu lesen geben – vielleicht einen kurzen Testbericht über das Dell Notebook oder diverse Einblicke in meine Entwicklungen. Allerdings habe ich mich momentan noch immer ziemlich in privaten Projekten verfahren und versuche mich aus dieser Schlinge zu befreien, um mich endlich wieder GI widmen zu können. Und wenn ich es alleine durchziehen muss.

Ich hoffe das gab etwas Aufschluss über den aktuellen Stand. Wer Ideen zu verschiedensten Themenbereichen hat, über die es wert wäre, ein Artikel zu schreiben, kann dies gerne als Kommentar hier anregen. Mir fehlt persönlich leider derzeit die Muse mir außergewöhnliche Themen auszudenken. Und das Web hat doch schon genug von “Einstieg in PHP”, “sicheres Loginsystem mit php”, “Upload mit AJAX und php” und den vielen, doch sehr simplen Probleme der einfachen Webentwicklung.

Es grüßt aus Passau,
Julian.

jQueryUI10 Sep

Von krisi am 10.09.2009. Es wurde noch kein Kommentar hinterlassen. Du kannst einen Kommentar hinterlassen oder trackbacken.

Nachdem ich in meinem Artikel jQuery und jQueryUI ja bereits auf das grundlegende Design der Javascriptbibliothek eingegangen bin, möchte ich mich in diesem Artikel mehr auf die jQuery-”GUI”, jQueryUI konzentrieren und einige interessante Anwendungsfälle vorstellen, die zeigen sollen, wie man recht simpel sehr ansprechende und zugleich funktionale Bedienelemente in XHTML-Seiten einbauen kann.

Wie jQuery selbst ist jQueryUI hervorragend dokumentiert und es stehen genügend Tutorials zur Verfügung, um sich innerhalb kürzester Zeit in die Bibliothek einarbeiten zu können. Hier ein paar Links zum Projekt:

Nachdem man sich auf der Downloadseite sein persönliches jQueryUI-Paket zusammengeklickt und heruntergeladen hat, das alle gewünschten Funktionen enthält, entpackt man die darin enthaltene jquery-ui-[versionsnummer].custom.min.js und den ordner mit dem angepassten theme (custom-theme) in sein Projektverzeichnis und verlinkt die Dateien im XHTML-Markup:

<link rel="stylesheet" type="text/css" media="screen" src="style/jqueryui/custom-theme/jquery-ui.custom.css" />
<script type="text/javascript" src="js/jquery/jquery-ui.custom.min.js"></script>

Jetzt kann’s eigentlich auch schon losgehn!

Drag&Drop

Gerade im Umgang mit AJAX und Anwendungsoberflächen, die komplett im Browser laufen sollen, sind “anfassbare” Elemente nicht nur ein Hingucker, sondern auch eine enorme Erleichterung im Umgang mit der Software. Nichts ist intuitiver als ein Haufen an Objekten, die man mit einem Mausklick über die Oberfläche ziehen und ablegen kann. jQueryUI bietet dafür u.a. sogenannte “Draggables” und “Droppables”. Ein Draggable ist ein Element, das sich mit der Maus aufnehmen und verschieben lässt. Ein Droppable ist ein Element, das ein Draggable aufnehmen kann, sodass man es exakt positionieren und eine damit verknüpfte Aktion ausführen kann. Wir könnten diese Draggables und Droppables also zB. verwenden, um eine Menge an Elementen unserer Seite (zB. Bilder, die Dateien repräsentieren) mit jeweils einem bestimmten einzelnen Element unserer Seite zu “Verheiraten” (zB. <div>s, die Ordner repräsentieren). Daraus lassen sich interessante Anwendungen bauen. zB. Datei-Browser, Plantafeln, grafische Prohrammieroberflächen, persönilch anpassbare Menüs (siehe WordPress-Dashboard) usw.

Mit sog. “Sortables” kann man außerdem per Drag&Drop die Reihenfolge von Listenelementen verändern oder auch Elemente von einer Liste in eine andere verschieben. Das kann zB. benutzt werden, um ein Navigationsmenü anzupassen oder Ereignisse, Favoritenlisten, Termine, Widgets usw zu platzieren / sortieren.

Die Umsetzung in Javascript erfolgt wieder auf die von jQuery gewohnt einfache Weise: Wir Suchen zuerst mittels Querystring nach passenden Elementen und wenden dann auf alle Suchergebnisse eine Methode an, die die Elemente in Draggables, Droppables oder Sortables “verwandelt” und übergeben ihr außerdem die Parameter, die Sie auf die Elemente anwenden soll. Also zB. Wo ein Draggable gefangen werden soll (snap), was ein Droppable akzeptieren darf, was nach dem Abwurf auf einem Droppable passieren soll usw.

$(document).ready(function{
    $('div.draggable').draggable({
        snap: 'div.droppable',
        snapMode: 'inner',
        revert: 'invalid'
    });
 
    $('div.droppable').droppable({
        accept: 'div.droppable',
        drop: function{
            ui.droppable.css('background-color','#000000');
        }
    });
});

In der drop Funktion wir in diesem Beispiel nur die Hintergrundfarbe des Draggables geändert. In einer praktischen Anwendung könnte man hier zB über einen AJAX-Request Die neue “Position” des Draggables an einen Server senden.

Das Sortable – Element ist dem Drag&Drop-Verfahren sehr ähnlich. Darum gehe ich hier nicht weiter darauf ein. Ein Blick in die jQueryUI-Dokumentation erklärt die Verwendung sehr anschaulich.

Dialoge

Auch Dialoge lassen sich mit jQueryUI sehr schön gestalten. Folgender Code macht aus dem <div> mit der id ‘Message’ einen jQueryUi – Dialog. dieser lässt sich im Javascript Code jederzeit aktivieren oder verstecken.

$(document).ready(function{
    $('#Message').dialog({
        autoOpen: false
    });
 
    // zum öffnen:
    $('#Message').open();
 
    //zum verstecken:
    $('#Message').close();
});

Mit .open() und .close() lässt sich der Dialog so auch mehrfach verbergen und wieder hervorholen. Ein Dialog lässt sich natürlich auch problemlos in Abhängigkeit vom aufrufenden Kontext mit Inhalten füllen. So kann man beispielsweise ein Dialog-Template ins HTML einbetten, das dann zB durch Klicken auf Seitenelemente und AJAX-Anfragen mit Daten befüllt wird. Auf diese Weise kann man mit wenig Markup und Javascript quasi beliebig viele Detailinformationen bereitstellen. Eingesetzt habe ich dies zB schon bei einer Auftrags-Plantafel mit verschiebbaren Auftragselementen. Erst beim Klick auf einen Auftrag werden über ein AJAX-Request die Detailinformationen dazu vom Server nachgeladen und in einer Dialogbox angezeigt.

Progressbar, Slider, Datepicker

Es macht wirklich Spaß, sich ein bisschen in den Funktionen von jQueryUI umzusehen. mit Slidern und Progressbars lassen sich zB sehr schöne und “greifbare” Schnittstellen zu “analogen” Datenein- und ausgabe verwirklichen. Datepicker sind vollwertige Kalender, die es dem Anwender erleichtern, ein Datum im korrekten Format einzugeben. Für weitere Details zur Anwendung sei wiederholt auf die lobenswert übersichtliche jQueryUI-Dokumentation hingewiesen.

Theming

Sehr schön bei jQueryUI ist auch das Theming umgesetzt. ein zentrales CSS ist für ein einheitliches Design der Benutzeroberflächenelemente zuständig. Besonders hilfreich beim erstellen eigener Themes ist auch der ThemeRoller auf der jQueryUI-Webseite. Mit ihm lässt sich mit wenigen Mausklicks ein komplettes, persönlich angepasstes Gesamtbild der jQueryUI-Elemente erstellen. Ganz ohne tiefergehende CSS-Kenntnisse. Wem selbst das noch zu viel ist, der kann sich eines von vielen vorgefertigten Themes herunterladen.

 

jQueryUI ist also das ideale Werkzeug, um der eigenen Webapplikation mit sehr wenig Aufwand ein professionelles Look & Feel zu verpassen. Ich war selbst überrascht, wie simpel eine praktische und intuitive Bedienoberfläche im Browser funktionieren kann. Mit jQueryUI kommt so richtig Web 2.0 – Atmosphäre in jedes Webprojekt. Vielen Dank an das Team für diese ausgereifte Bibliothek!

Gruß Kristian

Alles ist eine Klasse25 Aug

Von Julian am 25.08.2009. Es wurde noch kein Kommentar hinterlassen. Du kannst einen Kommentar hinterlassen oder trackbacken.

Wer kennt das nicht: Man hat eine wunderbare Benutzerklasse geschrieben. Sie beinhaltet sämtliche Eigenschaften, die ein Benutzer so besitzen könnte innerhalb der Applikation: Name, eMail-Adresse, Passwort, Rechte. Klingt toll – könnte aber besser sein!

Die Faulheit lässt die stets hoch gelobte Objektorientierung wieder einmal völlig unter den Tisch kehren. Denn alles ist eine Klasse, wie ich dank dem phpHacker lernen durfte.
Die meisten dieser Eigenschaften können anstatt als einfache Strings wiederum Objekte von eigenen Klassen sein.

Weiterlesen ..

Umsetzung eines Pluginsystems (III)31 Jul

Von Julian am 31.07.2009. Es wurde noch kein Kommentar hinterlassen. Du kannst einen Kommentar hinterlassen oder trackbacken.

Der letzte – und wohl praxis-intensivste – Artikel der Reihe “Umsetzungsformen eines Pluginsystems” folgt.
Bevor ich aber zu genannter Praxis und Umsetzung komme, revidiere ich einen Moment die vorigen Teile I und II.
In Teil I bin ich ganz theoretischer Natur auf Plugins eingegangen. Welche Möglichkeiten stecken hinter der Umsetzung, wie ich sie darbiete (es gibt mit Sicherheit unzählig weitere), was für Fragen muss man sich stellen, wie kann man die Anwendung vollkommen flexibel machen.
Teil II hat dieses Prinzip schließlich praktisch angerissen. Wie kann ein Plugin strukturiert sein? Was muss ich bei einer eigenen Strukturierung beachten? Es folgten einige Code-Beispiele. Der Grundbaustein für diesen Artikel wurde gelegt durch die Klasse PluginList. Diese beinhaltet drei Methoden, die ich in diesem Teil vollenden möchte. Davon wurde loadPlugin() fertig beschrieben – wenn auch nicht als Code vollständig dargelegt. PluginList::event() wurde in seiner Struktur angerissen – schließlich ist dies die Methode, um die sich alles dreht.

Weiterlesen ..

Loginsystem mit php & javascript26 Jul

Von Julian am 26.07.2009. Es wurden 5 Kommentare hinterlassen. Du kannst einen Kommentar hinterlassen oder trackbacken.

Da ich kürzlich gefragt wurde, wie man ein angemessenes Login-System mit PHP umsetzt, habe ich mich bereit erklärt eine Möglichkeit vorzustellen, wie man dieses angehen kann.

Angriffsstellen

Um an ein Passwort einer Anwendung zu kommen, gibt es verschiedenste Ansätze. Über einen unsicheren FTP-Zugang hat man als PHP-Entwickler logischerweise schon verloren – aber man kann dafür sorgen, dass zumindest über die “Oberfläche”, dem Web, Angriffe möglichst schwer werden.

Weiterlesen ..

GlobalIndustry-Project Blog öffnet seine Pforten16 Jul

Von Julian am 16.07.2009. Es wurde ein Kommentar hinterlassen. Du kannst einen Kommentar hinterlassen oder trackbacken.

Mit dem heutigen Tag startet nun offiziell der Global Industry Project [GIP] Blog. Da stellt sich sofort die Frage: Was ist das Global Industry Project und um was soll es hier in Zukunft gehen?

Hinter dem Global Industry Project steht primär die Idee einer Wirtschaftssimulation. Diese entstand bereits vor 2007 mit der Vorstellung eines einfachen Browsergames, wie es unzählige gibt. Was ich heute aber ziemlich sicher sagen kann ist, dass es kaum nennenswerte wirtschaftsbasierende Browsergames gibt. Wenn sich ein Browsergame in dieses Terrain wagt, wird man oft mit wenig Möglichkeiten und sehr einfachen Spielzielen abgespeist. Hinter Global Industry steckt aber die Idee einer möglichst realen und undurchschaubaren Wirtschaftssimulation. Zu dieser Zielsetzung kommt hinzu, dass sich Global Industry technisch stark von anderen Browsergames unterscheiden wird.
Auf Grund der Komplexität des Systems, wird das eigentliche Spiel nicht wie gewöhnliche Browsergames primär über die PHP-Basierte Webserverapplikation ablaufen, sondern unabhängig von Clientzugriffen in einem Backend ablaufen. Was bedeutet das genau? Global Industry wird kontinuierlich Daten neuberechnen müssen – beinahe vergleichbar mit einem “richtigen” Spiel auf dem Betriebssystem. Aus diesem Grund wird Global Industry in zwei logische Systeme aufgeteilt: Das Backend, das die Spieldaten laufend neu berechnet und sog. Frontends, die die Daten lediglich grafisch aufbereiten und dem Benutzer eine Schnittstelle zum Spiel bieten.
Wer jetzt noch gedanklich folgen konnte, hat vielleicht bemerkt, dass hinter Global Industry sozusagen zwei beinahe unabhängige Systeme stecken. Man könnte daher soweit gehen und das Frontend völlig verändern, ohne das Backend modifizieren zu müssen. Es spielt also keinerlei Rolle, wie das Frontend funktioniert – was uns von einem gewöhnlichen Browsergame absondert. Denn prinzipiell wäre es möglich das Backend auch über eine Frontend-Software anzusprechen, die grafisch viel höher entwickelt ist als ein Browsergame. Diese Möglichkeit besteht, ist aber kein primäres (oder gar sekundäres) Ziel unserer Entwicklung.

Den technischen Aspekt mal beiseite gelegt, möchte ich noch einige Worte zum Spiel ansich los werden. Global Industry kann man sich wie ein Gründungs- / Unternehmensspiel vorstellen: Man beginnt in einer beliebigen Branche und produziert mit Hilfe von Angestellten und Maschinen verschiedene Produkte, die man vermarkten muss. Hinzu kommen finanzielle und wirtschaftliche Strategien: Steuererklärungen, Bilanzen und Verträge spielen eine wichtige Rolle – sollen aber genausogut mit wenigen Mausklicks und einem Automanager verwaltbar sein. Global Industry soll Möglichkeiten zu detailreichen Kalibrierungen geben, gleichzeitig aber auch Spielern mit weniger Freizeit die Möglichkeit geben, automatisch spielen zu lassen.
Welche Facetten das Spiel aufweisen wird, kristallisiert sich sicher erst bei laufendem Betrieb heraus, allerdings soll dieser Blog unter anderem unsere laufenden Entwicklungen und Probleme dokumentieren und anderen Programmierern Einblicke in unser Projekt ermöglichen.

Ist der Blog damit eine reine Dokumentation? Nein, definitiv nicht. Global Industry bietet uns lediglich das umfangreiche Themengebiet, das ich und andere Autoren in diesem Blog abdecken möchten. Wir sind nicht auf eine Programmiersprache, nicht auf das Programmieren und nicht auf das Web alleine beschränkt – es werden sich mit der Zeit mit Sicherheit auch Themen um Projektmanagement & Software, AJAX, Algorithmen, Server und Architekturen einfinden, was eine Beschreibung oder einen aussagekräftigen Namen für den Blog beinahe unmöglich macht. Da Global Industry in all diese Bereiche vordringen wird, ist dies der Global Industry Project Blog.

Viel Spaß!

Julian

nächste Seite »

© 2009 GlobalIndustry-Project Blog