Foonsearch

Hoi RGJ,

Vanmorgen even naar MDI gekeken. Ik wil proberen om eerst wat codeproject MDI-projecten te mergen. Hierna het resultaat proberen te mergen met de todolist applicatie.

In hoofdlijn heb je verschillende mdi-childs (documenten) in een mainframe. De mdi-childs kunnen weer verschillende views hebben. Elke mdi-child-window zal ik als “todolist+controls” window programeren. De views in deze window zijn de tabellen van MySQL. Mijn gedachten nog beter stuctureren, een mdi-view zou de peer van www.funprice.nl kunnen zijn. De views bijvoorbeeld Subscriber, Product, Contact, etc. tabel kunnen zijn. Met “een druk op de knop” kan je een query op hun site afschieten en het resultaat komt dan in de mdi-view te staan. Zie ook het kopje "Single-MDI Applications"op Windows Forms 2.0 Programming, 2nd Edition: Chapter 14: Applications - CodeProject voor achtergrondinfo waar het over gaat.

Verschillende documenten (mdichilds). Zie ook Automatic Tab Bar for MDI Frameworks - CodeProject

1 document heeft weer verschillende views:
A Tabbed MDI Frame Window - CodeProject Mogelijk ook combineren met http://www.codeproject.com/tabctrl/mditabs.asp

In A flicker issue in MDI applications - CodeProject staat beschreven hoe het flikkeren van mdi applicaties kan oplossen. Zelf heb ik het probleem niet kunnen herconstrueren. Mogelijk ligt het ook aan Windowsversies of bepaalde (verouderde) hardware.

handig: Switching to other views in a doc-view application : Switching to other views in a doc-view application - CodeProject

De vriendelijke groet Jan Marco

MDI is sooooo nineties :?

Hoi RGJ,

Zou best kunnen dat MDI ‘oude meuk’ is. Gisteren de hele dag stevig bezig geweest, echter lukte niet zo. Vandaag een andere insteek genomen. Ik zie dat het veel fout gaat met de combinatie tussen MDI-programmeren en resource files.

Dus drie MDI projecten eerst afzonderlijk met 1 resource file laten samenwerken. Hierna proberen te mergen.

RGJ, MDI kost mij nu veel tijd, echter als je later in de tijd het weer moet inbouwen kan het mij nog wel veel meer tijd gaan kosten,

Ik weet dat planning moeilijk is. Ik streef ernaar dat 1 januari 2007 de GUI en Voip gaat werken. Hierna elke maand een nieuwe versie uitbrengen met nieuwe functionaliteit.

De vriendelijke groet Jan Marco

P.S. Ik probeer eerst MDI programmatjes onderling te mergen. Hierna het resultaat mergen met todolist. Waarna ik de koppeling met MySQL er in gaan bouwen.

Hoi RGJ,

Ik heb nu een resource file die werkt met de todolist programma en met drie afzonderlijke MDI voorbeeldprogramma’s. Moet nog beter gaan kijken hoe het werkt om het goed te kunnen integreren.

