iPad nun doch nützlich!

War eigentlich meine Idee, doch nach kurzem gegoogle musste ich feststellen, zumindest die Idee hatten schon andere:

Bildursprung ist leider nimmer festzustellen (wahrscheinlich dailyburn.com )

Keine Kommentare

RESTful Redirect über onchange Javascript Event

Für unser “Projekt Systementwicklung” basteln wir grade ein Web Frontend für die weTravel iPad App. In diesem Zusammenhang wollten wir über eine Select-Box zwischen verschiedenen, hochgeladenen Reports wechseln.

Eigentlich keine große Sache:

<select onchange="javascript:window.location=this.value">
  <option value="url" >anderer Beitrag</option>
</select>

Aber: mit diesem Skript wird in REST nur der letzte Parameter (also zB beitrag/3/kommentar/8… ) geändert, also die 8 einfach durch die url ersetzt und somit ist es nicht möglich nur den Beitrag (in meinem Beispiel) zu ändern.

Die Lösung ist denkbar simpel: wir schreiben die komplette URL und konstruieren uns den kompletten Pfad neu. Über einen Slash vor this.value im kleinen Javascript können wir nun die komplette URL löschen:

onchange="javascript:window.location= '/' + this.value"

und die url im value Parameter entsprechend nachzukonstruieren, bei uns in Rails hätte es so aussehen:

<option value=<%= "beitrag/" + beitrag.id.to_s + "/kommentar" %>

Wie immer, wenn mans einmal gesehen hat ist es eine total simple Geschichte, der Trick der uns gefehlt hatte war der Slash im onchange um die komplette URL zu löschen :-)

Keine Kommentare

Little School Helper – Zeugnis schreiben leicht gemacht

Sodale,

nach ca 1 Jahr Freizeitentwicklung, vielen Pausen, einem kompletten Neustart aufgrund fehlender Planung und der Weitsicht im Datenbankdesign, möchte ich nun den “Little School Helper” vorstellen.

Die Idee entstand durch meine Mutter: Zuzuschauen wie die heutigen Grundschullehrer Zeugnisse schreiben macht jeden Informatiker traurig. Das werden Wordtemplates auf USB Sticks ausgetauscht um sich im schlimmsten Fall gegenseitig das Geschriebene zu überschreiben oder im Klassensaal zu vergessen.

Es musste also ein System her was zentralisiert die Zeugnisse speichert und jedem, auch den gleichzeitigen Zugriff auf ein Zeugnis, von Zuhause aus ermöglicht. Da kam die Idee: ich will das Zeugnisschreiben für Grundschullehrer vereinfachen! Das Ziel war also gesteckt, nix großes, doch das Vorgenommene gut zu machen war der Anspruch an mich selbst.

Nach einer Version mit der Grundfunktionalität war ich dann 2 Tage bei einem guten Freund (Link) im Büro um das Design auch entsprechend ansprechend zu bauen. Unschönerweise muss ich mich da die Tage noch mit den ganzen CSS Hacks auseinandersetzen, da der IE zT einfach nicht im Kontext bleibt und ganz andere Parents / Childs anspricht als mein Freund der Firefox… steht also noch auf der TODO Liste.

Inzwischen wurde der Little School Helper einem kleineren Kreis an Lehrern und Direktoren vorgestellt und noch einige Wünsche / Änderungen realisiert und stelle Ihn nun hier vor um vieleicht noch mehr Feedback von Fachfremden, aber technisch versierterem Publikum zu bekommen.

Die Featureliste ist inzwischen auch um einiges angewachsen, über Statistiken, automatisierte Schuljahreswechsel, eine komplette Rechteverwaltung der Kollegen, bis hin zu PDF Generierung von echten Zeugnis Templates (bisher nur für RLP). Eine Doku ist noch nicht fertig, deshalb ists am einfachsten sich das ganze mal selber anzuschauen:

Eine Testversion gibts hier, mit Benutzername: admin und Passwort: test kann man sich anmelden und die komplette Funktionalität testen.

Übrigens: ich suche zur Zeit eine Grundschule die sich den Little School Helper mal genauer anschauen, und vieleicht sogar im produktiven Zeugnisschreiben benutzen/testen möchte. Wer also selbst als lehrendes Organ tätig ist oder jemanden kennt für den es von Interesse sein könnte: meldet euch bitte unter littleschoolhelper@drailing.net

Wie immer, über Feedback egal welcher Form freue ich mich sehr :-)

