3. Januar 2012 | DynamicFiles up and running

Nach nun knapp 3 Monaten nach dem Re-Launch meiner Seite und diverser Server Re-konfigurationen bin ich sehr zufrieden mit der Stabilität, die mein CMS zu Tage bringt.
Interessant ist vor allem, dass die ganzen bösen Bot-Crawler automatisch vom normalen HTTP-Webserver-Scanner zum Apache-Tomcat-Scanner schalten, wenn man den Port 8080 offen hat, auch wenn man auf Port 80 Apache davorgeschalten hat. Zu dumm nur, dass dieses CMS eine Eigenentwicklung auf Basis von Java, der JSP-Technologie (also aus dem Bereich JavaEE) und als Datenbank die (weniger bekannte ?) Objektdatenbank db4o einsetze, somit bin ich auch vor SQL-Injection geschützt (wo kein SQL, da auch kein SQLi ;P).

Ein wirklich tolles Feature meines CMS ist, dass ich endlich richtige Suchmaschinen-freundliche URLs nutzen und einstellen kann, ohne andauernd meine .htaccess anzupassen (und auch ohne in diverse Escaping-Fehler zu machen).

Da mein Design nur ganz knapp dem BITV-Standard entsprechen müsste, einen offiziellen Test habe ich aber nicht machen lassen, da ich als Privatperson solch einen Test nicht machen muss (ich möchte es dennoch in meinem Portfolio wissen), bin ich momentan in der Planung eines anderen optischen Aufbaus, damit hier nicht immer grau auf grau steht.

Wirklich interessant ist aber auch, dass ich bei Google vor allem wegen Vampires Dawn gelistet bin, "nur" weil ich eine geniale Spieleunterstützung hoste.

Damit hier nicht nur Textfluten kommen, bedanke ich mich nochmals für den Besuch.

Euer Danny Althoff

Alle Programme sind natürlich ohne jegliche Gewähr, für Schäden übernehme ich keine Haftung oder Verantwortung und auch keinen Support!
(Ich beantworte aber dennoch die ein oder andere Frage)

Newsarchiv

Spiele-Ecke

Alles, was mit diversen Spielen zu tun hat, ist hier zu finden.

Vampires Dawn 2

Ich persönlich habe niemals VD geschweige denn VD2 gespielt, aber ich habe einem Freund von mir dabei zugesehen und nachdem er seine Hilfe-Weltkarte nicht gefunden hat, habe ICH mich mal durch das Netz geschlagen und diese Map im Datenarchiv des Internets gefunden und möchte allen anderen Zocker Helfen diese Karte wieder zu nutzen.

  • Vampires Dawn 2 Karte
    Diese Weltkarte ist nicht von mir, sondern nur bei mir gehostet. Ich bin also quasi ein Mirror. Da ich aber dennoch eine Menge Zugriffe verzeichnen kann (gut sichtbar in PIWIK und bei Google Webmaster-Tools), möchte ich diese Karte weiterhin hosten und hoffe, dass ich damit die ein oder andere Zocker-Seele bei diesem doch so langsam überall bekanntem Spiel helfen kann.

Minecraft-PlugIns

Arbeiten gehen ist schön und gut, hilft aber nicht immer gegen Langeweile, daher gibt es die bunte Welt der Spiele. Die Community ist voll von tollen und coolen PlugIns, doch manches Mal sind es die kleinen Dinge, die einem fehlen. Da ich auch mal schauen wollte, wie das denn so funktioniert, habe ich ein paar PlugIns für meinen kleinen MC-Server gebastelt. Hier findet ihr ein paar Binaries (der Sourcecode ist im JAR enthalten):

OXID eShop Module

Durch meine Tätigkeit als Anwendungsentwickler, unter anderem für das eShopping-System OXID eShop, kommen ein paar kleinere Module zustande, die ich gerne mit anderen Teilen möchte.

  • Preisalarm deaktivieren
    Es ist schrecklich, wenn man ein Feature in einem System hat, aber nirgends einen kleinen (dokumentierten) Schalter findet, der das Feature deaktiviert. Dieses PlugIn deaktiviert die Funktions "Preisalarm" ohne, dass die Templates angefasst werden müssten.

    Kompatibel mit Version OXID eShop CE 4.5.x (sollte auch mit der PE 4.5.x kompatibel sein, ist allerdings nicht getestet)

jQuery PlugIns

