via PC INpact le 04/11/11
Mise à jour 11h59 : en seconde lecture, le Sénat a terminé l'examen du texte en l'amendant. Par ...

via Phototrend.fr, le blog qui suit la photo de près de Jean Noel Dollé le 25/10/11

Le Gif est un format que nous connaissons tous. Malgré sa limite à 256 couleurs, il est, avec le Jpg, l’un des formats les plus utilisés sur internet. On peut citer trois raisons principales qui expliquent ce succès :

  • son faible poids
  • la possibilité de faire des images animées
  • et de savoir gérer la transparence

Parfois ressenti comme un peu vieillot, voilà que ce format connaît un vrai coup de jeune : Jamie Beck and Kevin Burg ont cherché à le déringardiser. Le premier est un grand photographe alors que le second est spécialiste de l’animation, et leur coopération a fait naître le Cinemagraph. Ce n’est ni une photo ni vraiment une vidéo. Son objectif ? Illustrer une histoire courte.

cinemagraph

Voici d’autres exemples dans la suite :

cinemagraph

cinemagraph

cinemagraph

cinemagraph

cinemagraph

cinemagraph

cinemagraph

cinemagraph

cinemagraph

cinemagraph

cinemagraph

N’hésitez pas à aller voir leur blog ou leur site internet pour en voir d’autres. Mais surtout rendez-vous demain sur Phototrend pour un Mercredi Pratique vous expliquant comment créer à votre tour ces Cinemagraph.

via Les dernières actualités de Futura-Sciences de webmaster@futura-sciences.com (Futura-Sciences) le 28/10/11
Le manuscrit dit de Copiale, entièrement crypté, vient d'être « cassé » par un logiciel utilisant des méthodes... de traduction. Verdict : ce long texte est une description de rites étranges organisés par une société secrète du XVIIIe siècle.
Baptisé Copiale (un de ses rares mots écrits en clair), ce livret de 105 pages retrouvé dans des archives de l'ex-Allemagne de l'Est défiait les spécialistes de la cryptographie. Il faut dire que l'on y trouve pêle-mêle des caractères latins, grecs et...

via La Quadrature du Net de neurone314 le 28/10/11

À l'occasion du Free Culture Forum à Barcelone, La Quadrature du Net publie trois films pour informer les citoyens et les inciter à se mobiliser contre ACTA, l'accord commercial anti-contrefaçon.

ACTA est un danger pour les libertés fondamentales des utilisateurs d'Internet, ainsi que pour la libre concurrence et la compétitivité des entreprises de l'Internet. Le Parlement européen décidera bientôt s'il donne son consentement à ACTA, ou s'il le rejette une fois pour toutes.

Tout citoyen peut aider à contrer ACTA en diffusant cette vidéo sur Internet, en incitant ses concitoyens à agir et en contactant ses élus.

Renseignez-vous sur ce dangereux accord sur http://lqdn.fr/acta.

NON à ACTA (version longue)

Un grand merci à Benoît Musereau pour la réalisation de ces films.

Pour savoir comment agir contre ACTA maintenant, rendez vous sur notre wiki.


Vous pouvez ajouter cette vidéo à votre site, faites un simple copier/coller du code HTML suivant :

<iframe src="http://mediakit.laquadrature.net/embed/716?size=medium&sub=fr_FR" 
style="width: 640px; height: 500px; border: 0; overflow: hidden" scrolling="no" frameborder="0"></iframe>

Vous pouvez également partager cette vidéo sur YouTube : http://www.youtube.com/watch?v=citzRjwk-sQ
et sur Dailymotion : http://www.dailymotion.com/video/xlz8g0_say-no-to-acta_news


NON à ACTA (version Menace sur Internet)

Nous avons également préparé une version se concentrant sur les menaces que fait peser ACTA sur les libertés dans la sphère numérique :


Vous pouvez ajouter cette vidéo à votre site, faites un simple copier/coller du code HTML suivant :

<iframe src="http://mediakit.laquadrature.net/embed/717?size=medium&sub=fr_FR" 
style="width: 640px; height: 500px; border: 0; overflow: hidden" scrolling="no" frameborder="0"></iframe>

Vous pouvez également partager cette vidéo sur YouTube : http://www.youtube.com/watch?v=My4c82IxM94
et sur Dailymotion : http://www.dailymotion.com/video/xlz8gq_say-no-to-acta-internet_news


NON à ACTA (version Dangers des brevets pour l'accès aux soins et le droit à l'alimentation.)

Nous avons également préparé une version se concentrant sur les dangers d'ACTA pour l'accès aux soins et le droit à l'alimentation :


Vous pouvez ajouter cette vidéo à votre site, faites un simple copier/coller du code HTML suivant :

