PHP BlokePHP zu JavaScript Compiler (22.5.2017, 12:19 UTC)
Seit ein paar Jahren arbeite ich "on and off" an einem Compiler der PHP in JavaScript umwandelt. Etwas Ähnliches gibt es mit Niklas von Herztens php.js schon, meine Engine ist jedoch keine VM sondern ein in PHP geschriebener Parser und Compiler. Während das resultierende JavaScript immer noch eine...
Link
CodeMercenaryCouchBase RAW Query ausführen (4.5.2017, 08:06 UTC)

Mit den Couchbase-Treibern von Marcel funktioniert ein Connect und arbeiten mit Couchbase ganz simpel.
Im Zuge meiner Arbeit stieß ich irgendwann auf das Problem, einen RAW-Query ausführen zu müssen. Damit ihr nicht auch so lange suchen müsst, hier meine Lösung:

DB::connection()->executeQuery(CouchbaseN1qlQuery::fromString($myRawCouchbaseQueryAsString));

 

Link
CodeMercenarySourceTree startet nicht mehr (Fehler CLR20r3) (2.5.2017, 12:47 UTC)

Mein SourceTree startet nicht mehr.
Das so etwas passiert, ist nicht schön, besonders, wenn man dieses tolle Tool beruflich benötigt. Es macht die Arbeit einfacher, gerade dann, wenn man viele Repos verwaltet und einfach auf dem laufenen bleiben möchte.

Schaut man in die Ereignisanzeige, dann offenbart sich der Fehler CLR20r3. Dieser Fehler liegt tiefer und wenn man ein wenig sucht, dann findet man die Lösung dazu:

  1. Deinstallieren von SourceTree
  2. Nun nicht direkt neu installieren, sondern in das VZ „%localappdata%\Atlassian\“ gehen und dort alle Unterverzeichnisse mit „SourceTree“ löschen!
  3. Nun SourceTree neu installieren.

Nun muss man leider das Programm nochmals neu konfigurieren, aber immerhin läuft es nun wieder

 

Link
Webdesign und TYPO3 Blog aus DuisburgPair Programming Tipps und Studien (19.4.2017, 20:23 UTC)

Pair Programming ist sehr gut für das eigene Team und die Software-Qualität. Leider gibt es viele Vorbehalte gegenüber dieser tollen Art zu arbeiten. Das ist sehr schade. Seit einigen Jahren bin ich ja auf Konferenzen und User-Groups mit der Funk-Tastatur unterwegs und habe ja auch bei den Never Code Alone Events #ncaevents ausschließlich Pair-Programming im Fokus. Hier gebe ich euch ein paar gute Tipps für den reibungslosen Ablauf.

Driver Navigator / Fuck it

Pair Programming Wikipedia

Pair Programming Wikipedia

Sucht man in staubigen Sachbüchern oder bei Wikipedia nach Pair-Programming so kommt man ganz schnell zum Driver-Navigator-Spiel. Hier soll die Person – ganz Gender neutral – an der Tastatur nur tippen und der Navigator praktisch die Richtung vorgeben. Das mag ja pädagogisch wertvoll sein, aber wer steht schon auf Pädagogik. Schnappt euch bitte jeder eine Tastatur und arbeitet gemeinsam und zusammen. Alles andere führt nur zu völlig unnötigen Frust. Pair Programming ist kein Selbtsläufer und muß auch geübt werden. Dabei ist auch viel Geduld und natürlich Respekt gefragt. Es geht nicht um richtig und falsch, sondern um eine gemeinsame Sprache und Lösung.

Bekannte Pitfails die ihr vermeiden solltet

  • Beide Webdeveloper müssen sich mit dem aktuellen task auskennen, damit es nach vorne geht. Sonst ist es nur ein Know-How Transfer. Der ist zwar auch wichtig, aber so dann doch sehr ineffizient und kostenintensiv
  • Pair-Programming ist kostenintensiv. Deshalb zieht in der Zeit dran und gebt Gas. Ihr werdet so oder so nicht den doppelten Output haben. Aber natürlich ist das Ergebnis klarer und weniger Bug anfällig. Bleibt aber nicht in Schönheit oder Prinzipien und Diskussionen hängen. Liefert gute Arbeit ab.
  • Redet miteinander. Natürlich auch der Driver. Tauscht euch aus, plat gemeinsam den nächsten kleinen Schritt und setzt ihn gemeinsam um. Das muß auch gelernt werden. Macht die Schritte nicht zu groß und wechselt auch häufig ab.
  • Pair-Programming klappt nur mit Leuten, die sich grün miteinander sind und im wahrsten Sinne des auch riechen können. Leider gibt es hier immer wieder vielleicht unangenehme Situationen. Tut auch selbst einen gefallen und geht da mit frischen Klamotten hin und Zähneputzen und Kaugummi ist auch ok. Macht gerne auch mal das Fenster auf

Quellen zu Pair-Programming

