Animint
Anime & manga
De la sécurité de vos sites web
Par Pazu le 13 avril 2007 16:04 :: Webmastering :: 4 commentaires »
Les déffaçages de sites se produisent régulièrement, avec plus ou moins de publicité autour. L'internet prend une place de plus en plus importante dans les buisness mais certains comportements naïfs semblent toujours perdurer, même dans les milieux professionnels. Le magazine de l'économie, Capital, qui est pourtant fort loin du domaine, s'est targué ce mois-ci d'un petit article pratique sur le sujet. Les exemples sont assez effarants avec des sites institutionnels mis à jour comme des Wiki, c'est-à-dire libre librement par le visiteur. Vous avez aussi un site avec une adresse du style example.com dont le sésame de l'interface d'administration s'ouvre avec l'identifiant admin et le mot de passe example. Il n'y a même pas eu besoin d'une attaque à l'aide d'un dictionnaire. Un minimum de bon sens suffit…
Les attaques courantes passent généralement par des failles découvertes dans les applications web fréquemment utilisées tels que les scripts de forum ou bien les systèmes de gestion de contenu. Un pirate peut s'attaquer à un site en particulier mais le sport de certains consiste plutôt à automatiser les attaques et à atteindre le maximum de sites.
Les professionnels qui considèrent leurs sites comme critiques sont en général bien armés et ne prennent pas la sécurité à la légère. Ils évitent les fautes grossières et mettent les moyens pour assurer de bonnes défenses de façon naturelle. Un haut niveau de protection exige cependant des investissements lourds, qui ne sont pas à la portée des sites amateurs. Pour eux, que reste-t-il à la disposition ?
Certains choisiront carrément de proscrire toute page dynamique et de se cantonner à la bonne vieille page HTML. Pas de page dynamique, pas de risque. Hélas, le cas Sivit est un bon contre-exemple. La faille s'est produite à un niveau supérieur et le script pirate a modifié l'ensemble des indexes des sites, qu'ils soient statiques ou dynamiques. Mêmes si les parapets entre comptes n'ont pas fonctionné, les équipes de support ont incriminé des failles parmi les outils utilisés par certains clients. C'est là un problème des hébergements mutualisés. Non seulement vous partager les ressources mais vous partagez souvent les risques. Vous aurez beau faire preuve de rigueur dans la gestion de votre site, cela n'aura pas grand intérêt si votre voisin laisse sa porte grande ouverte.
Nous avons fait l'expérience à plusieurs reprises sur Animint. Les dégâts n'ont pas été bien graves – dans le contexte d'un projet amateur – mais cela se traduit ensuite par des règles de sécurité plus drastiques chez notre hébergeur. Le risque zéro n'existe pas même si quelques précautions suffisent à réduire ce risque.
Il est vital d'avoir des sauvegardes régulières de l'ensemble des données. Se faire pirater sa page d'accueil n'est jamais plaisant mais perdre tout le contenu, c'est bien pire. En automatisant le processus, cela augmente l'utilisation de l'espace disque mais c'est inévitable. Dans le cas d'une base de données, il faut également vérifier que les sauvegardes sont exploitables. Un annuaire français a eu quelques soucis au mois de mars 2007 avec sa base. Ils se sont aperçus que les sauvegardes étaient corrompues depuis le mois de décembre 2006! Résultats, ils ont du faire une restauration à cette date et ont perdu l'ensemble des sites inscrits après décembre 2006.
Pour éviter les attaques automatiques concernant les applications open source, une défense simple est de ne pas les utiliser et de concevoir vos propres applications. Le premier avantage est de coller pile poil à votre besoin. Le second est que vous maîtrisez votre code et n'ajoutez pas de faille inutile. D'autre part, même si vous êtes faillible, il est peu vraisemblable qu'un pirate perde son temps chez vous pour dénicher une porte dérobée, à moins que vous soyez un énorme site renommé. La méthode a cependant des inconvénients. D'une part, ce n'est pas à la portée de tout le monde de faire du développement et qui plus est, du développement propre. Le plus gênant est que tout le temps passé sur le code est autant de temps pris au détriment du contenu ou d'une autre tâche.
Je reviendrai une autre fois sur la répartition du temps entre les différentes tâches de webmastering mais l'un des dilemmes est bien de conserver un équilibre entre les différentes occupations. C'est d'autant plus vrai que si votre site peut présenter quelques particularités sur certains points, il est peu vraisemblable que vous ne puissiez pas réutiliser un logiciel de forum existant ou un programme de galerie d'images déjà tout fait. Les montées de version de ces applications proposent de nouvelles fonctions à moindre coût pour vous.
Une alternative consistent à employer des logiciels open source et à les personnaliser assez profondément pour votre usage. Avec un peu de chance cela occulte certaines failles et vous protège des robots hacker même si cela pose quelques difficultés pour les maintenir par la suite, comme vous aviez dévié de la version officielle.
Dans le même ordre d'idée, si vous avez les moyens, vous pouvez opter pour un serveur dédié. Là aussi, cela requiert quelques compétences et une discipline pour remettre à jour non seulement vos applications mais le système d'exploitation. Cela vous permet en revanche de rester maître chez vous et même d'opter pour un système d'exploitation un peu exotique. Dans le passé - cela remonte à plus de cinq ans maintenant - un de nos voisin avait laissé une ouverture béante par laquelle est passé un pirate qui a lancé ses scripts pour devenir maître du système d'exploitation. Heureusement pour le serveur - et pour nous tous - , le système d'exploitation n'était pas sous la version de Linux attendue et le pirate est reparti bredouille.
Pour ma part, la maintenance d'Animint reste un hobby – hobby éclairé car le site me sert souvent de laboratoire par ailleurs – mais nous avons pris un minimum de précautions pour éviter une trop grande déconvenue en cas de dégâts. Je vous invite à faire de même si ce n'est pas déjà fait.