<iframe src="http://mediakit.laquadrature.net/embed/718?size=medium&sub=fr_FR" 
style="width: 640px; height: 500px; border: 0; overflow: hidden" scrolling="no" frameborder="0"></iframe>

Vous pouvez également partager cette vidéo sur YouTube : http://www.youtube.com/watch?v=_xewEFJ6y_Q
et sur Dailymotion : http://www.dailymotion.com/video/xlz8h6_say-no-to-acta-patents_news

via iPhoneSoft de <a href="/redacteur/medhi"><img width="50" src="/images/redacteurs/medhi.gif" title="voir les articles de Medhi Naitmazi" alt="Medhi Naitmazi"/></a> le 02/11/11

Actualité iPhoneEtrange question n'est ce pas ?

Mais ceci n'est pas une blague puisqu'un iPhone contenant un tas d'applications, de vidéos, de musiques ou autres, est plus lourd qu'un iPhone dont la mémoire est vide.

Evidemment cela vous semble farfelu, tout comme l'est le résultat de l'étude de l'...

via Les dernières actualités de Futura-Sciences de webmaster@futura-sciences.com (Futura-Sciences) le 02/11/11
La constante de structure fine, exprimée avec des constantes fondamentales de l'électrodynamique quantique, changerait non seulement dans le temps mais aussi dans l'espace, selon une nouvelle étude de chercheurs étudiant la lumière des quasars avec le VLT de l'ESO. Si ces observations se confirmaient, il s'agirait d'une fenêtre sur une nouvelle physique.
Revoilà le serpent de mer de la variation de la constante de structure fine... Ce n'est pas la première fois que Michael...

via Blog MTI de Tibor Vass le 25/10/11

Golang mascot

Go est un tout nouveau langage de programmation compilé, impératif, concurrent et avec un garbage collector. Il s'agit d'un projet open-source conçu par trois grands ingénieurs de Google : Robert Griesemer, Rob Pike et Ken Thompson (co-créateur du système UNIX et du langage B précurseur du C). La renommée de ces personnes a attiré l'attention des développeurs passionnés. Outre le fait que Go soit simple et rapide, il a été conçu pour être également moderne et très productif sans qu'il soit orienté objet, sans qu'il n'ait la notion d'hérédité, sans l'usage d'exceptions comme on peut en avoir l'habitude. En bref, de grandes têtes se sont penchées sur les problématiques de la programmation et ont planché pour essayer de trouver la solution à un maximum de compromis. Cet article reprend certaines notions de programmation qui ont été partiellement ou complètement repensées lors de la conception du langage Go. Si vous cherchez un tutoriel pour Go, je vous invite à lire le tutoriel du site officiel.

Besoin d'une meilleure productivité

Les langages dynamiques tels que Python, Ruby, etc. ont eu un essor considérable durant cette dernière décennie, dû essentiellement à un manque de productivité avec les langages plus statiques que sont C++ et Java qui demandent trop de travail répétitif pouvant être évité. Go essaie de remédier à ces problèmes en mariant la simplicité de Python et le typage fort de C++. Le langage a une grammaire facile à parser, ce qui optimise considérablement le temps de compilation. Au niveau du temps d’exécution, il a pour objectif d’être quasiment aussi rapide que du C. La version actuelle du compilateur 6g/8g/5g ne comporte pour l’instant pas d’optimisations, mais GCC 4.6, bien que plus lent pour la compilation, génère des binaires optimisées. Aussi, pour régler le problème des dépendances entre les fichiers, un système de packaging est utilisé, amplement inspiré par celui de Python. Enfin, les créateurs du langage ont adopté la philosophie de l’explicite (pas de conversions implicites entre types compatibles, pas de surcharges, gestion d’erreur par code de retour, etc.). Il existe néanmoins une puissante exception comme on pourra le voir avec les interfaces. Bien que cette philosophie de l’explicite peut paraître parfois contradictoire avec la productivité, l’argument principal est de dire qu’un code explicite est plus clair et plus simple à débugger.

La syntaxe

Go fait partie de la famille dite curly bracket programming languages, c’est-à-dire avec une syntaxe dérivée du C/C++. Les accolades et les commentaires sont pratiquement le seul point commun. Voici quelques changements syntagmatiques (liste non-exhaustive) :

