Planet ALDIL

juillet 01, 2009

Journées du Logiciel Libre

Les professionnels

mercredi 01 juillet 2009 09:35

juin 30, 2009

Dup

Heraia - 0.1.0

No real major changes but : filesize is now displayed in main window hability to open multiple files via "File" menu log now scrolls down automatically stat window now remembers last used directory (when saving images) and has overwrite confirmation What's next ? I will try to...

mardi 30 juin 2009 22:00

juin 18, 2009

Journées du Logiciel Libre

Les journées du logiciel libre 2009

La réflexion commence. Vous pouvez nous aider à choisir un thème et à le concrétiser.

jeudi 18 juin 2009 07:30

juin 11, 2009

Toady

Workshop on the Analysis of System Logs

Just a reminder, we are approaching the June 29th deadline for WASL, http://www.systemloganalysis.com/

jeudi 11 juin 2009 19:41

juin 09, 2009

Alexandre De Dommelin - Laotseu

Notifications depuis irssi distant grace a libnotify

Il existe plusieurs solutions pour afficher des notifications locales lorsque vous recevez des messages sur votre irssi distant.
Ne souhaitant pas mettre en place une solution necessitant l'installation de paquets relatifs à X sur mon serveur, je me suis tourné vers une solution utilisant un petit script perl int&eagré à irssi et d'un autre petit script sur le poste client qui se chargera d'afficher les notifications sur le bureau.

Configuration côté serveur

Copiez/collez le code ci-dessous dans un fichier qui sera placé dans le repertoire ~/.irssi/scripts/autorun/

use strict;
use Irssi;

sub priv_msg {
        my ($server,$msg,$nick,$address,$target) = @_;
        filewrite($nick." " .$msg );
}

sub hilight {
    my ($dest, $text, $stripped) = @_;
    if ($dest->{level} & MSGLEVEL_HILIGHT) {
        filewrite($dest->{target}. " " .$stripped );
    }
}

sub filewrite {
        my ($text) = @_;
        open(FILE,">>$ENV{HOME}/.irssi/notifications_log");
        print FILE $text . "\n";
        close (FILE);
}

Irssi::signal_add_last("message private", "priv_msg");
Irssi::signal_add_last("print text", "hilight");
Ce bout de code logguera vos messages privés dans le fichier ~/.irssi/notifications_log
C'est fini pour le serveur, passons à la suite.

Configuration côté client

Tout d'abord, commencez par installer le paquet libnotify-bin (en tout cas il s'appelle comme ca sous debian, il fournit le binaire notify-send) Copiez/collez le code ci-dessous dans un fichier que vous placerez dans votre repertoire de scripts persos favoris (~/bin dans mon cas)

#!/bin/sh
ssh user@host.tld tail -F -n1 ~/.irssi/notifications_log | while read heading message
do notify-send -i gtk-dialog-info -t 300000 -- "${heading}" "${message}"
done

Pensez à mettre votre login / adresse serveur à la place de "user@host.tld", le bit d'execution sur le script, puis rajoutez une ligne dans votre ~/.xinitrc pour qu'il soit lancé automatiquement lors de votre connexion.

Conclusion

Relancez votre irssi, lancez le script sur votre client et attendez qu'un ami vous parle (ou alors envoyez-vous vous meme un message avec un autre client si vous n'avez pas d'amis).
Dernier point, il est quand meme largement conseillé d'avoir votre clef ssh de posée sur votre serveur et de prevoir un mécanisme de saisie de votre passphrase AVANT d'appeler votre script client.

mardi 09 juin 2009 21:45

juin 07, 2009

Journées du Logiciel Libre

Cette année ?

Vivez les JDLL

dimanche 07 juin 2009 13:15

Infos pratiques de l'édition 2008

En attendant les informations concernant 2009, celles de 2008 donnent une idée de ce que sont les JDLL.

dimanche 07 juin 2009 13:13

juin 01, 2009

Frédéric Logier - fredix

iMotion : GStreamer

Cela faisait un moment que je n'avais plus posté sur iMotion, en août dernier apparemment !

