KrISS feed 8.7 - Ein einfacher und schlauer (oder dummer) Feed-Reader. Von Tontof
  • Thursday 01 January 2015 - 01:00
    Duodi 12 Nivôse CCXXIII 2015-01-01T08:47 Le soleil vient de se lever… Chaque matin, une année nouvelle… Bonne Année Internationale de la Lumière et des Techniques Utilisant la Lumière. #IYL2015 #IYL2015 Happy International Year of Light & Light-based Technologies everyone! #IYL2015 @UNESCO pic.twitter.com/S7zaNyfrv7 — IYL2015 (@IYL2015) 31 Décembre 2014 (...) Je veux que chaque matin soit pour moi une année nouvelle. Chaque jour je veux faire les comptes avec moi-même, et me renouveler chaque jour.
  • Wednesday 31 December 2014 - 01:00
    Inspiration & remerciements à Taylor Jones pour son post de référence m’ayant sérieusement aidé pour capter le fonctionnement des collections dans Jekyll. Le code de l’exemple d’une collection d’albums de musique est posé sur github. Comment Démarrer des Collections dans Jekyll 2.xx Migration WordPress vers Jekyll : un an déjà… Fin 2013, je prenais la décision de migrer de WordPress vers une motorisation Jekyll pour m’essayer à la pose de quelques premières briques de construction indieweb.
  • Tuesday 30 December 2014 - 01:00
    lien de référence Dans votre site Jekyll, tout n’est pas « Post » ou « Page ». Vous voudrez peut-être parfois publier des petites notes de statut, documenter différentes méthodes dans votre projet OpenSource, un annuaire des membres d’une équipe, une liste de livres ou d’albums de musique. Les collections vous permettent de définir un nouveau type de document qui se comporte comme le font normalement les Pages ou les Posts, mais disposent aussi de leurs propres propriétés uniques et d’un espace-nom.
  • Monday 29 December 2014 - 19:15
  • Sunday 28 December 2014 - 21:00
    Tout ce qu'il faut savoir sur les expressions régulières
  • Wednesday 24 December 2014 - 18:57
    Le code source de The Pirate Bay disponible sur Github :)
    (Permalink)
  • Wednesday 24 December 2014 - 18:20

    Après avoir installé NzbGet et NzbDrone (récemment renommé sonar), il ne reste plus qu’à les configurer et à en sécuriser l’accès. Pour ce faire, le principe de base consiste à utiliser Nginx en reverse proxy ssl devant ces deux applicatifs.

    Quel est l’intérêt ? Nginx va permettre de « masquer » NzbGet et NzbDrone en évitant de les rendre accessibles directement depuis Internet. Nginx est un serveur connu et fiable, est-ce que l’on peut en dire autant des deux autres ? Personnellement, j’éviterai de parier la sécurité de mon serveur là-dessus.

    * La version de Sonarr/NzbDrone 2.0.0.2663 a apporté pas mal de changements et la configuration nginx ci-dessous doit-être modifiée en conséquence. L’article reflète maintenant ces changements

    Environnement

    OS : Debian 7.7 stable (Wheezy) 64bits
    Nginx : nginx/1.6.2
    NzbDrone : 2.0.0.2500 2.0.0.2663
    Mono : 3.10
    NzbGet : 13.0

    Configuration Nginx

    Pour faire simple, j’ai rajouté les 3 « blocs locations » à la fin de la configuration du Nginx de ma seedbox. Je renvoie à l’article en question qui explique pas à pas la configuration complète avec la terminaison SSL. Mais fondamentalement, on a quelque chose qui ressemble à cela :

    server {
            listen                  443 ssl;
            server_name             www.mondomaine.com;
    
            access_log              /var/log/nginx/transmission_access.log;
            error_log               /var/log/nginx/transmission_error.log;
    
            # gere le controle d acces a l interface
            auth_basic              "Veuillez-vous authentifier";
            auth_basic_user_file    /etc/nginx/secu/password-transmission;
    
            # See https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx
            ssl_certificate                 /etc/nginx/secu/transmission.crt;
            ssl_certificate_key             /etc/nginx/secu/transmission.key;
    
            ssl_session_timeout             5m;
    
            ssl_protocols                   TLSv1.1 TLSv1.2;
            ssl_ciphers                     ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK:!MD5:!DSS;
            ssl_prefer_server_ciphers       on;
            ssl_session_cache               shared:SSL:10m;
    
            # ici toute la configuration pour transmission ou autre ou rien
            [...]
    
            # configuration pour NzbGet
            location /nzbget/ {
                    include                 /etc/nginx/proxy_params;
                    proxy_pass              http://127.0.0.1:6789/;
    
                    proxy_http_version      1.1;
                    proxy_set_header        Accept-Encoding	"";
            }
    
            # configuration pour NzbDrone
            location /nzbdrone {
                    proxy_pass              http://127.0.0.1:8989/nzbdrone;
    
                    proxy_set_header        X-Real-IP	$remote_addr;
                    proxy_set_header        X-Forwarded-For	$proxy_add_x_forwarded_for;
    
                    proxy_http_version      1.1;
                    proxy_set_header        Accept-Encoding	"";
    
            }
    
            # configuration pour les backups de NzbDrone
            location /backup/ {
                    alias                   /var/lib/nzbdrone/.config/NzbDrone/Backups/;
            }
    }

    Il s’agit d’une configuration très classique de reverse proxy avec terminaison SSL et authentification. Seule bizarrerie, l’accès au répertoire contenant les backups de configuration de NzbDrone.

    Configuration de NzbGet

    Si vous avez suivi le tuto de NzbGet, le fichier de configuration se trouve /usr/local/etc/nzbget.conf. Pour peu que Nzbget ait accès en écriture à son fichier de configuration, on peut réaliser cette dernière à l’aide de l’interface graphique. Ce n’est pas le plus sécurisé, mais par contre le plus simple. Normalement, le « home directory » a déjà été créé et hébergera le « MainDir ».

    # pour donner à nzbget l'accès au fichier de conf
    root@server:~# chown nzbget. /usr/local/etc/nzbget.conf
    root@server:~# service nzbgetd start
    [ ok ] Starting NZBGet: nzbgetd.

    Il ne reste plus qu’à rentrer dans son navigateur préféré l’adresse https://www.mondomaine.com/nzbget. Je renvoie de manière éhontée à ce guide de configuration. Seuls 3 éléments sont importants dans notre cas.

    Configurer le MainDir

    Configurer le MainDir


    Passer le ControlIP sur le localhost et désactiver le ssl et l’authentification


    Configuration de NzbDrone

    Le principe de configuration de NzbDrone reste le même. A ceci près qu’il n’est pas possible, pour le moment, de forcer NzbDrone à écouter sur une adresse IP spécifique. C’est maintenant chose faite avec la version 2.0.0.2663.
    Les principaux éléments de configuration de NzbDrone se trouvent dans un fichier xml créé au premier démarrage. Le point principal est de bien configurer la balise UrlBase. Laissez, dans un premier temps, la balise BindAddress égale à * pour faciliter le debug.

    root@server:~# service nzbdrone start
    [ ok ] Starting NZBDrone: nzbdrone.
    root@server:~# cat  /var/lib/nzbdrone/.config/NzbDrone/config.xml
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <Config>
      <Port>8989</Port>
      <SslPort>9898</SslPort>
      <EnableSsl>False</EnableSsl>
      <LaunchBrowser>False</LaunchBrowser>
      <ApiKey>43e1b1caeb7a4bb6ad4f82b36360b332</ApiKey>
      <AuthenticationEnabled>False</AuthenticationEnabled>
      <Branch>master</Branch>
      <Username>
      </Username>
      <Password>
      </Password>
      <LogLevel>Info</LogLevel>
      <SslCertHash>
      </SslCertHash>
      <UrlBase>/nzbdrone/</UrlBase>
      <UpdateMechanism>BuiltIn</UpdateMechanism>
      <BindAddress>127.0.0.1</BindAddress>
    </Config>
    root@server:~# service nzbdrone restart
    [ ok ] Stopping NZBDrone: nzbdrone.
    [ ok ] Starting NZBDrone: nzbdrone.

    Une fois cette configuration initiale réalisée, on peut se connecter via Nginx avec https://www.mondomaine.com/nzbdrone. En cas de soucis, il est toujours possible de se connecter directement à l’interface graphique : http://www.mondomaine.com:8989.
    nzbdrone_config_ini
    Une fois que l’accès via Nginx fonctionne, on verrouille l’accès direct à NzbDrone depuis internet en passant la balise BindAddress à « 127.0.0.1 ».
    Une dernière chose à noter. NzbDrone permet une mise à jour depuis l’interface graphique. Il nécessite juste un accès en écriture au répertoire /opt/NzbDrone ce qui peut poser des problèmes de sécurité. En même temps, si la configuration SSL de Nginx est solide, cela ne devrait pas être gênant. Au choix donc :

    root@server:~# chown nzbdrone. /opt/NzbDrone/ -vR

    Il ne reste plus maintenant qu’à réaliser la configuration générale de NzbDrone à l’aide de ce tuto.

    Sécurité et Conclusion

    Toute la sécurisation du serveur repose sur le fait que les applicatifs NzbGet et NzbDrone ne sont accessibles que via Nginx, qui dispose d’un mécanisme d’authentification protégé par SSL. La sécurité est a donc priori solide, mais il faudra bien vérifier plusieurs points.

    NzbGet et NzbDrone ne sont accessibles uniquement sur le localhost

    • vérifier que NzbGet n’écoute que sur le localhost : netstat -ntpul | grep nzbget
    • vérifier que NzbDrone (via mono) n’écoute que sur le localhost : netstat -ntpul | grep mono

    Verrouiller les droits des fichiers en local
    Selon son degré de paranoïa, on peut restreindre les modifications sur les fichiers du système :

    • accès au fichier de conf de nzbget : chown root. /usr/local/etc/nzbget.conf
    • accès au fichier de conf de nzbdrone : chown root. /var/lib/nzbdrone/.config/NzbDrone/config.xml
    • accès à l’applicatif NzbDrone : chown root. /opt/NzbDrone -vR

    Bien sûr, ces restrictions empêchent les modifications de config ou les MAJ depuis la GUI.

    Configuration SSL et Autorisations
    Je renvoie vers ce tuto pour une bonne configuration SSL. Attention à bien remettre à jour sa config par rapport aux dernières recommandations. Bien évidemment, choisissez un mot de passe fort!

    La base de la configuration système est maintenant faite. Il ne reste plus qu’à finir la configuration depuis la GUI et commencer à télécharger des œuvres libres de droits! Encore une fois, le site htpcguides.com fourni de très bonnes explications pas à pas. A noter qu’il est possible de monter son propre indexeur privé de newsgroups, ce qui sera peut-être l’occasion de rédiger un prochain article.

    The post Configurer NzbDrone et NzbGet avec Nginx appeared first on Le Blog d'un Geek.

  • Wednesday 24 December 2014 - 13:23
    À garder sous la patte en cas de besoin.
    (Permalink)
  • Thursday 18 December 2014 - 19:51
    À garder sous la patte, pour éviter de devoir passer deux heures à expliquer à quelqu'un ce qu'est un ordinateur. Je n'ai plus la patience :)
    (Permalink)
  • Thursday 27 November 2014 - 15:41
    Ah oui, zut !

    Un copain bosse chez eux et m'avait prévenu par avance mais j'ai oublié de vous transmettre l'info, désolé...

    Côté techos, ils ont bien essayer de les en dissuader. Mais que voulez-vous, la rentabilité est plus importante que le respect de ses visiteurs. ^^'
    (Permalink)
  • Tuesday 25 November 2014 - 23:27
    Les éditions ENI proposent aux internautes la consultation gratuite de l'intégralité de leur catalogue à partir du 27 novembre minuit,...
  • Friday 21 November 2014 - 11:20
    J'avais rassemblé quelques clés utiles du about:config de Firefox sur mon wiki.

    Je viens de mettre la page à jour pour en faire un guide plus complet et utile. Vous y trouverez pas mal d'élément que vous connaissez déjà, mais étant moi-même tête-en-l'air, ça ne me fera pas de mal.
    (Permalink)
  • Wednesday 19 November 2014 - 15:03

    Il est maintenant possible de l’utiliser via composer :

    "calendar/icsfile": "dev-master"
    

    Salut,

    Pour un besoin personnel j’ai du créer cette class PHP qui génère un événement pour Outlook, gmail…
    Voici la classe en question :

    <?php
    /*
     * Variables used in this script:
     * $summary     - text title of the event
     * $dateStart   - the starting date (in seconds since unix epoch)
     * $dateEnd     - the ending date (in seconds since unix epoch)
     * $address     - the event's address
     * $description - text description of the event
     * $filename    - the name of this file for saving (e.g. my-event-name.ics)
     */
    
    namespace ical;
    
    class ical {
    
        private $name;
        private $timezoneICal = 'Europe/Paris';
        private $dateStart;
        private $summary;
        private $dateEnd;
        private $filename;
        private $address;
        private $description;
        private $alarm        = FALSE;
        private $repeat       = FALSE;
        
        public function getName() {
            return $this->name;
        }
    
        public function getTimezoneICal() {
            return $this->timezoneICal;
        }
    
        public function getDateStart() {
            return $this->dateStart;
        }
    
        public function getSummary() {
            return $this->summary;
        }
    
        public function getDateEnd() {
            return $this->dateEnd;
        }
    
        public function getFilename() {
            return $this->filename;
        }
    
        public function getAddress() {
            return $this->address;
        }
    
        public function getDescription() {
            return $this->description;
        }
    
        public function getAlarm() {
            return $this->alarm;
        }
    
        public function getRepeat() {
            return $this->repeat;
        }
    
        public function setName($name) {
            $this->name = $name;
            return $this;
        }
       
        public function setTimezoneICal($timezoneICal) {
            $this->timezoneICal = $timezoneICal;
            return $this;
        }
    
        public function setDateStart($dateStart) {
            $this->dateStart = $this->_dateToCal($this->_human_to_unix($dateStart));
            return $this;
        }
    
        public function setSummary($summary) {
            $this->summary = $summary;
            return $this;
        }
    
        public function setDateEnd($dateEnd) {
            $this->dateEnd = $this->_dateToCal($this->_human_to_unix($dateEnd));
            return $this;
        }
    
        public function setFilename($filename) {
            $this->filename = $filename;
            return $this;
        }
    
        public function setAddress($address) {
            $this->address = $address;
            return $this;
        }
    
        public function setDescription($description) {
            $this->description = $description;
            return $this;
        }
    
        public function setAlarm($alarm) {
    
            if (is_int($alarm)) {
                $this->alarm = $alarm;
                return $this;
            } else {
                throw new \Exception(__CLASS__ . " : It's not an integer", 01);
            }
        }
    
        public function setRepeat($repeat) {
            $this->repeat = $repeat;
            return $this;
        }
    
        /**
         * @name getICAL()
         * @access public
         * @return string $iCal
         */
        public function getICAL() {
    
            $iCal = "BEGIN:VCALENDAR" . "\r\n";
            $iCal .= 'VERSION:2.0' . "\r\n";
            $iCal .= "PRODID:" . $this->getName() . "\r\n";
            $iCal .= "CALSCALE:GREGORIAN " . "\r\n";
            $iCal .= "BEGIN:VEVENT" . "\r\n";
            $iCal .= "DTSTART:" . $this->getDateStart() . "\r\n";
            $iCal .= "DTEND:" . $this->getDateEnd() . "\r\n";
            $iCal .= "SUMMARY:" . $this->_escapeString($this->getSummary()) . "\r\n";
            $iCal .= 'UID:' . uniqid() . "\r\n";
            $iCal .= 'LOCATION: ' . $this->_escapeString($this->getAddress()) . "\r\n";
            $iCal .= 'DESCRIPTION:' . $this->_escapeString($this->getDescription()) . "\r\n";
    
            if ($this->getAlarm()) {
                $iCal .= 'BEGIN:VALARM' . "\r\n";
                $iCal .= 'ACTION:DISPLAY' . "\r\n";
                $iCal .= 'DESCRIPTION:Reminder' . "\r\n";
                $iCal .= 'TRIGGER:-PT' . $this->getAlarm() . 'M' . "\r\n";
                if ($this->getRepeat()) {
                    $iCal .= 'REPEAT:' . $this->getRepeat() . "\r\n";
                }
                $iCal .= "END:VALARM" . "\r\n";
            }
            $iCal .= 'END:VEVENT' . "\r\n";
            $iCal .= 'END:VCALENDAR' . "\r\n";
            return $iCal;
        }
    
        /**
         * @name _dateToCal()
         * @access private
         * @param string $timestamp
         * @return string
         */
        private function _dateToCal($timestamp) {
    
            return date('Ymd\THis\Z', $timestamp);
        }
    
        /**
         * @name _escapeString()
         * @abstract Escapes a string of characters
         * @param string $string
         * @return string
         */
        private function _escapeString($string) {
            return preg_replace('/([\,;])/', '\\\$1', $string);
        }
    
        /**
         * @name $setHeader();
         */
        public function setHeader() {
            header('Content-type: text/calendar; charset=utf-8');
            header('Content-Disposition: attachment; filename=' . $this->getFilename() . '.ics');
        }
    
        /**
         * @name _human_to_unix()
         * @desciption this function is from codeigniter frameWork
         * @param string $datestr
         * @return boolean
         */
        private function _human_to_unix($datestr) {
    
            $datestr = preg_replace("/\040+/", ' ', trim($datestr));
    
            if (!preg_match('/^[0-9]{2,4}\-[0-9]{1,2}\-[0-9]{1,2}\s[0-9]{1,2}:[0-9]{1,2}(?::[0-9]{1,2})?(?:\s[AP]M)?$/i', $datestr)) {
                throw new \Exception(__CLASS__ . " : bad" . $datestr);
            }
    
            $split = explode(' ', $datestr);
    
            $ex = explode("-", $split['0']);
    
            $year  = (strlen($ex['0']) == 2) ? '20' . $ex['0'] : $ex['0'];
            $month = (strlen($ex['1']) == 1) ? '0' . $ex['1'] : $ex['1'];
            $day   = (strlen($ex['2']) == 1) ? '0' . $ex['2'] : $ex['2'];
    
            $ex = explode(":", $split['1']);
    
            $hour = (strlen($ex['0']) == 1) ? '0' . $ex['0'] : $ex['0'];
            $min  = (strlen($ex['1']) == 1) ? '0' . $ex['1'] : $ex['1'];
    
            if (isset($ex['2']) && preg_match('/[0-9]{1,2}/', $ex['2'])) {
                $sec = (strlen($ex['2']) == 1) ? '0' . $ex['2'] : $ex['2'];
            } else {
                // Unless specified, seconds get set to zero.
                $sec = '00';
            }
    
            if (isset($split['2'])) {
                $ampm = strtolower($split['2']);
    
                if (substr($ampm, 0, 1) == 'p' AND $hour < 12)
                    $hour = $hour + 12;
    
                if (substr($ampm, 0, 1) == 'a' AND $hour == 12)
                    $hour = '00';
    
                if (strlen($hour) == 1)
                    $hour = '0' . $hour;
            }
    
            return mktime($hour, $min, $sec, $month, $day, $year);
        }
    
    }
    

    Pour l’utiliser voici le code :

     <?php      
     require_once 'vendor/autoload.php';
    
        use ical\ical;
    try {
     
            $ical = new ical();
            $ical->setAddress('Paris');
            $ical->setDateStart('2014-11-21 15:00:00');
            $ical->setDateEnd('2014-11-21 16:00:00');
            $ical->setDescription('wonder description');
            $ical->setSummary('Running');
            $ical->setFilename(uniqid());
            $ical->setHeader();
           
        echo $ical->getICAL();
                
      
            } catch (Exception $exc) {
                echo $exc->getMessage();
    }
    
    

    Cette class est disponible sous Bitbucket, voici l’adresse https://bitbucket.org/colonelMoutarde/icalendar-generator.

    The post Générer un évenement *.ics pour outlook en PHP appeared first on Le blog de Luc.

  • Tuesday 18 November 2014 - 13:26
  • Sunday 16 November 2014 - 18:30
    Utiliser la commande set -u pour tester l'initialisation des variables
  • Sunday 16 November 2014 - 17:45
    Utiliser la commande set -e pour tester le code retour
  • Wednesday 12 November 2014 - 19:46
    Ajouter des fichiers à un commit déjà existant ou fusionner deux commits
  • Monday 10 November 2014 - 15:25

    Je me permet de vous faire part de cette petite astuce bien pratique qui me permet de récupérer les médias d’un fichier Word, PowerPoint… En effet, les copier/coller habituels ont parfois des effets hasardeux.

    Voici de que je vous recommande, attention cette astuce ne fonctionne qu’avec les fichiers de type *.docx ou *.pptx.

    Il suffit de renommer l’extension de *.docx en *.zip et d’ouvrir le fichier. On y découvre une arborescence, on ouvre le dossier word puis le dossier media et là : miracle, toutes les photos son présentes en bonne qualités…

    Enjoy…

     

    The post Comment récupérer les images d’un document word ? appeared first on Le blog de Luc.

  • Friday 17 October 2014 - 16:25
    J'avais effectivement cru comprendre...

    Y'a pas moyen de remplacer cette adresse FTP, et de se monter un serveur communautaire mieux dimensionné (dès que quelqu'un arrive à télécharger le fichier, il le met à jour sur le serveur communautaire) ? :D

    Sinon, ça vaudrait peut-être le coup de remonter le problème à Wiko... Après tout c'est leur partenaire, ils doivent pouvoir faire pression dessus, nan ?
    (Permalink)
  • Friday 17 October 2014 - 13:48
    Bon à force de vous entendre parler de Wiko, j'ai fini par suivre le mouvement (en réalité c'est un choix purement réfléchi) et m'acheter le Wiko Birdy 4G, et je suis assez satisfait.

    Moi qui n'en pouvait plus du débit pathétique de Free Mobile sur Lyon (réseau saturé ?), je suis vraiment heureux d'être passé en 4G (ce n'est pas tout blanc, mais ça corrige pas mal de problèmes, à la maison comme au travail). Rien que de pouvoir télécharger les cartes directement via OsmAnd en quelques minutes et sans flinguer la batterie, c'est du bonheur.

    Par contre, c'est un smartphone récent et complètement à jour, actuellement non rootable, et contrairement aux tests évoqués sur internet, j'ai eu beaucoup de difficultés à avoir un fix GPS (ce contre quoi je ne peux rien tant qu'il n'est pas rooté, arg)...

    Pour quand il sera rootable, je me note ce que j'ai trouvé d'utile sur Shaarli-River :
    http://fr.wikomobile.com/maj.php?telephone=297
    http://sebsauvage.net/links/?FGI5lQ
    http://www.petitetremalfaisant.eu/index.php?wiko-cink-peax-2-suppression-des-bloatware.php
    http://korben.info/xprivacy-trompez-les-applications-android-fausses-donnees.html
    (Permalink)
  • Wednesday 15 October 2014 - 16:50
      Daniel Sörlöv, un MVP PowerShell Suédois, vient de publier un outil qui va en intéresser plus d'un ! Il s'agit...
  • Monday 13 October 2014 - 12:59
      Amazon vient de publier un White Paper extrêmement bien écrit et détaillé sur comment combiner la fonctionnalité Desired State Configuration...
  • Sunday 05 October 2014 - 15:10
    J'ai récemment décidé de m'équiper d'une tablette et j'ai donc exploré le marché existant à la recherche d'une perle rare, correspondant à mes besoins et pas trop chère.

    Venant de changer de smartphone pour passer d'un smartphone Android, à un Lumia 625 sous Windows Phone 8.1, j'ai cherché à choisir une une tablette fonctionnant sous Windows, pour tester s'il y existe une vraie convergence entre Windows pour PC, tablette et smartphone.

    J'ai pu constater que 2 architectures de tablettes sous Windows existent toujours, ce qui rend l'offre peu lisible:

    • des tablettes avec processeur à architecture ARM fonctionnant avec Windows RT.
    • des tablettes avec processeur à architecture x86 fonctionnant avec Windows 8.1, comme sur PC.

    Au début de l'année 2014, l'annonce de la plateforme Intel Atom Bay trail, promettait la sortie de tablettes Windows 8.1 pas trop chère. J'ai donc voulu voir si la promesse avait été tenue.

    Le premières commercialisées par les grandes marques ont été les suivantes:

    Tablette
    Acer Inconia W4
    Lenovo Ideapad Miix 2 8
    Toshiba Encore 2
    Asus VivoPad Note
    Processeur
    Atom Z3740
    Atom Z3740
    Atom Z3735F
    Atom Z3740
    RAM
    2Go
    2Go
    2Go
    2Go
    Stockage
    32Go
    64Go
    32Go
    64Go
    Écran
    8.1'
    8'
    10'
    8'

    Les caractéristiques de ces tablettes sont assez similaires et se négocient autours de 200€~300€.

    Pour faire mon choix, j'ai fait un tableau récapitulant toutes les version d'Atom Bay Trail


    Modèle
    Cores /
    Threads
    Fréquence /
    Turbo
    L2
    cache
    RAM Maxi
    Type de Ram
    Bande passante
    Atom Z3735D
    4 / 4
    1.33 / 1.83 GHz
    2 Mo
    2 Go
    DDR3L-RS-1333
    10.6 Go/s
    Atom Z3735E
    4 / 4
    1.33 / 1.83 GHz
    2 Mo
    1 Go
    DDR3L-RS-1333
    5.3 Go/s
    Atom Z3735F
    4 / 4
    1.33 / 1.83 GHz
    2 Mo
    2 Go
    DDR3L-RS-1333
    10.6 Go/s
    Atom Z3735G
    4 / 4
    1.33 / 1.83 GHz
    2 Mo
    1 Go
    DDR3L-RS-1333
    5.3 Go/s
    Atom Z3736F
    4 / 4
    1.33 / 2.16 GHz
    2 Mo
    2 Go
    DDR3L-RS-1333
    10.6 Go/s
    Atom Z3736G
    4 / 4
    1.33 / 2.16 GHz
    2 Mo
    1 Go
    DDR3L-RS-1333
    10.6 Go/s
    Atom Z3740
    4 / 4
    1.33 / 1.83 GHz
    2 Mo
    4 Go
    LPDDR3-1066
    17.1 Go/s
    Atom Z3740D
    4 / 4
    1.33 / 1.83 GHz
    2 Mo
    2 Go
    DDR3L-RS-1333
    10.6 Go/s
    Atom Z3745
    4 / 4
    1.33 / 1.86 GHz
    2 Mo
    4 Go
    LPDDR3-1066
    17.1 Go/s
    Atom Z3745D
    4 / 4
    1.33 / 1.83 GHz
    2 Mo
    2 Go
    DDR3L-RS-1333
    10.6 Go/s
    Atom Z3770
    4 / 4
    1.46 / 2.39 GHz
    2 Mo
    4 Go
    LPDDR3-1066
    17.1 Go/s
    Atom Z3770D
    4 / 4
    1.5 / 2.41 GHz
    2 Mo
    2 Go
    DDR3L-RS-1333
    10.6 Go/s
    Atom Z3775
    4 / 4
    1.46 / 2.39 GHz
    2 Mo
    4 Go
    LPDDR3-1066
    17.1 Go/s
    Atom Z3775D
    4 / 4
    1.49 / 2.41 GHz
    2 Mo
    2Go
    DDR3L-RS-1333
    10.6 Go/s
    Atom Z3785
    4 / 4
    1.49 / 2.41 GHz
    2 Mo
    4Go
    LPDDR3-1333
    21.3 Go/s
    Atom Z3795
    4 / 4
    1.59 / 2.39 GHz
    2 Mo
    4Go
    LPDDR3-1066
    17.1 Go/s


    Les variantes de ces processeurs sont sensiblement équivalente, les différences se faisant essentiellement au niveau de la mémoire

    Par curiosité, j'ai voulu voir ce que proposaient les fabricants chinois avec cette même architecture et j'ai remarqué l'existence de la tablette Pipo W2, trouvable autour de 140€ en version 2 Go de RAM.

    Tablette
    Pipo W2
    Processeur
    Atom Z3735D E F ou G
    RAM
    1 ou 2 Go
    Stockage
    16 ou 32Go
    Écran
    8'

    Les grands fabricants ont depuis aussi annoncé des tablettes aux prestations et au tarif équivalent, telle que la HP Stream, Toshiba encore mini ou la Archos 80 Césium... mais ces produits ne sont pas encore disponibles. J'ai donc choisi de commander cette Pipo W2 dont je vous parlerais dans un autre post.


  • Thursday 18 September 2014 - 14:00
    Après plus d’un an passé sur la syntaxe Mediawiki, décidé de passer l’année 2014 en Markdown ! Cette anti-sèche est destinée à des fins de référence rapide pour étude d’inter-opérabilité de ce langage de mise en forme très simple. (Pressenti ailleurs comme l’avenir de l’écriture)) Pour une information de référence plus complète, regardez la spécification originale de John Gruber et la page d’information sur le Markdown-enrichi de GitHub. P.S. Ce post est un premier essai publié directement à partir de l’éditeur de texte Byword assorti de son module intégré de publication vers WordPress.
  • Wednesday 17 September 2014 - 15:00

    Bonne nouvelle, le site du zero OpenCassRooms le propose en première page de son site !!!

    C’est bon mon tutoriel a été accepté, je vous invite à le suivre et à me faire quelque retours…

    Dploy c’est quoi ?

    Dploy c’est un un script qui va uploader les fichiers et dossiers que vous avez versionné avec Git sur un serveur distant.

    En effet quant on travaille sur de petits projet on est souvent en présence d’un simple accès ftp

    Les prérequis pour ce cours sont :

    • Connaitre l’utilisation du logiciel Git, si ce n’est pas le cas reportez-vous au tutoriel de Mathieu Nembra, il est très complet.
    • Il doit être installé sur votre ordinateur.
    • Avoir node.js d’installé sur son ordinateur.
    • Avoir suivi le cours sur node.js au moins pour la partie installation.
    • Une connexion internet.
    • Un hébergement sur lequel se connecter en ftp ou en sftp.

    Si tout est bon, on peut commencer !

    Lire la suite sur le site openClassrooms

    The post Déployer son site sur un serveur ftp avec Dploy appeared first on Le blog de Luc.

  • Monday 15 September 2014 - 11:25

    Après une belle maj de votre système, vous avez, au moment de vous remettre au travail, un sympathique message du genre

    ImportError: No module named datetime
    

    detatime !! Cette lib fait pourtant partie du standard de python ! Le fait est que lorsque l'on met à jour python, les liens utilisés à la création du venv sont hs !

    Ici c'est la lib datetime qui a été remonté, mais ça peu être n'importe laquelle ..

    Solution

    Il ne m'a pas fallu longtemps pour résoudre ce problème tout bête, ( beaucoup de cas similaires sur le net ).

    Réinitialiser le virtualenv

    Par exemple avec mon venv nommé foo

    virtualenv /home/cdsl/.virtualenvs/foo
    New python executable in /home/foo/.virtualenvs/creasoft3/bin/python
    Installing setuptools............done.
    Installing pip...............done.
    

    Et voilà ..

  • Friday 12 September 2014 - 13:38
    "Et d'après mon ophtalmo, le Flou, c'est quand même plus ou moins l'ennemi du Net"
    Mouarf ! :-D
    (Permalink)
  • Tuesday 09 September 2014 - 13:28

    Si les livres relatifs à l’agilité du point de vue du développeur sont légion, ceux l’abordant du point de vue fonctionnel sont assez rares.

    Or, l’agilité mise avant tout sur la bonne collaboration de toutes les parties prenantes d’un projet pour parvenir à sa concrétisation.

    Il est donc primordial que chaque intervenant dispose d’une vision claire des concepts agiles et sache les exploiter au mieux dans son domaine de compétence.

    Le livre de Thierry Cros intitulé Spécifiez agile a donc éveillé très fortement ma curiosité lorsque j’ai découvert son existence, à tel point que je me le suis offert en me disant que cela me permettrait peut être de mieux faire passer l’agilité auprès des experts fonctionnels avec lesquels je tentais de travailler à l’époque.

    Voici donc ma critique de ce livre qui, je l’espère, permettra à Thierry d’améliorer son ouvrage.

    Il commence d’ailleurs son livre en nous expliquant la façon dont il a été conçu, c’est-à-dire de manière agile, et donc en nous encourageant à lui fournir un retour afin qu’il puisse l’améliorer.

    L’existence de ce billet implique que cette explication atteint parfaitement son objectif, en plus d’humaniser l’ouvrage puisque Thierry nous explique en prime ce qui l’a poussé à se lancer dans l’écriture de ce livre et le chemin qu’il a suivi pour parvenir à sa publication.

    Cette humanisation se poursuit d’ailleurs dans les deux chapitres suivants, Thierry nous y expliquant dans le premier le rôle du « product owner » tandis qu’il pose les bases d’une mise en application de l’agilité en terme fonctionnel dans le cadre d’un cas pratique théorique.

    Mais malheureusement, son discours devient beaucoup plus académique dans les chapitres suivants, et je le regrette.

    En effet, je pense que la transmission de son message aurait été beaucoup plus efficace s’il s’était servi de cette base de départ pour illustrer au moins une partie des concepts présentés par la suite de son livre, sinon la totalité.

    Ainsi, la digestion de cette masse d’information serait certainement plus facile et accessoirement favoriserait potentiellement sa mémorisation en offrant des repères mnémoniques.

    Cela ne veut cependant pas dire que les chapitres suivants sont pour autant inintéressants, bien au contraire.

    Le vocabulaire agile relatif à l’aspect fonctionnel du développement d’un logiciel est parfaitement expliqué, associé à une dose pertinente de concept psychologique relatif à la communication dans le cadre d’un groupe.

    Malheureusement, les références illustrant ces concepts sont bien souvent succinctes, mais je pense avoir été handicapé à ce sujet par le fait que je n’utilisais pas la version numérique du livre qui doit, contrairement à la version papier, contenir des liens vers les articles correspondants.

    Les chapitres relatifs à la « valeur métier » ainsi qu’à la « vision » du produit sont ceux qui m’ont le plus interpellé, et pas uniquement parce que dans mon contexte de l’époque, ces deux concepts étaient complètement ignorés.

    En effet, d’après ce que j’ai pu constater au cours de ma carrière ou des discussions que j’ai pu avoir à ce sujet, les développeurs savent bien souvent plus ou moins approximativement ce qu’ils doivent faire, mais ne savent en général pas pourquoi ils doivent le faire. En clair, ils n’ont que trop rarement connaissance de l’objectif que leur travail est censé permettre d’atteindre à un niveau plus global (bien souvent parce que le client n’en a lui même qu’une vague idée, mais c’est un autre débat).

    Or, je suis persuadé qu’un développeur doit savoir à la fois ce qu’il doit faire et pourquoi il doit le faire afin de pouvoir trouver dans la combinaison de ces deux informations la motivation pour sortir de sa zone de confort, se surpasser, évoluer et ainsi ne plus être juste un « pisseur de code » bête et méchant.

    Ainsi, le client y trouve son compte, car son produit répond mieux à ses besoins et le développeur gagne en compétence et en estime de soi, car il sait à la fois à quoi et comment il a contribué.

    Et enfin, la vision peut permettre aux développeurs de résoudre leur problème en plus d’être pour eux un redoutable outil d’aide à la décision.

    Ainsi, si la vision du produit met en avant la performance, ils choisiront les technologies qu’ils mettront en œuvre en conséquence, et lorsqu’un consensus ne peut être atteint au sein des développeurs sur un point ou un autre, se référer à la vision peut permettre de dénouer la situation en remettant les choses en perspective par rapport à l’objectif à atteindre.

    Il est donc important que les fonctionnels et les développeurs disposent d’une vision commune du produit correspondant à celle du client, et Thierry insiste donc à juste titre sur ces deux notions bien souvent trop occultées durant la vie d’un projet.

    Et pour le coup, j’aurais trouvé très pertinent d’illustrer à minima ce chapitre relatif à la vision à l’aide du cas pratique mis en place dans le second chapitre.

    J’ai également aimé que Thierry évoque dans son ouvrage la problématique de la prise de décision et présente une méthode permettant d’y parvenir en y impliquant tous ceux devant y prendre part, tout en n’occultant pas le fait que cela n’est pas simple pour autant, tant s’en faut.

    Au passage, pour ceux que la problématique de la prise de décision intéresse, la conférence d’Olivier Sibony à ce sujet est remarquable.

    L’un dans l’autre, j’ai donc trouvé mon compte en lisant le livre de Thierry, et je ne peux donc qu’en recommander la lecture aux développeurs ou aux fonctionnels qui veulent améliorer leur façon de travailler avec « celui d’en face », qu’il soit développeur ou fonctionnel, ne serait-ce que parce qu’il permet à un développeur de mieux comprendre les contraintes et la façon de travailler d’un fonctionnel dans un tel contexte, et réciproquement.

    En effet, si la forme du livre serait à mon avis beaucoup plus agréable si l’ambiance des deux premiers chapitres était propagée aux autres, reste que son fond est plus qu’intéressant puisqu’il propose des solutions et des pistes à suivre pour résoudre des problèmes que l’on rencontre communément lorsque l’on développe un logiciel.

    Alors, à 23 € ou à partir de 7 € au format numérique, faites-vous une faveur, offrez ou offrez-vous Spécifiez agile  (et non, ce billet n'est pas sponsorisé) !

  • Monday 01 September 2014 - 08:33

    Il y a quelques jours, Johannes Shlüter a donné une conférence à propos du fonctionnement de phpng.

    Pour ceux qui l’ignorerait, Johannes a été le « release master » de la version 5.3 du langage, et phpng sera le remplaçant du Zend Engine 2 dans ce qui sera PHP 7, qui correspond à la prochaine version majeure du système et qui prendra donc la suite de PHP 5.

    Vous avez bien tout suivi ? Si ce n’est pas le cas, relisez le paragraphe précédent en faisant abstraction de vos connaissances en arithmétique élémentaire…

    Le mariage de PHP 7 et de phpng devrait être consommé dans approximativement un an, d’après Zeev Suraski.

    Grâce à phpng, PHP 7 devrait donc apporter un gain de performance très significatif, comme d’habitude avec chaque nouvelle version du langage…

    Or, cette date de livraison de PHP 7 a plus ou moins été décidée arbitrairement par les promoteurs de phpng, et d’autres développeurs, à commencer par ceux qui mettent quotidiennement les mains dans le code du langage, doute très fortement qu’un tel délai soit tenable.

    Et comme à ma connaissance, la feuille de route fonctionnelle relative à PHP 7 est inexistante même si beaucoup ont des idées sur ce qui devrait être son contenu, je ne peux que partager leur opinion, car je vois mal comment une date de livraison peut avoir été définie alors que la masse de travail à réaliser est inconnue.

    Comme le disent si bien deux comiques français, il y a en qui ont essayé, et ils ont eu des problèmes.

    De plus, phpng est apparemment lui-même loin d’être finalisé, puisqu’il semble manquer de cohérence et que sa documentation est succincte pour un code de cette complexité.

    There is almost no documentation, the APIs are not clean or inconsistent […] but having two separate zpp, same area's functions mixing use of zend_char and char (creating hard to catch bugs, not always catch-able at compile time f.e.)

    Et enfin, même si ce délai de livraison était réaliste, il faudrait à minima que les développeurs du langage produisent une version 5.7 du langage pour respecter le rythme prévu.

    Durant un an à minima, si tout se passe bien, les développeurs de PHP devront donc travailler sur deux versions divergentes du code techniquement parlant puisque l’une utilisera la dernière version du Zend Engine 2 et l’autre phpng.

    Et de plus, phpng évoluera certainement pendant ce temps de son côté, car même s’il a énormément progressé depuis qu’il a été présenté par Zend, il subira encore des évolutions significatives, ne serait-ce que pour rester compatible avec les modifications apportées au Zend Engine 2.

    Or, le fiasco de PHP 6 a, entre autres choses, démontré que la gestion de deux branches très différentes du code du langage est un exercice plus que périlleux pour les développeurs.

    J’ai donc l’impression que contrairement à ce que je pensais, ces derniers n’ont pas vraiment tiré les leçons de l’échec du développement de PHP 6, et que malheureusement l’histoire va une nouvelle fois se répéter, d'autant que les luttes d'influences au sein d'internals@ ont été plus qu'intense à ce sujet.

    Et même si je peux comprendre la pression et le danger économique que représente le développement de HHVM pour Zend, j’ai à contrario vraiment du mal à comprendre que la plupart des développeurs du langage ne voient pas le danger que représente cette stratégie.

    Donc, lorsque j’apprends que Johannes donne des conférences à propos de phpng, un produit non finalisé qui ne sera intégré au sein du langage que probablement dans plusieurs années, je ne peux m’empêcher de rire un peu jaune, et j’espère que cela intéressera suffisamment les développeurs présents à sa conférence pour qu’ils décident de participer au mariage de phpng avec PHP 7 pour que je n’ai pas à faire dans trois ans sa nécrologie.

  • Wednesday 20 August 2014 - 09:24
    Je confirme que si ce tunnel est sympa, les piétons n'ont pas assez de place et empiètent sur les pistes cyclables régulièrement (pas que je leur en veuille, notez). Et on n'y voit vraiment que dalle si on n'a pas de lampe à vélo. Et on n'entend encore moins les usagers à cause de la zic d'ambiance qui tourne en permanence.

    via shaarli-river
    (Permalink)
  • Monday 11 August 2014 - 15:08

    Il faut que tu travailles bien à l’école pour réussir dans la vie.

    Il faut que tu travailles bien et beaucoup pour réussir ta carrière.

    Il faut que tu aies une Rolex à ton poignet avant 50 ans pour réussir ta vie.

    Il faut… pour réussir…

    Je pense que nous avons tous entendu cette ritournelle à minima une fois dans notre vie, même si parfois, elle est exprimée de manière presque subliminale.

    Pendant longtemps, je me suis interrogé sur la signification de ce « réussir » que nos parents, les politiques et la société nous servent à toutes les sauces sous une forme ou sous une autre.

    En effet, je ne me sentais pas à l’aise avec la définition implicite qui émane de tous ces leitmotivs récurrents qui semblent systématiquement attacher à la notion de réussite l’argent, le travail et le matérialisme.

    Et puis, au détour d’un film, j’ai eu « ma » définition de la réussite, celle qui correspond à mes valeurs, qui est en accord avec mes convictions et avec laquelle je suis parfaitement en phase :

    Réussir, ce n’est pas toujours ce qu’on croit.

    Ce n’est pas devenir célèbre, ni riche ou encore puissant.

    Réussir, c’est sortir de son lit le matin et être heureux de ce que l’on va faire durant la journée, si heureux qu’on a l’impression de s’envoler.

    C’est travailler avec des gens qu’on aime.

    Réussir, c’est être en contact avec le monde, et communiquer sa passion.

    C’est trouver une façon de rassembler des gens qui n’ont peut-être rien d’autre en commun qu’un rêve.

    C’est se coucher le soir en se disant qu’on a fait du mieux qu’on a pu.

    Réussir, c’est connaître la joie, la liberté et l’amitié.

    Je dirais que réussir, c’est aimer.

    Et si je me base sur cette définition, aujourd’hui, je n’ai pas réussi, et malheureusement à plus d’un titre.

    Il est donc plus que temps que je fasse en sorte d’y parvenir !

  • Tuesday 05 August 2014 - 02:00
    Humeur à 100% avec Algie Vasculaire de la Face. Même si ça pique toujours aussi fort… (#douleur) Wikipedia raconte que les Américains la surnomment cyniquement the Boss Headache (le mal de tête du patron) … Des références sont demandées ! L’algie vasculaire de la face (AVF) est une forme aigüe de céphalée essentielle. Il s’agit d’une maladie neurologique rare qui touche à la fois les nerfs et les vaisseaux.
  • Sunday 03 August 2014 - 02:00
    Les collections dans Jekyll 2.0 Tout dans votre site Jekyll n’est pas un post ou une page. Vous voudrez peut-être documenter différentes méthodes dans votre projet OpenSource, l’annuaire des membres d’une équipe ou une liste d’albums de musique. Les collections vous permettent de définir un nouveau type de document qui se comporte comme le font normalement les Pages ou les Posts, mais elles disposent aussi de leurs propres propriétés uniques et d’un espace-nom.
  • Saturday 02 August 2014 - 20:56
    Bonjour,

    J'ai eu peu de temps à consacrer à mon blog ces derniers temps, mais voici un nouvel article publié avec du retard.

    Les changements d'adresse IP avec Orange, m'ont conduit a mettre en place un script permettant de fonctionner avec le service Dynhost de OVH charger de gérer de manière dynamique l'adresse IP associée à un nom de domaine.

    Je me suis basé sur les liens suivants:

    • http://guide.ovh.com/DynDns
    • http://www.tropfacile.net/doku.php/raspberry-pi/comment-installer-un-serveur-mail
    • http://dev.kprod.net/?q=dns-dynamique-avec-dynhost-ovh
    Ainsi que les conseils d'un lecteur du blog que je remercie


    Je ne vais pas faire un tutoriel de plus, mais voici les commandes que j'ai utilisé pour installer ce script:
    sudo apt-get update
    sudo apt-get install dnsutils
    wget http://www.bozorokus.net/DynHost.tgz
    tar xvzf DynHost.tgz
    cd DynHost/

    J'ai ensuite modifié le script d'origine pour qu'il lise la nouvelle adresse IP attribuée par Orange dans l'interface de la Livebox.

    J'ai aussi ajouté un contrôles pour vérifier que l'IP soit bien enregistrée dans les DNS.

    Voici ma version du script:

    #! /bin/sh

    IFACE=eth0
    HOST=error418.net
    LOGIN=error418.net-dyn
    PASSWORD=418_dyn
    OPTIONS=""

    getip() {
          NEWIP=`curl 192.168.0.1 | awk '/WAN/{getline;split($2,Addr,">");split(Addr[2],AddIp,"<");print "\n\n"AddIp[1]"\n\n"}'`

    CURIP=`host error418.net | awk '/address/ {print $NF}'`


           OLDIP=`cat ./old.ip`
            }

    echo ---------------------------------- >> ./dynhost.log
    echo `date` >> ./dynhost.log 
    echo Démarrage de DynHost >> ./dynhost.log
    getip
            echo -n "New IP: " >> ./dynhost.log
            echo $NEWIP >> ./dynhost.log

            echo -n "Current IP: " >> ./dynhost.log
            echo $CURIP >> ./dynhost.log

    echo -n "Old IP: " >> ./dynhost.log
            echo $OLDIP >> ./dynhost.log

    if [ "$NEWIP" ]; then
    if [ $OLDIP != $NEWIP ] || [ $CURIP != $NEWIP ]; then
    echo "Mise à jour!" >> ./dynhost.log
         if [ "$OPTIONS" =  "" ]; then 
              OPTIONS="-a $NEWIP" 
             fi
        python /home/pi/DynHost/ipcheck.py $OPTIONS $LOGIN $PASSWORD $HOST >> ./dynhost.log
        echo -n "$NEWIP" > ./old.ip
         else
              echo IP Identique! Pas de mise à jour. >> ./dynhost.log
         fi
     else
         echo Panique à bord: Aucune IP Disponible!! >> ./dynhost.log
     fi

    Enfin, une petite tache planifiée pour completer le tout:

    */10 * * * * /home/pi/DynHost/dynhost >> /home/pi/dynhostcrontab.log 2>&1

  • Saturday 02 August 2014 - 02:00
    Depuis la publication de ce post, la motorisation de ce site a changé pour Hugo, aussi les liens d’exemples sont dépréciés. Les instructions déposées restent à vérifier. Inspiré pour reprendre l’étude de l’IndieMark sur cette instance Jekyll. Une inspiration particulièrement dopée par l’arrivée sur IndieWeb de Pierre Ozoux. Et par le dépannage webmention reçu de Michiel, notre ami sauveur du web passé à Paris mercredi dernier pour le premier meetup de décentralisation du net chez Mozilla.
  • Friday 01 August 2014 - 13:04

    En cette période de vacances, nous sommes nombreux à nous connecter depuis nos terminaux ( smartphone, tablette .. ) pour surfer, parfois travailler , dépanner .
    Il est vrai que ces appareils sont formidables sur ce point ( le coté nomade ). Mais le revers de la médaille, c'est la sécurité !
    Lorsque vous vous connectez à une borne wifi ( gratuite ou non ), qui vous assure que votre navigation n'est pas épiée ?
    Voilà pour le coté sécurité, mais il peut être aussi utile de se connecter à son réseau local depuis l'extérieur.
    Nous allons pour cela nous connecter via un serveur proxy de type socks.
    Maintenant peu importe ce qui motive l'utilisation d'une telle connexion, voyons comment faire pour nous y connecter depuis un client Android non chrooté

    Les apps à installer

    1. juiceSSH
    2. Firefox

    JuiceSSH est un client SSH qui fonctionne vraiment bien, gratuit pour les fonctionnalités de base, mais payant pour faire une redirection de port. Vous allez donc devoir l'acheter, mais l'investissement en vaut la peine.
    D'autres ont utilisé ConnectBOT qui lui est à 100% gratuit, mais de mon coté il plantait régulièrement je n'ai donc pas insisté.

    Configuration de juiceSSH

    Nous allons commencer par créer une connexion SSH de base, le tout en image :

    2014_08_01_12.06.59.png

    2014_08_01_12.08.03.png

    • Nickname : nom de la connexion
    • Type : SSH
    • Adresse : Adresse du serveur SSH
    • Identity : Login pour se connecter au serveur SSH
    • Port : port à utiliser pour se connecter au serveur SSH

    Configuration de la redirection de port

    Allez dans l'onglet PORT FORWARD, et nous allons utiliser la connexion SSH précédemment crée, comme ceci.

    2014_08_01_12.08.40.png

    Il est ensuite possible de mettre une icône sur votre page principale, pour se connecter plus rapidement au serveur proxy SOCKS

    2014_08_01_12.08.57.png

    Configuration de Firefox

    Pour utiliser le serveur proxy ( après s'y être connecté ), dans firefox, ouvrez un nouvel onglet et entrez dans la barre d'adresse :

    about:config


    Voici les 5 paramètres à configurer comme ceci

    2014_08_01_12.05.51.png 2014_08_01_12.06.11.png

    Tests

    Voilà maintenant vous pouvez tester le bon fonctionnement en entrant l'url suivante : http://www.whatismyip.com/, qui devrait vous afficher l'ip du serveur SSH à partir duquel vos requêtes sont envoyés .

    Bonnes vacances .

  • Thursday 31 July 2014 - 02:00
    De la critique sur les usages et la pertinence des offres actuelles de l’auto-mesure. Pourquoi le mouvement du Quantified Self peine à décoller ? titre Télérama dans un excellent article critique paru au sein du webdocumentaire Quand le Corps Humain devient Machine. En super-bonus, découvrez notamment les points de vue éclairés de Nicolas Geraud et Remy Bourganel, co-producteurs de notre dernière rencontre consacrée au design : (…) Pourquoi ce mouvement peine-t-il à décoller alors qu’il a apparemment tout pour réussir ?
  • Tuesday 29 July 2014 - 14:07

    Wow, wow, calm down!

    http://developer.android.com/tools/device.html

    C'est pas vraiment planqué... Si ils livraient l'O avec le mode "développeur" activé par défaut, c'est un peu comme si on te livrait ta voiture en kit en te disant "voilà, c'est une voiture en mode mécano".

    Les gens lambda n'en n'ont rien à carrer de ces options, et ça peut même leur donner l'impression que le produit n'est pas fini avec une telle option !

    Maintenant si tu veux bidouiller, tu prends le manuel (au moins ça t'oblige à le lire pour éviter de faire des conneries).
    Permalink

  • Monday 28 July 2014 - 14:35
    Je viens d'avoir une discussion très intéressante avec l'auteur de Paletton.com, à propos des modèles de couleurs.

    Il base son système sur l'espace colorimétrique RJB au lieu de RVB. Si celui-ci est "faux" d'un point de vue mathématique et physique, il prend tout son sens lorsqu'on s'intéresse au fonctionnement de l'oeil humain. Au final, le modèle RJB permet de construire des associations de couleurs que nous percevrons comme plus "naturelles".

    Bref, va falloir que je revois mes bouts de code (http://www.yosko.net/tag/couleur)

    Plus d'info sur RJB (RYB en anglais) : https://en.wikipedia.org/wiki/RYB_color_model
    (Permalink)
  • Friday 25 July 2014 - 23:45

    Le réseau WIFI ce serait pas un hotspot Free ou autre ? Voire un AP avec une clé WEP ?

    Si oui alors ce message ne me semble pas déconnant et provient très probablement directement d'android.
    Permalink

  • Friday 25 July 2014 - 14:15
    Exchange Server s'appuyant en plein sur PowerShell, vous êtes nombreux à vous demander dans quelle mesure à partir d'une machine...
  • Friday 25 July 2014 - 10:44

    C'est marrant, parce que justement, chez Google, lors des entretiens ils te posent des questions dont les réponses se trouvent effectivement sur internet sans que tu y aies forcément accès.
    Genre des questions sur les complexités algorithmiques.

    Et même si un certain nombre (voire toutes) d'informations se trouvent dans des livres, dans le man, sur internet, dans la tête de notre collègue. La mémoire me semble quelque chose d'important pour travailler !

    Combien de fois par semaine on me pose les mêmes questions sur des choses documentées, que je ré-explique à chaque fois en m'appuyant sur les documentations ?!
    Tu n'imagines même pas à quel point ça fait perdre du temps (et de l'argent) à tout le monde...
    Permalink

  • Friday 25 July 2014 - 09:21
    Je préfère les espaces, mais très sincèrement dans mon cas c'est juste une question de goût.

    Malgré tout, j'ai déjà entendu des arguments du genre : le TAB peut représenter un nombre différent d'espace selon l'environnement/réglage de l'IDE. L'essentiel est donc de ne pas mélanger les deux.

    Le problème se pose surtout quand du code est passé de main en main et d'équipe en équipe depuis des années...
    (Permalink)
  • Thursday 24 July 2014 - 15:16
    La dépression d'un serveur web face à une erreur 404... :D
    (Permalink)
  • Thursday 17 July 2014 - 14:11

    Oh pinaise, vanhu est encore en vie, et il a toujours autant de poils !
    Permalink

  • Friday 11 July 2014 - 14:38

    Je ne suis jamais allé aux USA donc peut-être que ce que je vais dire est totalement faux.
    Mais comme on le dit toujours, il n'y a pas que les chiffres bruts dans la vie...
    En france on a la chance (pour le moment) de disposer de très bonnes formations GRATUITES (on peut aussi choisir de payer son diplôme si on le désire, mais c'est un autre débat).
    Là-bas, les étudiants sont obligés de s'endetter sur plusieurs années afin d'avoir un diplôme !

    De même, le système éducatif n'est pas comparable. Je ne connais pas le degré d'autonomie d'un "stagiaire" américain, mais en France, les stagiaires que je croise sont (en moyenne, car il y a toujours des exceptions) de moins en moins autonomes.
    Certes les sujets traités par les stagiaires sont peut-être moins intéressants, mais c'est parce qu'il est quasi impossible de leur donner des responsabilités !
    Et dans notre culture française, c'est bien les responsabilités qui rapportent de l'argent.
    Permalink