Wochenbericht 2015.10

Entwicklung

Netzpolitisches

Einen Windows-Rechner als virtuelle Maschine weiternutzen

Ein kurzer Beitrag zum Thema Virtualisierung. Ich habe in der Firma auf Linux umgestellt. Neuer Rechner, genug RAM, neuer Prozessor. Nun muss ich leider meinen alten Rechner aus verschiedenen Gründen mitschleifen. Aus mehreren Gründen (und weil der Flo bei fmjf.de mal zu Sysinternals gefragt hat), kann ich mal so aufschreiben, was ich gemacht habe, was ich gelassen habe, und was ich besser hätte tun müssen.

Was ich gemacht habe:

Ich habe nach Tools gesucht, die mir möglichst einfach meinen Rechner „as is“ in eine VM konvertieren. Oder ein Image, dass ich direkt (am besten in Virtualbox) laden und weiternutzen kann. Dabei bin ich über Disk2VHD gestolpert. Das hat meinen Rechner im Betrieb in eine VHD (nicht VHDx und bloß nicht Shadow-Copy-Optionen anhaken!) konvertiert.

Dann habe ich eine Virtualbox-Konfiguration angelegt und das entstandene VHD-File als Festplatte gemountet. Hat es funktioniert? Ja, perfekt. Keine Treiberprobleme, Scheinbar lief da im Hintergrund ein Sysprep mit durch, die Kiste läuft jedenfalls ohne Probleme. Fast. Aber daran bin ich selbst schuld.

Was habe ich nicht gemacht?

Ich habe ein paar Anwendungen zuwenig deinstalliert, die man in einer Virtuellen Maschine nicht mehr deinstalliert bekommt: VmWare Player, ATI-Catalyst-Center. VmWare beschwert sich in der Deinstallations-Routine, dass man in der VM ja kein VMWare installieren soll (Nein! DOCH! OOOOH!) und beendet diese dann. Sehr schlau. Der Catalyst Center-Dingens stürzt beim Versuch entfernt zu werden einfach nur ab. Klasse. Da bekommt man Vertrauen in die Lösungen. VirtualBox in der VirtualBox ließ sich dagegen ohne Probleme entfernen.

Was hätte ich noch machen sollen?

Etwas mehr aufräumen, insbesondere Dinge, die in VMs schlicht nicht sinnvoll sind, vorher zu deinstallieren. Dazu gehören Virtualisierungstools, ggf. Hersteller-Crapware (HP Software-Dreck), die leidigen Grafikkarten-Control-Center (Wer braucht sowas? Ich brauch doch in der Regel einfach nur die Treiber, aber die wollen die Hersteller nicht so ohne alles rausgeben).

Also: Alles was irgendwie Hardware- oder Virtualisierungsspezifisch ist, von der Platte fegen. Vorher. Ansonsten läuft das mit Disk2VHD und Virtualbox schon ziemlich fluffig.

Wochenbericht 2015.09

Entwicklung

Was das erscheinen von HTTP/2 angeht, hatte ich einem Kollegen prophezeiht, dass Chrome und Firefox ca. 2-4 Wochen (also das nächste Release) brauchen, bis HTTP/2 implementiert sein würde, NGINX ca. 2-4 Monate und Apache ca. 2 Jahre (nativ). Für IBM Domino hab ich mal 5-10 Jahre geschätzt, die sind ja noch langsamer als Apache in Debian. Für den Firefox lag ich damit schon mal richtig.

Netzpolitisches

Websites bauen mit pimcore

Ich bin ja als PHP-Entwickler nicht gerade erfahren, ich mach dann eher das mit dem Frontend. Neuerdings beschlich mich allerdings der dringende Wunsch, mal ein bisschen Abwechslung zu haben und ich habe mich auch mal auf der Entwicklungsseite mal ein bisschen mit pimcore auseinandergesetzt.

