Mir ist ausversehen etwas lustiges beim Programmieren passiert: Beim Einlesen und Auswerten von über hundert HTML- Seiten für mein neustes Projekt ist mir die folgende Debusausgabe passiert. HTML Kunst:
Wenn man eine Zahl mit führenden Nullen versehen will, wie z.B. 001, dann bietet sich die Funktion str_pad an:
$nummer3stellig = str_pad(1, 3, 0, STR_PAD_LEFT);
Wenn man alle Elemente bspw. aus generiertem HTML verschieben will, bietet sich jQuery an.
Folgendes HTML habe ich aus einem PDF zu HTML Umwandlungsprogramm erhalten:
<div style="position:absolute;top:97;left:333"><nobr><span class="ft1"> </span></nobr></div> <div style="position:absolute;top:121;left:333"><nobr><span class="ft1"> </span></nobr></div> <div style="position:absolute;top:145;left:333"><nobr><span class="ft1"> </span></nobr></div> <div style="position:absolute;top:170;left:293"><nobr><span class="ft2">Text </span></nobr></div>
Um die Inline Styles zu verändern und die Div-Blöcke um 100px zu verschieben nach rechts und nach unten kann folgender Code verwendet werden:
$(document).ready(function() {
$('div').each(function() {
var offset = $(this).offset();
alert("left: " + offset.left + ", top: " + offset.top );
$(this).css('left', offset.left + 100);
$(this).css('top', offset.top + 100);
});
});
Wenn man nicht will, dass Spammer und Suchmaschinenoptimierer Ihre Kommentare mit Links zu Ihrer Webseite hinterlassen, sollte man entweder
- die Freischaltung der Kommentare von Hand übernehmen (Einstellungen->Diskussion == muss jeder Kommentar von einem Administrator überprüft werden.->Häckchen)
- einen Spam Filter wie Akismet benutzen, der allerdings nur für private Zwecke (ohne Werbung) kostenlos ist
- oder die Eingabe von Webseiten in das entsprechende Input-Feld der Kommentare verhindern
Dazu muss einfach folgender Code wie folgt auskommentert werden in der wp-includes/comment-templates.php (ca. Zeile 1522):
$fields = array( 'author' => '<p>' . '<label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span>*</span>' : '' ) . '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>', 'email' => '<p><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span>*</span>' : '' ) . '<input id="email" name="email" type="text" value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>', // 'url' => '<p><label for="url">' . __( 'Website' ) . '</label>' . // '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>', );
Die Variante schützt einen wahrscheinliche nicht vor Pings.
Cross Browser kompatibeles CSS mit YAML
Wer eine Chance haben will, dass seine Webseite in allen gängigen Browsern gleich aussieht, der ist gezwungen ein CSS Framework zu benutzen, welches die Unterschieder eine einzelnen Browser ausgleicht, wie z.B: YAML.
Sehr konfortabel ist auch der YAML Builder, mit dem verschiedene Layouts mit 1,2 oder 3 Spalten erstellt werden können.
Einbindung von YAML
- Als erstes müssen aus dem yaml source Ordner und die Ordner js und yaml in das Projektverzeichnis kopiert werden.
- Dann wird im YAML Builder das Layout zusammengeklickt und Get Code ausgewählt..
- Der HTML Code kommt in die index-Datei (oben rechts mit der Maus über das Dokument und dann copy to clipboard ).
- Die my_layout.css kommt in das Verzeichnis /css (muss angelegt werden). Das ist wichtig, weil sonst die Pfade nicht stimmen. Folgende Dateistruktur muss am Ende enstehen:
erste iPhone App im App Store
Am Samstag war es soweit, meine erste App hat es in den App Store geschafft: CD Ankauf ZeeDee.
Der Warteprozess auf Aufnahme in den App Store und das Testen durch Apple gingen ziemlich schnell: Montag abend habe ich die App mit dem Application Loader hochgeladen, am Freitag kam die Nachricht, dass jetzt getestet wird und am Samstag früh wurde die App in den App Store gestellt. Meine App Store Wartezeit betrug also nur ca. 5 Tage, was absolut ok ist.
Zur App: Ich muss nicht sagen, dass diese App alle Apps revolutionieren wird und alle anderen Apps überflüssig macht. In Zukunft brauch man nur noch die CD Ankauf App und der Rest kann weg. Dadurch entfällt nerviges rumwischen auf dem Display um auf seine letzte App Auswahl Seite zu gelangen. 🙂
Nach Veröffentlichung meiner ersten App Cd Ankauf ZeeDee, wollte ich mir die App zum Tracken der App Verkäufe/Downloads downloaden: iTunes Connect Mobile.
Dabei hat ich das Problem, dass ich Sie im App Store auf meinem iPhone nicht finden konnte:
Der Ausweg war, über mein iTunes auf dem PC/MAC die App zu suchen, wo ich sie finden konnte und von dort aus zu installieren. Einfach iPhone anschließen, in iTunes auf „Gratis App“ klicken und danach synchronisieren, falls nötig.
Um einen String abzuspeichern mit unbekanntem Inhalt, sollte immer die PHP Funktion mysql_real_escape_string verwendet werden:
$mystring = mysql_real_escape_string($mystring );
Damit werden bösartige Strings entschärft, mit denen großer Schaden angerichtet werden kann wie:
$string = "1';DELETE FROM table WHERE 1;#";
$sql = "SELECT * FROM table WHERE id = '$string' ";
Dies kann durch die Verwendung der Funktion verhindert werden.
Wenn man eine Spalte vom Typ timestamp hat und nur Daten eines bestimmten Alters selektieren will, kann man dies in MySQL tun mit der DATE_SUB Funktion:
SELECT * FROM ... WHERE timestamp > TIMESTAMP(DATE_SUB(NOW(), INTERVAL 2 hour))
Damit werden nur Daten selektiert, die nicht älter als eine Stunde sind. Das gleiche funktioniert bspw. auch mit Tagen:
SELECT * FROM ... WHERE timestamp > TIMESTAMP(DATE_SUB(NOW(), INTERVAL 2 day))
und Minuten:
.SELECT * FROM ... WHERE timestamp > TIMESTAMP(DATE_SUB(NOW(), INTERVAL 10 minute))
Eine andere Möglichkeit wäre, PHP dafür zu benutzen, aber aus Performance Gründen sollte man immer MySQL vorziehen.
MySQL Duplicate entry ‚1‘ for key ‚PRIMARY‘
Wenn man eine Fehlermeldung bekommt wie
Duplicate entry '1' for key 'PRIMARY'
Dann sollte man den Eintrag entweder mit UPDATE (beste Variante)
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
oder einfach nichts verändern in der Datenbank entweder mit
INSERT IGNORE INTO table (a,b,c) VALUES (1,2,3)
Wobei hier auch mögliche Fehlermedlungen unterdrückt werden. Achtung!



