Autor Beitrag
FeelYourDataFlow
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Fr 16.01.15 21:49 
Hallo Entwickler!

Mein Name ist Alexander Golde und ich bin ein Mitglied des ANKHOR FlowSheet Developer & Support Teams.

Ich stelle Euch unser neues Programm ANKHOR FlowSheet vor.

- Als Entwicklungsumgebung wird immer noch das Visual Studio eingesetzt.
- Fast alle Komponenten sind in C++ programmiert, einige direkt in Assembler.
- Für das GUI setzen wir auf das gute alte MFC ( Elemente aus der Codejock Xtreme ToolkitPro ).
- Die eigentliche Applikation wurde für Windows entwickelt, jeweils in 32bit und 64bit.
- Unsere 3 ANKHOR Server laufen unter Windows und Linux ( wir benutzen CentOS ).
- Als Revision Control System leistet Perforce gute Dienste.
- Das automatische Build-System kommt aus dem Hause Smartbear ( Automated Build Studio ).
- Die Installer erstellen wir mit dem großartigen InstallMate von Tarma.

Jeder Software-Entwickler kennt das : Man hat eine Idee und baut sich - wenn ich mal Zeit habe - ein Tool,
um sich das Leben zu erleichtern. Gerade wenn eine Oberfläche ins Spiel kommen soll, und sei
es nur eine einfache Liste und ein paar Buttons, sind mehrere Stunden Vorlauf direkt auf dem Stundenzettel.
Und oft bleibt es dann bei der Idee.

Und hier könnte dann das FlowSheet Abhilfe schaffen. Wir nennen das FlowSheet eine zwar ein Daten-Werkbank,
weil sich damit sehr leicht kleine und große, einfache und komplexe Werkzeuge und Daten-spezifische Lösungen
bauen lassen. Aber bei Daten handelt es sich ja nicht nur um Tabellen oder CSV-Dateien.
Directory-Listings, Webseiten, Ausgaben von Kommandozeilen-Tools, R-Programmen, Python, unstrukturierte Daten,
Log-Files, Word und Excel-Dokumente, SQL-Dumps, Bilder, Binärfiles... Daten sind überall und können auch
mit dem ANKHOR FlowSheet verarbeitet werden.

Dabei setzen wir auf das Datenfluss-Prinzip. Datenflussgraphen sind optimal für die Parallelisierung
einer Datenverarbeitung und ermöglichen die parallele Ausführung auf mehreren Prozessorkernen, ohne
dass es der Benutzer beim Erstellen berücksichtigen muss.

Obwohl man die FlowSheets auch old-school programmieren kann, werden die FlowSheets hauptsächlich mit
dem graphischen Editor modelliert. Ich halte es nicht für übertrieben, den Editor als das zur Zeit
fortschrittlichste Tool zum Erzeugen von Datenflussgraphen zu bezeichnen.

Ein absolutes Killer-Feature ist die direkte Inspektion der jeweiligen Ergebnisse!
Da nach jeder Änderung am Graph dieser sofort ausgeführt wird, liegen an allen Ein und-Ausgängen
auch alle Zwischenergebnisse an.

Wer erstmal damit gearbeitet hat, fühlt wirklich seine Daten.

Das Programm ist zu komplex, um hier alles zu erwähnen.Eines aber doch vorweg, solange die
Konzentration der Leser noch vorhanden ist:

Die Community Edition ist kostenlos ! Auch für den kommerziellen Einsatz...

Was kann ich jetzt mit dem FlowSheet machen?

Ein paar Screenshots

user defined image

user defined image

user defined image

user defined image

user defined image

user defined image

user defined image

Spiele würde ich damit nicht programmieren. Ansonsten sind der Phantasie nur breite Grenzen gesetzt.

Wie man auf den Screenshots sehen kann, können wir auch Diagramme und Grafik.

Ein anderes (besseres) Excel ist das FlowSheet aber nicht. Bei der einfachen Erstellung von Formularen ist
Microsoft doch ein wenig weiter und natürlich als Marke gesetzt. Excel ist schon stark, sobald
da aber angefangen wird, die Forms mit VBA aufzublasen oder ellenlange unübersichtliche Formeln überall in
der Blättern zu verteilen... Nicht wenige Excelsheets werden wegen Unwartbarkeit einfach neu erstellt.

Eine eierlegende Wollmilchsau?

