Foonsearch

Hoi RGJ,

Vanmorgen de source code op volgorde gezet. Ik zag dat ik soms eerst een procedure aanroep deed en daarna de declaratie. Je krijgt wel een warning, alleen zag ik deze warning niet meer omdat ik er zoveel had. (warning level w4). Blijkbaar linkt hij wel ook al zit er verschil in het aantal parameters in de procedure aanroep. Ook het terugdringen van warnings heeft voor mij prioriteit gekregen.

Net begonnen om peer-, pingpeer en pongpeer te maken. Ben ondertussen ook nog bezig met de tabellen queryblockout, resendqueryblock, queryblock om die te updaten aan de nieuwe situatie. Ik heb de helo tabel renamed naar peer tabel. De techniek is vrij simpel. Je krijgt een query binnen. Je kijkt in peer tabel of je hem al kent. Ken je hem niet dan zoek je hem op in Subscriber op m.b.v. veld hash. Zit hij niet in de Subscriber tabel dan stuur je en peerping-berichtje naar deze peer. Je hebt namelijk van deze peer op een bepaalde ipadres iets gekregen en default staat luisterport op 2086. Je krijgt een peerpong bericht met als het goed is de guid van deze remote peer weer terug. Indien de ipadres/dnsadres:port niet in peer tabel staat bij een entry die wel op te zoeken is in Subscriber dan vul je in mq-veld ipadres/dns:port tevens in de Subscriber tabel in. N.B. Je stuurt geen berichtjes naar peers die achter een firewall zitten, want dat zie je namelijk aan het veld ‘configuration’ in het binnenkomende UDP-berichtje.

Ik denk aan om de volgend test. Je gaat bij de bedrijven via de kvk site de Subscriber:GuidUnity-veld aan elkaar laten linken op een zeer lage frequentie. Denk hierbij bijvoorbeeld aan Funprice. Eerst hoofd entry inserten en dan rest er ‘onderhangen’. Je gaat “random browsen” nabootsen. Het strak elke drie seconden een query afvuren op de KvK site zal je op niet al te lange duur in de host.deny file terecht komen.

Nadat je local de guidunity het omgezet stuur je een Subscriber update verzoek naar alle entries in de peer tabel. Selectie van het bedrijf random gaan maken op de peer. Dus je test het ontvangen en versturen van guidunit update verzoeken. Als dit werkt ga ik met de GUI programma verder.

De vriendelijke groet Jan Marco

Hoi RGJ,

Morgen twee extra redudante velden ‘wgs84Latasci’ en ‘wgs84Lonasci’ in Subscriber zetten om te testen of het dan met index op deze velden wel snel werkt.

Het versturen van netwerkquery’s en het samenstellen van het resultaat werkt weer --)

Voor mij gevoel ben ik weer op hetzelfde punt gekomen als een paar maanden geleden (met het ‘bergbeklimmen’). Best wel een stuk verbeterd, namelijk:

  1. betere hash (sha512).
  2. udp-packets kunnen nu tot fysieke limiet groot worden (circa 65kB).
  3. tabel structuur meer in lijn met elkaar gebracht.
  4. overbodige copieerslagen er tussenuit gehaald.
  5. koppeling met Subscriber.
  6. source code opgeschoond.

Punten waar ik op korte termijn aan ga werken:

  1. peer-, pingpeer en pongpeer gaan programmeren.
  2. resending protocol verbeteren.
  3. KvK HTML decodeer programma maken.
  4. de verwerking/verzenden van udp packets afhankelijk van importance en priority gaan maken. Indien je een peerpong hoger importance/prioriteit geeft als queryresult dan worden deze berichten sneller behandeld. Je kan namelijk heel snel veel packets in de send tabel zetten. Bij sequentieel doorlopen duurt de reactie op pingpeer m.i. te lang.

De vriendelijke groet Jan Marco

De vriendelijke groet Jan Marco

Hoi RGJ,

Ik heb zeven tabellen in gedachte m.b.t. het fenomeen ‘ping’, namelijk ‘pingpeer-‘, ‘pongpeer-‘, ‘pingkey-‘, ‘pongkey-‘, ‘pinghostname-‘, ‘ponghostname-‘ en ‘ping-tabel’.

Ping-tabel is de ouderwetse ping. Je stuurt een ping naar een host in peertabel en kijkt of je iets terug krijgt. Je kan iets over beschikbaarheid van de remotehost iets zegggen, mits hij de pings niet filtert. Merk op dat je geen berichtjes via de send tabel verstuurt. Deze ping gaat via andere poortnummer.

