Sublime PHPFormat Plugin Install

Für die Installation von Php Format plugin Sublime Text 2 sind einige Komponenten Nötig wie PEAR. Dies ist ein einfacher Logpost sollte ich wieder in die Verlegenheit kommen zusätzliche PHP Komponenten installieren zu müssen. Die Tipps sind zusammengetragen aus unterschiedlichen posts in Foren. Im Anhang eine kleine  Cheatsheet für das Mac Terminal nachdem doch immer wieder etwas installiert werden muss. In meinem Fall eine MAMP Entwicklung s Server mit wahlweise PHP 5.3.14  und PHP 5.4.4 . Die Installation von Imagemagick und FFMPEG unter MAMP hat wesentlich einfacher funktioniert doch dazu später. Meist ist nur ein Fehlender Pfad . Wir Listen und Testen hier etwas über genau da wir die selben upgrades auch für die MAMP installation nachvolziehen müssen und nicht noch einmal die selbe Hindernisse springen möchten.

Um etwas  Code sauber zu bekommen wollen wir dieses Subline Plugins installieren. Dieses Erweiterung macht Probleme da Sie den richtigen Pfad zu PEAR nicht findet und einen Fehler in der Sublime Konsole ausgeben. Im Prinzip sind die Plugins nur schnitstellen zu einem PEAR packet PHP_Beautifier . PEAR ist ein PHP Framework mit über 5 mil Zeilen das einiges erleichtert.  Damit all das nahtlos lauft muss PEAR sauber instaliert sein . Sublime  Text Erweiterungen arbeitet mit der System APACHE  Server zusammen nicht mit der eigenen MAMP oder XAMPP also auch wenn PEAR erfolgreich in der Entwicklungs Umgebung funktioniert kann es leicht zu Verwirrungen kommen.

Sublime Text Packages  CodeFormat Git

PhpBeautifier plugin for Sublime Text 2 Git

Wir  benötigen pear install PHP_Beautifier  Fehler Meldung in der Sublime Console

PHP Warning: require_once(PEAR.php): failed to open stream: No such file or directory in /usr/bin/php_beautifier on line 37
PHP Fatal error: require_once(): Failed opening required ‘PEAR.php’ (include_path=’.:/usr/lib/php/pear’) in /usr/bin/php_beautifier on line 37

 Was doch zu einiger Verwirrung führen kann da Sublime auf die mac Standard PHP installation zurückgreift. Hier die von PEAR webseite vorgeschlagene weg welcher nicht unbedingt leicht für non UNIX Leute Nachvollziehbar ist.

PEAR Version abfrage

pear version

PEAR Version: 1.8.0
PHP Version: 5.3.26
Zend Engine Version: 2.3.0

Überprüfen wir die pfade Path für PEAR

$ pear config-get php_dir
/usr/lib/php

Abfrage welche php.ini Verwendung findet

php --ini 

/private/ect/php.ini

Solle die Date ZEitzone nicht gesetzt sein kann das zu Fehler ausgaben führen in die php.ini

date.timezone = Europe/Berlin

Abfrage unserer Include Pfade

php -c /path/to/php.ini -r 'echo get_include_path()."\n";'

Wir Edititiern unser php.ini und fügen den Pfad hinzu

include_path = “.:/usr/lib/php/pear”

include_path=".:/usr/lib/php/pear"

Neustart des Apache Servers nicht vergessen damit die neuen Pfade wirksam werden (wie unten)

Installation PEAR MAC OSX

 wget http://pear.php.net/go-pear.phar
 php -d detect_unicode=0 go-pear.phar

Das Installations Script schlägt folgende Pfade  vor

Screen shot 2013-11-10 at 21.11.37

** The ‘pear’ command is not currently in your PATH, so you need to
** use ‘/Volumes/Meta/Users/Metaprime/pear/bin/pear’ until you have added
** ‘/Volumes/Meta/Users/Metaprime/pear/bin’ to your PATH environment variable.

Kurzer  Test : /Volumes/Meta/Users/Metaprime/pear/bin/pear list

Jetzt noch den PATH hinzufügen

export PATH=/Volumes/Meta/Users/Metaprime/pear/bin:$PATH

echo $PATH überprüfen ob der PATH auch dabei ist

pear -v   Jetzt können wir PEAR mit dem Kurzbefehl aufrufen   und z.B Version abfragen

Da haben wir ( das Instalation script)  noch eine alte Installation gefunden, die wir Löschen

** WARNING! Old version found at /usr/bin/pear, please remove it or be sure to use the new /Volumes/Meta/Users/Metaprime/pear/bin/pear command