J'ai repris le code pour y ajouter le support des fichiers vidéos. Je butais depuis un moment sur un problème de fige de la vidéo lors du changement d'un effet pendant la lecture, problème que je n'ai pas avec la webcam. Cette technique de changement dynamique d'un élément lors de la lecture dans le pipeline est uniquement documenté ici : cgit.freedesktop.org/gstreamer/gstreamer/tree/docs/design/part-block.txt#n112 mais je n'ai pas trouvé de soft qui l'implémente  ...

Premièrement j'avais oublié l'indication 8 :

8) make sure element4 is in the same state as the rest of the elements. The element should at least be PAUSED.

Mon pipeline est en statut PLAYING donc en passant l'élément effect dans ce statut le problème de fige de la vidéo a été résolu.

Deuxièmement le schéma de la documentation montre un pipeline de 3 éléments (plus un 4 ème qui remplace dynamiquement le 2ème). Or cela m'a induis en erreur car le mien en possède 6 :

  1. filesrc
  2. decodebin2
  3. ffmpegcolorspace
  4. videoscale
  5. effectv
  6. ximagesink

Lorsque la documentation indique de bloquer l'élément 1 il s'agit en fait de l'élément qui précède celui que l'on veut remplacer. Dans iMotion je souhaite changer dynamiquement d'effet donc c'est l'élément 4 qui doit être bloqué.

Pour ceux qui débutent avec GStreamer voici une excellente présentation : blog.nicolargo.com/2009/03/gstreamer-la-theorie.html

Voici une capture d'écran avec l'effet edgetv suivie de l'implémentation correcte du code :


 

 

void
VideoManager::switch_effect (Glib::ustring a_name)
{
    m_effect_name = a_name;
    bool res = false;
    GstEvent *event;


    // replay pipeline if it paused

    gst_element_get_state(m_pipeline, NULL, NULL, GST_CLOCK_TIME_NONE);
    gst_element_set_state (m_pipeline, GST_STATE_PLAYING);


    // wait until pipeline playing
    if (gst_element_get_state (m_pipeline, NULL, NULL, GST_CLOCK_TIME_NONE) == GST_STATE_CHANGE_FAILURE) {
std::cout << "Failed to go into PLAYING state" << std::endl;
exit(1);
}

std::cout << "PLAYING state" << std::endl;


GstPad *videoscale_sink_pad = gst_element_get_static_pad (m_videoscale, "sink");
GstPad *videoscale_src_pad = gst_element_get_static_pad (m_videoscale, "src");


if (videoscale_src_pad) {
res = gst_pad_set_blocked_async (videoscale_src_pad, TRUE, (GstPadBlockCallback) block_callback, m_pipeline);
std::cout << "blocked pad : " << res << std::endl;

if (!res) {
std::cout << "can not block source pad : " << res << std::endl;
exit (1);
} else {
std::cout << "blocked source pad : " << res << std::endl;
}

}
else {
std::cout << "can not get source pad : " << res << std::endl;
exit (1);
}

 

if (m_effect)
{
GstPad *effect_sink_pad = gst_element_get_static_pad (m_effect, "sink");
GstPad *effect_src_pad = gst_element_get_static_pad (m_effect, "src");


// remove effect element
gst_element_get_state(m_effect, NULL, NULL, GST_CLOCK_TIME_NONE);
gst_element_set_state (m_effect, GST_STATE_NULL);
gst_element_get_state(m_effect, NULL, NULL, GST_CLOCK_TIME_NONE);


if (gst_element_get_state (m_effect, NULL, NULL, GST_CLOCK_TIME_NONE) == GST_STATE_CHANGE_FAILURE) {
std::cout << "Failed to state null on m_effect" << std::endl;
exit(1);
}


gst_element_unlink_pads (m_videoscale,
"src",
m_effect,
"sink");

std::cout << "UNLINK PAD" << std::endl;

 

/************ seems to not be usefull ************/
gst_pad_add_event_probe (effect_src_pad, G_CALLBACK (source_pad_event_probe), effect_src_pad);
event = gst_event_new_eos ();
gst_pad_send_event (effect_sink_pad, event);
gst_object_unref (effect_sink_pad);
std::cout << "SEND EOS" << std::endl;
/**************************************************/


gst_element_unlink_pads (m_effect,
"src",
m_sink,
"sink");

std::cout << "UNLINK PAD 2" << std::endl;
gst_element_get_state(m_effect, NULL, NULL, GST_CLOCK_TIME_NONE);

gst_bin_remove (GST_BIN (m_bin), m_effect);

std::cout << "GST BIN REMOVED" << std::endl;

}
else
{
gst_element_unlink_pads (m_videoscale,
"src",
m_sink,
"sink");
}


if ( m_effect_name != "none")
{
m_effect = gst_element_factory_make (m_effect_name.c_str(), "effect");
gst_bin_add (GST_BIN (m_bin), m_effect);
gst_element_link_pads (m_videoscale,
"src",
m_effect,
"sink");
gst_element_link_pads (m_effect,
"src",
m_sink,
"sink");

// Indication 8
gst_element_set_state (m_effect, GST_STATE_PLAYING);
        std::cout << "new effect and linked in" << std::endl;
    }
    else
    {
        gst_element_link_pads (m_videoscale,
                               "src",
                               m_sink,
                               "sink");

        m_effect = 0;
        std::cout << "no effect" << std::endl;

    }

    if (videoscale_src_pad) {
        res = gst_pad_set_blocked_async (videoscale_src_pad, FALSE,(GstPadBlockCallback) block_callback, m_pipeline);
        gst_object_unref (videoscale_src_pad);
    }
    std::cout << "unblocked source pad : " << res << std::endl;
    std::cout << m_effect_name << std::endl;
}

 

