Geek : Probablement la catégorie la plus consultée de ce blog, car le mot Geek ne cesse d'intriguer et de faire parler de lui. Je ne fais pas de veille, j'essaie simplement de vous faire passer quelques connaissances sur les logiciels libres, les astuces, et la philosophie GNU.

Installer Linux, faire du C, la nouvelle école buissonnière ?

Notman photographic Archives - McCord Museum
Notman photographic Archives - McCord Museum

J'entends autour de moi, assez régulièrement, des connaissances qui me disent : "Tiens, j'ai essayé Linux !" ou "Je me suis mis au C".
Chaque fois je peux constater :

  • Qu'il ne font pas d'études en informatique
  • L'initiative vient de l'une de leur connaissances, mais rarement de l'école.

Mais alors, c'est donc ça l'école buissonnière de la Génération Y ?

Oui, Code::Block a remplacé la canne à pêche et le Site Du Zéro, la rivière !
En allant "faire l'école buissonnière", l'enfant veut rencontrer l'interdit, et plus précisément l'inconnu (termes sémantiquement proches : l'inconnu est souvent interdit, car il est inconnu. L'interdit est souvent inconnu, car il est interdit...). Ici l'inconnu, ce n'est pas la rivière, c'est les machines qui sont si présentes autour de nous, comme l'était la pêche au 20ème siècle. Il faut donc essayer de savoir ce qui se cache derrière ces machines...

Ma réflexion ne porte pas sur le sens premier de cette école. Bien sûr, la comparaison est jolie : on aime imaginer ces apprentis hackers (ce n'est pas péjoratif !) avec une canne a pèche à la main, mais cela nous pousserait à croire qu'ils ne vont pas en cours ! Ce qui n'est bien évidemment pas le cas pour la plupart.

Un sens ancien de l'expression "école buissonnière" désignait les écoles clandestines mises en places par l’Église Réformiste, à l'époque où tous les lieux d'enseignement de Paris étaient dirigés par l’Église Catholique Romaine. 1.
L'école buissonnière de la Génération Y est donc une sorte d'autre école qui permettrait aux jeunes de comprendre les mécanismes énigmatiques de l'informatique car les ordinateurs sont souvent verrouillés et parfaitement stériles, il est tout à fait possible d'utiliser un ordinateur sans en comprendre le fonctionnement, comme il est tout à fait possible d'aller voir une exposition de peinture sans rien connaitre à cet art ancestrale. Mais dans les deux cas, le brin de curiosité de chacun va les pousser en savoir plus...

Le C, Linux et la Joconde font peut être parti de la culture de notre belle Génération Y, qui sait ?

Les réseaux sociaux virtuels sont-ils un atout ou un danger pour la société actuelle ?

Alors que 78% des internautes Français se déclarent membres d'au moins un réseau social, on peut se demander si les réseaux virtuels sont bénéfiques ou dangereux pour notre société. Par bénéfiques, nous entendons les apports positifs pour la société en l'aidant dans son développement ; par dangereux, nous parlerons des orientations néfastes pour la société.
Nous verrons d'abord comment les utilisateurs tirent parti de ces réseaux, puis nous analyserons les problèmes posés par leur utilisation.

Il y a quelques années, des critiques avaient annoncé l'arrivée massive des personnes de plus de 35 ans sur Facebook, qui était, jusque là majoritairement utilisé par des plus jeunes. Ces critiques avaient prédit le départ des adolescents, en voyant leurs parents, voir grand-parents, arriver sur le réseau. Nous pouvons maintenant affirmer que ces nouvelles inscriptions n'ont pas nui à son développement. Bien au contraire, elles n'ont fait que renforcer l'universalité du réseau et en populariser l'utilisation au sein des familles. En 2009, le nombre de 50-60 ans sur le réseau a augmenté de 120%, mais les 18-24 ans sont toujours la tranche d'âge la plus représentée avec 30% d' utilisateurs. Les réseaux sociaux existent depuis la préhistoire. Ils ne sont qu'un cas particulier de la solidarité organique, c'est-à-dire l'interdépendance basée sur les différences entre les individus. Les réseaux sociaux (virtuels ou non) se forment entre des personnes autour d'intérêts communs. Sur Internet, la hiérarchie sociale tend à disparaître, cela peut s'expliquer par l'anonymat. Le vouvoiement en est l'un des témoins. Ces mœurs permettent donc une communication bidirectionnelle : par exemple, si on veut que notre publicité soit visible, il faut que l'on apporte quelque chose aux autres ou même rendre leurs publicités visibles. Les entreprises l'ont bien compris avec la formation d'animateurs de communautés qu'elles payent pour qu'ils donnent une image positive de l'entreprise sur les réseaux sociaux virtuels. Ils n'hésitent pas à utiliser l'humour lors de conversation avec les internautes pour donner aux consommateurs une impression de proximité. C'est bénéfique pour la notoriété de l'entreprise, mais aussi pour l'utilisateur qui peut, à la manière d'un centre d'assistance, trouver les réponses à ses questions.

Il est courant de penser qu'Internet ne permet la promotion que de grandes enseignes, mais les réseaux sociaux sont en vérité un formidable outil d'autopromotion qui permet à quiconque de se faire connaitre : Myspace ou Jamendo permettent de faire la promotion de son groupe de musique. Le premier exemple qui nous vient à l'esprit est celui de La Chanson du Dimanche qui a acquis une renommé national grâce à Myspace et leur blog.

À la manière d'un arbre relationnel, la diffusion des informations sur les réseaux sociaux se fait en majorité par les connaissances. De plus, les différentes fonctions de filtrages, qui limitent les informations diffusées à certains membres sélectionnés, rendent le cercle de lecteurs limité (les internautes déclarent à 33% ne partager leurs informations personnelles qu'avec leurs contacts). Alors que les informations des blogs ont vocation à être diffusées largement car la diffusion se fait par l'intermédiaire des moteurs de recherches et du contenu. Ces nouveaux modes de diffusion permettent la transmission rapide d'informations, ce que l'on appelle l'actualité en temps réel.