Das Install Script hat nach bestätigter Frage die Zeile in die php.ini geschrieben .

Weiter Nützliche Optionale Pakete für PEAR installieren

pear install pear/Mail
pear install pean/Net_SMTP

Nun ans Eingemachte installation von PHP_Beautifier

Die Installation von PHP_Beautifier misslingt mit folgender Meldung

No releases available for package “pear.php.net/PHP_Beautifier” install failed 

Wir wechseln auf die BETA , welche klaglos funktioniert

sudo pear install PHP_Beautifier-beta  

Sublime Text findet alle nötigen Libs DOCH jetzt werden mal hundete Fehler ausgespuckt welche anzeigen das die PHP Deprecated Befehle in der PEAR Config überholt sind, also weitere Updates .

Last ein paar alte php befehle ausgetauscht und es läuft am ende der Nacht.

&new  gegen new suchen und ersetzen in 2 Files php_beautifier und REgistiry.php im Pfad   /Volumes/Meta/Users/Metaprime/pear/share/pear/PEAR

Das Sublime Text Plugin kann nun einfach über die Tools Command  Pallete aufgerufen werden mit FORMAT PHP

Sauber machen werden wir hier später .

MAC TERMINAL BEFEHLE 

Nach dem Editieren der php.ini Apache Restart .Eine Terminal Kommandos

sudo apachectl start

sudo apachectl stop

echo $PATH          Show me  PATH environment variable

whereis pear     auffinden von installation 

sudo find / -name “*Luftbalon*”        Find AnyThing with Terminal

z.B Finde den Pear PATH

locate bin/pear

Hinzufügen zu  PATH unsere envoriment Variable

export PATH=/usr/lib/php/bin:$PATH

Weiter TIPS &Links

Installation von PEAR unter MAC 10.5 Leopard  und phpunit

Path Settings for Snow Leopard OS 10.6

Install PEAR on MAMP 1.9

MAc Terminal Aliases 

Finde Facebook Freunde die NOT Fan einer Fanpage sind – FQL

Um die Freunde Einladungen zu Fanseiten Events oder Gruppen Sinnvoll zu gestallten .sollte man regional einladen können. Facebook bietet zwar an aus einer Region meist mein Home City einzuladen doch nicht alle Themen sind auf die eigene Region beschränkt. Wie zum Beispiel im Tourismus oder auch Journalismus, es werden  die ersten 4 Listen sowie die aktivsten Freunde angeboten doch das muss besser gehen .

Hier ein FQL Abfrage um Nicht Fans zu finden von 2 Fanpages   deren aktuelles Land Austria ist . Interessant wäre der EU Raum doch leider gibt es keine mir bekannte abfrage wie United Staates . fQL bietet keine NOT Operand so sind 2 Abfragen in einander geschachtelt.

SELECT uid, name, current_location FROM user
 WHERE current_location.country = 'Austria' AND
 uid IN (
 SELECT uid2 FROM friend WHERE uid1 = me()
 ) AND NOT (
 uid IN (
 SELECT uid FROM page_fan WHERE uid IN (
 SELECT uid2 FROM friend WHERE uid1 = me()
 ) AND (page_id=FANPAGEID1 OR page_id=FANPAGEID2)
 )
 )

Um diese FQL query etwas zu erweitern auf Deutschland zum Beispiel wird eine Zeile der obigen geändert.

 .. WHERE current_location.country in ('Germany','Austria') AND ..

FQL Graph get link stats for Multiple Urls

Um mehrfache URls wie z.B von einem Blog abzurufen fragt man den Facebook Graphen folgt ab über die FQL Schnittstelle. Wobei es keine rolle spielt ob die URL eine externe fremde oder eine Facebook Page ist. Einziger unterschied es wird nur die Summe der Fans  angezeigt.

SELECT url, normalized_url,like_count,comment_count,share_count,click_count,total_count FROM link_stat WHERE url in ("http://www.ard.de","www.orf.at")

Um alle Fanpage Kommentare und likes von der Page Timeline zu bekommen geht man wie folgt vor.

FQL Graph query Friends and Fan of Fanpage

Überlege ob es sinn macht für den MetaFriends Editor auch Fanpages einzubinden .Ist der Freund Fan der Fanpage ? Die Abfrage Via FQL und der Facebook API  schaut dann so aus.

SELECT first_name, last_name, pic_big FROM user WHERE uid IN(
 SELECT uid FROM page_fan WHERE page_id='PAGEID' AND uid IN (
 SELECT uid2 FROM friend WHERE uid1 = me() ))