lundi 01 juin 2009 21:12

Journées du Logiciel Libre

Les 11 emes JDLL se préparent

Les journées du libres se préparent

lundi 01 juin 2009 20:00

Les associations

lundi 01 juin 2009 19:42

Les conférences

lundi 01 juin 2009 19:34

mai 25, 2009

Toady

Eicar 2009 slides available

You can find the slides for the lecture Philippe and I gave at Eicar for download.

Enjoy! (feedback greatly appreciated)

lundi 25 mai 2009 21:59

mai 19, 2009

Dup

Heraia - 0.0.9

Heraia - 0.0.9 is out since 19 may 2009 !

mardi 19 mai 2009 19:10

mai 15, 2009

Toady

Eicar 2009 paper available

The paper Philippe and I wrote for Eicar is now available for download.

Applied Parallel Coordinates for Logs and Network Traffic Attack Analysis (Best paper award)


By looking on how computer security issues are handled today, dealing with numerous and unknown events is not easy. Events need to be normalized, abnormal behaviors must be described and known attacks are usually signatures.
Parallel coordinates plot offers a new way to deal with such a vast amount of events and event types: instead of working with an alert system, an image is generated so that issues can be visualized.
By simply looking at this image, one can see line patterns with particular color, thickness, frequency, or convergence behavior that gives evidence of subtle data correlation.
This paper first starts with the mathematical theory needed to understand the power of such a system and later introduces the Picviz software which implements part of it.
Picviz dissects acquired data into a graph description language to make a parallel coordinate picture of it. Its architecture and features are covered with examples of how it can be used to discover security related issues.

Dowload here

vendredi 15 mai 2009 18:17

mai 12, 2009

Stéphane Salès - stephs

Bourreau-TF1 : Le cabinet d'Albanel voulait bien la tête de l'employé

Bourreau-TF1 : Le cabinet d'Albanel voulait bien la tête de l'employé ! - Numerama

Le Canard Enchaîné daté de ce mercredi a pu mettre la main sur le mail envoyé par le cabinet de Christine Albanel à la direction de TF1. Il est accablant pour la ministre :

"Bonjour, Jean-Michel, vous avez des salariés qui, manifestement, aiment tirer contre leur camp. Cordialement"

Pour rappel :

Interrogée hier à l'occasion des questions au gouvernement, Christine Albanel avait indiqué que l'e-mail avait été envoyé à TF1 "sans aucune demande de sanction, mais pour information". Une drôle de manière d'informer.

