xdebug mit Vagrant und PHPStorm funktioniert nicht unter OS X

Webentwicklung mit xdebug und vagrant ist eine feine Sache, wenn das debuggen denn funktioniert. Manchmal kann es sein dass xdebug aus dem vagrant client den Port 9000 des Hosts z.B. unter OS X nicht aufrufen kann.

Normalerweise sollte auf der Konsole des Hosts, in meinem Fall OS X, mit dem Befehl lsof -i tcp:9000 am Port 9000 PHPStorm lauschen.

Dort aber waren drei (?) php-fpm Prozesse die den Port 9000 für sich beschlagnahmt haben…

Leider konnte ich nicht genau nachvollziehen woher diese kamen. Ich hab diese beendet und PHPStorm konnte wieder erfolgreich seinen Dienst aufnehmen.

Evtl. waren diese von OS X selbst? Oder lags am MAMP Pro der hin und wieder zum Einsatz kommt?

CNC: Makercam mit Affinity Designer nutzen

Wer eine kleine CNC Portalfäse besitzt, dem wird http://www.makercam.com sicher bekannt sein (dieses Tool basiert leider auf Flash und ist hoffentlich noch länger nutzbar. Mit dem Auslaufen der Flash Unterstützung im Browser muss man sich aber früher oder später nach einem anderen Tool umsehen oder sich zumindest die SWF Datei lokal auf Festplatte wegspeichern).

Mit makercam können aus 2D SVG Vektordateien Fräsdateien im GCODE Format berechnet und exportiert werden. Folgend will ich kurz den Workflow mit Affinity Designer beschreiben.

Im Affinity Designer ist es wichtig, dass unabhängig von dem eigentlich Fräsergebnis, die Dokumentenabmessungen für Länge und Breite im Affinity Desginer immer identisch sein müssen (sprich 1:1)! Ist dies nicht der Fall geht in makercam die korrekte Proportion verloren.

Hier im Beispiel ist gut zu sehen dass die Abmessungen im Affinity Designer größer sind als das final zu  fräsende Endergebnis.

Am Schluss muss für makercam noch eine SVG Datei gespeichert werden. SVG für Web ist vollkommend ausreichend.

Bevor man die Datei in Makercam lädt, muss die SVG Import Default Resolution (px/inch) in Edit Preferences eingestellt werden. Für Illustrator und Inkscape sind in dem Dialog entsprechende Defaultwerte zu finden. Für Affinity Designer muss hier 182.88 eingegeben werden.

Nun kann das Affinity Design SVG geladen werden. Auf alle Fälle sollte anhand des Rasters in makercam noch mal die Größe (=> Default Resolution) und Proportion (=> Affinity Design Dokumentenabmessungen) überprüft werden.

Ist alles korrekt kann man wie gewohnt in makercam mit profile, pocket, follow, drill, usw. definiert werden wie gefräst werden soll.

Einem finalen Fräsen steht nun nichts mehr im Weg ;-)

Als Beispiel siehe iPhone/iPad mini Kombiständer.

Erfahrungsbericht zu SSD 480GB Aura >Mid 2013

Hier ist ein kurzer Erfahrungsbericht zur SSD 480GB Aura >Mid 2013 von OWC. Ich stand vor der Entscheidung zwei Rechner zu konsolidieren, einen Mac mini 2012 und ein Macbook Air 13 2015.
Der Mac mini war schon immer mein Hauptrechner, das Macbook Air für unterwegs. Mit der Zeit kam der Wunsch alle Daten auf einen mobilen Rechner zu haben, also entschied ich mich das Macbook Air von der original 256 SSD upzugraden um die Daten von der 480 SSD vom Mac mini komplett übernehmen zu können.

Die Auswahl an SSD Upgrades für das Macbook Air ist sehr dünn. Außer der OWC SSD 480GB Aura >Mid 2013 war mir zu dem Zeitpunkt keine andere Möglichkeit bekannt.

Trotz des sehr sportlichen Preises der SSD 480GB Aura habe ich mich entschieden diese zu kaufen.