Met pinghostname/ponghostname krijg je eigen public ip van een andere peer toegestuurd. Pingkey/Pongkey is om te testen of de andere peer (remotehost) een stukje random tekst van je lokale peer kan decrypten. Je stuurt een random tekst ge-encrypt met de publickey van de remote host. Je test of de remote host de secret key (“geldige kentekendeeldrie”) wel heeft.

Pingpeer/pongpeer zit alles wat ook alles wat in de andere ping’s zit. Misschien moet ik ook nog wel een aparte pingguid/pongguid gaan maken.

Vanmorgen heb ik pinghostname en ponghostname werkend gemaakt. De cliënt kan met een pinghostname zijn public ip adres te weten komen. Hoef je hem niet meer handmatige in te stellen --) N.B. Als je achter firewall zit krijg je geen ponghostname terug, dus ook niet je public ip-adres. Als je achter firewall zit dan moet je m.i. de code zo veranderen dat je naar de remote host (welke wel via het internet te bereiken is) gaat zonder dat de remote host de verbinding met jou gaat verbreken. M.i. is het nadeel hiervan dat de remote host verbindingen open moet houden.

De vriendelijke groet Jan Marco

Hoi RGJ,

Updater-0.03 werkt sinds begin van deze week weer. Ik het begin gaat het heel snel, echter des te meer je insert des te langzamer gaat het. Ligt m.i. aan de vele indexen.

Ik ben nu bezig om de verschillende PING varianten te gaan implementeren. Je wilt variatie hebben. Bij de kleine “PING” zou je straks een aparte verwerkingsthread kunnen gaan bouwen die niets anders doet dan PING’s uit receive halen en dan parrallel naast de normale verwerkingsthread snel in send tabel gaan zetten. De send thread moet deze PONG berichtjes dan ook weer snel gaan oppakken om ze daadwerkelijke te versturen.

Ik ben voorstander van bepaalde vaste formaat berichtjes. Deze hebben betrekking op het vinden van de andere peers. Het op dezelfde tijd zetten van de peers. Ik ga nog “vaste” MQ achtige berichten inbouwen in het protocol.

De flexibiliteit zit er in dat een applicatie programmeur zelf databases en tabellen aan kan maken. Als applicatie programmeur zet je een query in query tabel en na verloop van tijd krijg je in queryresult veld het resultaat terug.
Het resulaat kunnen select records zijn of dat een update/insert wel of niet is gelukt op een bepaalde remote peer.

De vriendelijke groet Jan Marco

Bijlage De huidige gedefineerde Peer To Peer berichtjes:

#define p2p_PROTO_PING 1 // PING: sends a message to a remote host for a “sign of live” request of the remote foonsearchd process.
#define p2p_PROTO_PONG 2 // PONG: if you getting a PONG, the foonsearchd process should have been working. PONG is the response to a PING.
#define p2p_PROTO_PINGIP 3 // PINGIP: sends the “ping time” (from the local host to a remote peer) to remote peer. Ping time is received by sending ICMP packets.
#define p2p_PROTO_PONGIP 4 // PONGIP: receives the “ping time” from remote peer to local host, it is the response to a PINGIP.
#define p2p_PROTO_PINGKEY 5 // PINGKEY: sends a random message (which is encrypted with the public key of remotehost) to remote peer for validation and autorisation purposes.
#define p2p_PROTO_PONGKEY 6 // PONGKEY: gets the plaintext back of the sended random test message. Remote peer has encrypted the Plaintext which your Public Key. It is the response to PINGKEY.
#define p2p_PROTO_PINGPEER 7 // PINGPEER: sends the public ip, hash of public key, dns name, proxy peer, guid, random encrypted message, etc. of local peer and request remote peer to send his.
#define p2p_PROTO_PONGPEER 8 // PONGKEY: gets public ip, hash of public key, dns name, proxy peer, guid, “plain text” of encrypted message, etc. of remote peer. It is the response to PINGKEY.
#define p2p_PROTO_PINGHOSTNAME 9 // PINGHOSTNAME: sends the dns name, public ip, guid, and hash of publickey to remote peer and request remote peer to sent his.
#define p2p_PROTO_PONGHOSTNAME 10 // PONGHOSTNAME: gets dns name, public ip, guid, and hash of publickey of remote peer. It is the response to PINGHOSTNAME.
#define p2p_PROTO_PINGTIMESTAMP 11 // PINGTIMESTAMP: send to local ntp time to remote peer and request to remote peer to send his remote ntp time back.
#define p2p_PROTO_PONGTIMESTAMP 12 // PONGTIMESTAMP: gets the ntp time of remote peer. It is the response to PINGTIMESTAMP.
#define p2p_PROTO_QUERY 100 // QUERY:(My)SQL networkQuery
#define p2p_PROTO_QUERYRESULT 200 // QUERYRESULT: the result to a (My)SQL networkQuery. It is the response to a QUERY.
#define p2p_PROTO_RESENDQUERYBLOCK 300 // RESENDQUERYBLOCK: response when (UDP) packets are missing. Gives the progress of a huge Query(Result) transport also.

