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)