13 October 2009

Plugin for Silverstipe

Release of a silverstripe module : SSDropDownMenu
http://code.google.com/p/ssdropdownmenu/
css menu and ddsmoothmenu

03 October 2009

These : Systèmes multi-agents

Mon projet de recherche de DEA sur les sytèmes multi-agents.

http://docs.google.com/fileview?id=0B2LXMvSKtt9VNDEwNzc1N2EtNTE1YS00NzFmLWFlYjktNzdhNjQwNjg4OTJm&hl=en

L'Intelligence Artificielle Distribuée (IAD) est apparue vers la fin des années 1970. Hewitt, confronté à un problème de résolution de théorèmes, proposa une solution en 1977 avec des entités actives appelées « acteurs » et considéra la résolution comme une confrontation de points de vue.
D'un autre côté, Erman (1980) élabora l'idée du tableau noir (" blackboard ") avec le projet HERSAY II. Le tableau noir est un emplacement réservé pour la transition des informations entre les différents agents. Chaque agent peut venir le consulter.
C'est donc à partir de ces premières réalisations que sont apparus des modèles, composés de « petits » programmes – appelés entités –, certes intelligents, mais aussi capables de communiquer et de s’organiser en un système plus complexe et interagissant avec l’environnement.
Ces systèmes sont appelés systèmes multi-agents (SMA) : chaque agent est une entité, l'ensemble des agents forme un tout. Ces ensembles illustrent l' idée sous jacente du philosophe Blaise Pascal que « Le tout est plus que la somme des parties ».

30 September 2009

Document MySQL optimisation

En français, des notes pour optimiser une base de données MySQL
(type de données, dates, astuces, serveur)
http://spreadsheets.google.com/pub?key=toSt1VdSpf8rdn9YTCTe9Jw&output=html

24 September 2009

MySQL Optimisation

Here is some advise to speed up a database or to manage a large amount of data.

- Denormalized table (a CRON can create them every night)
- Use Memory/Heap table
- MyISAM better than InnoDB (just for the speed)
- Right choice of the indexes (be carefull when using memory table,
you need to change them and use Btree if you have to sort or group
your data)
Sometimes you need two indexes : col1, col2 and another one col2, col1
- There is tricky things about DATE, I think in a WHERE, Date =
Datetime wont use index, you need to use Date = Date(Datetime), use
EXPLAIN to find out
- Decompose a year on quarters, so you have a structure like : Date
(Datetime), Year(Smallint unsigned), Quarter(tinyint unsigned) and
indexed on (Date) and (Year, Quarter),
> this is a kind of "partitioning"
- Use the right Datatype to minimize the size of the tables (dont use
Datetime if Date is sufficient, Tinyint and not Int, and Unsigned (one
bit but important on billion of line!) like for NULL(1 extra bit) and
NOT NULL !)
- Best Replace query :
with InnoDB : INSERT INTO … ON DUPLICATE KEY UPDATE
with MyISAM: REPLACE
- No sub-query most of the time, prefer create a temporary table and
join on it. (JOIN ON will be your WHERE when using a subquery)
- Datawarehouse, store the old data somewhere else, and notice that it
gonna be slow to access the archived.
- Then a huge part for the server configuration ! see my-huge.cnf, and
keybuffersize and table_cache
When I did this, MySQL could not use multi-processors, and it was
better to have a huge memory RAM and fast hard drive.
- MySQL Table partition was useless in our case, maybe not in yours ..

Time to start a blog, snippet .. anything