Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the simple-lightbox domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /www/htdocs/w010b2f5/page_m/wp-includes/functions.php on line 6121

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the advanced-responsive-video-embedder domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /www/htdocs/w010b2f5/page_m/wp-includes/functions.php on line 6121

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501

Deprecated: Use of "parent" in callables is deprecated in /www/htdocs/w010b2f5/page_m/wp-content/plugins/simple-lightbox/includes/class.options.php on line 501
Mac OS X – mkleine.de https://mkleine.de Alles rund um Softwareentwicklung Sat, 12 May 2018 07:36:03 +0000 de hourly 1 Mit PHP7 auf MSSQL-Datenbanken zugreifen unter Mac OS X & MAMP https://mkleine.de/blog/2017/09/19/mit-php7-auf-mssql-datenbanken-zugreifen-unter-mac-os-x-mamp/ Tue, 19 Sep 2017 10:00:20 +0000 http://mkleine.de/?p=1832 Wie der Titel schon sagt, hatte ich vor kurzem die Herausforderung, auf eine MSSQL-Datenbank zugreifen zu dürfen. Unter PHP5 war das Ganze relativ mit dem Paket php5-mssql möglich (außer unter Mac OS X). Mit PHP7 ist das mssql-Paket entfallen und wird nicht mehr entwickelt.

Also musste eine andere Lösung her. Diese nennt sich in diesem Konkreten Fall dblib. Hiermit können über PDO dann Datenbankverbindungen zu MSSQL aufgebaut werden. Unter Linux / Ubuntu war das Ganze relativ schnell eingerichtet. Jetzt mussten wir es nur noch unter Mac OS X zum laufen bekommen, um lokal auch entsprechend entwickeln zu können.

Als Basis dient hier FreeTDS, welches die grundlegende Datenbankverbindung dann öffnet. Dblib ist dabei „nur“ eine PHP-Extension, welche entsprechend mit FreeTDS kommuniziert. Soweit so gut.

brew install freetds

Dazu hatte ein Arbeitskollege die Idee, PHP7 mit brew zu installieren, welches die entsprechende .so-Datei ebenfalls enthielt. Obwohl ich lokal unter MAMP noch auf Version 7.0.15 bin, konnte ich die .so-Datei von 7.0.19 nutzen. Diese wurde dann in das richtige Verzeichnis unter MAMP gelegt und in der php.ini geladen. Danach konnte die erste DB-Verbindung auch schon aufgebaut werden.

]]>
iCloud-Einstellungen auf dem MacBook ohne Passwort löschen https://mkleine.de/blog/2017/02/20/icloud-einstellungen-auf-dem-macbook-ohne-passwort-loeschen/ Mon, 20 Feb 2017 11:41:08 +0000 http://mkleine.de/?p=1782 Nachdem meine Freundin ihre Apple-ID (die Mailadresse) geändert hatte, ohne sich zuvor auf dem MacBook unter iCloud abzumelden, waren wir in einer Patt-Situation. Denn um sich dort abzumelden muss man das Passwort der aktuellen/alten Apple-ID eingeben (welche es nicht mehr gibt). Also klappt das abmelden praktisch nie und man bekommt immer die Meldung, dass die Emailadresse oder das Passwort nicht korrekt seien.

Also musste der Apple-Support helfen. Anfangs dachte ich nicht, dass das Problem für den Support so ohne weiteres lösbar sei, aber ich habe mich geirrt. Die Schritte lauten wie folgt (für MacOS Sierra 10.12.1):

  • Unter id.apple.com mit der aktuellen E-Mail anmelden und das entsprechende Gerät löschen (in diesem Fall ein MacBook Pro 15″).
  • Danach ein paar Dateien auf dem Mac löschen (siehe unten)
  • Unter Systemkonfiguration / iCloud mit den neuen Daten anmelden
  • Rechner einmal zur Sicherheit neustarten

Diese Dateien und Verzeichnisse müssen gelöscht werden (<Benutzername> muss natürlich durch Euren Account-Namen auf dem Mac ersetzt werden):