Ik zag ook ( http://www.codeproject.com/useritems/CCalendarCtrl.asp ) om een ‘agenda’ te programmeren. Naast het bellen is m.i. ook het maken van (remote) afspraken een belangrijke functionaliteit.

De vriendelijke groet Jan Marco

Hoi RGJ,

Ik heb een opensource project gevonden welke onderdelen van mijn databasebrowser concept bevat, namelijk http://www.webyog.com/ en deze ga ik gebruiken als initiele GUI programma. Dus hierin VOIP (Wengo source) gaan programmeren.

http://duxcw.com/digest/Reviews/Software/mysql/index.html :

[quote]SQLyog. This program was easy to install and configure. It was up and connected to my databases in minutes. It had no significant problems. However, the look and feel of this windows-based app is not quite as good as MYSQL Front or MySQLCC, but better, in my opinion, than phpMyAdmin. Table content displays are not very good and are awkward to work with on a 17 inch, 1024X768 monitor. In particular, it does not directly display the data in tinytext fields. One has to double-click them to pop a window with the data. The icons along the top of the screen are rather busy and somewhat fuzzy… The logical arrangement of things to execute commands is bit awkward to a newbie. In other words, the utility has a learning curve and the ergonomics could stand some improvement.

But for real power, this feature-rich program has all of the others beat (see the list of features at the end of this article). The database synchronization feature is quite noteworthy and just the thing for a person like myself with development and operating copies of the same databases. Simply click Tools, Database Synchronization Tool and up pops a Window with two panes side-by-side, open the local version of data base in one pane and the operating version in the other and the tables of each appear in the respective panes. One then sees what tables in each database are out of synch and can select the whole database, specific tables, etc. to synch in either direction. It sure saves a lot time and inconvenience as compared to dumping, moving, and restoring an operating 40 MByte database located in another state. And that plus all of the other features is what sold me on SQLyog. Larry

SQLyog (3.11) Features

“very fast retrieval of data
ODBC Import with option to import data through query
database synchronization tool
update result returned from query
manage foreign relationships
fully InnoDB compliant
view your results in GRID / TEXT mode
fast client side sorting and filtering
execute ( very large ) SQL-scripts as batch files
execute multiple queries returning more than 1000s of rows per resultset. Its very efficient in memory
very compact binary ( 520KB Installer )
written entirely in C/C++/Win32 APIs using native MySQL C APIs. No wrapper classes used
connection manager
excel like grid interface to create/alter tables
excel like grid interface to edit data with support for Enum/Set
create/drop databases
manage indexes
comprehensive security manager. Control access to databases/tables/columns
reorder columns of table
copy database/tables between two MySQL hosts
drop all tables of a database with a single click
edit BLOBs with Bitmap/GIF/JPEG-Support
export table-structure and data into SQL-scripts
export/import data in/from CSV files
export database schema in HTML
log all queries for a session
profile queries
syntax-highlighting
save resultset in CSV, HTML and XML
save your commonly used SQL scripts in a personal folder with a click of mouse
is very keyboard friendly. You can work with 99% features of SQLyog with keyboard.
view and kill other user-processes
view advanced table-properties, such as Type, Comment, Key_Length and so on
a list of server-variables e.g processlist, status, variables etc
copy your result as CSV in clipboard
copy tables to new table-names
change table-types to ISAM, MYISAM, MERGE, HEAP, InnoDB, BDB
flush Host/Logs/Privileges/Tables
do table-diagnostics (check, optimize, repair, analyze)
FREE!
and a lot more…” [/quote]
De andere GUI source ga ik nog wel mee verdere. Als ik goed begrijp hoe deze code werkt dan ga ik het in “SQLyog” inbouwen. Ik ga nu eerst proberen om de Wengo (Voip) source aan de praat te krijgen.

De vriendelijke groet Jan Marco

Hoi RGJ,

Ik ben bezig om tussen twee peers het SIP-protocol van de “Wengo source” werkend te krijgen. Als je de officiele Wengo gebruikt zie ik dat je vanuit hun server een INVITE krijgt toegestuurd.

Ik zie dat er tenminste drie servertjes in zitten namelijk poort 5060. Dit is de poort waarop de SIP protocol pakketjes binnenkomen.

De andere SIP-servertjes zijn de local en remote tunnel.

M.i. zijn er (minimaal) vier methodes om “Voip-telefoonberichtjes” naar je server te sturen.

  1. via SIP protocol. SIP-bericht=Soort file met commando en opties. Je zet in Configuratie tabel “sip” optie aan. Je krijgt dan een aparte thread die de binnenkomende SIP commando’s ontvangt en ter verwerking aanbiedt.

  2. SIP-berichtje verpakken in Query/QueryResult berichtjes. Je parst in de verwerkingsthread het SIP-bericht in de relevante (MySQL) tabellen.

  3. “Directe insert” van (MySQL) records in tabellen via Query/QueryResult berichtjes.

  4. Berichtjes in een MessageQueue (MQ) sturen. Eigenlijk een variant op 2 en 3. Voordeel je krijgt in de QUI (SQLyog) een queue icon. Als je queue wilt weggooien kan je gewoon snel in de GUI doen. Alle info m.b.t. deze remote peer wordt dan in 1 muisklik weggegooid.

Ik stuur het REGISTER commando naar mijn andere peer. M.i. doet hij er nog weinig mee. Mogelijk REGISTER commando gebruiken als je achter firewall zit, dus REGISTER een aanvraag naar een proxy (*) laten zijn. In 4) oplossing zou je door de SIP commando REGISTER een queue gaan aanmaken op een remote peer welke in verbinding met internet staat. Als je achter firewall zit dan ga je in deze oplossing een tunnel met deze remote queue verbinden. Je krijgt dan direct via de opgezette tunnel de Voipberichtjes welke bedoeld zijn voor jou.

