Kategorien
Diverses

HTML Kunst

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:

Kategorien
PHP

Auffüllen von Zahlen mit führenden Nullen in PHP

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);
Kategorien
jQuery

verschieben von absolut positionierten Elementen mit jQuery

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);
            });
        });
Kategorien
WordPress

Webseiten Input Feld deaktivieren in WordPress Kommentaren

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.

Kategorien
CSS

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

  1. Als erstes müssen aus dem yaml source Ordner und die Ordner js und yaml in das Projektverzeichnis kopiert werden.
  2. Dann wird im YAML Builder das Layout zusammengeklickt und Get Code ausgewählt..
  3. Der HTML Code kommt in die index-Datei (oben rechts mit der Maus über das Dokument und dann copy to clipboard ).
  4. 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:

Kategorien
iPhone/iOS

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. 🙂

Kategorien
iPhone/iOS

iTunes Connect nicht im App Store zu finden

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:

20110829-101738.jpg

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.

 

Kategorien
MySQL PHP

Strings speichern in MySQL und Sicherheit

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.

 

 

Kategorien
MySQL

MySQL SELECT Daten, die nicht älter als x Tage/Stunden/Minuten sind

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.

Kategorien
MySQL

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!