Chat Prüfung

Es gibt nun ein magisches Stück Software in Karopapier, das noch nicht ganz im Einsatz ist, aber sicherlich bald gebraucht wird. Es versucht, aus dem uralten Chat Verlauf zu erraten, was der User damals vermutlich eingetippt hat.

Ein Ketzer in der Karogemeinde warf mir zwar verweilen in der Vergangenheit vor, aber wie soll sich die blühende Zukunft entwickeln, wenn einem die Altlasten das Leben schwer machen? Genau… KETZER!!!

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

Spiele reparieren

Karopapier hat jetzt einen Prozess, der alte Spiele durchschaut und korrigiert. Zum Beispiel so ein paar verkorkste Dinger, die bei der Erstellung kaputt gingen oder durch Fehler oder aussteigende Mohikaner heute noch in einen undefinierten Zustand kommen und dann hier und da mal Probleme machen.

Diese werden jetzt automatisiert korrigiert – zumindest sollte es das. Wenn jemand noch Spiele hat, die merkwürdig auftauchen, BITTE MELDEN – dann kann ich die Prüfungen und Korrekturen entsprechend erweitern

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

Chat Archäologie

Hiermit möchte ich das Projekt der Datierung aller Einträge im Chat ausrufen.

Der Chat in seiner heutigen Form basiert immer noch auf einer faulen Entscheidung meinerseits aus dem Jahre x nach Karopapier Empfängnis. Nämlich: „Ach, schreib ich doch einfach alles mit >> zeilenweise hinten an eine Datei, dann kann ich die letzten Zeilen per system und tail holen.“
War schnell implementiert und hat seinen Zweck erfüllt.

Heute weiß man:

Das kannste schon so machen, aber dann isses halt Kacke.

Die Einträge haben dadurch keine zeitliche Zuordnung, lediglich die Uhrzeit (das ganze Datum wäre in der Darstellung ja auch zu lang). Und diesen —-Tagestrenner—- haben wir dem unermüdlichen Einsatz der ersten Chatter (RealMurphy, 21.01.2005) zu verdanken; irgendwann hat das mein System selbst eingefügt, aber bis dahin war das Handarbeit.

So, aber anhand der Trenner, etwas Algorithmus, Hirnschmalz und Zeit müsste es ja möglich sein, die meisten der Zeilen einem genauen Zeitstempel zuzuordnen. (Sogar unter Berücksichtigung von falsch laufenden Uhren, Zeitumstellungen u.ä.)

So hab ich also vor, die immer noch geführte Datei nu endlich doch in die Datenbank zu importieren und dann daran rum zu schrauben, um die Datumse herauszufinden, zu denen ein Eintrag entstanden sein müsste.

Und auch hier denke ich, kann gerne der ein oder andere interessierte Nostalgiker helfen, aus dem Kontext heraus etwas zu datieren, falls es automatisch nicht geht.

Ziel? Nu ja, dass man in Zukunft eben mal besser weiß, wann was gesagt wurde und dass man im Chat halt auch mal zum „April 2013“ springen kann – warum auch immer man das tun wollen sollte. Heute geht das ja so natürlich nicht…

Gucken wir also mal, wie es voran schreitet – den Code dazu, der das Importieren und Datieren vornimmt wird sich dann auch unter https://github.com/karopapier/Karopapier finden lassen

PS: Und dass die neuen Einträge heute gleich einen ordentlichen Zeitstempel bekommen, das wird sich bestimmt auch noch hinter einer Tür verstecken

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

Karopapier goes Open Source

Karopapier goes Open Source

Lang wird ja schon immer mal wieder gebettelt, dass man doch bei Karopapier mitprogrammieren dürfte…

Ich habe bisher immer abgeblockt, weil ich keinem den alten Sourcecode zumuten will.

Und eigentlich wird sich daran auch nicht viel ändern, dafür ist der alte Code zu dreckig, zu schlecht, zu unsicher und auch zu peinlich.

Viel ordentlich wäre ja, das ganze richtig neu zu machen und ggf Ideen oder Schnipsel aus dem alten Code zu verwenden, sofern das geht.

