Foonsearch

Hoi Weerman,

Ik heb deel van de logging aangezet van Ultimate++. Zit overal te zoeken in de code om het aan de praat te krijgen.

Ik denk dat ik hem even met compiler switch gaan terugzetten van Unicode naar ANSI.

De hartelijke groet Jan Marco

Hoi Weerman,

Net als bergbeklimmen, Omzetten naar ANSI werkt programma nog niet. Dus nu een ander pad gaan beklimmen.

Ga nu mijn “header set files” boven idewin.cpp in Ultimate++ zetten. In Ulitmate++ idewin.cpp ga ik gemeenschappelijk file “share.cpp” van Ultimate++ en Visual Studio laden. Code voor deze file “share.cpp” ga ik uit mijn poort “ultimate.cpp” halen. Als je dat doet geeft Ultimate++ compiler aan dat routine(s) al bestaan. Gooi je code uit specifieke file weg (die hij aangeeft). Daarna kijken of Ultimate++ nog werkt, zo ja dan doorgaan totdat “ultimate.cpp” leeg is.

Bovenstaande is mij net gelukt. Gehele morgen aan werk geweest om de conflicten in de code op te lossen.

Het is nu een eenvoudig klusje geworden :smile:

De hartelijke groet Jan Marco

Hoi Weerman,

Erg leuk nu, dat ik mijn omgeving goed heb staan. Ik kan nu in uiterste geval 390.000 source regels verschuiven van Visual Studio naar Ultimate++. Ik heb even als proef alle CreateWindow routines verschoven. Ik hoef niet alles te verschuiven, net zo veel als mijn versie van Ultimate++ gaat werken.

Vanmorgen kwam ik op idee dat het ook wel met de omgeving van de executable te maken kan hebben, dus de executable van mijn versie van Ultimate++ naast de officiële gezet. Nu zie ik dat mijn versie van het programma crasht. Ik denk dat hij de data niet laadt.

De hartelijke groet Jan Marco

Hoi Weerman,

Ben gisteren de hele dag bezig geweest om de routines van het hoofdprogramma uit mijn gesprokkelde file te halen en in een separate file te zetten. Vanuit deze routines (ide::routinenaam, 435 stuks, 17000 source regels) kan je ook andere programma’s in IDE programma hangen.

Ik zag de een van de ontwikkelaars van Ultimate++ een c++ “[Home_budget][1]” programma had gemaakt (voor zijn vrouw) om hun financiële positie bij te houden. Zie ook:

Over langere termijn wil ik de code van Chrome zo gaan aanpassen dat de transacties van ing.nl er bij gehaald kan worden. Cmake baalt dat het niet meer bij Chrome gebruikt wordt. Ik denk dat we make ultility in Ultimate kunnen maken , dat je Chrome gewoon kan compileren. Lijkt mij leuk om ook koppeling met database daarbij te gebruiken. Ik denk dat we ook statische analyse tools in de IDE kunnen gaan inbouwen.

Een project heeft verschillenden files die je kan editen en een (statische analyse) tool zet alle files in 1 file, haalt alle headers er uit en zet mijn header file set er boven. Wat ik nu opmerkelijk vind bij compileren in Ultimate is dat je naar fout kan springen in de source. Als ik een regel toevoeg in de file hij niet meer naar de juiste source regels wijst.

N.B. Ik zie in de source code van HomeBudget dat er Grid in zit. Ik heb ook andere grid versie, namelijk de Excel variant van Ultimate. Deze versie scrolt erg snel.

Voorgaande heeft m.i. twee componenten in zich.
1: Voorkeur om in 1 habitat te blijven.
2: Code is moeilijk te vinden. Het wordt niet goed gelinkt aan andere code. N.B. Ik kwam om de code van HomeBudget meer per toeval.

Ik ga vandaag proberen om Ultimate++ met Fossil (versie control programma), Wget en ‘Nullsoft (NSIS) Installer’ te integreren.

De hartelijke groet Jan Marco

