Archiv der Kategorie: zend

Suchfunktion in eclipse richtig (aus)nutzen

Die Suchfunktion in eclipse bzw. ZendStudio kann mehr, als ein simples STRG+F vermuten lässt. Also mal Zeit, kurz was darüber zu schreiben, was einem das (Programmierer)-Leben leichter macht; Programmierer sind ja bekanntlich faule Wesen 🙂

Also, in eclipse und anderen IDEs, die auf eclipse basieren – z.B. ZendStudio, Aptana, usw. – gibt es im Prinzip zwei Suchfunktionen.

  1. Die Suche über STRG+F
  2. Die Suche über STRG+H

Die Suche über STRG+F…

… ist schnell erklärt und man sollte wissen, dass diese Suche nur funktioniert, wenn man ein Dokument geöffnet hat.

sufu1

Den zu findenden Text schreiben und ENTER drücken und man springt zum nächsten Vorkommen. Die Optionen sollten alle selbsterklärend sein.
Hinweis: Die Suche beschränkt sich auf das aktuelle Dokument, auch wenn mehrere Dateien geöffnet sind!

Die Suche über STRG+H…

…ist das eigentliche Highlight in eclipse und ist äußerst mächtig, wenn man sich ein wenig Zeit nimmt, die Optionen zu studieren.

Erstmal ein Einblick in die Oberfläche:

sufu2

Das ganze funktioniert erst, wenn ihr ein Projekt geöffnet habt, allerdings muss keine Datei geöffnet sein.

Sollte euch der Reiter “Remote Search” fehlen, keine Panik, den habe ich deaktiviert. Unten Link den Button “Customize” drücken und dort den Reiter “Remote Search” ausschalten.

sufu3

(Mich hat das ständig genervt, dass dieser Reiter zuerst ausgewählt ist und ich nicht direkt lokal suchen konnte.)

Wie ihr seht, könnt ihr zwar die Suchfunktionen ein- und ausschalten, allerdings nicht die Reihenfolge ändern. Hinweise diesbezüglich nehme ich gerne entgegen.

Okay, meine Erfahrung beschränken sich auf den Suchreiter “File Search”, aber der hat es schon in sich und reicht für meine Zwecke mehr als nur aus.

Ein Beispiel zur Suche

Ich habe ein (PHP)Projekt mit 2.000 Dateien und suche dort alle Vorkommen der mail()-Funktion; evtl. will ich die Funktion durch eine Klasse ersetzen. Also STRG+H, in das Feld “Containing Text” trage ich “mail(“ ein, bei “File name patterns” sage ich “*.php” und den “Scope” setze ich auf “Workspace”. Nun ein Klick auf “Search” und kurz danach erhalte ich alle Ergebnisse sauber nach Vorkommen gegliedert und kann so jeden Treffer sehen. Dabei bekomme ich auch eine Vorschau der betreffenden Zeile und kann anhand dieser Information schon schnell beurteilen, ob dieser Treffer für mein Vorhaben interessant ist oder nicht.

Ich denke mal, bis hierhin kennen sich die meisten schon aus; Interessant wird es dann für folgenden Fall – gleiches Projekt (2.000 Dateien).

Ersetzen Advanced

Es fällt auf, dass es zwar ganz unten einen “Replace” Button gibt, aber kein Feld, mit was denn ersetzt werden soll. An dieser Stelle muss man wissen, dass dieses Ersetzen sich auf den gewählten “Scope” bezieht. Setzt man den Scope auf “Workspace”, dann geht es um das ganze Project, also 2.000 Dateien. Da sollte man vorsichtig sein … und eclipse hilft einem dabei.

Also, erst mal eingeben, was man ersetzen möchte. Als Beispiel benutze ich mal den Fall, dass ich in meinem (PHP)Projekt ca. 230 Links auf ein pdf Dokument habe. Der Name des Dokuments wurde nun kundenseitig geändert (kann ja mal passieren) und das ganze soll nun ASAP korrigiert werden.
Die Aufgabe lautet also: Korrigiere ca. 230 Links in ca. 2.000 Dateien und das schnellstmöglich.

Um das Beispiel gleich komplex zu machen – so lernt ihr wirklich alles kennen – nenne ich das alte Dokument “MeinReport_022010_de.pdf” und ein zweites Dokument heißt “MeinReport_022010_en.pdf” und das ganze soll nun so heißen: “report_de_februar_2010.pdf” und “report_en_februar_2010.pdf”.

Man sieht, die Namen sind sich ähnlich bis auf das de und en.

Der Weg ist nun folgender: Wir benutzen ein Such-RegEx, um die beiden PDF-Dokumente zu finden und ersetzen diese dann in den Dateien automatisch, allerdings wollen wir eine Vorkontrolle, was alles ersetzt werden soll. Und das geht so:

sufu4

Also, erst mal den RegEx eingeben, das ganze auch als “Regular expression” markieren, den “Scope” auf “Workspace” setzen und dann unten auf “Replace…” klicken.

eclipse sucht nun die Treffer und in der nächsten Maske kann man nun die Ersetzung angeben. Diese wäre in unserem Fall “report_$1_februar_2010.pdf”, damit de und en auch richtig eingesetzt werden.

Das ganz besondere ist nun der Button “Preview”, der uns nun alle Treffer in einem Diff anzeigt. So können wir sehen, ob alles richtig läuft, man kann einzelnen Ersetzungsschritte wählen oder ganz unten “Ok” klicken, dann werden alle Treffer ersetzt.

Mit der entsprechenden FTP-Synchronisation – die es leider im “normalen” eclipse nicht gibt, ich benutze ja ZendStudio – kann man nun automatisch die Änderungen an den Server übertragen.

Fazit: Das Problem klang nach viel Arbeit, aber die Powersuche in eclipse bzw. ZendStudio hilft uns dabei, das ganze gelassen in 15 Minuten zu erledigen. Und das war nur ein Reiter der Suche … wie gesagt, die anderen habe ich bisher nicht gebraucht.

Zend 7.1: Updateserver sind verschwunden

Nach meinem Update auf das Zend Studio 7.1 erschien zunächst alles normal. Allerdings erschien mir der Start des Zend Studio 7.1 doch ein wenig zu schnell.

Heute fiel es mir ein, das Ding macht gar keine Updates. Also, schnell wieder auf “bei jedem Start nach Updates schauen” einstellen und einmal manuell anstoßen.

Aber: Zend Studio (oder das darunterliegende eclipse) melden: Keine Server eingetragen.
*boff* Beim Update sind die Updateserver hops gegangen, die Liste der verfügbaren Server ist leer.

Okay, kein Problem, diese beiden URL müssen hier eingetragen werden:

http://download.eclipse.org/releases/galileo
http://downloads.zend.com/studio-eclipse/updates/7_1

Es werden automatisch noch weitere Seiten eingefügt.

Dannach klappt es auch wieder mit den Updates 😉

Performance des Zend Studio verbessern

Hier ein paar Tipps, wie ihr eure IDE – hier das Zend Studio – schneller macht.
Ich benutze das Zend Studio 7.x, es sollte aber auch ab Version 6.x funktionieren.

Tipp 1: Code Analyser abschalten.

Unter „Window“ -> „Preferences“ -> „PHP“ -> „Code Analyser“ den Haken bei „Enable …“ rausmachen.

Tipp 2: Speicher erhöhen

Im Programmordner des Zend Studio findet ihr die „ZendStudio.ini“. Dortdrin findet ihr, recht weit unten“, die Einträge zur Benutzung des Arbeitsspeichers (Xmx und Xms Speicher).

Dies könnt ihr wie folgt ändern:

-Xms256M
-Xmx768M

Tipp 3: Die Java Runtime ändern.

Zend Studio startet routinemäßig mit der Java Runtime 1.5. Derzeit ist aber schon die Version 1.6 draußen, die u.a. auch Performance-Verbesserungen mitbringt. Um die neue JRE zu nutzen, geht ihr folgendermaßen vor:
a) Aktuelle Runtime ermitteln.
Konsole aufmachen („Start“->“Ausführen“->“cmd“). Dort dann