De vriendelijke groet Jan Marco

Ps. (*) = peer welke te bereiken is via internet en waar je naar toe een verbinding maakt als je VOIP wil laten werken op je pc. In het geval als je achter een firewall zit.

Hoi RGJ,

Vanmorgen naar de structuur van “Wengo source programma” gekeken. De SIP opdrachten worden in een thread in een fifo buffer gezet= MQ. Een andere thread verwerkt de binnenkomende SIP commando’s. De structuur is hetzelfde als foonsearchd.exe. Wat ik wel zag is dat men de verwerking in de thread die de binnenkomende SIP pakketjes heeft gebouwd. Om het generiek te houden moet je m.i. alles direct in MySQL zetten (dus niet veel aan poortverwerking verwerking doen) en de verwerkingsthread de opgelagen pakketjes laten verwerken. Als je dat doet kan je m.i. ook beter beveiliging inregelen. Als je aan poortverwerking zou doen dan zou je daar ook moeten kijken of je wel een reactie op het verzoek wilt geven. Je krijgt dan ook database calls.

Zit ook iets in van transacties. M.i. zijn er nog niet veel transacties geimplementeerd. De vraag is m.i. wat wil je in SIP doen en wat in een andere protocol. Het lijkt mij dat je alles m.b.t. VOIP in SIP wilt doen. Oplossing is door het te gaan implementeren en dan gaan kijken wat het beste werkt.

RGJ, SQLyog (+ de Wengo relevante deel) en Firefox gaan integeren als uiteindelijke GUI.

De vriendelijke groet Jan Marco

Hoi RGJ,

Wat al redelijk lukt is om de “Wengo demon source”, wat ik vanaf nu maar “Phone” ga noemen, op mijn ene pc te zetten en op een andere pc het officiele Wengo programma.

Zes stadia van een VOIP telefoontje:

  1. EXOSIP_CALL_PROCEEDING (1 2) [100 Trying] sip:william@101.102.103.104:5060 requri=sip:william@101.102.103.104:5060
  2. EXOSIP_CALL_PROCEEDING (1 2) [101 Dialog Establishement] sip:william@101.102.103.104:5060 requri=sip:william@101.102.103.104:5060
  3. EXOSIP_CALL_RINGING (1 2) [180 Ringing] sip:william@101.102.103.104:5060 requri=sip:william@101.102.103.104:5060
  4. EXOSIP_CALL_ANSWERED (1 2) [200 OK] sip:william@101.102.103.104:5060;tag=782678151 requri=sip:william@101.102.103.104:5060
  5. EXOSIP_CALL_STARTAUDIO (1 2) [200 OK] sip:william@101.102.103.104:5060;tag=782678151 requri=sip:william@101.102.103.104:5060
  6. EXOSIP_CALL_CLOSED (1 2) [0 ] requri=

Als ik op de andere pc ook het “Phone” programma zet dan zie ik niet alle bovengenoemde stadia. Ik moet nog wat gaan studeren in het SIP protocol om het perfect te krijgen. Zie ook de volgende RFC’s:
http://www.ietf.org/rfc/rfc3665.txt
http://www.ietf.org/rfc/rfc3261.txt
http://www.ietf.org/rfc/rfc3489.txt
http://www.ietf.org/rfc/rfc1889.txt