Je suis blogger depuis deux ans. Je me suis efforcé de ne jamais parler de ma vie privé sur mon blog car j'ai toujours pensé qu'elle n'intéresserait personne. Un jour, un Internaut m'a contacté, après plusieurs échanges de courriels afin que je l'appelle. J'ai pris soin de masquer mon numéro et nous avons parlé de mon article et de ses différentes recherches. Lorsqu'il m'a demandé ma profession, j'ai répondu sans réfléchir « Je suis un blogger passionné d'informatique » sans indiquer que je suis étudiant. Il se pose ici le problème de la diffusion de ses informations personnelles, problème commun aux blogs et aux réseaux sociaux. Il s'agit, à la manière d'une ligne éditoriale de journal, de fixer les limites de son identité sur Internet. Certains Internautes vont même jusqu'à se forger deux identités numériques pour pouvoir conserver leur liberté d'expression tout en continuant à garder une identité politiquement correctesur Internet (principe d'autocensure).

Yoani Sánchez a été considéré en 2008 par le Time, comme l'une des 100 personnes les plus influentes au monde. C'est une bloggeuse Cubaine qui décrit le quotidien à la Havane (http://desdecuba.com/generaciony_fr) et communique avec le reste du monde par Twitter. Nous nous souvenons aussi, en 2009, de la « révolution Twitter » qui a suivi les élections contestées de M. Ahmadinejad en Iran. Le réseau a servi à l'organisation des manifestations. Bien que Twitter n'ait rien résolu, il a permit d'interpeller la communauté internationale. Dans ces deux exemples les services de microblogging ont été utilisés car, grâce à leurs multiples noms de domaines, ils ont été impossibles à censurer.

Dans cette seconde partie, nous allons essayer de réfléchir sur les problèmes posés par l'utilisation des réseaux sociaux. Dans un premier temps nous allons nous concentrer sur les problèmes liés à l'atteinte à la personne et la cyber-réputation, puis, dans un second temps, les conséquence de sa diffusion à des tiers.

Nous avons parlé de la possibilité pour un internaute de se forger deux identités sur Internet : une du paraitre, et une du transparaître. Il peut être assez aisé de contrôler son identité sur son propre blog, ou le blog d'un ami. Il m'est arrivé quelquefois de demander la suppression d'une citation ou d'une photo de moi sur les blogs d'une connaissance . Mais cela se complexifie à mesure que le réseau s'étend. Il est possible de contrôler ses écrits, mais il devient difficile de contrôler les écrits des autres. Nous avons donc un problème d'augmentation de la rapidité de diffusion des informations qui peut déboucher sur une perte de contrôle de données pouvant être compromettantes.

La partie cachée du problème de vie privée posé par les réseaux sociaux virtuels est la diffusion de ses informations à des tiers. En imaginant que nous arrivions à contrôler parfaitement les informations diffusées à nos amis. Il se pose le problème des informations diffusées à des tiers. Ainsi lorsque nous pensons avoir « sécurisé » notre compte en activant les fonctions de filtrage intégrées dans la plupart des réseaux sociaux. Nous ne pensons pas immédiatement que nos informations peuvent être exploitées par le réseau social lui même : l'organisation lucrative ou non qui administre les serveurs du réseau social. Dès l'instant où une information est entrée sur un réseau social, elle est rendu disponible aux cercles restreints des concepteurs du réseau. La politique de confidentialité des réseaux, peut rendre les informations disponibles sur une échelle allant de la simple utilisation à des fins de maintenances, à la mise à disposition à des tiers : des éditeurs d'application, voir des régies de publicités ciblées. Certains réseaux sociaux deviennent donc un enjeu commercial. Suivant la politique de confidentialité, ils peuvent être en droit de revendre nos informations personnelles ou nos photos.

L'entreprise SocialMedia a signé un partenariat avec Twitter qui l'autorise à utiliser n'importe quel tweet (message posté par les utilisateurs de Twitter) à des fins publicitaires En somme, pour paraphraser une journaliste du New York Time : « ne twittez rien que vous ne voudriez pas voir écrit sur les panneaux publicitaire du Times Square ».

En un clic nous pouvons nous rendre invisibles, et inatteignables pour certains. L'action est beaucoup plus simple et indolore que de changer de rayon dans un supermarché. Les réseaux sociaux facilitent donc le rapport technique entre les individus : les relations n'existent pas par affinité, mais par utilité. Ainsi, nous pouvons émettre un questionnement quant à la sincérité des relations numériques.

Il existe une raison pour laquelle les réseaux sociaux se sont développés aussi vite. Cette explication peut nous sembler empirique mais elle nous est donnée par le fondateur de Facebook lui-même : D'après lui, il existe un nombre calculable « d'instants ah !ah ! » après lesquels l'utilisateur deviendrait dépendant de Facebook. Ces instants peuvent arriver lorsque l'on voit des photos de ses proches. C'est ce qui pousse les internautes à s'inscrire sur ces réseaux. Lorsqu'ils reçoivent les courriels maintenant bien connus : « Regarde mon profil Facebook » contenant l'encart « D'autres personnes que vous connaissez peut-être sur Facebook ?» calculé statistiquement et qui listent dans la plupart des cas des personnes que vous affectionnez : une méthode de persuasion qui fonctionne.

Le problème de perte de contrôle des informations est, certes amplifié par la rapidité d'Internet et des réseaux sociaux virtuels, mais ils ne leur sont pas propres. Les rumeurs ont toujours existé, et vont probablement continuer. Dans le cas où les informations diffusées s'avèreraient vraies nous devons nous poser la question sur leur origine. Car, que ce soit dans le monde virtuel ou réel, tout fini par se savoir.

Internet facilite une sorte de rapport technique, mais la disparition de la hiérarchie sociale sur les réseaux sociaux virtuels, exclue la possibilité de domination durable entre deux individus.

Les réseaux sociaux ne sont que des communautés telles que nous les connaissons depuis loi du 21 août 1790, ils sont comparables à des associations. Dès 1995, Robert D. Putnam, un politologue, a décrit que les Américains étaient de moins en moins membres d'organisations sociales. Or depuis cette même date, ils sont de plus en plus présents sur les réseaux sociaux. Sur Internet, les appels aux dons fonctionnent très bien, et les réseaux sociaux sont des outils formidables pour organiser un événement.

Finalement, la valeur d'un réseau social ne provient que des utilisateurs qui le composent. Selon Robert Metcalfe, un acteur majeur dans le développement d'Internet, et sa loi éponyme : « L’utilité d’un réseau est proportionnelle au carré du nombre de ses utilisateurs. ». Cette affirmation a deux conséquences : elle explique pourquoi, malgré la revente d'informations personnelles par les grands réseaux (pourtant spécifiée dans les contrats d'utilisation), les internautes restent inscrits. Mais elle explique aussi, par extension, que les réseaux sociaux sont le miroir de notre société. Ils sont un outil de communication supplémentaire, comprenant bien des défauts, mais aussi des qualités favorisant les rencontres, les contacts avec ses amis ou sa famille, le suivi des informations en temps réel, l'organisation d'évènements. Tous ces avantages rendent les réseaux sociaux utiles à notre société.

L'usurpation d'adresse email, un jeu d'enfant.

Ma mémoire ne me permet pas de vous dire à quel age j'ai réussi cette "prouesse" (a titre privé), mais je peux vous confirmer qu'un enfant de 12 ans en est capable. Pour peu qu'il sache lire une doc. L'idée de cet article n'est pas de vous apprendre à finir en prison, de toute façon il suffit de savoir lire une doc, mais simplement de réfléchir sur la sécurité d'Internet.

Explications :

Explication sur les serveurs SMTP, POP et IMAP

Ici note amis CLIENT2 croit qu'il a un message de Mickey Mouse. Il a tort pour deux raisons : Les emails de Mickey Mouse ne sont réceptionnables qu'avec le protocole IPOT, ou en vous rendant à Mickeyville. De plus, les serveurs SMTP, et POP ne vérifient pas l'adresse de l'émetteur. Car, comme on peut le voir sur l'infographie (j'utilise le mot infographie : il parait que "ça fait bien", mais c'est "un schéma" en fait !), il n'y a aucun lien entre les serveurs POP/IMAP de chaque fournisseur de boite mail. Donc aucun moyen pour eux de vérifier si l'adresse c'est bien un abonné mariobross.net qui a envoyé l'adresse, ni même si elle existe.
Voilà d'où vient le problème !

Des solutions ?

La solution principal est : la signature numérique. Il y a pas mal d'explications sur Internet, rien de bien compliqué. Depuis 2000, elles ont autant de valeur que les "lettres papiers" non recommandées, rien de plus !
Notez que, juridiquement, les courriels non signés ne constituent pas des preuves irréfutables (et heureusement), mais il sont déjà utilisés comme "début de preuve".

Faut-il corriger le problème ?

Bien sûr, comme tous les problèmes ! Si nous vérifions auprès du serveur de réception (POP/IMAP) l'existence de l'adresse email d'envoi, cela limiterait les SPAMs, car les adresses qui envoient des SPAMs n'existent pas réellement. Mais, à moins de nommer une agence de régulation des emails (qui ne serait ni possible, ni souhaitable), il resterait toujours la possibilité de faire passer ces fausses adresses pour des vraies, en créant son propre serveur de réception.

En somme, les emails ne sont, ni plus, ni moins sécurisés que les courriers papier. Les protéger donnerait une fausse impression de sécurité qui serait, dans tous les cas contournable, et ne laisserait plus aucun bénéfice du doute en cas de problème. Il existe le même problème pour les SMS, bien que moins évident à mettre en œuvre.

Pour terminer, il faudra encore de longues années avant qu'Internet finisse de faire passer les lettres papiers dans l'oubli. À part quelques recommandations de bon sens (ne pas communiquer vos données personnelles tout ça... tout ça).

Bonnes fêtes de fin d'année !

Une machine de Turing

Une machine de Turing est une représentation mathématique d'un ordinateur. Elle dispose d'un ruban (tape), sur lequel elle peut se déplacer vers la gauche ou vers la droite, lire et écrire un caractère.
Pour représenter les chiffres, cette machine utilise la base 1. Pour le chiffre 0, elle place un barre (1) sur le ruban, pour représenter le chiffre 2, elle en place 3...

Malgré sa simplicité, cette machine est capable de calculer toutes les fonctions récursives.

Petit exemple :

Un exemple très simple est la fonction Zéro. C'est une fonction constante, qui pour n'importe quel nombre renvoie 0. Rappelons-nous qu'avec notre machine le 0 s'écrit avec une barre (1).

Si nous prenons le ruban contenant le chiffre 4 :
11111000000000000
Nous devrions donc obtenir :
10000000000000000

Analysons le programme :
q0 1 D q1 # On conserve le 1er 1 : pour faire 0
q1 1 0 q2 # Suppression des 1 inutiles
q2 0 D q1

q1 0 0 q3 # Retour à la position initiale
q3 0 G q3

Une machine de Turing dispose d'un algorithme très simple, celui-ci a même été reproduit mécaniquement ou optiquement !
Une instruction se compose de 4 parties :
L'état initial, la condition, l'action et l'état final.
Par exemple pour la première : q0 1 D q1
Au début nous sommes toujours à l'état 0. Le premier élément du ruban est 1.
Notre machine va dont recherche un instruction commençant par q0 1, ensuite elle va exécuter l'instruction contenue dans la seconde partie de l'instruction.
Ici : D q1 : Elle doit donc avancer vers la Droite sur le ruban et passer à l'état q1.
Elle va maintenant recherche une instruction correspondante à l'état q1 et qui a comme condition l'élément courant du ruban : ici 1 et nous exécutons l'action 0 (remplacer l'élément courant du ruban par 0) et passer à l'état q2.

