Samstag, 24. Juni 2017

yabDevelopment Studio



 
Ich möchte hier mein neuestes Projekt vorstellen, eine neue IDE für die yab Script Sprache.
Das Ziel bei diesem Projekt ist eine Entwicklungsumgebung zu schaffen, die es Neueinsteigern ebenso wie erfahrenen Entwicklern  ermöglicht schnell und effektiv in yab zu arbeiten. Neben den gewohnten Funktionsumfang der gängigen IDEs sind schon  viele Verbesserungen und Neuerungen eingeflossen.

Jede yab Datei besteht im Wesentlichen aus vier Bereichen. Dem Programmstart, eine Schleife (Loop), die Bedienungsübergabe (Cases) und den Auslagerungsbereichen (Subroutinen). Auf Grund dieser Tatsache habe ich mich immer gefragt wieso man das nutzen von Bibliotheken so unnötig schwer gemacht hat und wieso sich diese Funktion auf die Subroutinen beschränkt.

Diese IDE besteht aus vier Editoren, jeweils einen Editor für jeden Programmbereich. Einen für den  Main-Bereich (Programmstart, Programmfenster, erste Abfragen), einen für den Loop-Bereich (Laufende Schleife um das Programm solange geöffnet zu lassen, bis der Netzer dieses beendet), einen für den Case-Bereich (Verarbeitung der Bedienung durch den Nutzer) und einen für die Subroutinen (Auslagerungsbereich für einen permanenten  zugriff im Programm). 

Dies ermöglicht eine größere Übersicht, einen schnelleres finden des zu bearbeitenden Bereiches und das Vergleichen und Übertragen von benötigten Informationen und Abfragen.

Neue Projekte zu erstellen wird erleichtert durch den Zugriff auf Templates, Examples und vorhanden Projektdateien. Die verschiedenen yab Komponenten (Widgets) können über mehrere Wege in den Editor übertragen werden. Die yab Commands sind über eine Auflistung einsehbar (Beschreibung) und über einen Doppelklick in den Editor übertragbar. Außerdem können die Widgets auch über das Programmmenü ausgewählt und damit in den Editor übertragen werden. Um von vorne herein mehr Angaben für die Widgets  vor zu nehmen, können diese über eine Menü-Leiste in einen extra Fenster geöffnet werden um dort gleich alle nötigen Angaben vor zu nehmen (Beispiel Window Open: Größe, Rahmen, Funktionalität).  Die enthaltene Farbauswahl ist mit diversen Farben ausgestattet (auch nach Namen). Bestimmte Zeichen können in yab nicht einfach so angezeigt werden und müssen in einen Hex-Kode angegeben werden. Für diese gibt es eine Auflistung in der du diese mit einem Doppelklick in den Editor übertragen kannst. Anders als in den gängigen IDEs kann man in yabDS keine Einzeldateien mehr öffnen, alles ist als ein Projekt anzulegen.

Ein Echtzeit GUI-Builder ist ebenfalls in Arbeit, aber noch in den Kinderschuhen.

Funktionsbeschreibung

-          yabDS öffnen
-          Neues Projekt anlegen im Menü unter Projekte (Projects)
-          Neue Main-Datei anlegen oder importieren
-          Neue Loop-Datei anlegen oder importieren
-          Die Main-Datei bearbeiten und die Loop anpassen
-          Benötigte Dateien anlegen, also Cases und Subroutinen erstellen oder importieren und editieren
-          Projekt testen (Main Menu Test) oder an yab Binden (Main Menu Build)
-          Um Loops, Cases und Subroutinen nutzen zu können, müssen diese über das Menü gerufen werden (Calling Loop here…, Calling Case here…, Calling Souroutine here…).