Bij het accepteren van de Voip verbinding krijg ik bij het officiele Wengo programma wel een foutmelding in Logger::fatal() op commando assert(NULL && “fatal error”); Ik heb de audio port nog niet aangekoppeld. Mogelijk gaat hij daar op fout. Vandaag ga ik naar de audioroutines kijken.

m=audio 10600 RTP/AVP 101 {een onderste regel uit bericht terug op Invite-bericht = SIP/2.0 200 OK}, dus op poort 10600 verwacht hij de audio pakketjes. Je hebt dus minimaal twee open firewallpoorten nodig, namelijk 5060 en 10600.

RGJ, Ik denk een beetje aan virtuele call-center. Je probeert zo’n call-center te bellen. Als ze te druk hebben dan wijzen ze het gesprek af en ze zouden dan een nieuwe tijd kunnen voorstellen dat je kan bellen c.q. dat zij jou gaan bellen.

De vriendelijke groet Jan Marco

Hoi RGJ,

Het is mij net gelukt om (fake) audio pakketen van mijn ene computer naar de andere te sturen. Van het weekend ‘mijn’ portaudio code er aan koppelen om ook geluid over het internet te sturen. Volgend weekend beginnen om de GUI (SQLyog) te gaan patchen. Het demon programma vult een audio tabel in MySQL. Met SQLyog rechtermuistoets kan je als je in deze tabel zit de mic/luidspreken gaan selecteren voor default Voip communicatiekanalen.

De vriendelijke groet Jan Marco

P.S. Vanmorgen naar de geluid packet lengte van Skype gekeken. Leek op 100 bytes. Mogelijk dat het afhankelijk van de snelheid van de internetverbinding hij een andere geluid packet grootte kiest.

Hoi RGJ,

Ik wilde een classfile m.b.t. circulaire buffer in phone.c gebruiken, dit lukt mij niet direct want je moet het dan als phone.cpp compileren. Hierna kreeg ik een hoop foutmeldingen m.b.t. de volgorde van procedures en procedureaanroep met een verkeerd aantal parameters.

De (in het hoofdprogramma) gedefineerde openssl procedures werkten ook niet meer in Curl.c, dus alle source van Curl.c in hoofdprogramma gehaald. Het hoofdprogramma is nu 44 duizend regels.

Ik heb mijn oude “portaudio poort” er ook aangekoppeld. Ben momenteel zoekende hoe ik het aan moet koppelen in phone.cpp. Daarnaast zie ik dat er weer een nieuwe versie van Portaudio is. Ook is de (officiële) Wengo source niet goed want het gebruikt te veel CPU in vergelijking met Skype. Het wordt begrensd op 50% CPU. Ik denk dat dit komt door een lus (in ontvangen van packets), die aldoor maar ronddraait zonder voldoende “Sleep”.

Ik wilde een circulaire buffer er tussen zetten. Ik portaudio zit ook een buffer structuur. Ook is RTP protocol van buffers aan elkaar gelinkt. Zie ook Appendix A. b_rptr is eerste byte van de buffer en b_wptr de laatste byte.

Ik heb nog niet getest, maar ik denk dat de thread, die zorgt dat de UDP-packets ontvangen worden, de buffers op volgorde zet afhankelijk van de timestamp. Ik weet namelijk dat UDP-packets wel in een andere volgorde binnenkomen als ze verzonden zijn.

De rtp_header structuur is 76 bytes lang. Ik moet nog uitzoeken of alle 76 bytes over de lijn gaan. Lijkt mij een beetje veel. Ik ben zelf een beetje aan het nadenken om een 16 bits kanaal mee te laten zenden in een RTP packet. Stel je hebt 4 geluidskaarten (telefoons) aanstaan op een peer dan geeft de laagste 2 bits van het “kanaal” de geluidkaart bufferqueue aan waarin de packets gestopt moeten worden. Je kan met 1 if commando ook nog even testen of packet van de goede peer komt. Je voorkomt dan dat je lineair door een lijst gaat zoeken.

Stel dat je een netwerk hebt met 4 telefoons elk op een andere pc’s, dan kan hoofdcomputer via een tabel met 4 elementen het UDP geluidspacket direct naar de juiste locale pc doorrouteren. Een andere oplossing zou kunnen zijn dat je 4 verschillende poorten (portnummers) gaat gebruiken.