Pour résumer, les actions dont elle dispose sont :
G : Aller à gauche
D : Aller à droite
1 : Écrire un 1
0 : Écrire un 0
et parfois :
* : Écrire une * pour délimiter deux nombres par exemple

Une machine de Turing en Python :

Cette machine est capable de gérer un nombre infini d'état.

# -*- coding: utf-8 -*-
#
# uTuring
#
# Copyright (c) 2010 Amaury GRAILLAT
# Licensed under the GNU GPL license.
# See http://www.gnu.org/licenses/gpl.html
#               amoweb.fr 
#
# File exemple :
# # Zero function                              You can comment a line with #
# q0 1 0 q1       {Stat} {Condition} {Action (1, 0, *, L or R)} {Final stat}
# q1 0 D q0
# q0 0 1 q2
# 
# =1111000000000000000000:0                ={tape}:{Initial stat (optional)}
#

import os
INDD = 0 ; COND = 1 ; ACTN = 2 ; INDF = 3
ruban = [] ; instr = []
k = 0   # position sur le ruban
q = '0' # état

# Trouve l'instruction correspondant à la condition et 
def searchInstruction(q,k) :
	# print "searchInstruction(%s,%s)"%(q,k)
	for i in instr :
		if i[INDD] == q and i[COND] == ruban[k] :
			return i
	return [0,0,0,0]
	
