Tag: Browser

Online PHP IDE mit Smart Code Completion

Berufsbedingt arbeite ich derzeit an zwei verschiedenen Laptops, wobei ich auf einem keine Administratorenrechte besitze. Da nicht immer beide Laptops mitnehmen möchte, bzw. grundsätzlich angehalten bin, auf dem Laptop ohne Administratorenrechte keine fremde Software zu installieren, suche ich nach einer passenden Online IDE. Nachdem ich jetzt ein paar Sachen ausprobiert habe, eine Zusammenfassung meiner Erfahrungen im Bereich Online PHP IDE mit Smart Code Completion.

Arten von Online IDEs

Grundsätzlich gibt es zwei verschiedene Arten von Online IDEs:

  • Cloud IDE: Unter einer Cloud IDE verstehe ich Angebote wie bspw. Cloud9 (https://c9.io/) oder Codio (https://codio.com).
  • Self-Hosted IDE: Es finden sich im Internet auch eine Reihe von Download-Paketen für den eigenen Server wie bspw. Codiad (http://codiad.com/) oder ICEcoders (https://icecoder.net/).

Unabhängig ob online Cloud IDE oder online Self-Hosted IDE im Gegensatz zu offline IDEs wie bspw. Eclipse oder Netbeans sind die online Varianten oft kostenpflichtig bzw. gibt es verschiedene Pakete.

Außerdem bin ich noch auf eine dritte Art von “Online IDE” gestoßen, die ich bisher jedoch noch nicht getestet habe. Bei TheNextWeb (http://thenextweb.com/google/2013/11/21/google-building-chrome-app-based-development-environment-using-dart-polymer/) wird über ein IDE-Plugin berichtet, welches direkt im Chrome Browser läuft – Chromedeveditor (https://github.com/dart-lang/chromedeveditor). Aus der Beschreibung wird nicht ganz klar ob damit nur JavaScript und Dart Anwendungen geschrieben werden können oder ob auch andere Sprachen unterstützt werden.

Code Completion vs. Code Intelligence

Zunächst hatte ich geglaubt, dass mein gesuchtes Feature unter dem Begriff “Code Completion” existiert. Jedoch bezeichnet Code Completion nur das Feature, das bereits bekannte PHP-Funktionen, wie bspw. “substr” und “substr_count” bei der Eingabe von “sub” und dem gleichzeitigem Drücken von “STRG” + “Leertaste” entsprechend vorgeschlagen werden.

Code Completion in Netbeans

Code Completion in Netbeans für PHP Standardfunktionen

Dies wird oftmals einfach über eine zuvor definierte XML-Datei erreicht und erfordert kein Code Verständnis.

Durch einen Artikel bei StackOverflow (http://stackoverflow.com/questions/1738696/php-ide-with-best-code-completion) habe ich dann gemerkt, dass ich mindestens nach “Smart Code Completion” bzw. “Code Assistance” oder auch “IntelliSense” suchen muss.

Online PHP IDE mit Smart Code Completion aka Code Assistance aka IntelliSense

Verwöhnt von den offline IDEs Eclipse PDT (https://eclipse.org/pdt/) und Netbeans (https://netbeans.org) bin ich auf der Suche nach einer Online IDE, die neben Code Completion, auch Smart Code Completion aka Code Assistance aka IntelliSense beherrscht.

In praktischen Tests mit c9, Codio und ICEcoders war keine der Online IDEs in der Lage mir die passenden zugehörigen Methoden eines selbst definierten Objektes vorzuschlagen. Entweder es gibt grundsätzlich keine Vorschläge oder nur die Standard-PHP-Funktionen oder einfach alle Funktionen unabhängig ob sie zum jeweiligen Objekt gehören. Besonders bei der Objektorientierten Programmierung (OOP) ist das Vorschlagen der passenden Methoden besonders hilfreich für eine schnelle und fehlerfreie Programmierung. Außerdem wird neben dem reinen Methodennamen, wenn entsprechend angegeben, auch die Dokumentation zu den jeweiligen Variablen angezeigt und auf korrektes Type Hinting (http://php.net/manual/de/language.oop5.typehinting.php) geachtet.

Online PHP IDE mit Smart Code Completion gesucht wie in Netbeans für selbst definierte Methoden

Smart Code Completion

Weitere Links

Für weitere Informationen bzgl. Online PHP IDE mit Smart Code Completion ist der englischsprache Wikipedia-Artikel Comparison of JavaScript-based source code editors lesenswert. In diesem wird nochmals dargestellt, welche Editoren hinter den oben genannten Online IDE Diensten stecken und über welche Funktionen diese verfügen. Die Smart Code Completion aka Code Assistance aka IntelliSense ist in der Features-Liste bisher noch nicht erwähnt, wodurch es immer auf den konkreten Einzeltest ankommt.

Für Hinweise in den Kommentare bzgl. weiterer möglicher Kandidaten von Online PHP IDE mit Smart Code Completion würde ich mich wirklich freuen, gerne auch kostenpflichtige Angebote.

Die Webseite wird so groß dargestellt

Zunächst konnte ich es nicht glauben, als der Kollegen, welcher in einem IT-Beratungsunternehmen arbeitet, mit der Fehlerbeschreibung zu mir kam, dass manche Internetseiten vergrößert dargestellt werden würden und er sich nicht erklären kann, wodurch dies verursacht wird. Gerne erinnere ich mich an eine E-Mail von einer Kundin zurück, die das selbe Problem hatte, mir dem Hinweis, dass es nur an ihrem Rechner wäre und ob wir etwas spezielles programmiert hätten.

Sowohl bei der Kundin also bei meinem Kollegen half schließlich die Tastenkombination “STRG” + “0” die Webseiten wieder auf ihre ursprüngliche Größe zu reduzieren. Verursacht wird die Vergrößerung durch “STRG” + “+” bzw. geht natürlich auch die Verkleinerung mit “STRG” + “-“. Außerdem kann man die Ansicht durch Drücken der “STRG”-Taste und gleichzeitiges Drehen des Mausrades beeinflussen.

Programme aus dem Browser heraus aufrufen

Diese Anleitung bietet einen kleinen Überblick wie einfach ein Custom Protocol eingerichtet und mit einer Anwendung verknüpft werden kann. Am einfachsten funktioniert die Einrichtung über eine Regedit-Datei mit folgendem Inhalt.


REGEDIT4

[HKEY_CLASSES_ROOT\foo]
@="URL:foo Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\foo\shell]

[HKEY_CLASSES_ROOT\foo\shell\open]

[HKEY_CLASSES_ROOT\foo\shell\open\command]
@="\"C:\\Program Files\\Application\\program.exe\" \"%1\""

Quelle: http://kb.mozillazine.org/Register_protocol
Weitere Informationen: http://msdn.microsoft.com/en-us/library/aa767914.aspx

Wenn diese Datei als foo.reg gespeichert wird, ist sie auch gleich ausführbar und der Inhalt wird in die Registry geschrieben.

Der Link bspw: “foo://name@value” kann bspw. zunächst an eine .bat-Datei übergeben werden, die dann erst das Programm aufruft. Ein Beispiel welches im Internet viel zu finden ist und an welchem sich das gut verdeutlichen läßt ist Putty bzw. SSH Link.

Quatsch: Browser enttarnen ihre Nutzer

Vor einiger Zeit war in der “Zeit” ein Artikel http://www.zeit.de/digital/datenschutz/2010-01/browser-fingerabdruck-eff welcher den Dienst Panopticlick vorstellt. Dieser zeigt auf wie viele verschiedene Parameter beim Aufrufen einer Webseite abgefragt werden und wie sich daraus angeblich ein Fingerabdruck erstellen läßt. Verschiedene andere Medien griffen diesen Artikel ebenfalls auf, die “Zeit” soll jetzt hier nur mal als Beispiel genommen werden. Das klingt im ersten Moment auch alles sehr dramatisch. Obwohl man Cookies die ganze Zeit ablehnt, kann man trotzdem widererkannt und identifiziert werden.

Bereits im Artikel befindet sich eine Aussage darüber, das die Auswertung der Parameter “etwas aus der Giftküche” sei. Wirklich interessant wird das Ganze durch die Aussagen vom EFF, welcher die Seite betreibt, das man zum Schutz seiner Privatsphäre am besten nur Browser verwendet, welche die Allgemeinheit verwenden “Try to use a “non-rare” browser” , also sich in der Masse verstecken. Außerdem sollten Hersteller den Privaten Modus bzw. Inkognito Modus “A Better Solution: Browsers’ “Private Browsing” Modes” verbessern, hier beißt sich, in meinen Augen, die Katze wieder selbst in den Schwanz, aber dazu später mehr. Kommen wir erstmal zu der Auswertung der verschiedenen Browser.

[php]
// Browser des ZEIT-Redakteurs
179,460

// Mein Chrome
615,924
User Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5

// Mein Firefox
615,926
User Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7

// Mein Opera
615,963
User Agent: Opera/9.80 (Windows NT 5.1; U; de) Presto/2.2.15 Version/10.10

// Mein Internet Explorer
615,928
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2)

// Mein Chrome Inkognito
307,981
User Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5
[/php]

Im Internet Explorer habe ich nur die Web Developer Toolbar installiert. Im Firefox schon ein bisschen mehr: Web Developer, Firebug, User Agent Switcher, Color Zilla, Java Quick Starter. In Opera und Chrome habe ich bisher keine Erweiterungen installiert, weiß ehrlich noch nicht einmal wie das geht. Also in Chrome ging es bis vor kurzem gar nicht und in Opera heißen die Dinger Widgets und da ist bei mir nur der Papierkorb gelistet.

Also von daher würde ich sagen, die installierten Extensions oder der verwendete Browser machen einen kaum einzigartiger oder allgemeiner. Der Hinweis bzgl. dem Privaten Modus halte ich auch für sehr fragwürdig. So lange man den Privaten Modus von Hand einschalten muss, wird man sich in der Masse schlechter verstecken können als in der Allgemeinheit.

jQuery ist DeBuggers Liebling

Nachdem ich mich mehr aus der Not heraus, schnell für ein JavaScrip Framework entschieden habe, weil mein selbst gefrickeltes JavaScript mal wieder nicht Cross Browser Kompatibel war, wählte ich jQuery und bin bis heute begeistert. Natürlich sind die folgenden aufgeführten Punkte sehr subjektiv, da ich keines der anderen Frameworks getestet habe. Außerdem möchte ich erwähnen das man jQuery immer im Kompatiblitätsmodus betreiben sollte, da es sonst zu Probleme mit z.B.: Prototype kommen könnte.

[Javascript]
var $j = jQuery.noConflict();
[/Javascript]

Diese Zeile muss logischerweise nach dem Framework aber vor eurem eigenen Code eingebunden werden. Alle Beispiele die ihr dann im Internet findet müßt ihr dann entsprechend anpassen:

[Javascript]
/* Vorher */
$(document).ready(function() { … })

/* Nachher */
$j(document).ready(function() { … })
[/Javascript]

Aber jetzt zu den Punkten welche mich bisher überzeugt haben:
1. jQuery.com – Dokumentation mit Beispielen, so wie es sein muß
2. http://stackoverflow.com/questions/tagged/jquery noch mehr Beispiele und auf die meisten Fragen bereits eine passende Antwort
3. Vielzahl von Plugins
4. Performant
5. Aktive Verbesserungen am Code durch die Entwickler

Wen das bisher noch nicht überzeugt hat, der sollte sich unbedingt mal http://gamequery.onaluf.org/ anschauen. Eine Game Engine basierend auf jQuery. Wahnsinn.