Discuter de ce billet sur le forum - Laisser votre commentaire »
La fin du site Animint
Par Pazu le 27 mars 2007 18:03 :: Webmastering :: Aucun commentaire »
A l'heure actuelle, le site comporte des rubriques bien indépendantes du blog. Certaines comme la liste de CDs ou les Newsgroups internet ont un fort goût d'archives mais d'autres sont mises à jour régulièrement. Peut être pas aussi souvent que d'autres sites mais au moins de façon périodique. Je pense notamment à la base de données, aux listes de parutions et aux liens web. Le fait d'avoir délégué certaines tâches répétitives m'a permis de me concentrer un peu mieux sur les dossiers et notamment ce blog.
Quand vous vous occupez d'un site, vous essayez de répartir votre temps entre différentes tâches : D'abord, la gestion proprement dite, à savoir la validation des contributions et les réponses aux mails par exemple. Ensuite il y a bien sûr le contenu à alimenter et les espaces communautaires à animer. C'est essentiel pour inciter les visiteurs à revenir. Viennent ensuite les actions pour alimenter la notoriété externe du site, en optimisant son référencement et en gérant la mise en place de nouveaux liens à partir d'autres sites.
Enfin, et ce n'est pas la moindre des tâches, il faut penser à maintenir, améliorer et enrichir les services offerts. Cela peut être un changement d'apparence, proposer une interface meilleure ou carrément se lancer sur un nouveau créneau. C'est loin d'être évident, sachant que toutes les idées ne sont pas bonnes à prendre alors que d'un autre côté, l'absence d'une fonctionnalité peut s'avérer néfaste. Par exemple, vous ne pouvez pas imaginer aujourd'hui de lancer un site avec beaucoup de page et sans système de recherche ou de classification de ses articles.
En construisant la première monture technique de ce blog, j'étais plutôt allergique aux nuages de tags et je me contentais des catégories. En consultant maintenant de façon courante d'autres blogs et en voyant le nombre de billets augmenter, l'idée devient moins saugrenue et j'apprécie le fait de pouvoir naviguer dans des archives à l'aide de mots qui me semblent plus pertinent que des noms de catégories trop générale. Je suppose que vous aussi.
C'est techniquement un peu redondant avec le moteur de recherche mais sans doute plus convivial. L'implémenter accentuera en revanche l'impression d'avoir un site dans le site. Les blogs partent des réflexions de leur(s) auteur(s) et nous reconnaissons un blog à succès lorsqu'ils forment une véritable communauté, l'un des fameux credo du web 2.0. C'est loin d'être encore le cas ici et je soupçonne fortement d'avoir une audience différente entre le site et le blog, en tout cas différente de celle du forum.
Sur le principe, cela ne me gêne pas de conserver vivant le site d'un côté et le blog de l'autre, avec deux pages d'accueil en quelques sortes – trois si vous comptez My Animint – Chaque partie permet d'explorer des domaines du webmastering similaires mais quand même différents.
C'est cependant un peu dommage de voir diluer les informations et les interventions. J'ai quelques difficultés à trouver la bonne formule de passerelles entre les deux. Déporter certaines discussions à partir du blog sur le forum n'a pas l'air d'être très efficace de ce côté là. Sans doute faudra-t-il reporter les titres des derniers billets sur la page d'accueil du site, maintenant que le rythme d'écriture s'est accéléré. Cependant, cette page n'est pas extensible à l'infini et elle est sans doute déjà trop chargée. Peut-être qu'un lecteur émettra-t-il une bonne idée ?