rm /Users/&lt;Benutzername&gt;/Library/Preferences/com.apple.accounts.plist
rm /Users/&lt;Benutzername&gt;/Library/Preferences/com.apple.accountsd.plist
rm /Users/&lt;Benutzername&gt;/Library/Preferences/com.apple.icloud.fmfd.notbackedup.plist
rm /Users/&lt;Benutzername&gt;/Library/Preferences/com.apple.icloud.fmfd.plist
rm /Users/&lt;Benutzername&gt;/Library/Preferences/com.apple.identityservicesd.plist
rm -rf /Users/&lt;Benutzername&gt;/Library/Application\ Support/iCloud

Oder alternativ auch über den Finder. Dazu den Finder öffnen, mit gedrückter ALT-Taste auf „Gehe zu…“ klicken und dann „Library“ auswählen. Danach die Dateien aus der Liste oben löschen (bitte keine anderen und wirklich nur die genannten). Bei dem letzten Eintrag handelt es sich um ein Verzeichnis.

Das alles ist natürlich ohne Gewähr (wenn auch vom offiziellen Apple-Support so für unseren Fall vorgeschlagen).

]]>
Magento2 Composer Update: Failed to enable crypto https://mkleine.de/blog/2016/07/05/magento2-composer-update-failed-to-enable-crypto/ Tue, 05 Jul 2016 16:00:37 +0000 http://mkleine.de/?p=1728 Wie mittlerweile bekannt sein sollte, entwickle ich Magento2 ebenfalls auf einem Mac unter MAMP (3.5) mit PHP 5.6 und PHP 7. Das lief auch alles wunderbar, bis Magento auf ihrer eigenen Repo-Source (https://repo.magento.com/) sich dazu entschlossen hat, TLS 1.0 nicht mehr zu unterstützen. Somit kann man nun mit einem älteren PHP nicht mehr auf die Systeme zugreifen, da keine Verbindung aufgebaut werden kann.

Testen kann man dies wie folgt:

openssl s_client -connect repo.magento.com:443 -tls1_2 # Verbindung wird aufgebaut
openssl s_client -connect repo.magento.com:443 -tls1_1 # Verbindung wird aufgebaut
openssl s_client -connect repo.magento.com:443 -tls1   # Verbindung fehlgeschlagen!

Dass das nicht erfüllt werden kann, sieht man in er phpInfo hier:

  • SERVER_SOFTWARE Apache/2.2.29 (Unix) mod_wsgi/3.5 Python/2.7.10 PHP/5.6.10 mod_ssl/2.2.29 OpenSSL/0.9.8zh DAV/2 mod_fastcgi/2.4.6 mod_perl/2.0.9 Perl/v5.22.0
  • Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, sslv2, tls, tlsv1.0

php -i | grep "Registered Stream Socket Transports"

Nun habe ich gelernt, dass man mindestens folgende Versionen braucht, damit das überhaupt irgendwie klappen könnte:

  • PHP 5.6
  • OpenSSL 1.0.1

Ersteres ist ja eh schon gegeben, aber der zweite Teil ist etwas schwieriger. Gelöst habe ich es (wie so oft) mit brew:

brew update
brew install openssl
brew link --force openssl

Wenn alles richtig gemacht wurde, sieht die Version nun so aus:

openssl version
OpenSSL 1.0.2h  3 May 2016

(oder eben neuer)

Folgende Bemühungen waren danach erfolglos:

  • cURL für MAMP in einer neueren Version neu bauen (das hat zwar geklappt, löst aber das Problem in composer nicht)
  • PHP mit openssl shared bauen (wie schon einmal beschrieben) – das klappt zwar zu bauen, aber da das Binary in MAMP mittlerweile inklusive OpenSSL gebaut wird, kann die Version nicht einfach über eine Extension ausgetauscht werden

Die Lösung

Ich habe mir nun einfach AMPPS installiert, welches ich nutze um die composer Updates auszuführen. Die zusätzlichen 1,7 GB auf der Festplatte sind zwar etwas übertrieben für das Problem, dafür kann ich alles wieder ohne Probleme löschen wenn endlich MAMP 4 mit einer neueren OpenSSL-Version released wird. Am Ende sprechen wir hier also von wenigen Wochen.

