Willkommen auf der privaten Homepage von Johannes Jarolim, Salzburg, Österreich. Welcome to the private homepage of Johannes Jarolim, Salzburg, Austria, Europe.
Dreihundertfünfundfünfzig

Artikel Insgesamt

Glasenbach Klamm Nature Flash #4

Glasenbach Klamm Nature Flash #4

Der Hintergrund wurde mittels Lightroom etwas aufgehellt: Der Schwarz-Weiss-Effekt ist nicht gebastelt.

Alternative
Bildformate

Glasenbach Klamm Nature Flash #3

Glasenbach Klamm Nature Flash #3

Ich schwenke um und widme mich nun für den Rest des Ausfluges der Klamm. Die F14 wandelt eine ganz normale – wenn nicht sogar trübe – Lichtstimmung in etwas mystisch Dunkles. Die Beleuchtungs-Situation bestimmen ausschließlich die beiden Nikon Systemblitze.

Alternative
Bildformate

Glasenbach Klamm Nature Flash #2

Glasenbach Klamm Nature Flash #2

Ich wechsle zum Nikkor 18-70mm – Die Linse nimmt mehr Streulicht entgegen, was mir heute aber sehr gut gefällt: Ich schaue bei den Aufnahmen extra, diese Lichtcorona so oft wie möglich einzufangen.

Alternative
Bildformate

Glasenbach Klamm Nature Flash #1

Glasenbach Klamm Nature Flash #1

Ein wunderschöner Nachmittag startet – Ich bin mit einem sehr guten Freund unterwegs und bringe die Fotoausrüstung endlich wieder einmal unter die Leute.

Ich möchte heute mit Hilfe meiner Blitzausrüstung neue Perspektiven und Interpretationen aus der Naturfotografie kitzeln.

Hier mein erstes Motiv – Aufgearbeitet mit einer Softbox und einem harten Blitz von unten – Aufgefangen mit meinem 35er F2.

Das Ablenden auf F14 blendet das Umgebungslicht weg: Ich setze die Lichtsituation wie ich möchte.

Alternative
Bildformate

Bullshit Tennis

bullshit-tennis-2013A new game arose on the gamefield of boring team webinars or online meetings: bullshit tennis.

This article helps you start into a joyful future where every meeting is a chance to improve your gameplay. Just follow those few steps and you’re up and running:

Find a playing partner

Every serious sports-competition needs a worthy opponent: find an associate evenly bored by the meeting you’re both attending to.

Establish a secondary channel of communication

If the meeting gets handled via skype, contact your game partner via icq, google talk or any other plattform allowing live communication. If everything is blocked by your administrator, change to plan B: text each other with your mobiles.

Start the game with the first serve

The player starting the game serves the first bullshit term and communicates it on the secondary channel:

player1 > SERVE: "project evaluation"

Return the term

The second player now has to return cleanly by mentioning the served term in the meeting or by including it in a question:

"Was this topic covered during PROJECT EVALUATION?"

Agree on the score and continue the match

Both players use the secondary communication channel to agree over the earned point:

player1 > Well played!
player2 > 1:0 ?
player1 > yes, 1:0 - your service

Player 2 now has the service and serves his bullshit term.

Winner

Winner is the player returning most of the terms in the meeting/webinar.

Tips

  • For much more intensive games, agree on a time limit in which each player has to return the phrase after it was served (bullshit is best served fast).
  • Play doubles: Two players on each side trying to return the served term in time; points get counted for the team
  • Term is unrelated: The more unrelated the term – the harder the clean return
  • Keep on topic – there is not much fun in complete-off-topic bullshitting

Pimcore: Viewhelper aus Plugin heraus registrieren

Lang gesucht und schließlich gefunden: Wie registriere ich eigene Viewhelper aus einem Pimcore-Plugin heraus.

Der Anwendungsfall

Wir erstellen ein Frontend-User-Authentifizierungs-Plugin, dass Pimcore nach Aktivierung (ganz vereinfacht) folgende Funktionalitäten zur Verfügung stellen soll:

  • Transparenter Schutz von Documents via Zend_Controller_Plugin
  • Ein Controller, mit dessen Hilfe der Login- und Logoutvorgang erfolgt
  • Ein ViewHelper, mit dessen Hilfe eine LoginBox dargestellt werden kann

Die ersten beiden Funktionalitäten stellen kein Problem dar – Doch wie bekomme ich den ViewHelper registriert?

Das Problem

Um eine abgeschlossene Funktionalität des Plugins zu gewährleisten, sollen die View Helper Klassen im Plugin-Verzeichnis liegen. Idealerweise sind die View Helper ohne weiteren Aufwand verwendbar, sobald das Plugin aktiviert wurde. Wir müssen daher mit Code, der ausschließlich im Plugin-Verzeichnis liegt, einen weiteren Helper-Path registrieren. Dazu müssen wir Zugriff auf die Pimcore_View-Instanz erhalten.