Ich habe eine HPKG erstellt mit dem derzeitigen Stand der Arbeiten. Die bei der Funktionsbeschreibung angegeben Arbeiten können bereits durchgeführt werden. Auch die yab Commands können wie zuvor beschrieben genutzt werden. Importieren von Example und Projekt Dateien sowie das hinzufügen von Templates ist möglich. Die Fehlerausgabe und das Springen in die jeweilige Datei und Zeile habe ich eingebaut aber bisher nur in den Examples getestet.
Ihr könnt die HPKG von unseren Repository Server beziehen: http://software.besly.de

Wer Interesse hat mich bei meinem Projekt zu unterstützen, kann sich gerne melden. Ich würde mich dabei vor allen darüber freuen, Infos über die Funktionalität zu erhalten. Auch Ideen sind willkommen. 
Außerdem würde ich mich über weitere Examples und Templates freuen. Ich möchte aber darum beten, dabei keine Bibliotheken zu verwenden, diese können zwar auch weiterhin im Editor verwendet werden (Main Bereich), aber diese sind eigentlich  in dieser IDE unnötig.

Ich hoffe die Idee und bisherige Umsetzung trifft auf Sympathie.

Sonntag, 12. Juli 2015

Neue Version des HPKGCreators



Der HPKGCreator ist nun in Version 0.8-1 erhältlich und von  unseren eigenen Repository Server über HaikuDepot installierbar.

Dazu muss man unseren Server in die Liste von Servern von HaikuDepot hinzufügen:


Danach findet man in HaikuDepot unter Server “BeSly Software Solutions”.

Neue Funktionen:

Durch Experimentieren, zusammen mit Lorglas, mit dem Packagemanager von Haiku und diversen Versuchen lauffähige HPKG Dateien zu erstellen, sind nun ein paar neue Funktionen verfügbar.


  • Durch das Markieren der Ausführbaren Datei des Paketes, kann man nun über ein Menü einen Link in das Haiku Menü erstellen lassen
  • Über das Package Menü kann nun der aktuelle Projektordner geöffnet werden.
  • Bei beiden Datei-Listen kann man jetzt eine „Dropzone“ verwenden.
    • Lässt man unter System eine Datei oder Ordner auf der Dropzone fallen, wird das jeweilige Verzeichnis geöffnet.
    • Lässt man eine Datei oder Ordner auf die Dropzone unter Package fallen, wird dieser/e dorthin kopiert.


Dienstag, 9. Juni 2015

HPKGCreator 0.7-3


Habe mir ziemlich lange am heutigen Abend den Kopf zerbrochen, weshalb mein HPKGCreator  plötzlich keine HPKGs mehr erstellt. Habe den Quellkode durchsucht, nach Fehler gesucht, diverse Variationen durchprobiert aber letztendlich kam der tatsächliche Fehler während eines Telefonat mit einem Freund zum Vorschein, denn dieser berichtet mir das in den neunen Haiku Nightlys das Home Verzeichnis auf Read-Only gesetzt wurde. Wieso macht man das? Ausgerechnet das Home Verzeichnis, welches ja das Verzeichnis für den „Nutzer“ ist.

Mit "chmod –R 777 /boot/home" wurde dieses Problem dann behoben. Dennoch sind ein paar Dinge aufgefallen beim probieren mit den Quellkode. Daher ist heute eine neue Version zustande gekommen, bei der zwar immer noch ein Fehler enthalten ist aber die mir problemlos ein HPKG erstellt.

Warum auch immer, aber irgendwie wird die Angabe der Eingabe "Require" zwar in den Editor und in die ".ProgrammInfo" Datei übertragen aber zurück in die Eingabemaske nach laden eines Projektes leider nicht.

Ich denke ich habe für heute genug Quellkode gesehen und man verrennt sich wenn man sich zu lange, intensiv auf ein Problem konzentriert. Daher ist diese Funktion derzeit nicht verfügbar... wird aber nachgeholt.

Sonntag, 24. Mai 2015

Yab - Datei oder Verzeichnis


Wie finde ich heraus, ob ich eine Datei oder ein Verzeichnis über ein Filepanel oder Dropzone verarbeiten muss?