Hoi RGJ,

Ben nu met ntpd bezig om de openssl procedures te poorten zodat ze met loaddll worden aangekoppeld. Ntpd.c lijkt veel op foonsearchd.c en de timeservers kunnen mooi in subscriber worden opgenomen. Omdat je de gps coordinaten in subscriber kan opnemen kan je ook de afstand tot timeserver in de berekening mee gaan nemen.

De vriendelijke groet Jan Marco

Hoi RGJ,

Ik heb meer dan 70 voor mij nieuwe procedures (libeay32.dll/ssleay32.dll) gedefineerd.
Voor wget en gnunet had ik al procedures uit deze dll’s aangekoppeld. Zonder dat ik de nieuwe procedures aan deze dll’s heb aangekoppeld (“geladen”) werkt Ntp al weer. Blijkbaar wordt er hoop source niet gebruikt. Net als ik bij wget heb gedaan zal ik ntp source gaan schonen op code wat voor het doel (om peers op zelfde tijd te zetten) niet nodig is.

Ik ga straks wel proberen ze aan te koppelen. In ntp_crypto.c wordt veel met encryptie gedaan, dus je kan wel een beetje leren hoe het moet.

Ik ga Ntp in een thread laten draaien onder foonsearchd.c Tijd is m.i. een belangrijke zaak in een Message Queue systeem.

Van Ntp ga ik de syslog gebruiken in foonsearchd.c Eerst naar mysql loggen, werkt mysql niet dan naar file met de ‘syslogger’ van Ntp.

De vriendelijke groet Jan Marco

Appendix A: Syslog van ntpd:

18 Aug 10:39:39 ntpd[4076]: logging to file log.txt
18 Aug 10:39:39 ntpd[4076]: System AffinityMask = 3
18 Aug 10:39:39 ntpd[4076]: ProcessorAffinity Mask: 1
18 Aug 10:39:39 ntpd[4076]: precision = 0.843 usec
18 Aug 10:39:39 ntpd[4076]: no IPv6 interfaces found
18 Aug 10:39:39 ntpd[4076]: Listening on interface wildcard, 0.0.0.0#123 Disabled
18 Aug 10:39:39 ntpd[4076]: Listening on interface Loopback Interface 1, 127.0.0.1#123 Enabled
18 Aug 10:39:39 ntpd[4076]: Listening on interface TCP/IP Interface 2, 192.168.0.125#123 Enabled
18 Aug 10:43:58 ntpd[4076]: synchronized to 128.196.132.177, stratum 2

Hoi RGJ,

Ik ben de ntp source aan het bestuderen. Heb de Service code er al uitgegooid. Ik ga naar 1 file toewerken. Hierna in foonsearchd.c de koppeling naar deze file leggen.

Ik heb ook twee type Pings gedefineerd, namelijk Ping en Pinghostname.

Ping is 536 bytes groot met 340 bytes van de echte pinggedeelte, dus UDP_Message = 196 bytes. Pinghostname is 1604 bytes groot met 1408 byte pinghostname.

De verwerkingsthread gaat kijken in tabel ‘Receive’ naar peerid. Heb je peerid al in de ‘Peer’ tabel staan dan niets doen anders een pinghostname naar de peerid sturen. De verwerktingsthread update de peer tabel als de ponghostname berichtje wordt teruggezonden.

De kleiner “Ping/Pong” is bedoeld om te checken of een remote peer nog werkt. Mogelijk nog een extra veld inbouwen met “uptime”. Of nog een extra veld waarin je kan aangeven dat het niet/gedeeltelijk werkt.

De vriendelijke groet Jan Marco