Discuter de ce billet sur le forum - Laisser votre commentaire »
Ouverture du service REST
Par Pazu le 17 décembre 2006 15:12 :: Webmastering :: 2 commentaires »
Les fonctionnalités apportées par les flux RSS sont cependant limitées et ce qui marche bien pour les actualités n'est pas adaptée à d'autres domaines. Je pense en particulier aux critiques d'anime par exemple, ou lorsque vous avez besoin d'une liste d'épisodes. Au mieux vous allez fouiner dans vos sites web préférés ou bien, vous devez passer par un moteur de recherche global en espérant tomber sur la bonne page web.
Il existe depuis plusieurs années des logiciels gratuits qui vous permettent de gérer votre base de donnée en locale et de la compléter avec des informations lues sur le web. Vous avez le projet Animelamp par exemple, en ce qui concerne les anime. Vous avez aussi des robots qui restent sur IRC (Internet Relay Chat) tout en interrogeant le web à la demande des utilisateurs sur le channel qui recherchent telle ou telle critique sur un titre. Tous ces logiciels se connectent au web et parsent les pages html des sites, quand ceux-ci n'offrent pas de facilité particulière. L'inconvénient d'une telle situation est que le code de l'agrégateur doit être revu si le site change de look.
Heureusement, il existe des moyens pour faciliter ces interrogations depuis l'extérieur d'un site, grâce à la mise en place de services dits services web via des interface ou API. Le site de référence Animenfo en propose un, par exemple, même si la stabilité n'est pas au rendez-vous. Il existe différentes solutions pour ouvrir le système d'information d'un site à des outils extérieurs. Un protocole comme SOAP offre de nombreuses possibilités mais reste lourd à implémenter aussi bien du côté serveur que du côté client. Il est plus facile d'utiliser un système qui s'appuie sur les adresses web bêtes et méchantes, et les fonctions de base associées. C'est le premier principe de REST (Representational state transfer) que nous avons décidé d'appliquer dans le nouveau service offert sur Animint.
Les détails sont expliqués sur la page de présentation de REST de notre site, mais pour résumer, vous avez désormais accès aux éléments de la base de données des anime dans un format XML, tout en conservant une bonne interactivité pour rechercher un titre. Cela vous affranchi de la couche de présentation et de formattage des données. A vous après d'en faire l'usage.
Il s'agit là d'une première version, qui peut être améliorée et complétée avec d'autres contenus. Le tout est mis à votre disposition sous sous un contrat Creative Commons - paternité et pas d'utilisation commerciale. Cela exclut la reprise de ces informations sur les pages de sites web avec de la publicité, par exemple, et sans notre accord.