AMPPS muss dazu noch etwas konfiguriert werden.

Als erstes muss in die php.init der folgende Eintrag geschrieben werden:

openssl.cafile=/usr/local/etc/openssl/cert.pem

Sonst klappt es nach wie vor nicht!

Dann müssen noch einige PHP-Extensions aktiviert werden – ich schreibe hier einfach mal eine Liste von allen Extensions auf, welche in meiner Installation nun aktiv sind:

  • bz2
  • ctype
  • curl
  • gd
  • iconv
  • intl
  • mbstring
  • mcrypt
  • mysql
  • mysqli
  • openssl
  • pdo_mysql
  • pdo_sqlite
  • soap
  • sockets
  • sqlite3
  • tokenizer
  • xsl
  • zip
  • zlib

Solltet ihr davon eine vergessen, wird euch aber composer auf jeden Fall darauf hinweisen.

So, damit ich aber nicht alles auf AMPPS neu einstellen muss, möchte ich es nicht für den Entwicklungsprozess nutzen. Also bleibe ich bei MAMP und meinem mySQL usw. Das hat den Vorteil, dass ich nichts großartig transferieren muss. Also nutze ich ausschließlich das enthaltene PHP für ein composer update.

Damit das etwas einfacher wird, lege ich mir einen Alias in meiner .bash_profile an:

vi ~/.bash_profile
alias phpamps="/Applications/AMPPS/php-5.6/bin/php"

Jetzt kann ich es verwenden, um wie gewohnt meine Composer-Quellen zu aktualisieren:

phpamps composer.phar update

Ein ganz schöner Umweg, welcher mich viel Zeit gekostet hat! Nur, weil Magento TLS 1.0 bei einem Open-Source Projekt für nicht mehr sicher genug hält. Danke an dieser Stelle.

phpamps -i | grep "Registered Stream Socket Transports"
Registered Stream Socket Transports =&gt; tcp, udp, unix, udg, ssl, sslv3, sslv2, tls, tlsv1.0, tlsv1.1, tlsv1.2

Und schon ist alles da.

]]>
Neben Alfred wohnt nun Franz – mein neuer Messenger https://mkleine.de/blog/2016/03/18/neben-alfred-wohnt-nun-franz-mein-neuer-messenger/ Fri, 18 Mar 2016 19:39:53 +0000 http://mkleine.de/?p=1682 Vor einiger Zeit habe ich ja schon einmal meine meist genutzten Tools aufgelistet. In den Kommentaren wurde ich dann auf Alfred hingewiesen, welches dank dem Power-Pack und eigenen Workflows nicht mehr aus meinem täglichen Berufsleben wegzudenken ist.

Nun hat mich ein Arbeitskollege auf Franz aufmerksam gemacht. Hierbei handelt es sich um einen Messaging-Aggregator. Super simpel, aber effektiv! Dabei werden eigentlich nur die verschiedenen Web-Apps der einzelnen Dienste in Tabs geöffnet, mit Notifications versehen und ein wenig schöner integriert. Keine 10 Clients mehr gleichzeitig geöffnet, keine Tabs in irgendwelchen Browsern die man versehentlich schließt. Einfach praktisch!

Aktuell nutze ich Franz für Slack, WhatsApp, Skype, Facebook und Hangouts. Viele weitere Dienste werden schon unterstützt oder sollen noch folgen. Nach eigenen Angaben benutzen schon jetzt mehr als 10.000 User die App täglich. Ich werde wohl auch dabei bleiben. So schön native Apps auch sind – meistens stehen die Web-Apps diesen kaum noch etwas nach.