Hoi RGJ,

Het wordt elke dag leuker om aan foonsearchd.c te prutsen. Elk weekend werkt er iets meer. Best veel fouten er uitgehaald. Wat nalopen van de sequence en dan ik mysql kijken of de waarden er goed in staan.

Afgelopen weekend een peer tabel ‘werkend’ gemaakt. Ik heb het zo gemaakt als peer tabel leeg is hij naar de root server gaat om public ip adres terug te krijgen. Als je het programma laat draaien en de peer tabel weer leeg maakt (met “delete from peer;”) maakt hij weer contact met de rootserver. Indien je public ip adres verkeert staat dan verandert hij hem automatisch.

Waarom is de Peer tabel belangrijk?

Het is de schakel tussen Subscriber en Send en Receive tabel. Daarnaast ga je queries naar de entries in de peer tabel sturen. Volgende week ga ik proberen om queries op de peer tabel te implementeren.

Ondertussen kijk ik ook naar de ntp source. Lijkt veel op foonsearchd.c source. Alleen het is beperkt in zijn bedoeling. Ntp is alleen om tijdsynchonisatie te realiseren. Met foonsearchd.c kan je via subscriber natuurlijk ook andere timeservers gaan vinden. Gewoon een instance van "category"veld van Subscriber tabel gaan maken, bijvoorbeeld “Timeserver”. Door GPS coordinaten van timeserver goed in Subscriber in te vullen kan je m.i. ook een beter time calibratie procedure maken. Een timeserver in Amsterdan ben je natuurlijk sneller dan als hij in Arizona staat.

De vriendelijke groet Jan Marco

Hoi RGJ,

Ik zie in de ntp source (serial) drivers voor bepaalde klok device. Best interessant als je een klok op serial poort hebt staan, alleen zal ik alleen de code willen overhouden die naar een timeserver toegaat op internet. In RFC 958 - Network Time Protocol (NTP) (RFC958) is ntp protocol gedefineerd zelfs met udp packet formaat.

In het protocol: Als Peer X een berichtje naar peer Y stuurt dan zet Peer Y het zo snel mogelijk (*) in mysql. Staat in dat berichtje de tijd dan kan Peer Y zien hoe laat Peer X het heeft. De verwerking van de timestamp in mysql vind dan later in de tijd plaats.

Komend weekend ook weer gaan kijken naar SAFMQ, zie ook http://safmq.sourceforge.net/

De vriendelijke groet Jan Marco

(*) Je kan ook iets met prioriteit van threads gaan doen. Zelf nog niet te veel ervaring mee. De UDP binnenhaal thread op hoger prioriteit gaan zetten dan de andere (“verwerkings”) threads.

Hoi RGJ,

Ik heb een tip gekregen dat je een gezamenlijk index zou moeten maken. Heb dus “alter table Subscriber add index idx_lat_log (wgs84Lat, wgs84Log);” ingezet. Alleen duurt het nog wel even voordat hij klaar is.

Ik had ook per ongeluk updater afgesloten. Ik zal van weekend een tabel inbouwen waarin ik een commit point ga inbouwen. Elke 10000 records een veld gaan updaten. Als je afbreekt begint hij bij laatst commit point weer verder met updaten.

De vriendelijke groet Jan Marco

Hoi RGJ,

De asci veld werkte een klein beetje langzamer als de double veld variant met index. Na uren bezig te zijn met het maken van de dubbele index, crashte mijn pc. Ligt m.i. aan de niet stabiele hardware. Het opnemen van de dubbele index in de declaratie van de Subscriber tabel heeft nu wel mijn voorkeur. Crasht hij, dan gewoon op vorige commitpunt weer verder gaan. N.B. Het maken van de dubbele index achteraf kost ook heel veel tijd.

De vriendelijke groet Jan Marco

Hoi RGJ,

De afgelopen dagen erg zitten te nadenken hoe ik safmq in relatie met foonsearchd.c moet gaan zien.
Eerst wat zit te duiden wat MQ is. Is het alleen maar een queue of ook operaties op de queue.
Foonsearchd bestaat uit minimaal 6 queues. Ik wil dezelfde dingen maar 1 keer laten terugkomen.
Je zou de 6 queues in SAFMQ kunnen bouwen. Of “(SAF)MQ” in foonsearchd.c blokken gaan opbouwen.
Laatst heb ik voor gekozen. Eigenlijk zijn de messages een soort query’s in mijn concept.
Gewoon de query tabel uitbreiden met user en queue veld.
Je stuurt eerst een query er heen om een (account) entry in een MQ tabel op te laten nemen.
Hierin staat guid, user, queue, permissies op de queue, etc.