Grüße,
Christian

1 Kommentar

Umlautefix für das Adminpanel

So einfach kanns sein, wenn man weiß wies geht :-)

Um mit meinem Adminpanel auch Umlaute schreiben zu können muss nur eine kleine Zeile (in Zeile 307) eingefügt werden:

306 - $input = $input."?>";
307 - $input = utf8_encode($input);
308 - fwrite($datei, $input);

Bitte die neueste Version ajaxchat_adminpanel_1.0 downloaden.

Keine Kommentare

Adminpanel für blueimp AjaxChat

Hiho,

auf blueimp.net gibts einen Open Source Ajax Chat der auf jedem Webserver mit php und MySql ganz einfach installiert werden kann. Das ist ne super Sache um sich schnell mit mehreren Menschen abzustimmen ohne ICQ Nummern oder Emailadressen austauschen zu müssen. Bei mir kommt er zB für ein Browserspiel zum Einsatz.

Leider ist die Verwaltung noch etwas unkonfortabel, alle Benutzer müssen über eine “users.php” Datei in ein Array eingepflegt werden. (je nach Konfiguration kann man sich auch ohne Passwort einloggen)

Dazu habe ich mir was kleines einfallen lassen um die Benutzer über eine Datenbanktabelle zu pflegen und ein kleines funktionales Adminpanel gebastelt :-)

Kurze Featureliste:
* Adminaccount:
– Benutzer anlegen (auch Moderator)
– Benutzer löschen
– Passwort für Benutzer zurücksetzen
* Useraccount
– eigenes Passwort ändern

Die Idee dahinter ist ganz simpel:
Wir legen alle Benutzer in einer Datenbank ab und schreiben die Datei (users.php), die Benutzer verwaltet bei Änderungen neu.

Um diese Administration zu ermöglichen brauchen wir Schreibrechte auf CHAT_ROOT/lib/data/users.php und müssen eine Benutzertabelle in der Datenbank anlegen:

Im INSERT Statement kann ein beliebiger Adminbenutzer angelegt werden, hier als Standard als Benutzername und Passwort “admin”.

CREATE TABLE `ajax_chat_user` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `username` text,
  `password` text,
  `role` text,
  PRIMARY KEY (`id`)
);
 
INSERT INTO `ajax_chat_user` VALUES ('1', 'admin', 'admin', 'AJAX_CHAT_ADMIN');

In der Datei “admin.php” muss dann noch die entsprechende Datenbankverbindung an mehreren Stellen eingetragen werden.

$db = new mysqli( 'localhost', 'db-user-name', 'db-pw', 'db-name' );

Am einfachsten über suchen / ersetzen:
“db-user-name” -> eigener Datenbankbenutzer
“db-pw” -> zugehöriges Datenbankpasswort
“db-name” -> Datenbankname

Falls der Adminbenutzer einen anderen Namen als “admin” bekommen hat, müsst ihr in der Datei auch noch an 2 Stellen den entsprechend gewählten Namen eintragen (Zeile 289 und 325), einmal für das schreiben der users.php, und einmal um das evtl versehentliche Löschen zu verhindern.

Die admin.php dannach einfach ins Rootverzeichnis des Chats legen, und über www.url-to-chat.net/admin.php einloggen.

Bekannte Fehler:
- Beim Schreiben der Datei werden Umlaute nicht richtig dargestellt, daher können zur Zeit keine Benutzer/Passwörter mit Umlauten verwendet werden.

Kommentiert ist so gut wie nix, dafür sollte der Code recht sprechend und leicht zu verstehen sein.
Zum Download gehts hier:
UPDATE: bitte die gefixte Version hier laden

Die neueste Version gibts hier: ajaxchat_adminpanel_1.0

Über Feedback jeglicher Art würde ich mich natürlich freuen :-)

Grüße,
Christian

Nachtrag:
ACHTUNG!
Falls ihr die kleine Erweiterung benutzen wollt: Es wird die Datei in der die Benutzer zuvor verwaltet wurden gnadenlöse überschrieben!
Bedeutet: Wenn zuvor Benutzer in der Datei gepflegt wurden, sollte man sich ein Backup machen und diese dann über die Oberfläche in die Datenbank eintragen.

9 Kommentare

Windows 7 mit mehreren Kernen booten