Probiert es einfach mal aus.

]]>
Meine Top 10 Apps für Mac OS X https://mkleine.de/blog/2015/05/24/meine-top-10-apps-fuer-mac-os-x/ Sun, 24 May 2015 17:06:19 +0000 http://mkleine.de/?p=1389 Schon lange wollte ich Euch wissen lassen, welche Apps ich unter Mac OS X im Entwicklungsalltag am meisten benutze – ich hoffe, ich kann damit dem ein oder anderen noch einen kleinen Tipp geben und das Leben ein kleines Stück einfacher machen!

  • CodeBoxSnippet Manager – Bereits in diesem Beitrag habe ich bereits über die Vorzüge von CodeBox berichtet. Super einfach um Snippets, welche man immer wieder benötigt zu taggen und zu speichern. Über eine praktische Suche und einem PlugIn kann man mit einem Shortcut die einzelnen Snippets direkt überall einfügen.
  • DashDokumentationstool – Nicht zum selbst dokumentieren, sondern um Funktionen von Sprachen oder Tools nachzuschlagen. Kann so gut wie jede Programmiersprache und man kann sich die genutzten Sprachen ganz einfach zusammenklicken. Besser und schneller, als jede Mal eine Google-Suche anzustoßen. Außerdem hat man alles an einer Stelle.
  • Sequel ProSQL Client – Ein super Client für mySQL. Ich persönlich bin mit phpMyAdmin nie warm geworden. Alles ist anstrengend, kompliziert und dauert ewig. Mit dem Tool machen Datenbanken wieder spaß! Wirklich super gemacht und man kann alle Verbindungen in den Favoriten hinterlegen, in Ordner sortieren und ist so mit nur einem Klick auf dem Kundensystem. Genial: Zugriffe auf mySQL kann man auch über SSH tunneln. Dies ist häufig notwendig, da die mySQL-Ports aus Sicherheitsgründen häufig von außen nicht angesprochen werden können.
  • FlyCutClipboard Manager – Wer kennt es nicht? Man kopiert etwas, navigiert, braucht noch etwas anderes, kopiert dies und dann wieder von vorne los. Mac OS X fehlt einfach ein Clipboard-Manager. Diese Funktion reicht FlyCut nach. Man kann mit einer beliebigen Tastenkombination zwischen den zuletzt kopierten Inhalten navigieren und diese dann komfortabel einfügen. Spart jede Menge Zeit und doppelte Wege.
  • DropzoneDrag and Drop überall – Mal eben ein Foto hochladen und den Link verschicken? Ein paar Dateien zippen und dann per Mail versenden? Daten zum Google Drive hinzufügen? Das alles und viele weitere Szenarien bietet Dropzone. Hier kann man verschiedene Ziele verwalten und dann einfach Dateien dort hin werfen. Ich habe zum Beispiel eine Aktion, welche die Dateien auf meinen FTP-Server lädt und dann direkt in meine Zwischenablage kopiert. Denkbar sind aber sehr viele Ziele.
  • MacDownMarkdown Editor – Super praktisch um Markdown-Dokumente zu erstellen und zu exportieren. Ich habe hier berichtet.
  • ScreenFlowScreen-Capture Software – Die Beste Lösung um auf dem Mac professionelle Screen-Casts zu erstellen. Für mich sogar sehr viel stärker als beispielsweise Camtasia.
  • ReederFeed-Reader – Seitdem der Google-Reader nicht mehr verfügbar ist, nutze ich Feedly. Da ich nicht immer die Webseite besuchen möchte, nutze ich diese praktische App um zu Lesen, neue Feeds hinzuzufügen oder meine Bookmarks zu verwalten. Integriert sich perfekt und man sieht die Webseite nicht mehr so schnell wieder. Ich kann gar nicht mehr ohne!
  • AirParrotAirPlay Client – Ursprünglich aus der Not heraus installiert, dass die alten Macs keine Bildschirmübertragung per AirPlay unterstützten. Trotz neuem MacBook mit entsprechendem Support habe ich die App aber doch sehr häufig im Einsatz, da man hier einzelne Bereiche oder einzelne Anwendungen übertragen kann. Außerdem bietet es etliche Einstellmöglichkeiten zur Skalierung der übertragenen Bildschirminformationen.
  • TelephoneVoIP-Client – Sowohl im Büro, als auch zu Hause über die FritzBox nutze ich diese praktische App um kein Hörer mehr in die Hand nehmen zu müssen. Welche Vorteile das Ganze bietet, muss ich nicht erklären denke ich. Die App ist außerdem kostenlos und OpenSource – mit- oder weiterentwickeln ist also kein Problem!