- point-virgule ; optionnel (utilisé pour séparer les instructions d'une même ligne dans un for par exemple)
- pas de parenthèses dans un if, for, ou switch.
- saut de ligne interdit avant l’ouverture d’une accolade (lors d’un if par exemple) pour faciliter la tâche du compilateur
- tout en UTF-8 (on peut donc écrire var α = "άλφα")
Note: Deux créateurs de Go, Ken Thompson et Rob Pike, ont grandement participé à l’élaboration de cet encodage
- syntaxe de déclaration inversée par rapport à C/C++

Il existe encore d’autres différences, nous allons voir dans la partie suivante la syntaxe des fonctions et des méthodes, mais pour plus d’informations vous pouvez consulter cette liste exhaustive et détaillée. Expliquons néanmoins le dernier point, celui de la syntaxe de déclaration inversée. Go :

var (
    i int                  // i est un entier
    a [10]string           // a est un tableau de 10 chaînes de caractères
    p *int                 // p est un pointeur sur un entier (mais pas d'arithmétique)
    x func (f float) int   // x est une fonction qui prend un nombre flottant et renvoie un entier
)

Note: n'ayant pas la possibilité de surligner les mot-clés propres à Go, un surlignage C++ a été utilisé.

C++:

int i;
const std::string a[10];
int *p;
int (*x)(float f);

En Go, le type se place après le nom de la variable, ce qui permet d'être plus facilement interprétable au premier coup d'œil, contrairement au C++ (voir commentaires dans le code). En somme, la syntaxe a été grandement simplifiée et allégée.

Structures et Interfaces

Cette partie est un des piliers de cet article. Elle a pour but de montrer que la programmation orientée objet n'est pas l'unique façon de programmer et qu'en Go, bien qu'il soit possible d'imiter l'OOP, l'usage des interfaces est très efficace et moins coûteux en temps de développement.

Orthogonalité: séparation données/méthodes

L'une des grandes révolutions de l'OOP était l'encapsulation, dont l'un des aspects est le regroupement de données et de fonctions dans une même structure que l'on a rebaptisée en classe. Les concepteurs de Go ont choisi de généraliser les méthodes à des objets qui peuvent ou non être des structures. Voici un exemple complet qui compile :

package main
 
type A struct {
    s string
}
 
type B string // ceci n'est pas un alias, B ≠ string même si B et string sont isomorphes
 
func (a A) Méthode() string {
    return "Méthode appelée sur " + a.s
}
 
func (b B) Méthode() string {
    return "Méthode appelée sur " + string(b) // conversion explicite (un principe de Go)
}
 
func main() {
    var a = A{"a"} // initialisation de structure
    var b = B("b")
    println(a.Méthode()) // affiche "Méthode appelée sur a"
    println(b.Méthode()) // affiche "Méthode appelée sur b"
}

En Go, on prône l'orthogonalité entre les données et leur comportement (les méthodes). Ceci est largement exploité grâce aux interfaces "à la Go".

Interfaces

Les interfaces constituent un type à part entière, qui regroupe des définitions de méthodes, à l'instar d'une structure qui regroupe des définitions de types de données. Voici un exemple :

type Sortable interface {
    Len() int
    Less(i, j int) bool
    Swap(i, j int)
}
 
// Exercice laissé au lecteur : comment s'appelle cet algorithme de tri?
func Sort(data Sortable) {
    for i := 1, i < data.Len(); i++ {
        for j := i; j > 0 &#038;&#038; data.Less(j, j-1); j-- {
            data.Swap(j, j-1)
        }
    }
}
 
type IntArray []int
 
func (p IntArray) Len() int { return len(p) }
func (p IntArray) Less(i, j int) bool { return p[i] < [j] }
func (p IntArray) Swap(i, j int) { p[i], p[j] = p[j], p[i] }

A présent, il est possible d'utiliser la fonction de tri Sort sur une instance de IntArray. Si IntArray n'implémentait pas Sortable, on aurait une erreur de compilation dès lors que l'on passe un IntArray à la fonction Sort. Notez qu'à aucun moment il a été précisé que IntArray devait implémenter Sortable; le simple fait de l'implémenter suffit. Cela est un gain de temps en maintenance de code, et c'est très appréciable.

Visibilité

Un petit entracte sur la visibilité : en C++/Java, il existe les mots-clés privateprotected et public pour spécifier la visibilité dans les classes. En Go, fonctionnant avec un système de package, le problème a été résolu radicalement et simplement. Tout ce qui commence par une minuscule reste internet au package, et inversement, tout ce qui commence par une majuscule est exporté et peut être utilisé par le client. C'est très pratique dans la mesure où il n'y a pas à spécifier à chaque ligne la visibilité ou à remonter dans le code pour voir dans quel bloc de visibilité on se trouve ; un simple coup d'œil sur la casse suffit.

package toto
 
type S struct {		// publique
    i int		// privé
    I int		// public
}
 
type f float		// privé
 
func (s *S) M() {}	// publique
func (s *S) m() {}	// privé