Discuter de ce billet sur le forum - Laisser votre commentaire »
Un nouveau forum pour Animint
Par Pazu le 11 décembre 2006 21:12 :: Webmastering :: Aucun commentaire »
Certains projets pour le site reviennent cependant à la surface et l’un d’entre eux peut nous obliger à modifier encore plus en profondeur le forum. A ce stade de réflexion, il peut s’avérer utile de partir d’un nouvel outil de forum, quitte à y réintégrer toutes les fonctionnalités actuelles. Par rapport à d’autres outils web, phpBB 2 est maintenant dépassé, après trois années sans évolutions majeures.
Vous avez toujours la possibilité de recoder un outils forum complètement mais c’est autant de temps en moins consacré au contenu de votre site. L’intégration d’un outil tiers n’est pas toujours aisée mais nous nous en accommodons bien.
Des applications plus légères comme punBB font fi des multiples services et gadget de phpBB 2 et offre un service de forum basique mais plus rapide en terme de réponse. Hélas, certaines possibilités telles que les messageries privées ne sont plus des gadgets et quand vous vous retrouvez avec un forum punBB, vous vous empressez d’installer un, voir plusieurs modules, pour rajouter ce genre de services. Ce qu’il ne faut pas faire. En effet, la version légère de départ s’alourdit et n’est pas optimisée pour fonctionner avec de multiples modules. Les performances s’effondrent par rapport à un bon vieux forum en phpBB, à ce stade. C’est un comble. L’aspect beaucoup plus modulable et simple à intégrer dans des systèmes tiers est en revanche un bel attrait.
La grande référence de forum qui surgit à chaque fois est Invision Power Board mais il s’agit d’un logiciel payant et loin d’être bon marché pour un particulier : La version standard est facturée 70 € et même si l’interface est sensationnelle l’investissement reste lourd pour un site amateur.
Parmi les solutions gratuites que nous confrontons à phpBB, nous retiendrons surtout Simple Machines Forum, qui se veut complète et rapide, et à la pointe de la technologie en ayant recours, par exemple, à des fonctions AJAX pour faciliter certaines tâches. SMF est arrivé semble-t-il à maturité, avec une communauté très dynamique. D’un autre côté, la communauté phpBB est très importante et les équipes de développement, qui sont sorties de leu léthargie cette année, en sont à une quatrième version beta de phpBB 3, qui est très prometteuse. Dans ces conditions, un choix s’avère difficile et il semble urgent d’attendre avant de se lancer dans une migration lourde vers SMF, en espérant qu’une version stable de phpBB 3 sorte relativement rapidement.

En savoir plus:
http://www.phpbb-fr.com/
http://www.invisionboard.fr/
http://www.punbb.fr/
http://www.simplemachines-fr.org/
Discuter de ce billet sur le forum - Laisser votre commentaire »
Filtre naïf de Bayes en Php
Par Pazu le 20 août 2006 15:08 :: Webmastering :: Aucun commentaire »
Notre annuaire de sites francophones présente toujours un petit souci au niveau des inscriptions via le formulaire de soumission. De plus en plus d’outils automatiques de soumission permettent à un webmestre lambda d’inscrire son site à une flopée d’annuaires, sans s’occuper de savoir si son inscription est pertinente ou pas. Ce n’est pas ce genre d’outils qui améliore le référencement, et même au contraire, cela peut pourrir vos scores si vous inscrivez votre site dans un mauvais annuaire. La problématique du référencement pourra faire l’objet d’un autre billet mais ce n’est pas le sujet abordé ici.
En pratique, nous nous retrouvons avec des soumissions aussi rocambolesques que de la charcuterie auvergnate trucmuche ou que de l’agence marocaine de voyages bidule. Autant d’entrées qui finissent directement au panier mais qui sont casse-pieds à traiter à la longue, étant donnée que nous effectuons une vérification manuelle pour valider chaque site.
Les stratégies possibles
Diverses stratégies s’offrent à nous pour palier au problème. La première est de bloquer les inscriptions automatiques en travaillant sur le formulaire proprement dit. Pendant une période, nous avons ajouté une image dont il fallait copier les caractères affichés dans un champ pour valider le formulaire. Nous pouvions aussi user du code javascript pour transformer le formulaire en un item estampillé Web 2.0 très à la mode. D’un autre côté, ces actions ne vont pas dans le sens d’un site privilégiant l’accessibilité et freinent les utilisateurs dont nous attendons les sites web. De plus, les agents de soumission automatique sont de plus en plus intelligents et rien ne garantie que ces obstacles restent longtemps efficaces. Sur ce point, le formulaire a été retravaillé pour freiner les robots basiques de soumission tout en restant transparent pour un utilisateur humain, sans qu’il ait une contrainte au niveau de l’activation du Javascript et des cookies dans son navigateur web.
En fait, nous nous sommes plutôt penchés sur le vrai problème, que le site soit soumis par un humain ou par un programme, c’est-à-dire rejeter les entrées hors sujets, donc plutôt à s’intéresser au contenu soumis qu’à la façon dont il est soumis. La solution consiste à ajouter un filtre anti-spam, de la même façon qu’il en existe pour le courrier électronique. Un outil comme spam-assassin, largement utilisé et reconnu pour son efficacité, s’appuie en gros sur deux types d’algorithme : Le premier gère des règles précises concernant le format du mail, les entêtes, l’encodage utilisé, etc. De là découle une première note pour le mail traité. Le second type de traitement, basé sur le théorème de Bayes, calcule la probabilité que le contenu du mail soit un spam, proprement dit. Le savant dosage des deux méthodes aboutit à déterminer si le mail est oui ou non un spam. Un tel outil n’est pas directement adaptable sur notre problème de soumission de liens. Tout d’abord pour des questions techniques mais également pour des questions logiques : A supposer que nous arrivons à définir des règles quant à la validité d’une inscription, elles n’ont rien à voir avec celles gouvernant la bonne syntaxe d’un mail électronique. De même, il y a spam et spam. Spam assassin aura une approche neutre quant à un mail en anglais tandis que nous, nous rejetons une soumission en anglais dans 100% des cas, vue que notre site est francophone. Par ailleurs, nous recensons les boutiques de vente en ligne de manga alors que dans un mail, un message commercial a de fortes chances d’être rejeté. Ici, ce ne sera pas forcément le cas. La base de connaissance ne peut pas être la même.
Cette base de connaissance est basée sur des mots. Dans le passé, les filtres se focalisaient sur des listes blanches et noires, qui suivant la liste où le mot d’un texte était trouvé, le texte était estampillé bon ou spam. Cette approche est très réductrice même si elle peut être un bon complément dans notre cas. Si nous sommes quasiment sûrs de rejeter une entrée avec le mot hardcore, il n’en est pas de même avec le mot boutique : boutique manga aura des chances de passer, contrairement à boutique de lingerie. Il faut raisonner en terme de probabilités. Le filtre s’appuie en fait sur la probabilité pour qu’un mot fasse partie du vocabulaire de spam ou non spam pour en déduire la probabilité du texte en entier quant à son statut de spam ou non spam.