In der Software-Entwicklung ist Pair-Programming kein neues Topic. Allerdings ist es gerade im Bereich Webdeveloping viele Jahre verloren gegangen. Neben Uncle Bob Martin Fowler und dem Xtreme-Programming gibt es natürlich noch zahllose andere Namen. Fred Brooks, John Von Neummann, Richard Gabriel, Jerry Weinberg or Edsger Dijkstra sollen hier mal nur einige sein. Und natürlich findet das Thema in der Agilen Transformation auch eine immer größere Aufmerksamkeit.

  • 1992 – Das dynamische Duo – Larry Constantine Berichtet über Pair Programming bei der Whitesmith Inc. Hier haben schon damals 2 Programmierer mit einer Tastatur gemeinsam gearbeitet. Man sprach in diesem Zusammenhang von einem Schulterblick.
  • 1993 – Die Studie “The benefits of collaboration for student programmers” von Wilson befasst sich schon früh mit den Vorteilen von Pair-Programming. Allerdings ging es mehr um den Nachweis, daß es überhaupt funktioniert.
  • 1995 – In dem Buch “Pattern Languages of Pro

Artikel gek: Lesen Sie den Rest hier (weitere 5250 Bytes)

Link
Webdesign und TYPO3 Blog aus DuisburgCodeception Test einzelnen ausführen (25.2.2017, 13:12 UTC)

Gerade beim der Ebtwicklung von einem Codeception Test ist es wichtig Codeception Tests auch mal einzeln auszuführen.

Codeception Test Single

Codeception Test Single

Tests sind ja immer auch thematisch gruppiert. Dafür sollte man auch immer mit Cest- und nicht mit Cept-Files arbeiten. Da die PHP-Webdevelopern generell auch mehr Möglichkeiten bieten sind die Cest-Files auch in meinen Projekten fest etabliert. Betrachten wir einmal aus meinem Silex Codeception Repository den NavigationCest.

<?php
use Step\Acceptance\Acceptance;
use \Codeception\Scenario;

class navigationCest
{
    ...

    public function checkLinksToAnchor(Acceptance $I, \Page\Startpage $startpage)
    {
        $links = $I->grabMultiple($startpage::$navigationLink, 'href');
        foreach ($links as $link) {
            $I->assertContains('#', $link, 'Link contains #: ' . $link);
        }
    }

    ...


    }
}

Einzelnen Codeception Test ausführen

In den Cest-Szenario werden verschiedenen Tests für die Navigation ausgeführt. Jetzt ist es natürlich möglich, daß nur einer failed. Jetzt möchte man natürlich nicht immer alle anderen ebenfalls ausführen und den Bug schnell fixen.

php vendor/bin/codecept run acceptance navigationCest.php: checkLinksToAnchor

So kann man nur einen bestimmten Codeception Test ausführen.

PHP-Kurs Inhouse-Schulung Codeception

Ab sofort können auch verschiedene PHP-Kurs Inhouse-Schulungen über mich gebucht werden. Hier ist auch Codeception ein Thema.

Automatisierte Tests mit Codeception für effektive Entwicklung

Je eher ein Bug gefunden wird desto günstiger ist es diesen zu beheben. Mit Codeception Acceptance Tests kontrolliert man dabei nicht nur das Backend, sondern die gesamte Applikation als fertiges Produkt. Javascript, CSS, Vendor libraries im Zusammenspiel und auch fertig komprimiert. Navigationen, Tooltips, Formulare, Mouse Overs und auch Lightboxen. Klappt hier alles zuverlässig. Und wer hat schon Lust das auf 3 Browsern mit 2 Auflösungen zu testen. Codeception

Kostenlose Webdevelopment Workshops – Never Code Alone

Seit letzten Jahr richten wir auch alle 3 Monate einen kostenlosen Webdevelopment Workshop aus und versuchen so, die Software-Qualität als Initiative zu fördern. Dabei ist es uns wichtig professionelle Schulungen kostenlos zugänglich zu machen. Neben den Schulungen bieten wir auch die Möglichkeit Gastbeiträge zu veröffentlichen. Diese werden zusätzlich von einem professionellen Redakteur korrigiert und in Absprache mit euch veröffentlicht.

Der TYPO3 Webdesign Blog Codeception Test einzelnen ausführen erschien zuerst auf Webdesign und TYPO3 Blog aus Duisburg.

Link
PHPUG WürzburgEinladung zum März-Treffen / Verlosung PHPStorm-Lizenz (22.2.2017, 18:40 UTC)

Hallo alle zusammen!

Wir treffen uns am 01. März um 19 Uhr in

Mennas Time Out
Frankfurter Straße 1
97082 Würzburg

Parkplätze sind in der näheren Umgebung ausreichend vorhanden, Straßenbahn-Haltestelle: Wörthstraße.

Und dran denken: Es wird eine Lizenz von PHPStorm verlost!

Ich freue mich auf viele Teilnehmer und rege Diskussionen!

Viele Grüße
Jason

Link
CodeMercenaryIm jQuery tablesorter nach deutschem Datum sortieren (20.2.2017, 14:07 UTC)