Dazu habe ich eine kleine Website gebaut, die über Energydrinks informieren kann. Die Website ist direkt zweisprachig und von Objekten getrieben. Ich will nur mal einen kleinen Einblick geben, wie das ganze anhand der Drink-Darstellung aussieht.

Der Drinks-Controller

<?php

use Website\Controller\Action;
use Pimcore\Model\Object;


class DrinksController extends Action
{

    public function defaultAction()
    {
        $this->enableLayout();

    }

    public function listDrinksByCaffeineAction()
    {
        $this->enableLayout();

        $drinkList = new Object\Drink\Listing();
        $drinkList->setOrderKey("Koffeingehalt");
        $drinkList->setOrder("DESC");

        $this->view->drinks = $drinkList;


    }

    public function drinkDetailAction(){
        $this->enableLayout();

        $drink = Object\Drink::getById($this->getParam('id'));

        $this->view->drink = $drink;

    }

    public function indexAction()
    {
        $this->enableLayout();
    }
}

Hier werden eigentlich nur zwei Views mit passenden Daten gefüllt, die dann z.B. in list-drinks-by-caffeine.php (man beachte die Benamung der Datei im Vergleich mit der Action) angezeigt werden:

<?php
$this->layout()->setLayout('standard');
$lang_prefix = $this->document->getProperty('mainNavStartNode')->getFullPath();
?>


<?php while ($this->block("contentblock")->loop()) { ?>
    <?= $this->wysiwyg("content"); ?>
<?php } ?>


<table class="table">
    <tr>
        <th><?= $this->translate("Bild"); ?></th>
        <th><?= $this->translate("Koffeingehalt"); ?> / 100ml</th>
        <th><?= $this->translate("Name"); ?></th>
        <th><?= $this->translate("Hersteller"); ?></th>
    </tr>



    <?php
    /** @var  \Pimcore\Model\Object\Drink $drink */
    foreach ($this->drinks as $drink) { ?>

        <tr>
            <td>
                <a href="<?= $this->url(array(
                    "prefix" => $lang_prefix,
                    'id' => $drink->getId()
                ), "drink") ?>">
                    <?php if ($drink->getBild()) { ?>
                        <?= $drink->getBild()->getThumbnail('list')->getHTML() ?>
                    <?php } ?>
                </a>

            </td>

            <td class="col-sm-4">
                <?= $drink->getKoffeingehalt(); ?>

            </td>
            <td class="col-sm-4">


                <a href="<?= $this->url(array(
                    "prefix" => $lang_prefix,
                    'id' => $drink->getId()
                ), "drink") ?>">
                    <?= $drink->getName(); ?>
                </a>
            </td>
            <td class="col-sm-4">

                <a href="<?= $this->url(array(
                    "prefix" => $lang_prefix,
                    'id' => $drink->getHersteller()->getId()
                ), "hersteller") ?>">
                    <?= $drink->getHersteller()->getName(); ?>

                </a>

            </td>
        </tr>

    <?php }; ?>

</table>

Das sieht dann so aus:

Drinks Übersicht

Für die Abbildung der Detail-Ansicht muss man sich dann ein bisschen mit statischen Routen befassen, die man in pimcore pflegen kann, die sieht dann so aus:

Drinks Detail

Zusammenfassend kann ich sagen:

Mit dem CMS/PIM-System pimcore und dem Hilfsmittel PHPStorm bekomme ich (PHP nicht so erfahren) recht schnell brauchbare Ergebnisse und kann Seiten, die viele strukturierte Daten darstellen sollen, die untereinander verknüpft sind, schnell und einfach umsetzen.

Das ersetzt sicher keinen PHP-Profi, der 10 Jahre Zend-Erfahrung hat, kann aber ein guter erster Schritt sein, solche Modelle mal anzudenken. Wen das ganze interessiert, kann sich bei pimcore.org weitere Informationen holen, oder mich fragen.

Seite 40 von 58« Erste...102030...3839404142...50...Letzte »