Dieses Javascript-Framework ist einfach klasse und durch die einfachen CSS-Selektoren kommen auch Nicht-Programmierer schnell drauf, wie jQ funktioniert. Manchmal jedoch fehlen diverse Funktionalitäten, sodass diese noch entwickelt werden müssen. Hier ein paar von meinen, die vielleicht hilfreich sein können.

  • UnSafe-Load
    Ich hab es schmerzhaft mitbekommen: die $.load()-Funktion schneidet, nachdem etwas geladen wurde, jegliche SCRIPT-Tags raus, hier die entschärfte Version mit originalem Fallback. Basierend auf Version 1.4
  • PositioningFix
    Wenn man mit dem Internet Explorer 7 zu tun hat, kämpft man immer wieder mit dem Layouting. Ganz populäres Beispiel ist hierbei die absolute Positionierung in Verbindung mit Floating; möchte man ein Element, das irgendwo im DOM sitzt, quasi als Tooltip irgendwo drüber legen, tritt ein Problem auf, dass manche Elemente sich scheinbar über unser absolut-positioniertes Element legen, obwohl diese nichtmals dazu gestyled sind. Genau dafür existiert dieses jQuery-Modul, was es dennoch ermöglicht! Das "Problem" ist die Position des Elements im DOM. Es genügt das Element ans Ende des DOMs zu schieben. Problematisch wird dies allerdings, wenn CSS-Styles nicht mehr greifen, dies ist jedoch kein Problem mit diesem Modul!
    Lösung für dieses Problem: man baut sich etwas aus den Eltern-Elementen bishin zur Wurzel. Einziger Haken: IDs werden nicht dupliziert!
    Kompatibel mit jQuery ab Version 1.7.x
    		$("tooltipTrigger").on("mouseover",function(){
    			$("#specificTooltip").show();
    			// important!!! -> has to be AFTER having the element visible (due to jQuery not being able to detect height/width of hidden elements)
    			$("#specificTooltip").doPositionFix();
    		});
    		$("tooltipTrigger").on("mouseout",function(){
    			$("#specificTooltip").hide();
    			// undo the positioning fix to avoid strange display-behavior on re-placing
    			$("#specificTooltip").undoPositionFix();
    		});
    						

Java-Tools/Bibliotheken

