Firefox: Url du serveur de synchronisation

Pour utiliser son propre serveur de synchronisation dans Firefox, il est nécessaire d’effectuer une petite modification dans about:config. Chercher la propriété nommée services.sync.tokenServerURI et la remplacer par l’url du serveur en faisant attention à ajouter token/1.0/sync/1.5 comme chemin.

Ce qui nous donne par exemple:

services.sync.tokenServerURI: http://sync.exmpl.com/token/1.0/sync/1.5

Source: Documentation Sync-1.5 Server.

[Raw Nerve 1] Prendre du recul

En début d’année, je publiais une traduction du quatrième article de la série Raw Nerve d’Aaron Swartz. Quelques mois plus tard, voici maintenant la traduction de l’article d’introduction de cette série.

Prendre du recul

Cet article introduit une nouvelle série Pensée Sensible.

La majeure partie de ma vie, j’ai considéré mon travail comme devoir faire les bons choix. J’étais le décideur, chargé de faire le meilleur choix parmi les options que la vie présentait. Je pouvais m’amuser avec cet ami ou celui-là, aller dans cette université ou celle-là, profite de cette offre d’emploi ou cette autre.

J’agissais de même avec mes problèmes. Si quelqu’un m’ennuyait, je choisissais de l’éviter. Si quelque chose m’embêtait, je choisissais de ne plus y penser. Je gardais généralement les yeux sur ce qui se trouvait devant moi.

Mais récemment, j’ai commencé à apprécier les vertus de la prise de recul et j’ai essayé d’avoir une vue d’ensemble. Au lieu de simplement choisir la meilleure option, j’essaie d’en inventer de nouvelles. Au lieu de simplement éviter les choses qui m’embêtent, je devais commencer à faire des projets pour y remédier.

Cela me procure un sentiment étrange. J’ai l’impression d’avoir davantage de contrôle sur ma vie, d’être davantage capable de surmonter mes problèmes. J’ai le sentiment de dessiner ma propre destinée, plutôt que de suivre un chemin. C’est difficile à expliquer, mais c’est comme avoir l’impression de devenir plus fort – pas physiquement, mais psychologiquement. C’est une sensation agréable. J’ai l’impression de grandir en tant qu’être humain.

J’ai donc commencé à me demander: y-a-t-il d’autres techniques semblables? J’ai réalisé que je n’ai jamais arrêté de me demander si je pouvais vivre mieux améliorer ma vie. Après tout, dans ma journée de travail, je suis constamment à la recherche de moyen d’apprendre et de mûrir – lisant les derniers livres et articles dans le domaine, parlant aux autres personnes avec un travail similaire et écoutant ce qui avait fonctionné pour eux. Pourquoi ne fais-je pas la même chose pour la vie?

Cela s’est avéré étonnamment difficile. Il n’y a pas de mode d’emploi pour la vie et les conseils que donnent les parents sont confus. La télévision et les journaux n’offrent rien de plus que quelques « Trucs et astuces » et je n’ai jamais vu un cours à ce sujet à l’école. Il y a bien sûr des livres et des cours de développement personnel, mais il semble trop pratique: il y a généralement peu sur l’analyse de problèmes compliqués et beaucoup sur se stimuler pour avoir la pêche. Et il y a une philosophie sur La Belle Vie, mais cela semple aller trop loin dans l’autre direction: il y a très peu de choses là-dedans pouvant être appliquées en pratique.

Les blogs sont un mélange bizarre. Il y a des blogs sur les « hacks de la vie », qui sont pleins de gadgets et de bidules  qui semblent causer plus de problèmes qu’ils n’en résolvent.  Il y a les  blogs anti-procrastination, où l’auteur a un flux constant d’ illuminations qui semblent toutes se résumer à « mettre de côté les distractions et faire ce qu’il y a à faire ». Et il y a les charlatans, qui vous disent que  tous vos rêves les plus fous peuvent devenir réalité si vous suivez  leurs conseils brevetés.