Der Einbau ist in meinen Augen einfach, die beiliegenden Torx Schraubendreher sind unbedingt nötig. Die interne SSD wird dann im Anschluss in das USB 3 SSD Alu Case eingebaut das im Kit mit dabei ist.

Mein Fazit:
+ Leichter Einbau
+ Qualität der Teile und beigelegte Schraubenzieher.
o gesunkene Batterielaufzeit
– sehr hoher Preis
– geringere SSD Performance
– es werden nur 2 PCIe Lanes der möglichen 4 genutzt
– die SSD Aura selbst kann NICHT in dem externen Gehäuse eingebaut werden, WTF!?

Ich habe zwar meine Daten komplett auf mein Macbook Air 13 2015 übernehmen können, bin aber nicht wirklich zufrieden damit.

Für einen extrem hohen Preis habe ich nun eine SSD die nur mit halber Performance arbeitet, quasi mit angezogener Handbremse arbeitet. Insgesamt sehr ärgerlich. Nur diese Info war natürlich auf der OWC Homepage nicht zu finden ;-(

Pimcore: Erste Schritte – ein Selbstversuch

Als langjähriger TYPO3 Entwickler/Integrator habe ich schon einige Projekte umgesetzt und musste mich intensiv mit TYPO3 auseinandersetzen. Mit NEOS bin ich noch nicht so ganz warm geworden.

Ich kannte Pimcore schon länger. Die Features sahen vielversprechend aus und eine Testinstallation mit Blick ins Pimcore Backend hatten das Interesse bei mir geweckt. Es fehlte nur ein Projekt um Pimcore intensiver auszuprobieren, sich etwas einzuarbeiten. Und es hat sich ein Projekt ergeben ;-)

Benötigte Kenntnisse
Für Pimcore werden Kenntnisse in PHP und dem Zend Framework benötigt. Im Frontend wird PHP fürs Templating verwendet. Kenntnisse in CSS und Javascript sind natürlich obligatorisch ;-)

Installation
Die Installation geht schnell von der Hand. DB Verbindung eingeben, evtl. noch schnell einen Blick in die sehr übersichtliche Darstellung des System Requirements Checks, ersten User anlegen, und fertig.

Backend
Das Backend ist sehr übersichtlich in zwei Spalten eingeteilt. Was mir dabei besonders gefällt ist dass die drei wichtigsten Bereiche Documents, Assets und Objects in der ersten Spalte mit jeweils eigenen Pagetree in einer Art Akkordion zu erreichen sind.
In der zweiten Spalte werden alle möglichen Documents, Assets, was auch immer in mehreren Tabs angezeigt. Es können z.B. mehrere Documents parallel geöffnet bleiben. Speziellere Dinge sind im Menü ganz links enthalten.

pimcore-object-classes
Pimcore Backendansicht: Links separate Pagetrees für Documents, Assets und Objects. Rechts parallele Bearbeitung mittels Tabs.

Templating
Das Templating geschieht mit Zend. Jeder Seite kann ein Controller mit einem definiertem Template zugewiesen werden. Hier wird keine spezielle Templating Engine genutzt, wie z.B. Twig oder Fluid, sondern schlichtweg einfach PHP selbst. Ich persönlich finde, dass dies kein Nachteil ist. Ist halt Geschmackssache und auch wieder ein kleiner Overhead der entfällt.
In den Seitentemplates können mit so genannten Editables Eingabefelder bzw. Contentbereiche für Contentelemente definiert werden die dem Redakteur zur Verfügung stehen. Im Pimcore Backend kann die Seite in einer fast WYSIWYG Darstellung editiert werden. In einem Tab daneben gibt es die richtige Preview der Webseite.

Content Elemente
Content Elemente heissen Areablocks bzw. Bricks. Diese werden über eine Templatedatei definiert die wiederum Editables enthalten.
So können sehr kurz und transparent Contentelemente angelegt werden.

