Copyright © 2007 - Michel Rodriguez.
Et oui les p'tits gars (et filles), les compte-rendus sont de retour!
Après le tutorial sur vim l'an dernier, je reviens en deuxième semaine, euh, annèe. Au passage ces compte-rendus sont créés en vim, donc ils devraient être super bieng cette année. Sauf aujourd'hui vu qu'avec le décalage horaire je me suis réveillé à 1h du mat'. Bon, en fait je suis là pour écouter, et avec un peu de chance pour me rapeller 2/3 trucs dont je me servirai vraiment cette année. De l'an dernier j'ai vraiment utilisé t et f, utiliser les marques ou recherches dans des commandes (delete jusqu'à la marque a, ou jusqu'au prochain crochet ouvrant par example). Ah oui, et je me sers de perl comme langage de macro aussi, de temps en temps.
Le tutorial aurait du être fait par Damian Conway, qui n'est pas là. Ca doit causer de scripting avec vim.
Les slides sont disponibles: http://oualline.com/vim.talk
Il commence par nous expliquer comment creer une syntaxe. Amusant, mais pas vraiment ce qui m'intéresse le plus. C'est quand même bien futé: on définit les éléments syntaxiques
Il a un example excellent qui montre comment avoir des parenthèses imbriqués de couleurs différentes.
:syn
montre la syntaxe active.
Ahh!
q[a-z]<des commandes vim> q
bon, ca je savais dejà.
:reg [a-z]
montre ce qu'il y a dans la macro, et ça je le savais pas.
Pour faire mieux qu'une macro, on utilise map
.
Truc: dans les maps, il utilise i
, j
, k
, l
pour les flêches, ce qui marche dans tous les cas.
Il passe sur les differents modes de map, trop nombreux pour être cités.
:menu
permet d'ajouter une commande au menus, la syntaxe est pas vraiment évidente,
mais le résultat est sympa.
Les variables sont comme en Perl.
:let
pour assigner, :echo
pour afficher.
Honnêtement, pour l'instant je suis un peu déçu, Damian aurait certainement été plus vivant. Le problême avec un sujet comme ça, c'est que c'est pas trés excitant à la base. Il faut donc un très bon instructeur pour le rendre supportable pendant 3h. Là, au bout d'une heure, je décroche un peu. En plus les examples sont surtout sur de l'édition de code Java ou C.
Quelques trucs glanés de ci de là:
:set list
montre les "codes cachés", utile pour distinguer les tabs des espaces.
match <nom> /<regexp>/
montre ce que matche une regexp
Bon, à la pause je retrouve quelques habitués, Alex Martelli qui lit le dernier Harry Potter, sa femme Anna qui nous fait une crise parce qu'elle DETESTE Java, Scott Matthews qui a arrêté de fumer il y a exactement 51 semaines, en rentrant du dernier OSCON où il avait un peu abusé, Jay Pipes, encore un fois n'a pas d'hôtel vendredi soir... brèfle rien de neuf sous le soleil.
Je rate la première partie du tutorial, discussion sur le marché des bouquins Perl (pas terrible!) avec brian d foy et Peter Scott, qui vire a une explication des philosophie opérationelle des armées US et russes. Au moins ça c'est pas chiant.
J'arrive au moment où il nous rapelle d'utiliser vacuum
Dans certain cas il peut
aussi être nécessaire de reindexer certaines tables de temps en temps.
Pour avoir une bonne disponibilité, il recommande pitr (point in time recovery). Un peu compliqué à mettre en place, mais pas trop (d'après lui). Il recommende aussi slony pour faire de la réplication (duplication en français?). D'autres solutions, qu'il aime moins, non spécifiques à postgresql, sont d'avoir un disque partagé entre plusieurs machines, ou des filesystems dupliqués entre servers (avec zfs par example).
Au passage, un site avec plein de software qui a à voir avec postgresql: http://pgfoundry.org
Un peu de SQL maintenant:
Une fonction très utile en SQL, spécifique à postgresql: generate_series
,
qui pernet aussi de faire des séries temporelles.
Un petit truc pour faire l'equivalent d'un rownum
(ajoute un numero
sequentiel à une table) en oracle et rollup
(calcule un "running total"), en
utilisant des sub-select.
Pour analyser les requêtes il aime bieng pgfouine
(qu'il prononce assez bien ma foi),
http://pgfouine.projects.postgresql.org/, quelqu'un connait l'auteur, il est de Lyon?
Il existe aussi pqa
dans le même genre. Sinon pg_catalog.pg_stat_all_tables
est
une table qui donne des stats sur les opérations faites sur les tables. Par example ça
permet de trouver les index non utilisés.
Une fois une requête lente trouvée, explain analyze
(ou explain
si la requête est
trop grosse) permet d'aller plus loing (j'ai vu un tutorial la dessus il y a quelques
années si vous vous rapellez, et il a un talk là dessus, accessible à
http://www.postgresql.org/docs/techdocs.38)
Puis il nous parle des indexeurs plein textes: gist
et gin
. gist est plus
ancien, plus lent (mais plus rapide pour indexer), et gin est plus récent et plus
rapide.
Au final un cours un peu général, mais pas mal.
Bon, aprés ça je suis crevé, il pleut... donc je rentre à l'hotel essayer de récupérer du décalage horaire, donc pas d'activités nocturnes pour moi ce soir.
Bon, ça commence bieng, je suis en train de discuter depuis 5 mn dans la salle de mon tutorial quand je m'aperçois que je me suis trompé. Non je ne veux pas apprendre Ajax, merci. CGI::Ajax est à peu pr!s tout ce dont j'ai besoin.
Donc je me lève et fonce vers:
Ah, enfing un sujet rigolo qui nous changera d'hier. Je vais même essayer d'être attentif et de tout vous raconter en dètail.
Sauf bien sur que c'est orientè linux (ils distribuent un CD avec Ubuntu Live, version intel) et que je suis venu avec un mac. Un vieux powerpc (dont le clavier est à moitié effacé, ce qui explique pas mal de mes fautes de frappe). Donc pas d'exemples pratiques pour moi.
Les slides sont à mappinghacks.com/talks/oscon-2007
Donc ça va causer de cartographie et de GIS (Geographic Information Systems)
Il introduit le tutorial en disant que le but est de nous donner des pointeurs pour qu'on puisse trouver plus d'information quand on veut vraiment coder quequ'chose. Et non il ne parlera pas de Google Maps qui n'est pas open source.
Un site web important: www.osgeo.org
Il commence par se plaindre que la terre est chiante: elle irrégulière. De manière irregulière. C'est un ellipsoide.
Premier problème: projeter cet ellipsoide sur une surface plate, ce qui peut être fait de pleins de manière différentes, en préservant soit les distances, soit les surfaces, soit les angles. Il nous en liste quelques unes, vite (Schuyler parle très vite, ça va pas être facile aujourd'hui, heureusement j'ai quasiment récupérer du décalage horaire, je me suis réveillé a 2h 30 du mat).
Une projection utile: EPSG:4326 alias "Plate Carrée" (http://en.wikipedia.org/wiki/Plate_carr%C3%A9e_projection).
L'origine est toujours en bas a gauche. Longitude/Latitude sont x et y, et donc la plupart des systêmes prennent la longitude d'abord en paramètre).
Passons à la présentations de quelques projets utiles:
PROJ.4
: une librarie qui fait des conversions de coordonnés. L'outil proj
fait
ça depuis la ligne de commande.
2 types de modèles de données: raster, qui stocke les données dans des cases dans un tableau. L'autre modéle est vectoriel. "Raster is faster but vector is correcter"
Autres notions importantes: échelle, et "area of interest" (ne pas générer les données pour le monde entier si on veut juste son quartier).
Format de données GeoTiff (données stockées dans les entêtes du fichier tiff), GML (du XML, KML, le format de Google est basé sur un sous-ensemble de GML), d'autres dont je ne capte pas le nom.
Il nous montre ce qu'il y a sur le LiveCD, grrrr...
Maintenant une démo de Quantum GIS, un outil (avec GUI!) qui affiche des données cartographiques, en différentes projections http://www.qgis.org/. Démo sur les US. Cool, ça tourne sur mac aussi, je le charge. Ou non, 32MB sur le réseau de la conf à peu de chances de passer. la démo est pas mal. Il triture la carte, ajoute des layers, puis l'exporte comme image. Avant Il tripatouille le fichier qui stocke la carte, qui a un format texte assez simple, qui ne fait pas trop peur, donc on peut le lire et l'éditer à la main assez facilement.
Maintenant il nous montre une photo du monde entier. Il nous faut maintenant y ajouter des infos pour pouvoir s'en servir. Les paramètres de la projection suffisent en fait: 6 valeurs: la resolution (x et y), origine (x rt y) et "skew" (x et y) (non, je ne saisis pas ce qu'est le skew, j'étais en train de taper ce CR. il les ajoute... je rate comment. Et maintenant il peut charger l'image dans quantum GIS et la superposer à la carte des US qu'il nous a montré précédement. Sauf que ça ne marche pas du premier coup!
Bon, c'est la pause et donc je rate un bout à la reprise, désolé. Je causais avec quelqu'un de Fotango qui se désolait que leur nouveau projet super-cool qui devait être open-source ne le sera probablement pas, ce qui pourrait entrainer un exode massif des dévelopeurs de la boite.
Un site qui offre des données en Europe: http://www.openstreetmap.org/. le problème en dehors des US est que les données topographiques collectées par les gouvernements ne sont pas publiques. Elles sont revendues (cher!) aux fabricants de systêmes de navigation routiers par exemple.
Et maintenant... (roulements de tambours)
grass
est pour lui LE GIS open-source. C'est un ensemble de librairies et d'outils
qui permettent pleins d'opérations sur des fichiers de données. Quantum GIS peut
être utilisé comme GUI pour grass.
C'est pénible de ne pas pouvoir faire les manips, et il va falloir que j'attende de rentrer à la maison dans 1 mois pour pouvoir m'amuser avec tout ça.
Ceci dit grass
n'a pas l'air ultra facile à utiliser, en tout cas depuis la ligne
de commande comme il tente de le faire. Il passe donc à qgis
comme interface,
qui lui permet de ne pas trop patauger dans la démo. J'avoue que (malgrés mes promesses)
je ne suis plus trop, je regarde juste les jolis images. Il crée une carte du monde
avec la densité de population. Sympa.
Donc un bon tour d'horizon de ce qu'on peut faire. Pour moi le gros problème reste de trouver des données, surtout locales. Surtout vers chez moi.
Comment continuer à apprendre après l'école? D'abord pourquoi continuer à apprendre? Je passe sur les raisons. Alors comment? Premièrement il nous rapelle que au début, un truc nouveau n'est pas forcément agréable. Mais au bout d'un moment ça passe et ça va mieux.
Une remarque interessante de Bill Odom: <"si on est prêt à admettre qu'on ne sait pas quelque chose, les fois où on dit qu'on sait, les autres nous croient beaucoup plus">.
Il recommende de tenter des projets destinés à se planter, et l'open source est parfait pour ça. L'idée c'est de ne pas avoir de pression, et de retenir les leçons de ses échecs. Apprendre différents langages (informatiques) est aussi une bonne idèe.
Tiens, ça n's rien à voir: <http://use.perl.org/~Alias/journal/33874> est très cool!
Il nous chante un bout de "Communication Breakdown". "Don't be an asshole". Même si c'est amusant. Ou alors juste avec les copains (ou sur #perl). Quelques conversations email qui tournent mal. Toujours essayer de calmer les choses, c'est facile de mal se comprendre. Les emails sont assez rigolos. Le tutorial entier est rigolo.
En général les programeurs sont préoccuppés par comment faire quelque chose, mais le reste du monde, utilisateurs, chefs... plus préoccuppés par le résultat (bizarre!).
S'assoir avec les utilisateurs (qui ne sont pas des idiots d'après lui, je lui laisse la reponsabilité de cette déclaration pour le moins surprenante) pour comprendre comment ils se servent de nos projets.
Ils finit avant la pause en jouant a Guitar Hero (ou un truc comme ça), un jeu vidéo.
Schwern va créer une mailing liste sur le sujet, je vous ferai passer les infos quand elle sera active.
Pour documenter ses activités une idée: un wiki perso. Autres outils: utiliser un "bug tracker", Hiveminder, qu'il aime bien. Ilnous conseille aussi d'aller voir les talks de r0ml, dont j'ai oublié le vrai nom, et à un tutorial sur le "time management" qui à lieu... en ce moment. Raté!
Maintenant il nous cause de comment se sentir bieng: faire de l'exercice (il recommande DDR (http://en.wikipedia.org/wiki/Dance_Dance_Revolution)). Chacun dans la salle y va de sa petite idée: aller au boulot en vélo, a pied, marcher... (ben moi je vais au boulot à pied et pourtant je continue de prendre du poids, je comprends pas).
La peur: fear-based programing, je sais pas traduire bien, est pas terrible. Mais en tout cas, avoir toujours peur de faire des conneries au boulot ne conduit pas à être vraiment productif. La solution qu'il propose: TESTER (surprise connaissant Schwern!). Faire des petits changement, les tester et les documenter en même temps. Les tests doivent être automatiques.
Aussi important: version control. La grande question: quand faire un commit. Pour lui c'est chaque fois que les tests passent. Et en faire très souvent, avec 1 modif par commit. Un modif correspond à une idée. On peut y penser en terme de patchs: si quelqu'un doit relire le patch, si il y a plusieurs choses sans rapport dedans c'est plus compliqué. svk, darcs et autres permettent d'ailleurs de faire des comits departie d'une modif. Donc si en fixant un bug on corrige aussi une faute de frappe qui n'a rien a voir dans la doc, on peut faire 2 comits, même si les 2 changements ont été fait de manière emmélée. Quelqu'un dans la salle pose une question queje n'entends pas, et dans la discussion avoue qu'il utilse CVS. Schwern est désolé. Il aime bien svk par contre. Moi aussi, mais bon, je m'en sert d'une manière très limitée.
il nous montre aussi comment faire un peu de refactoring. Tiens, un site qui
doit en causer http://refactoring.com/
.
Finit. C'etait bien même si un peu général. Au moins c'était pas chiant.
Aprés les classes, la traditionelle réception de MySQL au bar du Doubletree, où après avoir écouté Jesse Vincent s'exciter sur Hiveminder (et raconter son marriage dans la Sagrada Familia (sans autorisation, ni même qu'il soit catholique) je me retrouve à une table de français (et un belge). Pas de perleursdans le lot. Je retourne donc à la conf, écouter Chris Nandor (pudge) nous pousser la chansonette, et voir dha remettre les White Camels à Allison Randall, Tim O'Reilly et d'après Eric (Cholet) Norbert Gruener (orthographe non garantie). Bon il se fait tard (pour moi), l'heure d'aller manger un burger avec Eric et Liz et d'aller finir ce compte-rendu.
Ca n'a rieng à voir, mais aujourd'hui j'ai récupéré (sans demander) 2 cartes de visites: "The Mad Theologian", une nana qui fait des exorcisme par internet, et une nana de Microsoft. J'ai peur!
Les photos d'oscon: http://www.flickr.com/search/?q=oscon2007&w=all&s=int
Ah oui, enfin, l'iPhone est vraiment répandu par ici, on s'en serait douté (toutes les photos de Casey West sont prises avec par exemple).
Nat dans sa magnifique chemise jaune ouvre. Il nous parle de l'extension des concepts open-source à d'autres domaines, comme la culture, le matériel, la démocracie, notre corps... Ces domaines sont traités dans un track à eux cette année: le track people (zut, je croyais que ça allait causer de Brad et Angelina).
Premier speaker: le O'Reilly de O'Reilly (si on peut lui pardonner l'invention du mot Web 2.0).
(en général c'est chiant, donc m'engueulez pas si le compte-rendu est bref et/ou pas trop passionant).
Il n'essaye pas de prédire le futur, juste de déchiffrer le présent pour euh, si je conprends bien prédire le futur... je dois >tre un peu lourd et manquer de la subtilité nécessaire pour comprendre la différence)
Donc il va causer de comment garder la liberté que nous donne l'open source dans un monde ou le software est un service, donc pas sur des machines qu'on contrôle. Même si on avait tous le code utilisé par Google on aurait probablement un peu de mal à s'en servir pour refaire Google.
Il annonce qu'il n'a pas de réponse à cette question
Est-ce que le congrés (américain en l'occurence) a besoin d'un version control system (c'est quoi en français déjà). Si on veut changer le gouvernement il nous faut changer les outils qu'il utilise.
Il nous cite quelques projets importants, trop vite pour que je les note tous: openID, le systême de bug tracking d'Ubuntu...
Maintenant les raisons du succés de l'Open Source: la possibilité de forker, qui en terme de Web 2.0 se traduit par la possibilité d'extraire ses données. Pour lui une autre raison et il n'y a pas que l'open source qui l'autorise, c'est la facilité pour les gens de participer au produit, de construire sur une plate-forme, par exemple IE ou Flickr ne sont pas open source mais on peut s'en servir comme base pour des dévelopement facilement.
Ca commence avec le directeur du marketing qui nous présente leur nouveau produit qui facilite la programation par thread. C'est du pur blah-blah marketing... "venez sur notre stand avec $299 et vous pourrez l'acheter aujourd'hui, et en plus on vous donne un livre gratuit"... donc le chief technologist linux à Intel monte sur scène et l'interrompt.Aapplaudissements. C'était pour rire. Il nous présente les projets d'Intel en OSS, tape un peu sur l'iPhone ("as proprietary as it comes")
Le gars du marketing revient, s'excuse pour sa cravate ("c'est incroyable comme ça rend les gens nerveux de ne voir comme ça"). Le produit est décrit à http://threadingbuildingblocks.orgI. C'est du C++, open-source, OS independant, tourne même sur PPC (testé sur un G5). La version libre est la même que la version payante, moins le support.
Un des créateurs de Haskell.
Il veut nous parler de paraléllisme encore. Il nous liste les problèmes de la programations avec des locks, nombreux et difficiles à résoudre.
La nouvelle idée, qui permet de résoudre ca, c'est la memory transactions: c'est inspiré par les BD: on marque certains blocks comme atomiques, et ils seront exécutés atomiquement. Les accés à la mémoire sont effectuées dans un bloc ;ocal, et sont loggés. A la fin du bloc, si tout va bieng le log est utilisé pour mettre à jour la mémoire principale. Si il y a un problème, l'exécution du bloc s'arrête, la mémoire principale n'est pas mise à jour. Dans ce cas le block sera ré-exécuté.Pour savoir quand, en tête du block on a des conditions. Si les données d'une des conditions changent elle est re-évaluée et si elle est vrai le block est re-exécuté. C'est facile à programmer, le compilateur à du boulot langage.
Si j'ai bien compris.
D'aprés lui ça scale très bien. Il a des benchmarks. On peut encore avoir des bugs, mais comme il dit: ça sera des bugs intéressant.
STM Haskell a ça haskell.org/ghc
Kool!
C'est gentil, mais rieng de bien révolutionaire. Il fait un peu de pub pour le launchpad d'Ubuntu, un systême qui consolide les bug trackings de pleins de projets open-source si je comprends bien.
C'est pas open-source, c'est commercial, mais on peu en extraire ses données.
Donc pour résumer les présentation d'Intel et Microsoft étaient vivantes, techniques et vraiment intéressantes, et celle du gars Open-Source un peu du vent... oh well...
Pas une présentation technique, mais plutôt sur les gens, leurs interactions etc...
Il commence par nous demander si on code d'abord ou si on teste d'abord. Bon, je suis dans la minorité qui avoue que je code d'abord et que je teste après. Pas toujours et pas longtemps après, mais en général aprés.Je crois pas que ça soit si grave docteur. Il nous montre le graphe du nombre de tests pour perl, et l'accroissement considérable entre 2000 et 2002.
Il nous présente "the Perl Parser": le programmeur. Assez primitif, pas trop de mémoire, mais parse et exécute (dans sa tête) le code en parallèle. Le code qu'on écrit doit pouvoir être parsé facilement par ce parser.
Les types de programmeurs (il me semble avoir déjà donné ces types, l'an dernier peut être? Est-ce que par hasard j'aurais déjà vi ce talk?) : le programmeur impatient, le chasseur de gloire (the Glory Hunter), le bon samaritain.
Un programme en Perl, même court, fait souvent beaucoup de chose, donc il faut le traiter comme un "gros" projet, et avoir la methodologie qui va bieng.
Il finit par quelques citations de MJD, Damian, chromatic, brian d foy... en vrac: "work on what you love", "au lieu de ramer pour résoudre un problème avec ce qu'on connait, pourquoi ne pas apprendre de nouveau outils, de nouvelles techniques d'abord, et résoudre le problème facilement", "patience", "essayer les choses pour voir si ça marche", "apprendre"...
Pas mal, un peu général. La salle était pas trop pleine.
And now for something completely different...
son titre est "Human Shield" pour la fondation Mozilla.
Il va parler vite parce que la présentation est longue... ça va être bien pour moi ;--(
Donc c'est une présentation pour les experts en sécurité, les designers graphiques, et les curieux qui veulent quelques infos sur où va Firefox (c'est moi).
Pourquoi cette présentation: Il commence par nous montrer quelques graphes du nombre de site qui tente de voler des mots de passes, ou de fishing. Beaucoup et ca monte. Et les UI pour contrer ça ne sont pas facile à faire: aujourd'hui c'est ou le petit cadenas, ou la grosse alerte avec un texte bien technique et incompréhensible pour l'utilisateur, qui finit par cliquer sur le bouton qui ignore l'alerte.
5 règles pour faire une UI (enanglais passque ça va vite):
= be available: les utilisateurs ne remarquent pas l'abscence d'un indicateur (le cadenas est un bon example)
Ca donne le merveilleux accronyme MRABB
Le cadenas:
Firefox, IE, Safari et Opera ont tous le cadenas pour les sites https, tous au même endroit. Mais du coup tous les sites ajoutent un cadenas sur leur page pour donner ne impression de sécurité, ce qui diminue l'impact du "vrai" cadenas affiché par le browser.
En plus le cadenas, celui du browser, ne veut dire qu'une chose: le site a acheté un certificat. Pas qu'il est sûr. En plus le cadenas n'apparaît que si le site a un certificat, pas quand le site n'en a pas. Il passe le cadenas au test MRABB. Pas terrible.
Donc que faire?
Un nouveau type de certificat ssl: EV, les infos de ce certificat sont mieux vérifiées. Voir http://cabforum.org/. Critiqué parce que ça semble aussi une manière pour les compagnies qui vende des certificats de faire plus de fric alors qu'elles auraient du faire ça depuis le début. Il explique cette situation par des raisons historiques (il était impossible pour Netscape par exemple de faire ça sans s'exposer à des risques légaux insupportables). Dans Firefox 3. les sites qui ont ce nouveau type de certificat seront identifiés par le symbole du douanier qui contrôle les passeport ("Larry")). Il sera possible d'afficher Larry (en grisé, avec des infos qui expliquent le statut du site) même si le site n'a pas le certificat. Le symbole du douanier semble plus précis que le cadenas. Ca passe mieux au test MRABB. Au moins c'est brave, parce que ne plus avoir le cadenas n'est pas une décision facile à prendre.
Une attaque possible est d'avoir le méchant site afficher lui-même une fenêtre qui ressemble à Larry.
Sinon dans Firefox 3.0 les sites de malwate connus ne seront même pas chargés. Il veut aussi se débarasser de l'alerte qui dit "Secutity Warning: le site est OK". Ca n'apporte rieng.
Pour après, un mode "private browsing", qui laisse le moins de trace possible, à la fois sur l'ordinateur du browser et sur les sites eux-mêmes.
Il aime bien l'extension dont j'ai oublié le nom qui change la location bar, en mettant en valeur le domaine (je l'aime pas, c'est pas beau).
Améliorer la sécurité aussi passe par l'éducation des utilisateurs, mais ça n'est pas facile.
D'autres idées (vite, on approche de la fn et il débite): Safe browsing whitelist, browser lock down, page security scoring, personnaly identifiable information bar, identity identificator in primary chrome, utiliser les social networks.
Intéressant.
Ca va beaucoup trop vite, et j'ai trop mangé à midi, pour vous raconter tout.
Donc juste quelques pointeurs sur des outils/librairies utiles: Jemplate (compile des templates TT2 en javascript, sur CPAN), jquery (librairie javascript, jquery.com).
Il nous liste les nouveautés dans le langage (du moins dans les specs!).
En vrac (ça va vite!):
.print
par exemple
@list min
, mais aussi $min_val min= $val
$file ~~ r { say "Can't read"}
et du coup on peut avoir ~~ r | w
<a b> X-X <1 2>
choose
(les conditions dont dépend l'exécution du block)
s'appelle maybe
en Perl
s[foo]='bar';
Et oui, il faut bieng faire un peu de javascript hein?
Le gars bosse pour Plaxo qui fait du pim webifié super Ajaxifié machin, connectant tout (mais pas n'importe quoi).
Le projet à l'air super cool, mais il nous dit qu'il a failli être annulé, parce que c'était trop lent. Ils se sont super éclaté à écrire la première version, mais elle ramait vraiment beaucoup. Au printemps 2006 ils avaient le produit, et 1 an plus tard ils l'avaient bien accéléré... mais toujours pas assez. En juin 2007 finalement ils ont pu le publier.
Donc pourquoi, comment, et que faire pour éviter cette situation.
D'abord ils ne se sont préoccupé des performances que trop tard. En plus avoir une appli rapide et avoir une appli qui semble rapide n'est pas pareil.
Donc: au départ ils ont "bu le coolaid": le browser peut tout faire, on peut les programer pour leur faire faire la même chose que des applis locales. WRONG! On pousse les browsers, le javascript est chargé et interprété à chaque page.
En fait avec Ajaxla vitesse est primordiale. C'est ça qui impressione les utilisateurs, en fait plus que lapuissance de l'appli.
Ses recommendations:
Ecrire moins de code. Pas plus de 500K de JS compressé pour une grosse appli. gmail, google calendar par exemple font ça. Ils ont viré toutes les lignes de debug, se sont débarassé des librairies qu'ils utilisaient en les remplaçant par leur propre code, plus compact. Ils font du "load-on-demand" du js, pour commencer à afficher le plus trop possible.
Egalement, ne pas créer (et cacher (au sens de hide)) ce qui n'est pas affiché. Ajouter les données au DOM uniquement quand on doit les afficher, et les cacher (au sens de cache).
ne pas avoir des gros blocks de code, mais je n'ai pas le temps d'expliquer comment :--( (faire des yield et utiliser des closures, pour laisser l'UI rafraîchir)
Utiliser onmousedown
au lieu de onclick
,c'est plus rapide (~100ms)
nepas rendre les choses plus difficiles qu'elles ne sont: utiliser innerHTML
, pas de
faire de manip du DOM,.
Eviter de re-dessiner quand on retaille la fenêtre.
Eviter les manips de string (split).
Si vous faites des manips du DOM malgrés tout, extraire la racine, faire les manips, et recoller le racine. Ca évite que le browser ne redessine l'UI pendant les manips.
Il n'y a que vous qui pouvez éviter de créer une appli lente. Utiliser Firebug. faire du profiling souvent.
Ne pas faire faire trop de chose à l'appli. Penser que la vitesse est vraiment, VRAIMENT importante. Si il faut virer des fonctions, pas de sentiment.
Penser au browser non comme à un desktop, mais comme à un téléphone. penser qu'il n'a pas beaucoup de puissance, pas beaucoup de bande passante, s'adapter aux contraintes et vivre avec, sans les combattre.
Pas mal comme présentation.
Je rate ensuite les présentations et reste à discuter dehors. Et à me dire que l'Asus EEE (http://www.hothardware.com/Articles/Hands_on_with_the_ASUS_Eee/ me semble une bien symathique petite machine.
Un petit tour à l'expo, causer au gens qui font des systêmes d'informations gographiques, que je puisse m'amuser à mettre des zolies cartes sur le site de ma femme.
Le soir soirée Sun dans le parking de l'hôtel. Free Beer. Matt Trout, qui est vraiment allumé, me remercie pour l'avoir débarassé de la seule utilisatrice du seul module XML qu'il ait jamais écrit (elle est passée à Twig), je suis très fier. Je tchatche avec les gens de kysoh (http://www.kysoh.com/) qui vendent bien leur pingouin, quoique moins bien qu'en Europe. Je discute un peu d'aspects légaux: il y a quelque temps une j'ai reçu un email d'une boîte US qui me demandait si je pouvais leur montrer les autorisations d'exporter XML::Twig que je devais sûrement avoir, et sinon de les mettre en contact avec le lawyer de ma boîte (qui est moi, la boîte, pas le lawyer!). Apparement c'est normal, même si le module est développé en dehors des US.
Je rentre vers 1h30 du mat. Fatigue...
Bon, les CR commencent un peu tard aujourd'hui. Jai dormi ce matin, et
refusé de prendre des notes pendant le talk sur les version control systems
de nouvelle génération, qui causait de git
et des systèmes de ce genre.
un truc rigolo.
Elle annonce qu'il va y avoir du sang sur les slides, et que ça sera NSFW (nor safe for work). Elle va parler de modifications du corps, plus précisément d'améliorations du corps, par divers moyens, y compris médicaments.
"If you can't open it you don't own it" (d'habitude appliqué à l'électronique, mais là au corps).
Donc elle commence par nous montrer ce qu'elle a fait elle-même ("don't do it at home"): elle s'est fait implanter (sans anesthésie!) un aimant dans le doigt, pour pouvoir sentir les champs magnétiques. Sans anesthésie parce que comme ça c'était considéré comme de l'art. Elle pouvait sentir les câbles, si son disque dur tournait. La sensation est dure à expliquer, c'était plutot agréable. Elle pouvait même faire tourner l'aimant à l'intérieur du doigt.
Bon, au bout d'un moment a a mal tourné. Son corps a réagit, a commencé à rejeter l'aimant, et elle a du le faire enlever. Du sang sur l'écran.
Puis elle nous cause d'Artur bergman, qui l'an dernier a eu une tumeur au cerveau. Il a téléchargé un logiciel libre d'imagerie médicale, Osirix, et il a commencé à suivre sa tumeur. Elle nous montre des vidéos qu'il a pris de son cerveau. Photo de l'opération avec la tumeur en train d'être enlevée. Sanguinolent.
Un autre aspect: les patients-experts. Les malades qui se renseignent, qui s'impliquent a fond dans leur maladie, qui font des fois chier les docteurs. La frontière entre patient expert et hacker est floue.
On peut acheter plein de matériel médical d'occasion sur e-Bay. Son évaluation c'est que 10 ans apré l'introduction d'une nouvelle technologie médicale on en trouve les instruments sue e-Bay.
EEGs (les casques qui récupèrent les signeaux électriques émis par le cerveau). Les derniers modèles sont prévus pour contrôler des jeux (genre on peut devenir Hulk dansle jeu uniquement si onest en colère!). Illui tarde de voir ce que nous (les hackers présents) vont pouvoir faire avec ce genre de gadget.
Un "médicament" qui lui plait: provigil, un médicament qui permet de ne pas dormir. Pas d'effets secondaire, as une drogue. Une autre CUV1647: fait bronzer, perdre du poids et accroit l'activité sexuelle. Le seul problème: le labo qui le fabrique cherche désespérementune maladie que ça traiterait! Pas de maladie, pas d'autorisation de mise sur le marché. Ce genre de truc a des implications sociales: ce qui peuvent se le payer ont n avantage sur ceux qui ne peuvent pas.
Elle parle d'EMDR, jouer des sons, des vibrations, des trucs simples à faire comme ça, qui peuvent influencer notre cerveau, genre nous mettre dans des états émotionels précis.
Ily a une FAQ sur le net "Effective Home Surgery FAQ" (j'ai pas l'URL).
En gros on a pleins d'options, la plupart dangereuses, mais possibles. Les questions éthiques sont très importantes. Qui a la propriété de notre corps, nous ou les docteurs. Qui décide qu'est ce qui est autorisé ou pas. est-cequ'on va voir le tourisme médical se développer (ça existe déjà).
"This is a mess much worse than high tech (and much more important)"
Qu'est ce qui se passe si des gens décident de se débarasser de leur sens du devoir, de la culpabilité. Et si un jour votre boss vous dit, ou suggère fortement que vous devez vous faire opérer pour vous améliorer professionellement.
Qu'est ce qu'un humain?
Un peu décousu mais intéressant, et ça fait réfléchir.
Mon marathon annuel va commencer, 17 talks a la file. Pas d'accent (un è avec vim sur un clavier US me prends 5 frappes CTRL-K e shift-!) peu de ponctuation, grammaire et orthographe approximative, fautes de frappe, franglais...
on y va
Le toolkit de Yahoo, elle nous montre une demo. Bon, c'est de la pub, je vous fait pas chier avec ca (et je garde mon energie). La demo rame parce qu'en meme temps elle recoit un update windows. Bieng fait! Bon, c'est la copine d'ask qui fait le talk, on va pas etre trop mechant.
Il boit du the. Il commence donc a preparer son the sur scene. En general il oublie son the pendant qu'il infuse et a la fin le the est degueulasse. Donc il a commence a se servir d'un "kitchen timer". Si il oublie ca sonne. Ca lui fait un "negative feedback". Donc peu apeu il a finit par savoir combien ca faisait 5 minutes sans l'aide du timer. Ca l'aide pour fire ses estimations.
Il boit son the.
Bien sur si il buvait du the vert il pourrait le laisser infuser toute la journee
http://perlfoundation.org/perl5 le wiki officiel de Perl5, l'encyclopedie vivante de Perl. Visitez le, completez le, enrichissez le.
Il fait lever les mecs puis les nana... triste, les blancs les non blancs... triste, ceux dont les parents sont alles en fac puis les autres... triste.
Perl5 n'a plus de leader charismatique, Larry est parti pour Perl6. Il nous manque un leader comme ca. Personne n'ose l'etre. Et beaucoup n'ose pas faire certaines choses parce qu'il n'ont pas le feu vert du leader.
Schwern propose de lui demander a lui, il donnera le feu vert, et si les choses tournent mal, on pourra dire que c'est la faite a Schwern.
Demon smpt qui fait tout ce qu'on veut (sauf avoir un nom facile a prononcer) On peut lui ajouter des plugins, tres, TRES facilement (en quelques minutes).
Il nous montre quelques plugins, tres courts, qui par exemple vire pas mal de spam, ou stocke les mails dans un db. Laliste des plugins existants est assez fournie.
ask ressemble a Jesus cette annee, je posterai sa photo ce soir (et oui, je prends aussi des photos pendand les talks)
Googler pour le trouver, ca devrait pas etre trop dur.
ack est bieng (c'est grep pour du code, c'est vrai que c'est pas mal, ca fait du grep et on peut lui dire quel type de fichiers filtrer, les regexps sont celles de perl, c'est plus court a taper que grep).
perl101.org: site web pour les nouveaux. Il cherche de l'aide pour le completer. Une traduc francaise bientot?
code.google.com est super mega mieux que sourceforge. Il est interrompu par son IRC qui lui dit qu'on parle de lui sur #perl, ca fait rire tout le monde
Welcome to Triple Rock Baptist Church: un extrait des Blues Brothers, james Brown dans l'eglise (Andy est de Chicago),. Il commence a nous precher le rejet de la peur, et etre fier de nos "scripting languages" l'assemblee acquiesce "yes brother". On a un vrai langage, on compile comme Java, juste bien plus vite, on a des frameworks... des tonnes de frameworks! Alors arretons de dire script! On ecrit des PROGRAMMES!
Dans les projets open-sources on est des volontaires, comme dans les associations. Par exemple il y a pleins de types de volontaires, avec des degres d'implication divers, les ONG savent les exploiter toutes bien mieux que les projets OS, en leur donnant des taches adaptees a leur disponibilites.
Interessant.
"Hi, I am Eric Wilhem,you might know me form the internet"
Il nous montre les evolutions du format TAP
Ovid vous fera la version complete du talk a YAPC::Europe
Test::Harness:il nous montre la LONGUE liste des bugs dans RT.
Mais la prochaine version de TAP::Parser sera mega super kewl et resoudra la plupart des problemes.
Drats! Pas de break, pas le temps, je vais mourir moi!
Il cause d'ameliorations a CPAN.pm
Le but du projet est de pouvoir extraire, et sauvegarder, ses donnees de sites comme flickr, youtube, blogger etc... pour ne pas dependre
Ca devrait aussi permettre de publier une photo sur plusieurs sites a la fois, de synchroniser les tags entre tous les sites.
Ilen est au debut, il veut faire ca en Perl, faire du screen-scraping (pourquoi nepas utiliser les API que beaucoup de ces sites offrent).
Il veust aussi pouvoir faire ce genre de truc entre social networking sites, pour pouvoir passer de l'un a l'autre.
l'an dernier il a fait un lightning talk disant qu'il voulait une interface de DB unique pour tous les langages dynamiques, basee sur JDBC (au niveau en dessous de DBI, juste pour pouvoir partager les drivers des differentes DB). Ilnous monter une methode pour faire ca automatiquement, qui marche presque, en passant par pugs, perl5 et Inline::Java, lent mais ca marcherait.
Aarghh, je prends du retard (j'essayais de comprendre le talk precedent) donc peu de details sur celui ci.
Ca s'appelle dash profiler et connaissant Tim ca doit etre bieng foutu
Ca roule, 3ene talk a la file
A scalable stateless proxy for DBI, je vous laisse y jeter un coup d'oeil vous meme. Il ne fait pas de transactions ou de gros gros resultats (utiliser DBD::Proxy pour ca)
Sa boite veut open-sourcer la definition de leurs messages. Ansi est trop lent et innefficace pour lui. Donc il propose un nouveau type d'organisation de developement de standards, plus agile et plus ouverte.
Hey! il veut me foutre au chomage lui!
Let's Blog! Ecrivons un blog en 5 minutes.
Il cree leprojet, puis le modele, foireux il admet, ajoute quelques
incantations magiques que je ne comprends pas, a part make test
Hop, ca marche.
Un vrai blog en Perl http://www.angerwhale.org. Recuperer la version courante plutot que celle de CPAN qui en general est assez vielle.
Il explique un peu comment ca marche. Franchement ca me gonfle un peu.
J'y comprends rieng! mais ca a l'air bieng quand meme.
Crap! Il va chanter! Hugo devant moi sort un bouquin.
les paroles sont rigolotes: "it's not easy to rea-ead"
Il s'arrete au milieu, reprends appaludissements.
Fini! Je m'ecroule.
"Programming is hard, let's go scripting"
Comme Perl est percu comme un langage de script, autant l'accepter, juste redefinir ce que ca veut dire.
Pour lui le premier langage de script etait basic, le basic plus de DEC. Son premier compilateur etait ecrit en basic (pour un projet a l'ecole). Puis un autre en Pascal.
Il nous passe un peu tous les langages de script. "PHP takes the "worst is better" philosophy to new heights".
Il nous liste certains des choix que les designers de langage peuvent faire: early/late binding, single/multiple displatch, eager/lazy topology, symbolic/wordy, declarationel/operationel mutable/immutable, OO base sur des classes ou des prototypes.
C'est pas un talk spécialement rigolo cette année, mais plutôt technique, donc pas facile à transcrire simplement. Je suis sur que le texte sera disponible dans pas longtemps.
Le soir soirée Nat, où je vois un proto de l'OLPC, très, très cool. Il est joli, assez complet (webcam intégrée par exemple), les "oreilles" lui permettent d'avoir une excellente réception wifi (ils l'ont poussé jusqu'à 3km dans le désert australien), solide... le seul problème du groupe qui le fabrique est qu'ils sont quasiment à court de fric, pour des raisons de "les monopoles se défendent". Du coup ils comptent sur la vente au grand public pour financer les dons de machines dans le tiers-monde. http://www.flickr.com/search/?w=all&q=oscon2007+olpc&m=text
La soirée s'arrête assez tôt, donc je ne me couche pas trop tard, peut-être même que je réussirai à voir les keynotes demain matin!
Bon, je rate quand meme la première des keynotes.
Excellente présentation sur la "commoditization". Au départ il devait causer de Zimki, qui devait être open-sourcé par Fotango, mais comme le CA a décidé de le garder closed-source, ben c'est son dernier talk pour Fotango. C'est la première fois que je vois quelqu'un donner sa démission sur scène. J'ai l'impression que Fotango va se mordre les doigts de leur décision, je crois que tous leurs employés venus à la conf ou on déjà donné leur dem ou sont sur le point de le faire.
Il a 168 slides pour 15mn, ca va vite. Il aime les canards.
Il commence par nous décrire un peu divers projets et leur age: Linux est un adolescent, PHP est un gamin enthousiaste et ignorant (il faut lui mettre des limites, et l'envoyer causer avec les autres gamins), Perl un adolescent qui veut changer (aimez le pour ce qu'il est), Ruby on Rails est le jeune enfant précoce, Python le gamin sérieux (envoyez le en fac qu'il s'éclate un peu).
Puis 5mn pour nous dire: Be Nice.
Délirant! Il trafique du materiel, recycle, détourne, délire. Il a des vidéos de ses expériences.
Un piège à souris ou le fromage est affiché sur un vieil écran et la souris se fait électrocuter, s'autres.
Ca culmine avec "Leather Fetish Pong": on contrôle les raquettes en carressant des bottes en cuir, et quand on perd le point on prends un coup de cravache.
Excellent! Vraiment. Googlez son nom, c'est assez rigolo.
Les outils de test pour développer du web:
Les plugins de Firefox qu'il recommende: Firebug, LiveHTTPHeaders, view Formatted Source, PageDiff (je connaissais pas celui-là, il utilise aussi un outil diff sur linux: meld).
Analyse des performances: Load Time Analyzer, un plugin pour Firefox fait par Google. benchmark.js http://gfx.neohub.com/benchmark (Firebug a un profiler, mais bien sur il ne marche qu'avec Firefox, alors que benchmark.js est cross-plateforme)
Selenium http://www.openqa.org/selenium-rc/ et http://www.openqa.org/selenium-ide/. La prochaine génération est windmill http://windmill.osafoundation.org/, Smolder pour afficher les résultats des tests.
Pas mal. Il faut vraiment que je regarde Selenium et Windmill.
Le talk sur Selenium est annulé, donc une petite récréation avec r0ml, qui est toujours amusant.
Pour lui la programmation est de la rhétorique. Un des arts classiques du XXIeme siècle.
Il nous montre un graphe qui montre que 98% des gens ne comprennent pas grand chose à ce que racontent les vendeurs de software.
Buisiness Intelligence, ce qu'il est censé faire, sur Wikipedia: l'article a 4 (quatre!) "disclaimers" (tiens, maintenant il n'y en a plus que 3: http://en.wikipedia.org/wiki/Business_intelligence).
Il nous montre quelques exemples de mots incompréhensibles "knowledge management", "
Il pêche un mot semi au hasard Incunabula (à l'origine se sontles livres publiés avant 1500, incunable en français). C'est très pratique, parce que comme quasiment personne ne connait le mot, on peut le réutiliser, avec un sens différent, qu'on peut dke'finir, et personne ne discutera. Pareil avec chirologia (la science des mouvements de la main, comme le geste de montrer l'ongle du majeur, qui apparement est peu respectueux).
De même on peut trouver des mots inutilisés en rhétorique, escrime... on prends un mot, si possible qui sonne bien érudit, et on s'en ressert avec sa propre définition. Comme ça plus d'ambiguité. En fait un surprenant nombre de mots issus de la réthorique peuvent être réutilisés sans même changer la définition, juste le champs d'application. Des vieux dictionnaires sont aussi de bonnes sources.
ex: semasiology, pendant un temps Google renvoyait d'abord chez r0ml parce qu'il avait utilisé le mot dans une présentation (avec une nouvelle définition, pour lui c'est le changement de sens des mots avec le temps, donc le sujet de cette présentation).
"Perl is the Charles Dickens of programing languages" (une citation au hasard).
Il propose d'utiliser des mots issues de la rhétorique pour par exemple raffiner le mot bug: amphibology, catachresis... d'autres (je vous laisse trouver les définitions).
On peut ainsi se débarassee de beaucoup d'accronymes: epideic pour GUI. stemma pour Version Control. pecia pour Software as a service.
Il a pleins de mots comme ça, trop pour que je les cite tous. Et si on écrit la page sur Wikipedia en redéfinissantlemot, ben voilà, le mot a changé de sens!
Il finit par dire que Free Software devrait être appelé "Liberal Software". Il nous montre toutes les définitions de liberal, comment le mot a été créé. Ca colle parfaitement.
C'est amusant, ça fait réfléchir, et c'est très érudit.
Aprés je vais voir la keynote sur l'Open Source Hardware, mais c'est très chiant, donc je vous épargne le compte-rendu. A la fin ils montrent quand même queques projets cool: les plantes qui téléphonent pour dire qu'elles ont besoin d'eau, puis pour remercier quand on les a arrosées, les LEDs qui affichent des images quand les roues d'un vélo tournent (un monstre devant et pacman derrière), un clone d'un vieux synthétiseur Roland trafiqué et amélioré, un brouilleur radio (qu'on ne peut pas vendre, c'est interdit, mais c'est cool, ça peut brouiller le wifi, les téléphones portables, le GPS etc)...
Bon, ben c'est fini. Je ne repart que demain, donc cet après-midi c'est prtite sieste puis visite au festival des micro-brasseries de Portland, il fait beau, ça devrait être bieng.
Copyright © Les Mongueurs de Perl, 2001-2011
pour le site.
Les auteurs conservent le copyright de leurs articles.