Archiv der Kategorie: Tools

Schluss

Nachdem sich hier schon seit einiger Zeit nichts mehr getan hat, kann ich das Projekt extreme-dev.de hiermit auch ganz offiziell für beendet erklären. Sollte ich noch einmal Lust darauf haben, ein Blog zum Thema Software-Entwicklung zu führen, würde ich das an dieser Stelle ankündigen.

Entwicklungsumgebung Unity: experimentelle Linux-Version veröffentlicht

Gute Nachrichten für Spiele-Entwickler: Das Unternehmen Unity Technologies arbeitet hart daran, seine Entwicklungsumgebung Unity unter Linux zur Verfügung zu stellen. Bisher werden nur Windows und MacOS unterstützt, obwohl die erstellten Spiele auch Linux lauffähig sind.

Nun ist eine erste öffentliche, experimentelle Version freigegeben worden. Offiziell wird nur Ubuntu 64bit unterstützt; auf anderen »modernen« Linux-Distributionen (hier getestet mit Linux Mint 17.1) sollte die Software aber auch funktionieren.

Unity ist eine leistungsfähige Entwicklungs- und Laufzeitumgebung für Spiele (und andere 3D-Anwendungen), die zahlreiche Ausführungsplattformen vom Web-Browser über den PC und Konsolen bis hin zu Mobiltelefonen unterstützt. Eine eingeschränkte »Personal Edition«, die in begrenztem Umfang auch kommerziell verwendet werden darf, wird kostenlos angeboten; für den professionellen Einsatz bzw. Einsatz im größeren Rahmen gibt es entsprechende Lizenzen.

Unity unter Linux Mint
Unity unter Linux Mint

Microsoft veröffentlicht Visual Studio Code für Windows, Mac und Linux

Vor ein paar Jahren wäre das undenkbar gewesen: Microsoft veröffentlicht mit »Visual Studio Code« einen erweiterten Code-Editor, der plattformübergreifend und kostenlos für Windows, MacOS und Linux zur Verfügung steht. Laut Microsoft soll sich »Visual Studio Code« vor allem dafür eignen, »modern web and cloud applications« zu entwickeln und zu debuggen. Viel mehr als ein einfacher Code-Editor mit Git-Unterstützung und integriertem Debugger ist die jetzt freigegebene Preview-Version (noch) nicht. Welche Funktionen für die Zukunft geplant sind, ist nicht klar, ein Ersatz für das »große« Visual Studio wird »Code« aber sicherlich nicht werden.

Interessant ist die Architektur der Anwendung: Sie selbst basiert auf Web-Techniken, also HTML und JavaScript / TypeScript und wird mit Hilfe der Rendering Engine Chromium dargestellt. Basis dafür ist das Framework Electron.

Visual Studio Code
Visual Studio Code unter Linux Mint

Software-Tipp: aWallet Password Manager

Vor einiger Zeit habe ich hier den Tipp gegeben, aus Sicherheitsgründen für jeden Internet-Dienst, bei dem man sich registriert, ein eigenes Passwort zu vergeben. Das erste Argument, das man dagegen hört, ist sicherlich, dass sich kein Mensch mehr als eine Handvoll Passwörter wird merken können. Dafür gibt es Abhilfe, und zwar Software-Tools, die einem das »Merken« abnehmen.

Ich benutze seit einiger Zeit das Tool »aWallet Password Manager«, das auf meinem Android-Handy läuft, und das ich hier kurz vorstellen und empfehlen möchte.

Screenshot von aWallet
Screenshot von aWallet

Eine App für das Handy ist für mich sinnvoller als eine PC-Anwendung, da ich das Handy praktisch immer dabei habe. aWallet besitzt alle Grundfunktionen, die ich von einem Password Manager erwarte: Einträge können in verschiedenen Kategorien abgelegt werden, wobei die Kategorien inkl. der zu erfassenden Felder beliebig vom Anwender konfiguriert werden können. Ein Passwort-Generator ist enthalten, ebenso eine Suchfunktion. Und nicht zuletzt fügt sich die App auch optisch vernünftig in das Android-System ein.