Ben dus voorstander om 1 controle (SIP) poort open te zetten naast 1 audio en optioneel 1 video poort. Sommige mensen zeggen je moet een tunnel naar andere peer opzetten, echter je verplaatst het probleem dan naar deze peer. Natuurlijk moet je wel een tunnel gaan opzetten als je achter een firewall blijkt te zitten. Indien je wel vanuit internet te benaderen bent dan zal er voordeel moeten zijn om toch een poort open te zetten.

De vriendelijke groet Jan Marco

Appendix A:
typedef struct msgb
{
struct msgb *b_prev;
struct msgb *b_next;
struct msgb *b_cont;
struct datab *b_datap;
char *b_rptr;
char *b_wptr;
struct timeval bts;
} mblk_t;

Appendix B:

typedef struct rtp_header
{
#ifdef WORDS_BIGENDIAN
guint16 version:2;
guint16 padbit:1;
guint16 extbit:1;
guint16 cc:4;
guint16 markbit:1;
guint16 paytype:7;
#else
guint16 cc:4;
guint16 extbit:1;
guint16 padbit:1;
guint16 version:2;
guint16 paytype:7;
guint16 markbit:1;
#endif
guint16 seq_number;
guint32 timestamp;
guint32 ssrc;
guint32 csrc[16];
} rtp_header_t;

Hoi RGJ,

Het verzenden van UDP audio packets doe ik vanuit de portaudio thread. Ben er achter gekomen dat het verzenden te lang duurt d.m.v. de RTP routines, dus komend weekend uitzoeken hoe ik het versnellen kan. Ik moet ook goed kijken naar de buffers van portaudio. Je moet verkomen dat je van de ene naar de andere buffer gaat kopieren zonder dat het noodzakelijk is.

De vriendelijke groet Jan Marco

Hoi RGJ,

Ik ben eigenlijk bezig om het versturen van geluidspakketen te versnellen. Vanmorgen gekeken naar Portaudio. Ik wilde eigenlijk zo min mogelijk buffers (=1) hebben. Dit is mij niet gelukt. Als je twee buffers kiest gaat het kraken. Ik had 16 en nu heb ik 4 buffers. Des te meer audiobuffers je hebt des te meer echo heb je in het geluid. De truuk waar ik nu aan werk is om de vier overgebleven buffers om te vormen naar een rtp_header_packet, dus Portaudio vanaf de 12 byte het geluidpacket te laten vullen en vult de rtp header info en dan de gehele buffer aan sentto() aanbieden. Je hoeft m.i. dan geen data meer te kopiëren. Zie ook appendix A voor mijn nieuwe recordstructuur.

De vriendelijke groet Jan Marco

Appendix A:

typedef struct rtp_header_packet
{
#ifdef WORDS_BIGENDIAN
guint16 version:2;
guint16 padbit:1;
guint16 extbit:1;
guint16 cc:4;
guint16 markbit:1;
guint16 paytype:7;
#else
guint16 cc:4;
guint16 extbit:1;
guint16 padbit:1;
guint16 version:2;
guint16 paytype:7;
guint16 markbit:1; //16=2
#endif
guint16 seq_number;//16=4
guint32 timestamp; //32=8
guint32 ssrc; //32=12
gchar audio[1024];
guint16 size;
} rtp_header_packet_t;

Hoi RGJ,

De afgelopen tijd best hard bezig geweest. Ik heb op 1 pc van mij Visualstudio 2005 ‘moeten’ installeren. Ik heb VS2002 een beetje handmatig zitten ‘verwijderen’. Hierna werkte de installatie niet meer. Ben ook achter gekomen dat o.a. offset van type __int64 in een record structuur verschillen geeft tussen VS2002 en VS2005, dus omgezet naar twee variabelen van 4 bytes.