Es würde beginnen Sinn zu machen wenn Interessen und Land Sprache mit angezeigt werden. Richtig spannend wäre “zeig mir die Freunde welche bereits Freunde in der Page Haben” um eine richtig eingeschweisste Community zu bekommen die nicht darauf wartet das die Page postet sondern ähnlich der Gruppen Eigenständig Diskussionen und Themen aufgreift.

Diese Abfrage kann im Facebook Graph Explorer getestet und verfeinert werden.

Htaccess Appache redirect if minified exist

Bei den meisten WordPress Themen sind die Javascript Files unkomprimiert , je mehr das Themen kann umso mehr JS Files werden geladen um etwas mehr Speed in die Sache zu bringen können wir diese htaccess regel im JS Order hinzufügen welche jede anfrage nach einem javascript file umgeleitet falls eine minify Version existiert. Der nächste schritt wäre alle Js anfragen in ein metamaster.mini.js umzuleiten. Die orginal files bleiben im ordner als referenz. Wir schrieben ein File  .htaccess mit folgendem. Das File geht dann in den ordner themes/MeineTheme/js

Htaccess rulle um umzuleiten wenn eine comprmierete  .min.js  existier

RewriteBase /
 RewriteCond %{REQUEST_URI} ^(.+)\.js$
 RewriteCond %{DOCUMENT_ROOT}/%1.min.js -f
 RewriteRule ^(.+)\.js$ %1.min.js 

Das ganze kann man natürlich für die CSS Files und ordner vorsetzen schaut dann so aus und kommt in den Themes/MEINThema/css Ordner

RewriteBase /
 RewriteCond %{REQUEST_URI} ^(.+)\.css$
 RewriteCond %{DOCUMENT_ROOT}/%1.min.css -f
 RewriteRule ^(.+)\.js$ %1.min.css 

Zum CSS und Javascript komprimieren gibt es viele online tools sowie wenn man Sublime Text 2 liebt ist die Erweiterung von bistory Sublime-Minifier GIT sehr fein.

Eine weitere Perfromance steigerung kann man durch die htaccess rule kann man für Bilder einrichten Google Drive als CDN zu verwenden ist eine heisser Tipp einiger Entwickler . Erstens Google hat viele gut verteilte Server und zweitens es ist kostenlos.

Hier werden alle Bilder von google drive angefordert. Wobei XXXX Ihr KEY ist. Tutorial Google Drive as CDN .Die files müssen in einem öffentlich zugänglichen Ordner sein .z.B MYWPDRIVE

RewriteEngine On
RewriteBase /
RewriteRule ^uploads/(.*)$ https://googledrive.com/host/XXXXXXXXXXXXXXXXX/MYWPDRIVE/$1 

Eines der sehr nützlichen Online htacces tools 

WordPress Blog Passwort vergessen ?

Es kann öfters vorkommen das man das eine oder andere Passwort vergisst vor allem wenn man viele blogs betreibt und im sinne der Sicherheit auch seine Passwörter variiert und komplex gestaltet .

Passwort zurücksetzten in 3 min

Solle die Email mir das Passwort nicht funktionieren was durchaus vorkommen kann .Kann man in 3 Minuten ein neues Passwort setzten über die phpMYAdmin  oder MYSQL Datenbank Schnittstelle die der Webhost anbietet  mit folgendem SQL Befehl.

update wp_users set user_pass=MD5('MEINNEUESPASSWORT') where user_login='admin'

Passwort Sicherheit

Auch wenn die meisten Leute glauben wer soll schon mein Webseite hacken. Webplatz kostet Geld und vor allem für halb Illegale Aktionen werden fremde Webseiten gerne übernommen vor allem dann wenn der domain url seriös klingt  und gut gelistet ist. Das auffinden von angreifbaren WordPress Seiten ist zu einfach über die google suche und übernehmen meist Roboter die tausende Webseiten abgraben um nach Öffnungen zu suchen.

Passwort min Gross klein Schreibung  min ein Zahl + Sonderzeichen und brauchbar sind auch umlaute da viele dieser script kids tools keine Umlaute beherrschen. Warum das ganze ? Gute Webseiten werden in Brutefoce hammer Technik Dauer angegriffen um das Passwort zu erraten das über hunderte Proxy mit unterschiedlicher IP so das ein blockieren fast nicht möglich ist.

wer sind die ?