mardi 12 mai 2009 22:00

avril 30, 2009

Toady

Prague

I am in Prague until next Monday. Between city tours, Picviz hacking, slides writing for Eicar and working on my Picviz paper for the Journal of Computer Virology let's meet up!

just drop me an email.

jeudi 30 avril 2009 20:59

avril 28, 2009

Stéphane Salès - stephs

Lionel Tardy première victime de la riposte graduée

Lionel Tardy première victime de la riposte graduée ... : Lionel TARDY

Sachant que l'examen en seconde lecture du projet de loi Création et Internet (Hadopi) reprenait aujourd'hui, je m'étais inscrit (par précaution) dès la semaine dernière auprès du groupe UMP pour intervenir lors de la DG (Discussion Générale) de cet après-midi.

N'ayant pas de nouvelle du groupe, je me suis rapproché du service de la séance en fin de matinée, qui m'a appris que ma demande n'avais pas été retenue par le groupe UMP, faute de temps de parole suffisant (20 minutes au total).

UPDATE : Christian vanneste a eu droit aux mêmes égards

mardi 28 avril 2009 22:00

Députés Godillots

:: Députés Godillots

DeputesGodillots.info est un site communautaire qui vise à recenser les pratiques godillotes de certains députés de la majorité afin de permettre au président du groupe UMP de réaliser sa promesse de mettre fin à la notion de parlement godillot.

mardi 28 avril 2009 22:00

avril 20, 2009

Toady

Picviz selected for Google Summer Of Code (GSOC)!

The honeynet project had several projects, 8 in total. They were all carefully chosen and I had the honor to have Picviz as one of those projects.

I really believe parallel coordinates will greatly improve the data analysis area, and it seemed I was not the only one to think so.

You can check out some very cool projects that also got selected. This is a great opportunity for us, even though we had really hard time to reject other great projects.

Anyway, because they will work intensively in Python, I completely rewrote the bindings, and I even documented it!

Ah, I forgot, do you know that sometime challenges that some people do in some Chinese restaurants can be found simply using 'strings' and reading the enigma in the end of a binary?

lundi 20 avril 2009 20:07

avril 17, 2009

Toady

Random stuff

It's been a while I haven't blogged. There we go... quite some random late things


vendredi 17 avril 2009 21:59

avril 15, 2009

Stéphane Salès - stephs

10 000 artistes .. ou pas

Hadopi: couacs autour de la pétition des 10 000 artistes - l'Express

Sur les 10 000 signataires, le collectif a relevé plusieurs incohérences.

- Des centaines d'employés des maisons de disques (EMI, Universal...) et leurs représentants (Sacem, Snep...) qui n'ont pas de rapport direct avec les artistes ont signé la pétition. Ils représentent une part importante du total des signataires.

- Des artistes ouvertement hostiles au projet de loi figurent dans la liste, comme Marc Cerrone.

- Nicola Sirkis du groupe Indochine affirme sur son site Internet ne pas avoir signé cette pétition alors qu'il est listé dans les 10 000 signataires

mercredi 15 avril 2009 22:00

avril 13, 2009

Stéphane Salès - stephs

Manifestation contre HADOPI : samedi 25 Avril

Manifestation contre HADOPI : samedi 25 Avril

La loi HADOPI, votée le 2 Avril 2009, rejetée par les Députés le 9 Avril 2009, réintroduite par la porte des cabinets le 28 Avril 2009 comprend des dispositifs liberticides :

* Le réseau Internet français sera mis sur écoute, façon Big-Brother.

* Des logiciels mouchards payants seront disponibles pour prouver la bonne foi des internautes.

* Il revient à chaque individu la charge de la preuve qu'il respecte la loi, en contradiction avec les principes de droit établis depuis 200 ans.

L'impensable est arrivé, ouvrant la voie à une régression des libertés publiques. Cette régression montre que les libertés ne sont jamais acquises et qu'il faut toujours être vigilant à les défendre. Pour vous en convaincre, regardez les vidéos des discussions de la loi HADOPI à l'Assemblée Nationale .