Sinds vorige week ook een testomgeving in Noord Holland bij een vriend van mij. Zijn configuatie is Linux met Vmware. Je maakt gewoon (virtuele) testpc’s aan. Als goed werkt ga ik zelf ook zo’n omgeving opbouwen. De fouten waar we tegen aan liepen is firewall en te veel handmatige dingen aanpassen, dat je haast geen overzicht meer hebt. Ik ben dus bezig om foonsearchd.exe zo te maken dat het allemaal automatisch gaat werken. Foonsearchd.exe moet nog een poort (2086) open hebben staan. Als ik straks mijn Wengo source goed aan de praat heb dan gaat de Tunnel code in foonsearchd.exe, dus je kan dan ook een achter firewall werken.

Vandaag de hele dag bezig geweest om configuratie tabellen automatisch aan te laten maken, waarin de parameters komen. Je kan straks ook een taal kiezen waarin de logging plaatsvindt in de tabel ‘logdb’. Dus geen files met config gegevens, alles in de executable opnemen. Je kan naderhand de configuratiegegevens in mysql gaan aanpassen (oa. met SQLyog is de bedoeling). Deze worden indien ze aanwezig zijn ingeladen bij opstarten van demon of aangemaakt als ze niet aanwezig zijn.

Morgen wil ik foonsearchd.exe als service gaan programmeren, door het te gaan mergen met een format programma van mij welke ik ooit uit mysqld.exe heb gehaald.

Je krijgt straks een tabel ‘disk’ waarin alle disken staan. Je kan dan straks met een gepatchte SQLyog een disk gaan formatteren. Eigenschappen die betekenis hebben op een bepaalde tabel kan je straks met de rechter muisknoppen gaan oproepen.

De vriendelijke groet Jan Marco

Hoi RGJ,

Ik heb nu ook goed beeld gekregen hoe ik de communicatie tussen demon en GUI programma laat verlopen. Idee komt een beetje uit de Wengo source. In de GUI programma ook een ´servertje´ maken. De demon kan dan queries naar GUI sturen om bijvoorbeeld bij binnenkomende call een scherm op screen te toveren.

Om parameters in demon te veranderen stuurt het GUI programma een query naar de demon. Het demon programma leest bij het opstarten de configuratie parameters uit MySQL. Sommige parameters zal de demon wel in MySQL gaan updaten. Denk aan het aantal UDP bytes verzonden c.q welke ontvangen zijn. N.B. Het updaten van MySQL parameters zal de waarde in de Demon niet direct veranderen, behalve als je hem geforceerd zou stoppen en opstarten.

Naast bovenstaande ben ik ook bezig om foonsearchd.exe als service te programmeren en het automatisch aanmaken van de database met de benodigde tabellen.

De vriendelijke groet Jan Marco

Hoi RGJ,

Afgelopen weekend met service programmeren bezig geweest. Ik ga ook een tabel met services maken en dan kan je straks in SQLyog het opstarten,stoppen, installeren en removen. Ik gebruik hiervoor o.a. de code van http://www.codeproject.com/system/windowsservices.asp

De vriendelijke groet Jan Marco

Hoi RGJ,

Afgelopen weekend met foonsearchd.exe bezig geweest. Via dos box kan je het als service installeren en opstarten. Hierna kan je weer hetzelfde programma opstarten en dan met parameters testqueries genereren. Ik ga meer zaken in “command line” commando’s programmeren. Alle vaste ipadressen uit programma halen. Ik denk ook om even een dosachtige client te bouwen aan de hand het voorbeeldprogramma safmq. Deze programma is ook bedoeld als testprogramma voor het demon programma. In safmq zit redelijk veel users/account en queue manipulatie in.

Het is erg leuk om met de queries bezig te zijn. Ik zie wel een soort onderscheid tussen “infrastructuur” en “business” database. Infrastructuur zijn de fixed tabellen die o.a. het systeem “scannen”. Waarin ook de besturing van een “Skype-achtigetool” wordt opgeslagen, etc. De business zijn de databases en tabellen die variable gedefineerd kunnen worden.

Ik heb ook gekeken naar updater van Geert van Horrik. Zie ook http://www.codeproject.com/tools/updater.asp
Ik ben begonnen om in download.cpp wget te gaan inporteren. Wel een beetje vreemde fout kreeg ik bij het compileren. Hij kan namelijk “sockaddr” niet vinden. Ik had wel <winsock2.h> geincluded, dus maar even zitten sprokkelen van de ontbrekende record definities. Ik compileer met vs2005.