N.S. Ultimate++ is een erg mooi programma. Als ik executabel download wordt er aangegeven dat niet vaak gedownload wordt. Ik denk dat de denkfout van Ultimate is om in alleen hun concept te denken. Als je het ook in Visual studio kan compileren, gaan ontwikkelaars gemakkelijker er mee aan de gang om iets aan te passen. Lijkt beetje op Mircosoft WIndows mentaliteit. Start knop is niet nodig dus laten wij hem weg…
[1]: http://www.digitalsoftware.pl/dgs.php?file=files/Home%20Budget/home_budget_1.00_src.7z

Hoi Weerman,

Ik zie dat Home_budget wel onder examples staat, blijkbaar over het hoofd gezien.

Ik heb nu geshared code onder Ultimate++ en Visual Studio staan. Ultimate werkt, Visual Studio nog niet. Ik kan gewoon gaan inbouwen. Ik ga komende tijd wel code verplaatsten naar shared code. Zal tijdstip komen dat mijn beide versies gaan werken :grinning:

De hartelijke groet Jan Marco

P.S. Wat gisteren veel tijd kostte is dat ik iedere keer (tussentijds) moest checken of nog werkt.

Hoi Weerman,

Complexiteit van Ultimate++ zit m.i. eerst in het grote aantal source regels, dus in begin gefocust om het “om te zetten”. Problemen onder compiler switch zetten, en later uit te zoeken. Gisteren daarmee begonnen en naar het fenomeen “Serialization” gekeken.

De hartelijke groet Jan Marco

Hoi Weerman,

Vandaag druk bezig geweest waar Ultimate++ fout gaat. Ik zie dat hij projectnaam.cfg wil inladen. Heb ide.cfg gekopieerd naar projectnaam.cfg , echter mijn versie crasht. Verder uitzoeken hoe je execetable en configfile in Ultimate kan aanmaken.

De hartelijke groet Jan Marco

Hoi Weerman,

Vacantie om. Drie programma’s proberen om te zetten. Excel grid en Keepass heb ik in twee varianten (wel of geen MFC). MFC versies werken, niet MFC (WIN32GUI versie) moet ik uitzoeken waar het fout gaat.

Bij Ultimate++ GUI werkt origineel wel, echter mijn versie zit nog fout in. Probeer dit op te lossen door “foute code” van het origineel onder het gemeenschappelijk deel te schuiven.

Volgende week beginnen om omgeving te verbeteren. Kabels van mijn twee internetverbindingen doortrekken en stroom aanleggen in extra kamertje bij mij.

De hartelijke groet Jan Marco

Hoi Weerman,

Ben nog aan het zwoegen om Ultimate++ onder Visual Studio 2010 aan de praat te krijgen. Gisteren 186 Ultimate++ header files op vaste plek gezet. Ultimate++ en mijn versie hebben nu zelfde ide.h file. Momenteel bezig om source die nu gemeenschappelijk is weg te mikken uit mijn 1-file-versie.

De hartelijke groet Jan Marco

Hoi Weerman,

Het is mij net gelukt om Ultimate++ aan de praat te krijgen. Ik wil de rest in gaan bouwen in de Ultimate++ GUI. Ik ga nu beter testen en de connectie naar Fossil gaan maken. Ik kan nu volgende stap uitvoeren om het in Unicode mode te gaan compileren.

De hartelijke groet Jan Marco

Hoi Weerman,

Het is mij gelukt om Ultimate++ met Unicode optie te compileren en te executeren. Had verwacht dat het een moeilijkere klus zou zijn. Opzich vind ik de omzetting om Ultimate++ te kunnen compileren onder visual studio wel een “zware bevalling”. Het was net bergbeklimmen. Soms was niet “mogelijk” om verder te klimmen dan weer terug naar basiskamp (= “backup terugzetten”) om een andere route te de klim weer in te zetten.