Nous organisons une manifestation unitaire des opposants à la loi HADOPI le 25 Avril 2009 à 14 heures, place Edouard Herriot à Paris. Des manifestations sont en cours d'organisation à Lyon et à Marseille. Nous n'avons que 16 jours pour boucler le projet. Les manifestations seront organisées avec le plus grand soin.

lundi 13 avril 2009 22:00

avril 10, 2009

Alexandre De Dommelin - Laotseu

SQL : Selectionner le premier/dernier/plus grand resultat de chaque groupe

Afin d'illuster mes propos, je vais utiliser un exemple avec une table "fruits" contenant quelques enregistrements :

+--------+------------+-------+
| type   | variete    | prix  |
+--------+------------+-------+
| pomme  | gala       |  2.79 | 
| pomme  | fuji       |  0.24 | 
| pomme  | Borowitsky |  2.87 | 
| orange | valencia   |  3.59 | 
| orange | navel      |  9.36 | 
| poire  | bradford   |  6.05 | 
| poire  | bartlett   |  2.14 | 
| cerise | bing       |  2.55 | 
| cerise | chelan     |  6.33 | 
+--------+------------+-------+



Sélectionner une entrée extreme dans chaque groupe


Il est courant de vouloir selectionner dans une table le log le plus récent pour chaque programme, ou quelque chose dans le style. Si l'on essaie d'appliquer ce type de problème à notre table de fruits, nous pourrions par exemple vouloir trouver, pour chaque type la variété la moins chère.
Voici ce que nous souhaitons obtenir :

+--------+----------+-------+
| type   | variete  | prix  |
+--------+----------+-------+
| pomme  | fuji     |  0.24 | 
| orange | valencia |  3.59 | 
| poire  | bartlett |  2.14 | 
| cerise | bing     |  2.55 | 
+--------+----------+-------+ 

Il existe quelques solutions à ce problème. Toutes fonctionnent en 2 temps : trouver le prix desiré, puis selectionner le reste des données en ce basant sur ce résultat.
Une solution courante est appellé "auto-jointure". L'étape 1 est de grouper les fruits par type, et d'en choisir le prix minimum :

SELECT type, MIN(prix ) AS minprix 
FROM fruits
GROUP BY type;

+--------+----------+
| type   | minprix  |
+--------+----------+
| pomme  |     0.24 | 
| cerise |     2.55 | 
| orange |     3.59 | 
| poire  |     2.14 | 
+--------+----------+

L'étape 2 est de selectionner le reste des lignes en faisant une auto-jointure sur la table fruits. Comme notre premiere requete est groupé il est nécessaire de l'intégrer dans une sous-requete afin de faire notre jointure sur la table de base non-groupée :

SELECT f.type, f.variete, f.prix 
FROM (
   SELECT type, MIN(prix ) AS minprix 
   FROM fruits GROUP BY type
) as x INNER JOIN fruits AS f ON f.type = x.type AND f.prix  = x.minprix ;

+--------+----------+-------+
| type   | variete  | prix  |
+--------+----------+-------+
| pomme  | fuji     |  0.24 | 
| cerise | bing     |  2.55 | 
| orange | valencia |  3.59 | 
| poire  | bartlett |  2.14 | 
+--------+----------+-------+

Une autre solution, plus lisible mais potentiellement plus lente est d'utiliser une requete imbriquée :

SELECT type, variete, prix 
FROM fruits
WHERE prix  = (SELECT MIN(prix ) FROM fruits AS f WHERE f.type = fruits.type);

+--------+----------+-------+
| type   | variete  | prix  |
+--------+----------+-------+
| pomme  | fuji     |  0.24 | 
| orange | valencia |  3.59 | 
| poire  | bartlett |  2.14 | 
| cerise | bing     |  2.55 | 
+--------+----------+-------+



Selectionner les N entrées extremes de chaque groupe


Ce probléme est plus compliqué que le premier à résoudre. Sortir un seul enregistrement est relativement simple grace aux fonctions MIN(), MAX() ... mais il est impossible de les utiliser dans notre cas dans le sens ou ces fonctions ne peuvent renvoyer qu'une seule valeur.
Disons que nous souhaitons trouver les 2 variétés les moins chès de chaque type :