Donc, à la place d’un endroit évident où chercher, j’ai seulement trouvé des petits trucs dans toutes sortes d’endroits étranges: expériences psychologiques, livres sur les affaires, philosophie, développement personnel, mathématiques, et mes amis. Mais comme il n’y a pas de communauté, il est difficile d’en discuter avec quelqu’un (essayer de persuader d’autres personnes de s’intéresser à ce à quoi vous vous intéressez est imprudent).

J’ai donc pensé que j’allais commencer à en parler ici et voir si quelqu’un s’en soucie. Peut-être que ça va donner quelque chose, mais même si ce n’est pas le cas, au moins je clarifierai mes pensées et avec un peu de chance recevrai quelques bonnes suggestions pour une lecture plus poussée.

Je n’ai pas de mot pour ce dont je parle, ni même une idée précise de ce que c’est. J’ai l’espoir que cela va devenir plus clair avec la pratique. Mais en attendant, qu’est-ce qui vous aide à améliorer votre vie? -votre réflexion, vos décisions, votre travail, votre intelligence. Que ce soit un gadget, une technique, un livre ou une personne, je serais ravi que vous partagiez ce que vous avez trouvé de plus utile dans les commentaires.

Article suivant: Croire que vous pouvez changer

18 Août 2012

Article original : http://www.aaronsw.com/weblog/stepback

Dubitatif

C’est le sentiment qui ressort après un petit test de Diaspora*.

J’ai installé une instance il y a quelques jours, un pod comme on dit. Côté wiki et documentation d’installation, rien à redire, une fois que l’on a la bonne configuration apache, tout fonctionne comme sur des roulettes. Diaspora* fait mieux que Movim sur ce point et j’arrêterai la comparaison ici pour me concentrer sur Diaspora*.

Le projet me plaît bien, l’interface est agréable… mais alors qu’est-ce donc qui assombrit le tableau? La découverte d’autres utilisateurs! Si vous connaissez quelqu’un présent sur un autre pod et êtes en possession de son identifiant (de la forme identifiant@autre-pod.org), aucun problème, vous pourrez ajouter cette personne à votre liste de contact et voir ses messages dans votre flux.

En revanche, impossible de suivre une personne postant des tags #photography sur un autre pod que le votre, sauf à priori par partage dans son flux de la part d’un contact présent sur le pod en question. Dans le cas d’un pod avec une faible population, les possibilités de découvrir une autre personne avec laquelle on aurait des intérêts communs semblent plus que jamais limitées.

Un dilemme se présente alors à l’utilisateur technophile. Commencer ou continuer à héberger un pod avec peu d’utilisateurs et ainsi, contribuer à une vision décentralisée du web, où chaque petite instance fait partie d’un ensemble plus grand. Ou céder à la facilité et rejoindre un pod avec une communauté plus grande, ou disposant de plus de visibilité donc attirant plus de monde. On pourra alors partager plus simplement ses dernières prises de vues, pensées,  opinions politiques, recettes de grand-mère et j’en passe. On repasserait alors à un système centralisé. Certes moins que les silos de données comme Facebook et Twitter.

Ce « problème » fait d’ailleurs l’objet d’une issue Github. A ce sujet, je vous conseille donc la lecture de cet article de Flaburgan qui résume bien le pourquoi du comment.

Sur ces considérations, j’ai donc pris la décision de tenter le coup et de continuer à faire fonctionner une instance de Diaspora* sur ce serveur. J’affinerai encore la configuration dans les semaines à venir et nous verrons bien ce que cela donnera. Alors, à bientôt sur Diaspora*!

[Apache] Redirection vers https

Exemple de redirection générale de http vers https avec Apache et mod_rewrite:

<VirtualHost *:80>
  RewriteEngine On
  RewriteCond %{SERVER_PORT} ^80$
  RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</VirtualHost>
<VirtualHost *:443>
  # Configuration!
</VirtualHost>

Cette manière de rediriger me semble particulièrement intéressante dans le cas où l’on a besoin de déployer simplement une configuration Apache valable pour différents environnements ayant des noms de domaine différents. On évite ainsi d’avoir à définir explicitement l’url vers laquelle on redirige avec :

RedirectPermanent / https://demo.monprojet.org/