Wel zie ik dat sommige karakters iets lager staan en daarbij zijn afgekapt. Mogelijk dat iets met rendering en/of font te maken hebben i.r.t. het compileren met Unicode optie. Zie ook Package (8) kolom in:

Meer (dan IDE) code van Ultimate++ staat op github .
Interessant vind ik ultimatepp/uppbox/MakeInstall at master · ultimatepp/ultimatepp · GitHub om een executabel programmatisch te maken.

Ik ga nu kijken naar hoe een configuratiefile aangemaakt kan worden. Daarna ga ik kijken waar hij de files weg haalt en wegschrijft. Om versiebeheertool Fossil er tussen te zetten.

Ik opteer naar twee versiebeheertools. Fossil wil ik intern gebruiken, omdat het alles in 1 file in het SQLite formaat opslaat. Deze file kan je gemakkelijk in blobveld van (MySQL) database zetten. De externe versiebeheertool is ook GIT omdat GIT haast iedereen gebruikt. Dus om files te halen van andere projecten of als je GIT systeem hebt kan je dan vanuit Fossil het GIT systeem synchroniseren.

Daarbij is het ook belangrijk welke strings hij opbouwt om aan de compiler te geven. Ik kan nu in Visual Studio (2010) de Ultimate++ IDE compileren en executeren. Als ik met de gecompileerde versie de originele Ultimate++ source code weer compileer en link, dan mist hij routines met linken. Dit komt mogelijk dat hij niet dezelfde compiler switches gebruikt.

Over langere termijn is m.i. een goede doel om de source code integratie automatisch te maken. Dit zorgt voor dat je sneller functionaliteiten kan inbouwen en weer verwijderen. Time to Market is daarbij een belangrijk aspect.

Doel makkelijk gesteld, echter de weg er naar toe is stuk moeilijker. Eerste stap zou het kijken naar een goede statisch (C++) analysis tool kunnen zijn. N.B. Doel om auto’s zonder menselijke bestuurder te kunnen laten rijden is makkelijk geformuleerd. Het realiseren van deze doel is men momenteel stevig mee bezig. Men zet steeds kleine stapjes voorwaarts.

Om in https://www.ing.nl/particulier/index.html automatisch in te loggen en alle info in eigen database te stoppen is het m.i. handig om Chrome als project in Ultimate++ onder te brengen.

Ik heb verschillende GUI programma’s.

  • Ultimate++;
  • WIN32GUI;
  • Sqlyog;
  • KeePass;
  • Npackd;
  • Swish;
  • UgExel;
  • QT.

Ik heb naar The Chromium Embedded Framework gekeken. Wel leuk om het Duitse accent te horen. Ze spreken over twee typen processen namelijk browser-proces met onderliggende (child) rendering-procesen per unieke combinatie scheme (ftp, ssh, http, https, etc) en domein (www.ah.nl, www.kpn.com, etc). Ik denk dat bovenstaande GUI programma’s ook wel in de Chrome indeling zou kunnen stoppen. Denk aan dat je Excel grid (UgExel en Sqlyog) in Chrome inbouwt.

Ik denk dat Ultimate++ goede kapstok is om mee te beginnen. Hierin versiebeheertool (Fossil) inbouwen om meer in ‘control’ te komen. Daarna kijken of ik met Ultimate++ Chrome kan compileren. Het project Cmake is niet blij dat Chrome hun niet meer gebruikt om Chrome te compileren. Ik denk dat heel veel mensen blij zouden zijn als je programma download en met simpele “Set main package” en klikt “Chrome” aan en als het dan automatisch compileert zonder fouten worden ze blij van.

Ander punt is dat je remote zou moeten kunnen compileren. Omdat de compiler in Ultimate++ wordt aangestuurd en ik ook al de ssh routines heb zou het mogelijk moeten zijn om dit te verwezelijken.

  1. Via ssh files naar andere computer kunnen sturen en dan remote kunnen compileren, waarna je de resultaten weer terug krijgt via SSH.

  2. Je geheel project in Fossil formaat, wat 1 file is, via ssh naar remote computer kan sturen. Remote computer compileert het (Fossil) project en stuurt het resultaat weer terug via SSH.