SELECT type, variete, prix 
FROM fruits
WHERE (
   SELECT COUNT(*) FROM fruits AS f
   WHERE f.type = fruits.type AND f.prix  < fruits.prix 
) <= 2;

+--------+----------+-------+
| type   | variete  | prix  |
+--------+----------+-------+
| pomme  | gala     |  2.79 | 
| pomme  | fuji     |  0.24 | 
| orange | valencia |  3.59 | 
| orange | navel    |  9.36 | 
| poire  | bradford |  6.05 | 
| poire  | bartlett |  2.14 | 
| cerise | bing     |  2.55 | 
| cerise | chelan   |  6.33 | 
+--------+----------+-------+

Cette requete peut être expliquée comme cela : "Selectionner la variété de chaque type ou la variété n'est pas plus chère que la 2ème moins chème de chaque type" (ouf !).
Cette manière de faire est relativement propre dans le sens ou il est possible de faire varier le nombre d'entrées a selectionner facilement. En revanche au niveau performances, ce n'est pas vraiment le top, l'utilisation d'algo quadratique devient assez lourd lorsque le nombre d'enregistrements devient important, surtout si les index ne sont pas ou mal définis.Existe-t-il une ou plusieurs solutions plus optimisées ?



L'UNION fait la force


Si votre table dispose d'un index (type,prix ) et qu'il y a beaucoup plus d'enregistrements à eliminer qu'à recuperer pour chaque groupe, une methode plus efficace (surtout sur MySQL) est de splitter les differentes requetes, de poser une limite sur chacunes d'entres elles puis d'utiliser UNION pour les remettre ensemble. Voici un exemple :

(SELECT * FROM fruits WHERE type = 'pomme' ORDER BY prix  LIMIT 2)
UNION ALL
(SELECT * FROM fruits WHERE type = 'orange' ORDER BY prix  LIMIT 2)
UNION ALL
(SELECT * FROM fruits WHERE type = 'poire' ORDER BY prix  LIMIT 2)
UNION ALL
(SELECT * FROM fruits WHERE type = 'cerise' ORDER BY prix  LIMIT 2)


Paul Zaitev a fait une description approfondie de cette technique, je vous conseille de le lire si vous voulez en savoir plus sur cette dernière.



Petite solution spécifique à MySQL utilisant des variables

Une autre solution, spécifique à MySQL, dans le cas ou vous souhaitez récuperer un plus grand nombre d'enregistrements, est de passer par des variables :

set @num := 0, @type := '';

SELECT type, variete, prix 
FROM (
   SELECT type, variete, prix ,
      @num := if(@type = type, @num + 1, 1) AS row_number,
      @type := type AS dummy
  FROM fruits
  ORDER BY type, prix 
) AS x WHERE x.row_number <= 2;

Cette requete s'effectue au final en 2 passes, la sous-requetes construisant implicitement une table remplie avec les données sur lesquelles on applique tour à tour la clause WHERE.



Conclusion


Nous avons fait un tour rapide de quelques solutions au problème qui est de pouvoir recuperer "les valeurs extremes de chaque groupe" et également de pouvoir selectionner les N extremes resultats de chaque groupe.
La plupart des techniques sont applicables sur divers SGBD, meme si la derniere solution est MySQL-Specifique. Cet article est inspiré de techniques décrites par B. Schwartz avec son autorisation expresse.

vendredi 10 avril 2009 23:09

Customizer les pages 404 sous lighttpd

Après etre tombé sur un article traitant des nouvelles fonctionnalités de la dernière version de la Google Toolbar, j'ai pris conscience de la nécéssité de mettre en place des pages 404 personnalisées.
En effet toutes les pages pesant moins de 512 octets seront remplacées par une page Google contenant un champ de recherche qui risque de rediriger votre traffic sur un autre site.

Assez blablaté passons à la customization de vos pages, la procédure est tres simple :