Wat ik wel van Geert heb geleerd is dat Windows bepaalde filestructuur heeft bepaald, waar programma’s komen of “temp” files. Ik denk dat ik dat nog moet gaan gebruiken.

De hartelijke groet Jan Marco

Hoi RGJ,

Afgelopen weekend heb ik zeven command line commando’s gemaakt, zie ook appendix A voor de details. Het is niet mijn bedoeling om een demon programma ook als client te gaan programmeren. Alleen een paar commando’s die noodzakelijk zijn om het te installeren en te starten en een paar checks of het werkt. Deze command line commando’s zijn ook belangrijk om vanuit een installatie programma het automatisch te gaan installeren.

Ik heb het nu draaien op drie pc’s. Wel veel problemen met het aanmaken van de tabellen ‘gehad’. Heeft te maken met specifieke mysql versies en instellingen. Bij een van mijn pc’s gaf hij een fout melding op <blob not null default’';> Op onze testmachine kreeg ik de volgende foutmelding http://bugs.mysql.com/bug.php?id=4541. Daarnaast kon WT ook de service niet meer verwijderen van de testmachine. Aankomend weekend zal ik proberen om remote in te loggen om het vanuit Enschede te fixen.

Ik heb de volgende mysql versies 5.0.22, 5.0.27 en 5.0.21 draaien. Komend weekend weer naar updater ( http://www.codeproject.com/tools/updater.asp ) van “Geert van Horrik” gaan kijken. Als je geen mysql hebt dan via updater deze installeren. Mogelijk naast bestaande mysql gaan installeren. Het voordeel van het laatste is dat je dan “zeker weet” dat het werkt.

De vriendelijke groet Jan Marco

Appendix A: command line commando’s:
foonsearchd -install
foonsearchd -start
foonsearchd -ping 123.123.123.123
foonsearchd -testquery
foonsearchd -stop
foonsearchd -remove
foonsearchd -help

Hoi RGJ,

Ik heb net http://www.codeproject.com/tools/updater.asp zo gepatcht met wget source dat een file van mijn ftp server wordt geladen. Voordeel is dat je gelijktijdig een hash kan bereken van de file die je download.

In onze test server kreeg ik de volgende fout melding “Specified key was too long; max key length is 1000 bytes!”

De fout heeft iets met karacter sets te maken. http://bugs.mysql.com/bug.php?id=4541

latin1 = 1 byte = 1 chararcter
uft8 = 3 byte = 1 chararcter

Zie ook http://forum.mamboserver.com/showthread.php?t=73320 en http://forum.mamboserver.com/showthread.php?t=69161&highlight=key+long%

Ik denk de fout opgelost te hebben met “create database foonsearch2008 default character set latin1 collate latin1_bin;”.
Dit had m.i. tot gevolg dat mysql tabellen case-sensitive zijn geworden. Ik moest bijvoorbeeld bij het status veld mijn SQL-string aanpassen van “Done” naar “done”.

Zelf heb ik mysql versie 5.0.22, 5.0.27 en 5.0.21 draaien. De versie is wel belangrijk voor de compatibiliteit. Op pc in het Noorden waar een oudere MySQl versie draait kreeg ik ook foutmelding op “blob not null default ‘’”,

De hartelijke groet Jan Marco

Ik zou overwegen om je software anders te bouwen. Kortere keys bevoorbeeld. Met latin1_bin krijg je allerlei ellende waarvan je de eerste al bent tegengekomen. Daarnaast heeft Unicode (waarvan UTF8 een representatie is) toch wel behoorlijk de toekomst.

Hoi RGJ,

Moet ik dat zo interpreteren dat als veld lastname = “dijkstra” is 8 * 3= 24 bytes in Unicode.

Ik moet dus op zoek gaan naar lengte van de key velden? Maximaal is 1000/3 = 333 bytes Unicode. Gaat dus niet om de lengte van de velden van een tabel.

De vriendelijke groet Jan Marco