Met bovenstaande kan je realiseren dat bepaalde code op bepaalde infrastructuur wel of niet werkt. Je zou het ook kunnen certificeren dat het voldoet aan een bepaalde norm. N.B. Je weet dan van te voren dat iets op bepaalde platform werkt. Ik begrijp eigenlijk niet waarom TNO daar niet op is gekomen… TNO keuringrapport op source code. Blijkbaar zien zij de mogelijkheden niet in een opgaande IT markt.

De hartelijke groet Jan Marco

Hoi Weerman,

Mijn logging routine werkte niet goed. Ik maak van een routine naam een file logging naam. In CPP kan je ook “::” karakters in een routine naam hebben (bv. “Upp::SaveFile”), daarom werkte het niet goed.

Ik ga nu beginnen met het integreren van Ultimate++ en Fossil (versiebeheertool).

Eerste stap is om de code van beide programma’s onder dezelfde source code stack werkend te krijgen.
Daarna ga ik programma’s koppelen. Als je file in Ultimate++ load, dan eerst in Fossil kijken of de file aanwezig is, zo nee dan de file van het filesysteem in Fossil gaan “inchecken”. Als je file in Ultimate++ saved dan in Fossil de file gaan opslaan (“inchecken”). Indien het in Fossil zit kan je in principe ook met anderen samenwerken. Anderen leveren dan wijzigingen op de code die ik dan wel of niet kan accepteren.

De (weekends) van de komende twee maanden wil ik nadruk leggen op het integreren van de code die ik al heb. De code gaan hangen in de grafische interface van Ultimate++.

De hartelijke groet Jan Marco

Hoi Weerman,

Twee dagen hard bezig geweest om Ultimate++ onder mijn source stack te zetten. Het compileert en linkt, echter het ‘runt’ nog niet.

Ik denk dat voipe.exe nog 10 mb groter zal worden als ik het met ultimate++ ga mergen. Zie ook appendix A voor de details.

De hartelijke groet Jan Marco
Appendix A:
08-11-2015 10:04 43.741.184 voipe.exe (fossil + wget + installer + sqlyog)
08-11-2015 07:20 32.144.896 ultimate.exe (fossil + wget + installer + ultimate).
07-11-2015 05:32 16.740.352 ide.exe (ultimate).
08-11-2015 06:56 19.650.560 fossil.exe (fossil + wget + installer)

Hoi Weerman,

Gebruik even algemene grafiek uit de meet- en regeltechniek om te verduidelijken wat ik wil realiseren:

Input komt (C, CPP en R) source code en output zijn de executables, libraries. debug info en compiler errors/warnings:

Ander variant is iets anders getekend:

De input ga ik ook in statisch source code analyse tool stoppen. In de Feedback-loop een blokje tekenen waar je de compiler warnings/errors analyseert en de source code aan de voorkant (automatisch) weer gaat aanpassen. De source code versiebeheertool Fossil wordt gebruikt om alles in vast te leggen. Werkt het niet kan je gemakkelijk weer teruggaan in de tijd.

Weerman, Misschien weet jij mooi kreet voor bovenstaande, soortgelijk aan “devops” of “cloud”. Wat zou samenvatten wat ik hier doe.

De hartelijke groet Jan Marco

Hoi Weerman,

Het is mij net gelukt om Ultimate++ onder mijn source stack op te starten. Eerder pogingen crashte programma op memory fouten. Ik ben steeds teruggegaan en nieuwe poging wagen, dit om te voorkomen dat ik in andermans (complex) programma zou moeten gaan debuggen. N.B. Je moet denken, het zou simpel moeten werken. Als je laat verleiden, kom je van de ene naar de andere puzzel… Wat heel veel tijd gaat kosten.

De hartelijke groet Jan Marco

Hoi Weerman,

