Entwickler: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
Zeile 87: Zeile 87:


der XMLRPC für den OrgaMon (Linux-Konsolenanwendung,Win32-Konsolenanwendung)
der XMLRPC für den OrgaMon (Linux-Konsolenanwendung,Win32-Konsolenanwendung)
=== bOrgaMon ===
BankCard Dämon für die Übergabe der EC-Karten an den OrgaMon. BLZ, Kontonummer, Gültig bis, Kartennummer wird gelesen. Schreibt die Kartendaten in eine Datei. (Oder per XMLRPC).
http://www.infintuary.org/index.php


== Team-Entwickler ==
== Team-Entwickler ==

Version vom 22. Dezember 2016, 17:41 Uhr

Software ist in der modernen Welt zu wichtig, um nicht als Open-Source entwickelt zu werden.
[Linus Torwalds]
Freie Software ist die Basis für IT-Sicherheit
[Richard Stallman]

OrgaMon, unterstützte Betriebssysteme

  • Win32, Windows 2000, XP, Vista, Windows 7
  • Linux über die Emulations-Schicht Wine ab 0.98.5
  • Virtualisierte Windows XP Systeme (via VirtualBox)

OrgaMon-App, unterstützte Betriebssysteme

  1. Andorid 2.3 oder besser

Datenfunknetz

technische Infos für Entwickler

OrgaMon, Summer of Code

OrgaMon-RC

OrgaMon-Server-Identitäten

  • der OrgaMon-Quelltext für die Konsolen-Anwendung (win32/linux) ist so universell gehalten, dass auch der Quelltext mit dem FreePascal [1]-Compiler übersetzt werden kann (ab Rev. 8.000).
  • Stand 2016: Im Moment läuft bei der Freepascal Compilierung nur das Target Win32. In Zukunft wird ein "lOrgaMon" als Serverprozess für Linux erwartet. Dazu muss ich noch automatisierte Tests in win32 vorbereiten, die dann identisch unter Linux ablaufen müssen.

cOrgaMon

cOrgaMOn.exe ist eine monolitische Anwendung die per Kommandozeilenparameter verschiedene Identitäten annehmen kann. Für jede Identität muss dann eine eigene Instanz des Prozesses gestartet werden.

id_TWebShop

  • der XMLRPC für den TWebShop

id_Bestellen

id_Mail

id_Druck

id_App

  • der Service für "senden" der OrgaMon-App
ftphost=
ftpuser=
ftppwd=
port=
LogPath=
# default = "NEIN"
NoTimeCheck=["JA"|"NEIN"]

id_Foto

  • der Service für das verteilen von Fotos
[System]
[~Id~]
ftphost=
ftpuser=
ftppwd=
BackUpPath=
WebPath=
[StatistikPath=]
FTPPath=
UnverarbeitetPath=
LogPath=

lOrgaMon

der XMLRPC für den OrgaMon (Linux-Konsolenanwendung,Win32-Konsolenanwendung)

Team-Entwickler

Für das Gesamtkunstwerk OrgaMon wird ein zentrales Repository mit der Software Subversion verwaltet. Der Read Only Zugriff ist anonym möglich. Schreibenden Zugriff erhalten Entwickler nach Kontakt zum OrgaMon-Maintainer Andreas(Punkt)Filsinger(bei)orgamon(Dot)org .

