Hallo!
Mein Name ist David Müller, ich arbeite bei der Public Cloud Group und wohne in Frankfurt. Hier geht es hauptsächlich um Webentwicklung.Kategorien
- webdev (131)
- php (84)
- Javascript (32)
- Datenbanken (22)
- Software Engineering (12)
- Performance (8)
- Security (27)
- PHP-WTF (11)
- Best of the Web (13)
- Quicktips (32)
- Linux (4)
- Java (3)
- misc IT (10)
- Persönlich (9)
- webdev (131)
Blogroll
Neueste Kommentare
- Tristan Tate bei Javascript: Arrays kopieren
- Daniel Marschall bei Dealing with Trusted Timestamps in PHP (RFC 3161)
- Login Mit Facebook Tutorial – Logini helper bei Facebook API – Tutorial
- PHP validation/regex for URL - Design Corral bei Why URL validation with filter_var might not be a good idea
- Manuel bei Meine ultimativen Buchempfehlungen
Archiv der Kategorie: Datenbanken
Lasst die Datenbank ihren Job machen!
Oft schau ich mir Code an und sehe, dass Leute offenbar zu faul für vernünftige SQL-Statements sind. Da wird eine extrem allgemein gehaltene Abfrage auf die Datenbank losgelassen, um dann im Nachklang mit PHP zu filtern / zu gruppieren. Warum? Die Datenbank ist doch zum rechnen und für genau so Aufgaben gedacht. Zudem ists auch noch viel performanter, die Datenbank einfach ihren Job erledigen zu lassen. Vielleicht programmieren gewisse Leute einfach viel zu gern PHP, als das sie sich von der Datenbank die Arbeit abnehmen lassen würden?
Berechnungen im SELECT
SELECT price FROM product
while ($row = $sql->fetch()) { print $row['price'] * 1.95583; }
Warum nicht einfach:
SELECT price*1.95583 AS europreis FROM product
Okay, jetzt nicht das beste Beispiel aber prinzipiell läuft einem sowas öfter über den Weg.… Den ganzen Post lesen
Veröffentlicht unter php, Datenbanken, Software Engineering, Performance, webdev
6 Kommentare
MySQL Inputvalidierung mit Triggern
Ich finds sehr praktisch, direkt auf Datenbankseite soviel wie möglich zu erledigen. Da wirds dann auch noch einen Artikel zu geben. Ich wurde neulich von Oracle inspiriert, wo folgende Konstrukte möglich sind:
create table Product ( ProdNr integer constraint PK_Product primary key, ProdPreis integer constraint min_price check (ProdPreis >= 10) );
Damit rejected Oracle Werte kleiner als 10 für ProdPreis beim Insert / Update – super Sache und besser als das in der Application-Logik ausschließen zu müssen. Einzig doof daran ist, dass man solche Fehler sinnvoll im Programm abfangen muss und mit sprechenden Fehlermeldungen quittieren muss – sonst kanns für unbedarfte Programmierer verwirrend werden, warum denn gewisse Werte nicht in der Datenbank eingefügt werden können.… Den ganzen Post lesen
Veröffentlicht unter Datenbanken, webdev
4 Kommentare
Best-of-the-Web 3
Und wiedermal gibts das – meiner Meinung nach – spannendste aus der Blogwelt der letzten Zeit.
- Give user feedback during execution – PHP’s Outputbuffering dazu verwenden, lang laufende Scripte „responsive“ wirken zu lassen
- Using MySQL Stored Procedures with PHP mysql/mysqli/pdo – Stored Procedures mit den 3 genannten Arten aufrufen
- Output Buffering – Verschiedene Schichten des Output Bufferings verwenden + alle Arten des „flushens“ genauer erklärt
- Strukturierte Versionierung mit Subversion – Kurzerklärung der SVN-Waffen Tags, Branches, Trunk…
- The truth about non-blocking JavaScript – Alle bekannten Arten des Scriptloadings
- Which waterfall led to greater revenues? – Über die Gefahr des Optimierens mit YSlow!
Veröffentlicht unter php, Datenbanken, Performance, Best of the Web, webdev
Hinterlasse einen Kommentar
Best-of-the-Web 2
Und eine neue Linkserie mit kleinen Web-Leckerbissen, bunt gemischt über MySQL, CSS, PHP und Javascript.
- Can I use? – Welche HTML 5 / CSS 3 – Features sind in welchem Browser bereits implementiert?
- PEAR HTTP Download – Nette Klasse, um sauber und schmerzfrei HTTP Requests / Downloads zu tätigen
- Head JS – Kleines Javascript, was das zusammenfassen von CSS / Javascript ermöglicht + ein paar weitere schöne Features mitbringt.
- PHP dependency strategies – Zusammenfassung von 3 Dependency-Injection Strategien und einigen sinnvollen Lösungsansätzen der mit DI aufkommenden Probleme.
- Web Designer’s Guide to PNG Image Format – Unterschiede der verschiedenen PNG-Abarten klar herausgestellt.
Veröffentlicht unter php, Javascript, Datenbanken, Best of the Web, webdev
3 Kommentare
Datenbank-Klasse (auf PDO basierend)
Es ist wohl eine der am häufigsten neu geschriebenen Klassen. Jedem Entwickler seinen Datenbank-Wrapper. PDO macht die Sache eigentlich schon sehr angenehm, trotz allem vermisst man hier und da ein paar Komfort-Features. Habe neulich meine Datenbank-Klasse auf Github hochgejagt.
Features
- Kommt komplett mit Unit-Tests daher
- Komfortables Handling mit Prepared Statements
- Möglichkeit, das PDO DB-Handle aus der Datenbank herauszubekommen – volle Flexibilität
- Unterstützt mehrere Datenbank-Verbindungen gleichzeitig
- Komplett sauberes exceptionbasiertes Fehlerverhalten
- Komfortfeatures (siehe unten)
- Komplette Dokumentation
Einen Einblick in die Klasse erhaltet ihr in diesem kleinen howto auf github.… Den ganzen Post lesen
Veröffentlicht unter php, Datenbanken, webdev
1 Kommentar
MySQL Views
Views sollten eigentlich jedem Webdeveloper bekannt sein, deswegen versteht sich der Post hier eher als kleiner „Reminder“. Legen wir doch direkt mit einem Beispiel los. Ich habe eine Tabelle pizzas:
Und eine Tabelle ingredients:
Klassische 1:n-Beziehung also. Ich habe eine wunderbare, normalisierte Datenhaltung (okay, man könnte auch den Zutaten noch eine Zutaten-ID geben aber das verkompliziert das Beispiel unnötig). Wenn ich jetzt allerdings häufig den Bezug der Pizza zu den Zutaten brauche, schreibe ich in vielen Funktionen joins von ingredients auf pizzas. Das geht schlauer! – mit Views.
CREATE VIEW pizzaingredients AS SELECT p.*, i.ingredient FROM pizzas p LEFT JOIN ingredients i ON i.pizzaid… Den ganzen Post lesen
Veröffentlicht unter Datenbanken, webdev
1 Kommentar
Java Hibernate Tutorial
Nachdem ich mit SQLite das Java-Fass aufgemacht hab, gibts nun noch Hibernate hinterher. Hibernate ist wohl eines der bekanntesten ORM-Frameworks. Ich zeige das ganze anhand von Netbeans, aber auch hier sollte Eclipse nicht weit entfernt sein. Es wird frech davon ausgegangen, dass das Java-Plugin installiert ist.
1) Hibernate Plugin installieren
In Netbeans unter Tools -Plugins -Availible Plugins -Hibernate. Sollte schmerzfrei durchlaufen.
2) Java Projekt anlegen
File -New Projekt -Java Application. Darf auch eine DesktopApplication sein, wenn ihr den GUI-Builder (Swing) als Plugin mitinstalliert habt – tut aber für Hibernate nichts zur Sache. Die Standardeinstellungen tun es unter Netbeans für das neue Projekt.… Den ganzen Post lesen
Veröffentlicht unter Datenbanken, Java
1 Kommentar
Java und SQLite
Was folgt ist ein etwas themenfremder Exkurs in die Java-Welt. Und zwar ein kleines Tutorial zur Anbindung einer (dateibasierten) SQLite Datenbank an Java. Ich werde Netbeans benutzen, unterstelle aber das Eclipse da sehr ähnlich zu handhaben sein wird. Als OS kommt Windows 7 zum Einsatz, ich werde aber an den entsprechenden Stelle auch den „Linux way“ dazuschreiben. Los gehts auf Basis eines frisch installierten Netbeans ohne Java-Plugin – wenn Java also schon drauf sein sollte, einfach bei Schritt 3 loslegen.
1) JDK herunterladen und installieren
Findet man hier – leider aber nur mit Oracle Account. JDK installieren. Netbeans muss dabei geschlossen sein, sonst bleibt der Fortschrittsbalken bei der JDK Installation einfach stehen (ohne Warnung).… Den ganzen Post lesen
Veröffentlicht unter Datenbanken, Java
5 Kommentare
Über ORM
ORM ist an sich eine feine Sache. Durch die zusätzliche Abstraktionsschicht ist man so gut wie vollkommen datenbankunabhängig. Weiterhin hat man einen sauberen OOP Ansatz duchgehend im Projekt ohne hässliche SQL Statements dazwischengemischt zu haben. Es fühlt sich sehr „smooth“ an und steigert – richtig gemacht – auch durchaus die Verständlichkeit des Codes.
Trotzdem bin ich nicht in allen Belangen großer Freund von ORM. Neulich hatte ich mit einer Tabelle zu tun, in der mehrere Millionen Tupel enthalten waren. Ein falsch platzierter Index oder der kleinste Fehler bei der Formulierung der Query führt dazu, dass man mehrere Minuten auf das Ergebnis der Abfrage warten darf.… Den ganzen Post lesen
Veröffentlicht unter Datenbanken, Software Engineering, Performance, webdev
3 Kommentare
Best-of-the-Web 1
Los gehts mit einer furiosen Linkserie aus dem Informativsten, was mir in der letzten Zeit im Feedreader begegnet ist. Naturgemäß wird der Themenschwerpunkt webdev-zentriert sein, es ist jedoch nicht auszuschließen das sonstige Perlen des Internets hier auftauchen werden. Und ab dafür.
- PHP5 – Einstieg in SOAP – Wer noch nie was von SOAP gehört hat sollte unbedingt hier starten. Die PHP Dokumentation selbst ist dazu recht mies. Ich war bei SOAP erst sehr skeptisch, finde es mittlerweile aber echt super – u.a. da es 1a in PHP implementiert ist
- Die Reflection API von PHP – Auch hierzu findet man kaum was einsteigertaugliches in der API Dokumentation selbst.
Veröffentlicht unter php, Datenbanken, Best of the Web, webdev, Persönlich
Hinterlasse einen Kommentar