Ben nog twee dagen bezig geweest om Ultimate++ te integreren met Clamav. Onderdeel van Clamav is llvm (500.000 regels source code). Wat denk ik gebruikt wordt voor een Sandbox in virusscanprogramma. N.B. Llvm wordt geloof ik ook bij de “apple C compiler” Clang gebruikt.

Ultimate++ werkt nog niet met SqlYog, maar daar ga ik volgend weekend naar kijken. Ik gebruik het open source gedeelte van SqlYog. Wel leuk te zien als je geen goede strategie hebt dat dat vragen oproept.

De hartelijke groet Jan Marco

Hoi Weerman,

Momenteel bezig om TOR onder mijn sourcestack te zetten.
Ga vandaag beginnen met integreren van SQLYog en Ulitmate++. Zie ook:

Ik ga Ultimate++ als paraplu programma gebruiken om de andere programma in aan te roepen.

Het linker programma (Ultimate++) gebruikt geen resource file. Alle menu’s worden geprogrammeerd in C++. Rechter programma (SQLYog) is menu en schermpjes in een resource file opgenomen.

Handig is om menu in Linker programma onder te brengen omdat je het in de toekomst automatisch in Ultimate wil compileren.

Beiden main programma’s draaien al onder mijn sourcestack in twee afzonderlijke programma’s, dus mijn uitdaging om er 1 main programma van te maken.

Ik kijk nu specifiek naar het hoofd main menu, wat moet je daar in opnemen? Beide programma’s lijken ook veel op het Visual Studio hoofdprogramma.

De hartelijke groet Jan Marco

Hoi Weerman,

Gisteren bezig geweest om TOR te integreren onder de sourcestack. Veel Openssl routines moeten ‘aankoppelen’. Start wel op, maar loopt nog stuk op iets. Ga de logging naar MySQL ombuigen.

Versiebeheertool Fossil heeft website inzich. Mijn intentie is om TOR deze website te laten voeden. Dus darknet constructie maken. Niet omdat het moet, maar omdat het kan.

De hartelijke groet Jan Marco

Hoi Weerman,

Net TOR onder mijn source kunnen linken en runnen. Het werkt niet zoals mijn basiskamp versie. Ik ga basiskamp versie weer poorten. Ik denk dat in de hoek van Openssl ligt. Ik ga openssl statisch linken en dynamisch loaden.
Bij start van programma gebruik je statisch gelinkte openssl. Je kan testen of openssl load niet gecompromitteerd is.

Hierna kan je de routines op dynamisch openssl zetten.

Hieronder even een openssl routine (DH_free) als voorbeeld uitgewerkt:

void DH_free(DH *dh); // orgineel routine
void pDH_free(DH *dh); // uit openssl dll geladen routine
void qDH_free(DH *dh); // voorstel openssl routine om in source code aan te roepen routine

if (DH_free == NULL)
{
if (pDH_free == NULL)
{
//error geen DH_free routine om te laden.
qDH_free = NULL;
}
else
{
qDH_free = pDH_free;
}
}
else
{
if (gebruik_dll)
{
if (pDH_free == NULL)
{
//warining dll routine is niet geladen, terug vallen op statisch routine.
qDH_free = DH_free;
}
else
{
qDH_free = pDH_free;
}
}
else
{
//is OK
qDH_free = DH_free;
}
}

Als je heel goed wilt doen zal je ook iets met mutex moeten doen op tijdstip dat je van de ene naar andere methode switcht.

De hartelijke groet Jan Marco

Hoi Weerman,

TOR werkt nu goed. Lag aan interferentie met ander deel (Mysql cliënt) van de source. Wat leuk van TOR is dat het zelf checkt of het ‘werkt’. Ga vandaag beginnen aan main integratie van Ultimate++, Sqlyog en TOR. TOR start je met een thread in de threadpool en is gekoppeld geloof ik aan een socket. Ga nog op zoek TOR client programma’s om te zien hoe de communicatie naar TOR-netwerk verloopt.

De hartelijke groet Jan Marco