Oft sind es junge Leute aus Ländern ohne Internet recht wie z.B Indonesien Malaysia Russland Türkei .Die scripty kids verdienen sich ein gutes Taschengeld mit mass mail Versand oder Werbefunk links. Oft wird auch damit geprallt wer wie viele Webseiten manipuliert  hat ähnlich einem Gamescore rankt der beste oben.

Dies nur als kleine Ergänzung und Self reminder Mensch ist nun mal bequem und gerade am Anfang denkt man nicht wie viel Arbeit verloren geht beim Verlust eines Blogs oder wenn google die domain blockt aus Sicherheits gründen.

Retrieve social Analytics data from Google

To parse and compare your Facebook insights and Google analytics Data some snippets . Can be tested and extended in the Facebook Graph Explorer

Facebook insights 

  • # NEW Likes per day
    https://graph.facebook.com/PAGENAME/insights/page_fan_adds?since={date.last30Days}&until={date.today}
  • # Engaged Users per day
    https://graph.facebook.com/PAGENAME/insights/page_engaged_users?since={date.last30Days}&until={date.today}
  • # Page impressions per day
    https://graph.facebook.com/12344556789/insights/page_impressions_unique?since={date.last30Days}&until={date.today}

Google Analytics API

  • Google Analytics Data
    Docs: Google Analytics data sources
    https://www.googleapis.com/analytics/v3/data/ga?ids=ga:&dimensions=ga:socialNetwork,ga:month&metrics=ga:visitors,ga:goalCompletionsAll&start-date={date.add(-90).format()}&end-date={date.today}

 

Facebook Content Reach – Update looped

Links :

If you keep sharing links Post Reach becomes low

Images :

Best format for shared picture are huge Formats 600×600 is recommended by stuff . Much better 1000 x 1000 vimeo style HD thumbs . Must not be in the page but at least linked in the og:image Tag.

Video :

Only uploaded video works .Youtube and Vimeo external links are handelt like links not video. Tagged User in video by user . Expetion cusom own videoplayer with great video content. Can go viral if community is used for these kind of posts

Text 

Very high reach should be at least 500 words to cover feed space and well written. Provoke a answer after read . mostly for higher aged people

Bigg APP Post 

Instagram Twitter Forusquere convert minimal to some close friends from the same network. Probably should be limited to FB List who have account at the other platfrom .

Http Statussmeldungen Http Respond List

Was die unterschiedlichen Web Http Status bedeuten.

Wenn ein Browser eine Seiten Service Anfragen an einem Web-Server macht , kann ein Fehler auftreten. Dies ist eine Liste von HTTP-Statusmeldungen, die zurückgegeben werden könnten Beim laden einer Seite

Informational

  • 100 – Continue
  • 101 – Switching Protocols

Successful Erfolgerich

  • 200 – OK
  • 201 – Created
  • 202 – Accepted
  • 203 – Non-Authoritative Information
  • 204 – No Content
  • 205 – Reset Content
  • 206 – Partial Content

Redirection Umleitung

  • 300 – Multiple Choices
  • 301 – Moved Permanently
  • 302 – Found
  • 303 – See Other
  • 304 – Not Modified
  • 305 – Use Proxy
  • 307 – Temporary Redirect

Client Error  – Client Fehler

  • 400 – Bad Request
  • 401 – Unauthorized
  • 402 – Payment Required
  • 403 – Forbidden
  • 404 – Not Found
  • 405 – Method Not Allowed
  • 406 – Not Acceptable
  • 407 – Proxy Authentication Required
  • 408 – Request Timeout
  • 409 – Conflict
  • 410 – Gone
  • 411 – Length Required
  • 412 – Precondition Failed
  • 413 – Request Entity Too Large
  • 414 – Request-URI Too Long
  • 415 – Unsupported Media Type
  • 416 – Requested Range Not Satisfiable
  • 417 – Expectation Failed

Server Error – Server Fehler

  • 500 – Internal Server Error
  • 501 – Not Implemented
  • 502 – Bad Gateway
  • 503 – Service Unavailable
  • 504 – Gateway Timeout
  • 505 – HTTP Version Not Supported
Posted in

Chrome Disable Same-Origin Policy in Chrome

For Developing local the same Origin Policy from Chrome can disturb the development process . Changing some Chrome Flags help to work on your local host without that error

Flags

–allow-file-access-from-files

–disable-web-security

With disabled Flags you can make Ajax request to other domains for testing keep in mind Chrome is running in insecure mode . Alternative you can make a second Shortcut for chrome to load your Developer version with that Flags disabled.

For MAC  /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome –allow-file-access-from-files –disable-web-security