Der größte Nachteil dieser Lösung: Sollte das Mobiltelefon abhanden kommen, sind nicht nur (falls kein Backup existiert) die Passwörter »weg«. Im schlimmsten Fall erhält der »Finder« Zugriff auf alle dokumentierten Benutzerkonten. aWallet scheint mir ausreichend Funktionen integriert zu haben, um diese Gefahr zu verringern: Wichtig ist zunächst, ein ausreichend starkes Master-Kennwort zu vergeben. Die Daten werden ausschließlich in verschlüsselter Form auf dem Gerät abgelegt, so dass ein Zugriff durch andere Apps bzw. ohne Kenntnis des Master-Kennwortes nicht möglich ist. Die App kann außerdem so konfiguriert werden, dass nach einer bestimmten Anzahl von Fehleingaben bzw. gescheiterten Entsperr-Versuchen die Daten auf dem Gerät gelöscht werden. Optional können Backups auf SD-Karte oder in der Cloud (Dropbox) erzeugt werden, die selbstverständlich auch dort ausschließlich verschlüsselt abgelegt werden. Ver- und Entschlüsselung erfolgen immer nur auf dem Android-Gerät.

Die App gibt es in einer kostenlosen Version, bei der per In-App-Kauf zusätzliche Funktionen freigeschaltet werden können. Die Cloud-Version ist kostenpflichtig, allerdings sind 2,59 EUR für die gebotene Funktionalität sicherlich angemessen.

7 Useful Git Tips for Beginners

Auch wenn es vor allem (Berufs-)Anfänger nicht einsehen wollen: Wer als Software-Entwickler nicht wenigstens irgendeine Art von Quellcode-Verwaltung verwendet, ist lebensmüde.

Bei Six Revisions gibt es einen schönen Beitrag »7 Useful Git Tips for Beginners«, der (wie der Titel bereits sagt) nützliche Hinweise und Links zu zahlreichen weiterführenden Ressourcen zum Einstieg in die Quellcode-Verwaltung mit git enthält. Nicht nur für VCS-Neulinge interessant, sondern auch für alle, die vielleicht auf git umsteigen wollen.

PyCharm nun auch in kostenloser Community Edition verfügbar

Das Unternehmen JetBrains, das zahlreiche professionelle Entwicklungsumgebungen anbietet (und auf dessen IntelliJ auch das neue AndroidStudio basiert), bietet ab sofort auch seine auf Python ausgerichtete IDE »PyCharm« in einer kostenlosen, dafür aber um einige Funktionen gekürzten »Community Edition« (CE) an. Die Software benötigt ein installiertes Java 6 oder höher und läuft unter Windows, Linux und MacOS.

Einen Vergleich zwischen abgespeckter »Community Edition« und »Professional Edition« gibt es hier, alle weiteren Informationen hier.

Was den Funktionsumfang angeht, kann eine kleine Entwicklungsumgebung wie das kürzlich hier vorgestellte NinjaIDE natürlich nicht mit PyCharm mithalten – insofern mag das neue Angebot für viele Python-Entwickler durchaus sehr interessant sein.

PyCharm unter MacOS
PyCharm unter MacOS

Howto: Dokumentation mit Markdown schreiben in Netbeans

Wer direkt in seiner Entwicklungsumgebung auch Dokumentationen und Readmes bearbeitet, wird sich schnell Wege überlegen, um Überschriften, Aufzählungen und Sonstiges hervorzuheben bzw. zu formatierten. Mit Markdown gibt es ein weit verbreitetes und sehr einfaches System, das sich dafür hervorragend eignet. Leider bietet Netbeans von Haus aus keine besondere Unterstützung für dieses Format.

Der Entwickler Florian Reiss hat sich dieses Problems angenommen und bietet ein entsprechendes Netbeans-Plugin auf github an.

Wer sich mit git auskennt, kann also das Projekt klonen und am besten in der eigenen Netbeans-Installation übersetzen und anschließend das erstellte Paket installieren. Alle anderen klicken auf der Github-Seite am besten auf Download ZIP, entpacken das heruntergeladene Archiv und installieren das Plugin, das sich im Unterverzeichnis nbm befindet und flow-netbeans-markdown.nbm heißt. Dazu öffnet man den Plugin-Manager (Tools / Plugins), wechselt auf den Reiter Downloaded, klickt auf Add Plugins…, wählt die oben genannte NBM-Datei aus und klickt anschließend auf Install. Nach einem Neustart ist das Plugin aktiv.

Über den Plugin-Manager kann das heruntergeladene Modul installiert werden
Über den Plugin-Manager kann das heruntergeladene Modul installiert werden