def monospace(str) :
	str = str.replace("\t", " ");
	while str.count("  ") > 0 :
		str = str.replace("  ", " ");
	return str

if __name__ == '__main__' :
	print("Welcome to uTurning : ")

	# Charge le programme depuis le fichier :
	with open("program.txt") as program :
		for instruction in program :
			# Charge le ruban
			if instruction[0:1] == "=" :
				# Partie donnée
				for s in instruction :
					if s == ':' :
						break
					elif s != '\n' and s != '=' :
						ruban.append(s)
				# Position d'origine (facultative)
				if len(instruction.split(':')) > 1 :
					k = int(instruction.split(':')[1])
			# Fin du fichier :
			elif instruction[0:3] == "EOF" :
				break
			# Charge une instruction
			elif instruction != '\n' and instruction[0:1] != "#":
				instruction = monospace(instruction);
				if len(instruction.split(' ')) > 3 :
					qStrI = instruction.split(' ')[0]
					qStrF = instruction.split(' ')[3]
					instr.append([qStrI[1:len(qStrI)], instruction.split(' ')[1],
					instruction.split(' ')[2], qStrF[1:len(qStrF)-1]])
	# Exceptions :
	if len(ruban) == 0 :
		print "TAPE missing : example : =11100000:0"
		exit()
	if len(instr) == 0 :
		print "Instructions missing : example : q0 1 0 q2 "
		exit()

	# Exécution des instructions :
	curInst = searchInstruction(q, k)
	while curInst != [0,0,0,0] :
		# Affiche le ruban :
		print (''.join(ruban)) + " (q" + q + ")"
		print " "*k + "^"

		# Interprête les instructions :
		if curInst[ACTN] == 'D' or curInst[ACTN] == 'R' :
			k = k + 1
		elif curInst[ACTN] == 'G' or curInst[ACTN] == 'L':
			k = k - 1
		elif k < 0 :
			print "Warning ! Out of range : k = -1 ---> k = 0"
		else :
			ruban[k] = curInst[ACTN]

		# Nouvel état 
		q = curInst[INDF]

		curInst = searchInstruction(q, k)
# Affiche le ruban final :
print (''.join(ruban)) + " (q" + q + ")"
print " "*k + "^"

Et quelques exemples (à copier coller dans un fichier program.txt à coté du programme python) :

# Fonction successeur :
q0 1 D q0
q0 0 1 qa
qa 1 G qa
qa 0 D q2
=1111100000000000:0


EOF ----------------------------
# Couples d'entiers :
# Suppression :
q0 1 D q0
Q0 * * Q1
q1 * 0 q2
q1 1 0 q2
q2 0 D q1

Q1 0 0 Q3
Q3 0 G Q3
Q3 1 1 Q4
Q4 1 G Q4
Q4 0 D Q5

=111*1111000000000000000000

Un service de partage de Blocnote en ligne - Les Sources

Suite aux demandes de Tom et Lewo, je met aujourd'hui en ligne le code de mon Simple Black Board en Ajax (PHP et fichiers textes).
Il permet, par l'intermédiaire d'un lien unique de partager un texte et de permettre la modification et la visualisation des modifications en temps réel par les visiteurs.
Le code est largement inspiré d'un tutoriel du SdZ.

Demo
Télécharger sources (GNU GPL)

Plus d'infos sur Simple Black Board