Meine Haupt-Programmiersprache ist momentan Java. Ansich ist das kein Problem, aber manchmal heißt es eben doch "mach es lieber selber". Hier ein paar öffentliche Dinge, die für die Programmierung nützlich sein könnten

  • EasyBlowfish
    Wer Daten verschlüsseln will, muss in Java den Algorithmus nicht neu entwickeln, sondern kann auf die Java-Implementierung zurückgreifen. Das Problem jedoch: man muss mit Bytes arbeiten. Wer die dafür nötige Wrapperklasse nicht bauen will, der kann meine Version nutzen. Ich habe sowohl für Strings als auch für InputStreams ein paar Helfer gebaut. Viel Spaß damit! Hinweis: es handelt sich hierbei um eine symmetrische Verschlüsselung!
    		String cleartext = "some string";
    		String someUltraSecretPassword = "this should be a secret password";
    		
    		// Handling String-objects
    		String blowfished = EasyBlowfish.encrypt(cleartext, someUltraSecretPassword);
    		String decoded = EasyBlowfish.decrypt(blowfished, someUltraSecretPassword);
    		
    		// Handling Streams, useful because it still is a InputStream!
    		InputStream blowfishedStream = EasyBlowfish.encrypt(SOMESTREAM, someUltraSecretPassword);
    		InputStream decodedStream = EasyBlowfish.decrypt(blowfishedStream, someUltraSecretPassword);
    		
    		/*
    			method-signatures:
    				public static InputStream encrypt( InputStream toEncrypt, String key ) throws Exception
    				public static InputStream decrypt( InputStream toDecrypt, String key ) throws Exception
    				
    				public static String encrypt( String toEncrypt, String key ) throws Exception // Returns a BASE64-Coded String
    				public static String decrypt( String toDecrypt, String key ) throws Exception // Requires a BASE64-Coded String
    			
    			
    		*/
    						
  • Pretty-Types
    Wer kennt das nicht: ich verlasse mich auf einen Wert und am Ende bekomme ich die berühmten NullPointExceptions. Wer nicht immer wieder einen Try-Catch-Block schreiben möchte, der kann sich mit meinen kleinen funktionalen Methoden bedienen (inkl. definierbarem Default-Wert).
    		// boolean values
    		boolean someTrueValue_1 = PrettyTypes.prettyBool(1);
    		boolean someFalseValue_1 = PrettyTypes.prettyBool(null); // this is nice when handling with attributes
    		boolean aNiceBooleanForRequestHandling = PrettyTypes.prettyBool( request.getParameter("boolean1") );
    		boolean aNiceBooleanForRequestHandling_2 = PrettyTypes.prettyBool( request.getAttribute("boolean2") );
    		
    		boolean someFalseValue_2 = PrettyTypes.prettyBool("false");
    		boolean someTrueValue_2 = PrettyTypes.prettyBool("true");
    		
    		boolean someFalseValue_3 = PrettyTypes.prettyBool(new Integer(0));
    		boolean someTrueValue_3 = PrettyTypes.prettyBool(new Integer(7));
    		
    		// same with Integer via prettyInt
    		// same with String via prettyString, but when having NULL only "" will be returned
    							
  • Make IOS
    ein kleiner Helfer zum Wandeln von InputStreams zu OutputStreams und anders herum.
    		/*
    			method-signatures:
    				public static void writeToOS( InputStream is, OutputStream os )
    				public static ByteArrayOutputStream makeBAOS( InputStream is )
    				public static InputStream makeIS( ByteArrayOutputStream os )
    		*/
    						
  • WebHelper
    Java + Internet ? Das schreit ja nach JSP, und genau dafür gibts das hier: die WebHelper.
  • SafeClose
    Du willst etwas schließen, hast aber Angst, weil eine NullPointerException einschlagen könnte? Dann nutz SafeClose für deine Handler-Variablen, und du bist sicher vor diesen pösen NPEs ;)
    		Sample (before):
    			public void someMethod(FileWriter fileToClose){
    				try{
    					fileToClose.write(...);
    				} finally{
    					if( fileToClose != null ){
    						try{
    							fileToClose.close();
    						catch(Exception e){
    							// drop this exception, fault of design ;)
    						}
    					}
    				}
    			}
    			
    		Sample (after):
    			public void someMethod(FileWriter fileToClose){
    				try{
    					fileToClose.write(...);
    				} finally{
    					SafeClose.safeClose(fileToClose);
    				}
    			}
    			
    		
    		/*
    			method-signatures:
    				public static void safeClose( ByteArrayInputStream bais )
    				public static void safeClose( ByteArrayOutputStream baos )
    				public static void safeClose( Connection conn )
    				public static void safeClose( InputStream is )
    				public static void safeClose( PreparedStatement ps )
    				public static void safeClose( ResultSet rs )
    				public static void safeClose( FileWriter file )
    		*/
    							

Wallpapers

Ein Programmier ist nichts anderes als ein Künstler oder Architekt, und auch ich habe eine kreative Ader. Hier sind ein paar meiner Werke, teilweise mit dem Programm Terragen erstellt und mit Photoshop oder anderen Grafikbearbeitungs-Tools überarbeitet oder aber es handelt sich um eine Photographie, welche teilweise nachbearbeitet sind.

Legacy

Für alle, die meine alten Programme nutzen wollen: sie existieren noch, aber sie werden nicht mehr weiterentwickelt und auch nicht mehr Supported!

  • LameEnc
    WAV-zu-MP3 Convertierer, basierend auf LAME
  • TIS - Time is Away v1.3
    einstellbares Countdown-Programm zum Abspielen von Programmen oder Sounds zur Erinnerung (Erstellungsjahr 2006)
  • WinSupport-Change
    mit diesem Programm lassen sich die Support-Texte im System-Dialog einstellen, geeignet für Windows 95/98 und Windows XP

Impressum

Dies ist eine private Homepages von Danny Althoff.

Kontaktadresse

  • Danny Althoff
  • Kölner Straße 188
  • 47805 Krefeld
  • Deutschland

info@dynamicfiles.de

 

Diese Website verwendet PIWIK als Web-Analyse-System. Sie können sich hier jederzeit abmelden.
Dieser Vorgang wird nach dem Löschen der Cookies dieser Domain rückgängig gemacht. Das Anti-Track-Cookie ist nicht PIWIK-spezifisch.
Um die Privatsphere zu schützen, wird die IP anonymisiert, indem die letzte Zahl abgeschnitten wird.

 

Eingesetzte Technologien (Backend)

Eingesetzte Technologien (Frontend)

Diese Website verwendet PIWIK als Web-Analyse-System. Sie können sich hier jederzeit abmelden.
Dieser Vorgang wird nach dem Löschen der Cookies dieser Domain rückgängig gemacht. Das Anti-Track-Cookie ist nicht PIWIK-spezifisch.
Um die Privatsphere zu schützen, wird die IP anonymisiert, indem die letzte Zahl abgeschnitten wird.