KrISS feed 8 - Un simple et superbe (ou stupide) lecteur de flux. Par Tontof
  • Tuesday 14 November 2017 - 16:09

    I recently learned about a browser feature where, if you provide a special HTTP header, it will automatically post to a URL with a report of any non-HTTPS content. This would be a great thing to do when transitioning a site to HTTPS, for example, to root out any mixed content warnings. In this article, we'll implement this feature via a small WordPress plugin.

    What is mixed content?

    "Mixed content" means you're loading a page over HTTPS page, but some of the assets on that page (images, videos, CSS, scripts, scripts called by scripts, etc) are loaded via plain HTTP.

    A browser pop up window of a security warning about unsecure content.
    A browser warning about mixed content.

    I'm going to assume that we're all too familiar with this warning and refer the reader to this excellent primer for more background on mixed content.

    What is Content Security Policy?

    A Content Security Policy (CSP) is a browser feature that gives us a way to instruct the browser on how to handle mixed content errors. By including special HTTP headers in our pages, we can tell the browser to block, upgrade, or report on mixed content. This article focuses on reporting because it gives us a simple and useful entry point into CSP's in general.

    CSP is an oddly opaque name. Don't let it spook you, as it's very simple to work with. It seems to have terrific support per caniuse. Here's how the outgoing report is shaped in Chrome:

    {
        "csp-report": {
            "document-uri":"http://localhost/wp/2017/03/21/godaddys-micro-dollars/",
            "referrer":"http://localhost/wp/",
            "violated-directive":"style-src",
            "effective-directive":"style-src",
            "original-policy":"default-src https: 'unsafe-inline' 'unsafe-eval'; report-uri http://localhost/wp/wp-json/csst_consecpol/v1/incidents",
            "disposition":"report",
            "blocked-uri":"http://localhost/wp/wp-includes/css/dashicons.min.css?ver=4.8.2",
            "status-code":200,
            "script-sample":""
        }
    }

    Here's what it looks like in its natural habitat:

    The outgoing report in the network panel of Chrome's inspector.

    What do I do with this?

    What you're going to have to do, is tell the browser what URL to send that report to, and then have some logic on your server to listen for it. From there, you can have it write to a log file, a database table, an email, whatever. Just be aware that you will likely generate an overwhelming amount of reports. Be very much on guard against self-DOSing!

    Can I just see an example?

    You may! I made a small WordPress plugin to show you. The plugin has no UI, just activate it and go. You could peel most of this out and use it in a non-WordPress environment rather directly, and this article does not assume any particular WordPress knowledge beyond activating a plugin and navigating the file system a bit. We'll spend the rest of this article digging into said plugin.


    Sending the headers

    Our first step will be to include our content security policy as an HTTP header. Check out this file from the plugin. It's quite short, and I think you'll be delighted to see how simple it is.

    The relevant bit is this line:

    header( "Content-Security-Policy-Report-Only: default-src https: 'unsafe-inline' 'unsafe-eval'; report-uri $rest_url" );

    There a lot of args we can play around with there.

    • With the Content-Security-Policy-Report-Only arg, we're saying that we want a report of the assets that violate our policy, but we don't want to actually block or otherwise affect them.
    • With the default-src arg, we're saying that we're on the lookout for all types of assets, as opposed to just images or fonts or scripts, say.
    • With the https arg, we're saying that our policy is to only approve of assets that get loaded via https.
    • With the unsafe-inline and unsafe-eval args, we're saying we care about both inline resources like a normal image tag, and various methods for concocting code from strings, like JavaScripts eval() function.
    • Finally, most interestingly, with the report-uri $rest_url arg, we're giving the browser a URL to which it should send the report.

    If you want more details about the args, there is an excellent doc on Mozilla.org. It's also worth noting that we could instead send our CSP as a meta tag although I find the syntax awkward and Google notes that it is not their preferred method.

    This article will only utilize the HTTP header technique, and you'll notice that in my header, I'm doing some work to build the report URL. It happens to be a WP API URL. We'll dig into that next.

    Registering an endpoint

    You are likely familiar with the WP API. In the old days before we had the WP API, when I needed some arbitrary URL to listen for a form submission, I would often make a page, or a post of a custom post type. This was annoying and fragile because it was too easy to delete the page in wp-admin without realizing what it was for. With the WP API, we have a much more stable way to register a listener, and I do so in this class. There are three points of interest in this class.

    In the first function, after checking to make sure my log is not getting too big, I make a call to register_rest_route(), which is a WordPress core function for registering a listener:

    function rest_api_init() {
    
        $check_log_file_size = $this -> check_log_file_size();
        if( ! $check_log_file_size ) { return FALSE; }
    
        ...                
    
        register_rest_route(
            CSST_CONSECPOL . '/' . $rest_version,
            '/' . $rest_ep . '/',
            array(
               'methods'  => 'POST',
               'callback' => array( $this, 'cb' ),
            )
        );
    
    }

    That function also allows me to register a callback function, which handles the posted CSP report:

    function cb( \WP_REST_Request $request ) {
    
        $body = $request -> get_body();
        $body = json_decode( $body, TRUE );
        $csp_report = $body['csp-report'];
    
        ...
    
        $record = new Record( $args );
        $out = $record -> get_log_entry();
    
    }

    In that function, I massage the report in it's raw format, into a PHP array that my logging class will handle.

    Creating a log file

    In this class, I create a directory in the wp-content folder where my log file will live. I'm not a big fan of checking for stuff like this on every single page load, so notice that this function first checks to see if this is the first page load since a plugin update, before bothering to make the directory.

    function make_directory() {
    
        $out = NULL;
    
        $update = new Update;
        if( ! $update -> get_is_update() ) { return FALSE; }
    
        $log_dir_path = $this -> meta -> get_log_dir_path();
        $file_exists = file_exists( $log_dir_path );
    
        if( $file_exists ) { return FALSE; }
    
        $out = mkdir( $log_dir_path, 0775, TRUE );
    
        return $out;
    
    }

    That update logic is in a different class and is wildly useful for lots of things, but not of special interest for this article.

    Logging mixed content

    Now that we have CSP reports getting posted, and we have a directory to log them to, let's look at how to actually convert a report into a log entry,

    In this class I have a function for adding new records to our log file. It's interesting that much of the heavy lifting is simply a matter of providing the a arg to the fopen() function:

    function add_row( $array ) {
    
        // Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
        $mode = 'a';
    
        // Open the file.
        $path   = $this -> meta -> get_log_file_path();
        $handle = fopen( $path, $mode );
    
        // Add the row to the spreadsheet.
        fputcsv( $handle, $array );
    
        // Close the file.
        fclose( $handle );
    
        return TRUE;
    
    }

    Nothing particular to WordPress here, just a dude adding a row to a csv in a normal-ish PHP manner. Again, if you don't care for the idea of having a log file, you could have it send an email or write to the database, or whatever seems best.

    Caveats

    At this point we've covered all of the interesting highlights from my plugin, and I'd advice on offer a couple of pitfalls to watch out for.

    First, be aware that CSP reports, like any browser feature, are subject to cross-browser differences. Look at this shockingly, painstakingly detailed report on such differences.

    Second, be aware that if you have a server configuration that prevents mixed content from being requested, then the browser will never get a chance to report on it. In such a scenario, CSP reports are more useful as a way to prepare for a migration to https, rather than a way to monitor https compliance. An example of this configuration is Cloudflare's "Always Use HTTPS".

    Finally, the self-DOS issue bears repeating. It's completely reasonable to assume that a popular site will rack up millions of reports per month. Therefore, rather than track the reports on your own server or database, consider outsourcing this to a service such as httpschecker.net.

    Next steps

    Some next steps specific to WordPress would be to add a UI for downloading the report file. You could also store the reports in the database instead of in a file. This would make it economical to, say, determine if a new record already exists before adding it as a duplicate.

    More generally, I would encourage the curious reader to experiment with the many possible args for the CSP header. It's impressive that so much power is packed into such a terse syntax. It's possible to handle requests by asset type, domain, protocol — really almost any combination imaginable.


    Content Security Policy: The Easy Way to Prevent Mixed Content is a post from CSS-Tricks

  • Tuesday 14 November 2017 - 16:07

    We continue to share lessons learned from scheduling and executing containers in production at scale. This blog posts summarizes not only recent publications on our container management platform (Project Titus) but also future collaboration opportunities.

    Titus

    Publications

    We were honored when the Association for Computing Machinery (ACM) asked for us to write for their bimonthly ACM Queue publication, and recently published our article entitled “Titus: Introducing Containers to the Netflix Cloud”. In the article, we talk about why we designed Titus in the manner we did, and why we chose to introduce containers into our existing cloud native virtual machine architecture for service and batch workloads. We talk about unique aspects of Titus such as AWS and Netflix infrastructure integration, networking, capacity management and approaches to operational challenges. And finally, we share our future plans and expectations for container management at Netflix.

    Conferences

    Last year at re:Invent 2016, we documented how Titus works under the covers. At Mesoscon 2017, we covered how we schedule efficiently on an elastic cloud. During our talk at QCon NYC 2017, we talked about the challenges we have seen operating Titus for production workloads over the last two years. We believe operational issues and scheduling efficiency are key issues to understand regardless of container platform.

    Open Source

    While there is some benefit in socializing what we have built and learned operating Titus for two years, we know we can do better. We have heard requests from the community to open source Titus, letting people learn from the exact code we run in production at Netflix.

    Open sourcing a project requires great amount of work and responsibility, especially for projects as complex as Titus. Also, a healthy open source project requires more than a single company to grow a lasting community. In that spirit, Netflix has started to collaborate with others who have similar challenges as Netflix when running containers. We have found three categories of collaborators that are looking for unique values from Titus. Specifically, those who are looking for battle hardened:

    • Natively integrated container solution within Amazon Web Services (AWS)
    • NetflixOSS integrated container management platform, specifically one that works well with Spinnaker (our continuous delivery platform) or our cloud RPC frameworks based on Eureka
    • A modern Apache Mesos unified batch and service container scheduler that works well on an elastic cloud with Docker containers

    We are currently working under a private collaboration model which includes sharing our code privately as we work towards a community driven fully open source project.

    Upcoming Conferences

    At re:Invent this year, we will be talking at the “NET402: Elastic Load Balancing Deep Dive and Best Practices” session about how we are extending our networking support using Application Load Balancer (ALB) integrations with IP Target Groups. We will also be in attendance at QCon SF 2017 and KubeCon/CloudNativeCon and hope to connect with collaborators.

    If you are interested in getting in contact with the Titus team or are attending either QCon SF 2017 or KubeCon/CloudNativeCon, please touch base with Andrew Spyker (linkedin, twitter).


    Updates on Netflix’s Container Management Platform was originally published in Netflix TechBlog on Medium, where people are continuing the conversation by highlighting and responding to this story.

  • Tuesday 14 November 2017 - 16:05

    Si vous êtes en mode changement de smartphone alors novembre est fait pour vous. En effet, c'est le big mois des promos high tech et on va bientôt entrer dans la période où tous les gadgets qui nous font tripper vont être à prix réduit.

    Et dans l'idée ou les capacités vidéo et photo du matos sont des critères primordiaux pour effectuer votre achat ou le shift, passer de Android à iOS ou vice versa, on vous propose la vidéo la plus complète possible pour vous aider à faire votre choix entre deux big boss du moment:

    A ma gauche, dans le coin bleu, le Galaxy Note 8, avec son écran 6,3 pouces, son Double objectif photo et sa technologie Dual Pixel et accompagné de son stylet S Pen.

    A ma droite droite, dans le coin rouge, l'iPhone 8 Plus, avec son chassis tout en verre, ses 5,5 pouces d'écran et ses pixels à double transistor pour une une vue sur l’écran depuis quasiment n’importe quel angle.

    Cet article merveilleux et sans aucun égal intitulé : iPhone 8 Plus VS Galaxy Note 8 : Duel photos et videos ; a été publié sur Korben, le seul site qui t'aime plus fort que tes parents.

  • Tuesday 14 November 2017 - 14:42

    En ce mardi 14 novembre 2017, le projet Fedora est fier d’annoncer la sortie de la distribution GNU/Linux Fedora 27.

    Cette version de Fedora s'est surtout concentrée sur trois axes : couche graphique, gestion du matériel et Fedora.next.

    À noter que pour gagner du temps et des ressources, c'est la première version de Fedora n'ayant pas eu de version Alpha. Cela a été rendu possible grâce à l'amélioration des procédures de qualité pour les versions en développements.

    GNOME-Bureau.png

    Couche graphique

    GNOME est toujours à l'honneur avec sa version 3.26. C'est une version essentiellement de polissage et de stabilité avec :

    • La barre principale qui devient transparente, si aucune fenêtre n'est maximisée ;
    • De nouvelles animations, plus fluides, en cas de redimensionnement ou de mouvement des fenêtres ;
    • La recherche globale fonctionne sur des actions du système (comme Éteindre) et affiche plus de résultats à la fois ;
    • Les paramètres du système bénéficient d'une refonte complète de l'interface ;
    • Le logiciel Disques peut enfin redimensionner les partitions, Agenda prenant en charge les évènements récurrents et Web acceptant la synchronisation depuis Firefox Sync ;
    • Le logiciel de virtualisation Machines peut télécharger et lancer automatiquement une RHEL gratuite ;
    • Amélioration des performances pour quelques applications ou GNOME en général.

    Remplacement de l'interface graphique de gestion de paquets Yumex par dnfdragora qui propose une interface Qt, GTK+ et ncurses. Le développement de Yumex s'est arrêté il y a un an, qui met fin à une application ayant accompli dix ans de bons et loyaux services et a même su migrer de yum vers dnf. dnfdragora présente la particularité de reposer sur rpmdragora, qui vient de Mageia.

    dnfdragora.png

    Gestion du matériel

    Fedora propose une image unique pour l'architecture AARCH64 (ARM 64 bits) ce qui rejoint la solution proposée pour les cartes disposant d'un ARMv7. Pour l'instant cette image prendra en charge les cartes suivantes :

    • Pine64 (et ses variantes)
    • Raspberry Pi 3 (64 bit mode)
    • 96boards HiKey
    • 96boards Dragonboard 410c
    • ARM Juno

    L'offre des cartes prises en charge s'étoffera dans le temps, de même que la mise à disposition des versions personnalisées de Fedora.

    Toujours à propos du matériel, Fedora a travaillé pour avoir une meilleure gestion des SoC Intel Bay Trail et Cherry Trail (essentiellement des puces Pentium, Celeron et Atom sur portables et tablettes). Le travail a consisté en l'amélioration de la surveillance de la batterie (consommation actuelle, temps restant sur batterie, savoir si la machine est en charge ou non) et de la gestion de l'audio. Les écrans tactiles et les accéléromètres seront également mieux détectés et donc exploitables par le système et les applications.

    Fedora 27 peut enfin tourner sur les ordinateurs ayant un UEFI 32 bits tout en ayant un CPU 64 bits. Cela consiste en l'installation d'un GRUB 32 bits (chargé par l'UEFI lui même) qui lui même charge un noyau et l'espace utilisateur en 64 bits. Cette configuration, assez atypique, a nécessité un travail sur GRUB, Anaconda et les utilitaires EFI pour les prendre en charge. Fedora sera ainsi installable sur ces configurations comme l'Asus Transformer T100TA, le HP Stream 7, le Dell Venue 8 Pro 5830 et les premiers Macintosh Intel d'Apple.

    GNOME-Paametres.png

    Fedora.next

    Séparation du Base Runtime en Plateforme et Hôte, le premier prenant en charge l'espace utilisateur et la base du système quand le second s'occupe uniquement de la gestion du matériel. En somme, la seconde partie contient le noyau, le chargeur de démarrage, les firmwares et quelques pilotes. Dans le cadre de la modularité, le but de ce changement est de découpler la gestion du matériel du reste du système pour proposer des cycles de vie différents et autonomes. L'utilisateur pourra ainsi bénéficier de plus de souplesse, comme avoir la dernière version du support du matériel avec le reste de Fedora un peu plus ancien et inversement. À terme, on pourrait avoir une sorte de gestion de matériel fournie par Fedora 27 avec un espace utilisateur fourni par Fedora 28. Ou inversement selon le cas d'usage.

    L'édition Fedora Server reçoit les premiers travaux officiels pour gérer la modularité, alors qu'elle a été testée par l'édition spéciale Boltron lors de Fedora 26. L'objectif est de mettre en place la modularité dans une image officielle de Fedora et non annexe comme l'a été Boltron. Cela permettra aux administrateurs systèmes de prendre en main le projet de manière plus large pour bénéficier d'un maximum de retours. Il sera également possible de voir le comportement de la modularité durant le cycle de vie complet de Fedora 27.

    Comme pour Fedora 26, je vous invite à consulter la documentation de la modularité et leur chaine Youtube pour en apprendre plus à ce sujet. À cause de ce changement important, l'édition Server sera disponible un mois après les autres éditions.

    Et comme d'habitude, Fedora 27 réserve bien d'autres surprises à découvrir.

    La communauté francophone

    L'association

    Logo.png

    Borsalinux-fr est l'association qui gère la promotion de Fedora dans l'espace francophone. Nous constatons depuis quelques années une baisse progressive des membres à jour de cotisation et de volontaires pour prendre en main les activités dévolues à l'association.

    Nous lançons donc un appel à nous rejoindre afin de nous aider.

    L'association est en effet propriétaire du site officiel de la communauté francophone de Fedora, organise des évènements promotionnels comme les Rencontres Fedora régulièrement et participe à l'ensemble des évènements majeurs concernant le libre à travers la France principalement.

    Si vous aimez Fedora, et que vous souhaitez que notre action perdure, vous pouvez :

    • Adhérer à l'association : les cotisations nous aident à produire des goodies, à nous déplacer pour les évènements, à payer le matériel ;
    • Participer sur le forum, les listes de diffusion, à la réfection de la documentation, représenter l'association sur différents évènements francophones ;
    • Concevoir des goodies ;
    • Organiser des évènements type Rencontres Fedora dans votre ville.

    Nous serions ravis de vous accueillir et de vous aider dans vos démarches. Toute contribution, même minime, est appréciée.

    Si vous souhaitez avoir un aperçu de notre activité, vous pouvez participer à nos réunions hebdomadaires chaque lundi soir à 20h30 (heure de Paris) sur IRC (canal #fedora-meeting-1 sur Freenode).

    La documentation

    Depuis juin 2017, un grand travail de nettoyage a été entrepris sur la documentation francophone de Fedora, pour rattraper les 5 années de retard accumulées sur le sujet.

    Le moindre que l'on puisse dire, c'est que le travail abattu est important : près d'une cinquantaine d'articles corrigés et remis au goût du jour. Un grand merci à Charles-Antoine Couret, Nicolas Berrehouc, Édouard Duliège et les autres contributeurs et relecteurs pour leurs contributions.

    L'équipe se réunit tous les lundis soir après 21h (heure de Paris) sur IRC (canal #fedora-doc-fr sur Freenode) pour faire progresser la documentation par un travail collaboratif. Le reste de la semaine cela se passe sur les listes de diffusion.

    Si vous avez des idées d'articles ou de corrections à effectuer, que vous avez une compétence technique à retransmettre, n'hésitez pas à participer.

    Liens

    Gravatar de Renault
    Original post of Renault.Votez pour ce billet sur Planet Libre.

  • Tuesday 14 November 2017 - 14:29
    « Difficile de suivre précisément la route prise par Eagle. Le système d’Amesys est cédé à Nexa Technologies. Une cession déguisée pour certains, pour exfiltrer la société à Dubaï. » C’est ainsi que France Inter […]
  • Tuesday 14 November 2017 - 12:13
    Nos investigations, comme celles de Jean-Marc Manach ou d’Olivier Tesquet de Télérama avaient déjà permis de dresser une liste conséquente de clients d’Amesys, entreprise qui avait muté en Bull, puis en Nexa. Initialement, Reflets dénichait […]
  • Tuesday 14 November 2017 - 11:42

    La technologie de communication en champ proche, plus connue sous le nom de NFC, est présente au quotidien dans nos vies que ce soit pour les paiements sans contact via des cartes bancaires ou simplement avec les cartes de transports en commun. Le SDK Android propose un support du NFC depuis Android 4.4. Dans ce tutoriel, vous allez apprendre à créer une application Android permettant de lire des Tags et Cartes NFC.

    1*5jmiz6nbddw33edjhrixiw
    Commentaires
    L'article Créez un lecteur de Tags NFC pour Android a été posté dans la catégorie Android de Human Coders News
  • Tuesday 14 November 2017 - 11:41
  • Tuesday 14 November 2017 - 11:01
    Dans les jours à venir, Reflets.info va dévoiler les coulisses des ventes d’armes de surveillance massive à travers le monde effectuées par une entreprise française : Nexa Technologies. Ces produits permettant d’intercepter les communications d’un […]
  • Tuesday 14 November 2017 - 10:00

    La Skool, c’est le Graduate Program d’OCTO. En tant qu’Entreprise de Service du Numérique (ESN), OCTO était confronté à un problème : comment intégrer des consultants ayant entre 0 et 3 ans d’expérience, en leur transmettant les savoir-faire et les valeurs qui font la force d’OCTO auprès de ses clients ?

    La Skool est une réponse. Un dispositif d’une durée de 8 mois, qui s’appuie sur trois piliers :

    • Des formations intensives et ciblées portant sur les méthodes (Agiles, TDD) et les technologies utilisées en mission (back-end, front-end, DevOps)
    • Une mise en application rapide sur les projets OCTO : “On ne retient bien une formation que si on a l’occasion de l’appliquer très vite et quotidiennement”
    • Un mentorat rapproché, effectué par les seniors d’OCTO, qui permet de se familiariser aux processus et à la culture de l’entreprise

    Depuis le début du programme, 70 consultant·e·s, que nous appellerons skooleurs·euses à partir d’ici, ont été formés et intégrés aux effectifs. Actuellement, 30 font encore partie du dispositif. Dernièrement, le modèle a évolué pour mettre en place des skools spécialisées et des skools en partenariat avec un client.

    Mais concrètement, faire la Skool, qu’est-ce que c’est ?  À quoi ressemble le quotidien des skooleurs·euses ? Que ressentent-ils durant les huit mois de mentorat ? Armen, Brandone, Khalil, Mélanie, Victor et William, skooleurs·euses ou anciens skooleurs·euses, vous proposent leurs visions et leurs histoires à travers cinq articles que vous découvrirez chaque semaine. Ils aborderont les différentes facettes du programme, allant du recrutement jusqu’à la sortie du dispositif, en passant par les formations et les missions.

    LA PHASE DE RECRUTEMENT

    « 30 jours de formation, qui peut refuser ça ? »
    Un skooleur

    Qu’est-ce qui nous a amené à intégrer la Skool chez OCTO ? Chacun de nous a un parcours différent et pourtant, nous avons tous suivi le programme Skool pour des raisons similaires. Nous vous laissons découvrir nos témoignages.

    Armen, consultant de la Skool 4 :

    Juillet 2016, premier entretien téléphonique avec Pauline. Désireux de rejoindre une entreprise où la méthodologie et la qualité du code priment, je frappe à la bonne porte. Les premiers échanges sont bons, mais Pauline détecte mon absence d’expérience sur des projets agiles et sur les pratiques crafts. Elle me propose alors une solution : rejoindre OCTO et suivre le programme “Skool” qui me donnera les bases de la méthodologie de l’entreprise. J’accepte immédiatement, enchanté qu’un tel parcours d’intégrations existe.

    Khalil, consultant de la Skool 5 : 

    Je vais commencer cette histoire par la fin. Nous sommes en décembre 2016. Je reçois un appel, c’est Carole ! Elle m’annonce la bonne nouvelle, détaille la proposition d’embauche et me dit qu’elle me laissera quelques jours pour prendre ma décision. Instinctivement, sans même lui laisser le temps de finir cette dernière phrase (en y repensant, c’était peut-être même impoli) je dis “OUI !”.
    Revenons un peu en arrière. Ce grand OUI dit à Carole a ses raisons :

    • Mentalité : la personne qui m’a donné envie de venir chez OCTO ne travaille pas chez eux, mais avec eux. Cette personne m’en a tellement dit du bien qu’on pourrait penser qu’elle en est actionnaire. Il est rare de voir quelqu’un défendre aussi ardemment les couleurs d’une entreprise, encore plus quand elle n’y travaille pas.
    • Expertise : souhaitant évoluer vers le métier de Data Scientist, sous les conseils de cette même personne, je lis un livre écrit par des Octos sur le sujet en question. Et là, illumination. Il m’en apprend bien plus et bien mieux que les MOOC et autres formations suivies. Voulant rejoindre une entreprise où l’on fait de la data science, on me conseille à nouveau OCTO ! À croire que tous les chemins y mènent.
    • Échanges : pendant les entretiens, on voit assez vite quelle est l’âme de l’entreprise. On parle, on discute, on échange d’égal à égal. Je perçois de la bienveillance, de la confiance, de l’épanouissement. Les gens y respirent le bonheur.
    • La Skool : un mois à nous former aux bonnes méthodes de travail et aux bonnes pratiques de code. Un accompagnement encore plus rapproché. Bref, une entreprise qui investit autant sur ses nouvelles recrues en dit long sur le type d’entreprise à laquelle on a affaire.

    Voilà pourquoi j’ai dit OUI de la sorte…

    Mélanie, consultante de la Skool 4 :

    J’ai découvert OCTO durant une journée “Femmes et numérique”, sur un stand où l’on m’a parlé d’une “Skool” et donné un livre, “Culture Code”. Je sortais alors du milieu académique, je n’avais plus mis un pied dans une entreprise depuis 4 ans et je ne savais pas trop vers quoi m’orienter. Après quelque temps, je me suis mise à me renseigner sur la Skool, tout en gardant contact avec l’Octo que j’avais rencontré. Petit à petit, je me suis dit que c’était la solution. Je ne me sentais pas en confiance et on me propose de me former : c’était exactement ce qu’il me fallait. Je voyais la Skool comme une mise à niveau.
    Après avoir envoyé mon CV, j’ai eu une réponse très rapide pour un premier entretien RH. Plutôt stressée de nature, la discussion se fait pourtant de manière fluide et je découvre le fonctionnement en tribus, la Skool et la vision OCTO. Suit alors un entretien technique, très peu de temps après le premier. Cet entretien fut intéressant sur plusieurs points. Premièrement, j’ai pu confirmer l’image que j’avais d’OCTO. Ensuite, nous avons discuté technique sans que ce soit un entretien où l’on me demande de coder un algorithme en un temps record, sous pression. C’était un entretien où l’on me demandait mes pratiques, ce que j’aimais faire, ma vision du développement et de l’informatique. Le lendemain, OCTO m’appelait pour me dire que c’était bon. Les Skools commençant à des dates précises, il fallait que j’attende l’arrivée de la Skool 4, deux mois plus tard. Même si j’étais au chômage, je ne me suis pas posé de questions, car pour moi c’était une chance que je ne devais pas laisser passer !

    Victor, consultant de la Skool 3 :

    Juillet 2016 : encore en stage, je commence à chercher mon premier travail. Je discute avec un collègue d’un précédent stage qui a entre-temps rejoint une entreprise nommée OCTO. Je lui parle de ma frustration sur mon manque d’accompagnement, notamment au niveau technique, mais aussi que je ne me sens pas au niveau techniquement pour rejoindre une autre entreprise. Il me dit qu’il va se renseigner, mais qu’il a peut-être une idée pour moi. Le lendemain il me parle de la Skool, un programme d’OCTO pour accompagner des juniors, les acculturer et les former, notamment aux bonnes pratiques.
    Bingo, il me coopte, je passe l’entretien technique, et là, première baffe. En place d’un entretien habituel où j’attendais les inévitables questions sur Java et autres langages que je connaissais, j’ai une discussion de plus d’une heure sur mes frustrations, les méthodes de développements qui existent, pourquoi il y a peu de femmes dans l’informatique et les initiatives prises par certains Octos pour changer cela, ou faire découvrir le code aux plus jeunes.
    En un peu plus d’une heure, je découvre une entreprise avec des valeurs, qui prend le temps de faire grandir chacun de ses employés. C’était la première fois, qu’en entretien, des recruteurs me promettaient de me former à faire du bon code plutôt qu’être chef de projet en 2 ans.
    Cela m’a tellement fait du bien que j’ai même accepté de patienter 3 mois avant de commencer.

    William, consultant de la Skool 5:

    J’entends parler d’OCTO par un ami d’école qui me fait l’éloge de son entreprise. Je finis par céder et je lui envoie mon CV. Dès le lendemain, je reçois un appel de Carole et on convient d’un rendez-vous le surlendemain. Le jour de l’entretien, on discute et la conversation est très fluide et naturelle. Je lui fais même part de mon apriori sur les ESN et elle l’entend bien, sans s’étonner. Moi qui m’attendais à avoir un énième entretien sans âme avec une RH qui ressasse inlassablement les mêmes questions pré-formatées, je suis agréablement surpris. C’était une véritable discussion franche entre deux êtres humains. J’apprends même qu’elle a déjà un peu développé en Ruby ! D’habitude je m’arrête régulièrement pour expliquer certains termes techniques mais là, ça n’était pas nécessaire. Elle comprenait parfaitement mes propos et rebondissait même dessus. Elle me parle également de la Skool, un mois entier de formation dispensé par d’autres Octos et ce dès mon arrivée. Pourquoi donc refuser ! À la suite de cet entretien je me suis dit : “Wow, ok, je veux en savoir plus !”.

    La semaine prochaine, on vous parle du premier mois de formation !

  • Tuesday 14 November 2017 - 09:44
    Les dates indiquées sont les dates limites d'accomplissement des formalités.
    Vendredi 15 
     
    Employeurs occupant au plus 9 salariés 
      Déclaration sociale nominative (DSN) : Déclaration des rémunérations et des mouvements de main-d'œuvre sur le site www.net-entreprises.fr (pour les employeurs du régime général) ou sur le site www.msa.fr (pour les employeurs du régime agricole).

      Versement à l'Urssaf des cotisations de sécurité sociale, de chômage et d'assurance des créances des salariés, de la cotisation pénibilité de base, des contributions solidarité-autonomie, Fnal et dialogue social, de la CSG et de la CRDS au titre des salaires payés entre le 11 novembre et le 10 décembre inclus par les employeurs ayant opté pour le paiement mensuel.

      Versement à la caisse de mutualité sociale agricole, par les employeurs agricoles ayant opté pour le paiement mensuel, des cotisations mensualisées (assurances sociales agricoles, prestations familiales, assurance chômage et AGS, Camarca retraite, forfait social et contributions spécifiques) dues au titre des salaires payés entre le 11 novembre et le 10 décembre inclus.

      Versement à la CNBF pour les avocats salariés des cotisations de retraite dues au titre des salaires versés entre le 11 novembre et le 10 décembre inclus (si option pour le paiement mensuel).

     
    Employeurs occupant plus de 9 salariés 
      Déclaration sociale nominative (DSN) : Déclaration des rémunérations et des mouvements de main-d'œuvre par les employeurs de moins de 50 salariés ainsi que, s'ils pratiquent le décalage de la paie, par les employeurs d'au moins 50 salariés. La déclaration est à effectuer sur le site www.net-entreprises.fr (pour les employeurs du régime général) ou sur le site www.msa.fr (pour les employeurs du régime agricole).

      Versement à l'Urssaf des cotisations de sécurité sociale, de chômage et d'assurance des créances des salariés, de la cotisation pénibilité de base, des contributions solidarité-autonomie, Fnal et dialogue social, de la CSG, de la CRDS et du versement de transport au titre :
    - des salaires payés entre le 11 novembre et le 10 décembre inclus par les employeurs de moins de 50 salariés ;
    - des salaires de novembre payés entre le 1er et le 10 décembre inclus par les employeurs d'au moins 50 salariés.

      Versement à la caisse de mutualité sociale agricole des cotisations mensualisées (assurances sociales agricoles, prestations familiales, assurance chômage et AGS, Camarca retraite, forfait social et contributions spécifiques) dues par les employeurs agricoles au titre :
    - des salaires payés entre le 11 novembre et le 20 décembre inclus par les employeurs de moins de 50 salariés ;
    - des salaires de novembre payés entre le 1er et le 20 décembre inclus par les employeurs d'au moins 50 salariés.

      Versement à la CNBF des cotisations de retraite des avocats salariés au titre des salaires payés entre le 11 novembre et le 10 décembre inclus par les employeurs de moins de 50 salariés et au titre des salaires de novembre payés entre le 1er et le 10 décembre inclus par les employeurs d'au moins 50 salariés.

    Lundi 25 
     
    Employeurs occupant au plus 9 salariés 
      Versement aux caisses Agirc-Arrco des cotisations de retraite complémentaire dues sur les salaires payés au cours du mois de novembre par les employeurs d'au plus 9 salariés ayant opté pour le versement mensuel.

     
    Employeurs occupant plus de 9 salariés 
      Versement aux caisses Agirc-Arrco des cotisations de retraite complémentaire dues au titre des salaires payés au cours du mois de novembre.

    Dimanche 31
     
    Employeurs de moins de 11 salariés 
       Option pour le versement trimestriel des cotisations à l'Urssaf ou à la caisse de mutualité sociale et agricole et MSA.

     
    Employeurs occupant au moins 20 salariés 
       Emploi obligatoire de personnes handicapées : vérifier que le pourcentage minimum obligatoire d'emploi de personnes handicapées est atteint pour 2017. Pour les versements à l'Agefiph, le délai n'expire que le 1er mars 2018.

     
    Employeurs appliquant la participation des salariés 
       Conclusion d'un accord de participation des salariés aux résultats de l'entreprise : entreprises dont l'exercice coïncide avec l'année civile et qui deviennent effectivement redevables de la participation pour la première fois.
       

    102299566

  • Tuesday 14 November 2017 - 09:39

    Le Conseil d'Etat décide qu'une convention collective peut prévoir une rémunération plus basse pour les cadres nouvellement diplômés n'ayant aucun passé professionnel, sans pour autant porter atteinte au principe « à travail égal, salaire égal ».
    En effet, la chambre sociale de la Cour de cassation a déjà jugé que l'expérience professionnelle acquise auprès d'un précédent employeur peut justifier une différence de salaire au moment de l'embauche dès lors qu'elle est en relation avec les exigences du poste et les responsabilités effectivement exercées (Cass. soc. 11-1-2012 n° 10-19.438 FS-D : RJS 3/12 n° 251). Le Conseil d'Etat rappelle en outre qu'un employeur peut prévoir des mesures particulières réservées à certains de ses salariés à la double condition qu'elles s'appliquent à tous les salariés de l'entreprise placés dans une situation identique et que les règles qui les encadrent soient préalablement définies et contrôlables (notamment Cass. soc. 18-1-2000 n° 98-44.745 P : RJS 3/00 n° 277 ; Cass. soc. 25-10-2007 n° 05-45.710 F-D).
    Ainsi, ne constitue pas une discrimination fondée sur l'âge et ne porte pas atteinte au principe « à travail égal, salaire égal » la faculté accordée, par les stipulations d'une convention collective, aux employeurs de procéder, sous le contrôle du juge et suivant des critères préalablement définis, à un abattement, limité dans son taux et sa durée, sur le minimum salarial de tous les cadres nouvellement diplômés dépourvus d'expérience dans la mesure où elle est en relation avec les fonctions exercées et encadrée par les entretiens réguliers auxquels l'employeur doit procéder avec l'intéressé pendant la période concernée.

    CE 16-10-2017 n° 390011, Fédération nationale des industries chimiques CGT

    102299566

  • Tuesday 14 November 2017 - 07:29

    La revue de presse de l'April est régulièrement éditée par les membres de l'association. Elle couvre l'actualité de la presse en ligne, liée au logiciel libre. Il s'agit donc d'une sélection d'articles de presse et non de prises de position de l'association de promotion et de défense du logiciel libre.

    Sommaire

    [L'OBS] Contre Google, Amazon & Co: les 6 familles de résistants aux Gafam

    Par Dominique Nora, le dimanche 12 novembre 2017. Extrait:

    Hier héros positifs de l'innovation, les Gafam [Google, Apple, Facebook, Amazon ou Microsoft] sont-ils en train de devenir les nouveaux vilains du capitalisme mondialisé? Séduisants et gratuits, leurs services sont plébiscités par des milliards d'usagers. Pourtant, en Europe et aux Etats-Unis, les attaques pleuvent à présent sur Larry Page (Alphabet/Google), Jeff Bezos (Amazon), Mark Zuckerberg (Facebook/Instagram/Whatsapp), Tim Cook (Apple) et Satya Nadella (Microsoft).

    Lien vers l'article original: https://tempsreel.nouvelobs.com/economie/20171110.OBS7195/contre-google-amazon-co-les-6-familles-de-resistants-aux-gafam.html

    [Journal du Net] Comment les entreprises peuvent tirer parti du crowdsourcing

    Par Jordan Elle, le vendredi 10 novembre 2017. Extrait:

    Alors, qu'est-ce que le crowdsourcing au juste? Le crowdsourcing est l’externalisation d’une tâche à l'ensemble de la communauté des logiciels libres.

    Lien vers l'article original: http://www.journaldunet.com/web-tech/expert/67926/comment-les-entreprises-peuvent-tirer-parti-du-crowdsourcing.shtml

    [ZDNet France] Munich sur le point de repasser de Linux à Microsoft

    Par Thierry Noisette, le jeudi 9 novembre 2017. Extrait:

    Plus d'une décennie après son très remarqué passage au logiciel libre, la capitale de la Bavière est tout près de revenir à Microsoft. Un dernier vote, en principe acquis, a lieu le 23 novembre.

    Lien vers l'article original: http://www.zdnet.fr/blogs/l-esprit-libre/munich-sur-le-point-de-repasser-de-linux-a-microsoft-39859792.htm

    [Journal du Net] Plaidoyer pour une stratégie open source ciblée au sein de l’industrie des transports

    Par Claire Lepelletier, le mardi 7 novembre 2017. Extrait:

    Une stratégie open source ciblée crée les conditions d’un avantage concurrentiel décisif. Et ce, y compris pour les industriels des transports.

    Lien vers l'article original: http://www.journaldunet.com/solutions/expert/67911/plaidoyer-pour-une-strategie-open-source-ciblee-au-sein-de-l-industrie-des-transports.shtml

    [Numerama] Comment surveille-t-on et censure-t-on Internet?

    Par Victoria Castro, le lundi 6 novembre 2017. Extrait:

    Comment Internet est-il surveillé? Filtré? Censuré? Ou tout simplement, comment fonctionne-t-il, quand il fonctionne? Tentons de donner des réponses claires à ces questions complexes.

    Lien vers l'article original: http://www.numerama.com/tech/303113-comment-surveille-t-on-et-censure-t-on-internet.html

    Lire les commentaires

  • Tuesday 14 November 2017 - 01:21
  • Monday 13 November 2017 - 20:43

    Symfony 3.3.12 has just been released. Here is a list of the most important changes:

    • bug #24954 [DI] Fix dumping with custom base class (@nicolas-grekas)
    • bug #24952 [HttpFoundation] Fix session-related BC break (@nicolas-grekas, @sroze)
    • bug #24929 [Console] Fix traversable autocomplete values (@ro0NL)

    Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy. Read our upgrade documentation to learn more.

    Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.


    Be trained by Symfony experts - 2017-11-22 Cologne - 2017-12-4 Lyon - 2017-12-4 Lyon
  • Monday 13 November 2017 - 20:36

    Symfony 2.8.30 has just been released. Here is a list of the most important changes:

    • bug #24952 [HttpFoundation] Fix session-related BC break (@nicolas-grekas, @sroze)
    • bug #24929 [Console] Fix traversable autocomplete values (@ro0NL)

    Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy. Read our upgrade documentation to learn more.

    Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.


    Be trained by Symfony experts - 2017-11-22 Cologne - 2017-12-4 Lyon - 2017-12-4 Lyon
  • Monday 13 November 2017 - 20:29

    Symfony 2.7.37 has just been released. Here is a list of the most important changes:

    • bug #24952 [HttpFoundation] Fix session-related BC break (@nicolas-grekas, @sroze)
    • bug #24929 [Console] Fix traversable autocomplete values (@ro0NL)

    Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy. Read our upgrade documentation to learn more.

    Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.


    Be trained by Symfony experts - 2017-11-22 Cologne - 2017-12-4 Lyon - 2017-12-4 Lyon
  • Monday 13 November 2017 - 17:56

    We at Instaclustr recently published a blog post on the most common data modelling mistakes that we see with Cassandra. This post was very popular and led me to think about what advice we could provide on how to approach designing your Cassandra data model so as to come up with a quality design that avoids the traps.

    There are a number of good articles around that with rules and patterns to fit your data model into: 6 Step Guide to Apache Cassandra Data Modelling and Data Modelling Recommended Practices.

    However, we haven’t found a step by step guide to analysing your data to determine how to fit in these rules and patterns. This white paper is a quick attempt at filling that gap.

    Phase 1: Understand the data

    This phase has two distinct steps that are both designed to gain a good understanding of the data that you are modelling and the access patterns required.

    Define the data domain

    The first step is to get a good understanding of your data domain. As someone very familiar with relation data modelling, I tend to sketch (or at least think) ER diagrams to understand the entities, their keys and relationships. However, if you’re familiar with another notation then it would likely work just as well. The key things you need to understand at a logical level are:

    • What are the entities (or objects) in your data model?
    • What are the primary key attributes of the entities?
    • What are the relationships between the entities (i.e. references from one to the other)?
    • What is the relative cardinality of the relationships (i.e. if you have a one to many is it one to 10 or one to 10,000 on average)?

    Basically, these are the same things you’d expect in from logical ER model (although we probably don’t need a complete picture of all the attributes) along with a complete understanding of the cardinality of relationships that you’d normally need for a relational model. An understanding of the demographics of key attributes (cardinality, distribution) will also be useful in finalising your Cassandra model. Also, understand which key attributes are fixed and which change over the life of a record.

    Define the required access patterns

  • Monday 13 November 2017 - 17:08

    User interfaces can be expressed by two things:

    1. The state of the UI
    2. Actions that can change that state

    From credit card payment devices and gas pump screens to the software that your company creates, user interfaces react to the actions of the user and other sources and change their state accordingly. This concept isn't just limited to technology, it's a fundamental part of how everything works:

    For every action, there is an equal and opposite reaction.

    - Isaac Newton

    This is a concept we can apply to developing better user interfaces, but before we go there, I want you to try something. Consider a photo gallery interface with this user interaction flow:

    1. Show a search input and a search button that allows the user to search for photos
    2. When the search button is clicked, fetch photos with the search term from Flickr
    3. Display the search results in a grid of small sized photos
    4. When a photo is clicked/tapped, show the full size photo
    5. When a full-sized photo is clicked/tapped again, go back to the gallery view

    Now think about how you would develop it. Maybe even try programming it in React. I'll wait; I'm just an article. I'm not going anywhere.

    Finished? Awesome! That wasn't too difficult, right? Now think about the following scenarios that you might have forgotten:

    • What if the user clicks the search button repeatedly?
    • What if the user wants to cancel the search while it's in-flight?
    • Is the search button disabled while searching?
    • What if the user mischievously enables the disabled button?
    • Is there any indication that the results are loading?
    • What happens if there's an error? Can the user retry the search?
    • What if the user searches and then clicks a photo? What should happen?

    These are just some of the potential problems that can arise during planning, development, or testing. Few things are worse in software development than thinking that you've covered every possible use case, and then discovering (or receiving) new edge cases that will further complicate your code once you account for them. It's especially difficult to jump into a pre-existing project where all of these use cases are undocumented, but instead hidden in spaghetti code and left for you to decipher.

    Stating the obvious

    What if we could determine all possible UI states that can result from all possible actions performed on each state? And what if we can visualize these states, actions, and transitions between states? Designers intuitively do this, in what are called "user flows" (or "UX Flows"), to depict what the next state of the UI should be depending on the user interaction.

    Picture credit: Simplified Checkout Process by Michael Pons

    In computer science terms, there is a computational model called finite automata, or "finite state machines" (FSM), that can express the same type of information. That is, they describe which state comes next when an action is performed on the current state. Just like user flows, these finite state machines can be visualized in a clear and unambiguous way. For example, here is the state transition diagram describing the FSM of a traffic light:

    What is a finite state machine?

    A state machine is a useful way of modeling behavior in an application: for every action, there is a reaction in the form of a state change. There's 5 parts to a classical finite state machine:

    1. A set of states (e.g., idle, loading, success, error, etc.)
    2. A set of actions (e.g., SEARCH, CANCEL, SELECT_PHOTO, etc.)
    3. An initial state (e.g., idle)
    4. A transition function (e.g., transition('idle', 'SEARCH') == 'loading')
    5. Final states (which don't apply to this article.)

    Deterministic finite state machines (which is what we'll be dealing with) have some constraints, as well:

    • There are a finite number of possible states
    • There are a finite number of possible actions (these are the "finite" parts)
    • The application can only be in one of these states at a time
    • Given a currentState and an action, the transition function must always return the same nextState (this is the "deterministic" part)

    Representing finite state machines

    A finite state machine can be represented as a mapping from a state to its "transitions", where each transition is an action and the nextState that follows that action. This mapping is just a plain JavaScript object.

    Let's consider an American traffic light example, one of the simplest FSM examples. Assume we start on green, then transition to yellow after some TIMER, and then RED after another TIMER, and then back to green after another TIMER:

    const machine = {
      green: { TIMER: 'yellow' },
      yellow: { TIMER: 'red' },
      red: { TIMER: 'green' }
    };
    const initialState = 'green';

    A transition function answers the question:

    Given the current state and an action, what will the next state be?

    With our setup, transitioning to the next state based on an action (in this case, TIMER) is just a look-up of the currentState and action in the machine object, since:

    • machine[currentState] gives us the next action mapping, e.g.: machine['green'] == {TIMER: 'yellow'}
    • machine[currentState][action] gives us the next state from the action, e.g.: machine['green']['TIMER'] == 'yellow':
    // ...
    function transition(currentState, action) {
      return machine[currentState][action];
    }
    
    transition('green', 'TIMER');
    // => 'yellow'

    Instead of using if/else or switch statements to determine the next state, e.g., if (currentState === 'green') return 'yellow';, we moved all of that logic into a plain JavaScript object that can be serialized into JSON. That's a strategy that will pay off greatly in terms of testing, visualization, reuse, analysis, flexibility, and configurability.

    See the Pen Simple finite state machine example by David Khourshid (@davidkpiano) on CodePen.

    Finite State Machines in React

    Taking a look at a more complicated example, let's see how we can represent our gallery app using a finite state machine. The app can be in one of several states:

    • start - the initial search page view
    • loading - search results fetching view
    • error - search failed view
    • gallery - successful search results view
    • photo - detailed single photo view

    And several actions can be performed, either by the user or the app itself:

    • SEARCH - user clicks the "search" button
    • SEARCH_SUCCESS - search succeeded with the queried photos
    • SEARCH_FAILURE - search failed due to an error
    • CANCEL_SEARCH - user clicks the "cancel search" button
    • SELECT_PHOTO - user clicks a photo in the gallery
    • EXIT_PHOTO - user clicks to exit the detailed photo view

    The best way to visualize how these states and actions come together, at first, is with two very powerful tools: pencil and paper. Draw arrows between the states, and label the arrows with actions that cause transitions between the states:

    We can now represent these transitions in an object, just like in the traffic light example:

    const galleryMachine = {
      start: {
        SEARCH: 'loading'
      },
      loading: {
        SEARCH_SUCCESS: 'gallery',
        SEARCH_FAILURE: 'error',
        CANCEL_SEARCH: 'gallery'
      },
      error: {
        SEARCH: 'loading'
      },
      gallery: {
        SEARCH: 'loading',
        SELECT_PHOTO: 'photo'
      },
      photo: {
        EXIT_PHOTO: 'gallery'
      }
    };
    
    const initialState = 'start';

    Now let's see how we can incorporate this finite state machine configuration and the transition function into our gallery app. In the App's component state, there will be a single property that will indicate the current finite state, gallery:

    class App extends React.Component {
      constructor(props) {
        super(props);
    
        this.state = {
          gallery: 'start', // initial finite state
          query: '',
          items: []
        };
      }
      // ...

    The transition function will be a method of this App class, so that we can retrieve the current finite state:

      // ...
      transition(action) {
        const currentGalleryState = this.state.gallery;
        const nextGalleryState =
          galleryMachine[currentGalleryState][action.type];
    
        if (nextGalleryState) {
          const nextState = this.command(nextGalleryState, action);
    
          this.setState({
            gallery: nextGalleryState,
            ...nextState // extended state
          });
        }
      }
      // ...

    This looks similar to the previously described transition(currentState, action) function, with a few differences:

    • The action is an object with a type property that specifies the string action type, e.g., type: 'SEARCH'
    • Only the action is passed in since we can retrieve the current finite state from this.state.gallery
    • The entire app state will be updated with the next finite state, i.e., nextGalleryState, as well as any extended state (nextState) that results from executing a command based on the next state and action payload (see the "Executing commands" section)

    Executing commands

    When a state change occurs, "side effects" (or "commands" as we'll refer to them) might be executed. For example, when a user clicks the "Search" button and a 'SEARCH' action is emitted, the state will transition to 'loading', and an async Flickr search should be executed (otherwise, 'loading' would be a lie, and developers should never lie).

    We can handle these side effects in a command(nextState, action) method that determines what to execute given the next finite state and action payload, as well as what the extended state should be:

      // ...
      command(nextState, action) {
        switch (nextState) {
          case 'loading':
            // execute the search command
            this.search(action.query);
            break;
          case 'gallery':
            if (action.items) {
              // update the state with the found items
              return { items: action.items };
            }
            break;
          case 'photo':
            if (action.item) {
              // update the state with the selected photo item
              return { photo: action.item };
            }
            break;
          default:
            break;
        }
      }
      // ...

    Actions can have payloads other than the action's type, which the app state might need to be updated with. For example, when a 'SEARCH' action succeeds, a 'SEARCH_SUCCESS' action can be emitted with the items from the search result:

        // ...
        fetchJsonp(
          `https://api.flickr.com/services/feeds/photos_public.gne?lang=en-us&format=json&tags=${encodedQuery}`,
          { jsonpCallback: 'jsoncallback' })
          .then(res => res.json())
          .then(data => {
            this.transition({ type: 'SEARCH_SUCCESS', items: data.items });
          })
          .catch(error => {
            this.transition({ type: 'SEARCH_FAILURE' });
          });
        // ...

    The command() method above will immediately return any extended state (i.e., state other than the finite state) that this.state should be updated with in this.setState(...), along with the finite state change.

    The final machine-controlled app

    Since we've declaratively configured the finite state machine for the app, we can render the proper UI in a cleaner way by conditionally rendering based on the current finite state:

      // ...
      render() {
        const galleryState = this.state.gallery;
    
        return (
          <div className="ui-app" data-state={galleryState}>
            {this.renderForm(galleryState)}
            {this.renderGallery(galleryState)}
            {this.renderPhoto(galleryState)}
          </div>
        );
      }
      // ...

    The final result:

    See the Pen Gallery app with Finite State Machines by David Khourshid (@davidkpiano) on CodePen.

    Finite state in CSS

    You might have noticed data-state={galleryState} in the code above. By setting that data-attribute, we can conditionally style any part of our app using an attribute selector:

    .ui-app {
      // ...
      
      &[data-state="start"] {
        justify-content: center;
      }
      
      &[data-state="loading"] {
        .ui-item {
          opacity: .5;
        }
      }
    }

    This is preferable to using className because you can enforce the constraint that only a single value at a time can be set for data-state, and the specificity is the same as using a class. Attribute selectors are also supported in most popular CSS-in-JS solutions.

    Advantages and resources

    Using finite state machines for describing the behavior of complex applications is nothing new. Traditionally, this was done with switch and goto statements, but by describing finite state machines as a declarative mapping between states, actions, and next states, you can use that data to visualize the state transitions:

    Gallery app state transition diagram

    Furthermore, using declarative finite state machines allows you to:

    • Store, share, and configure application logic anywhere - similar components, other apps, in databases, in other languages, etc.
    • Make collaboration easier with designers and project managers
    • Statically analyze and optimize state transitions, including states that are impossible to reach
    • Easily change application logic without fear
    • Automate integration tests

    Conclusion and takeaways

    Finite state machines are an abstraction for modeling the parts of your app that can be represented as finite states, and almost all apps have those parts. The FSM coding patterns presented in this article:

    • Can be used with any existing state management setup; e.g., Redux or MobX
    • Can be adapted to any framework (not just React), or no framework at all
    • Are not written in stone; the developer can adapt the patterns to their coding style
    • Are not applicable to every single situation or use-case

    From now on, when you encounter "boolean flag" variables such as isLoaded or isSuccess, I encourage you to stop and think about how your app state can be modeled as a finite state machine instead. That way, you can refactor your app to represent state as state === 'loaded' or state === 'success', using enumerated states in place of boolean flags.

    Resources

    I gave a talk at React Rally 2017 about using finite automata and statecharts to create better user interfaces, if you want to learn more about the motivation and principles:

    Slides: Infinitely Better UIs with Finite Automata

    Here are some further resources:


    Robust React User Interfaces with Finite State Machines is a post from CSS-Tricks

  • Monday 13 November 2017 - 17:03

    Avec un temps à rester derrière son ordinateur, j’ai le plaisir de vous annoncer la sortie d’ OpenShot 2.4.1. Au menu, pas de grosses nouveautés. Celles-ci devraient venir avec la 2.5.0. Enfin, j’espère. Toutefois, nous avons un bon lot d’amélioration. Jetons-y un œil.

     

    Amélioration de la qualité d’images

    La pipeline de traitement d’image dans OpenShot a été améliorée. Le résultat est un meilleur piqué de l’ image et une légère amélioration des performances.

     

    Amélioration de la fluidité de la lecture

    La prévisualisation des vidéos dans le lecteur a été aussi amélioré pour gérer les framerates supérieurs (50, 60, 120 fps). Le résultat est une lecture sensiblement plus fluide et moins de freeze et de sauts avec certains profils.

     

    Amélioration de la stabilité (surtout avec Windows

    De grands changements sur Libopenshot ont été fait pour obtenir un meilleur support sur Windows. Cela a permis de résoudre pas mal de bogues pour Windows tel que des problèmes de désync/synchronisation, vidéos s’arrêtant à 30 minutes, arrêt prématuré des fichiers audios, ….

    A chaque version, dés que nous sommes capables de reproduire le crash, de nombreux correctifs sont ajoutés afin d’ améliorer sa stabilité. Avec pour résultat, une diminution par 10 sur les 12 derniers mois. Et nous continuerons à travailler dans ce sens avec acharnement.

     

    Nouveaux tutoriels vidéos

    Voici le premier tutoriel vidéo officiel d’ OpenShot (ci-dessus). D’autres sont en cours (de 5 à 10 minutes) et viendront s’ajouter à ceux existants. Ils couvriront toutes les fonctionnalités, secrets,…

     

    Site web disponible dans plusieurs langues

    Un effort important de la communauté des traducteurs du projet a été fourni afin de disposer d’un site officiel dans différentes langues dont le Français. Si votre langue natale n’y est pas, contacter Jonathan afin qu’il vous explique la marche à suivre. Voici les liens des versions traduites du site en Français, Hollandais, Finnois, Islandais, Norvégien, Turc et Ukrainien.

    Voici tout ce qui concerne cette petite version. Pour ceux et celles qui veulent en savoir plus, cliquez sur ce lien. Attention, c’est en anglais. Bonne lecture et bon tests.


    Classé dans:Edition Vidéo, framework, Logiciels, Multimédia, News, OpenShot, Planet-Libre Tagged: Edition Vidéo, Libre, Linux, Logiciels, Multimédia, News, OpenShot

    Gravatar de Cenwen
    Original post of Cenwen.Votez pour ce billet sur Planet Libre.

    Articles similaires

  • Monday 13 November 2017 - 15:25

    Depuis un petit moment maintenant, de nombreuses sociétés et organisations tentent de trouver des solutions pour contrer le Bug Bounty sauvage (open bug bounty) ou encore empêcher le full disclosure qui consistent à révéler publiquement une faille de sécurité.

    Vous connaissez aussi sans doute aussi le concept de “Divulgation Responsable” (Responsible Disclosure), qui reprend le concept du Full Disclo, à la différence prêt que cette fois, le découvreur de la faille laisse le temps à l'éditeur de publier un correctif.

    Mais cela ne se passe pas toujours sans chamaillerie. En effet, les chercheurs souhaitent prévenir le plus vite possible la communauté de leur découverte et les éditeurs prennent souvent beaucoup de temps à proposer un correctif. Et pendant ce temps, le système impacté reste à la merci d'éventuels attaquants.

    C’est la raison pour laquelle de nombreuses organisations plaident en faveur du concept de “Divulgation coordonnée de vulnérabilités” (DCV) afin de promouvoir et renforcer la coopération entre les différents acteurs de la cybersécurité qui tous ont un objectif commun : rendre l’Internet plus sûr.

    Sur le blog de YesWeHack, nous avons publié un article à ce sujet, que je partage avec vous ici.

    ---

    La Divulgation coordonnée de Vulnérabilités ( DCV ) est un processus visant à réduire les risques et in fine à atténuer les dommages potentiellement causés par une vulnérabilité ciblant un système d’information. La DCV ( CVD en anglais ) est un processus que l’on ne peut pas réduire au déploiement d’un correctif ou à la publication d’un rapport quand bien même ces événements sont des indicateurs de l’efficience de la coopération.

    La divulgation coordonnée des vulnérabilités est donc le processus qui consiste à collecter des informations auprès des chercheurs de vulnérabilités, à coordonner le partage de ces informations entre les acteurs et à divulguer l’existence de vulnérabilités (logicielles, voire matérielles) et leurs mesures d’atténuation à diverses parties prenantes, y compris le grand public.

    Cette pratique accroît de manière significative les chances de réussite de tout processus de réponse à vulnérabilité. Les contributions sont souvent des rapports de vulnérabilité rédigés par des chercheurs en sécurité.

    Les rapports DCV concernant un produit (logiciel ou matériel) comprennent généralement des correctifs ainsi que des documents de rapport de vulnérabilité ou des enregistrements dans une base de données de vulnérabilités. Notez que de nombreuses vulnérabilités opérationnelles peuvent être aussi corrigées par l’opérateur et elles ne se traduisent pas forcément par une divulgation publique.

    La divulgation des vulnérabilités est un processus par lequel les fournisseurs et les personnes qui découvrent des vulnérabilités peuvent travailler en collaboration pour trouver des solutions qui réduisent les risques associés à une vulnérabilité.

    Norme ISO/CEI 29147 définissant la Divulgation de Vulnérabilités

    Ce processus comprend des actions tels que le signalement, la coordination et la publication d’informations sur une vulnérabilité, son atténuation voire, dans l’idéal, sa résolution.

    À ce stade, décortiquons la DCV :

    Les principes:

    • Réduire les risques donc les dommages
    • Croire aux bonnes actions donc aux bons samaritains
    • Éviter le hasard
    • Stimuler la coopération
    • Suivre la déontologie
    • Apprendre de la boucle OODA
    • Considérer la DCV comme un processus naviguant entre le “meilleur” et le “pire”.

    Les objectifs :

    • veiller à ce que les vulnérabilités identifiées soient prises en compte;
    • réduire au minimum le risque de vulnérabilité;
    • fournir aux utilisateurs suffisamment d’informations pour évaluer les risques liés aux vulnérabilités de leurs systèmes;

    Les acteurs :

    La Divulgation coordonnée de Vulnérabilités commence communément par la détection d’une vulnérabilité et se termine par le déploiement de correctifs ou d’atténuation.

    Par conséquent, plusieurs acteurs sont impliqués dans le processus de CVD :

    • Chercheur en sécurité – la personne ou l’organisation qui identifie la vulnérabilité.
    • Rapporteur – la personne ou l’organisation qui avise le fournisseur de la vulnérabilité.
    • Fournisseur – la personne ou l’organisation qui a créé ou entretient le produit vulnérable.
    • Administrateur système – personne ou organisation qui doit déployer un correctif ou prendre d’autres mesures correctives.
    • Coordinateur – personne ou organisation qui facilite le processus d’intervention coordonnée.

    Les étapes :

    • Découverte – Quelqu’un découvre une vulnérabilité dans un produit.
    • Rapport – Le fournisseur du produit ou un tiers coordinateur reçoit un rapport de vulnérabilité.
    • Qualification – Le destinataire d’un rapport le valide pour s’assurer de son exactitude avant de le prioriser en vue d’une action ultérieure.
    • Remédiation – Un plan d’assainissement (idéalement un correctif logiciel) est élaboré et mis à l’essai.
    • Sensibilisation du public – La vulnérabilité et les mesures correctrices sont divulguées au public.
    • Déploiement – Les mesures correctrices sont appliquées aux systèmes concernés.

    La phase de rapport est importante, car elle requiert de créer des canaux sécurisés pour éviter que les informations transmises soient interceptées par une tierce partie.

    Ce processus connaît cependant des obstacles :

    • Aucun contact du fournisseur disponible – Ceci peut se produire parce qu’un contact n’a pas pu être trouvé ou parce que le contact n’est pas réactif.
    • Cessation de coopération – les participants au processus de DCV pourraient avoir d’autres priorités qui attirent leur attention.
    • Fuites d’information – Qu’elles soient intentionnelles ou non, les informations destinées à un groupe restreint d’acteurs, peuvent être transmises à d’autres personnes qui ne participent pas au processus de DCV.
    • Découverte indépendante – Toute vulnérabilité qui peut être trouvée par un individu peut être trouvée par un autre, et tous ne vous en parleront pas.
    • Exploitation active – Les preuves qu’une vulnérabilité est activement exploitée par des adversaires nécessitent d’accélérer le processus de DCV pour réduire l’exposition des utilisateurs au risque.
    • La communication se détériore – La DCV est un processus de coordination d’activités humaines. En tant que tel, son succès dépend de la quatité des relations entre les participants.
    • Marketing – Dans certains cas, les vulnérabilités peuvent être utilisées comme un outil de marketing. Cela n’est pas toujours propice au bon déroulement du processus de DCV.

    En synthèse :

    Les pratiques de divulgation des vulnérabilités ne se limitent plus aux applications web. L’Internet des objets et la constellation de systèmes SCADA, d’appareils de santé connectés, de caméras de surveillance, de voitures connectées, de drones, etc. sont devenus tellement dépendants des logiciels et de l’Internet qu’ils augmentent le périmètre d’exposition et, de ce fait, seront inéluctablement exposés à de nouvelles attaques.

    La Divulgation coordonnée de Vulnérabilités est une alliée majeure pour fédérer le plus grand nombre d’acteurs du cyberespace et stimuler l’échange de savoirs pour mieux assurer dès la conception : la sécurité et la protection de la vie privée.

    En incitant à la coopération, la DCV permettra à tous les acteurs de la cybersécurité non seulement de défendre leurs bastions et leurs patrimoines informationnels, mais aussi de lutter plus efficacement contre le marché noir et/ou la revente de Zerodays.

    Le décor est maintenant planté, alors passons de la théorie à la pratique.

    Security.txt : la prometteuse RFC !

    Afin de répondre au manque de contacts mis à disposition pour divulguer une vulnérabilité sur un site web , le chercheur en sécurité EdOverflow, bien inspiré par le rôle du fameux robots.txt, a suggéré depuis début août 2017 d’inclure dans chaque site web le fichier security.txt comme fichier de référence contenant la marche à suivre pour divulguer plus efficacement à l’éditeur d’un site un bug, une vulnérabilité.

    Cette méthode a le mérite d’établir des lignes directrices claires pour les chercheurs en sécurité sur la façon de signaler les problèmes de sécurité et permet aux programmes de Bug Bounty de s’en inspirer pour mieux définir le périmètre d’attaque proposé aux futurs chercheurs.

    Security.txt est une ébauche qui a été soumise à l’examen de la RFC. Cela signifie que security.txt en est encore aux premiers stades de développement. Vous pouvez y contribuer sur github !

    Le Bug Bounty comme composant de votre politique de divulgation

    Dans le cadre d’un développement agile sur leurs propres produits, de plus en plus de fournisseurs choisissent d’être pro-actifs en stimulant et en coopérant avec les chercheurs de vulnérabilités :

    • soit en misant sur les ressources et expertises en interne.
    • soit en contractant directement avec des chercheurs externes
    • soit en passant par une plateforme qui va mettre en relation des chercheurs et l’éditeur de la solution. Ce dernier paiera donc au résultat et pourra choisir différentes formules et options payantes telles que le management de programme voire le patch management si ses ressources en interne ne sont pas suffisantes.

    La création et l’instauration dans la durée d’un programme de Bug Bounty sont considérées comme des indicateurs de maturité de la cybergouvernance des éditeurs en matière de vulnérabilité.

    Depuis 2013, YesWeHack travaille au développement d’outils qui facilitent grandement la mise en place d’un politique incitative à la divulgation coordonnée de vulnérabilités. Sa communauté et son écosystème de services permettent aux organisations et aux chercheurs en sécurité informatique de mieux coopérer.

    Grâce aux outils développés par YWG-H, les organisations bénéficiaires peuvent contourner plus aisément les obstacles rencontrés par leur politique de DCV. De plus, les organisations gagnent en notoriété en démontrant leur appétence et leur volonté d’améliorer en continu leurs systèmes.

    Notre plateforme européenne de Bug Bounty a beaucoup d'avantages qui la rendent unique :

    • un recours à des partenaires et prestataires européens pour des questions de souveraineté.
    • une infrastructure légale et technique qui répond aux exigences de sécurité les plus élevées.
    • la sécurité et la confidentialité des communications basées sur le chiffrement et le respect des normes ISO.
    • une sécurisation des transactions financières entre les organisations et les chercheurs en sécurité.
    • une plateforme de paiement conforme aux dispositifs européens de lutte contre le blanchiment d’argent et contre le financement du terrorisme.
    • un accompagnement tout au long du processus : de la rédaction du programme jusqu’à l’aide aux correctifs.
    • un classement opérationnel des meilleurs chercheurs : Gestion d’une communauté de chercheurs en sécurité.
    • une réactivité qui permet de mobiliser les meilleurs chercheurs en un temps record.
    • une capacité d’organisation de différents types de programmes de Bug Bounty (Privé / public / In situ / Hardware et/ou Software).

    Quelle démarche adopter si un produit ne propose ni Bug Bounty ni Security.txt ?

    Il existe un outil simple et efficace pour éviter les remontées sauvages de vulnérabilités : Zerodisclo.com

    Il est important de noter que certains produits (logiciel ou physique) ne disposent pas de leur propre programme de Bug Bounty. Il est ainsi délicat pour un chercheur en sécurité de pouvoir remonter une vulnérabilité à une société éditrice. Tous les pays ne disposent pas d’une loi permettant ce type de pratique comme c’est l’objet de l’article 47 de la Loi pour une République numérique initiée par l’ANSSI.

    YesWeHack a crée Zerodisclo.com pour faciliter les remontées de vulnérabilités de façon sécurisée, voire anonyme, et ainsi mettre en relation les différents acteurs œuvrant pour un Internet plus sûr. Grâce à Zerodisclo plusieurs obstacles sont levés : Pas de login, anonymisation du rapport via le réseau Tor (.onion) et chiffrement obligatoire et automatique du contenu du rapport avec la clef PGP publique du CERT choisi. Vous pouvez consulter la liste des CERTs inclus dans ZeroDisclo.com

    À titre d’exemple : vous pouvez aussi rapporter directement au CERT FR en cliquant sur le lien suivant > https://zerodisclo.com/#cert-fr

    J'espère que certe article vous aura aidé à y voir plus clair sur ce qu'est la Divulgation coordonnée de Vulnérabilités et que cela vous aura donné envie de vous y mettre pour reprendre enfin le contrôle de vos vulnérabilités.

    Cet article merveilleux et sans aucun égal intitulé : A propos de la divulgation coordonnée de vulnérabilités ; a été publié sur Korben, le seul site qui t'aime plus fort que tes parents.

  • Monday 13 November 2017 - 14:30

       

    If anything’s clear in 2017, it’s that lying is back in fashion (if it ever left us at all). From the heated fake news debate to the false data provided by Facebook, lying is all the rage these days. A white lie here and there is no big deal. We’re all guilty of it. The problem arises when lies turn into full-grown myths, then become accepted as truths.

    Mobile Interface Myths You Should Throw Out The Window

    In an era of digital chaos, we understandably gravitate to our trusted sources of information. For us designers, this usually means guidelines as defined by juggernauts such as Google and Apple.

    The post Mobile Interface Myths You Should Throw Out The Window appeared first on Smashing Magazine.

  • Monday 13 November 2017 - 13:26

    How does a reseller account work?

    You buy reseller hosting from a web hosting company. This has limited, but generous, bandwidth and disk storage. You then offer hosting to your clients, often providing unlimited bandwidth and storage. You over-sell the limits on your reseller account because clients want ‘unlimited’, and you know they are highly unlikely ever to reach your account limits.

    Each client gets their own cPanel control panel and can do almost everything they can do with a big hosting company.

    You have a WHM® (Web Hosting Manager) control panel, where you allocate bandwidth and disk space. Your WHM® panel is also where you handle your invoicing and support.

    Pros and cons of offering reseller hosting

    Reseller hosting looks like a win-win situation because nobody ever talks about the downside. And there are downsides for both parties.

    Clients’ big downside is that they can’t chat with the support experts: The only person your clients can contact for support is you.

    Support is the big issue for you as well. Clients send you their problems as support tickets, and you contact the web host’s support department. When you get the answer, you relay that to the client. It is unsatisfactory for everyone: The client has to wait longer for the solution to their problem, and you have the extra hassle of dealing with support requests at all hours of the day and night.

    Some clients will need a lot of help. They may:

    • Have trouble doing the simplest things, meaning you have to install WordPress and set up their site for them
    • Install incompatible or poorly coded WordPress plugins, so they require your help to solve WP issues they should have avoided in the first place
    • Not install anti-spam plugins, so your disk space gets overfull
    • Spam their customers from their domain email addresses, causing all your clients’ emails to be classified as spam

    You can spend hours every day dealing with support requests.

    The alternative upsell – hosting advice

    Every web hosting company has an affiliate program that pays $50-100 for each referral who buys a hosting package. This is easier money than dealing with endless support demands as part of a reseller package, and your client gets a better service because you have recommended the best hosting for their situation.

    If your clients and their customers are in the UK, then recommend a UK-based web host. If they are in the US, then a US-based host will suit their needs better. Location is not something most clients ever think about, so just by considering that, you are helping them find better hosting than they would otherwise.

    Devise a questionnaire for clients to elicit their needs. Include questions like:

    • How many sites will you need hosting for?
    • How many visitors do they anticipate per day?
    • Will need an e-commerce site?
    • How much support will they need?

    Shared hosting

    Shared hosting is ideal for first-timers, companies who have never had a website before. It is cheap but limited, and if the venture is successful your client will outgrow their shared hosting, but they can then upgrade to VPS hosting with the same company.

    VPS hosting

    VPS (virtual private server) hosting is the next stage up from a shared server. It is more complicated, more expensive, but will make a site with lots of users run faster than a shared server will.

    Cloud hosting

    Cloud hosting can be an alternative to a VPS. The complexity and speed are similar, though cost varies depending on requirements. Recommend cloud hosting where a client anticipates significant variations in demand or does not want to commit to a 3-year VPS contract because cloud hosting is bought on a monthly basis.

    The short version

    You are the expert in all things Internet, so your clients see you as the fount of all wisdom. They will listen and take action on your advice.

    Reseller hosting has problems for both you and your clients. You get the run around from endless support demands, and your clients get a poorer service than they would by buying directly from a hosting company.
    A better upsell is to assess clients’ needs and send them via affiliate links to your selected hosting company sites.

  • Monday 13 November 2017 - 13:22

    Qui ne s'est pas déjà retrouvé bête avec deux périphériques ultra-connectés (ordiphone, PC, …) dans les mains sans pouvoir transférer un fichier de l'un à l'autre, rapidement et simplement (sans sortir ses outils en console ou faire appel à un Nuage), dans le cas où un des périphériques n'a pas le Bluetooth ?
    Cette dépêche présente brièvement deux outils pour répondre à ce besoin : woof et ShareViaHttp.

    Prérequis

    • les deux périphériques doivent être accessibles dans un même réseau (généralement le besoin c'est dans le réseau local mais ça marche sur Internet)
    • au moins un des périphériques doit tourner sous Android ou Linux
    • coté Linux, l'intégration a été réalisée et testée avec Thunar mais elle doit pouvoir s'adapter facilement à d'autres gestionnaires de fichiers. Principales dépendances : python, zenity (facultatif)

    Les outils

    woof fournit un serveur web minimal pour servir un fichier que vous passez en argument. Le projet n'a pas l'air très vivant, mais le code fourni répond au besoin et il existe un paquet Debian.

    Share via HTTP est une appli pour Android, libre et disponible sur le marché libre F-Droid. Elle permet de la même manière de servir rapidement un fichier présent sur un périphérique Android.

    Configuration

    • coté Android : rien à faire, l'option de partage « Share via HTTP » apparait automatiquement dans les navigateurs de fichiers lorsque vous sélectionnez un ou plusieurs fichiers.

    • coté Linux : woof étant un script Python, un petit script d'habillage permet de faciliter son utilisation en l'intégrant dans Thunar :

      !/bin/sh

      partage d'un fichier avec Woof et affichage d'un popup rappellant l'adresse d'accès.

      PORT=9999
      MON_IP_PRIVE=ip addr | awk '/inet / {sub(/\/.*/, "", $2); print $2}' |grep 192
      MON_IP_PUB=wget -qO- http://ipecho.net/plain
      FICHIER=$1

      echo "Partage de '$FICHIER' avec Woof."

      woof -p $PORT $FICHIER &

      CODE_SORTIE=$?
      echo "Code sortie : $CODESORTIE"

      Affichage de la fenêtre

      zenity --title="Partage d'un fichier" --info --text="Fichier '$FICHIER' disponible via http://$MON_IP_PRIVE:$PORT ou http://$MON_IP_PUB:$PORT."&

    Maintenant on peut faire le lien dans Thunar de manière à pouvoir appeler le script par un clic droit sur le fichier à partager. Pour cela il faut passer par Édition > Configurer les actions personnalisées… > Ajouter une nouvelle action personnalisée.
    Indiquer dans la commande le chemin d'accès au script et vérifier dans l'onglet « Conditions d'apparition » que tous les types de fichiers sont bien cochés.

    Création d'une action personnalisée dans Thunar

    Utilisation

    Une fois que tout est configuré, il suffit de partager d'un coté, puis de se connecter avec votre navigateur (voire wget) sur l'adresse IP et le port indiqué par ShareViaHTTP ou woof.

    Aperçu du partage avec woof et le script d'habillage utilisé dans Thunar

    L'action Partager est maintenant disponible par un clic droit sur n'importe quel fichier dans Thunar

    Un popup est affiché pour rappeler l'adresse à rentrer sur le 2e périphérique

    Aperçu du partage coté Android avec ShareViaHTTP

    aperçu coté Android

    Nota :

    • ShareViaHTTP permet de partager plusieurs fichiers en même temps en créant un zip ;
    • Si vous avez besoin de transférer un fichier depuis votre ami Michue ayant un périphérique utilisant Windows par exemple, il est possible d'utiliser woof en mode upload ;
    • le port par défaut est 9999 ce qui est facile à retenir.

    Lire les commentaires

  • Monday 13 November 2017 - 12:01
    Initié il y a plus de 20 ans, les programmes d’affiliation sont un levier essentiel d’acquisition de trafic. Certes, ces programmes sont beaucoup moins « glamour » qu’une belle page Facebook, mais la spectaculaire montée en puissance des pratiques d’influence sur les médias sociaux les remet au gout du jour. Je vous livre dans cet article une … Lire la suite Des programmes d’affiliation aux stratégies d’influence
  • Monday 13 November 2017 - 10:00

    Twitter est un réseau social de microblogage qui permet à un utilisateur d’envoyer des tweets limités à 140 caractères. Pour le projet Datatlas, j’ai eu besoin de récupérer le nombre de followers de différents utilisateurs sur ce réseau social.

    Logo Twitter

    Pré-requis

    Comme pré-requis, on va utiliser le package TwitterOAuth.

    Pour cela, on va l’installer via Composer :

    $ composer require abraham/twitteroauth

    Vous pouvez le retrouver sur Packagist.

    Créer une application Twitter

    Il faut tout d’abord créer une application sur l’accès Développeurs de Twitter.

    Twitter : Créer une application

    Après la création, il vous faudra aller sur la page « Keys and Access Tokens » pour récupérer quatre variables :

    • $consumerKey
      : Consumer Key (API Key)
    • $consumerSecret
      : Consumer Secret (API Secret)
    • $oauthToken
      : Access Token
    • $oauthTokenSecret
      : Access Token Secret

    Récupérer le nombre de followers d’un compte Twitter

    Il faut récupérer l’objet « User » du compte souhaitée.

    Malheureusement, l’API Twitter ne permet pas de récupérer directement un compte souhaitée. Il faut passer par une recherche pour accéder à l’info du compte.

    Pour un compte, l’identifiant correspond à la dernière partie de l’URL.
    Ainsi pour le CNES, l’identifiant est

    CNES
    pour l’URL
    https://twitter.com/CNES
    .

    $oAPI = new TwitterOAuth($consumerKey, $consumerSecret, $oauthToken, $oauthTokenSecret);
    
    $users = $oAPI->get('/users/lookup', array(
      'screen_name' => $id
    ));
    $user = reset($users);
    $numFollowers = $user->followers_count;

    A suivre

    Ceci est une série d’articles permettant de récupérer le nombre de followers sur les différents réseaux sociaux :

    Cet article Récupérer le nombre de followers sur Twitter en PHP est apparu en premier sur RootsLabs.

  • Monday 13 November 2017 - 09:56

    Le projet de loi de financement de la sécurité sociale pour 2018 a été adopté en première lecture le 31 octobre 2017 par les députés. L'examen du projet de loi en séance publique au Sénat est programmé du 13 au 21 novembre.

    A l'état de projet, le texte prévoit les dispositions suivantes :

    1. La cotisation salariale maladie de 0,75 % serait supprimée dès le 1er janvier 2018 tandis que la cotisation salariale chômage disparaîtrait en deux temps : 
      -  réduction de 1,45 point du 1er janvier au 30 septembre 2018 : son taux serait donc ramené à 0,95 % sur cette période ; 
      -  suppression totale à partir du 1er octobre 2018;
    2. A compter du 1er janvier 2019, une réduction pérenne du taux de la cotisation patronale d'assurance maladie, actuellement fixé à 12,89 %, serait instituée en remplacement du crédit d'impôt compétitivité emploi (Cice), dont la suppression est prévue par le projet de loi de finances pour 2018. La réduction serait de 6 points et concernerait les salariés dont la rémunération n'excède pas 2,5 Smic travaillant pour un employeur entrant dans le champ de la réduction générale de cotisations;
    3. Le projet de loi prévoit d'élargir le champ d'application de la réduction générale de cotisations patronales aux cotisations de retraite complémentaire (cotisations à l'Agirc-Arrco et l'AGFF) et aux contributions d'assurance chômage;
    4. A compter du 1er janvier 2019, un dispositif serait mis en place permettant au cotisant ayant besoin d'un délai pour le paiement de ses cotisations sociales de formuler une demande unique. Ainsi, lorsqu'une demande d'échéancier de paiement serait adressée à l'Urssaf, cet organisme la communiquerait, ainsi que sa réponse, à la ou aux institutions de retraite complémentaire dont relève le cotisant. L'octroi d'un échéancier de paiement par l'Urssaf emporterait, dans les conditions déterminées par décret, le bénéfice d'un échéancier de paiement similaire au titre des cotisations patronales de retraite complémentaire légalement obligatoires;
    5. Le taux de la CSG progresserait de 1,7 point. Cette augmentation concernerait : 
      -  les revenus d'activité, le taux passant à 9,2 %, contre 7,5 % actuellement,
      -  les pensions de retraite et d'invalidité, le taux passant à 8,3 %, contre 6,6 % actuellement;
    6. L'article 11 du projet de loi modifie le champ d'application du régime général de sécurité sociale afin d'inclure dans son périmètre l'assurance maladie-maternité des travailleurs indépendants. Il est ainsi prévu de confier aux caisses du régime général le versement des prestations maladie-maternité et la protection maladie universelle des travailleurs indépendants;
    7. Le régime vieillesse de base des travailleurs indépendants hors professionnels libéraux, actuellement géré par le RSI, serait confié au régime général. Leur régime complémentaire de retraite et d'invalidité-décès n'y serait pas intégré.

     

    102299566

  • Monday 13 November 2017 - 00:01

    Pour la 45ème semaine de 2017, voici 12 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

    Pour ne plus rater aucun article de la communauté francophone, voici :

    De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

    Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

    Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker ou bien dans les commentaires de ce billet :)

    Gravatar de Journal du hacker
    Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

    Articles similaires

  • Monday 13 November 2017 - 00:00

    Comme d’habitude, le PHP Tour est fait pour vous et par vous : l’appel à conférences n’attend que vos propositions. En PHP ou en Hack, avec un framework ou non, en HTTP ou HTTPS, en REST ou en GraphQL, en SQL ou en noSQL, avec du TDD ou du BDD, adepte du DDD, de CQRS ou d'Event Sourcing, avec ou sans serveurs, venez comme vous êtes ! Retours d’expérience ou réflexions académiques, vous trouverez un public ouvert et bienveillant, composé de débutant·e·s ou de profils plus expérimenté·e·s. Vous avez forcément quelque chose à leur faire partager.

    Conférencier·e chevronné·e ou débutant·e, n'hésitez pas. Le PHP Tour, c’est la conférence du web, du PHP, et des technologies associées, par et pour la communauté. Que vous soyez dans une startup ou une multinationale, développeur·euse confirmé·e ou stagiaire, salarié·e ou freelance, architecte backend ou génie du frontend, votre expérience nous intéresse !

    Nous proposons également un programme de mentoring grâce auquel vous pouvez bénéficier de l’aide d’un(e) orateur ou oratrice confirmé·e, qui peut vous accompagner tout au long de votre démarche, de la soumission du sujet jusqu'à votre talk. Avec des formats pour tous les goûts : 40 ou 20 minutes, plus d’excuse pour ne pas proposer. Vous avez jusqu’au 10 décembre pour soumettre vos sujets, alors au boulot !

    Enfin, n'oubliez pas de votez pour les sujets que vous aimeriez voir : vos votes aiguillent nos choix et précisent vos attentes. Il vous suffit de vous connecter à votre compte Github pour pouvoir voter. 

  • Sunday 12 November 2017 - 22:11

    Bonjour,

    Je possède un vieil Acer Aspire 5611 de 2006 qui n’a pas une vie facile puisque je m’en sers pour tester les distributions les plus farfelues. J’ignore combien de fois j’ai pu formater son disque dur. Je pourrais très bien le faire dans une machine virtuelle me direz-vous, au lieu de m’acharner sur ce pauvre bougre qui ne demande qu’à partir à la casse mais je suis un sadique et tant que cet ordinateur possédera ne serait-ce qu’un bit de conscience-machine, je continuerai mes expériences.

    aceraspire

    Donc, après m’en être servi pendant plusieurs mois pour beta-tester l’Emmabuntüs DE 2, je me suis dit que ce serait une bonne idée de le transformer en vivarium. Pour ce faire, j’ai jeté mon dévolu sur un remix de la distribution Fedora : la Viperr 09 (Vipera Dragon). Et franchement, rien que pour la beauté des fonds d’écran, ça vaut son pesant de venin. Bravo aux concepteurs français (cocorico!) pour cette distribution très esthétique!

     

    Cliquer pour visualiser le diaporama.

    L’installation ne présente aucune difficulté. Il suffit de télécharger l’image iso qui pèse 1,3 Go. Vous trouverez cette dernière sur le site de Viperr. Ensuite, vous créez une clé usb bootable avec la commande magique dd :

    sudo dd bs=4M if=/chemin_de_l’image.iso of=/dev/emplacement_clé_USB status=progress && sync

    Et dans le bios de votre ordinateur, vous modifiez l’ordre de boot afin qu’il démarre sur la clé USB. Vous allez vous retrouver sur la version live qui va vous proposer d’installer la vipère sur le disque dur. Le tour est joué.

    En matière de logiciels, Viperr fournit le strict minimum mais il vous propose une post-installation qui va vous permettre d’installer par exemple LibreOffice et bien d’autres softwares. Cela dit, c’est à vous de personnaliser votre vivarium. J’ai par exemple choisi d’installer Retext, Gedit et le navigateur Vivaldi.

    Le gestionnaire de paquets s’appelle Dandified Yum ou DNF. Si le logiciel est présent dans les dépôts comme c’est le cas par exemple pour Gedit, rien de plus simple! Il suffit d’entrer dans un terminal la commande suivante :

    dnf install gedit

    Pour le navigateur Vivaldi qui n’est pas présent dans les dépôts, il m’a suffi de télécharger sur cette page la version 32 bit RPM et de rentrer la commande ci-dessous. En quelques minutes, j’avais installé mon navigateur favori!  

    sudo rpm -ivh /home/ordinosor/Téléchargements/vivaldi-stable-1.12.955.48-1.i386.rpm

    (Remplacez la partie en rouge par votre chemin personnel. )

    C’est peu de dire que j’ai été séduit par cette distribution légère, réactive et très esthétique. Elle m’a permis également de découvrir Fedora. Ce n’est peut-être pas la distribution idéale pour les débutants dans le monde Linux. Dans ce domaine, je crois qu’Ubuntu ne souffre d’aucune concurrence. Je dirais que Viperr est une distribution intermédiaire.

    Petit bémol, les applications que j’ai moi-même installées se retrouvent toutes rassemblées sous l’onglet Accessoires > Liste d’applications. Or, j’ai l’habitude de placer des icônes sur le bureau. Avec les autres distributions, il suffit de faire un clic droit ou un glisser-deposer… Mais avec Viperr qui utilise le gestionnaire de fenêtres Openbox, je n’ai toujours pas compris comment il fallait procéder. 

    Pour conclure, si je puis me permettre de vous donner un conseil… Laissez-vous mordre par cette Viperr bleue. Son venin est un vrai nectar!

     


    Gravatar de Miamondo
    Original post of Miamondo.Votez pour ce billet sur Planet Libre.

  • Sunday 12 November 2017 - 19:19

    La 6e édition du Capitole du Libre, l'événement du Logiciel Libre en Occitanie, se déroulera le 18 et 19 novembre prochain à l'ENSEEIHT, en centre-ville de Toulouse (INP-ENSEEIHT). Cet événement annuel est organisé par Toulibre, une association basée à Toulouse qui vise à promouvoir le logiciel libre et le libre en général.

    Le Capitole du Libre s'adresse aux initiés et aux novices et propose des conférences et des ateliers pour découvrir ou approfondir votre maîtrise des logiciels libres. C'est un moment d'échange et de partage pour mieux appréhender des outils, des technologies ou des problématiques que vous côtoyez ou que vous côtoierez un jour.

    Bannière

    D'accès libre et gratuit, vous retrouverez durant le week-end des conférences et des ateliers autour des thèmes suivants (liste non exhaustive) :

    • Le Libre en général: la découverte du logiciel libre
    • IoT et embarqué: les outils et les logiciels libres pour le matériel
    • DevOps: Système d'information et infrastructure
    • Sécurité: à la fois des systèmes et des réseaux
    • Libertés et vie privée: auto-hébergement, sécurité et vie privée sur l’Internet
    • Communauté: l'éco-système des communautés du logiciel libre
    • 3D, Création graphique et multimédia: la réalisation d’œuvres numériques avec des outils libres
    • Jeux libres: le jeu vidéo libre, création et expérience ludique

    Certaines conférences du samedi seront interprétées en langue des signes (elles sont signalées comme tel sur le programme).

    Quelques incontournables cette année

    La conférence « Le numérique Libre à l'ère du Cloud : faut-il se résigner à vivre dans l'éco-système Google ? » de Tristan Nitot, chef de produit chez Cozy Cloud et fondateur de Mozilla Europe, aura lieu le samedi de 14h à 15h.

    Elle sera suivie par la conférence de Jean-Baptiste Kempf, président de l'association VideoLAN qui présentera les nouveautés du lecteur multimédia de référence VLC.

    Sandrine Mathon de Toulouse Métropole donnera le samedi de 16h30 à 17h30 une conférence sur les données ouvertes (Open Data) et leurs conditions de réutilisation.

    François Grassard et Nathan Lovato vous feront découvrir respectivement l'avenir du temps réel dans le logiciel 3D Blender et la création de jeux vidéo de qualité professionnelle avec Godot Engine.

    Pierre Ficheux, CTO d'Openwide Ingénierie, présentera les technologies libres utilisables pour l'Internet des Objets (IoT).

    Parmi les ateliers, la création de BD/Manga avec David Revoy ou la création de campagne pour le jeu de stratégie Battte for Wesnoth avec Elzen seront également proposés. Des membres de Framasoft et de l'April seront bien évidemment présents à travers plusieurs interventions. Et la traditionnelle conférence du samedi soir prendra cette année la forme d'une table ronde sur la place de l'Open Source dans la société.

    Malgré tout, si vous ne trouvez pas votre bonheur dans ces propositions, le programme très riche est consultable ici.

    Les animations

    Tout le week-end, de nombreuses animations seront également proposées.
    Le village associatif vous permettra d'échanger avec les acteurs des communautés du Libre.
    Un espace junior, mis en place le samedi de 10h à 18h, autorisera les plus jeunes à pratiquer et à tester l'impression 3d, la robotique et les jeux vidéo.
    Vous retrouverez également l'habituelle Install party renommée pour l'occasion Atelier installation et dépannage Linux.
    Mis en place l'année dernière, un espace accessible à tous sera dédié à l'affichage d'offres d'emploi pour vous permettre de faire part de vos besoins ou pour repartir avec des contacts pour votre recherche d'emploi (job board).

    La veille

    En préambule, le vendredi 17 novembre de 16h à 19h à la médiathèque Empalot, l'April, Framasoft et Toulibre représentées respectivement par Bookynette, Pouhiou et Guillaume Gasnier proposeront d'échanger autour de votre vie numérique et d'envisager des solutions alternatives aux services et logiciels proposés par les géants du web.

    Apportez votre contribution pendant l'événement !

    L'appel à bénévole est également lancé. Si vous souhaitez être bénévole au Capitole du Libre, vous pouvez vous inscrire directement sur: https://participez-2017.capitoledulibre.org/volunteer/
    Vous pouvez aussi dès maintenant vous inscrire sur le planning:
    https://framacalc.org/benevoles-capitoles-du-libre-2017
    Une réunion d'information se tiendra le lundi 13 novembre à 19h à l'ENSEEIHT pour présenter plus en détails l'événement.

    Lire les commentaires

  • Sunday 12 November 2017 - 19:15

    Symfony 4.0.0-BETA4 has just been released. Here is a list of the most important changes:

    • bug #24874 [TwigBridge] Fixed the .form-check-input class in the bs4 templates (@vudaltsov)
    • bug #24929 [Console] Fix traversable autocomplete values (@ro0NL)
    • feature #24860 [FrameworkBundle] Add default translations path option and convention (@yceruto)
    • bug #24921 [Debug] Remove false-positive deprecation from DebugClassLoader (@nicolas-grekas)
    • bug #24856 [FrameworkBundle] Add default mapping path for validator component in bundle-less app (@yceruto)
    • bug #24833 [FrameworkBundle] Add default mapping path for serializer component in bundle-less app (@yceruto)
    • bug #24908 [WebServerBundle] Prevent console.terminate from being fired when server:start finishes (@kbond)
    • bug #24888 [FrameworkBundle] Specifically inject the debug dispatcher in the collector (@ogizanagi)
    • bug #24909 [Intl] Update ICU data to 60.1 (@jakzal)
    • bug #24870 [YAML] Allow to parse custom tags when linting yaml files (@pierredup)
    • bug #24910 [HttpKernel][Debug] Remove noise from stack frames of deprecations (@nicolas-grekas)
    • bug #24906 [Bridge/ProxyManager] Remove direct reference to value holder property (@nicolas-grekas)
    • feature #24887 [Cache][Lock] Add RedisProxy for lazy Redis connections (@nicolas-grekas)
    • bug #24633 [Config] Fix cannotBeEmpty() (@ro0NL)
    • bug #24900 [Validator] Fix Costa Rica IBAN format (@Bozhidar Hristov)
    • bug #24904 [Validator] Add Belarus IBAN format (@Bozhidar Hristov)
    • bug #24837 [TwigBridge] [Bootstrap 4] Fix validation error design for expanded choiceType (@ostrolucky)
    • bug #24878 [HttpFoundation] Prevent PHP from sending Last-Modified on session start (@nicolas-grekas)
    • bug #24881 [WebserverBundle] fixed the bug that caused that the webserver would … (@Serkan Yildiz)
    • bug #24722 Replace more docblocks by type-hints (@nicolas-grekas)
    • bug #24850 [DI] Fix cannot bind env var (@ogizanagi)
    • bug #24851 [TwigBridge] Fix BC break due required twig environment (@ro0NL)

    Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy. Read our upgrade documentation to learn more.

    Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.


    Be trained by Symfony experts - 2017-11-22 Cologne - 2017-12-4 Lyon - 2017-12-4 Lyon
  • Sunday 12 November 2017 - 19:07

    Symfony 3.4.0-BETA4 has just been released. Here is a list of the most important changes:

    • bug #24874 [TwigBridge] Fixed the .form-check-input class in the bs4 templates (@vudaltsov)
    • bug #24929 [Console] Fix traversable autocomplete values (@ro0NL)
    • feature #24860 [FrameworkBundle] Add default translations path option and convention (@yceruto)
    • bug #24921 [Debug] Remove false-positive deprecation from DebugClassLoader (@nicolas-grekas)
    • bug #24856 [FrameworkBundle] Add default mapping path for validator component in bundle-less app (@yceruto)
    • bug #24833 [FrameworkBundle] Add default mapping path for serializer component in bundle-less app (@yceruto)
    • bug #24908 [WebServerBundle] Prevent console.terminate from being fired when server:start finishes (@kbond)
    • bug #24888 [FrameworkBundle] Specifically inject the debug dispatcher in the collector (@ogizanagi)
    • bug #24909 [Intl] Update ICU data to 60.1 (@jakzal)
    • bug #24870 [YAML] Allow to parse custom tags when linting yaml files (@pierredup)
    • bug #24910 [HttpKernel][Debug] Remove noise from stack frames of deprecations (@nicolas-grekas)
    • bug #24906 [Bridge/ProxyManager] Remove direct reference to value holder property (@nicolas-grekas)
    • feature #24887 [Cache][Lock] Add RedisProxy for lazy Redis connections (@nicolas-grekas)
    • bug #24633 [Config] Fix cannotBeEmpty() (@ro0NL)
    • bug #24900 [Validator] Fix Costa Rica IBAN format (@Bozhidar Hristov)
    • bug #24904 [Validator] Add Belarus IBAN format (@Bozhidar Hristov)
    • bug #24837 [TwigBridge] [Bootstrap 4] Fix validation error design for expanded choiceType (@ostrolucky)
    • bug #24878 [HttpFoundation] Prevent PHP from sending Last-Modified on session start (@nicolas-grekas)
    • bug #24881 [WebserverBundle] fixed the bug that caused that the webserver would … (@Serkan Yildiz)
    • bug #24850 [DI] Fix cannot bind env var (@ogizanagi)
    • bug #24851 [TwigBridge] Fix BC break due required twig environment (@ro0NL)

    Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy. Read our upgrade documentation to learn more.

    Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.


    Be trained by Symfony experts - 2017-11-22 Cologne - 2017-12-4 Lyon - 2017-12-4 Lyon
  • Sunday 12 November 2017 - 17:08

    When you use a bit of inline <svg> and you don't set height and width, but you do set a viewBox, that's a fitwigoo. I love the name.

    The problem with fatwigoo's is that the <svg> will size itself like a block-level element, rendering enormously until the CSS comes in and (likely) has sizing rules to size it into place.

    It's one of those things where if you develop with pretty fast internet, you might not ever see it. But if you're somewhere where the internet is slow or has high latency (or if you're Karl Dubost and literally block CSS), you'll probably see it all the time.

    I was an offender before I learned how obnoxious this is. At first, it felt weird to size things in HTML rather than CSS. My solution now is generally to leave sensible defaults on inline SVG (probably icons) like height="20" width="20" and still do my actual sizing in CSS.

    Direct Link to ArticlePermalink


    Discover The Fatwigoo is a post from CSS-Tricks

  • Sunday 12 November 2017 - 10:53

    This week, Symfony 2.7.36, 2.8.29 and 3.3.11 maintenance versions were released. Meanwhile, Symfony focused on improving the performance of the upcoming Symfony 3.4 and 4.0 versions: optimized deprecations, better aggregation of notices, added a feature to inline related services and other micro-optimizations.

    Symfony development highlights

    2.7 changelog:

    • ae65bd8: [ProxyManager Bridge] removed direct reference to value holder property
    • 2110dc3: [Intl] updated ICU data to 60.1
    • f249310: [FrameworkBundle] specifically inject the debug dispatcher in the collector

    3.3 changelog:

    • 5dcd82c: [SecurityBundle] fixed the datacollector to properly support decision.object being null
    • 35f300d: [Yaml] allow to parse custom tags when linting YAML files
    • d4d8d3a: [HttpKernel, Debug] removed noise from stack frames of deprecations

    3.4 changelog:

    • b2edd51: [DependencyInjection] fixed cannot bind env var
    • 850bb2d: [Twig Bridge] lazy-load extension deps
    • bd0899e: [FrameworkBundle] fine-tune generated annotations.php cache
    • 8e9f976: [HttpFoundation] prevent PHP from sending Last-Modified on session start
    • a3e0e49: [DependencyInjection] added "container.hot_path" tag to flag the hot path and inline related services
    • deb499e: [TwigBridge] fixed validation error design for expanded choiceType in Bootstrap 4 form theme
    • 9b3bf5d: [Debug] more aggressively aggregate silenced notices per file+line
    • e68919a: [WebServerBundle] prevent console.terminate from being fired when server:start finishes
    • aaa9f13: [TwigBundle] added default Twig templates path as a container param
    • 93f206e: [FrameworkBundle] added default mapping path for serializer component in bundle-less app
    • c549e3c: [FrameworkBundle] added default mapping path for validator component in bundle-less app
    • b7a74f7: [Debug] removed false-positive deprecation from DebugClassLoader
    • b0ce1c1: [FrameworkBundle] added default translations path option and convention

    Master changelog:

    • b7928c3, 6a40488: [Config] fixed cannotBeEmpty()
    • bf52031: [Cache, Lock] added RedisProxy for lazy Redis connections

    Newest issues and pull requests

    They talked about us


    Be trained by Symfony experts - 2017-11-22 Cologne - 2017-12-4 Lyon - 2017-12-4 Lyon
  • Sunday 12 November 2017 - 10:05
    Article mis à jour le 13/11/17.
    Reprenons ce que nous dit https://yeuxdelibad.net/Blog/?d=2017/11/08/16/00/51-debuter-avec-duniter-1-puis-heberger-un-noeud :
    Pour rappel : Duniter est un logiciel. Son but est de permettre la production d'une nouvelle valeur numérique (ou électronique) ayant toutes les caractéristiques d'une « monnaie libre ». Nom de code de cette nouvelle valeur : la Ğ1 (prononcez « June », \\ʒɥn\\). La Ğ1 est désormais bien réel : les toutes premières unités ont été créées le 8 mars 2017, et de nouvelles sont produites chaque jour par ses membres.

    Le petit tuto ci-dessous reste exhaustif voir même "simpliste" et n'aborde pas l'idée, le projet ou la philosophie de Duniter, de la Ğ1, etc. Il rappelle simplement les différentes étapes d'installation d'un "nœud" Duniter sous Debian/Ubuntu qui permettra de participer aux calculs nécessaires aux échanges de Ğ1.

    J'utilise un PC sous Ubuntu 16.04 64 bits à la maison (auto-hébergé).
    Connexion ADSL2 : Freebox V6 (+/- 7 MB/s)
    PC : Intel i5, RAM 8 GB, SSD 120 GB

    C'est parti :

    a - On télécharge le paquet Debian (Debian/Ubuntu, ...) (version à vérifier sur le github Duniter ) :
    $ wget https://github.com/duniter/duniter/releases/download/1.6.13/duniter-server-v1.6.13-linux-x64.deb

    b - On installe le serveur Duniter :
    $ sudo dpkg -i duniter-server-v1.6.13-linux-x64.deb

    c - On génère la clé :
    $ duniter wizard key

    Réponse aux questions :
    ------Modify you keypair? (y/N) y
    ------Key's salt : mettez ici un mot de passe, une phrase, ce que vous voulez...
    ------Key's password : mettez ici un mot de passe

    d - On configure le réseau :
    $ duniter wizard network

    Réponse aux questions :
    ---IPv4 interface : déplacez-vous, le cas échéant avec les flèche du clavier pour choisir la bonne adresse Interne (Privée) et validez. Sur mon réseau local (MAISON), je suis connecté sur ma Freebox V6 en DHCP fixe. En l'occurrence, mon adresse IP internet est : 192.168.0.75
    ---IPv6 interface : déplacez-vous dans la liste avec les flèches du clavier pour choisir l'adresse et validez. Choisissez "none" si vous n'avez pas d'IPv6.
    ---Port : 10901
    ---Remote IPv4 : ici, on vous demande votre adresse IP publique (avec ma Freebox, c'est du type 82.xxx.xxx.xxx)
    ---Remote port : 10901
    ---Does this server has a DNS name? y ou n (répondez "y" si vous voulez héberger le nœud sur un serveur possédant un nom de domaine. Exemple : g1.spacejerk.fr)

    e - On lance la synchronisation :
    $ duniter sync g1.duniter.org 443
    Prenez votre mal en patience, ça peut être assez long (20 minutes ou +..., selon votre connexion et votre matériel)

    f - On lance le serveur :
    Moi, je lance le serveur avec l'interface web, plus pratique :
    $ duniter webstart --webmhost 192.168.0.75
    Remarquez ici que je rajoute un argument à la commande duniter webstart : "--webmhost" me permet de spécifier l'adresse IP privée de mon réseau interne Freebox
    Vous aurez alors accès à votre "interface web" à cette adresse : http://MON-DOMAINE:9220 ou bien http://MON-IP:9220

    g - N'oubliez pas d'ouvrir les ports suivants dans votre firewall (si vous en avez un) :
    10901/tcp = serveur
    9220/tcp = interface web

    g bis - Si comme moi votre Freebox est confgurée en mode "routeur", il faut faire une redirection de ports vers votre IP privée (10901 et 9220)

    h - S'inscrire sur CESIUM
    Cesium est une application vous permettant de gérer votre compte en monnaie libre Ğ1.
    URL : https://g1.duniter.fr 
    Il va falloir créer un compte. C'est nécessaire pour être inscrit dans le registre public du Ğ1. Vous créerez en même temps un "porte-feuille".
    Remplissez complètement les infos demandées dans votre compte.
    /!\\ Retenez bien votre identifiant secret et votre mot de passe, essentiels pour vous connecter.
    Vous devez créez un compte "membre" pour pouvoir plus tard participer au dividende universel....

    Pour toute info et complément, je vous renvoie vers plusieurs liens :

    Gravatar de citizenz7
    Original post of citizenz7.Votez pour ce billet sur Planet Libre.

  • Sunday 12 November 2017 - 00:14

    Le fonctionnement de la Terre, avant qu’un certain Galilée y mette son grain de sel, a toujours déchaîné les passions des Hommes et a consommé beaucoup d’encre. Parmi les théories les plus folles, Terry Pratchett nous enseigne dans sa série de livres du Disque Monde que le monde repose sur le dos de quatre gigantesques éléphants, eux-même reposant sur la carapace d’une tortue encore plus gigantesque appelée A’Tuin. Les quatre éléphants (Bérilia, Tubul, Ti-Phon l’Immense et Jérakine) se répartissent la charge que représente le poids du disque terrestre grâce à la rotation quotidienne de ce dernier. Si maintenant vous ne voyez pas le rapport entre une cosmologie impliquant des animaux au moins aussi grands que des continents capable de tenir en apnée pendant des milliards d’années et le sujet d’aujourd’hui, alors je ne sais plus quoi faire.

    Nous avons vu il y a quelques jours les principes de base d’un répartiteur de charge et exposé brièvement les concepts fondamentaux de HAProxy. Nous avons également mené une réflexion sur la manière de gérer un certificat sur une architecture avec répartiteur de charge et la voix du bon sens nous a susurré que le certificat devait être porté par HAProxy. Bon, mettons ça en pratique.

    Rangez vos affaires, sortez une feuille, interro surprise. Rappelez-moi ce qu’est le principe de base du protocole ACME. Et comme vous suivez bien et que vous buvez les paroles de l’instituteur comme un breton boit du cidre, vous saurez donc me répondre que l’agent de certification crée un challenge ACME en générant des fichiers de test auxquels le serveur ACME devra pouvoir accéder via HTTP, ces fichiers étant soit servis par l’agent via un serveur web intégré, soit mis à disposition du serveur de notre choix qui servira ces fichiers en statique. C’est en pratique presque toujours la deuxième solution qui est utilisée, sachant que justement, un serveur web tourne déjà sur les ports web standard (80 et 443). On ne veut pas d’interruption de service, non mais.

    Serveur statique

    Nous avons un petit problème ici. Les ports HTTP sont utilisés par HAProxy, qui n’est pas un serveur web, mais un répartiteur de charge. Souvenez-vous, il ne peut pas générer de lui même un flux web, pas même servir des fichiers statiques, il se contente de relayer des flux web créés par d’autres serveurs. Conclusion : il nous faut un serveur web tournant sur la machine hébergeant HAProxy capable de servir des fichiers statiques. L’idée, c’est qu’on va faire écouter ce serveur uniquement en local, et HAProxy se chargera de le propulser sur le réseau publique.

    On n’a que l’embarras du choix pour trouver un serveur web sachant servir du bon vieux statique. On pourrait choisir Nginx ou Lighttpd par exemple, mais comme nous sommes sur OpenBSD, le choix se portera sur le serveur web déjà préinstallé, communément appelé openhttpd.

    Première étape, il faut dire à OpenBSD d’activer le service.

    echo 'httpd_flags=""' >> /etc/rc.conf.local

    Ainsi on pourra démarrer le service, et il sera démarré à chaque démarrage de l’OS.

    Ensuite, il va nous falloir créer un dossier qui va accueillir les fichiers du challenge ACME. Comme le processus httpd est chrooté dans /var/www (sur OpenBSD, on appelle ça un jail), ce dossier sera donc /var/www/htdocs/webroot.

    La configuration de notre httpd sera on ne peut plus simple :

    server "default" { 
        listen on 127.0.0.1 port 1375 #ça fait "let's" en l33t
        root "/htdocs/webroot"
    }

    Démarrons le service :

    /etc/rc.d/httpd start

    Notre serveur statique est prêt.

    Configuration HAProxy

    Il faut dire à HAProxy de rediriger les requêtes ACME vers notre serveur statique fraîchement configuré.

    Pour ça, on va définir un backend dédié à Let’s Encrypt, vers lequel seront redirigés tous les flux ACME reçus sur les frontends qui nous intéressent.

    backend letsencrypt-backend
            server letsencrypt 127.0.0.1:1375

    Propre. Syntaxe explicite, pas besoin d’expliquer je pense. Je fais juste remarquer qu’en plus de nommer le backend globalement, je donne un nom au serveur du backend même si ici il n’a aucune forme d’importance, il ne sera jamais appelé ailleurs dans le fichier, c’est néanmoins obligatoire sur HAProxy. Enfin, un nom clair est toujours profitable, car il est éventuellement utilisé dans ses logs, ses statistiques et il rend la lecture du fichier de conf plus facile.

    Le backend est prêt, c’est excellent, mais encore faut-il l’utiliser. Pour être exact, on ne va l’utiliser que si l’URL demandée correspond au chemin classique demandé par le validateur ACME, à savoir /.well-known/acme-challenge/. Reprenons l’exemple de la dernière fois, modifions-le de la sorte :

    frontend mon_super_site
        bind *:80
        mode http
    
        acl url-back-office path_dir /admin
        acl letsencrypt-acl path_beg /.well-known/acme-challenge/
    
        use_backend back-office if url-back-office
        use_backend letsencrypt-backend if letsencrypt-acl
        default_backend mes-frontaux
    
    backend back-office
        server backoffice 192.168.0.14:80
    
    backend mes-frontaux
        balance roundrobin
        server backoffice1 192.168.0.11:80
        server backoffice2 192.168.0.12:80
        server backoffice3 192.168.0.13:80
    
    backend letsencrypt-backend
        server letsencrypt 127.0.0.1:1375

    On a ajouté une ACL et une directive use_backend. Rappelez-vous, une ACL est tout simplement une condition, ici elle porte sur le chemin de l’URL. Rien de nouveau, on a déjà expliqué le concept.

    On recharge le schmilblick :

    /etc/rc.d/haproxy reload

    On est prêt à générer notre premier certificat. Mais on ne va pas le faire tout de suite. Comme vous vous en souvenez, HAProxy veut ses certificats sous une forme un peu spécifique, il nous faut donc traiter le certificat dès qu’il a été généré, et pour ça on va faire un peu de scripting. On pourrait déjà générer le certificat sans le script de post-traitement, mais si on faisait ça, on devrait ensuite éditer la configuration d’acme.sh et c’est un peu barbant, sachant que la commande qui génère le premier certificat génère également par magie la configuration associée pour les renouvellements. Donc ce serait stupide.

    Script de post traitement

    Rien de bien compliqué, je vous rassure. Le principe est simple : HAProxy n’accepte des certificats que sous la forme d’un fichier contenant la chaîne complète de certification et la clef privée, dans cet ordre.

    Le script est très simple. Vous pouvez bien entendu le mettre où bon bous semble, pour ma part j’ai décidé de le mettre dans /etc/haproxy/generate-ssl.sh.

    #!/bin/sh
    
    SITE=$1
    LE_CERT_LOCATION=/root/.acme.sh/$SITE
    HA_CERT_LOCATION=/etc/haproxy/ssl
    
    cat $LE_CERT_LOCATION/fullchain.cer $LE_CERT_LOCATION/$SITE.key > $HA_CERT_LOCATION/$SITE.haproxy.pem
    
    /etc/rc.d/haproxy reload

    LE_CERT_LOCATION représente l’endroit où seront générés les certificats par acme.sh (il s’agit ici de l’emplacement par défaut, mais vous pouvez changer ce chemin à condition d’utiliser l’option adéquate lors de la génération du premier certificat).

    HA_CERT_LOCATION est l’emplacement où seront créés les certificats au format HAProxy. D’ailleurs, n’oubliez pas de créer le dossier en question.

    Le script devra être appelé avec en paramètre le domaine complet principal du certificat. N’oubliez pas de le rendre exécutable.

    Génération du premier certificat

    On y est, maintenant on va enfin pouvoir générer ce satané certificat. Partons du principe que vous avez correctement installé acme.sh, le README du projet est très simple à suivre.

    acme.sh --issue -d mon-super-site.com -w /var/www/htdocs/webroot/ --renew-hook "/etc/haproxy/generate-ssl.sh mon-super-site.com" --debug

    Remarquez que vous pouvez générer un certificat couvrant plusieurs domaines à la fois, il suffit d’ajouter -d mon-domaine-secondaire.com entre le domaine principal et l’option -w. Remarquez l’option --renew-hook, elle permet d’appeler le script qu’on vient de définir à chaque fois qu’un renouvellement est effectué.

    Une fois la commande effectuée avec succès (ça peut prendre une minute ou deux), votre certificat est généré, il vous faut encore ajouter le certificat dans la configuration du frontend comme il suit :

    bind *:443 ssl cert /etc/haproxy/ssl/mon-super-site.com.haproxy.pem

    Comme il s’agit de la première génération et non d’un renouvellement, il est nécessaire d’appliquer le script à la main.

    /etc/haproxy/generate-ssl.sh mon-super-site.com

    Vérifiez, et pleurez de joie. Votre certificat est déployé et fonctionnel. C’est magnifique.

    Automatisation du renouvellement

    Ultime étape, celle qui fait prendre tout son sens à la révolution Let’s Encrypt, celle qui fait qu’on peut oublier sans scrupule que tel ou tel site a un certificat proche de l’expiration, il s’agit du renouvellement automatique. Pas de subtilités, une simple ligne dans la crontab fait l’affaire. Et en plus, si je ne dis pas de bêtises, acme.sh s’occupe tout seul d’ajouter cette ligne.

    26 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

    La commande sera lancée tous les jours à minuit vingt-six, libre à vous de changer cet horaire. acme.sh sera assez intelligent pour savoir si votre certificat a besoin d’un coup de jeune ou non, donc rassurez vous, il n’y aura pas un renouvellement par jour.

    Conclusion

    Le protocole ACME peut s’appliquer à toutes les architectures web pour peu qu’on puisse traiter les requêtes du challenge correctement. À moins de disposer d’un stockage partagé (NSF, iSCSI, Samba…), il est indispensable que le challenge ACME soit créé par la machine capable de le traiter.

    Illustration : The Great A’Tuin par Paul Kidby

    Gravatar de raspbeguy
    Original post of raspbeguy.Votez pour ce billet sur Planet Libre.

  • Saturday 11 November 2017 - 22:27

    Calendrier web, regroupant des événements liés au Libre (logiciel, salon, atelier, install party, conférence), annoncés par leurs organisateurs. Voici un récapitulatif de la semaine à venir. Le détail de chacun de ces 54 événements (0 en Belgique, 49 en France, 0 au Luxembourg, 4 au Québec, 0 en Suisse et 1 en Tunisie) est en seconde partie de dépêche.

    Sommaire

    [FR Castelnau-le-Lez] Section GNU/Linux Ubuntu et Logiciels Libres - Le lundi 13 novembre 2017 de 10h00 à 12h00.

    L’équipe de Montpel’libre vous propose une permanence Logiciels Libres, discussions libres et accompagnements techniques aux systèmes d’exploitation libres, pour vous aider à vous familiariser avec votre système GNU/Linux au quotidien.

    Le contenu de l’atelier s’adapte aux problèmes des personnes présentes et permet ainsi l’acquisition de nouvelles compétences au rythme de chacun.

    Vous pourrez y aborder plusieurs thèmes

    • Discussions conviviales entre utilisateurs autour de Linux en général
    • Préinscription aux prochains Cafés Numériques et Install-Party
    • Premières explorations du système
    • Installations et configurations complémentaires
    • Mise à jour et installation de nouveaux logiciels
    • Prise en main, découverte et approfondissement du système

    Les Section GNU/Linux ont lieu à la Mjc André Malraux de Castelnau-le-Lez, tous les lundis de 10h00 à 12h00, sauf périodes de vacances

    [FR Chambéry] Mapathon d'ouverture à l'OSMGeoWeek - Le lundi 13 novembre 2017 de 19h00 à 22h00.

    DESCRIPTION

    Venez nous aider à cartographier sur OpenStreetMap, la carte du monde collaborative et libre pendant OSMGeoWeek CartONG, et Le Mug vous invitent à un mapathon Missing Mapspour découvrir la cartographie participative et humanitaire dans OpenStreetMap pas besoin d'être un expert, c'est accessible à tout le monde

    OSMGeoWeek

    OpenStreetMap Geography Awareness Week (OSMGeoWeek), est le festival international de sensibilisation à la cartographie sur OpenStreetMap. Il se déroule cette année, du 13 au 19 novembre

    Ce festival rassemble l’ensemble des organisations humanitaires, organismes privés, institutions, individus et communautés qui souhaitent sensibiliser à OSM, et faire découvrir cette base de données au plus grand nombre.

    Pourquoi

    L’objectif du projet Missing Maps est de créer des cartes pour les zones de crise des pays en voie de développement qui en ont le plus besoin. En effet, on peut penser qu'aujourd'hui toutes les parties du monde sont cartographiées, mais en réalité nombreuses régions ne possèdent encore aucunes cartes. L'objectif de Missing Maps est donc de cartographier toutes ces zones encore invisibles sur les cartes, pour permettre par la suite aux collectivités locales et acteurs de l'humanitaire de pouvoir agir plus efficacement en cas de crise.

    Nos objectifs

    • Soutenir l’accomplissement de projets de développement portés par des activistes locaux, parties prenantes de communautés OSM d’Afrique francophone, tout en créant du lien entre les différentes communautés (tant entre les communautés africaines qu’avec la France et l’international).

    • Promouvoir les activités des communautés d’Afrique francophone trop peu connues en France

    Comment

    Avec la plateforme de cartographie, OpenStreetMap (OSM, le Wikipédia des cartes) crée et fournit des données géographiques libres et collaboratives pour quiconque en aura besoin. Cet outil permet d'éditer des cartes routières, cyclables ou thématiques, mais permet aussi de compléter les zones qui ne sont pas encore cartographiées. Avec OSM il est possible d'ajouter routes, bâtiments ou cours d’eau, grâce à des images satellites il suffit d'un ordinateur, d'une souris et d'une connexion internet.

    Le programme de la soirée

    Nous vous proposons de découvrir comment contribuer à OpenStreetMap durant un mapathon. Cet événement s'inscrit dans le cadre de l'initiative globale Missing Maps, projet humanitaire qui vise à cartographier en amont les parties du monde vulnérables aux catastrophes naturelles, crises sanitaires, environnementales, aux conflits et à la pauvreté. Ce soir là nous allons soutenir le projet du Burkina Faso pour carthographier la région de Bobo Dioulasso pour lutter contre le paludisme. Cette maladie contamine 9 millions de personnes et en tue plus de 4 000 par an. Ici, un article détaillé sur le parasite au Burkina Faso. Cette carte permettra une meilleure intervention des services de santé au niveau local, mais également de calculer la densité de population dans la zone, ce qui permettra à terme d'évaluer et d'apporter le matériel et les moyens suffisants pour répondre à cette crise sanitaire. … Plus d’information sur les autres projets sur CartONG.org

    Au programme

    • 18h30 accueil des participants

    • 18h40 Mot de bienvenue, présentation du projet Missing Maps et du déroulement de la soirée

    • 18h50 Présentation de la contribution dans OSM

    • 19h00 Cartographions

    • Fin du Mapathon 21h30

    Où?

    129 rue Sommeiller, 73000 Chambéry, France, le Mug Espace de Coworking

    Entrée gratuite sur inscription

    Venez nombreux, et n'oubliez pas d'apporter votre ordinateur portable, et souri(re)s

    [FR Lyon] Debian - Le lundi 13 novembre 2017 de 19h30 à 21h30.

    Atelier / discussion autour du système d'exploitation GNU/Linux Debian organisé par l' ALDIL en partenariat avec la MJC de MontChat.

    En complément des découvertes et bidouilles des 4e lundis du mois à la MJC, ces ateliers sont des séances d'approfondissement d'usages de Debian et dérivés.

    De la ligne de commande, des fichiers de config, un atelier pour plonger dans le système, voire s’amuser avec des Raspberry Pi.
    Possibilité de soirées thématiques.

    Public averti ou sans allergie au Doliprane. Entrée libre et gratuite dans la limite des places disponibles.

    De 19h30 à 21h30 dans l'espace EPN de la MJC de Montchat.

    [FR Rennes] Réunion mensuelle OpenStreetMap - Le lundi 13 novembre 2017 de 20h00 à 22h00.

    L'association Gulliver propose chaque 2e lundi du mois une réunion autour du projet de cartographie collaborative OpenStreetMap.

    L'occasion de découvrir le projet, de venir échanger sur les nouveauté, de partager vos initiatives.

    [FR Montpellier] DigiWorld Week - Le mardi 14 novembre 2017 de 16h00 à 19h00.

    Éditathon - Les start-up et pépites numériques occitanes (19 places sur inscription)

    Investing in our Digital Future

    Entrée libre sur inscriptions

    • Un Éditathon consiste à apprendre à créer un compte Wikipédia et à contribuer sur Wikipédia (rédiger un article, modifier ou traduire un article).
    • L’idée ici est de bien connaître nos start-up et pépites occitanes pour recentrer le débat, dans un but d’information, sur les entreprises phares de notre Région dans un but d’information.

    Cet événement vous est proposé dans le cadre du partenariat qui lie la Région Occitanie, La Gazette Café, la French Tech, Montpellier Méditerranée Métropole, DigitalPlace, FrenchSouth, DigiWorld Week, Sud de France Développement, l’Idate et Montpel’libre.

    Mardi 14 novembre 2017 de 16h00 à 19h00
    La Gazette Café, 1er étage - 6, rue Levat 34000 Montpellier

    La Gazette Café Tramway lignes 1, 2, 3 et 4, arrêt Gare Saint-Roch
    GPS Latitude 43.60461 | Longitude 3.87842
    Carte OpenStreetMap

    [FR Quimper] Permanence Linux Quimper - Le mardi 14 novembre 2017 de 17h00 à 18h00.

    Tous les mardis de 17h à 18h, Linux Quimper vous donne rendez-vous au Centre social des Abeilles, 4 rue Sergent Le Flao à Quimper (entrée libre et gratuite).

    Curieux, déjà utilisateur, expert, vous êtes les bienvenu-e-s pour un dépannage, une installation, un conseil, une aide, discuter, échanger, etc… sur Linux et les logiciels libres.

    N'hésitez pas à venir avec votre PC si vous voulez une installation ou un dépannage de Linux ou avec votre périphérique récalcitrant (imprimante, scanner…).

    Pour les ordinateurs fixes, apportez uniquement votre Unité Centrale, nous avons écrans, claviers, souris.

    Pour une installation d'une distribution GNU/Linux de votre choix sur votre ordinateur, pensez à

    • Sauvegarder vos données personnelles
    • Libérer de la place sur le disque dur (20 Go minimum) et défragmenter Windows si vous voulez le conserver.

    Renseignements 07 68 59 17 32

    [FR Montpellier] Initiation Shotcut - Le mardi 14 novembre 2017 de 17h00 à 19h00.

    Shotcut
    Montage vidéo. Grâce à un logiciel simple et intuitif, vous serez rapidement capable de réaliser un petit film ou court-métrage d’animation en utilisant de courtes séquences vidéo, des photos ou des images. Pour épater vos amis ou pour vous lancer dans l’aventure de l’animation, cette séance est faite pour vous
    Shotcut est un logiciel libre de montage vidéo multiplateforme pour Windows, MacOS X, et GNU/Linux. Le projet a démarré en 2011 par Dan Dennedy. Shotcut utilise le moteur de montage vidéo MLT Media Lovin’ Toolkit.

    Audacity
    Retouchez vos pistes audio pour vos montages vidéos ou autres applications, pour les améliorer, les couper, les mixer…
    Audacity est un logiciel libre pour la manipulation de données audio numériques, il permet d’enregistrer du son numérique par le biais des entrées ligne/micro/cd des cartes sons. Il permet d’éditer (copier, coller, sectionner…) les sons sur plusieurs pistes, et il est accompagné de divers filtres et effets pitch, tempo, réduction de bruit, égaliseur, filtres de Fourier, augmentation de fréquences précises, compression, amplification, normalisation, écho, phaser, wahwah, inversion…

    Scratch
    Découvrir une manière simple et ludique d’apprendre la programmation informatique en créant un jeu vidéo basique à l’aide du logiciel Scratch.
    Scratch est une implémentation visuelle et dynamique du langage de programmation Smalltalk fondée sur Squeak. Cette plateforme d’apprentissage de codage comporte de plus de 14,5 millions de projets partagés allant de l’animation à la simulation 3D. Le nombre d’utilisateurs enregistrés est de 12 millions et ne cesse d’augmenter.

    Inkscape
    Dessiner avec Inkscape, logiciel libre, puissant et gratuit qui permet de créer des dessins vectoriels. Vous pourrez ainsi dessiner avec aisance directement en mode numérique et donner corps à vos créations avec des formes, la duplication, la transparence, les transformations ou encore les dégradés et l’ajout de texte.
    Inkscape est un logiciel libre de dessin vectoriel sous licence GNU GPL. Il gère des fichiers conformes avec les standards XML, SVG et CSS du W3C. Il s’agit d’un logiciel multiplateforme, disponible notamment sous Windows, Mac OS X (sous X11), GNU/Linux et FreeBSD.

    Mardi 07 novembre 2017 de 17h00 à 19h00 Groupe Blender
    Mercredi 08 novembre 2017 de 17h00 à 19h00 Initiation Gimp
    Mardi 14 novembre 2017 de 17h00 à 19h00 Initiation Shotcut
    Mercredi 22 novembre 2017 de 17h00 à 19h00 initiation Audacity
    Mardi 28 novembre 2017 de 17h00 à 19h00 Initiation Inkscape
    Salle Nino Rota, Médiathèque Federico Fellini place Paul Bec, 34000 Montpellier

    [FR Biot] RAL Learning Centre - Le mardi 14 novembre 2017 de 18h00 à 20h30.

    Certains les appellent install party, d’autres encore Soirées Linux, mais les Rencontres Accès Libre sont tout cela en même temps, et bien plus encore…

    C'est l’occasion de

    • discuter, échanger, expliquer
    • installer des logiciels libres
    • et, toute autre idée coopérative de solidarité à but non lucratif

    Entrée Libre. Tout Public.

    [FR Grenoble] Des experts Mozilla présentent Firefox Quantum - Le mardi 14 novembre 2017 de 18h30 à 21h00.

    Naviguez vite et libre

    Le navigateur web Firefox fait peau neuve, venez la découvrir lors de la journée de lancement de sa toute dernière version Firefox Quantum (57).

    Rendez-vous autour d’un verre à La Coop, mardi 14 novembre à partir de 18h30 avec les experts Mozilla.

    Plus rapide, plus simple d'utilisation, nouvelles fonctionnalités, nouveau look découvrez le nouveau Firefox Quantum

    Gratuit sur inscription

    [FR Nantes] Rencontre mensuelle OpenStreetMap - Le mardi 14 novembre 2017 de 18h30 à 21h30.

    Tous les mois les contributeurs nantais à la carte participative libre OpenStreetMap se réunissent.
    Ces rencontres libres et gratuites sont ouvertes à tou.te.s

    Venez nous rencontrer et faire connaissance. Selon vos souhaits, questions, nous vous montrerons ce qu'est OpenStreetMap comment l'utiliser ou y participer.

    Le lieu de réunion est équipé d'ordinateurs mais n'hésitez pas à apporter vos appareils numériques ordinateurs portables, tablettes, smartphones.

    Lieu de réunion Médiagraph 1 rue d'Auvours  44000 Nantes >>>Localisation

    Y venir en voiture, en vélo, à pied

    [FR Saint Etienne] Mapathon Missing Maps - Le mardi 14 novembre 2017 de 18h30 à 21h30.

    DESCRIPTION

    Venez nous aider à cartographier sur OpenStreetMap, la carte du monde collaborative et libre pendant l’OSMGeoWeek

    CartONG, Zoomacom et l'OpenFactory vous invitent à un mapathon pour découvrir la cartographie participative et humanitaire dans OpenStreetMap pas besoin d'être un expert, c'est accessible à tout le monde

    OSMGeoweek

    OpenStreetMap Geography Awareness Week (OSMGeoWeek), est le festival international de sensibilisation à la cartographie sur OpenStreetMap. Il se déroule cette année, du 13 au 19 novembre

    Ce festival rassemble l’ensemble des organisations humanitaires, organismes privés, institutions, individus et communautés qui souhaitent sensibiliser à OSM, et faire découvrir cette base de données au plus grand nombre.

    Pourquoi

    On peut penser qu'aujourd'hui toutes les parties du monde sont cartographiées, mais en réalité de nombreuses régions ne possèdent encore aucune carte. Pendant cet événement, nous fournirons un soutien aux communautés pour ajouter les éléments manquants aux cartes. Ces données serviront pour le développement économique de la région ou tout simplement pour améliorer la circulation des habitants.

    • Soutenir l’accomplissement de projets de développement portés par des activistes locaux, parties prenantes de communautés OSM d’Afrique francophone, tout en créant du lien entre les différentes communautés (tant entre les communautés africaines qu’avec la France et l’international).

    • Promouvoir les activités des communautés d’Afrique francophone trop peu connues en France

    Comment ?

    Avec la plateforme de cartographie, OpenStreetMap (OSM, le Wikipédia des cartes) crée et fournit des données géographiques libres et collaboratives pour quiconque en aura besoin. Cet outil permet d'éditer des cartes routières, cyclables ou thématiques, mais permet aussi de compléter les zones qui ne sont pas encore cartographiées. Avec OSM il est possible d'ajouter routes, bâtiments ou cours d’eau, grâce à des images satellites il suffit d'un ordinateur, d'une souris et d'une connexion internet

    Le programme de la soirée

    Plus d’information sur les autres projets sur CartONG.org

    Au programme

    • 18h30 accueil des participants
    • 18h40 Mots de bienvenue, présentation du projet Missing Maps et du déroulement de la soirée
    • 18h50 Présentation de la contribution dans OSM
    • 19h00 Cartographions
    • 21:30 Fin du mapathon, conclusion sur les contributions de la soirée

    1 rue Jean Réchatin, 42000 Saint-Etienne, France à l'OpenFactory

    Entrée gratuite sur inscription

    Venez nombreux, et n'oubliez pas d'apporter votre ordinateur portable, et souri(re)s

    [QC Montréal] AGA 2017 de l'Association Drupal de Montréal / General Assembly 2017 of the Montreal Drupal Association - Le mardi 14 novembre 2017 de 18h30 à 20h30.

    Le 14 novembre 2017 à 18h30 se tiendra, dans les bureaux de Cossette (2100, rue Drummond, Montréal), l'assemblée générale de l'Association Drupal de Montréal. L'assemblée est un événement public, membres et non membres peuvent y assister. Tout le monde est invité à assister à cette assemblée qui aidera à définir des pistes d'actions pour l'année à venir, tout en partageant une pizza ainsi que des rafraîchissements.
    The Montreal Drupal Association will be holding its General Assembly on november 14th, 2017 at 18:30 at Cossette (2100 Drummond Street, Montréal). All members and non-members are invited to attend this meeting which will help shape the coming year and be a good chance to discuss around some pizza and refreshments.
    L'association a pour objectif d'aider et de soutenir la communauté Drupal de Montréal, principalement via l'organisation d'événements Drupal à Montréal, dont le DrupalCamp Montréal.

    [FR Paris] Lancement de la campagne de dons de La Quadrature du Net - Le mardi 14 novembre 2017 de 19h00 à 23h59.

    Rejoignez-nous pour un moment convivial, qui marquera le début de notre campagne de soutien annuel

    Nous y présenterons le travail effectué, les projets futurs, et il y aura quelques petites surprises

    [QC Montréal] Rencontre du Libre - Le mardi 14 novembre 2017 de 19h30 à 21h00.

    Rencontre du Libre organisée par le Club Linux Atomic (CLA)Programmation de la rencontreCette prochaine rencontre du libre se déroulera le mardi 14 novembre 2017, de 19:30 à 21:00 heures au Café de Da, située au 545 Rue Fleury Est, Montréal, QC H3L 2E5.
    Déroulement de la rencontre :
    Accueil.Mot de bienvenue et explications sur le déroulement de la rencontre. Présentation des membres.

    [FR Le Mans] Permanence Linuxmaine - Le mercredi 15 novembre 2017 de 12h00 à 13h00.

    ATTTENTION Cet événement est annoncé de façon automatique. Les fermetures exceptionnelles seront annoncée sur notre site internet.

    L'association de promotion et de découverte du en Sarthe, Linuxmaine, tient une permanence les mercredis de 12h00 à 13h00.

    Celle ci est ouverte à tous, membres de l'association ou non.

    On peut s'y informer sur le, les découvrir, en tester, amener sa machine pour une installation ou simplement se retrouver pour discuter.

    Entrée Libre.

    [QC Montréal] Contribuer à Wikipédia (UQAM) - Le mercredi 15 novembre 2017 de 13h00 à 15h00.

    L’objectif de cette formation est de se familiariser avec le fonctionnement de l’encyclopédie collaborative en libre accès la plus utilisée dans le monde en pénétrant dans l’arrière-boutique où écrivent les wikipédistes.
    Après une brève présentation historique et sociologique de Wikipédia, la formation se propose de passer en revue les principales rubriques et mécanismes de fonctionnement de l’encyclopédie.
    Les participant.e.s qui le souhaitent pourront, dans la dernière portion de l’activité, s’initier à l’écriture encyclopédique à proprement dit. Ceux et celles qui désirent créer une ébauche (nouvel article) ou modifier un article existant sont invités à se documenter avant la formation.

    [FR Montpellier] DigiWorld Week - Le mercredi 15 novembre 2017 de 16h00 à 19h00.

    ***{::}Jerry-Party - Donner une seconde vie à votre informatique, un avenir pour l’Afrique* (30 places sur inscription)

    Investing in our Digital Future

    Entrée libre sur inscriptions

    • Une Jerry-Party se fait avec tout public adultes et (ou) enfants. Elle permet de lutter contre l’obsolescence programmée matérielle et logicielle, de comprendre le contenu d’un ordinateur, d’apprendre à monter un ordinateur et de bénéficier gratuitement d’un ordinateur qui fonctionne grâce à des éléments récupérés.

    Cet événement vous est proposé dans le cadre du partenariat qui lie la Région Occitanie, La Gazette Café, la French Tech, Montpellier Méditerranée Métropole, DigitalPlace, FrenchSouth, DigiWorld Week, Sud de France Développement, l’Idate et Montpel’libre.

    Mercredi 15 novembre 2017 de 16h00 à 19h00
    Salle de conférence Hôtel French Tech - 1, place Francis Ponge 34000 Montpellier

    French Tech Tramway lignes 1 et 2 arrêt Comédie
    GPS Latitude 43.60902 | Longitude 3.88406
    Carte OpenStreetMap

    [FR Callian] Linux et les Logiciels Libres - Le mercredi 15 novembre 2017 de 18h00 à 21h00.

    Venez découvrir Linux et les logiciels libres, mais aussi vous faire aider avec votre matériel informatique quel qu'il soit, imprimante, box, tablette, smartphone y compris.

    Cette année, nos objectifs évoluent, c'est à dire les logiciels libres restent comme l'objectif principal, mais aussi d'aider les gens avec leur matériel informatique quel qu'il soit, imprimante, box, tablette smartphone y compris.

    Venez avec vos machines même sous Windows ou Mac/os, nous ne vous laisserons pas tomber, nous considérons, que vous n'êtes pas responsable de l'hégémonie commerciale des produits non libres.

    Mais pourquoi venir aux réunions
    1°) Découvrir, Essayer, Installer Linux
    2°) Régler vos problèmes Windows ou Mac

    Venez nombreux, même par curiosité Les animateurs seront heureux de vous accueillir et nous insistons.

    L'accès est totalement libre et gratuit

    Merci de vous inscrire par mail et d'indiquer le soucis à régler si besoin.

    [FR Anzin] Café Vie Privée - Le mercredi 15 novembre 2017 de 18h00 à 20h00.

    POP Place Valenciennes organise son troisième Café Vie Privée sur Valenciennes !

    Au programme de cette soirée installation et configuration de TOR, découverte des bonnes extensions web, gèrer sa vie privée et ses données sur internet (entre autres).

    Plus d'informations sur les Café Vie Privée sur http://pop.eu.com/popplacevalenciennes/2017/09/11/pourquoi-venir-a-nos-cafes-vie-privee/

    P.S n'oubliez pas de venir avec votre smartphone et/ou votre ordinateur pour participer activement à nos ateliers)

    [FR Toulouse] Mapathon pendant l'OSMGeoWeek - Le mercredi 15 novembre 2017 de 18h30 à 21h30.


    DESCRIPTION

    Venez nous aider à cartographier sur OpenStreetMap, la carte du monde collaborative et libre pendant l’OSMGeoWeek

    CartONG, Magellium et HarryCow Coworking vous invitent à un mapathon pour découvrir la cartographie participative et humanitaire dans OpenStreetMap pas besoin d'être un expert, c'est accessible à tout le monde

    OSMGeoweek

    OpenStreetMap Geography Awareness Week (OSMGeoWeek), est le festival international de sensibilisation à la cartographie sur OpenStreetMap. Il se déroule cette année, du 13 au 19 novembre

    Ce festival rassemble l’ensemble des organisations humanitaires, organismes privés, institutions, individus et communautés qui souhaitent sensibiliser à OSM, et faire découvrir cette base de données au plus grand nombre.

    Pourquoi

    On peut penser qu'aujourd'hui toutes les parties du monde sont cartographiées, mais en réalité de nombreuses régions ne possèdent encore aucune carte. Pendant cet événement, nous fournirons un soutien aux communautés pour ajouter les éléments manquants aux cartes. Ces données serviront pour le développement économique de la région ou tout simplement pour améliorer la circulation des habitants.

    • Soutenir l’accomplissement de projets de développement portés par des activistes locaux, parties prenantes de communautés OSM d’Afrique francophone, tout en créant du lien entre les différentes communautés (tant entre les communautés africaines qu’avec la France et l’international).

    • Promouvoir les activités des communautés d’Afrique francophone trop peu connues en France

    Comment ?

    Avec la plateforme de cartographie, OpenStreetMap (OSM, le Wikipédia des cartes) crée et fournit des données géographiques libres et collaboratives pour quiconque en aura besoin. Cet outil permet d'éditer des cartes routières, cyclables ou thématiques, mais permet aussi de compléter les zones qui ne sont pas encore cartographiées. Avec OSM il est possible d'ajouter routes, bâtiments ou cours d’eau, grâce à des images satellites il suffit d'un ordinateur, d'une souris et d'une connexion internet

    Le programme de la soirée

    Nous vous proposons de découvrir comment contribuer à OpenStreetMap durant un mapathon.

    Cartographier plus précisément la ville permettra également à terme de fournir des informations comme l’emplacement des centres de santés, les pharmacies, les administrations et chaque lieux importants pour la vie des habitants de Bamako.

    Plus d’information sur les autres projets sur CartONG.org

    Au programme

    • 18:30 h accueil des participants
    • 18:40 h Mots de bienvenue, présentation du projet Missing Maps et du déroulement de la soirée
    • 18:50 h Présentation de la contribution dans OSM
    • 19 h Cartographions
    • 21:30 h Fin du mapathon, conclusion sur les contributions de la soirée

    Au HarryCow Coworking, 13 rue Sainte Ursule, 31000, Toulouse

    Entrée gratuite sur inscription

    Venez nombreux, et n'oubliez pas d'apporter votre ordinateur portable, et souri(re)s

    [FR Grenoble] Mapathon pendant l'OSMGeoWeek - Le mercredi 15 novembre 2017 de 18h30 à 21h30.

    DESCRIPTION

    Venez nous aider à cartographier sur OpenStreetMap, la carte du monde collaborative et libre pendant l’OSMGeoWeek

    CartONG et Scop La Péniche vous invitent à un mapathon pour découvrir la cartographie participative et humanitaire dans OpenStreetMap pas besoin d'être un expert, c'est accessible à tout le monde

    OSMGeoweek

    OpenStreetMap Geography Awareness Week (OSMGeoWeek), est le festival international de sensibilisation à la cartographie sur OpenStreetMap. Il se déroule cette année, du 13 au 19 novembre

    Ce festival rassemble l’ensemble des organisations humanitaires, organismes privés, institutions, individus et communautés qui souhaitent sensibiliser à OSM, et faire découvrir cette base de données au plus grand nombre.

    Pourquoi

    On peut penser qu'aujourd'hui toutes les parties du monde sont cartographiées, mais en réalité de nombreuses régions ne possèdent encore aucune carte. Pendant cet événement, nous fournirons un soutien aux communautés pour ajouter les éléments manquants aux cartes. Ces données serviront pour le développement économique de la région ou tout simplement pour améliorer la circulation des habitants.

    • Soutenir l’accomplissement de projets de développement portés par des activistes locaux, parties prenantes de communautés OSM d’Afrique francophone, tout en créant du lien entre les différentes communautés (tant entre les communautés africaines qu’avec la France et l’international).

    • Promouvoir les activités des communautés d’Afrique francophone trop peu connues en France

    Comment ?

    Avec la plateforme de cartographie, OpenStreetMap (OSM, le Wikipédia des cartes) crée et fournit des données géographiques libres et collaboratives pour quiconque en aura besoin. Cet outil permet d'éditer des cartes routières, cyclables ou thématiques, mais permet aussi de compléter les zones qui ne sont pas encore cartographiées. Avec OSM il est possible d'ajouter routes, bâtiments ou cours d’eau, grâce à des images satellites il suffit d'un ordinateur, d'une souris et d'une connexion internet

    Le programme de la soirée

    Nous vous proposons de découvrir comment contribuer à OpenStreetMap durant un mapathon.

    Cartographier plus précisément la ville permettra également à terme de fournir des informations comme l’emplacement des centres de santés, les pharmacies, les administrations et chaques lieux importants pour la vie des habitants de Bamako.

    Au programme

    • 18h30 accueil des participants
    • 18h40 Mots de bienvenue, présentation du projet Missing Maps et du déroulement de la soirée
    • 18h50 Présentation de la contribution dans OSM
    • 19h00 Cartographions
    • 21:30 Fin du mapathon, conclusion sur les contributions de la soirée

    31 Rue Gustave Eiffel, 38000, Grenoble, France, La Scop la Péniche

    Entrée gratuite sur inscription

    Venez nombreux, et n'oubliez pas d'apporter votre ordinateur portable, et souri(re)s

    [FR Rennes] Cartopartie humanitaire sur Bamako - Le mercredi 15 novembre 2017 de 20h00 à 23h00.

    Dans le cadre de la OSM Geo Week, le groupe OSM 35 vous propose de cartographier le Mali et notamment Bamako sur OpenStreetMap afin d'aider les communautés locales.

    Découvrez comment contribuer, et participez activement à renseigner la carte avec nous.

    L'inscription (recommandée) à l'évènement est à faire sur EventBrite.

    Avec le soutien de et

    [FR Paris] Apéro Parisien du Libre - Le mercredi 15 novembre 2017 de 20h00 à 23h00.

    Tous les 15 du mois, Parinux vous convie à l'Apéro Parisien du Libre (APL). Cet événement informel et convivial réunit les personnes intéressées par le monde du Libre.

    Pour le 15 novembre nous vous donnons rendez-vous au Brewberry Bar à partir de 20h pour échanger autour du Libre avec les bénévoles de l'association Parinux qui tiendra à cette occasion une "réunion membres".

    Tou.te.s sont les bienvenu.e.s, qu'ils/elles soient membres ou non, que ce soit pour découvrir l'association, se renseigner sur ses activités, ou simplement partager un bon moment avec d'autres bénévoles du Libre

    [FR Orléans] Cartographier avec OpenStreetMap - Le mercredi 15 novembre 2017 de 20h30 à 22h30.

    [FR Toulouse] Rencontre Tetalab - Le mercredi 15 novembre 2017 de 21h00 à 23h00.

    Rencontre hebdomadaire des hackers et artistes libristes Toulousains.

    Ouvert au public tous les mercredi soir.

    Venez nombreux.

    [FR Digne-les-Bains] Cartopartie Libre information sur les services de santé, tous acteurs, tous concernés - Le jeudi 16 novembre 2017 de 09h00 à 18h00.

    L'ADRETS, en partenariat avec APITUX et avec le soutien de la fondation AFNIC travaille sur la cartographie participative des services au public.

    Dans ce cadre, nous organisons une journée cartopartie des services sur le thème de la santé, jeudi 16 novembre 2017 de 9h à 18h à Digne.

    Il s'agit d'animer un atelier afin d'enrichir OpenStreetMap avec l'offre de santé sur le territoire puis d'en tirer des cartes et un annuaire.

    Les visiteurs pourront parcourir l'atelier juste pour découvrir les outils et la démarche ou s'installer plus longuement pour contribuer en étant accompagnés par des experts.

    De 15h à 16h, une table ronde rassemblera les participants autour du thème « Libre information sur les services de santé, tous acteurs, tous concernés ».

    Cet événement est hébergé à Digne par le Lycée Pierre Gilles de Gennes dans le cadre de son Salon domotique santé.

    Il s'inscrit également dans la semaine de sensibilisation OSMGEOWEEK qui propose aux contributeurs partout dans le monde de se regrouper pour créer des cartes avec OpenStreetMap.

    Participation libre et gratuite pour tous.

    [FR Montpellier] DigiWorld Week - Le jeudi 16 novembre 2017 de 16h00 à 18h00.

    ***{::}Conférence grand public - L’avenir une informatique libre à la portée de tous* (150 places sur inscription)

    Investing in our Digital Future

    Entrée libre sur inscriptions

    • Conférence : le langage de l’informatique et de l’informatique libre vulgarisé pour le grand public.

    Cet événement vous est proposé dans le cadre du partenariat qui lie la Région Occitanie, La Gazette Café, la French Tech, Montpellier Méditerranée Métropole, DigitalPlace, FrenchSouth, DigiWorld Week, Sud de France Développement, l’Idate et Montpel’libre.

    Jeudi 16 novembre 2017 de 16h00 à 18h00
    Auditorium Médiathèque Émile Zola - 240, rue de l’Acropole 34000 Montpellier

    Médiathèque Émile Zola Tramway ligne 1, arrêt Léon Blum
    GPS Latitude 43.60840 | Longitude 3.89330
    Carte OpenStreetMap

    [FR Martigues] Découvrir les Logiciels Libres - Le jeudi 16 novembre 2017 de 16h30 à 18h30.

    L'association ULLM (les Utilisateurs de Logiciels Libres du Pays Martégal) en collaboration avec EPN Martigues vous présente le programme de ses ateliers.

    Le jeudi de 1{::}6{::}h{::}3{::}0 à 1{::}8{::}h30

    Découverte des Logiciels Libres.

    [FR Montpellier] Aprilapéro - Le jeudi 16 novembre 2017 de 18h18 à 20h20.

    Un apéro April consiste à se réunir physiquement afin de se rencontrer, de faire plus ample connaissance, d’échanger, de partager un verre et de quoi manger mais aussi de discuter sur l’actualité et les actions de l’April.

    Un apéro April est ouvert à toute personne qui souhaite venir, membre de l’April ou pas. N’hésitez pas à venir nous rencontrer.

    Nous vous invitons donc à venir nous rejoindre dans une ambiance conviviale, à partager cet apéro, chacun porte quelque chose, boissons, grignotages… et on partage.

    Au programme des discussions

    • LoRdi Région Libre, renommé en MCNL pour Mon Cartable Numérique du Lycéen
    • référentiel Prestataires avec la CCI
    • pack Logiciels Libres CCI
    • échanger des expériences
    • discussions libres
    • échanges d’idées
    • faire un bilan des événements passés
    • faire des perspectives pour les actions futures
    • tout simplement, passer un moment convivial

    Entrée libre et gratuite sur inscription.

    Les Aprilapéro Montpellier auront lieu le 3e jeudi de chaque mois

    Jeudi 19 octobre 2017 de 18h18 à 20h20
    Jeudi 23 novembre 2017 de 18h18 à 20h20
    Jeudi 21 décembre 2017 de 18h18 à 20h20
    Jeudi 18 janvier 2018 de 18h18 à 20h20
    Jeudi 15 février 2018 de 18h18 à 20h20
    Jeudi 15 mars 2018 de 18h18 à 20h20
    Jeudi 19 avril 2018 de 18h18 à 20h20
    Jeudi 17 mai 2018 de 18h18 à 20h20
    Jeudi 21 juin 2018 de 18h18 à 20h20

    Le Faubourg - 15, rue du Faubourg de Nîmes, 34000 Montpellier

    [FR Bordeaux] Jeudi Giroll - Le jeudi 16 novembre 2017 de 18h30 à 20h30.

    Les membres du collectif Giroll, GIROnde Logiciels Libres, se retrouvent une fois par semaine, pour partager leurs  savoir-faire et expériences autour des logiciels libres.

    Le collectif réalise aussi une webradio mensuelle, tous les second mardis du mois, à retrouver en direct sur le site de Giroll.

     Ses rencontres sont ouvertes à tous.

    [FR Lyon] Install Party - Le jeudi 16 novembre 2017 de 19h00 à 21h00.

    SESSION SUR LE NUMÉRIQUE LIBRE à la MJC de Confluence - Install Party

    Tout publique

    Gratuit

    Deuxième cycle de la sessions Découverte du numérique libre à la MJC de Confluence.

    Suite à la conférence du 18 octobre, la session Découverte du numérique libre se poursuit avec une Install Party pour libérer complètement ou partiellement son ordinateur pour choisir son mode de transition, se faire aider et conseiller dans l'installation de logiciels libres et de systèmes GNU/Linux.

    Inscription obligatoire: https://mjcconfluenceenvironnement.wordpress.com/portfolio/Installparty/

     Quatre RAISONS DE VENIR
    - Adieu virus et logiciels espions
    - (Re-) partir du bon pied avec l'informatique
    - L'ordinateur en mode convivial
    - Réunir informatique et éthique

    La session suivante se fait le 13 décembre à 19h pour un atelier Bidouilles

    13 décembre 19h00 Bidouille une zone libre pour échanger sur vos expériences et vos retours suite à l'install party Les trucs à ajuster, les perles à découvrir, les moyens de progresser.
    Inscription obligatoire https://mjcconfluenceenvironnement.wordpress.com/portfolio/bidouille/
    Gratuit

    [FR Paris] De l'idée au site web avec Silex - Le jeudi 16 novembre 2017 de 19h00 à 21h00.

    Vous avez une idée, un projet, une passion ou même envie de mettre votre CV en ligne Vous êtes auto-entrepreneur, vous êtes votre propre patron, vous souhaitez parler de ce que vous aimez ou vous voulez tout simplement prouver à votre futur employeur que vous êtes fait pour ce job

    Ce 16 Novembre Ziggourat Formation accueille Silex Labs et sa formule Do It Yourself afin de vous initier à la création de page web par la pratique.

    En 2 heures nous ferons ensemble votre site à partir d’un modèle Silex. Et nous verrons de nombreuses astuces pour faire des sites professionnels sans frais, et légalement

    – Passer d’une idée à une page web
    – Photos creative commons
    – Hébergement sur github ou netlify

    L’atelier sera suivi d’un apéro et nous invitons nos membres professionnels du web ou du design à échanger avec les participants.

    Pré-requis

    Aucun pré-requis n’est nécessaire. Venez avec votre bonne humeur et votre soif d’apprendre. L’idéal est de venir avec son PC portable.

    A propos de Silex

    Silex est un logiciel libre et gratuit qui vous permet de réaliser vos sites internet en toute liberté et de garder le contrôle total de vos données (interopérabilité, pas de “lock-in”, pas de freeware, propriété des données).

    Silex est un éditeur de sites web en ligne, libre et gratuit qui compte des milliers d’utilisateurs dans le monde. On en parle même dans la presse.

    Quelle que soit votre niveau vous pourrez réaliser un site Internet. Il permet de réaliser des sites internet sans avoir besoin de savoir coder. Mais il permet aussi de commencer facilement à mettre les doigts dans le code de façon ludique.

    Silex est fait pour vous quelles que soient vos compétences

    • si vous ne savez pas coder le mode wysiwyg (what you see is what you get) vous permettra de faire votre site sans écrire une ligne de code.
    • si vous êtes designer vous pourrez facilement faire du prototypage et vous serez libre pour créer en partant d’une page blanche
    • si vous voulez vous mettre code silex vous offre des éditeurs Html, CSS ou javascript pour commencer à coder petit à petit
    • si vous êtes développeur vous pourrez ajouter vous même de nouvelles fonctionnalités au code source disponible sur github.

    • Ziggourat Formation, 32 rue de Paradis, Paris, Île-de-France, France

    • Adresse web https://www.silexlabs.org/event/de-lidee-a-pratique-creer-site-silex

    • Tags
      webdesign, marketing, opensource, websitebuilder, silex

    [FR Paris] Soirée de Contribution au Libre - Le jeudi 16 novembre 2017 de 19h30 à 22h30.

    Parinux propose aux utilisateurs de logiciels libres de se réunir régulièrement afin de contribuer à des projets libres. En effet, un logiciel libre est souvent porté par une communauté de bénévoles et dépend d'eux pour que le logiciel évolue.

    Nous nous réunissons donc tous les dans un environnement propice au travail (pas de facebook, pas de télé, pas de jeux vidéos, pas de zombies).

    Vous aurez très probablement besoin d'un ordinateur portable, mais électricité et réseau fournis.

    En cas de difficulté, vous pouvez joindre un des responsables de la soirée, Emmanuel Seyman (emmanuel (at) seyman.fr), Paul Marques Mota mota (at) parinux.org, ou Magali Garnero (Bookynette) tresorier (at) parinux.org.

    Pour obtenir le code d'entrée de la porte cochère, envoyez un mail au responsable.

    On peut amener de quoi se restaurer (Franprix, 8 rue du Chemin Vert, ferme à 22h)

    Regazouillez sur Twitter - Wiki des soirées

    Programme non exhaustif

    • Fedora (sa traduction)
    • Parinux, ses bugs et son infrastructure
    • April, … y a toujours quelque chose à faire
    • Open Food Facts/ Open Beauty Facts, sa base de données, ses contributeurs, sa roadmap
    • Schema racktables, son code
    • Agenda du Libre, mise à jour et amélioration du code
    • Ubuntu-Fr, son orga, ses événements
    • En vente libre, maintenance et commandes
    • Open street map, une fois par mois
    • Linux-Fr sait faire
    • en vente libre

    tout nouveau projet est le bienvenu.

    [FR Chambray-lès-Tours] Code et robots / Découverte - Le jeudi 16 novembre 2017 de 20h00 à 22h00.

    Code810, ensemble d'activités réservées aux enfants de 8 à 10 ans, enfin révélé aux adultes

    Depuis 2014, l'Amic propose des activités de coding (programmation) aux enfants de 8 à 10 ans. 

    D'où le nom coding + 8 à 10 ans = code810.

    Mais nous réfléchissons à faire évoluer ce nom code777, voire code799

    Depuis mai dernier nous avons commencé à intervenir dans les écoles élémentaires (niveau CM2) et même, à un moindre degré, dans les écoles maternelles.

    Que faisons-nous avec les enfants

    De l'initiation à la programmation, de la découverte de l'électronique et de la robotique. Tout cela au travers d'activités ludiques.

    Mais bien des adultes ignorent tout de ce que ce font ces tès jeunes grâce à l'Amic, y compris quelquefois leurs propres parents.

    Cette soirée à thème est justement là pour y remédier. 

    Vous deviendrez le temps d'une soirée programmeur en Scratch et en Blockly.
    Vous monterez des circuits électroniques que vous piloterez à partir de votre ordinateur.
    Vous programmerez des robots analogues aux robots tondeuses à gazon ou aux robots aspirateurs.

    Comme d'hab, inscrivez-vous à cette soirée. Le nombre de places dans notre espace ADA* est limité à 20

    FORMULAIRE d'INSCRIPTION

    [FR Le Port] Carto Partie des initiatives ESS de La Réunion - Le vendredi 17 novembre 2017 de 08h30 à 16h30.

    Open Atlas, en partenariat avec l'association Agame propose aux citoyens au cours d'une journée de partage et d'échange de créer de manière collaborative une carte interactive des initiatives de l'ESS de leur territoire.

    Les données seront disponible en open data et visualisables sur le réseau sociétal libre communecter.org.

    [QC Montréal] 1er Cartathon d’OMG McGill - Le vendredi 17 novembre 2017 de 14h30 à 17h00.

    Cherches-tu à mettre en pratique tes compétences en cartographie et à contribuer à la résilience?
    Rejoins-nous le vendredi 17 novembre à 14h30, nous tiendrons notre premier cartathon au Centre d’Informations Géographiques (GIC), pizza comprise! Nous allons vous apprendre à cartographier la ville de Williams Lake (C.-B.), dans le cadre de l’initiative « Building Canada 2020 ». Les feux de forêt ont lourdement affecté la ville cet été. Les données cartographiques que nous produirons aideront les forces d’intervention et les organisations d’urgence à mieux localiser et aider les résidents de Williams Lake à l’avenir.
    Les contributeurs débutants comme expérimentés sont tous les bienvenus pour rejoindre l’Open Mapping Group McGill (groupe cartographique ouvert à McGill, OMG McGill) durant le cartathon. Quelques machines seront à votre disposition, mais amenez votre ordinateur portable équipé d’une souris si vous le pouvez. Remarque: l’introduction sera principalement en anglais, mais il y aura aussi quelques participants qui pourront t’aider en français.

    [FR Toulouse] Before du Capitole du Libre - Le vendredi 17 novembre 2017 de 16h00 à 19h00.

    Le Capitole du Libre se déroulera du samedi 18 novembre 2017 au dimanche 19 novembre 2017
    Site officiel https://2017.capitoledulibre.org
    Lieu INP-ENSEEIHT, 2 rue Charles Camichel, 31000 Toulouse

    À cette occasion, la Médiathèque Empalot en profite pour organiser une table ronde suivie d'un atelier le vendredi 17 novembre.

    Magali Garnero, alias Bookynette y participera

    • à 16h Table ronde Au-delà des GAFAM* un autre monde informatique est-il possible avec Magali Garnero de l'APRIL, Pouhiou de Framasoft et Guillaume Gasnier de Toulibre Ces dernières années la concentration des acteurs informatiques s'est accélérée, et avec elle la centralisation des données de millions d'utilisateurs par les GAFAM*. Leurs services en ligne extrêmement pratiques nous rendent dépendants au point de représenter une menace pour nos libertés. Face à ce danger croissant, les acteurs historiques du logiciel libre inventent un monde numérique éthique fondé sur le partage et la coopération.
    • 17h30 Atelier désintox Passez aux logiciels libres et éthiques avec Bookynette de l'APRIL, Pouhiou de Framasoft et Guillaume Gasnier de Toulibre Cette séance vous permettra d'identifier et de de tester des alternatives aux logiciels et services des GAFAM que vous utilisez au quotidien avec 3 spécialistes des solutions libres.

    Venez nous rencontrer

    [FR Montpellier] Les logiciels libres, parlons-en - Le vendredi 17 novembre 2017 de 17h00 à 19h00.

    Le Faubourg Marché, qu’est-ce que c’est

    Le Faubourg Marché est une permanence partagée qui permet aux associations d’accueillir ensemble, les publics de ces associations une fois par semaine, le vendredi entre 17h00 et 19h00, au 19, rue du Faubourg de Nîmes, 34000 Montpellier.

    Proposition de programme

    • discussions autour de l’organisation d’événements
    • gestion des groupes de travail
    • propositions diverses
    • présentation de l’asso

    Alors, si vous avez un peu de temps le vendredi soir, voici une occupation qui me semble très intéressante.
    Montpel’libre est une association et un groupe d’utilisateurs (GULL), qui propose une multitude d’activités dans le cadre de la promotion des logiciels libres, et des Communs.

    Depuis longtemps déjà, Montpel’libre participe à l’économie sociale et solidaire en organisant tout un éventail d’ateliers et de manifestations, au développement durable et à l’innovation sociale au travers de permanences et ateliers de présentations des logiciels libres et évidement les cartoparties, véritable actions citoyennes, sur le thème de l’accessibilité des personnes en situation de handicap.

    L’activité économique, l’intérêt collectif, le fonctionnement démocratique, autant d’éléments que porte Montpel’libre, en proposant un accès entièrement libre et gratuit à une éducation populaire, au travers de ses ateliers à destination de tous les publics.

    Les logiciels libres parlons-en Ouvrons le dialogue sur l’ouverture des données Partageons nos expériences pour une meilleure transmission des connaissances.

    Ces permanences sont suivies d’un Apéro refaire le monde convivial et partagé, de 18h30 à 21h30. Elles ont lieu au Faubourg marché, tous les vendredis de 17h00 à 19h00

    • vendredi 3 novembre 2017 de 17h00 à 19h00
    • vendredi 10 novembre 2017 de 17h00 à 19h00
    • vendredi 17 novembre 2017 de 17h00 à 19h00
    • vendredi 24 novembre 2017 de 17h00 à 19h00

    Entrée libre et gratuite sur inscription. Une simple adhésion à l’association est possible.

    Cet événement est proposé dans le cadre du partenariat qui lie le Faubourg Marché et Montpel’libre.

    Vendredis 3, 10, 17 et 24 novembre 2017 de 17h00 à 19h00
    Le Faubourg - 15, rue du Faubourg de Nîmes, 34000 Montpellier

    [FR Antibes] Rencontre Accès Libre (RAL) - Le vendredi 17 novembre 2017 de 18h00 à 21h00.

    Certains les appellent install party, d’autres encore Soirées Linux, mais les Rencontres Accès Libre sont tout cela en même temps, et bien plus encore.

    C'est l’occasion de

    • discuter, échanger, expliquer
    • installer des logiciels libres
    • et, toute autre idée coopérative de solidarité à but non lucratif

    Entrée Libre. Tout Public

    [FR Strasbourg] Réunion mensuelle ouverte d'ARN - Le vendredi 17 novembre 2017 de 18h00 à 22h00.

    ARN vous accueil un vendredi par moi pendant le Stammtisch du Hackstub

    Dans ces réunions
    • nous accueillons des visiteur-se-s qui veulent en savoir plus sur notre démarche ou apprendre à nous connaître
    • nous évoquons les sujets actuels relatifs à l'association et au numérique autour de Strasbourg
    • nous faisons le point tous-toutes ensemble sur l'avancée des projets de l'association et des projets associatifs environnants
    • nous profitons de ces instants pour faire avancer les projets de l'association sous forme de groupes de travail ouverts.

    Ces réunions se concluent par un repas convivial à l'extérieur.
    Ces réunions sont ouvertes à tout le monde, membre d'ARN ou non. Pas d'inscription préalable.

    N'hésitez pas à venir échanger avec nous

    [FR Ambérieu-en-Bugey] Mapathon pendant l'OSMGeoWeek - Le vendredi 17 novembre 2017 de 18h00 à 23h00.

    DESCRIPTION

    Venez nous aider à cartographier sur OpenStreetMap, la carte du monde collaborative et libre pendant OSMGeoWeek CartONG, et la MJC d'Ambérieu vous invitent à un mapathonMissing Maps pour découvrir la cartographie participative et humanitaire dans OpenStreetMap pas besoin d'être un expert, c'est accessible à tout le monde

    OSMGeoWeek

    OpenStreetMap Geography Awareness Week (OSMGeoWeek), est le festival international de sensibilisation à la cartographie sur OpenStreetMap. Il se déroule cette année, du 13 au 20 novembre

    Ce festival rassemble l’ensemble des organisations humanitaires, organismes privés, institutions, individus et communautés qui souhaitent sensibiliser à OSM, et faire découvrir cette base de données au plus grand nombre.

    Pourquoi

    L’objectif du projet Missing Maps est de créer des cartes pour les zones de crise des pays en voie de développement qui en ont le plus besoin. En effet, on peut penser qu'aujourd'hui toutes les parties du monde sont cartographiées, mais en réalité nombreuses régions ne possèdent encore aucunes cartes. L'objectif de Missing Maps est donc de cartographier toutes ces zones encore invisibles sur les cartes, pour permettre par la suite aux collectivités locales et acteurs de l'humanitaire de pouvoir agir plus efficacement en cas de crise.

    Nos objectifs

    • Soutenir l’accomplissement de projets de développement portés par des activistes locaux, parties prenantes de communautés OSM d’Afrique francophone, tout en créant du lien entre les différentes communautés (tant entre les communautés africaines qu’avec la France et l’international).

    • Promouvoir les activités des communautés d’Afrique francophone trop peu connues en France

    Comment

    Avec la plateforme de cartographie, OpenStreetMap (OSM, le Wikipédia des cartes) crée et fournit des données géographiques libres et collaboratives pour quiconque en aura besoin. Cet outil permet d'éditer des cartes routières, cyclables ou thématiques, mais permet aussi de compléter les zones qui ne sont pas encore cartographiées. Avec OSM il est possible d'ajouter routes, bâtiments ou cours d’eau, grâce à des images satellites il suffit d'un ordinateur, d'une souris et d'une connexion internet.

    Le programme de la soirée

    Nous vous proposons de découvrir comment contribuer à OpenStreetMap durant un mapathon.

    En septembre de 2017, ce dernier a tué 10 personnes et engendré le déplacement de 40 000 personnes.

    Au programme

    • 18h30 accueil des participants
    • 18h40 Mot de bienvenue, présentation du projet Missing Maps et du déroulement de la soirée
    • 18h50 Présentation de la contribution dans OSM
    • 19h00 Cartographions
    • Fin du Mapathon 21h30

    Où?

     01500 AMBÉRIEU EN BUGEY, France, La MJC d'Ambérieu

    Entrée gratuite sur inscription

    Venez nombreux, et n'oubliez pas d'apporter votre ordinateur portable, et souri(re)s

    [FR Lyon] Explorer nos mondes en chiffres - Le samedi 18 novembre 2017 de 09h30 à 12h30.

    Atelier gratuit - samedi 9h30 à 12h30

    Inscription obligatoire à epn@salledesrancy.com

    L’EPN des Rancy (249, rue Vendôme, 69003 Lyon) et Altercarto vous propose une série d’ateliers.

    L'objection est de construire une scène ouverte où l’on partage avec un public les résultats d’une exploration cartographique sur un thème choisi. Le groupe aura à composer avec différents champs qui peuvent être sociaux (disparités urbaines, mutation dans la ville, …), économiques (travailler en ville, …), cadre de vie (santé, …), etc. Nous proposons ainsi d’explorer l’intérêt d’une médiation cartographique pour apporter un éclairage collectif sur des situations ou des enjeux précis.

    Une réelle motivation à participer à un travail en commun et à explorer des cartes et des données dans une démarche d’enquête collective est recommandée.

    Cet atelier est ouvert à tous

    les dates Samedis 18 novembre, 16 décembre, 3 février (dans le cadre des expériences numériques), 28 avril, 26 mai

    Vous pouvez venir avec votre propre pc (sinon on vous le fournira).

    N'hésitez pas à venir nombreux.

    [FR Courbevoie] Atelier GNU/Linux DÉBUTANTS prise en main - Le samedi 18 novembre 2017 de 09h30 à 18h30.

    L'association StarinuX (GULL) a le plaisir de vous convier à l'atelier

    GNU/Linux DÉBUTANTS (prise en main du système)

    OU: 48 rue de Colombes 92400 Courbevoie (SNCF gare Courbevoie St Lazare <=> La Défense ou métro Pont de Levallois, puis bus 275, arrêt Stade.

    : le samedi 18 novembre 2017 de 9h30 à 18h30,

    PUBLIC: atelier pour ceux qui débutent sous Linux.

    PROGRAMME: installation, prise en main, bash console, modules (pilotes), choix du bureau, à la fin de l'atelier vous serez capable de poursuivre en autonomie.

    PRÉ-REQUIS: notions de partitionnement disque dur (outil gparted), des modules (pilotes), langage bash…

    TOUTES INFOS et PRÉ-INSCRIPTION: www.starinux.org/ateliers-sx.php

    MODALITÉS: comme à l'accoutumée, une participation de 20 (10 demandeurs d'emplois) est demandée, valable une année pour plus de 15 ateliers.

    FORMATEUR: Pascal Bessonneau, statisticien, administrateur-système Linux, membre du CA de l'association.

    Au plaisir de votre présence le 18 novembre, Bien à vous.

    Pascal Bessonneau

    [FR La Couronne] Permanence - accueil public - Le samedi 18 novembre 2017 de 10h00 à 13h00.

    Notre permanence d'accueil avec le sourire, le café et les gâteaux

    Lieu de rencontre et d'échange convivial pour discuter informatique et outils numériques.

    Cette association permet à chacun de découvrir également l'univers de Linux et par extension de tous les **logiciels* et matériels libres*.

    Entrée Libre. Tout Public.

    [FR Marseille] Repair Café Marseille - Le samedi 18 novembre 2017 de 10h00 à 12h00.

    Le samedi 18 novembre 2017, de 10h00 à 12h00, l’équipe du Repair Cafe Marseille vous accueillera pour réparer ensemble votre petit électroménager et l’informatique au Foyer du Peuple au 50 rue Brandis 13005.

    C’est la première fois ( et sûrement pas la dernière) que le bar ouvre ses portes pour un atelier de réparation organisé par le Repair Cafe Marseille.

    Alors à ceux pour qui jeter n’est pas une évidence, à ceux qui veulent partager un bon moment, à ceux qui viennent pour en apprendre plus sur leurs objets et tous les autres, je vous invite à vous inscrire en ligne et dans la partie commentaire en base de page de l’atelier.

    ATTENTION: max par thématique soit 20 places au total

    [FR Le Mans] Permanence Linuxmaine - Le samedi 18 novembre 2017 de 14h00 à 18h00.

    L'association de promotion et de découverte du logiciel libre en Sarthe, Linuxmaine, tient sa permanence de 14h à 18h.

    Exceptionnellement, la permanence du deuxième samedi de chaque mois est repoussée au 18 novembre pour cause de jour férié (11 novembre)

    Celle ci est ouverte à tous, membres de l'association ou non.

    On peut s'y informer sur le logiciel libre, les découvrir, en tester, amener sa machine pour une installation ou simplement se retrouver pour discuter.

    Entrée Libre.

    [FR Beauvais] Gérer un coffre-fort de mots de passe - Le samedi 18 novembre 2017 de 14h00 à 16h30.

    En collaboration avec la MAJI (Maison des Associations de la Jeunesse et des Initiatives), l'association Oisux propose des samedis du Libre à Beauvais au 28 rue de Gascogne. Formations gratuites.

    Gérer un coffre-fort de mots de passe.

    Inscription par le formulaire de l'association ou en appelant la Maji au 03 44 79 40 62

    Venez nombreux.

    Entrée Libre. Tous Public.

    [FR Hoenheim] Atelier Repair Café - Le samedi 18 novembre 2017 de 14h00 à 17h00.

    Echange, partage, réparation des techniciens seront à votre écoute et à votre service. Avec pause café.

    Participation libre suivant votre satisfaction.

    [FR Ivry sur Seine] Cours de l'Ecole du Logiciel Libre - Le samedi 18 novembre 2017 de 14h00 à 18h00.

    Présentation de l'E2L

    Quel est le rôle de l'école du logiciel libre

    Tout d'abord, ce n'est pas une école comme les autres. Elle n'a pas d'établissement fixe, pas de cours de récréation, pas de carte d'étudiant, ni de diplôme de fin d'année.

    Comme toutes les écoles, son rôle est d'apprendre à ses élèves les logiciels libres, c'est-à-dire

    • comment en trouver de bons parmi les nombreux sites qui en proposent,
    • comment en prendre possession en fonction des licences,
    • comment les installer en fonction de ses besoins,
    • comment les tester et les utiliser,
    • comment en comprendre le fonctionnement pour ensuite les modifier,
    • comment écrire ses propres logiciels libres.

    En fait, l'école du logiciel libre est une université populaire, comme celles qui ont vu le jour en France à partir du 19 ème siècle, et dont le but est de transmettre des connaissances théoriques ou pratiques à tous ceux qui le souhaitent. Et pour atteindre ce but, sa forme juridique est de type " association à but non lucratif ".

    Comment fonctionne l'école

    Cette école étant une association, elle possède, comme toutes les autres, un bureau, élu chaque année en assemblée générale, pour l'administrer. Mais elle a aussi des responsables pédagogiques dont le rôle est essentiel car ce sont eux qui établissent les programmes des cours en fonction des souhaits des adhérents, valident les candidatures des enseignants et affectent les sessions.

    Les membres du bureau et les responsables pédagogiques forment "l'encadrement de l'école ". Tous les membres "encadrants" doivent être membres de l'association.

    Les locaux où se déroulent les cours seront ceux que l'on veut bien nous prêter une salle des fêtes, un théâtre, une salle de réunion publique, un amphi dans une école publique, ou autre.

    Les thèmes des cours sont définis par les adhérents en fonction de leurs envies, de leurs besoins. Les cours sont ensuite décidés par les responsables pédagogiques de l'école en fonction des enseignants disponibles.

    Afin de permettre au plus grand nombre de participer et d'assister aux cours, les sessions se tiennent essentiellement le samedi. Une première de 9h à 12h30, et une autre de 14h à 17h30.

    Programme détaillé sur le site http://e2li.org

    [FR Martigues] Install Party - Le samedi 18 novembre 2017 de 14h00 à 17h00.

    L'association ULLM (les Utilisateurs de Logiciels Libres du Pays Martégal) en collaboration avec EPN Martigues vous présente une

    Le samedideà

    Venez installer un système totalement libre sur votre machine ou tester des configurations déjas installées.

    Une occasion de rencontrer des utilisateurs expérimentés de système ou de logiciels libres pour une installation correcte agrémentée de nombreux logiciels.

    Entrée Libre. Tout Public.

    [FR Castelnau-le-Lez] Ateliers d’initiation au développement web - Le samedi 18 novembre 2017 de 14h00 à 18h00.

     Tous les samedis et sur deux créneaux horaires de 14h à 16h pour les novices et de 16h à 18h pour les amateurs, nous vous proposons à nouveau l’atelier d’initiation au développement web, à la Mjc de Castelnau-le-Lez.

    Le but de cet atelier est de faire découvrir le métier de technicien développeur web PHP, partager ses connaissances et son savoir-faire dans le domaine.

    Les inscriptions se feront à la Mjc avec deux séances découverte.

    Programme novice

    • Comprendre les langages de balisage HTML et CSS
    • Utiliser les navigateurs pour inspecter son code
    • Comprendre l’algorithmique avec Javascript et PHP
    • Utiliser les frameworks jQuery et Bootstrap

    Programme amateur

    • Créer des pages dynamiques avec PHP
    • Apprendre l’AJAX
    • Envoyer des e-mail avec PHP
    • Créer un site web depuis un template et un framework PHP

    Prérequis (pour une réussite garantie)

    • Ordinateur portable
    • Motivation
    • Projet concret
    • Travail à la maison

    Pourquoi Lors des séances, chacun a besoin de sa machine pour faire les expériences et montrer les notions non acquise durant la semaine.

    Programmer c’est facile, mais ça demande de la patience et de la motivation, car il s’agira souvent de résoudre des casses-têtes et plus fréquemment encore de corriger ses propres erreurs.
    D’après l’expérience du formateur, le seul moyen d’accomplir ces taches, c’est d’avoir un projet, un objectif.

    Le nombre de places par séance est limité à 6 personnes. Cela permet d’être disponible pour tout le monde.
    Aussi, il sera demandé au bout de quelques semaines à ce que l’on soit vraiment intéressé par le sujet et d’avoir le temps de s’y investir. Ça serait dommage de partir en milieu d’année en laissant une chaise vide

    Attention Cette session de partage d’expérience n’a pas pour vocation de faire de vous des professionnels ou de faire concurrence à des programmes de formations diplômantes.

    Cette formation est juste proposée par un professionnel avec qui vous pourrez discuter et poser des questions en relation à votre projet web.

    Les Ateliers d’initiation au développement web ont lieu à la Mjc André Malraux de Castelnau-le-Lez, tous les samedis de 14h00 à 18h00, sauf périodes de vacances

    • samedi 11 novembre 2017
    • samedi 18 novembre 2017
    • samedi 25 novembre 2017

    Mjc Centre André Malraux 10, avenue de la Moutte, 34170 Castelnau-le-Lez

    [FR Ramonville-Saint-Agne] Atelier Galette - Le samedi 18 novembre 2017 de 14h00 à 18h00.

    Vous qui galérez depuis des années à gérer vos adhérents et à récupérer leurs cotisations, le PIC a la solution

    Venez découvrir Galette, le Gestionnaire d’Adhérents en Ligne Extrêmement Tarabiscoté mais Tellement Efficace.

    Ça se passe à Ramonville, Maison des Associations, SAMEDI  18 Novembre 2017 de 14h00 à 18h00.

    Rien à payer, tout à apprendre, inscription obligatoire (mail à picca@le-pic.org ou tel 06.76.08.88.39) , n'oubliez pas votre fidèle ordinateur… et si vous n'en avez pas prévenez-nous

    Pour se retirer de cette liste, cliquer ici mailto:pic-newsletter-unsubscribe@le-pic.org

    [FR Nantes] Permanence Linux - Le samedi 18 novembre 2017 de 15h00 à 18h00.

    Une permanence de Linux Nantes aura lieu de 15 à 18 heure,

    dans l’aile du local associatif "B17".

    Au cours de ces permanences, nous proposons des conseils, des installations ou des réparations.

    Vous pouvez aussi venir pour une première prise d'informations et de contacts.

    Pour vous rendre au local B17

    http://www.linux-nantes.org/Comment-se-rendre-au-local.html

    Notre site

    http://www.linux-nantes.org/

    [TN Hammam Sousse] Software Freedom Day Tunisia 2017 - Le dimanche 19 novembre 2017 de 09h00 à 17h00.

    L’association pour la Culture numérique Libre – CLibre, organise, en collaboration avec l’Ecole Supérieur des Sciences et de Technologie (ESST) de Hammam-Sousse la journée internationale de logiciels libres, « Software {::}Freedom Day 2017 » qui aura lieu le dimanche 19 novembre 2017 à l’ESST de Sousse.

    Cette douzième édition tunisienne, appelée « Software Freedom Day Tunisia », est organisée pour la cinquième année consécutive par l’association CLibre.

    Elle sera l’occasion pour les associations, les communautés et les clubs universitaires actifs dans les différents domaines des technologies du libre de se rencontrer, de partager leurs expériences dans le domaine et surtout de s’enrichir mutuellement avec les échanges d’idées entre nos jeunes issues des différentes institutions universitaire de la Tunisie.

    Le programme de la journée sera formé, en plus des rencontres entre activistes du libre, par un ensemble de conférences en relation avec les technologies libres ainsi que des concours.

    Rappelons que chaque année, depuis 2004, la communauté internationale d’utilisateurs des logiciels libres fête le « Software Freedom Day ».

    Cette fête est une manifestation mondiale annuelle instaurée dans le but d’initier le grand public aux logiciels libres par son utilisation personnelle, dans l’éducation, l’économie ou par les gouvernements.

    Ce but est aussi l’un des objectifs de l’association CLibre qui a pris en charge l’organisation de cette journée en Tunisie prenant la relève de plusieurs acteurs de la communauté tunisienne qui n’a cessé, depuis 2006, de célébrer cette journée à l’échelle nationale.

    Librement

    Lire les commentaires

  • Saturday 11 November 2017 - 18:51
    Le « climatoscepticisme », tel qu’il a été défini, est proche d’une maladie mentale dans les esprits modernes. Ou bien procéderait encore d’un sophisme lobbyiste afin de protéger des intérêts industriels, ceux des grands groupes pétroliers et […]
  • Friday 10 November 2017 - 21:20

    Symfony 3.3.11 has just been released. Here is a list of the most important changes:

    • bug #24888 [FrameworkBundle] Specifically inject the debug dispatcher in the collector (@ogizanagi)
    • bug #24909 [Intl] Update ICU data to 60.1 (@jakzal)
    • bug #24870 [YAML] Allow to parse custom tags when linting yaml files (@pierredup)
    • bug #24910 [HttpKernel][Debug] Remove noise from stack frames of deprecations (@nicolas-grekas)
    • bug #24906 [Bridge/ProxyManager] Remove direct reference to value holder property (@nicolas-grekas)
    • bug #24900 [Validator] Fix Costa Rica IBAN format (@Bozhidar Hristov)
    • bug #24904 [Validator] Add Belarus IBAN format (@Bozhidar Hristov)
    • bug #24881 [WebserverBundle] fixed the bug that caused that the webserver would … (@Serkan Yildiz)
    • bug #24531 [HttpFoundation] Fix forward-compat of NativeSessionStorage with PHP 7.2 (@sroze)
    • bug #24665 Fix dump panel hidden when closing a dump (@julienfalque)
    • bug #24816 [Serializer] Fix extra attributes when no group specified (@ogizanagi)
    • bug #24814 [Intl] Make intl-data tests pass and save language aliases again (@jakzal)
    • bug #24810 [Serializer] readd default argument value (@xabbuh)
    • bug #24735 [VarDumper] fix trailling comma when dumping an exception (@Simperfit)
    • bug #24764 [HttpFoundation] add Early Hints to Reponse to fix test (@Simperfit)
    • bug #24759 Removes n or space when $context/$extra are empty (@kirkmadera)
    • bug #24758 Throwing exception if redis and predis unavailable (@aequasi)
    • bug #24744 debug:container --types: Fix bug with non-existent classes (@weaverryan)
    • bug #24605 [FrameworkBundle] Do not load property_access.xml if the component isn't installed (@ogizanagi)
    • bug #24706 [DependencyInjection] Add the possibility to disable assets via xml (@renatomefi)
    • bug #24696 Ensure DeprecationErrorHandler::collectDeprecations() is triggered (@alexpott)
    • bug #24686 Fix $_ENV/$_SERVER precedence in test framework (@fabpot)
    • bug #24606 [HttpFoundation] Fix FileBag issue with associative arrays (@enumag)
    • bug #24673 [DI] Throw when a service name or an alias contains dynamic values (prevent an infinite loop) (@dunglas)
    • bug #24681 Fix isolated error handling (@alexpott)
    • bug #24575 Ensure that PHPUnit's error handler is still working in isolated tests (@alexpott)
    • bug #24597 [PhpUnitBridge] fix deprecation triggering test detection (@xabbuh)
    • bug #24660 Escape trailing in QuestionHelper autocompletion (@kamazee)
    • bug #24598 Prefer line formatter on missing cli dumper (@greg0ire)
    • bug #24644 [Security] Fixed auth provider authenticate() cannot return void (@glye)
    • bug #24642 [Routing] Fix resource miss (@dunglas)
    • bug #24608 Adding the Form default theme files to be warmed up in Twig's cache (@weaverryan)
    • bug #24626 streamed response should return $this (@DQNEO)
    • bug #24589 Username and password in basic auth are allowed to contain '.' (@Richard Quadling)
    • bug #24566 Fixed unsetting from loosely equal keys OrderedHashMap (@maryo)
    • bug #24570 [Debug] Fix same vendor detection in class loader (@Jean-Beru)
    • bug #24573 Fixed pathinfo calculation for requests starting with a question mark. (@syzygymsu)
    • bug #24565 [Serializer] YamlEncoder: throw if the Yaml component isn't installed (@dunglas)
    • bug #24563 [Serializer] ObjectNormalizer: throw if PropertyAccess isn't installed (@dunglas)
    • bug #24571 [PropertyInfo] Add support for the iterable type (@dunglas)
    • bug #24579 pdo session fix (@mxp100)
    • bug #24536 [Security] Reject remember-me token if UserCheckerInterface::checkPostAuth() fails (@kbond)
    • bug #24548 [BridgePhpUnit] Handle deprecations triggered in separate processes (@paul-m)
    • bug #24519 [Validator] [Twig] added magic method isset() to File Constraint class (@loru88)
    • bug #24532 [DI] Fix possible incorrect php-code when dumped strings contains newlines (@Strate)
    • bug #24502 [HttpFoundation] never match invalid IP addresses (@xabbuh)
    • bug #24460 [Form] fix parsing invalid floating point numbers (@xabbuh)
    • bug #24490 [HttpFoundation] Combine Cache-Control headers (@c960657)
    • bug #23711 Fix support for PHP 7.2 (@Simperfit, @nicolas-grekas)
    • bug #24494 [HttpFoundation] Add missing session.lazy_write config option (@nicolas-grekas)
    • bug #24498 [BridgePhpUnit] Fix infinite loop when running isolated method (@nicolas-grekas)
    • bug #24434 [Form] Use for=ID on radio/checkbox label. (@Nyholm)
    • bug #24455 [Console] Escape command usage (@sroze)
    • bug #24462 [Yaml] parse references on merge keys with objects (@xabbuh)

    Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy. Read our upgrade documentation to learn more.

    Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.


    Be trained by Symfony experts - 2017-11-22 Cologne - 2017-12-4 Lyon - 2017-12-4 Lyon
  • Friday 10 November 2017 - 21:07

    Symfony 2.8.29 has just been released. Here is a list of the most important changes:

    • bug #24888 [FrameworkBundle] Specifically inject the debug dispatcher in the collector (@ogizanagi)
    • bug #24909 [Intl] Update ICU data to 60.1 (@jakzal)
    • bug #24906 [Bridge/ProxyManager] Remove direct reference to value holder property (@nicolas-grekas)
    • bug #24900 [Validator] Fix Costa Rica IBAN format (@Bozhidar Hristov)
    • bug #24904 [Validator] Add Belarus IBAN format (@Bozhidar Hristov)
    • bug #24531 [HttpFoundation] Fix forward-compat of NativeSessionStorage with PHP 7.2 (@sroze)
    • bug #24665 Fix dump panel hidden when closing a dump (@julienfalque)
    • bug #24814 [Intl] Make intl-data tests pass and save language aliases again (@jakzal)
    • bug #24764 [HttpFoundation] add Early Hints to Reponse to fix test (@Simperfit)
    • bug #24605 [FrameworkBundle] Do not load property_access.xml if the component isn't installed (@ogizanagi)
    • bug #24606 [HttpFoundation] Fix FileBag issue with associative arrays (@enumag)
    • bug #24660 Escape trailing in QuestionHelper autocompletion (@kamazee)
    • bug #24644 [Security] Fixed auth provider authenticate() cannot return void (@glye)
    • bug #24642 [Routing] Fix resource miss (@dunglas)
    • bug #24608 Adding the Form default theme files to be warmed up in Twig's cache (@weaverryan)
    • bug #24626 streamed response should return $this (@DQNEO)
    • bug #24589 Username and password in basic auth are allowed to contain '.' (@Richard Quadling)
    • bug #24566 Fixed unsetting from loosely equal keys OrderedHashMap (@maryo)
    • bug #24570 [Debug] Fix same vendor detection in class loader (@Jean-Beru)
    • bug #24563 [Serializer] ObjectNormalizer: throw if PropertyAccess isn't installed (@dunglas)
    • bug #24571 [PropertyInfo] Add support for the iterable type (@dunglas)
    • bug #24579 pdo session fix (@mxp100)
    • bug #24536 [Security] Reject remember-me token if UserCheckerInterface::checkPostAuth() fails (@kbond)
    • bug #24519 [Validator] [Twig] added magic method isset() to File Constraint class (@loru88)
    • bug #24532 [DI] Fix possible incorrect php-code when dumped strings contains newlines (@Strate)
    • bug #24502 [HttpFoundation] never match invalid IP addresses (@xabbuh)
    • bug #24460 [Form] fix parsing invalid floating point numbers (@xabbuh)
    • bug #24490 [HttpFoundation] Combine Cache-Control headers (@c960657)
    • bug #23711 Fix support for PHP 7.2 (@Simperfit, @nicolas-grekas)
    • bug #24494 [HttpFoundation] Add missing session.lazy_write config option (@nicolas-grekas)
    • bug #24434 [Form] Use for=ID on radio/checkbox label. (@Nyholm)
    • bug #24455 [Console] Escape command usage (@sroze)

    Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy. Read our upgrade documentation to learn more.

    Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.


    Be trained by Symfony experts - 2017-11-22 Cologne - 2017-12-4 Lyon - 2017-12-4 Lyon
  • Friday 10 November 2017 - 20:53

    Symfony 2.7.36 has just been released. Here is a list of the most important changes:

    • bug #24888 [FrameworkBundle] Specifically inject the debug dispatcher in the collector (@ogizanagi)
    • bug #24909 [Intl] Update ICU data to 60.1 (@jakzal)
    • bug #24906 [Bridge/ProxyManager] Remove direct reference to value holder property (@nicolas-grekas)
    • bug #24900 [Validator] Fix Costa Rica IBAN format (@Bozhidar Hristov)
    • bug #24904 [Validator] Add Belarus IBAN format (@Bozhidar Hristov)
    • bug #24531 [HttpFoundation] Fix forward-compat of NativeSessionStorage with PHP 7.2 (@sroze)
    • bug #24814 [Intl] Make intl-data tests pass and save language aliases again (@jakzal)
    • bug #24764 [HttpFoundation] add Early Hints to Reponse to fix test (@Simperfit)
    • bug #24605 [FrameworkBundle] Do not load property_access.xml if the component isn't installed (@ogizanagi)
    • bug #24606 [HttpFoundation] Fix FileBag issue with associative arrays (@enumag)
    • bug #24660 Escape trailing in QuestionHelper autocompletion (@kamazee)
    • bug #24644 [Security] Fixed auth provider authenticate() cannot return void (@glye)
    • bug #24626 streamed response should return $this (@DQNEO)
    • bug #24589 Username and password in basic auth are allowed to contain '.' (@Richard Quadling)
    • bug #24566 Fixed unsetting from loosely equal keys OrderedHashMap (@maryo)
    • bug #24570 [Debug] Fix same vendor detection in class loader (@Jean-Beru)
    • bug #24563 [Serializer] ObjectNormalizer: throw if PropertyAccess isn't installed (@dunglas)
    • bug #24579 pdo session fix (@mxp100)
    • bug #24536 [Security] Reject remember-me token if UserCheckerInterface::checkPostAuth() fails (@kbond)
    • bug #24519 [Validator] [Twig] added magic method isset() to File Constraint class (@loru88)
    • bug #24532 [DI] Fix possible incorrect php-code when dumped strings contains newlines (@Strate)
    • bug #24502 [HttpFoundation] never match invalid IP addresses (@xabbuh)
    • bug #24460 [Form] fix parsing invalid floating point numbers (@xabbuh)
    • bug #24490 [HttpFoundation] Combine Cache-Control headers (@c960657)
    • bug #23711 Fix support for PHP 7.2 (@Simperfit, @nicolas-grekas)
    • bug #24494 [HttpFoundation] Add missing session.lazy_write config option (@nicolas-grekas)
    • bug #24434 [Form] Use for=ID on radio/checkbox label. (@Nyholm)
    • bug #24455 [Console] Escape command usage (@sroze)

    Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy. Read our upgrade documentation to learn more.

    Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.


    Be trained by Symfony experts - 2017-11-22 Cologne - 2017-12-4 Lyon - 2017-12-4 Lyon
  • Friday 10 November 2017 - 20:00

    That's a good little thing to know about CSS grid.

    I'm sure that is obvious to many of you, but I'm writing this because it was very much not obvious to me for far too long.

    Let's take a close look.

    There are two players to get into your mind here:

    1. The grid area, as created by the parent element with display: grid;
    2. The element itself, like a <div>, that goes into that grid area.

    For example, say we set up a mega simple grid like this:

    .grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-gap: 1rem;
    }

    If we put four grid items in there, here's what it looks like when inspecting it in Firefox DevTools:

    Now let's target one of those grid items and give it a background-color:

    The grid area and the element are the same size!

    There is a very specific reason for that though. It's because the default value for justify-items and align-items is stretch. The value of stretch literally stretches the item to fill the grid area.

    But there are several reasons why the element might not fill a grid area:

    1. On the grid parent, justify-items or align-items is some non-stretch value.
    2. On the grid element, align-self or justify-self is some non-stretch value.
    3. On the grid element, if height or width is constrained.

    Check it:

    Who cares?

    I dunno it just feels useful to know that when placing an element in a grid area, that's just the starting point for layout. It'll fill the area by default, but it doesn't have to. It could be smaller or bigger. It could be aligned into any of the corners or centered.

    Perhaps the most interesting limitation is that you can't target the grid area itself. If you want to take advantage of alignment, for example, you're giving up the promise of filling the entire grid area. So you can't apply a background and know it will cover that whole grid area anymore. If you need to take advantage of alignment and apply a covering background, you'll need to leave it to stretch, make the new element display: grid; also, and use that for alignment.


    Grid areas and the element that occupies them aren’t necessarily the same size. is a post from CSS-Tricks

  • Friday 10 November 2017 - 19:17

    Even if you haven't read my post The Importance Of JavaScript Abstractions When Working With Remote Data, chances are you're already convinced that maintainability and scalability are important for your project and the way toward that is introducing abstractions.

    For the purposes of this post, let's assume that an abstraction, in JavaScript, is a module.

    The initial implementation of a module is only the beginning of the long (and hopefully lasting) process of their life-being. I see 3 major events in the lifecycle of a module:

    1. Introduction of the module. The initial implementation and the process of re-using it around the project.
    2. Changing the module. Adapting the module over time.
    3. Removing the module.

    In my previous post the emphasis was just on that first one. In this article, think more about that second one.

    Handling changes to a module is a pain point I see frequently. Compared to introducing the module, the way developers maintain or change it is equally or even more important for keeping the project maintainable and scalable. I've seen a well-written and abstracted module completely ruined over time by changes. I've sometimes been the one who has made those disastrous changes!

    When I say disastrous, I mean disastrous from a maintainability and scalability perspective. I understand that from the perspective of approaching deadlines and releasing features which must work, slowing down to think about all the potential image of your change isn't always an option.

    The reasons why a developer's changes might not be as optimal are countless. I'd like to stress one in particular:

    The Skill of Making Changes in Maintainable Manner

    Here's a way you can start making changes like a pro.

    Let's start with a code example: an API module. I choose this because communicating with an external API is one of the first fundamental abstractions I define when I start a project. The idea is to store all the API related configuration and settings (like the base URL, error handling logic, etc) in this module.

    Let's introduce only one setting, API.url, one private method, API._handleError(), and one public method, API.get():

    class API {
      constructor() {
        this.url = 'http://whatever.api/v1/';
      }
    
      /**
       * Fetch API's specific way to check
       * whether an HTTP response's status code is in the successful range.
       */
      _handleError(_res) {
          return _res.ok ? _res : Promise.reject(_res.statusText);
      }
    
      /**
       * Get data abstraction
       * @return {Promise}
       */
      get(_endpoint) {
          return window.fetch(this.url + _endpoint, { method: 'GET' })
              .then(this._handleError)
              .then( res => res.json())
              .catch( error => {
                  alert('So sad. There was an error.');
                  throw new Error(error);
              });
      }
    };

    In this module, our only public method, API.get() returns a Promise. In all places where we need to get remote data, instead of directly calling the Fetch API via window.fetch(), we use our API module abstraction. For example to get user's info API.get('user') or the current weather forecast API.get('weather'). The important thing about this implementation is that the Fetch API is not tightly coupled with our code.

    Now, let's say that a change request comes! Our tech lead asks us to switch to a different method of getting remote data. We need to switch to Axios. How can we approach this challenge?

    Before we start discussing approaches, let's first summarize what stays the same and what changes:

    1. Change: In our public API.get() method:
      • We need to change the window.fetch() call with axios(). And we need to return a Promise again, to keep our implementation consistent. Axios is Promise based. Excellent!
      • Our server's response is JSON. With the Fetch API chain a .then( res => res.json()) statement to parse our response data. With Axios, the response that was provided by the server is under the data property and we don't need to parse it. Therefore, we need to change the .then statement to .then( res => res.data ).
    2. Change: In our private API._handleError method:
      • The ok boolean flag is missing in the object response. However, there is statusText property. We can hook-up on it. If its value is 'OK', then it's all good.

        Side note: yes, having ok equal to true in Fetch API is not the same as having 'OK' in Axios's statusText. But let's keep it simple and, for the sake of not being too broad, leave it as it is and not introduce any advanced error handling.

    3. No change: The API.url stays the same, along with the funky way we catch errors and alert them.

    All clear! Now let's drill down to the actual approaches to apply these changes.

    Approach 1: Delete code. Write code.

    class API {
      constructor() {
        this.url = 'http://whatever.api/v1/'; // says the same
      }
    
      _handleError(_res) {
          // DELETE: return _res.ok ? _res : Promise.reject(_res.statusText);
          return _res.statusText === 'OK' ? _res : Promise.reject(_res.statusText);
      }
    
      get(_endpoint) {
          // DELETE: return window.fetch(this.url + _endpoint, { method: 'GET' })
          return axios.get(this.url + _endpoint)
              .then(this._handleError)
              // DELETE: .then( res => res.json())
              .then( res => res.data)
              .catch( error => {
                  alert('So sad. There was an error.');
                  throw new Error(error);
              });
      }
    };

    Sounds reasonable enough. Commit. Push. Merge. Done.

    However, there are certain cases why this might not be a good idea. Imagine the following happens: after switching to Axios, you find out that there is a feature which doesn't work with XMLHttpRequests (the Axios's interface for getting resource method), but was previously working just fine with Fetch's fancy new browser API. What do we do now?

    Our tech lead says, let's use the old API implementation for this specific use-case, and keep using Axios everywhere else. What do you do? Find the old API module in your source control history. Revert. Add if statements here and there. Doesn't sound very good to me.

    There must be an easier, more maintainable and scalable way to make changes! Well, there is.

    Approach 2: Refactor code. Write Adapters!

    There's an incoming change request! Let's start all over again and instead of deleting the code, let's move the Fetch's specific logic in another abstraction, which will serve as an adapter (or wrapper) of all the Fetch's specifics.

    For those of you familiar with the Adapter Pattern (also referred to as the Wrapper Pattern), yes, that's exactly where we're headed! See an excellent nerdy introduction here, if you're interested in all the details.

    Here's the plan:

    Step 1

    Take all Fetch specific lines from the API module and refactor them to a new abstraction, FetchAdapter.

    class FetchAdapter {
      _handleError(_res) {
          return _res.ok ? _res : Promise.reject(_res.statusText);
      }
    
      get(_endpoint) {
          return window.fetch(_endpoint, { method: 'GET' })
              .then(this._handleError)
              .then( res => res.json());
      }
    };

    Step 2

    Refactor the API module by removing the parts which are Fetch specific and keep everything else the same. Add FetchAdapter as a dependency (in some manner):

    class API {
      constructor(_adapter = new FetchAdapter()) {
        this.adapter = _adapter;
    
        this.url = 'http://whatever.api/v1/';
      }
    
      get(_endpoint) {
          return this.adapter.get(_endpoint)
              .catch( error => {
                  alert('So sad. There was an error.');
                  throw new Error(error);
              });
      }
    };

    That's a different story now! The architecture is changed in a way you are able to handle different mechanisms (adapters) for getting resources. Final step: You guessed it! Write an AxiosAdapter!

    const AxiosAdapter = {
      _handleError(_res) {
          return _res.statusText === 'OK' ? _res : Promise.reject(_res.statusText);
      },
    
      get(_endpoint) {
          return axios.get(_endpoint)
              .then(this._handleError)
              .then( res => res.data);
      }
    };

    And in the API module, switch the default adapter to the Axios one:

    class API {
      constructor(_adapter = new /*FetchAdapter()*/ AxiosAdapter()) {
        this.adapter = _adapter;
    
        /* ... */
      }
      /* ... */
    };

    Awesome! What do we do if we need to use the old API implementation for this specific use-case, and keep using Axios everywhere else? No problem!

    // Import your modules however you like, just an example.
    import API from './API';
    import FetchAdapter from './FetchAdapter';
    
    // Uses the AxiosAdapter (the default one)
    const API = new API();
    API.get('user');
    
    // Uses the FetchAdapter
    const legacyAPI = new API(new FetchAdapter());
    legacyAPI.get('user');

    So next time you need to make changes to your project, evaluate which approach makes more sense:

    • Delete code. Write code
    • Refactor Code. Write Adapters.

    Judge carefully based on your specific use-case. Over-adapter-ifying your codebase and introducing too many abstractions could lead to increasing complexity which isn't good either.

    Happy adapter-ifying!


    Adapting JavaScript Abstractions Over Time is a post from CSS-Tricks

  • Friday 10 November 2017 - 18:57
  • Friday 10 November 2017 - 18:03

    Hey, it's HighScalability time: 


    Ah, the good old days. This is how the FBI stored finger prints in 1944. (Alex Wellerstein). How much data? Estimates range from 30GB to 2TB.

     

    If you like this sort of Stuff then please support me on Patreon. Also, there's my new book, Explain the Cloud Like I'm 10, for complete cloud newbies. 


    • 1 million: times we touch our phones per year; 13 million: lines of Javascript @ Facebook; 256K: RAM needed for TensorFlow on a microcontroller; 2,502%: increase in the sale of ransomware on the dark web; 800 million: monthly Instagram users; 40%: VMs in Azure run Linux; 40%: improved GCP network latency from new SDN stack; 50%: fat content of a woolly mammoth; 

    • Quotable Quotes:
      • Sean Parker: And that means that we [Facebook] need to sort of give you a little dopamine hit every once in a while, because someone liked or commented on a photo or a post or whatever. And that's going to get you to contribute more content, and that's going to get you ... more likes and comments
      • David Gerard: I spent yesterday afternoon on Twitter and /r/buttcoin, giggling. It was a popcorn overload moment for every acerbic cryptocurrency sceptic who ever thought that immutable, unfixable smart contracts were an obviously stupid idea that would continue to end in tears and massive losses, as they so often had previously.
      • @jessfraz: I remember now why I put everything into containers in the first place, it's because all software is 💩
      • Amin Vahdat: What we have found running our applications at Google is that latency is as important, or more important, for our applications than relative bandwidth. It is not just latency, but predictable latency at the tail of the distribution. If you have a hundred or a thousand applications talking to one another on some larger task, they are chatty with one another, exchanging small messages, and what they care about is making a request and getting a response back quickly, and doing so across what might a thousand parallel requests.
      • @SteveBellovin: Why anyone with any significant programming experience--and hence experience with bugs--every liked smart contracts is a mystery to me.
      • Neha Bagri: Startups worship the young. But research shows people are most innovative when they’re older
      • @manisha72617183: OH: I no longer tolerate complicated programming languages. My mental space is like Silicon Valley; rent is high and space is at a premium
      • @atoonk: On days like today, we're yet again reminded that the Internet is held together with duct tape.. #rockSolid #BGP #comcast #outage
      • @bradfitz: 0 days since last high impact bug in an experimental programming language on the Ethereum VM affecting millions of dollars.
      • TheScientist: The genetic, molecular, and morphological diversity of the brain leads to a functional diversification that is likely necessary for the higher-order cognitive processes that are unique to humans.
      • Woods' Theorem: As the complexity of a system increases, the accuracy of any single agent's own model of that system decreases rapidly.
      • Carlos E. Perez: The brain performs compensation when it encounters something it does not expect. It learns how to correct itself through perturbative methods. That’s what Deep Learning systems also do, and it’s got nothing to do with calculating probabilities. It’s just a whole bunch of “infinitesimal” incremental adjustments.
      • @erickschonfeld: “What can one expect of a few wretched wires?”—telegraph skeptic, 1841
      • @ErikVoorhees: The average Bitcoin transaction fee ($10.17) is now more than twice the cost of Bitcoin itself when I first learned of it ($5) in 2011 :(
      • LightShadow: StackOverflow should be one of the first internet companies to accept cryptocurrency micro payments. All they'd have to do is skim a small percentage from people tipping each other pennies for good answers
      • @lworonowicz: I feel like I killed a family dog - had to decommission an old #Solaris server with uptime of 6519 days.
      • Google: Andromeda 2.1 latency improvements come from a form of hypervisor bypass that builds on virtio, the Linux paravirtualization standard for device drivers. Andromeda 2.1 enhancements enable the Compute Engine guest VM and the Andromeda software switch to communicate directly via shared memory network queues, bypassing the hypervisor completely for performance-sensitive per-packet operations.
      • iAfrikan News: The first-ever fiber optic cable with a route between the U.S. And India via Brazil and South Africa will soon be a reality. This is according to a joint provisioning agreement entered into by Seaborn Networks ("Seaborn") and IOX Cable Ltd ("IOX").
      • @iamdevloper: 1969: -what're you doing with that 2KB of RAM? -sending people to the moon 2017: -what're you doing with that 1.5GB of RAM? -running Slack
      • Eric Schmidt: Bob Taylor invented almost everything in one form or another that we use today in the office and at home.
      • @ben11kehoe: I am so on board with CRDT-based data stores providing state to FaaS at the edge. 
      • VMG: “Code is Law” fails again.
      • Paul Frazee: In Bitcoin, acceptance of a change is signaled by the miners - once some percent of the miners agree, the change is accepted. This means that hashing power is used as a measure of voting power, and so the political system is essentially plutocratic. How is that significantly better than the board of a publicly traded company?
      • gtrubetskoy: Professor Tanenbaum is one of the most respected computer scientists alive, and for Intel to include Minix in their chip and not let him know is kind of unprofessional and not very nice to say the least. That is his only (and quite fair) point.
      • jsolson: Both approaches have tradeoffs, although I think even with ENA AWS hits ~70µs typical round-trip-times while GCE gets down to ~40µs. Amazon's largest VMs in some families do advertise higher bandwidth than GCE does currently.
      • @brendangregg: AWS put lots of work into optimizing Xen, including net & disk SR-IOV (direct metal access). But their new optimized KVM is even better.
      • @wheremattisat: “Facebook and Google are proto-AIs and we are their microbiome. The objective function of those AIs today is to make more money” @timoreilly
      • @ossia: "Weeks of programming can save you hours of planning." - Anonymous
      • @sallamar: For kicks, we run over 6.2 billion requests a month on lambda (450% yoy) at @ExpediaEng. Still cheaper than renting an apartment for a year.
      • @Joab_Jackson: At this point,IBM #openwhisk is the most viable #open source #serverless platform—@ryan_sb @thecloudcastnet #podcast
      • Polvi: I think PaaS is dead. That's why you see OpenShift and Cloud Foundry and everyone pivoting to Kubernetes. What's going to happen is PaaS will be reborn as serverless on the other side of the Kubernetes transition.
      • mmgutz: We're running our Debian farm on Azure thanks to startup perks. It's been up 100% for us the last 2.5 years. Azure service is no less or better than AWS.
      • zzzeek: I switch between multiple versions of MySQL and MariaDB all day long. If you aren't using specific things like MySQL's JSON type or NDB storage engine or expecting CHECK constraints to enforce on MySQL (oddly omitted from this feature comparison!), there is nothing different at all from a developer point of view, beyond the default values of flags which honestly change more between MySQL releases than anything else.
      • SEJeff: They [Azure] allow you to have native RDMA[1] for your VMs, something neither amazon or google will give you. As an oldhat Linux/Unix guy, it is somewhat amusing to think of Microsoft's cloud offering as the high perf one, but the facts don't lie. If you have true HPC style workloads such as bioinformatics, oil/natgas exploration, finance, etc, the extra node to node communication bits are necessary. The QDR fabric they have has a native speed of 40 Gbps. It is a shame they don't have FDR (56G) or EDR (100G), but still is quite impressive depending on your app. This also could be a game changer for large MPI jobs.
      • johnnycarcin: I've honestly yet to see a customer moving to Azure who has more than 50% Windows based systems. Almost everyone I've worked with only uses Windows Server for their SQL Server services, outside of that it's RHEL, CentOS or Ubuntu.
      • lurchedsawyer: So to answer your question as to what is needed for Azure to become a viable alternative to AWS: I would say about 10 years.
      • @mjpt777: If Google thinks latency trumps bandwidth then they should look to software before hardware for the main source of latency.
      • Ben Kehoe: Like so many things in life, serverless is not an all-or-nothing proposition. It’s a spectrum — and more than that, it has multiple dimensions along which the degree of serverlessness can vary
      • zzzeek: If I was doing brand new development somewhere I'm sure I'd use Postgresql, since from a developer point of view it's the most consistent and flexible. While for the last few years I've worked way more with MySQL / MariaDB and at the moment the MySQL side of things is a bit more familiar to me, I still appreciate PG's vastly superior query planner and index features.
      • There's more. Much more. Click through for more. More. More. More.

    Don't miss all that the Internet has to say on Scalability, click below and become eventually consistent with all scalability knowledge (which means this post has many more items to read so please keep on reading)...

  • Friday 10 November 2017 - 16:45

    The Symfony Awards are back this year and you only have a tiny week left to vote for them. You voted in 2015? Well, it's time to update your vote and vote for the 2017 edition! Discover all the Awards we'll reward this year.

    The vote for the Symfony Awards is open until November 16th (midnight). Did you make your selection yet? If not, don't miss the chance to reward the best Symfony community members for their great work within the Symfony community. You don't know who to vote for? You can check out the winners of the previous Symfony Awards editions to help you in your vote!

    Vote now, add your voice to the votes!

    The Symfony Awards Ceremony will be organized next week at SymfonyCon Cluj 2017, will you be there? Join us at the international Symfony conference for 2 days of 3 tracks conference, including an unconference track, check out the great schedule! You can still register to enjoy the annual Symfony reunion but hurry up. Many surprises are scheduled, see you there!

    Take a moment to thank the Symfony community members for their incredible involvement within the community by voting for the Symfony Awards 2017.


    Be trained by Symfony experts - 2017-11-22 Cologne - 2017-12-4 Lyon - 2017-12-4 Lyon
  • Friday 10 November 2017 - 15:00

    Partie intégrante de la vie d’un projet, la priorisation permet de trouver un juste équilibre entre les contraintes business et les enjeux technologiques à un instant donné afin de mettre rapidement en production un produit de qualité.

    PRIORISATION = F(BUSINESS, TECHNOLOGIE)

    Cela revient à s’assurer que l’on travaille toujours sur ce qui est important ou opportun, et éviter de passer du temps sur des sujets inutiles ou secondaires. C’est aller chercher en permanence l’apport de valeur pour le produit en s’assurant de la construction pertinente de son produit.

    1 – Pourquoi prioriser ?

    On s’en doute, la priorisation n’est pas une activité neutre. Elle commence dès les premiers instants du projet et est nécessaire jusqu’aux derniers. La priorisation nous oblige en permanence à se projeter dans le futur, à anticiper l’enchaînement des développements, à prévoir l’impensable et surtout la manière d’y remédier.

    Les intérêts de la priorisation sont multiples. Les exercices de priorisation permettent d’identifier certains risques du projet (coûts, délais, dépendances, ressources, etc), de vérifier que l’ordonnancement des tâches est conforme à la vision du produit et à la logique de développement. Enfin, c’est surtout une projection dans le futur qui permet d’avoir les deux ou trois coups d’avance nécessaires au bon déroulement du projet.

    Prioriser, c’est donc optimiser notre capacité à faire et faciliter la planification de nos tâches et de nos livraisons. On gagne aussi à mieux maîtriser la communication autour du produit. Dans bien des cas, il n’est pas possible de s’y soustraire : on priorise des tâches parce que nous avons beaucoup de demandes et une capacité de traitement moindre.

    2 – Les critères de la priorisation

    L’environnement des projets peut s’avérer complexe. Sortir un nouveau produit (construit de toutes pièces ou enrichi sur une base existante) nécessite l’élaboration d’une stratégie de delivery dont la priorisation est une composante majeure.

    On peut distinguer cinq critères principaux de priorisation: le business, la technologie, les contraintes externes, les risques projets et les imprévus. La priorisation est pertinente si TOUS les critères sont pris en considération.

    En fonction de la phase de votre projet (produit en construction ou produit en enrichissement), certains critères ont plus de poids que les autres. Prenons l’exemple d’un produit en construction. Bien que le produit ou la feature soit très attendus par les clients, les choix technologiques sont plus importants pour la fiabilité et la durabilité du projet (ie. technologie du socle, choix de stacks technologiques). A l’inverse, dans le cadre d’un produit enrichi, c’est peut-être plus les attentes du marchés (comprendre le besoin en nouvelles fonctionnalités) qu’il faut prendre en considération. Ces deux exemples démontrent que les critères de priorité peuvent être pondérés différemment en fonction de la phase de notre projet.

    Nous ne parlerons pas ici explicitement du temps. Le temps, tout le monde court après. Il en manque toujours et c’est en permanence que qu’il faut jouer avec la montre.

    A. Le critère de la valeur ajoutée

    Le contexte business est le critère majeur qui impose un rythme aux choix de priorités. A certaines périodes, il peut y avoir des échéances business fortes sur certaines fonctionnalités. L’entreprise peut s’être engagée auprès de ses utilisateurs à livrer une  fonctionnalité clé avant une certaine date. La priorisation doit donc prendre en compte le “Time-to-market”.

    Et de façon générale, il est d’usage de prioriser les fonctionnalités qui vont apporter le plus de valeur aux utilisateurs – ou celles qui par effet “Waouh” offrent un impact d’image positif – et de réserver les fonctionnalités “nice to have” pour des livraisons futures.

    Quand le produit sera disponible aux utilisateurs (early adopters ou non), les retours qu’ils pourront vous faire nous amèneront à modifier notre priorisation. Sans pour autant se laisser diriger par les retours des utilisateurs, il est important de prendre en compte des remarques sur le produit que plusieurs pourront partager.

    B. Le critère technologique

    Il arrive dans certains projets que les développeurs n’aient pas leur mot à dire concernant la priorisation. C’est dommage car ils sont les plus à même pour identifier les éventuels quick-wins. D’autant que parfois, nous n’avons pas le choix : techniquement certaines fonctionnalités ont  plus de sens à être développées avant d’autres (ie. développer une API avant un front).

    Nous étudions ici les contraintes qu’impose une dette technique abyssale, la refonte de briques techniques obsolètes ou inadaptées. Monter des étages sur un immeuble sans fondations est stupide, c’est pourquoi il est intéressant de s’attaquer aux bases (le socle technologique, les choix architecturaux) de notre produit avant de vouloir développer de nouvelles fonctionnalités. De surcroît, le choix de certains technologies seront nécessaires à votre incrément de valeur.

    Dans cette prise en compte des contraintes technologiques, il faut évaluer le temps de réalisation. Cette contrainte temporelle nous amènera sûrement à revoir vos choix, au moins dans un premier temps. On visera, par exemple, un MVP sur une feature pour proposer rapidement de la valeur, et faire des choix plus conséquent pour fiabiliser technologiquement la feature. Il faut viser le bon équilibre et abuser de bonne intelligence.

    C. Les contraintes externes

    Un autre levier décisif pour la priorisation est la prise en compte des contraintes externes.

    Il arrive régulièrement qu’un développement soit repoussé à plus tard car il nécessite la disponibilité d’une brique technique extérieure fournie par un partenaire (exemple : service de paiement). L’intérêt est de développer en premier les fonctionnalités qu’on pourra terminer plutôt que d’en réaliser une partie et d’attendre que les contraintes externes se lèvent.

    Outre les questions de dépendances, d’autres contraintes peuvent obliger à prioriser certains développements. Il peut s’agir de contraintes d’ordre technique – par exemple la sortie d’une nouvelle version d’iOS nécessitant de passer du temps pour vérifier si le code actuel est compatible – ou d’ordre réglementaire – comme devoir ajouter certains champs pour être conforme aux normes Bâle 2 (domaine bancaire) ou encore ergonomique – comme pour se rendre conforme aux règles d’accessibilités suite à un audit de certification.

    D. Les risques projet

    Stratégiquement, nous voulons réaliser tout ce qui comporte des risques le plus tôt possible dans les projets, afin d’avoir la confirmation que les risques ont été éliminés.

    Pour les risques métier, on va tester au plus tôt les fonctionnalités structurantes sur des populations réduites d’utilisateurs afin de recueillir leurs feedbacks et éventuellement changer son fusil d’épaule s’il s’avère que les utilisateurs ne sont pas intéressés.

    On va aussi tester rapidement les pré-requis élémentaires du produit. Par exemple, pour un site e-commerce, il vaut mieux se rendre compte le plus tôt possible qu’on ne pourra pas s’interfacer avec le service de paiement.

    Pour les risques techniques le but est à peu près le même. L’idée est de dérisquer au plus tôt l’ensemble des appels à un SI par exemple afin de pouvoir trouver des solutions palliatives en cas de problème.

    E. Les imprévus

    On priorise tout au long du projet, et il est important de noter que même s’il existe peu de risques dans le projet, il y aura toujours des imprévus qui vont nous forcer à re-prioriser :

    la visite de tel sponsor projet auquel on a promis de faire une démonstration sur telle fonctionnalité, le marché qui évolue d’une manière inattendue., etc. Tout peut remettre en cause une partie de votre proposition de valeur. L’habileté et la confiance de l’équipe permet de pallier ces situations, toujours frustrantes.

     

    3. En bonus

    Conséquence directe d’un exercice de priorisation, certaines user stories bien qu’intéressantes, d’un point de vue business ou technologique, seront mises de côté ou reportées à une date ultérieure. La différences par rapport au autre US du backlog ? Ces US sont nice to have, pas forcément difficile à réaliser et l’on peut être tenter de les supprimer du backlog. Ce paquet d’US constitue le Stock Biz au sein du backlog et il est intéressant de les conserver.

    On peut ainsi profiter de creux de business – pendant la période estivale par exemple – pour consacrer quelques itérations à optimiser l’application en développant des fonctionnalités moins essentielles : on piochera alors dans les US du Stock Biz.

    Mais aussi, d’un point de vue tactique, il peut être intéressant de choisir de confier certaines de ces US “nice to have”, simples à réaliser, aux membres récemment arrivés dans l’équipe pour leur permettre de se “faire la main” sur le code de l’application.

    C’est pourquoi il est intéressant de toujours garder de côté dans le backlog un stock de fonctionnalités non prioritaires, sans toutefois tomber dans l’obésité du backlog : des user stories qui ne seront jamais réalisées seront simplement supprimées du backlog.

     

    4. Posture pour prioriser

    La priorisation est un jeu avec lequel il faut être à l’aise. Il suppose d’avoir en permanence la vision du produit, et la vision de l’avancement de son projet. La mise en production d’un produit n’est pas une promenade de santé. Tout est fait, selon la loi de Murphy, pour nous retarder, faire changer vos plans, etc.

    A. Communiquer

    La priorisation, bien que souvent portée par le product owner, n’est pas à son usage exclusif. Seul, il ne pourra pas prioriser de manière intelligente. Il a besoin de son équipe, et des décideurs sur le plan technique et sur le plan fonctionnel. C’est bien de cette interaction entre les acteurs clés du produit (product owner, techlead, utilisateurs finaux, etc) que peut surgir une priorisation partagée et efficace.

    B. Décider

    La revue des priorisations, c’est comme ressentir des turbulences sur un vol au long court. L’idéal, c’est de les éviter, quoique imprévisibles. La confiance de l’équipage et son expérience permettent de mieux appréhender ces phases de vols. Et comme un bon pilote, il faudra savoir s’adapter. Certaines situations seront trop dangereuses, il faudra alors apprendre à dire NON. NON car trop de risques, trop de délais, trop d’incertitude, etc.

    C. Négocier

    Les enjeux parfois sont tels que nous ne pourrons pas faire autrement que de répondre d’une manière ou d’une autre au besoin qui nous est demandé. S’il n’est pas possible de dire NON, il faut alors se donner une marge de manoeuvre pour réussir : c’est la négociation. La nouvelle demande implique forcément du temps ou des ressources en moins pour finir ce qui a été engagé sur le sprint. Négocier le délai, renégocier le périmètre du sprint, etc. Belle partie de poker en perspective pour trouver un consensus qui satisfasse l’équipe, l’utilisateur et qui réponde toujours aux enjeux attendus par le produit.

    D. Protéger

    Une des grandes attentes d’une priorisation bien huilée est de maintenir la stabilité de l’équipe. C’est le point intangible. Faire en sorte que la trajectoire de l’avion soit la plus confortable possible, la plus douce, la plus calme. Si la priorisation doit remettre en cause la sécurité de l’équipe ou du projet, le plus sage est encore de refuser une demande, ou de la négocier. Quelle que soit la situation, les décideurs (fonctionnels ou techniques) prendront des décisions franches, après avoir étudié et pris en compte les contraintes et arguments de chacun des acteurs.

     

    Pour conclure

    Prioriser suppose de trouver un juste équilibre entre les impératifs à court terme de l’équipe (métier et développeurs) et des contraintes externes, le tout dans une stratégie plus long terme basée sur les risques et les éventuelles opportunités tactiques d’optimisation.

    La phase du produit (construction ou enrichissement) nous aidera à pondérer vos critères de priorisation. On reprécise bien ici que la priorisation ne peut pas se faire sur la base d’un seul de ces cinq critères, mais que c’est bien l’ensemble de ces indicateurs qui nous permettront d’être efficace dans votre priorisation.

    Une bonne priorisation suppose également de faire discuter tous les acteurs pour trouver des compromis : c’est la communication puis la négociation. Et cette négociation intervient principalement dans les séances de backlog grooming que nous organisons régulièrement au cours de notre projet. Elles permettent de rassembler les acteurs clés du produit, sans oublier les utilisateurs finaux, pour partager les contraintes et trouver la bonne priorisation.

    Malgré tous les critères possibles, la priorisation est le fruit des attentes business et des choix technologiques. Prioriser, et surtout reprioriser en permanence, est au cœur des pratiques agiles. C’est parce qu’elle est en capacité de s’adapter et de réagir rapidement (de changer ses priorités) qu’une équipe est agile. Elle atteint alors un état de résilience parfait où elle sait gérer les turbulences sans délai et de manière continue.

     

    PRIORISATION = F(BUSINESS, TECHNOLOGIE)

  • Friday 10 November 2017 - 11:30

    Si vous utilisez le WordPress pour votre site, peut-être avez-vous installé en plus, l'extension Jetpack qui permet de profiter des certaines fonctionnalités du site WordPress.com sur sa version auto-hébergée. Jetpack offre pas mal de fonctionnalités supplémentaires pour améliorer la sécurité de votre site, faire des sauvegardes, optimiser le SEO, mieux gérer votre contenu, accéder à des stats et j'en passe.

    Toutefois, parce qu'ils sont encore en test, ou parce qu'ils vont bientôt être abandonnés, certains modules demeurent cachés dans l'interface de Jetpack. Voici comment les afficher pour pouvoir les installer (à vos risques et périls évidemment )

    Pour cela, ouvrez la page de paramétrage de l'extension Jetpack et rendez-vous tout en bas de celle-ci. Vous devriez voir un petit lien nommé "Debug".

    Cliquez dessus, et vous arriverez sur une page sur laquelle se trouve le lien suivant : "Access the full list of Jetpack modules available on your site"

    Et voilà, ainsi, vous aurez accès à l'intégralité des modules proposés par cet super extension !

    Enjoy !

    Source

    Cet article merveilleux et sans aucun égal intitulé : Accèder aux modules cachés de Jetpack pour WordPress ; a été publié sur Korben, le seul site qui t'aime plus fort que tes parents.