In de query verwerkingsthread ga je in de MQ tabel kijken of een query (message) wel uitgevoerd mag worden.
Ben je niet geautoriseerd dan in query result de foutmelding zetten.
De foutmelding gaat automatisch naar de message sender terug.

Ik heb niet zo’n gevoel bij het inloggen in een queue. Ik ging er meer vanuit dat je als Subsriber entry maar 1 user (root) bent.
Als je een andere gebruiker wilt hebben. Dan maak je toch een nieuwe Subscriber entry aan met first naam de naam die je wilt zijn.
Ik ga het MQ concept een beetje volgen dat je meerdere users op 1 Subscriber entry kan gaan gebruiken.

Ik denk aan twee client programma’s

fs : gewoon safmqc ombouwen. Een command line variant.
fsc : Een client programma a la mysql, je blijft in een dox scherm werken.

De vriendelijke groet Jan Marco

Hoi RGJ,

De hele dag bezig geweest met het compileren van safmq. Ik heb de routines van openssl al weer aangekoppeld.
Ik begin nu het programma een beetje beter te begrijpen als je stevig met het programma aan de gang gaat.

Ik ga de SAFMQ server gedeelte in foonsearchd.c onderbrengen. Ik zag ook dat ze een guid gebruiken.

Dat is een random getal dat de identificatie van een bericht (message) is.

Ik ga het straks ombuigen. Je verstuurt straks geen bericht meer door het eerst onderwater op de filesystem te plaatsen maar het wordt aan mysql op de local host aangeboden.
Foonsearchd.c gaat het bericht versturen naar de doelpeer.

De vriendelijke groet Jan Marco

P.S. Het maken van de index (wgs84lat, wgs84lon) is nog niet klaar. Als het zondag nog niet af is ga ik het afbreken, want ik wil ook weer met “updater” aan de gang.

Hoi RGJ,

Om half vier vanmiddag zag ik dat het maken van de dubbele index klaar was in de mysql client. Hij was niet meer in de mysql client programma. Hij stond in de doxbox. Net alsof hij uit de mysql programma was gesprongen. Ik heb de test query gedaan, echter duurde 24 minuten. Lijkt alsof dubbele index niet gemaakt is. Ik ga het nu de dubbele index in tabel declaratie opnemen.

Ik denk dat elke foondump een andere aantal records heeft, dus aan de hand van aantal record zou je cdfoon versie kunnen bepalen. Je wilt de laatste entry van een locatie bewaren. Komt er een nieuwere entry dan deze in basis zetten en oudere data in archief database zetten.

Momenteel zit ik te denken of je verschillende updater programma naast elkaar kan laten draaien. Stel je hebt twee draaien, namelijk laatste cdfoon en voorlaatste cdfoon. Is de entry gelijk dan wordt een veld geupdate dat de periode van de entry aangeeft aangepast.

Ik vraag me af als beide updater dezelfde record gaan updaten of je problemen gaat krijgen. Gezien de 6 miljoen records zal dat lijkt mij haast nooit voorkomen.

Ik zal morgen proberen om de www. en email adressen in de basis van updater te zetten. Ik ga deze info uit de info records halen.

De vriendelijke groet Jan Marco

Hoi RGJ,

Het aanmaken van dubbele index bij creatie van de Subscriber tabel werkt m.i. wel goed. Het duurde 23 seconden om de test query uit te voeren toen Pink in Subscriber was geladen.

Je zet met de SAFMQclient.exe programma een query in de Message Queue (query) in je locale host. De query wordt hierna door foonsearchd.exe naar de remote peer gestuurd.

safmqclient --enqueue safmq://admin:@enschede@platomania.nl/query --query “SELECT TrackSN,Trackname FROM track WHERE title = ‘Casually Dressed & Deep In Conversation’ AND artist = ‘Funeral For A Friend’;”

SAFMQ to: safmq://admin:@enschede@platomania.nl
Queue: Query
Label:
Message Class: MySQL Query
Message Priority: STANDARD = 1024
Message ID: 290774f0-46ea-43db-debf-1debff0dc2d4
Timestamp: Sat Aug 26 19:29:10 2006
SAFMQ return: safmq://admin:@www.host.com
Recipt ID: 00000000-0000-0000-0000-000000000000
Timestamp:
Response Queue: QueryResult
Body: “SELECT TrackSN,Trackname FROM track WHERE title = ‘Casually Dressed & Deep In Conversation’ AND artist = ‘Funeral For A Friend’;”