Das FlowSheet kann natürlich nichts, was man nicht mit einer anderen Programmiersprache auch programmieren kann.
Sehr viele Dinge kann ich aber mit den Operatoren und Makros schneller machen. Auch die Fehlersuche wird einfacher,
da ja fast immer direkt die Zwischenergebnisse einsehbar sind.

Einer unserer Standardsprüche: Sie entwickeln mit den Daten.

- Es lassen sich strukturierte Dateien einlesen und schreiben. Syslogs, Apache Logs, XML, CSV, XLSX, DOCX, SQL Dumps ...
Diese auch gerne komprimiert, zip, gz.
- Es lassen sich sehr gut unstrukturierte Daten einlesen.
- Binäre Formate. Bild-Formate, Audio-Formate, Outlook PST Files, MPEG Dateien, Daten aus Spezial-Tools, z.B. aus dem
Bergbau um Lastberechnungen durchzuführen.
- Über ODBC-Konnektoren können direkt Datenbanken angezapft werden.
- HTTPRequest Operatoren erlauben den direkten Kontakt ins Web. Abfragen an die APIs von Twitter, Google, Amazon, ebay etc.
- Direktes downloaden von Dokumenten geht natürlich auch.

Libraries und Pakete

FlowSheets lassen sich als Libraries deklarieren, und können die darin enthaltenen Makros anderen FlowSheets zur Verfügung
stellen. Finden Änderungen in den Libraries statt, lassen sich diese leicht in den High-Level FlowSheets updaten.

Ähnlich wie bei der objektorientierten Programmierung, können FlowSheets die Logik eines Basis-FlowSheets 'erben'.
Abgeleitete FlowSheets speichern nur noch ihren Zustand, bzw. Ihre Daten. Ein typisches Beispiel wie es nicht gehen sollte,
sind in dem Fall viele verteilte Excel-Sheets, die einmal verteilt, sich auf wundersame Weise ändern und später nicht mehr
zentral verarbeitet werden können, weil die User kreativ tätig waren :) Die abgeleiteten Flowsheets lassen keine Änderungen zu.

Im Programmkern sind nur die wichtigsten Operatoren implementiert, einfach aus Performancegründen. Alle Libraries enthalten
Makros, die auf diesen internen Operatoren basieren. Natürlich können Makros auch andere Makros aus anderen Libs enthalten.

Pakete

Über einen Paketmanager releasen wir von Zeit zu Zeit neue Pakete ( Libraries + Samples ) oder bieten Updates an.

user defined image

Eins meiner Lieblingspakete ist der LargeTextReader. Mit nur 3 Operatoren lassen sich Textdateien beliebiger Größe öffnen.
In einem der Screenshots auf der Produktseite wird das gezeigt - 600.000.000 Zeilen aus einer komprimierten Openstreetmap-Datei.
Wenn also mal das Notepad++ die Segel streicht...
Die 43GB an Daten werden dabei natürlich nicht komplett in den Speicher geladen sondern Paketweise per Streaming verarbeitet.
Selbstverständlich können die Daten nicht nur angezeigt werden, Makros zum Filtern, verbinden von Texten etc. werden zur
Verfügung gestellt.

Die Libraries