Meine Versuche, Karopapier in den letzten Jahren immer mal wieder neu zu schreiben oder umzuschreiben sind ja alle ziemlich im Sande verlaufen. Erste Versuche, es mit dem PHP Framework Symfony 1.4 neu zu schreiben haben uns eine einigermaßen verwendbare API und ein paar Seiten (karopapier.de/dran, karopapier.de/blocker, karopapier.de/user/settings) gebracht, aber so richtig gut war das auch nicht.

Im letzten Jahr hab ich immer mal wieder einen weiteren Anlauf gestartet, auf Basis des zukunftsträchtigeren und ständig weiterentwickelten PHP Frameworks Symfony2 (bzw. 3, 4, …
http://symfony.com/doc/current/contributing/community/releases.html#schedule) neu zu starten.

Und das läuft ja jetzt auch tatsächlich Parallel. Der größte Teil der Anfragen an Karopapier.de im Browser wird von der uralten Codebasis beantwortet, insbesondere auch das Ausführen der Züge (move.php).
Ein Teil der Anfragen und besonders die Aufrufe der API (was z.B. 2.karopapier.de oder ullis App macht) beantwortet symfony 1.4 (veraltet) und nur ein paar wenige ganz neue Seiten bzw. Services im Hintergrund (z.B. das erstellen der Spiel-Thumbnails) läuft auf Basis des neuen Codes.

ABER: Das lässt sich erweitern und ändern. Ziel ist, Schritt für Schritt alten Code durch neuen zu ersetzen und immer mehr Anfragen mit neuem, ordentlichem, sicherem und getestetem Code zu erledigen.

Daher habe ich meinen neuen Symfony Code nun unter https://github.com/karopapier/Karopapier zur Verfügung gestellt und werde weiterhin darin arbeiten, um Karopapier jeden Tag ein bisschen besser zu machen.

Und da darf dann auch gerne mitgearbeitet werden, sofern man sich den Anforderungen gewachsen sieht, denn ich will keine Quick&Dirty Hacks mehr drin haben, sondern ein ordentliches Projekt, das sich an gängigen „Best Practices“ (http://symfony.com/doc/current/best_practices/index.html) orientiert.

Durch die Verknüpfung der ganzen Code-Teile ist es heute schon möglich, im Uralt-Code einen Service der neuen Code-Basis aufzurufen. D.h. ganz knallhart: Wenn der „MoveService“ fertig ist, kann man diesen theoretisch in allen Stellen (auch im alten Code) aufrufen und Züge nur noch von dieser Stelle aus machen.
Einfacher wäre aber kurzfristig z.B. erst mal ein ChatService (an dem ich gerade arbeite), um die 27 verschiedenen Chats zu vereinheitlichen.

Wer sich jetzt also bemüßigt fühlt, tatsächlich beitragen zu wollen, vielleicht auch ein bisschen Symfony zu lernen und somit Karo und mir zu helfen, der möge dies tun.
Sinnvoll wäre sicherlich, zu koordinieren, wer was wie machen will. Nicht dass was entsteht, was nicht ins Bild passt oder so.
Und vermutlich bietet es sich auch an, Fragen der Zusammenarbeit irgendwie gemeinsam zu klären.
Schauen wir einfach mal, wie es sich entwickelt – und wenn ich weiter alleine wurschdel, auch OK – aber schöner wäre ja vielleicht ein kleines Team, das sich vielleicht auch mal per Online-Sprach-Dienst abspricht oder sogar zu einem Hackathon trifft, wie es ja auch schon vorgeschlagen wurde.

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

Cider – oder wie man Didi dazu bringt, Features zu implementieren…

Sly, dieser nervig-eifrige Quälgeist, hat vor einiger Zeit ne Wette mit mir abgeschlossen: Ne Palette Cider, wenn ich es schaffe, im Juni „eigene Karten fahren“ zu implementieren.

Ich hab die Wette angenommen (hatte ja nix zu verlieren, eigentlich…) und unter der Haube gewurschdelt – und auch dabei gleich mal ein paar andere Sachen aufgeräumt oder korrigiert.

Bis zum 30.06.2016, 23:59:59 CEST hab ich es leider nicht geschafft – aber da sind jetzt ein paar Sachen in der Warteschleife…

Es wird sich also was tun!

Aber dabei auch mal so ein leiser Wink mit dem Wald: Solche Wetten könnten wir öfters machen, ich mag Cider!!

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

Änderungen unter der Haube

Wenn’s interessiert:

Ich stelle gerade mehr oder weniger alles, was ich bei Karo anfasse, auf Symfony2 bzw. 3 um.

Damit das funktioniert, hab ich den von-hinten-durch-die-Brust-ins-Legacy-Auge-Ansatz gewählt, den @derrabus in seinem Vortrag „Modernisieren mit Symfony“ skiziert. Dabei wird – ziemlich dreckig, aber funktionierend – erst einmal ein komplettes Symfony Framework gestartet, welches versucht, die Anfrage zu beantworten. Wenn es aber mit dem Request (z.B. showmap.php) nix anfangen kann, beendet es sich und danach kommt good old PHP und included das file – wie früher auch.

Nur dass bei Karo ja dann auch noch ein Symfony1.4 dazwischen ist, das ja auch noch etwas rumkrabbelt…

Alles in allem sehr verbogen, aber ermöglicht jetzt recht schnell, alten Code in einen Symfony-Service auszulagern und diesen dann in Zukunft im ganz neuen Teil bzw auch noch im alten aufzurufen.

So zum Beispiel jetzt geschehen mit dem Cookie/Login/Logout/Identify-Handling.

Der Code war grottig, ist jetzt reduziert und wohnt nicht mehr verstreut in diversen verschachtelten ifs und files, sondern einem LegacyAuthenticationService und LegacyCookieService.

Und da war es dann auch ganz einfach, „schnell mal kurz“ nen neuen API-Controller zu schreiben, der auf /api/login hört, den User prüft und ggf ein ordentliches Cookie zurückgibt. So getan und betriebsbereit, Details im KaroApiBrowser

Es tut sich was, jedenfalls!

Veröffentlicht unter TechStuff | Hinterlasse einen Kommentar

Karopapier hat mein Leben verändert

Seit dem Jahr 1999, in dem ich offiziell nach dem Studium in das Berufsleben eingestiegen bin, hatte ich nie einen echten Job als „Web-Entwickler“. Ich habe mich mit viel Zeug herumgeschlagen, aber nach einer gewissen Zeit bei meiner Ausbildungsfirma besteht mein hauptsächlicher Tagesjob der letzten nun fast 13 Jahre hauptsächlich aus Visual Basic for Applications (d.h. Excel/Access Macros) und sonstigem Zeug in diesem Umfeld. Und alles was mit PHP, HMTL und JavaScript zu tun hat, mach ich eigentlich nur nebenher – so als Hobby, aus Leidenschaft.

Daher „bastle“ ich seit vielen Jahren also eigentlich im Web nur rum – und Karopapier ist daher in fast allen bereichen eigentlich nur eine Sammlung vieler halbwegs funktionierender Prototypen; was man ja leider an vielen Stellen auch immer noch merkt.

Vor ein paar Jahren hab ich angefangen, mich mit einem Kumpel zusammen als kleine Webschmiede „ein bisschen“ selbständig zu machen, was aber nur so nebenher lief – erfolgreich, aber zeitlich begrenzt.

So, und nun stehe ich kurz davor, mich allein komplett selbständig zu machen. Mit Kündigen und so. Und mit „diesem Web-Zeug“, das ich nur dadurch gelernt hab, dass ich jede aktuelle Hipster-Web-Sau, die gerade durch’s Developer-Dorf getrieben wird, irgendwie in Karopapier einbauen wollte, um es auszuprobieren. Und dabei geht es zum Glück nicht um die Erstellung von Homepages für die Bäckerei und den Kindergarten (wie gut ich als Designer bin, sieht man ja), sondern idealerweise fette Web-Anwendungen mit ordentlichen Datenbanken und ner Menge an Usern.

Was heißt das? Was will uns Didi sagen?

Nun, ich glaube, es sind zwei Dinge, oder gar drei:

  • Ich bin gerade dabei, meinen Alltag umzubauen, hab gerade zum Glück nen ordentlichen Auftrag und hab daher wenig Zeit, an der Karo herumzuschrauben
  • Wenn ich an der Karo herumschraube, dann weil es etwas mit dem Projekt zu tun hat, an dem ich arbeite (z.B. daher auch der Umbau von KaroPAPA bzw. TURTED)
  • Ich bin froh, dass mich die Community über die letzten Jahre immer wieder motiviert hat, der Bastelei zu folgen

Was damit aber auch klar wird: Es mag für viele von Euch vielleicht „ein Leben außerhalb von Karopapier“ geben, aber für mich ist es mehr als nur ein kleines Bastelprojekt. Es ist eine Spielwiese, die mir heute mehr ermöglicht als ich jemals ursprünglich gedacht hätte.

Kurz:

Nicht böse sein, wenn sich gerade bei Karopapier wenig tut – ich habe durchaus noch einiges vor und auch gute Ideen, wie man es endlich mal umbauen und vereinheitlichen könnte – werde das aber erst mal in Angriff nehmen, wenn ich gerade etwas „Zeit zum Üben“ habe – oder es sich mit meinem anderen Projekt begründen lässt.

Hochachtungsvoll

Didi

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

Projekt GROG – Get rid of globals

Karopapier ist alt.
Sehr alt.
Heute mehr als 13,5 Jahre.

Manche Teile der Karo sind auch heute noch „von damals“. So ist zum Beispiel so mancher Teil des Forums oder des Menüs inspiriert (oder geklaut) von Code, den ich für die Webseite meines damaligen Counter-Strike-Clans www.ehg-clan.de geschrieben habe.

Wenn ich den Code von heute anschaue, gruselt es mich.

Das ist aber auch ein gutes Zeichen, dann man könnte daraus schließen, dass ich in den letzten Jahren was gelernt habe.
Dummerweise hab ich es eben nie ein-/umgesetzt und so sind überall in der Karo Dinge verteilt, die man im Laufe des letzten Dutzends an Jahren vielleicht mal so gemacht hat, heute aber ein echtes No-Go sind.

Und diese Dinge schießen mir gerade immer mal wieder ins Knie, wenn ich was neues entwickeln will oder einfach mal ein „Update“ auf dem Server machen will.

Kurzum: Ich muss Altlasten entfernen

Und allen voran ist da die Option „register globals“ aus den Urzeiten von PHP.
Und das (sowie ne ganze Latte an Sicherheitslücken) versuche ich jetzt mal in dem alten Code zu stopfen.
Weil nur dann kann ich überhaupt Karo auf neueren Versionen von PHP laufen lassen (neuer Server? Neue Frameworks).

Und daher hab ich jetzt für mich das Projekt „GROG – Get rid of globals“ gestartet und bin dabei, den ganzen alten Matsch aufzuräumen.

Dazu hab ich eine Liste der Dateien angefertigt, die ich mal überarbeiten sollte – und werde immer schön eintragen, wenn ich was erledigt hab. Und das wird der Fortschritt(hoffentlich)sbalken im Menü zeigen…

Das wird zwar ein Weilchen dauern, aber ich werd sicher dabei auch den ein oder anderen alten Müll rauswerfen und dann hoffentlich die Karo für die nächsten 13,5 Jahre fit machen können!

Veröffentlicht unter TechStuff | Hinterlasse einen Kommentar

nocode – Kartenliste ohne mapcode

Aufgrund eines Anflugs spontaner Hackigkeit und Anfrage eines MUSKEL-Tiers hat die Karo-API ein neues flag:

Unter
http://www.karopapier.de/api/map/list.json?nocode=true

gibt’s jetzt ne Liste aller Karten-Infos allerdings ohne den mapcode. Gedacht, um den Traffic zu reduzieren, wenn man mal alle Karten wissen will.

Wer’s braucht darf’s nutzen 😀

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

Hab heute beim Rumspielen festgestellt, dass die API in den GameDetails ja um die Positionen (x, y, xv und yv) doffe “ drumrum macht und somit aus den Zahlen einen Text – is ja aber völlig quatsch, und so hab ich das gerade mal behoben. Jetzt kommen also wirklich auch Zahlen über den JSON-Äther

Publiziert am von Didi | Hinterlasse einen Kommentar