Image handling und Thumbnails
Im Backend können Workflows mit mehreren Transformations für Bilder und sogar Videos angelegt werden. Dabei kann das Bildformat sowie die Auflösung bis hin zu Printmedien eingestellt werden. Diese Thumbnail Konfigurationen können in den Templates mittels PHP aufgerufen und auf Assets angewendet werden, entsprechende Bilder werden dann generiert.

pimcore-thumbnails
Pimcore: Bilder Workflows über Thumbnails.

Klassen und Objekte
Für Inhalte die über normale Contentelemente hinausgehen wie z.B. News oder Produkte können Objekte und Klassen im Pimcore Backend angelegt werden. Über eine Art Formbuilder können Eingabefelder (Text, RTE, Bilder, Relationen, usw.) festgelegt werden die z. B. für ein Newsbeitrag benötigt werden.
Die dazu gehörigen PHP Klassen und MySql Tabellen werden automatisch angelegt. Die Objekte können im Controller instanziert und an die View übergeben werden.
Mit ein bisschen Übung ist schnell eine List- und Detailview realisiert.

Routing und static Routes
Das Routing ergibt sich automatisch über den Seitenbaum. Und jeder Seite ist auch letztendlich ein Controller zugewiesen. Somit ergibt sich auch automatisch aus dem Seitenbaum die finale Speakingurl.
Darüber hinaus können mit static Routes mittels  Regex Patterns Pfadsegmente definiert werden die als Parameter an den Controller übergeben werden.

pimcore-static-routes
Pimcore: Static Routes sind über Patterns definierbar.

Formulare
Mit Zend Forms können Formulare im Controller genutzt werden.

Fazit
Nach meinem kleinen Ausflug in die Pimcore Welt bin ich sehr positiv überrascht. Leider (Schande über mein Haupt ;-) habe ich nur einen direkten Vergleich zu TYPO3 und mit WordPress mache ich zu wenig obwohl diese Seite WordPress nutzt.

Vieles unter Pimcore ist erfrischend einfach zu erledigen, und viele Dinge sind in Pimcore out-of-the-box mit dabei. Und ich habe beileibe in diesem kurzen Beitrag und auch Projekt, die vielen weiteren Features noch gar nicht genutzt (Plugins, Web2Print, User & Rechte, SEO, Newsletter, Rest API, Backend Eventhandling, Personalisierung, Targeting). Einfach bemerkenswert was alles in Pimcore enthalten ist. An anderer Stelle muss ich dafür einige Plugins für diesen Funktionsumfang installieren, falls es überhaupt welche gibt.

Aus Sicht des Redakteurs ist das Backend sehr intuitiv zu nutzen. Mehrere Dokumente können parallel geöffnet bleiben und bearbeitet werden. Dabei macht es keinen Unterschied ob es sich dabei um ein Document (Website), Asset oder Objects handelt.
Hovert man über einen Asset folder werden die darin enthaltenen Medien rekursiv über alle Unterordner als Thumbnail dargestellt. Über einem Document wird eine Preview der gesamten Website angezeigt.

pimcore-asset-thumbnails
Pimcore: Thumbnails für alle Assets. Rekursiv über alle Unterordner.

Es gibt sogar die Möglichkeit mit Deeplinks bis ins Backend hinein gezielt eine Seite im Backend anzuzeigen.

Aus Sicht des Integrators, wie gesagt, ist vieles einfach und schnell umgesetzt. Und dies ohne Konfigurationsorgie. Aufgrund des Funktionsumfanges dürfte es auch nicht nötig sein weitere Extensions/Plugins zu installieren. Abhängigkeiten zu Plugins und deren Weiterentwicklung werden damit minimiert.

Aus PHP Entwicklersicht denke ich, dass sich jeder der sich mit dem Zend Framework oder MVC beschäftigt hat schnell zurecht findet. Composer ist auch mit an Bord was will man mehr ^^

Cons
Einen kleinen Wermutstropfen gab es allerdings doch. Pimcore nutzt MySql Features (CREATE ALGORITHM…) die z.B. bei kleineren 1&1 Hostingpaketen nicht enthalten sind. Im Test auf meinem Alfahosting Paket konnte ich Pimcore erfolgreich testen, final bei 1&1 schlug dies fehl.