Base64Encoding.flsx - Base64 Encoding and Decoding
BayesNet.flsx - Prediction using Bayesian Networks
BezierSplines.flsx - Bezier Spline Interpolation
BinaryDataImport.flsx - Import of Binary Data
CashFlow.flsx - Cash Flow and Interest Calculation
CellCharts.flsx - Small charts in table cells
ClusterAnalysis.flsx - Cluster Detection and Analysis
Colors.flsx - Color Manipulation and Selection
CompoundDocumentFile.flsx - Parsing of Compound Document Files
DashboardCharts.flsx - Charts and Diagrams for Dashboards
DashboardDialog.flsx - Layout and Input elements for Dashboards
DataCube.flsx - Data Cube Processing
DataCubeInteractive.flsx - Interactive Manipulation of Data Cubes
DataImport.flsx - Import data from spreadsheet, CSV or fixed column files
DateAndTime.flsx - Date and Time Manipulation
DecisionTree.flsx - Decision Trees
Decorative3DDiagrams.flsx - Decorative 3D Diagrams
DescriptiveStatistics.flsx - Descriptive Statistics
DocumentFormatting.flsx - Formatting of Document
FileSystem.flsx - File System Support
Graphs.flsx - Layout and Manipulation of Graphs
HexNumbers.flsx - Converting to and from Hexadecimal Numbers
Interpolation.flsx - Interpolation of Functions
LayoutGrid.flsx - Layout using a Grid
LinearRegression.flsx - Linear Regression
NeuralNet.flsx - Prediction and Classification using Neural Network
PageLayout.flsx - Layout of Printer Pages
PetriNet.flsx - Simulation using Petri Nets
PluginAudio.flsx - Plugin for Audio Playback and Recording
PluginRayTrace.flsx - Plugin for Ray Traced 3D Images
PluginWebCam.flsx - Plugin for Web Cam Access
Random.flsx - Random Sequences and Shuffling
RandomDistributions.flsx - Random Distributions
RasterGraphicsTransform.flsx - Transformations of Raster Graphic Images
RomanNumbers.flsx - Conversion with Roman Numbers
RowSets.flsx - Set Operation on Tables of Integers
Sampling.flsx - Sampling and Data Preparation
SignalProcessing.flsx - Signal Processing
SpreadsheetImport.flsx - Import and Evaluation of Spreadsheets
SQLSupport.flsx - Support Operators for SQL Access
StringSupport.flsx - String Processing
TableFormatting.flsx - Formatting of Tables and Cells
TestDataGenerator.flsx - Generator for Test Data
Vector2DTransform.flsx - Transformations for 2D Vector Graphics
Vector3DTransform.flsx - Transformations for 3D Vector Graphics
VectorBodies.flsx - Basic Bodies for 3D Vector Graphics
VectorShapes.flsx - Basic Shapes for 2D Vector Graphics
WizardDialog.flsx - Basic Dialog Elements for Wizards
WorldMap.flsx - World Map Rendering
XMLSupport.flsx - Operators for XML Processing
SOAPLib.flsx - SOAP
TableLib.flsx - Table Tools
TagListLib.flsx - TagList Tools

Um diese Liste zu erstellen, habe ich mir ein FlowSheet gebaut ( FlowSheets lassen sich auch von FlowSheets einladen ).
Es iteriert durch eine eingelesene Directory-Liste und liest die Metadaten aus.

user defined image

Bedingt durch die massive interne Parallelverarbeitung, ist eine hohe Ausführungsgeschwindigkeit der FlowSheets gewährleistet.
Die Daten werden im Speicher teilweise komprimiert, es kann also sein, das man 40 GB Daten in 32 GB RAM unterbringen und bearbeiten kann.

Die PlugIns

Über ein PlugIn - System, lassen sich auch eigene Datenquellen anzapfen und ins Programm umleiten. Mit den PlugIns wird über TCP/IP
kommuniziert, es ist also auch möglich über das Netzwerk Datenerfassung zu betreiben.

user defined image

Dem aufmerksamen Leser fallen hier natürlich die beiden Python und R PlugIns auf. Und ja, das FlowSheet kann auch Programme dieser
beiden Sprachen ausführen und die Ergebnisse weiterverarbeiten.

Das AnkCmd
Mit dem AnkCmd werden die FlowSheets 'headless' ausgeführt. Als Beispiel sei hier ein FlowSheet genannt, das uns per FTP periodisch
Log-Files lädt und vorverarbeitet.

FlowSheets in fremden Programmen ausführen?
Yup, das haben wir auch im Angebot. Prima Sache, um per Rapid-Prototyping schnell Funktionen im eigenen Programm auszuprobieren.
Oder man stellt einzelne Funktionen einem Kunden per FlowSheet zur Verfügung. Die FlowSheets kann dann der Kunde später erweitern
oder verbessern.

ANKHOR in Action
Um das FlowSheet mal in Aktion zu sehen schaut einfach mal auf der WebSite vorbei, oder auf YouTube.
Dort entweder auf dem offiziellen Channel

www.youtube.com/user/ANKHORFlowSheet
oder hier
www.youtube.com/user/FeelYourDataFlow

Ich hoffe, ich konnte euch einen guten Überblick verschaffen.

Solltet Ihr Verbesserungsvorschläge, Fragen, Probleme oder Ideen für ein Tool haben, zögert nicht mich persönlich zu kontaktieren.

Mit freundlichen Grüßen
Alexander Golde