De Message komt over enige tijdsperiode terug van de server van enschede@platomania.nl in je locale QueryResult Message Queue. N.B. Met de “retrieve” optie krijg je het resultaat op het scherm te zien.

safmqclient --retrieve --body safmq://admin:@localhost/QueryResult

SAFMQ to: safmq://admin:@www.host.com
Queue: QueryResult
Label:
Message Class: MySQL Query
Message Priority: STANDARD = 1024
Message ID: 290774f0-46ea-43db-debf-1debff0dc2d4
Timestamp: Sat Aug 26 19:29:10 2006
SAFMQ return: safmq://admin:@enschede@platomania.nl
Recipt ID: 3c2f1de8-dcda-459e-9d80-b482d22532d5
Timestamp: Sat Aug 26 19:46:00 2006
Response Queue: error
Body: “TrackSN|Trackname|0|Rookie Of The Year|1|Bullet Theory|2|Juneau|3|Bend Your Arms To Look Like Wings|4|Escape Artists Never Die|5|Storytelling|6|Moments Forever Faded|7|She Drove Me To Daytime Television|8|Red Is The New Black|9|Your Revolution Is A Joke|10|Waking Up|11|Novella|12|Data|13||”

De vriendelijke groet Jan Marco

Hoi RGJ,

Gisteren de Ntpd source 1 keer doorgelopen. Vandaag bezig om het naar 1 file te gaan verschuiven.
In ntp zitten wel dingen die nog niet zo goed in foonsearchd.c zijn uitgewerkt. Bijvoorbeeld Ip van kaart die packet aanneemt komt eruit en het gebruik van IoCompletionPort.
Laatste is m.i. een soort Windows threadpool oplossing. Foonsearchd.c en ntpd.c lijken van opbouw wel veel opelkaar.

In ntp zie ik ook dat hij in een lijst structuur (timerserver) peers bijhoudt. Mogelijk dat wel naar MySQL poorten.
Je gaat eigenlijk dan naar een integratie van foonsearch en ntp toewerken. Ntp luistert ntp m.i. naar poort 123.
De thread die naar deze poort luister laat je de packets die binnen komen naar MySQL receive tabel inserten.

De updater is nu bij het vullen van 3.900.752 records in Subscriber. Ik zie dat subscriber.MYD 1.1 gigabyte groot is en subscriber.MYI 1.9 gigabyte.

Punt waar ik tegen aan loop is het gedrag van de “applicatie”. Toen ik alleen Pink had geladen kon ik erg snel op gps coordinaten in Subscriber zoeken.
Het lijkt alsof het veel langer gaat duren als de database groter wordt. Lijkt een beetje analoog aan de netwerkqueries.
Het gedrag van een kleine query is anders dan als je een grote query(Result) probeert over te halen. Het is nu al zo krachtig dat je in 1 netwerkquery de gehele Subscriber (telefoonboek) van een remote peer kan overhalen. Ik heb alleen nog het probleem dat je het niet in 1 longblobveld kan storen. Er zit een fout in MySQL, want als je boven de 100 Mb in een longblobveld iets probeert te storen gaat MySQL onderuit. De workaround is dat ik de netwerkqueries op het filesysteem store. Mogelijk blijft de filesystemstore stap er wel tussenzitten.

Andere punt hierbij is de verdeling van de grootte van de netwerkqueries.
Ik denk dat 95% van de queriesResults straks wel onder de 65kbyte zullen liggen. In 1 zo’n 65kByte UDP packet kan je heel veel update/insert/delete info kwijt. Als het echt zou werken krijg je per uur verschillende update verzoeken op subscriber. Denk hierbij aan dat eindgebruikers hun entry gaan invullen/updaten.

De vriendelijke groet Jan Marco

Hoi RGJ,

Ik heb zoveel mogelijk code naar ntp_crypto.c geschoven. De include files is een rommeltje. Vanmorgen drie keer geprobeerd om de include file bij recvbuff.c te kopieren en de rommel er uit proberen te gooien. Het is mij nog niet gelukt. Vanmiddag ga ik weer een poging wagen.