Weitere Tipps? Dann ab in die Kommentare damit! Ich lerne auch gerne neue Tools kennen! Genauso möchte ich mich bei Tobi und Dominic bedanken, die mir beide einige Tools empfohlen haben, welche mein Leben ein Stück einfacher machen und nun ebenfalls in der Liste stehen!

]]>
Software-Tipp: MacDown – Markdown-App für Mac OS X https://mkleine.de/blog/2015/05/24/software-tipp-macdown-markdown-app-fuer-mac-os-x/ Sun, 24 May 2015 16:16:14 +0000 http://mkleine.de/?p=1466 Schon seit langem schreibe ich immer mehr Dokumente in Markdown. OpenOffice, Pages oder Word nutze ich fast gar nicht mehr – letzteres habe ich seit Jahre nicht mehr in Verwendung. Für PHPStorm gibt es ein PlugIn, welches durch wechseln zweier Tabs eine Vorschau des geschriebenen ermöglicht. Das funktioniert zwar, sieht aber nicht besonders edel aus. Außerdem bekommt man das Ergebnis nicht sehr schön exportiert – solange man das Markdown dann beispielsweise für ein github-Repo nutzt, ist die Welt auch noch in Ordnung. Wenn man allerdings ein PDF mit einer Dokumentation für den Kunden bereitstellen möchte, ist PHPStorm schnell am Ende.

Daher schreibe ich seit einiger Zeit alle Dokumente nur noch in MacDown (OpenSource / MIT-Lizenz). Hier kann man sehr angenehm „side by side“ Markdown schreiben, und muss so nicht ständig zwischen zwei Tabs hin und her wechseln um zu sehen, was am Ende bei rum kommt.

MacDown

Der Rest erklärt sich einfach von selbst – die einzelnen Features von Markdown kann man sogar in den Einstellungen ganz einfach ein und ausschalten. Und eben das Ergebnis auch als PDF oder HTML exportieren.

]]>
Internet-Explorer-Tests unter Mac OS X https://mkleine.de/blog/2015/02/04/internet-explorer-tests-unter-mac-os-x/ Wed, 04 Feb 2015 08:40:45 +0000 http://mkleine.de/?p=1418 Das Problem kennt sicher jeder Webentwickler, der nicht mit Windows arbeitet (was hoffentlich die Mehrheit sein sollte): Man hat keinen Internet Explorer für die Tests zur Verfügung. In diesem kurzen Beitrag möchte ich beschreiben, wie man ohne riesige Virtuelle Maschinen auskommt, welche man auch noch auf dem aktuellen Stand halten muss und die Performance des Rechners enorm senken.

Bisher habe ich mir häufig eine Virtuelle Maschine von modern.ie geladen und diese dann unter Virtual Box gestartet – alles, nur um eine Internet-Explorer-Instanz zu bekommen. Ganz schön viele Ressourcen gehen dabei an die VM verloren – also immer wieder an- und ausschalten. Das kostet zwar dank SSD nicht so extrem viel Zeit, aber es geht wirklich einfacher.

Die Lösung ist die Azure Cloud von Microsoft. Hier kann man einzelne Apps in der Cloud betreiben und hat dann nur ein einzelnes Fenster geöffnet – ähnlich wie bei Citrix. Das schöne daran: Mit Remote IE kann man ganz einfach einen Internet Explorer in der Cloud starten. Und das sogar kostenlos! Alles was man dafür braucht, ist ein live-Konto.

Danach startet man die Remote Desktop App von Microsoft (ebenfalls kostenlos) und loggt sich ebenfalls in der App ein.

Remote IE

Danach bekommt man eine ganz normale Instanz des IE.

Modern IE Browser

Und diese kann man dann einfach bei bedarf starten, oder sogar den ganzen Tag geöffnet lassen – lokale Ressourcen werden dadurch nicht mehr blockiert.

Nachteil: Dadurch, dass die App in der Azure-Cloud läuft, kann man natürlich keine eigenen Routen festlegen. So kommt nicht an lokale Routen – dafür müsste man nach wie vor eine Virtuelle Maschine nutzen.

]]>