Les équations
C’est là où le théorème de Bayes intervient : Il nous dit que la probabilité d’avoir du spam quand nous voyons les mots M1, M2, M3, etc. est égale à la probabilité d’observer du spam dans l’absolu multiplié par la probabilité de voir les mots M1, M2, M3, etc. dans un texte de spam, le tout divisé par la probabilité de voir les mots M1, M2, M3 dans un texte, quoiqu’il soit.
P(S | M1, M2, M3, …) = P (S) * P (M1, M2, M3, … | S) / P (M1, M2, M3, …)
Nous considérons que les probabilités pour chaque mot, qu’il fasse partie du vocabulaire spam, lorsque nous les observons dans la nature, sont décorellées. Ceci est faux dans l’absolu, étant donnée la richesse de notre langue et les associations de mots, mais cela nous permet d’écrire, avec cette vision naïve :
P (M1, M2, M3, …| S) = P (M1 | S) * P (M2 | S) * P (M3 | S) …
P (M1, M2, M3, …) = P (M1) * P (M2) * P (M3) …
C’est-à-dire que la probabilité de voir apparaître les mots M1, M2, M3 dans un spam, ou dans texte, est égale au produit de la probabilité de chacun de ces mots dans un spam, ou respectivement, dans un texte. Nous notons désormais P (S | D) = P (S | M1, M2, M3, …), M1, M2, M3, … constituant le document D à traiter.
Du coup, la formule devient
P (S | D) = (P (S) * P (M1 | S) * P (M2 | S) * P (M3 | S) …) / (P (M1) * P (M2) * P (M3) …)
Suivant le même principe, nous pouvons remplacer la classe spam, S, par la classe non spam, NS, dans la formule.
P (NS | D) = (P (NS) * P (M1 | NS) * P (M2 | NS) * P (M3 | NS) …) / (P (M1) * P (M2) * P (M3) …)
Le dénominateur Z = (P (M1) * P (M2) * P (M3) …) est commun aux deux formules et n’a donc pas d’incidence sur la probabilité qu’un texte avec les mots M1, M2, M3,.. soit un spam ou un non spam. L’enlever nous fait juste perdre un coefficient de normalisation de la valeur de P (NS | D) et de P (S | D).
De toute façon, en passant Z à gauche des équations, nous obtenons
Z = (P (NS) * P (M1 | NS) * P (M2 | NS) * P (M3 | NS) …) / P (NS | D) = (P (S) * P (M1 | S) * P (M2 | S) * P (M3 | S) …) / P (S | D)
D’où
P (NS | D) / P (S | D) = (P (NS) * P (M1 | NS) * P (M2 | NS) * P (M3 | NS) …) / (P (S) * P (M1 | S) * P (M2 | S) * P (M3 | S) …)
Les probabilités sont des nombres inférieurs à 1, voire beaucoup inférieur à 1. Si le nombre de mots est élevé, les multiplications ci-dessous peuvent rapidement devenir un problème de traitement au niveau de la machine, qui est limitée en terme de précision. Il est donc judicieux de passer à l’usage du logarithme népérien qui adoucit la profondeur des calculs.
Ln (P (NS | D) / P (N | D)) = Ln (P (NS) / P (S)) + Ln (P (M1 | NS) / P (M1 | S)) + Ln (P (M2 | NS) / P (M2 | S)) + (P (M3 | NS) / P (M3 | S)) + …
Un document D est un spam si bien entendu
P (NS | D) < P (N | D)
Donc si :
P (NS | D) / P (N | D) < 1.
Ce qui donne avec le logarithme népérien :
Ln (P (NS | D) / P (N | D)) < 0
Soit finalement si:
Ln (P (NS) / P (S)) + Ln (P (M1 | NS) / P (M1 | S)) + Ln (P (M2 | NS) / P (M2 | S)) + (P (M3 | NS) / P (M3 | S)) + … < 0
L’apprentissage
L’équation obtenue n’a d’utilité que si nous connaissons les valeurs de P (NS), P(S), P (M1 | NS), P(M2 | NS), P(M3 | NS), …, P(M1 | S), P(M2 | S), P(M3 | S), …etc.
Ces valeurs sont obtenues par apprentissage. En langage de probabilité, nous faisons des tirages et en déduisons les valeurs suite à l’observation. Pour revenir à quelque chose de moins théorique, l’apprentissage du spam et no spam, par un système, peut être simple.
Nous lui soumettons différents documents en lui signalant s’il s’agit d’un texte que nous classerions spam ou non spam. Il calcule le nombre d’occurrences pour chaque mot, pour chaque classe, spam et non spam, et il en déduit les probabilités d’avoir du spam, d’avoir du non spam, et pour chaque mot, la probabilité qu’un mot soit vu dans un spam ou dans un non spam.
Il faut une base solide pour que les valeurs soient significative et que vous ne preniez pas comme source, des probabilités marginales. Si mes souvenirs sont bons, en pratique, un filtre anti spam pour mail s’appuie sur quatre mille messages. Cependant, l’apprentissage et l’observation sont imparfaits. Il est peu vraisemblable d’ailleurs que vous puissiez fournir l’intégralité des mots en apprentissage au système. Si un mot est complètement inconnu, il n’est pas pris en compte pour l’équation. Cependant, vous rencontrerez les cas où vous aurez une probabilité pour un mot en classe spam, mais pas en classe non spam, ou bien l’inverse. Supposons que le mot Martinique a été trouvé parmi les spam mais que nous n’avons pas d’occurrence dans les non spam. P (Martinique | NS) = 0 et P (Martinique | S) = 1 dans ce cas. Dans l’absolu, c’est faux, car il se peut qu’il y ait un site manga qui aurait le mot Martinique dans sa description, par exemple. P (Martinique | NS) = 0 vient d’une observation imparfaite et vient plomber notre équation en donnant une valeur moins l'infini, faisant fi des autres facteurs qui auraient pu tirer la valeur dans un sens ou dans l’autre.
Ce qui est sûr en revanche, c’est que P (Martinique | NS) est faible, en tout cas plus faible que les probabilités observées. Dans l’équation, P (Martinique | NS) devient ainsi non nulle. C’est ce que nous appelons dans le jargon, un lissage de Laplace.
L'implémentation en PHP
Il existe quelques exemples sur le net de codage de filtre utilisant l’application naïve du théorème de Bayes. Dans notre cas, nous nous sommes limités à deux classes, spam et non spam mais nous pouvons avoir des applications avec plusieurs classes. Cela a l’inconvénient de compliquer les explications et de nous éloigner de notre but initial, qui est d'effectuer un choix binaire. Des recherches sur les mots clefs naive bayes theorem ou encore bayesian classifier devraient vous rapporter un bon nombre d’explications, généralement en anglais, hélas pour vous, si vous êtes anglophobe.
Un exemple intéressant pour débuter est celui trouvé en français sur le blog d’XHTML.net. Au-delà du codage des boucles de calcul, son auteur propose une implémentation complète avec formulaire et base de données derrière, avec une approche objet quant à la conception du code concernant les filtres bayesiens.
Mes quelques remarques
En ce qui concerne le code fourni sur XHTML.net
- Le code est un exercice complet donc comporte une partie de connexion et de gestion de la base de données. Si vous avez déjà une couche d’abstraction pour votre base de données, quelques retouches sont nécessaires.
- Le filtre prévoit l’utilisation d’une liste de mots à ignorer et ce, à juste titre. Un mot comme ‘site’ dans notre cas, n’a aucune incidence sur la décision de spam ou non spam. Autant ne pas en tenir compte avent de polluer notre base de connaissance avec. L’implémentation se limite à une insertion en dur dans le code, d’un tableau de mot. Il vous faudra coder la gestion de cette liste par la base de données. Rien de bien méchant.
- Les calculs des probabilités s’effectuent directement en produit, au lieu d’utiliser les logarithmes népériens. Même si une valeur est mise en facteur pour éviter les dépassements de précision, celle-ci n’est pas adaptée dès que vous avez plusieurs mots. Le mieux est sans doute d’insérer des fonctions log, qui transforment ensuite vos produits en sommes et vous donnent une réserve en terme de calculs.
- P(S) est déduite dans le code en faisant le rapport du nombre d’occurrence de mots trouvés en spam par le nombre total d’occurrences des mots. Elle n’est pas déduite du rapport du nombre de documents spam par le nombre total de documents.
- L’outil prend en compte dans les calculs les probabilités d’un mot même s’il n’a été rencontré qu’une fois. Même avec le coefficient de lissage de Laplace, les probabilités sont faussées. Dans notre version pour les liens, nous n’en tenons compte que si le mot a plusieurs occurrences.
- J’ai des doutes sur la valeur du coefficient choisi pour le lissage de Laplace. Un autre document sur le net proposait une valeur précise, mais visiblement empirique. Il faudrait le retrouver.