Doel is om strakke code te krijgen die je peer op tijd synchoniseert. Daarnaast zit er code in die ik voor foonsearchd.c goed kan gebruiken. Integratie van deze twee programma’s is mischien ook goed mogelijk. Ntp wordt een extra thread in foonsearchd.c

Appendix ntp .c source:
filesize filename:
123.503 interfaceiter.c
10.864 md5c.c
732.228 ntp_crypto.c
13.774 ntp_filegen.c
31.019 ntp_loopfilter.c
18.224 ntp_random.c
76.356 ntp_request.c
4.804 recvbuff.c

Hoi RGJ,

Updater is al 8 dagen bezig en de teller stand staat op 5.281.292 records subscriber. Subscriber.MYD is 1,6 gigabyte groot en Subscriber.MYI (index Subscriber) is 2,6 gigabyte groot. N.B. Nog niet alle info welke ik uit de info records wil halen komt al in de basis. Groottes worden dus nog wel iets meer. Belangrijk is dat het wel voldoende snel is.

De tip die ik heb gekregen is om Statistics van MySQL aan te zetten. Je kan dan zien waar MySQL mee bezig is geweest.

Gisteren ook even “analyze table subscriber;” gedraaid. Geeft na 3 uur en 29 minuten. Msg_type=status en Msg_text = “OK”.

De vriendelijke groet Jan Marco

Hoi RGJ,

Het “schonen” van de ntpd source code gaat gestaag verder. Van weekend ga ik enkele commandline functie van safmqclient “aankoppelen” aan foonsearchd.c. Gewoon beginnen met createqueue en delequeue. Hierna berichtjes (bijvoorbeeld mails, netwerkquery’s) in de queue zetten (enqueue) en er weer iets uithalen (retrieve).

Ik zag ook een mailpakket http://mmm3.sourceforge.net/

Zo´n pakket moet je als een applicatie zien die een specifieke geval van berichtjes representeert. De GUI die ik graag wil ontwikkelen zou een generieke moeten zijn. M.i. zou dat niet moeilijk moeten zijn als je onderkant (database opslag en transport tussen de peers) generiek hebt gemaakt.

Even wat punten uit het mmm3 gehaald

  • Filters!
  • Friends list
  • delete unwanted mail in order to avoid spam and viruses
  • Multilanguage interface

M.i. zijn bovenstaande pluspunten wel te realiseren. De importance veld van de Subscriber tabel geeft aan of de andere peer je vriendis.

De vriendelijke groet Jan Marco

Hoi RGJ,

De “eindstand” bij het laden van 1 cdfoon is voor Subscriber is 1,7 gigabyte en 2,8 gigabyte voor de index op Subscriber.
Ik heb wat queries gedaan op zoeken van alle entries in een vlak op de kaart. Soms is het super snel, soms duurt het 8 minuten. Veel records binnen enkele seconden en soms weinig records (8000) in 8 minuten. Is weinig pijl op te trekken. De test richting is om de statistics boven water te krijgen als je 1 query uitvoert. Waar is de query de tijd mee bezig?

Om het totaal te testen ga ik http://mmm3.sourceforge.net/ (Magic-mail - emailapplicatie) gebruiken als GUI. Het ophalen van de mail in een apart programma onderbrengen. In Excel kan je ook switchen van tab-bladen, is m.i. ook wel mooi principe. Code van tab-bladje heb ik al eens gedownload.

MQ (safmq) gaan gebruiken om het in foonsearchd.c te krijgen. Op doel peer met de mail applicatie de mails (message in MQ) weer laten tonen op het scherm.

Ik ga dus een specifiek geval programmeren met het doel om het wel generiek te maken.

Magic-mail is niet de eind GUI applicatie maar een beginnetje om verder op te werken. Ik ben erg voorstander van dynamisch opbouwen van de schermen vanuit MySQL.

Todolist http://www.codeproject.com/tools/ToDoList2.asp heeft wel routines om het dynamisch te maken en is ook een agenda programma. Kan je dus ook direct meepikken, echter momenteel even een brug te ver. Heb nog te weinig ervaring met GUI programmering. Denk hierbij aan “docking” van windows schermen.

“Excel” vind ik een mooi concept. Het wordt een soort “Excel” applicatie, echter opslag ligt niet in een file maar in een databasepakket (MySQL).
In de applicatie kan je ook op de tabellen queries doen en ook op andere peer (netwerkqueries).

De vriendelijke groet Jan Marco