Den jQuery tablesorter kennen bestimmt viele, ich benutze diesen sehr häufig und gern. Allerdings kann das Ding von Haus aus nicht nach dem deutschem Datumsformat (dd.mm.yyyy [hh:mm]) richtig sortieren.

Hier dazu mein „Plugin“, dass in die entsprechende JavaScript Datei gehört:

$.tablesorter.addParser({
 id: 'germanDate',
 is: function(s) {
 return false;
 },
 format: function(s) {
 var dateMatches = s.match(/([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{2,4}) ([0-9]{1,2}):([0-9]{1,2})/i);
 return dateMatches[3]+dateMatches[2]+dateMatches[1]+dateMatches[4]+dateMatches[5];
 },
 // set type, either numeric or text
 type: 'numeric'
 });

$('#tblApps').tablesorter({
 sortList: [[1,0]],
 headers: {
 0: { sorter: false },
 2: { sorter: 'germanDate' },
 3: { sorter: false }
 }
 });

Damit kann mein Frontend nun auch innerhalb von Tabellen nach Terminen im deutschen Datum richtig sortieren.

Link
PHPUGFFMDie UG als Teil der WebWeek (15.2.2017, 20:20 UTC)

In 4 Wochen treffen wir uns wieder. Am 16. März sind wir wieder bei Check24 zu Gast. Diesmal als Teil der WebWeek

Bis dahin.

Link
Webdesign und TYPO3 Blog aus DuisburgTwig key underscore Unterstrich dash Template attribute-Methode (31.1.2017, 12:59 UTC)

Ein Twig key underscore und gerade die Kombination aus Minus und Underscore können im Twig-Template nicht direkt angesprochen werden. Ist dann noch der Strict Mode gesetzt wird eine Exception „Array to string conversion“ geworfen. Allerdings ist es auch ohne den strict_variables ärgerlich. Man kommt nicht an den Value im Template und dann stimmt die Ausgabe nicht. Die Lösung ist hier der Zugriff über die attribute-Methode.

Twig key underscore „Array to string conversion“ mit attribute-Methode

Twig Key Underscore

Twig Key Underscore

Leider hat man nicht immer Einfluß auf die Datenquelle. Gerade wenn man mit importierten Daten aus einem anderen System arbeitet. Bei einem Silex Projekt mit einem CSV-Import für Elasticsearch ist mir dieser Fehler untergekommen. Hier gibt es jetzt die einfache Lösung:

{{ attribute(object, method) }}

{{ attribute(object, method, arguments) }} {{ attribute(array, item) }}

Weitere Anwendungsfälle sind hier auch dynamische Keys.

Twig-Template isset mit defined

Grundsätzlich kann man in Twig auch die Existenz einer Variablen prüfen, bevor man auf diese zugreift.

{{ attribute(object, method) is defined ? 'Method exists' : 'Method does not exist' }}

Das ist allerdings keine effektive Art der Entwicklung. Hier wird gerade der Template Code stark aufgebläht. Von daher sollte man einfach im Live-Betrieb über die Environment-Variable den Strict-Mode ausschalten. Während der Entwicklung hingegen macht er durchaus Sinn. Aber ein robustes Template schützt nur eine Legacy-Applikation. Das ist der falsche Entwicklungsweg. Einen Wrapper für Keys, die im Template verwendet werden, ist ebenfalls der falsche Weg. Nach Möglichkeit ist hier ganz oben an der Datenquelle und der Ursache der Fix vorzunehmen.

Silex Twig-Templating

Das Micro-Framework Silex eignet sich hervorragend für die schnelle Implementation von Marketing Landingpages. Das Webdesign von PHP-Kurs Inhosue-Schulung basiert darauf. Das entsprechende GitHub-Repo ist hier zu finden.

Der TYPO3 Webdesign Blog Twig key underscore Unterstrich dash Template attribute-Methode erschien zuerst auf Webdesign und TYPO3 Blog aus Duisburg.

Link
Gjero KrsteskiPHP Nuclear Reactor (25.1.2017, 16:59 UTC)

Asynchronous programming is a way to create programs that can execute multiple parallel tasks faster in the same process by executing code while other parts if the programs wait for I/O operations to finish, like database accesses, file accesses, network accesses, etc..

ReactPHP is a low level library similar to JavaScript Node.js that can be used to implement asynchronous programming in PHP, so you can write PHP code that can efficiently access multiple files, databases, or network computers in parallel, making everything faster.

The PHP Nuclear Reactor is library based on PIMF micro-framework that implements the MVC design pattern on top of ReactPHP.

This way you can continue to write PHP MVC components the way you are used to do, and still work well in an asynchronous programming environment based on ReactPHP.

http://gjerokrsteski.github.io/reactphp-pimf/

Link
LinksRSS 0.92   RDF 1.
RSS 2.0 Feed   RDF 1.
100% Planet PHP   PHP5 powered
PEAR powered  
Code wird von Planet-PHP zur Verfügung gestellt. Vielen Dank.