Meine diesbezügliche Lösung beinhaltet eine IF-Abfrage und eine Subroutine.

If-Abfrage:


Folder$=Quellvariable$


if(IfDirectory(Folder$))then
      is_an_directory=1
else
      is_an_directory=2
endif

print is_an_directory


Subroutine:


sub IfDirectory(filename$)
      return not system("test -d "+filename$)
end sub
Um herauszufinden, ob ich ein Verzeichnis oder eine Datei über ein Filepanel oder Dropzone zu verarbeiten habe, übergebe ich meinen Dateipfad an die Variable Folder$ und verwende den Test Befehl um zu prüfen, ob ich ein Verzeichnis in der Variablen übergeben habe.


Ist die Überprüfung positiv wird durch die If-Abfrage die Zalenvariable is_an_directory auf 1 gesetzt. Ist es kein Verzeichnis, wird der Wert auf 2 gesetzt.

Beispiel: Egal was übergeben wird, es wird der Dateipfad ermitteln


If-Abfrage:


if(IfDirectory(Quellvariable$)) then
      is_an_directory=1
      Folder$= Quellvariable$
else
      is_an_directory=2
      dim SplitFolderPath$(1)
            splitting = split(Quellvariable$, SplitFolderPath$(), "/")
            for i = 2 to splitting-1
                  Folder$=Folder$+"/"+SplitFolderPath$(i)
            next i
            print "folder:"+Folder$
endif


Subroutine:


sub IfDirectory(filename$)
      return not system("test -d "+filename$)
end sub

In diesem Beispiel erweitern wir diese Überpürfung und ermitteln, egal was wir abfragen (Datei oder Verzeichnis),  wie der Dateipfad ist.


Ermittelt der test Befehl ein „nicht“ Verzeichnis, wird die Quellvariable über einen Array (SplitFolderPath$()) in seine Einzelteile zerschnitten. Um dies zu tun, wird bei jedem „/“ Zeichen eine neuer Eintrag im Array angelegt.


Danach werden alle Arrayeinträge wieder zusammengesetzt, mit Ausnahme des letzten Eintrages.

Freitag, 22. Mai 2015

Meine Programme für aktuelle Nightly Builds


Habe, nachdem ich yab und die yabIDE auf meiner aktueller Haiku nightly  zum Laufen bekommen habe, einige meiner Programme neu gebunden.

Diese sind auf der BeSly im Downloadbereich zu finden.

Folgende Programme sind neu gebunden:

-     BashHistorySwitcher 0.5 pm: Ein Programm um die BashHistory zu speichern und bei bedarf zu tauschen

-     BuildLOG 0.5 pm: Ein Programm, mit welchen man seine Erfahrungen beim Kompilieren von Programmen/Spielen archivieren kann.

-     EGSL IDE 1.2-2 pm: Eine Entwicklungsumgebung für die EGSL Programmiersprache (Leider ist EGSL derzeit nicht lauffähig (muss neu kompiliert werden))

-     Elektrican Calculator pm: Ein Taschenrechner für Elektriker

-     EUAE Launcher 0.5 pm: Eine Benutzeroberfläche für den euae AMIGA Emulator.

-     HPKG Creator 0.7-1 pm: Ein Programm mit welchen man Haiku Pakete erstellen kann (Kein Upload zum HaikuDepot).

-     ISOFileCreator 0.8 beta pm: Ein Programm mit welchen man ISO Images erstellen kann.

-     KeenDöskopp 0.6 pm: Eine Sammlung von Spielen für das Trainieren des Gehirns.

-     LBackup 1.1 pm: Ein kleines Backup Programm.

-     SingleLine Editor 0.3 pm: Ein experimenteller Texteditor mit Einzeilenbearbeitung.

-     TarGUI 1.2 pm: Eine Benutzeroberfläche für das tar Komprimierungsprogramm (bash).