Das Plugin bietet nicht nur Syntax-Highlighting für die Markdown-Syntax, sondern kann auch direkt HTML-Dateien erzeugen und unterstützt zahlreiche Erweiterungen zur Standard-Markdown-Syntax. In den Plugin-Einstellungen (Preferences / Miscellaneous / Markdown) lassen sich die Extensions einschalten und ein Grundgerüst editieren, das bei der HTML-Generierung verwendet wird. Hier ist es etwa möglich, CSS zu notieren oder eine CSS-Datei (die allerdings dann jeweils von Hand zu kopieren ist) zu referenzieren.

In den Markdown-Einstellungen kann das HTML-Template bearbeitet werden
In den Markdown-Einstellungen kann das HTML-Template bearbeitet werden

Die Syntax von Markdown ist recht simpel und ist darauf ausgelegt, dass auch die Plain-Text-Version eines Dokumentes noch gut gelesen werden kann. Einfache Basis-Elemente sind Überschriften, Zitatblöcke und Listen:

Eine ausführliche Beschreibung von Markdown findet man hier, eine Beschreibung der Erweiterungen hier. Mit Hilfe von pandoc ist es sogar möglich, Markdown-Dateien nach ePub, PDF, LaTeX und andere Formate zu konvertieren.

Über das Kontextmenü einer MD-Datei kann eine HTML-Version generiert werden
Über das Kontextmenü einer MD-Datei kann eine HTML-Version generiert werden

Kleiner Tipp noch zum Schluss: Im Gegensatz zu Programmcode ist es natürlich empfehlenswert, bei Markdown-Dateien den Zeilenumbruch im Editor einzuschalten. Das geht von Haus aus in Netbeans nur global, was auf Dauer zu umständlich ist. Auch hier schafft ein Plugin Abhilfe: Toggle Line Wrap heißt es und kann direkt über den Plugin-Manager installiert werden. Es richtet rechts unten in der Statusleiste eine kleine Schaltfläche ein, mit der der Umbruch (nur) für die aktuelle Datei umgeschaltet werden kann.

Howto: Einrichtung eines PHP-Projektes mit Subversion und FTP-Synchronisation in Netbeans

Ein PHP-Projekt in Netbeans einzurichten ist nicht sonderlich schwer; man braucht lediglich ein Projektverzeichnis anzugeben und kann loslegen. Ein wenig komplizierter wird es, wenn das Netbeans-Projekt sich in bestimmte Workflows einbinden muss, etwa dann, wenn im Team entwickelt wird (Stichwort Versionsverwaltung) oder der Code mit einem entfernten Server abgeglichen werden soll. Glücklicherweise bietet Netbeans einige Hilfsmittel, die dem Entwickler das Leben leichter machen.

Dieser Artikel zeigt die exemplarische Einrichtung eines PHP-Projektes in Netbeans, das folgende Voraussetzungen erfüllt:

  • Das Projekt wird lokal abgelegt und ist von hier aus auch lauffähig, weil eine lokale Web-Server-Umgebung vorhanden ist
  • Der Quellcode befindet sich unter Subversion-Verwaltung, was in diesem Szenario das gemeinsame Arbeiten mit mehreren Entwicklern (mit jeweils eigener lokaler Arbeitskopie) ermöglicht
  • Der lauffähige Code wird per FTP mit der produktiven Web-Server-Umgebung abgeglichen; der Abgleich erfolgt manuell (auf Wunsch können Änderungen auch automatisch übertragen werden)

Die lokale Umgebung wird also für die Entwicklung und das Testen genutzt. Änderungen werden in die Quellcode-Verwaltung übertragen. Zum Abschluss einer Teil-Entwicklung wird der aktuelle Projektstand mit dem produktiven Web-Server abgeglichen. Dieses Setup eignet sich sowohl für kleinere Teams (größere würden sicherlich den Upload auf das Produktivsystem reglementieren) als auch den einzelnen Entwickler, der an einer Website arbeitet.

Wir gehen davon aus, dass zunächst ein leeres Subversion-Repository vorhanden ist, also auch noch die üblichen Verzeichnisse tags, branches und trunk angelegt werden müssen. In Netbeans muss gegebenenfalls noch das Subversion-Plugin über den integrierten Plugin-Manager installiert werden, sofern das noch nicht geschehen ist.