java -version

eingeben. Ihr erhaltet die aktuell vom system verwendete jre Version.
b) Runtime Ordner finden.
Bei Windows Systemen liegt die Runtime meist entweder im Programmordner/Java/Runtime oder in Programmordner/Java/JDKxxx/jre.
Ihr braucht die dort enthaltene jre.dll, diese ist im Unterordner „bin/client“. Diesen ganzen Pfad inkl. der dll braucht ihr nun.
c) Neue Runtime eintragen.
Wieder die „ZendStudio.ini“ aufmachen, dort am Anfang folgendes eingeben:

; Run Zend Studio with system's JRE
-vm
C:\Programme\Java\jdk1.6.0_16\jre\bin\client\jvm.dll
; ----------------------------------------

Natürlich müsst ihr den Pfad mit eurem Pfad ersetzen.

Meine „ZendStudio.ini“ sieht zum Beispiel so aus:

; Run Zend Studio with system's JRE
-vm
C:\Programme\Java\jdk1.6.0_16\jre\bin\client\jvm.dll
; ----------------------------------------
-startup
plugins/org.eclipse.equinox.launcher_1.0.200.v20090921.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
--launcher.XXMaxPermSize
256m
-vmargs
-Xms256M
-Xmx768M

Und ich bin damit ganz zufrieden.

Wenn ihr auch Tipps habt, immer her damit.

Zend und date … bitte nichts vergessen!

Das Zend Framework ist schon sehr lustig. Wir binden Zend mit Hilfe des Autoloaders in unser Projekt ein. Nun wollten wir auch mal einen Teil des Zend Frameworks benutzen – unsere Wahl fiel dabei auf Zend_Log – und was wir dabei so alles lustig in Zusammenhang mit date() erlebt haben – und auch wie wir dieses seltsame Verhalten dann behoben haben – findet ihr hier: Techcrawler – PHP – Zend Loader, date und ein komisches Problem dami.
Viel Spaß beim lesen …

Probleme mit Zend_Loader::autoload() ?

Ab dem Zend Framework 1.8 macht euch sicherlich der Aufruf von
Zend_Loader::registerAutoload()
große Probleme, denn ab dieser Version ist diese Fassung offiziell als „deprecated“, also veraltet, gekennzeichnet. Ein Versuch, eine Klasse aus dem Zend Framework so aufzurufen, wird in einem Scriptabbruch enden.
Die gute Nachricht: Es müssen nur wenige Zeilen in euren Scripten geändert werden, welche das sind, zeige ich euch hier: Techcrawler – PHP – Zend_Loader::autoload is deprecated