Alsooo, das Ende von allem war: ich musste mein System neu aufsetzen, da Treiberreste meiner alten Grafikkarte das Installieren des Catalyst verhinderten. Zuvor wollte allerdings noch Jörg (alias jooaaarg) einen blick drauf werfen. Von ihm stammt auch der nachfolgende Tip, danke dafür!

Von Haus aus startet Windows mit nur einem Kern, um das zu ändern begeben wir uns in die “msconfig” (Ausführen (Windows-Taste + R) -> “msconfig” tippen).
Unter dem Reiter “Start” die “Erweiterten Optionen…” öffnen und schon sind wir am Ziel. Nun nur noch ein Häkchen für die Prozessoranzahl setzen und je nach verfügbaren Kernen in der Combobox die entsprechende Anzahl auswählen und beim nächsten Start einen subjektiven Geschwindigkeitsrausch erleben :-)

Grüße,
Christian

3 Kommentare

Windows Konsole aus Ordner heraus öffnen

Guten Abend,

auch wenn die Windows Konsole lange nicht so mächtig ist wie die der Konkurrenz, ists doch auch ab und an unablässlich auf diese zurückzugreiffen. Da per default die Console immer auf “C:\Users\Benutzer” geöffnet wird, ists auch immer ein etwas längeres Unterfangen zum gewünschten Pfad zu gelangen. Mit einem kleinen Eintrag in der Registry kann man aber ganz einfach das Ordner-Kontextmenü (Rechtsklick) erweitern:

1. Windows Registry öffnen über “Ausführen – regedit”

2. zu folgendem Ordner navigieren “HKEY_LOCAL_MASCHINE – Software – Classes – Folder – shell”

3. Hier einen neuen Schlüssel anlegen, der Name dabei ist egal, ich habs einfach mal “kontext cmd” genannt. Der Standardwert hier (Spalte “Daten”), repräsentiert dann auch den Namen der am Ende im Menü erscheint (bei mir “Console”):

4. wie oben im Screenshot zu sehen, wird auch hier ein neuer Schlüssel angelegt, Name: “command” – hier muss folgendes eingetragen werden:

cmd.exe /k pushd %1

Die Änderungen sind sofort wirksam und beim Öffnen des Kontextmenüs eines Ordner, erscheint der Oben definierte Ausdruck zum öffnen der Konsole:

Alternativ könnte man es sich natürlich auch einfacher machen und über “Shift – Rechtklick” die Option “Eingabeaufforderung hier öffnen” benutzen – aber wer will das schon :-)

Grüße,
Christian

3 Kommentare

mächtiges Windows 7 Feature!

Guten Abend!

ich bin grade sehr begeistert, nicht wegen iPad oder Apple (oder zerstörten iPads) sondern wegen Windows 7 – hier hab ich ein weiteres mächtiges Feature entdeckt:

Jeder kennt ja soche netten Sachen wie “Windows-Taste + D” -> Minimiert alles und zeigt Desktop an, solange dann auch nur auf dem Desktop gearbeitet wird, wird ein erneutes Betätigen der Tastenkombination alle Fenster wieder an seinen vorherigen Platz setzen.

Ein neues abgeleitetes Feature: Fenster schütteln!

Wer kennt es nicht, den Monitor voller nützlicher Sachen und der Desktop unendliche Fensterschichten entfernt – dabei will man doch nur gschwind ne Datei auf den Desktop verschieben oder was entpacken. Grade bei mehreren Monitoren ein immer wiederkehrendes Ärgerniss. Doch damit ist jetzt Schluss! Einfach ein Fenster packen… und schütteln! Schon wird alles bis auf das Fenster was man festhält minimiert, und bei erneutem Schütteln natürlich wieder alles an seinen vor-schüttel-Platz gesetzt.

Ich bin begeistert!
Heil Windows!

2 Kommentare

Ruby on Rails / Sqlite3 unter Windows (Netbeans)

Nach unendlichen Stunden und noch mehr Fehlermeldungen hats endlich getan! Da evtl noch andere vor ähnlichem Problem stehen fasse ich hier kurz zusammen:

Der erste Versuch startete mit dem integrierten JRuby 1.4 – das ist aber ganz großer Mist, übel verbuggt und nicht fähig c-Skripte auszuführen, was aber für manche Gems wichtig ist… Also Ruby erstmal einrichten:

Da es für mich den einfachsten Weg darstellte habe ich mich bei Ruby für den One-Click Installer entschieden ( Link ) – der meint es nett mit uns und setzt uns auch gleich die Systemvariabeln.