Da Pimcore im Grunde genommen aber keine Zend_Application, sondern eine Zend-Komponenten-nutzende Applikation ist, fallen Lösungswege wie zB. Konfigurations-Injection in die Bootstrap-Klasse flach.

Ein Lösungsweg via Controller Action Helper

Als Grundvoraussetzung haben wir das Plugin mit folgender Verzeichnisstruktur:

/plugins/FrontendUserAuth
/plugins/FrontendUserAuth/controllers
/plugins/FrontendUserAuth/install
/plugins/FrontendUserAuth/lib
/plugins/FrontendUserAuth/lib/Plugin.php
...

Die Plugin.php extended die Klassen Pimcore_API_Plugin_Abstract, welche selber ein Ancestor der Klasse Pimcore_API_Abstract ist. Wir finden hier die Methode preDispatch, welche von Pimcore vor dem Start des Display-Loops ausgeführt wird. Wir überschreiben die Methode in unserem Plugin und registrieren unseren Zend_Controller_Action_Helper, der den neuen ViewHelper-Pfad registrieren soll:

class FrontendUser_Plugin extends Pimcore_API_Plugin_Abstract implements Pimcore_API_Plugin_Interface {
  ...
  public function preDispatch() {
    Zend_Controller_Action_HelperBroker::addHelper(new FrontendUser_Controller_Action_Helper_ViewHelperInjector());
  }
  ..
}

Die neue Klasse erstellen wir hier:

/plugins/FrontendUserAuth/lib/FrontendUserAuth/Controller/Action/Helper/ViewHelperInjector.php

Zur Ausführungszeit des Controller Action Helpers bekommen wir dann mittels getActionController() den gerade ausgeführten Action Controller in die Hand: Voila, wir können global einen ViewHelperPfad registrieren, der in unserem Plugin-Directory Tree liegt:

<?php

  class FrontendUserAuth_Controller_Action_Helper_ViewHelperInjector extends Zend_Controller_Action_Helper_Abstract {

    public function preDispatch() {

      $controller = $this->getActionController();
      $view = $controller->view; /* @var $view Pimcore_View */
      $view->addHelperPath(PIMCORE_PLUGINS_PATH . '/FrontendUserAuth/lib/FrontendUserAuth/View/Helper', 'FrontendUserAuth_View_Helper_');

    }

  }

View Helper

Danach erstellen wir einen kleinen View Helper

/plugins/FrontendUserAuth/lib/FrontendUserAuth/View/Helper/LoginBox.php

welcher hier im Beispiel ganz einfach ein Loginform ausgibt:

<?php

  class FrontendUserAuth_View_Helper_LoginBox extends Zend_View_Helper_Abstract {

    public function loginBox() {
      return new FrontendUserAuth_Form_LoginForm();
    }

  }

Schlußendlich benutzen wir den ViewHelper in einem View Script der Website und freuen uns über eine neue, sauber abgekapselte, Funktionalität:

<div class="login-area">
  <?php echo $this->loginBox(); ?>
</div>

Einsatz des Zend_Paginators in sauber abstrahierten Modell-Umgebungen

Saubere Paginierung von Daten ist ein Thema, über das man als Webentwickler öfter stolpert. Als eifriger Nutzer der Komponenten des Zend Frameworks nutze ich natürlich gerne die Zend_Paginator Komponente. Diese separiert mittels Adaptern die Paginierung von der Datenquelle und stellt für mich durchaus eine der besten Implementierungen in diesem Themengebiet dar. Mehr lesen …

@font-face und Mobilbrowser

Ein kleiner Tip: Manche Mobilbrowser (Beispiel: Der Standard- Systembrowser auf dem Samsung Galaxy Tab 10.1) haben Probleme mit relativ (zur Position des Stylesheet) verlinkten Font-Dateien.

Mehr lesen …

WordPress – Inline Mediaupload

As side-product to my commercial or open source work, i often create prototypes. The WordPress plugin Inline Mediaupload is the elaborated result of a feasability study for the next generation of my plugin Yet-Another-Photoblog (YAPB). In this study i verified that the new WordPress 3.3 Media Upload Feature may be directly integrated into the normal post/page edit form.

Mehr lesen …

Pimcore – Gutes CMS mit verbesserungsbedürftiger Positionierung

Im Rahmen meiner Arbeit ist mir das CMS Pimcore unter die Finger gekommen: Dieses Open Source CMS wurde durch eine für Salzburger Verhältnisse großen Agentur namens Elements entwickelt.

Mehr lesen …

 « 1 2 3 4 5 6 ... 35 36 »