Discuter de ce billet sur le forum - Laisser votre commentaire »
Animint a dix ans
Par Pazu le 27 mai 2006 12:05 :: Webmastering :: Aucun commentaire »
La radio fonctionne avec le Real player 10. Si vous ne l'avez pas, vous pouvez aller télécharger le player gratuit sur le site de l'éditeur. Attention, sur le site on vous propose en premier le lecteur payant après une courte période d'essai. Le basic free player (le lecteur gratuit) est toujours disponible mais moins en évidence.
Discuter de ce billet sur le forum - Laisser votre commentaire »
Sources d'information sur les nouvelles séries
Par Pazu le 17 mai 2006 21:05 :: Webmastering :: Aucun commentaire »
Plusieurs sites web outre atlantique s'occupent de rencenser toutes les sorties et s'efforcent de fournir le maximum d'éléments avant la diffusion ou dès qu'elle commence. Dans le temps, ce ne sont pas forcément ces sites qui donneront les informations les plus complètes sur les séries en question. Animenfo (http://www.animenfo.com) est sans doute le site le plus connu sur le sujet mais d'autres adresses existent comme Uknighted Manganime (http://manganime.animeblogger.net): La présentation est plus sommaire mais le formule d'ouvrir un Wiki à chaque saison permet d'avoir là une synthèse de plusieurs sources et d'avoir sans doute la liste la plus complète.
Côté français, les addresses trouvées reprennent les informations données par d'autres sites à coup de traduction automatique, ce qui est fort dommage : si les données comme les dates ou les titres sont bonnes et même enrichies, les textes des résumés n'ont souvent aucun sens.

Discuter de ce billet sur le forum - Laisser votre commentaire »
Baladodiffusion en folie
Par Pazu le 10 avril 2006 18:04 :: Webmastering :: 6 commentaires »
Sans entrer dans les détails, nous allons dire que c'est un moyen de diffusion de fichiers sonores ou vidéo sur internet. En particulier, la baladodiffusion permet aux utilisateurs d'automatiser le téléchargement des émissions, notamment pour leur baladeur numérique ou sur leur ordinateur personnel, pour une écoute ultérieure.
Le concept s'est fortement développé avec l'essort des blogs et il est entré dans les moeurs des internautes.
En ce qui concerne les anime manga, plusieurs sites commencent à proposer des émissions "radiophoniques" pour aller au delà de la simple liste de morceaux de musiques à la demande.
Vous avez d'abord ceux qui proposent les archives des émissions de radio associative qui ont été diffusées sur les ondes. C'est le cas d'Asia Connection sur Radio Campus Bordeaux et de Génération Manga sur Radio Campus Clermont-Ferrand.
Il y a ensuite les sites qui se lancent dans l'exercice avec plus ou moins de perséverance. Anime france.info a fait un essai de balado diffusion , ainsi que l'équipe d'Animemu qui en est à sa deuxième émission au début avril. Je citerai également Nippon Actu, qui est un pur magazine audio hebdomadaire, qui est de bonne facture et qui tient le rythme jusqu'à présent.
Il existe également des flux vidéos mais les seules "émissions" que j'ai pu trouver sont en anglais. Track-shun TV en est un exemple avec une mise en ligne mensuelle de plusieurs vidéos, qui sont des critiques en image des anime très récents, en général.
Et Animint dans tout ça? Pour l'instant, il n'y aura pas de flux xml pour permettre la baladodiffusion, pour diverses raisons dont quelques unes sont simplement techniques. En revanche, avec les outils déjà en place, j'ai déjà procédé à un essai d'émission de quarante cinq minutes, qui a pour thème les World Masterpiece Theaters. Le flux est en Real Player 10 et il vous faut donc un lecteur compatible avec ce format.

Discuter de ce billet sur le forum - Laisser votre commentaire »
Travaux en cours sur Animint
Par Pazu le 28 janvier 2006 15:01 :: Webmastering :: Aucun commentaire »
- Automatisation plus poussée pour la mise à jour des sorties vidéos et manga -- en cours
- Refonte du quizz
- Jeux RPG sur le forum
- Fusion de la base encyclopédique et des listes vidéos/manga
- Nouvelle rubrique "trailer" liée avec la base encyclopédique
- Reprise des archives off lines des actualités japonaises pour les insérer dans la base actuelle
...
Discuter de ce billet sur le forum - Laisser votre commentaire »
Le code derrière ce blog
Par Pazu le 13 novembre 2005 11:11 :: Webmastering :: Aucun commentaire »
Parmi les programmes php de blog qui ont retenu mon attention, il y avait Dotclear et Serendipity. Ils offrent un grand nombre de fonctionnalités et une bonne souplesse pour être intégré dans un site existant. Dotclear avait cependant l'inconvénient de ne tourner que sous MySQL alors qu'Animint utilise plutôt Postgresql, à quelques exceptions près. Serendipity avait l'avantage d'être plus universel mais, à la réflexion, l'une ou l'autre des deux solutions offraient beaucoup de fonctionnalités inutiles dans le cas de ce site : Par exemple, la possibilité de faire ouvrir des blogs par les utilisateurs n'entre pas dans sa vocation. D'autre part, même avec la plus grande souplesse, les produits n'en restent pas moins des outils à part, qui ne s'intègrent pas pile poil dans la gestion du système d'information existant.
J'ai finalement opté pour une écriture de code php fait maison, en recyclant certains objets déjà programmés pour d'autres parties du site. Par rapport aux blogs fournis clef en main, certaines fonctions comme le trackback sont absentes mais je les ai zappées intentionnellement, comme j'ai l'impression que les visiteurs ne les utilisent jamais. En revanche, pour l'édition wysiwyg des billets, j'ai eu recours à FCK editor, un module externe, qui est beaucoup plus puissant que les objets que j'avais à ma disposition jusqu'alors.
Discuter de ce billet sur le forum - Laisser votre commentaire »
Animint
anime & manga
Les images sont Copyright © par leurs créateurs/ propriétaires/ distributeurs.