-     BeSly TutorialFinder 1.3 pm: Ein Programm mit welchen man die BeSly Tutorials durchsuchen kann.
      -     ZipGUI 1.0 pm: Eine Benutzeroberfläche für das zip  Komprimierungsprogramm (bash).

Donnerstag, 21. Mai 2015

HPKG Creator



Nach langer Zeit der Untätigkeit im Programmieren in yab, hat ausgerechnet der HPKGCreator dafür gesorgt, dass meine Lust zu Programmieren wieder geweckt wurde.

Der HPKGCreator entstand Anfang letzten Jahres, nachdem ich mich längere Zeit mit dem Erstellen einer HPKG Datei beschäftigt hatte. Dies geschah auf Basis des auf der Haiku Webseite veröffentliche Anleitung über das Erstellen einer HPKG Datei. Da man über diese Anleitung alles von Hand erstellen und bearbeiten musste, kam mir schnell die Idee, dazu eine GUI zu bauen. Das Problem war nur, ich habe es lange Zeit nicht hinbekommen mit Hilfe der Anleitung ein funktionierendes Paket zu erstellen. Über zahlreiche Gespräche im IRC habe ich dann verlauten lassen, dass wenn ich es je hinbekomme eine HPKG Datei zu erstellen, dass ich dann eine GUI dazu bauen werde.

Als ich den HPKG Creator dann erstellt hatte kamen, wie üblich, kaum Rückmeldungen. Da ich selber mit anderen Projekten beschäftigt war und dann in eine tiefe Programmierlustlosigkeit gefallen war, habe ich nie eine neue Version mehr erstellt.

Erst nach Schließung des Software Archivs Haikuware kamen auf einmal Anfragen bezüglich dem HPKGCreator, der längst auf aktuellen Nightly Builds nicht mehr lief.

Habe daraufhin versucht yab auf einer aktuellen Nightly Version zu installieren, was mit den HPKG Dateien über HaikuDepot und bbjimmy nicht geglückt war. War danach kurz davor die ganze Sache ab zu blasen, habe dann aber ein Script erhalten, über welches yab heruntergeladen und kompiliert wurde.  Daraufhin ging die yab-IDE und die BuildFactory, was es mir ermöglichte den HPKG Creator neu zu Erstellen und online zu stellen.

Durch Gespräche im IRC und in BeShare wurde ich dann animiert den HPKGCreator  zu aktualisieren und zu erweitern. Derzeit arbeite ich daran, das man über „Dropzonen“ Daten kopieren, in Verzeichnisse wechseln oder vorhandene .ProgramInfo Dateien öffnen kann. Auch haben sich einige Eintragungen in der .ProgrammInfo Datei geändert die angepasst wurden.
Wann ich die neue Version fertig habe, kann ich bisher noch nicht sagen, möchte meine neu gewonnene Programmierfreude auch nicht mit Termindruck belasten.

Montag, 18. Mai 2015

HPKG Wahn


Ich weiß es ist verlockend HPKG Dateien zu erstellen, da diese dann über einen Doppelklick zu installieren sind. Leider ist das Package Management System von Haiku noch nicht vollständig ausgereift und es gibt ständig Änderungen.

So kommt es recht häufig vor das einmal wunderbar funktionierende Pakete auf einmal nicht mehr ihren Dienst tun. Wie kürzlich erlebt beim Versuch die aktuelle yab Version von bbjimmy zu installieren, Paket konnte nicht installiert werden, oder wurde installiert aber es ist für mich als „Hilfe ich kenne mich auf den Nightlys nicht aus“ Nutzer nicht auffindbar.

Da gelobe ich mir ein zip, tar,... Paket herunter zu laden und selber dieses Programm zum laufen zu bringen.

Ich würde mir wünschen das die Leute, die derzeit HPKG Dateien erstellen, auch parallel dazu ein normales zip oder tar Archiv erstellen würden.