Pas d'hérédité

En Go, les types sont et existent. Il n'y a absolument aucune notion de hiérarchie entre types. Par conséquence pas de notion d'hérédité. Cependant, l'avantage du recyclage de code qu'apporte l'hérédité a été gardé avec la notion d'encastrement (embedding en anglais). L'encastrement peut s'opérer aussi bien entre structures qu'entre interfaces, mais pas entre structure et interface (cela violerait le système de typage de Go).

Exemple :

type Reader interface {
    Read()
}
 
type Writer interface {
    Write()
}
 
type ReadWriter interface {
    Reader
    Writer
}

On précise que l'interface ReadWriter possède les mêmes méthodes que Reader et Writer. De même, on peut l'utiliser pour les structures :

type Reader struct {
    // tous les champs nécessaires pour un objet Reader
}
 
type Writer struct {
    // tous les champs nécessaires pour un objet Writer
}
 
type ReadWriter struct {
    Reader
    Writer
}

Comme on peut le constater, avec l'encastrement il est possible d'encastrer plusieurs structures (ce serait l'équivalent d'un héritage multiple). Il est important de noter que la vraie différence entre l'héritage et l'encastrement est le fait que la structure qui encastre n'a aucune relation avec le type encastré. Il est cependant possible d'imiter l'héritage, car l'encastrement n'est qu'une généralisation.

Pas de polymorphisme (mais bientôt généricité?)

Strictement parlant, il n'y a pas de polymorphisme en Go, car une fonction est déterminée uniquement par son nom, et non pas par son nom et le type de ses arguments. Cela force le programmeur à faire un effort lors du nommage de ses fonctions (ainsi que des interfaces et des structures). Ce problème a été souvent discuté sur la mailing-list Go-nuts, et la conclusion est la suivante : s'il y a un conflit de nommage qui ne peut être résolu (c'est-à-dire qu'un autre nom ne serait pas approprié à aucune des entités en conflit), c'est que forcément les entités en question ne devraient pas être dans le même package (elle ne représentent pas la même chose). Ce problème est très peu gênant en pratique, c'est pourquoi il a été décidé de mettre de côté le polymorphisme pour accélérer davantage le temps de compilation.

La généricité (ou templates) demeure un sujet ouvert. A l'heure actuelle, il n'y a pas de généricité, ce qui provoque une redondance de code même dans la bibliothèque standard de Go. Le problème n'est pas simple, le bon compromis est difficile à trouver, mais pour l'instant la communauté s'en sort sans. Il est cependant intéressant de noter les différentes propositions sur la mailing list Go-nuts, en voici une.

La première partie de cet article s'achève. Dans la seconde partie, nous verrons la gestion d'erreur, la concurrence (un autre pilier de Go) et enfin une conclusion.

A suivre...

via www.lemonde.fr le 02/11/11
JeanYann:
 
les cellules senescentes peuvent être programmées en cellule souches pluripotentes : c chanmé trop cool

Le Monde.fr - Des chercheurs français ont réussi à redonner leur jeunesse à des cellules de donneurs âgés de plus de 100 ans, en les reprogrammant au stade de cellules souches, démontrant ainsi que le processus du vieillissement est réversible.

via Clapico's Blog de Claude Picot le 31/10/11

Mark Shuttleworth, le fondateur de Canonical devrait annoncer  à l’Ubuntu Developer Summit d’Orlando en Floride (Du 31 octobre au 4 novembre 2011) l’arrivée prochaine d’Ubuntu sur tablettes, smartphones et smartTV.

En effet, une fois la version 12.04 achevée et stable, Canonical souhaite étendre sa distribution à tous les appareils informatiques.

Shuttleworth a déclaré: «Ceci est la suite naturelle naturelle d’Ubuntu en tant que distribution Linux pour les êtres humains. Puisque les gens sont passés des ordinateurs traditionnels à une nouvelle forme d’informatique, il est important pour nous de rejoindre ces plateformes. Nous allons donc relever le défi de l’utilisation d’Ubuntu sur les smartphones, tablettes et smart-TV.  »

Mark Shuttleworth espère donc une distribution opérationnelle et disponible sur tout type d’appareil pour avril 2014 avec l’arrivée d’Ubuntu 14.04. Il n’existe pas encore de version Alpha et à priori la date de sortie de cette première Alpha n’est pas encore connue même si Canonical travaille d’ores et déjà avec des fabricants de matériel capables de mettre de nouveaux produits sur le marché.

Unity devrait alors jouer un rôle clé dans les plans de Canonical pour apporter l’expérience des utilisateurs d’Ubuntu sur de petits écrans.

On va bien s’amuser…

Source : ZDNet

Billets reliés