Zunächst legen wir in Netbeans über den Menüpunkt Datei / Neues Projekt ein neues Projekt an und wählen als Vorlage PHP Application. Im nächsten Schritt vergeben wir einen passenden Projektnamen, wählen das lokale Webserver-Wurzelverzeichnis aus, wählen die gewünschte PHP-Version und Zeichenkodierung.

Grundlegende PHP-Projekteinstellungen
Grundlegende PHP-Projekteinstellungen

Der folgende Dialog ist ein wenig komplizierter. Unter Run As wählen wir den Punkt Remote Website (FTP, SFTP) aus, da wir mit einem entfernten Server abgleichen möchten, obwohl ja bereits das lokale Projekt (in der eigenen Server-Umgebung) lauffähig ist. Als Project URL geben wir nun aber nicht die Einstiegsadresse auf dem Produktivsystem an, sondern die Adresse des lokalen Web-Servers, also etwa »http://localhost/« – wer sich mit seiner Hosts-Datei auskennt, kann natürlich auch (wie im Beispiel dargestellt) einen klangvolleren Namen hierfür vergeben.

Laufzeiteinstellungen
Laufzeiteinstellungen

Nun müssen wir eine Remote Connection einrichten: Hierfür klicken wir auf Manage und dann Add. Wir vergeben einen Namen für die einzurichtende Verbindung und wählen den Verbindungstyp; je nach Server FTP oder das abgesicherte SFTP. Nach Klick auf OK bearbeiten wir die Verbindungseinstellungen: Dazu gehören der Host-Name des FTP-Servers sowie Benutzername und Kennwort und das Initial Directory, das für die Datei-Übertragungen das Startverzeichnis darstellt. Die Datei- und Verzeichnisstruktur des PHP-Projektes wird 1:1 in dieses Verzeichnis auf dem FTP-Server übertragen, es ist also wichtig, dass hier der passende Pfad eingetragen wird. Die Einstellungen für Timeout und Keep-Alive können in aller Regel auf den Standardwerten bleiben. Mit Test Connection kann überprüft werden, ob die FTP-Einstellungen funktionieren.

FTP-Verbindung konfigurieren
FTP-Verbindung konfigurieren

Ist diese Remote Connection eingerichtet, landen wir wieder im Projekt-Assistenten. Dort haben wir noch die Möglichkeit, einen Upload-Pfad einzugeben. Dieser ergibt zusammen mit dem Basis-Pfad aus den FTP-Einstellungen das tatsächliche Projekt-Wurzelverzeichnis auf dem FTP-Server. Zur Kontrolle wird der zusammengesetzte Pfad in diesem Dialogfenster noch einmal ausgegeben.

Unter dem Punkt Upload Files wählen wir Manually aus, denn wir wollen erst am Ende eines Entwicklungsschrittes das gesamte Ergebnis auf das Produktivsystem übertragen und nicht bereits während der Entwicklung einen (möglicherweise aktuell nicht lauffähigen) Zwischenstand. Wenn es besser in den Arbeitsfluss passt, kann auch aus den Einstellungen On Save (beim Speichern einer bzw. bei Änderung einer Datei) oder On Run (beim »Ausführen« des Projektes über den entsprechenden Menüpunkt in der Entwicklungsumgebung) gewählt werden.

Im letzten Schritt des Assistenten können noch PHP-Frameworks ausgewählt werden, die allerdings noch separat installiert und konfiguriert werden müssen. Ob die Frameworks benötigt werden, hängt vom jeweiligen Projekt ab; in unserem Beispiel verwenden wir keines der angebotenen Frameworks und beenden den Assistenten.

Nun haben wir schon einmal ein Projekt eingerichtet, dass sowohl lokal lauffähig ist als auch mit einer Produktivumgebung synchronisiert werden kann. Wir testen das ganze, indem wir eine simple Datei »index.php« anlegen und auf Run klicken – im nächsten Augenblick sollte sich, wenn alles korrekt konfiguriert worden ist, ein Web-Browser öffnen und über den lokalen Web-Server die gerade angelegte Seite darstellen. Sollte das nicht funktionieren, müssen noch einmal die angegebenen Pfade in den Projekteinstellungen überprüft werden.