Avec la redirection par réécriture d’url, nous allons pouvoir déployer indifféremment le même fichier de configuration Apache sur les machines de pré-production, démo et test par exemple.

Le seul point qui pourrait poser problème concerne le certificat. Soit nous disposons d’un certificat wildcard valable sur tous les sous-domaines et dans ce cas là, cela devrait rester relativement simple. Dans le cas contraire, nous pourrions envisager de stocker les fichiers de certificats au même endroit et avec le même nom sur chaque machine.

  SSLEngine On
  SSLCertificateKeyFile /path/to/projet.key
  SSLCertificateFile /path/to/projet-cert.pem

[Java] Parse json file

Back in may 2013, I was working on a school project concerning mobile networks. So this is what I wrote one year ago while I was fighting with handover algorithm and research papers.

I’m currently building a project to simulate handover decision process in GSM/UMTS. To be able to perform the simulation, I need some parameters like mobile gain, loss, coordinates as well as informations about antennas. I’ve chose to provide these parameters to the program using a json file. So I needed to find a way to get informations from the file and parse the json in java.

I used a JSON-Java library to initialized data. Here is the code needed to parse the json belove. The jsonStr variable contains our json file as a string.

JSONObject obj = new JSONObject(jsonStr);
JSONObject objMobile = obj.getJSONObject("mobile");
JSONArray arrayPath = objMobile.getJSONArray("path");

cro = obj.getDouble("cro");
rxLevAccMin = obj.getDouble("rxlevaccmin");
msTxPwrMaxCCH = obj.getDouble("msTxPwrMaxCCH");

//Initialize Mobile Station
for(int i = 0; i < arrayPath.length(); ++i) {
 JSONObject el = arrayPath.getJSONObject(i);
 journey.add(new Coordinate(el.getInt("x"), el.getInt("y")) );
}
mobileStation = new Mobile(objMobile.getDouble("gain"),
 objMobile.getDouble("loss"), objMobile.getDouble("classPower"),
 journey, objMobile.getBoolean("voice"), 6, -102, journey.get(0));

//Initialize Antennas
JSONArray arrayAntenna = obj.getJSONArray("antenna");
for(int j = 0; j < arrayAntenna.length(); ++j) {
 JSONObject el = arrayAntenna.getJSONObject(j);
 Coordinate position = new Coordinate(el.getInt("x"), el.getInt("y"));
 antennaList.add(new Antenna(el.getInt("type"), position, 
 el.getDouble("gain"), el.getDouble("loss"), el.getDouble("power"),
 el.getDouble("frequency"), el.getDouble("coef")));
}

Once our json string has been parsed to a json object, we can extract data using:

  • getJSONObject
  • getJSONArray
  • getBoolean
  • getInt
  • getDouble

Here is the json file:

{
  "rxlevaccmin": -96, 
  "cro": 0.0, 
  "msTxPwrMaxCCH": 33, 
  "mobile": { 
    "gain": 0, "loss": 0, 
    "classPower": 33, 
    "voice": false, 
    "path": [ 
      {"x": 11, "y": 0}, 
      {"x": 14, "y": 0}, 
      {"x": 16, "y": 0}, 
      {"x": 18, "y": 0}, 
      {"x": 20, "y": 0}, 
      {"x": 24, "y": 0}, 
      {"x": 25, "y": 0}, 
      {"x": 26, "y": 0} 
    ] 
  },
  "antenna": [ 
    { 
      "type": 0, 
      "x": 0, "y": 0, 
      "power": 20, 
      "gain": 0, "loss": 0, 
      "frequency": 900, 
      "coef": 1 
    }, 
    { 
      "type": 1, 
      "x": 30, "y": 0, 
      "power": 10, 
      "gain": 0, "loss": 0, 
      "frequency": 900, 
      "coef": 1 
    }, 
    {
      "type": 0, 
      "x": 20, "y": 5, 
      "power": 12, 
      "gain": 0, "loss": 0, 
      "frequency": 900, 
      "coef": 1 
    }
  ]
}

It’s funny to compare this with the one-line-way to parse json in Node.Js:

var jsonObject = require('jsonFileName');
var classPower =jsonObject.mobile.classPower