Um die sqlite3-ruby gem zu installieren brauchts aber noch Sqlite3 ( Link ). Davon die dlls und die exe (2 Archive!) in einen Ordner entpacken und den Pfad dazu in die Path Systemvariable eintragen.

Dannach einfach in der Konsole (cmd) die restliche Installation durchführen:
gem update --system
gem install sqlite3-ruby
gem install rails

Mein Netbeans 6.8 hat über das Autodetect im Anlegen eines neuen Ruby Projekts (Ruby Plattform – Manage) alles richtig erkannt und mit der oben eingerichteten Version von Sqlite3 funktionieren auch endlich die rake Comands!

Und für alle die dann gleich durchstarten wollen hier noch der Link zu den RailsGuides :-)

Hoffe ich konnte dem Ein oder Anderen ein bisschen helfen!

Keine Kommentare

Kurz Zusammengefasst und wieder da!

Hallo Zusammen,

leider wars etwas still in der letzten Zeit, die Klausuren sind aber inzwischen vorbei, die Semesterferien ebenso und so fängt der harte Studentenalltag wieder an.
Es gab viel zu tun und mit dem neuen Semester möchte ich mit einer kurzen Zusammenfassung auch die neue “Blog-Saison” einläuten :-)

Neues Semester:
nach gnadenloser Überbelegung und einem etwas chaotischen Semesterstart, habe ich inzwischen doch noch alle Kurse bekommen. Insgesammt wirds wohl ein verdammt dickes Semester:
- das erste Mal wird C# angeboten, sehr gemütliche Sprache, leider ist die Microsoftkonforme Notation mindestens genauso gewöhnungsbedürftig wie der Umstieg von Eclipse auf Visual Studio. Bei letzterm steht uns immerhin die 2010er Version als Beta zur Verfügung. Trotz eines neuen und sehr mächtigen Refactoring Tools fehlt mir immenroch der Komfort von Eclipse oder Netbeans (ganz stupide: automatisches Schliessen der Klammerungen fehlt komplett…) und es ist wieder ein ganz neues Gefühl ohne Ontime Debugger zu entwickeln.
- in Datenbankanwendungsentwicklung wird eine bestehende Applikation in PHP mit MySql-DB nach Java mit eigenem Datenbankserver portiert. Da wird wohl das Spannenste die tieferen Einblicke in Hibernate sein. Zudem steh ich einfach auf Java / EJB im JSP Umfeld :-)
- von Data Warehouse und OLAP verspreche ich mir einfach einen Crashkurs im gesamten DWH Umfeld.
- die Vorlesung Projekt Systementwicklung ist im Grunde gar keine Vorlesung. Wir spielen Softwarehausm, haben Rollen verteilt und entwickeln eine Reiseverwaltung fürs iPad. Da ich ja im Grunde dem Apple Hype nichts abgewinnen kann und ich mir hin und wieder eine abfällig Bemerkung nicht verkneiffen möchte war ich mir nicht sicher ob ich da richtig bin. Das “Kickoff Meeting” hat mich aber dann doch überzeugt, der Dozent bringt den nötigen Witz mit und zum Glück gibts dazu auch ein Webfrontend mit Rails zu entwickeln!!

Zusammengefasst: ich freu mich drauf!

Arbeit in Semesterferien, diesmal: ein Preisbildungstool:
nach der ersten Woche Gewälze von lebenden Konzepten und der Aufgabe Testfälle daraus zu entwickeln (brrrrr) durfte ich endlich auch an den Code. Aber die Realität ist hart und ernüchternd. Nach Advanced Programming Techniques im lezten Semester dacht ich, ich bin gut vorbereitet und es kann kommen was will – aber am ende kam ein Richclient auf Basis von nem selbstgeschriebenen russischen Framework und Java 4… Nach einer kleinen Einarbeitungszeit konnte ich dann aber auch kleinere Aufgaben übernehmen und mit viel Schweiss, dem Ignorieren von allem Gelernten und einer komplett zerstörten Ansicht über die schöne, heile Javawelt wurde am Ende auch so gut wie alles gemeistert.

Resümiert habe ich viel neues, altes gelernt und trotz dem gnadenlosen Dampfhammer der Praxis hats immer viel Spaß gemacht!

Das wars im Großen und Ganzen, und in diesem Sinne,
wünsche euch allen nen guten Start ins Semester und viel Erfolg!

Grüße,
Christian

4 Kommentare