F-Engrave Python Tool unter OS X

F-Engrave ist ein kleines feines open source tool um g-code für eine CNC Fräse zu generieren. Dieses generiert entweder aus einer Bitmap- oder Vektordatei die entsprechenden Daten zum Fräsen auf einer CNC Portalfräse mit einem V-Fräser.

f-engrave-on-mac-v-carve

In einem Inventables Forum Beitrag wurde dies diskutiert wie man dieses unter OS X zum laufen bekommt. Ich habe dieses hier fertig zum Download (jetzt mit v1.57 of F-Engrave) zur Verfügung gestellt.

 

Protoneer CNC Shield: Spannung der Pololu stepper driver einstellen

Über die Potenziometer kann die Spannung der Stepper driver eingestellt werden. In diesem Pololu-DRV8825 Video wird dies sehr gut erklärt.

Um ganz ehrlich zu sein bin ich hier nicht in die Tiefe eingestiegen und bin mehr nach dem trial-and-error Prinzip vorgegangen ;-)

Als Messpunkt kann direkt der Schraubenzieher beim einstellen am Potentiometer genutzt werden. Wenn ich mich richtig erinnere habe ich dort auf 1,3 Volt eingestellt.

In meinem Setup mit Nema 23 Steppermotoren scheint dies ein guter Wert zu sein, obwohl die Pololus mit ihrer Maximum current per phase (bei aktiver Kühlung) von 2.2 A nicht die 3 A liefern können, die die Steppermotoren verkraften könnten. Theoretischer weise werden die Stepper im Moment „underpowered“ Betrieben.

Zum anderen funktionieren die Motoren nur im halfstep korrekt, ein Test mit fullstep lieferte massive Schrittverluste.

Nichts desto trotz habe ich ein sehr gut funktionierende Kombination gefunden. In seltenen Fällen habe ich noch Schrittverluste auf der Y-Achse. Hier muss ich aber noch prüfen ob es eventuell ein mechanisches Problem ist oder die GRBL Softlimits aktiv werden.

 

Protoneer CNC Shield: aktive Kühlung der Pololu stepper driver

Die Pololu stepper driver wurden bei mir ziemlich heiß. Diese wurden teilweise mehr als Handwarm und aus Sicherheitsgründen habe ich die beigefügten Kühlkörper mit einem doppelseitig thermischen Klebeband aufgeklebt.

Ein erster naiver Versuch mit Sekundenkleber hielt der Temperatur nicht lange stand ;-)

Im Gehäuse sorgt ein 5cm Lüfter für eine ausreichende Kühlung.

Arduino: HEX flash upload über Konsole unter Mac OS X

Notiz um eine „*.hex“ Datei mit avrdude auf ein Arduino hochzuladen. Beachte erste Zeile => korrektes /dev/tty*!

 

Arduino auf Protoneer CNC Shield auf Raspberry Pi

Man schreib natürlich nicht umsonst einen Artikel wie die GRBL Firmware auf ein Arduino Nano geschrieben wird. In der Regel steckt ein konkretes Projekt dahinter. In meinem Fall ist es das Protoneer CNC Shield das ich auf eBay entdeckt habe. Dieses wird huckepack auf einen Raspberry Pi gesteckt und ist die Basis-Zentrale für eine CNC Fräse.

rpi-cnc-shield-with-arduino-nanos-1

Enthalten beim Protoneer CNC Shield ist das Board selbst, ein kompatibler Arduino Nano und Montagematerial. Nicht enthalten sind der Raspberry Pi sowie auch die Stepper Driver die die Motoren ansteuern.

Leider ist beim mitgelieferten Arduino ein CH340 USB to Serial Chip verbaut. Dieser wird unter Mac OS X nicht erkannt. Es muß erst ein Treiber von einer sehr langsamen Chinesischen Seite herunter geladen und installiert werden. Dazu ist es auch noch nötig die Prüfung zu deaktivieren ob die Kernelextension korrekt signiert wurde!?