Installation

  • Lade Dir TortoiseSVN herunter (http://tortoisesvn.net/downloads) und installiere es
  • Erstelle in "Eigene Dateien"->RAD Studio->Projekte ein neues Verzeichnis mit dem Namen "OrgaMon" (kann auch woanders liegen oder auch anders lauten!) und öffne es (ANMERKUNG: Es MUSS sich wegen eines Bugs im TortoiseSVN auf einer LOKALEN Platte befinden, Samba Shares gehen nicht!!!!)
  • Rechtsklicke in das offene Verzeichnis in den leeren Bereich und wähle "SVN Checkout"
  • Als Repository gebe "svn://orgamon.org/orgamon" an
  • Vergewissere Dich, dass Dein "Check Out Directory" (eigentlich das Target Dir!) das eben angelegte "OrgaMon" ist
  • Drücke OK, alle Optionen einfach so lassen!

täglicher Arbeitsablauf

Beginn

  • rechter Mausklick auf Dein OrgaMon-Verzeichnis
  • "SVN Update"

-> Du bist nun auf dem neuesten Stand!

Coding & Test

  • öffne z.B. mit Delphi ./OrgaMon/OrgaMon.dproj
  • editiere Dateien wie bisher
  • mache alles wie bisher, teste alles gut ...

-> wenn Deine Änderungen Release-Fähig sind ...

Löschen von Dateien

bei einem Commit sind Löschungen nicht automatisch im Änderungsauftrag an den Server mit dabei: Es reicht aber "select / deselect all" anzukreuzen, alternativ kann bei jeder gewünschten Löschung ein Haken gesetzt werden.

Hinzunahme neuer Dateien

ACHTUNG: Jeder neue Content (neue Verzeichnisse / neue Dateien) wird erkannt jedoch muss wie bei der Löschung das "select / deselect all" angekreuzt werden, dass überhaupt der Content übertragen wird. Bei dieser Verfahrensweise bekommen jedoch andere Entwickler diese neuen Dateien nicht zu Gesicht. Es muss hier mehr getan werden:

Man sollte erst mal alles zu Ende bringen, also alle Hinzunahmen erst mal zu Ende bringen. Nun muss man

  • auf neue Verzeichnisse einen rechten Mausklick machen und "TortoiseSVN" -> "+ add" ausführen, jetzt hat man die Chanche Datei-Extensions, die man nicht auf dem Server haben will zu demarkieren (default ist "Alles angekreuzt"). Nach einem OK wir im lokalen Repository zunächst mal der neue Content als überhaupt "SVN-relevanter" Content beachtet. Der Fragezeichenstatus geht über in ein fettes blaues Plus.
  • neue Dateien, die noch ein blaues Fragezeichen haben muss einzeln ge "+ add"ed werden.

Vor einem "Commit" sollten also alle "hängenden" Stati ordentlich in echte Stati "add" oder "ignore" umgesetzt werden!

Release erzeugen

  • mache diesen Schritt sobald all deine Test erfolgreich laufen
  • Nebeneffekte deiner Release sollten ausgeschlossen sein, wenn unsicherheiten bestehen bitte Andreas Filsinger kontaktieren
  • "SVN Update" auf die Projekt-Datei im Rev-Verzeichnis (z.B. OrgaMon.rev.txt)
  • Rev-Datei nun laden und eine Version hochzählen (und merken) und einen neuen Eintrag machen
  • in "globals.pas" die gemerkte Version Nummer eintragen
  • nochmals compilieren
  • Autoup und ab damit
  • Nun all deine Änderungen committen: rechter Mausklick auf das Repository Haupt-Verzeichnis
  • "SVN Commit"
  • dokumentiere in der Msg-Box dein Patch-Set

optional

  • anschliessender "SVN Update", denn andere waren in der Zwischenzeit nicht untätig
  • dies erhöht die Chanche dass Dein nächster "Update" / "Commit" problemlos durchläuft

Bedeutung der Verzeichnisse

  • anfix32 (*.pas Tools)
  • PHPincludes (*.php Tools)
  • rev (Die Revision-Dateien)
  • OrgaMon (*.pas der OrgaMon-win32-Client)
  • MonDaServer (*.pas ein Server)
  • Oc (*.pas ein Kommandozeilen Tool)
  • aqbd (*.c ein HBCI Dämon)
  • TWebShop (*.php5 der OrgaMon Webshop)

Konzepte

DatabaseArchitect
RAIB

Datum

Noch immer ist die Unsitte verbreitet Datumsangaben im Bezug auf das Jahr nur 2 stellig anzugeben, als man schenkt sich das Jahrhundert, in dem wir leben! Also einen Datumsangabe wie z. B.

10.10.10

hm, ist das jetzt der 10.10.1910 oder 10.10.2010. Das kann man nun je nach Kontext (als Mensch) sehr gut entscheiden. Der OrgaMon legt hier folgende Vereinbarung zu Grunde:

  • Gehe vom aktuellen Jahr aus und rechne ein Menschenalter (75 Jahre) zurück, dies ist das Startdatum für 2 stellige Jahresangaben
  • Gehe vom aktuellen Jahr aus und rechne eine Menschengeneration (24 Jahre) vor, dies ist das Endedatum für 2 stellige Jahresangaben


z.B. 10.10.10
  • Es sei das Jahr 2025: Zeitraum ist somit also 1955 bis 2054
  • das bedeutet die Lösung ist entweder 1910 oder 2010
  • da nur 2010 im vorberechneten Zeitfenster liegt ist dies das Ergebnis!

Kann es sich auch mal auf das kommende Jahrhundert beziehen? JA. Sagen wir jemand sagt: Am 10.10.03 steigt die grösste Party aller Zeiten! Nehmen wir an, es ist das Jahr 2099, also

2099 - 75 = 2024 StartJahrhundert
2099 + 24 = 2123 EndeJahrhundert
  • Die Lösung 2103 liegt sauber in unserem Zeitfenster!


CMS.Dateiablage

OrgaMon next

  • Es gibt Gedanken über einen Neustart der Entwicklung in c++17 mit clang als Compiler und qt Develop als IDE

clang++

// orgamon.cpp

#include <iostream> 

int main(){

 if (!nullptr) {
  std::cout << "<nullptr> support!" << std::endl;
 }

std::cout << "Hallo, du schöne Welt!" << std::endl;
return 0; 

}


Comilieren und Linken

clang++ -stdlib=libc++ orgamon.cpp -lc++abi
./a.out

Von Clang die LLVM IR lernen

clang++ -S -stdlib=libc++ -emit-llvm orgamon.cpp

joe orgamon.ll

FreePascal

  • FreePascal sollte ev. ein Target LLVM IR enthalten
  • https://code.google.com/p/dcocor/
    • sollte 100% UTF8 werden, nix anderes (Source, Strings, Files, DB, OS)
    • sollte ev. ein Target LLVM IR enthalten

TO DO

  • FlexCell und IBObjects Wegfall
  • Migration Zipper
  • Nach der Funktionsprüfung von lOrgaMon.exe (FreePascal-Win32-Konsolenanwendung) soll das Compile-Target "Linux" geprüft werden.
  • Bestandteile der Dienste "Mail", "Tagwache", "Tagesabschluss" sollen Stück für Stück in den lOrgaMon Code wandern.
    • --Indexerstellung
    • --FTP-Uploads
    • --Backup / --restore
    • --tagwache
    • --tagesabschluss

SEPA-Probleme

bisher

'ABSCHLUSS PER 31.03.2011'#$D#$A
'SALDO RECHNUNGSABSCHLUSS'#$D#$A
'            PER  31.03.2011'#$D#$A
'INCL. ABSCHLUSSBETRAG'#$D#$A
'                     303,49'#$D#$A

neu

'ABSCHLUSS PER 31.12.2015SALDO RECHNUNGSABSCHLUSS            PER  30.12.2015INCL. ABSCHLUSSBETRAG                     763,52'#$D#$A

Aufsplittung


'ABSCHLUSS PER 31.12.2015'
'SALDO RECHNUNGSABSCHLUSS'
'            PER  30.12.2015'
'INCL. ABSCHLUSSBETRAG'
'                     763,52'
  • Also was die Banken machen ist gegen jedes IT-Verständnis
    • die einst mehrzeiligen Verwendungszwecke werden zu einer langen Zeile zusammengefügt, dabei werden
      • Blanks links des ersten Zeichen erhalten
      • Blanks rechts des letzten Zeichens gelöscht

TOLL!!! Gut gemacht