Editer le fichier de conf de lighttpd :
# vim /etc/lighttpd/lighttpd.conf
Rajoutez la ligne suivante : server.error-handler-404 = “/404-handler.html”
NB : il est bien sur possible de remplacer la page HTML par une page PHP, Perl ...

Il ne reste plus qu'a créer une page 404-handler.html a la racine du serveur puis de relancer lighttpd # /etc/init.d/lighttpd restart

vendredi 10 avril 2009 09:50

avril 09, 2009

Alexandre De Dommelin - Laotseu

Desactiver console.log quand firebug n'est pas disponible

Je trouve la fonction console.log() très pratique pour debugger sans avoir recours à des alert() à tout va. Le problème c'est qu'il est très facile d'oublier un appel à cette fonction quelque part dans le code, résultat tous les browsers ne disposant pas de firebug installé planteront lors de l'execution. Voilà une solution permettant de bypasser ce problème :

<script type="text/javascript">
        if (typeof console != "object") {
                var console = {
                        'log':function() {}
                };
        }
</script>


Bien entendu, c'est une solution de contournement et il est preferable de supprimer tous les appels à console.log() une fois le dev terminé

jeudi 09 avril 2009 06:53

avril 08, 2009

Stéphane Salès - stephs

Hadopi rejeté : la vidéo

Le coup de théâtre à l'Assemblée en images - LCI

le texte .. est re-je-té

sous les applaudissements des députés de l'opposition

mercredi 08 avril 2009 22:00

avril 02, 2009

Stéphane Salès - stephs

CP April : HADOPI - projet de loi inadapté, inacceptable, inapplicable, d'ores et déjà dépassé

HADOPI - projet de loi inadapté, inacceptable, inapplicable, d'ores et déjà dépassé

L'April dénonce le vote du projet de loi HADOPI qui contient des dispositions qu'il était impensable de voir écrites un jour noir sur blanc tant elles sont extrémistes. Non content de se positionner de façon unilatérale en faveur d'une centralisation de l'information sur Internet, ce projet de loi instaure en plus de nouvelles discriminations contre le logiciel libre.

L'Assemblée nationale a adopté 1 le projet de loi HADOPI mettant en place une procédure disproportionnée de répression massive à l'encontre des internautes qui échangent des \u0153uvres sans autorisation. Le projet de loi ne propose rien pour favoriser la mise à disposition du public d'offres commerciales attractives de musique et de films.

La ministre de la Culture Christine Albanel, le rapporteur Franck Riester et presque tous les députés UMP ont validé de nouvelles discriminations à l'encontre du Logiciel Libre. Malgré la mobilisation des employeurs du Libre contre HADOPI 2, ils ont refusé tout encadrement des mouchards filtrants que les abonnés devront installer pour garantir leur sécurité juridique. Ils se sont également opposés à toute mesure favorable à l'interopérabilité et à la libre concurrence, et ont persisté à limiter le droit moral de divulgation des auteurs de logiciels libres 3.

jeudi 02 avril 2009 22:00

A peine votée, Hadopi pose des problèmes

A peine votée, Hadopi pose des problèmes - Le Figaro

«L'État n'a pas à faire peser financièrement sur les opérateurs les coûts d'une mission d'intérêt général étrangère à l'activité de ces mêmes opérateurs», a réagi jeudi la fédération française des télécoms. Un principe consacré par une décision du Conseil constitutionnel du 28 décembre 2000. «Il reviendra donc à l'État d'assumer les coûts très lourds afférents à la mise en oeuvre de l'ensemble du dispositif», poursuit la fédération. La facture sera lourde : à elle seule, la refonte des systèmes informatiques et de facturation nécessaires pour couper l'accès des abonnés, se chiffre déjà à 70 millions d'euros !

«Est-ce aux consommateurs de sauver une industrie en déclin parce qu'elle n'a pas su s'adapter à la nouvelle donne technologique et élaborer un nouveau modèle économique ?», s'interroge l'association de défense des consommateurs Adeic. Et de dresser une longue liste à la Prévert des taxes déjà collectées et reversées aux ayants droit : taxes sur les CD, RW et DVD ; taxes sur les mémoires et disques durs intégrés à un téléviseur ; taxes sur les clés USB ; taxes sur les téléphones mobiles multimédias ; taxes sur les cartes mémoires etc.

