Archiv der Kategorie: Web

Mysql Massen-String Replace

Ich stolpere immer wieder über die Aufgabe, einen kleinen Teilstring datenbankweit auszutauschen; Zum Beispiel wenn ein WordPress Blog von Domain A auf Domain B umziehen soll, und alle in den Artikeln hart verlinkten URLs automatisch mittels SQL Query geändert werden sollen.

Damit ich nicht jedes Mal auf’s Neue suchen muss lege ich den Lösungsweg hier ab:

Grundsätzlich bietet sich natürlich auch die Möglichkeit, den SQL Dump in einem Texteditor mit „Find and Replace“ durchzupflügen, allerdings kann das bei größeren Projekten schon zu massiven Speicherproblemen führen. Viel schneller und leichter geht das mit der MySQL REPLACE() Funktion von der Hand.

[sql]UPDATE table_name SET column_name = REPLACE(column_name,"original_string","replace_string")[/sql]

Für WordPress würde sich das also wie folgt lesen:

[sql]UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`,"liewcf.com/wp","liewcf.com/blog")[/sql]

Hoffentlich hilft das auch Anderen!

Last Minute Valentinsgeschenk

Wir von u+i interact (Agentur aus Bielefeld und Münster) haben eine kleine Anleitung bei uns auf der Webseite abgelegt, wie ihr eurer Freundin / eurem Freund schnell und kostengünstig (hey, dauert nur 10 Minuten!) ein tolles selbstgemachtes Geschenk zum Valentinstag basteln könnt.

Das Ergebnis kann auch bei Euch mit ein wenig Mühe und Aufwand (sie und er sind es wert!) so aussehen:

Unsere Valentinskarte

Hier geht es zur Anleitung.

Viel Spaß!

John Jay on creativity

Schönes Video über die Kreativ-Branche:

The greatest thing that we can do offer is to be great listeners
and to have empathy on your culture and to understand what is the truth

basically what we did [to our long time clients] is listen carefully, understood and be empathetic to the truth of who they are and understand their soul and make that soul relevant to a greater number of people.

John Jay („All we’re doing is putting down text on an image in an artful way„) arbeitet bei Wieden + Kennedy, die u.a. Kunden wie NIKE betreuen (und nebenbei für deren Slogan „Just do it.“ verantwortlich sind). Eine kleine Story über John Jay gibt es hier.

Facebook Fans mit Like Box Widget integrieren

Neben der Integration des Like Button (z.B. im Blog) gibt es auch im Rahmen der Facebook Social Plugins die Facebook Fan-Box (seit dem Umbenennen von „Fan werden“ zu „mag ich“ als Like Box) für die eigene Webseite.

Facebook stellt hierfür, wie für die anderen Plugins auch, einen Like Widget Codegenerator zur Verfügung. Leider baut der Facebook Generator für die Fan-Box / Like-Box den Code zur Integration falsch auf, das Ergebnis sähe bei unserer Firmen-Fanbox so aus:
Facebook Fans mit Like Box Widget integrieren weiterlesen

Facebook „Like“ Button im WordPress Blog einbauen

Gestern, auf Facebooks F8 Konferenz, wurden von Mark Zuckerberg die neuen „social plugins“ von Facebook vorgestellt. Hierüber können Webseitenbetreiber mit geringem Aufwand auf Teile von Facebook zurückgreifen, um somit die viralen Marketingkräfte von Facebook mit seinen über 400 Millionen registrierten Usern nutzen. Ein Schelm, wer böses dabei denkt…
Facebook „Like“ Button im WordPress Blog einbauen weiterlesen

CakePHP Tutorials von IBM updated

Die wahrscheinlich bei allen CakePHP Entwickler bekannten IBM Tutorials (zuerst 2006 erschienen) wurden vor 2 Wochen auf den neuesten Stand gebracht. Unter Cook up Web sites fast with CakePHP, Part 1: Getting started findet sich jetzt für CakePHP Neulinge ein umfassendes Tutorial das viele Features von CakePHP (u.a. Caching, Security, Ajax) relativ gut beleuchtet und sich als Einstieg hervorragend eignet.

via pseudocoder.com

Kostenfreies CakePHP Buch

Beim Pseudocoder gibt es für alle CakePHP Entwickler ein höchst interessantes kostenfreies CakePHP Buch im PDF Format.

For anyone who missed it, I released a free CakePHP book a month ago. Since then it’s been downloaded over 2500 times. I’ve also received some great feedback and have made a bunch of corrections to the code and grammar. The biggest change is that the table of contents is now links and will jump you right to the section. That’s reason enough alone to grab the updated version. The new permanent home page for the book is here.

Debug Informationen in CakePHP

Debugging von Anwendungen, die auf PHP basieren, ist zwar mit Tools wie Zend / Eclipse leichter geworden als noch vor einigen Jahren, aber manchmal bedarf es auch nur einer einfachen Anzeige von Header-, Session- oder anderen Requestdaten während der Laufzeit im Frontend.

Bei der Entwicklung von CakePHP Anwendungen können von Haus aus Informationen z.B. zur Datenbankabfrage mithilfe der Konfigurationsvariable debug und des Befehls

[php]
Configure::write("debug", 1);
[/php]

ausgegeben werden.

Es gibt insgesamt 4 Debug Level, die hier im Kontext einer älteren CakePHP Version (dort wird die Konstante DEBUG genutzt) folgendermaßen bezeichnet werden:

There are 4 levels of debug: 0-production, 1- development, 2- full debug with sql and 3- full debug with sql and dump of the current object. Specifying this setting to a non-zero value will force Cake to print out the results of pr( ) and debug( ) function calls, and stop flash messages from forwarding automatically. In production, the „flash messages“ redirect after a time interval. With the other debug levels you get to click the „flash message“ to continue. For example, if you want to set the debug level to „full debug with sql“, the line should look like this: define(‚DEBUG‘, 2);

Da die Debug Informationen von Cake immer am unteren Seitenende gerendert und – sobald man vom CakePHP Standardlayout abweicht – auch äußerst hässlich werden, gibt es bei Snook.ca die folgenden CSS Klassendefinitionen, um diese Infos generell schicker zu gestalten:
[css]
.cake-sql-log {
position:fixed;
top:99%;
z-index:10;
width:100%;
background-color:#000;
color:#FFF;
border-collapse:collapse;
}

.cake-sql-log caption {
background-color:#900;
color:#FFF;
}

.cake-sql-log:hover {
top:auto;
bottom:0;
}

.cake-sql-log td {
padding:3px;
border:1px solid #999;
background-color:#EEE;
color:#000;
}
[/css]

Wer jetzt noch weitere Informationen braucht (wie oben bereits erwähnt u.a. zu Sessiondaten, Log-Aktivitäten, Timings etc.) der ist mit der CakePHP DebugKit Toolbar von Mark Story gut bedient.

Die Toolbar „versteckt“ sich geradezu absolut positioniert in der rechten oberen Ecke der Webseite und öffnet sich blei Klick auf ein kleines Icon.

Was sie alles bietet, zeigt sich in den folgenden Screenshots:

DebugKit Toolbar in CakePHP
DebugKit Toolbar  in CakePHP - Timings der Prozesse
DebugKit Toolbar - Sessioninhalte, schön ausklappbar

Ich binde die Toolbar dynamisch je nach Umgebung auf folgende Art und Weise im app_controller ein:
[php]
public function __construct(){
parent::__construct();
if(DEVELOPMENT_ENVIRONMENT){
$this->components[] = ‚DebugKit.Toolbar‘;
Configure::write(‚debug‘, 2);
} else {
Configure::write(‚debug‘, 0);
}
}
[/php]

Hier prüfe ich auf die Konstante DEVELOPMENT_ENVIRONMENT, die ich, wie alle anderen Variablen, die global für die App zur Verfügung stehen müssen, in der bootstrap.php definiere. Solche Variablen könnten eben serverseitig zur Auswahl der entsprechenden Pfade (z.B. für Logs oder temporäre Uploads) oder auch für die Auswahl der entsprechenden Datenbankverbindungen herangezogen werden.

CakePHP: Auf Mac OS im Terminal bake ausführen

CakePHP
Wer auf Mac OS versucht, im Terminal das „Bake Script“ von CakePHP auszuführen, wird wahrscheinlich auf die Problematik stoßen, dass die mitgelieferte PHP Version von Mac OS nicht korrekt das Script ausführt.

Hier gibt es – wie ich gelesen habe – hundert Ansätze, das Problem zu umschiffen, der leichteste und praktikabelste ist in meinem Setting (mit MAMP auf Mac OS) folgender, direkter Aufruf einer anderen PHP Version zum Ausführen des PHP Scripts.

Der Aufruf erfolgt in dem Projekt- Konsolenordner (z.B. in meinem Fall /Users/lrheingans/Documents/Workspace/Project_X/cake/console/)

[source]
/Applications/MAMP/bin/php5/bin/php cake.php bake
[/source]

Von hier läuft dann alles wie gewohnt.

Um das Bake Script unter Eclipse ausführen zu können, gibt es auch in der Bakery einige Tutorials (mir war der mini Aufwand allerdings nicht wert, ich mag meine Konsole)