rpi-cnc-shield-with-arduino-nanos-2
Links Arduino Nano V3 mit CH340 Chip, rechts mit FTDI

Da bekommt man schnell ein seltsames Gefühl :D Deswegen habe ich mir über eBay einen anderes Arduino Nano V 3 erstanden, der den Original FTDI Chip hat. So wird das Arduino Board sofort ohne murren auch auf einen Mac erkannt.

 

Auf der Protoneer Homepage gibt es ein fertig installiertes Raspbian Image. Darauf ist der Serielle Treiber schon eingerichtet um mit dem Arduino zu kommunizieren, sowie auch den G-Code Sender bCNC. bCNC ist ein richtig cooles CNC Tool und nicht nur ein reiner G-Code Sender allein, sondern bietet noch weitere interessante Funktionen. Dieses wird aktiv weiter entwickelt.

bCNC Tool/G-Code Sender
bCNC Tool/G-Code Sender

Einziger Wermutstropfen ist dass dieses „nur“ in Python entwickelt wurde. Bei Umfangreichen G-Code Dateien muss man sich auf eine kurze Wartezeit einstellen. Außerdem darf die Bildschirmauflösung für die  bCNC Software nicht all zu klein sein. Auf einem angeschlossenen 7 “ TFT mit 800x480px am RPi wird die Bedienung schon etwas sehr frickelig.

So, das war es für’s erste. Weitere Beiträge zur CNC Fräse und CAM Software folgen wenn Zeit vorhanden ist ^^

Arduino: Grbl (CNC) auf Arduino Nano installieren unter OS X

In diesem Post will ich kurz die Installation von GRBL auf einem Arduino Nano beschreiben. GRBL ist ein gcode Parser und CNC Fräskontroller.

Zu Beginn muss die Arduino IDE installiert werden. Die Einstellungen können etwas getuned werden. Eine Ausführliche Ausgabe bei Kompilierung und Hochladen ist doch immer wichtig :-)

arduino-ide-settings

Im Menü Werkzeuge der IDE muss die Platine, Prozessor und Port entsprechend zum angeschlossenen Arduino Modell eingestellt werden. Ganz wichtig ist es auch, einen korrekten Programmer anzugeben. Dieser musste bei mir auf USBasp umgestellt werden, da sonst das hochladen nicht funktioniert hat und kryptische Fehlermeldungen dabei erschienen ^^

Korrektur (29.8.2015): Die letzte Aussage wegen USBasp ist natürlich totaler quatsch. Ich hatte  nur durch trial and error Glück, dass ich den Arduino erfolgreich flashen konnte. Im Nachhinein kann ich nur sagen dass aus Gründen die sich mir nicht erschließen plötzlich der richtige Programmer benutzt wird. Und selbiges auf zwei Mac Rechnern, einem MacBook Air und Mac mini, nur auf ersterem funktioniert.

Als nächsten Schritt lädt man das GRBL Git Repository herunter. Der darin enthaltene „grbl“ Ordner muss dann in folgenden Arduino Ordner kopiert werden:

Anschließend steht grbl im Menü unter Bespiele zur Verfügung und kann geöffnet werden.

arduino-grbl-sketch

Einer Prüfung über die Arduino IDE steht nichts im Wege.

arduino-grbl-sketch-verify

Nach erfolgreicher Prüfung kann die Software auf das Board hochgeladen werden.

arduino-ide-upload

Bei erfolgreichen Vorgang sollte es so wie im obigen Screenshot aussehen.

Ein Test ob grbl erfolgreich installiert wurde kann mit dem Universal G-Code Sender (download) gemacht werden. Für diesen muss der Ordner „var/lock/“ mit entsprechenden Rechten angelegt werden.

universal-gcode-sender_001

Nach erfolgreicher Verbindung über die Connection oben links im Universal G-Code Sender meldet sich Grbl mit einem kurzen Lebenszeichen in der Konsole.

universal-gcode-sender_002

Grbl ist nun auf dem Arduino installiert und bildet die Grundlage für ein Hobby CNC Bastelprojekt.