Nun fehlt noch die Subversion-Einrichtung. Dafür wählen wir im Menü Team / Subversion / Ins Repositorium importieren aus und konfigurieren im folgenden Dialog das Server-Profil. Wir geben hier die Repository-URL sowie unsere Authentifizierungsdaten ein. Je nach Subversion-Server gibt es hier recht unterschiedliche Möglichkeiten – daher kann an dieser Stelle keine allgemeine Anleitung erfolgen. Im nächsten Schritt wird das zu verwendende Unterverzeichnis des Repositoriums ausgewählt. Da wir von einem bisher leeren Repository ausgehen, legen wir ein neues Verzeichnis »trunk« an und wählen dieses als Ziel aus. Anschließend wird der aktuelle Projekt-Stand committed, also in das Repositorium übertragen.

Angabe des zu verwendenden Subversion-Repositoriums
Angabe des zu verwendenden Subversion-Repositoriums

Hiermit ist die Projekteinrichtung abgeschlossen. Änderungen können von nun an sehr bequem über die integrierten Subversion-Funktionen überprüft und auf dem Quellcode-Server übertragen werden. Möchte man etwa sehen, welche Dateien sich geändert haben, reicht es aus, im Projekte-Panel auf einen beliebigen Ordner (es kann auch das gesamte Projekt gewählt werden) zu klicken und Subversion / Änderungen zeigen auszuwählen. Es öffnet sich ein neues Panel, aus dem heraus die wichtigsten Subversion-Aufgaben ausgeführt werden können. Per Doppelklick auf einen Dateieintrag erhält man eine grafische Übersicht der erfolgten Änderungen und eine Historienansicht.

Sollen nun Änderungen per FTP auf das Produktivsystem übertragen werden, kann nun auf einem ähnlichen Weg eine Synchronisation mit dem FTP-Server erfolgen: Wieder wird das Projekt- oder ein bestimmtes Unterverzeichnis ausgewählt und im Kontextmenü Synchronize angeklickt. Bevor Netbeans nun irgendwelche Dateien überschreibt, zeigt es noch eine Zusammenfassung der Schritte an, die es auszuführen gedenkt, so dass es immer noch die Möglichkeit gibt, den Vorgang zu modifizieren oder abzubrechen. Wer mag, kann diese Zusammenfassung auch komplett ausschalten, aber zumindest eine grobe Kontrolle ist in der Regel ratsam. Wer direkt »auf dem FTP-Server« entwickeln möchte, kann in der Run Configuration des Netbeans-Projektes auch auf einen automatischen Upload On Save umschalten. Hierbei wird jede Dateiänderung (die auch etwa durch Subversion-Aktionen bedingt sein kann) direkt übertragen. Ob das für ein Produktivsystem empfehlenswert ist, hängt letzten Endes auch vom Entwicklungsstand und der Größe des Projektes bzw. der Anzahl der Entwickler ab.

Howto: To-Do-Listen in Netbeans

Mit dem Action Items-Panel bietet die Entwicklungsumgebung Netbeans eine einfache, aber effektive Möglichkeit, ausstehende Aufgaben, die im bearbeiteten Quellcode anfallen, zu markieren und mit Notizen zu versehen.

Dazu werden innerhalb des Quelltextes einfach Kommentare mit bestimmten Stichworten eingeleitet, denen jeweils eine kurze Beschreibung des Punktes folgt, etwa so:

// TODO Fehlerbehandlung vervollständigen

Wird nun über den Menüpunkt Window / Action Items das entsprechende Fenster geöffnet, werden die vorhandenen Punkte übersichtlich aufgelistet. Das Fenster bietet am linken Rand relativ umfangreiche Filtermöglichkeiten: so kann nicht nur gewählt werden, ob Einträge aus der aktuell geöffneten Datei, aus dem gesamten Projekt oder allen geöffneten Projekten angezeigt werden sollen, sondern es können auch beliebige Filter definiert werden, die nur bestimmte Stichworte berücksichtigen. Auch die Stichworte, die überhaupt als Action Item interpretiert werden sollen, können vom Anwender selbst definiert werden.

Natürlich stellt diese Art von To-Do-Listen keinen Ersatz für ein Bug-Tracking- oder Ticket-System dar, aber gerade für temporäre Erinnerungen (beispielsweise beim Entwicklen eines Prototypen / Grundgerüstes, das innerhalb weniger Tage mit »Leben« gefüllt werden soll) ist es ein schönes Hilfsmittel.

Das »Action Items«-Panel mit To-Do-Eintrag
Das »Action Items«-Panel mit To-Do-Eintrag