jeudi 02 avril 2009 22:00

avril 01, 2009

Stéphane Salès - stephs

No comment

Hadopi: la suspension de la connexion Internet est confirmée par les députés sur 20minutes.fr

Marc Le Fur, député UMP: «Nous nous battons tous pour que nos communes rurales ait un accès Internet et nous allons le supprimer pour certaines familles.»

Réponse de Franck Riester: «L'internaute sanctionné pourra se rendre chez son voisin grâce à la solidarité des campagnes.»

mercredi 01 avril 2009 22:00

mars 27, 2009

Alexandre De Dommelin - Laotseu

Email validation using Regular Expression

Working on various web projects, there's a very well known problem : find a good regular expression (regexp) to check the validity of user submitted email addresses.
This website has compiled various regular expressions which try to resolve this problem. His idea is great, using a set of valid/invalid emails, and a simple unit test, he can provide a good comparison of some of the most used regexps.

His philosophy is great : "It's my philosophy that it's better to accept a few invalid addresses than reject any valid ones, so I'm shooting for 0 false-positives and as few false-negatives as possible."
But I've noticed 2 problems :

So i've decided to improve an existant one, adding an other test criteria : also check the "real" validity of the IP address. The following work is based on Warren Gaebel's regex, including improvement proposed by G. Arluison.

Here's my solution :

/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9]([-a-z0-9_]?[a-z0-9])*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z]{2})|([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})(\.([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})){3})(:[0-9]{1,5})?$/i

Here are the results :

Should be Valid:

l3tt3rsAndNumb3rs@domain.com Valid
has-dash@domain.com Valid
hasApostrophe.o'leary@domain.org Valid
uncommonTLD@domain.museum Valid
uncommonTLD@domain.travel Valid
uncommonTLD@domain.mobi Valid
countryCodeTLD@domain.uk Valid
lettersInDomain@911.com Valid
underscore_inLocal@domain.net Valid
IPInsteadOfDomain@127.0.0.1 Valid
IPAndPort@127.0.0.1:25 Valid
subdomain@sub.domain.com Valid
local@dash-inDomain.com Valid
dot.inLocal@foo.com Valid
a@singleLetterLocal.org Valid
singleLetterDomain@x.org Valid
&*=?^+{}'~@validCharsInLocal.net Valid

 

Should be NOT Valid :

missingDomain@.com Not Valid
@missingLocal.org Not Valid
missingatSign.net Not Valid
missingDot@com Not Valid
two@@signs.com Not Valid
colonButNoPort@127.0.0.1: Not Valid
  Not Valid
WrongIpAddr@256.10.12.154 Not Valid
someone-else@127.0.0.1.26 Not Valid
.localStartsWithDot@domain.com Not Valid
localEndsWithDot.@domain.com Not Valid
two..consecutiveDots@domain.com Not Valid
domainStartsWithDash@-domain.com Not Valid
domainEndsWithDash@domain-.com Not Valid
TLDDoesntExist@domain.moc Not Valid
numbersInTLD@domain.c0m Not Valid
missingTLD@domain. Not Valid
! "#$%(),/;<>[]`|@invalidCharsInLocal.org Not Valid
invalidCharsInDomain@! "#$%(),/;<>_[]`|.org Not Valid
local@SecondLevelDomainNamesAreInvalidIfTheyAreLongerThan64Charactersss.org Valid

Results :
Valid : 18/18
Invalid : 19/20

I'm very happy with this solution for a lot of points : it is a portable one (usable on client-side via JS, or server side with languages providing PCRE functions), it does deep TLD and IP address check. If you want to add an other TLD (more than 2 chars long), just append it to the list.

I'm working on a solution to check the length of the address. Based on the RFC, an email should be composed like that :

In sum, an email address can be 320 characters long at most.

If you want to test it, here comes a small PHP script using the preg_match() function : test_email.php

To be continued ... :-)

vendredi 27 mars 2009 21:45