Play with data | 7 tools to convert between different data formats
Play with data | 7 tools to convert between different data formats
RFC 7033 : WebFinger
Ce #RFC décrit la deuxième version du protocole #WebFinger. La première était informelle et permettait de récupérer de l’information sur une personne ou une organisation à partir de son adresse de courrier. La deuxième version, la première officiellement normalisée, généralise WebFinger : la clé d’entrée dans l’information est un URI, qui peut être une adresse de courrier (mailto:) mais pas forcément. C’est donc un mécanisme général d’accès à l’information.
Ce serait cool que #SeenThis_TODO ait un serveur WebFinger pour l’information sur ses membres. Naturellement, comme le dit bien le RFC, cet accès doit être contrôlé par le membre, qui doit pouvoir interdire cette publication.
Pour la v1 de WebFinger, voir ▻http://seenthis.net/messages/6711
Ah super, ça doit renvoyer du #JSON : JSON Resource Descriptor (#JRD).
À noter que le RFC défini aussi une manière de lister des liens web en JSON ! Je ne me fie qu’à ton résumé en français là, mais je suis d’avis que ce point aurait dû être une RFC à part, commune.
Cette norme aurait alors pu être partagée par toutes les #API utilisant JSON comme format (il en existe plein, y compris des semi-normalisés, en draft etc), mais ayant toutes des sémantiques différentes (telle API liste les liens d’une manière, telle autre différemment).
Ça me parait utile, à la manière du projet #JSON-Schema (►http://seenthis.net/messages/174515), qui ne définit pas une sémantique exhaustive, mais seulement des morceaux dédiés à des besoins précis, qu’on assemble ensuite dans un même JSON pour notre cas d’utilisation.
C’est intéressant de dire : désormais si on veut être compatible les uns les autres en JSON, dès qu’on a besoin de liens (quelque soit l’utilisation), on les liste comme ça.
En tout cas, moi je me le note pour ma prochaine utilisation de JSON. :)
#rest
J’ajoute aussi que je trouve souvent plus intéressant de définir une sémantique qu’un format (unique).
Il aurait été possible de dire que le format par défaut (= quand a rien spécifié sur ce point dans la requête) est du JSON, mais qu’il est éventuellement possible d’ajouter un paramètre demandant autre chose (par exemple du YAML).
Tous ces formats de sérialisation sont, en grande partie, compatibles, pour toutes les infos classiques en tout cas : 99% du temps on s’échange des tableaux clés-valeurs ou des listes, hein…
Dans ce contexte (multi-formats) je trouve donc bien qu’il y ait des normes dictant des sémantiques (tel mot pour tel sens), mais sans imposer de format dans la même norme (au contraire d’Atom qui défini les deux en mêmes temps). De cette façon, quelque soit le format, on utilise les mêmes mots.
@rastapopoulos On peut. WebFinger est du REST donc du HTTP donc la négociation de contenu standard fonctionne. Voir l’exemple à la fin de mon article où on demande du XML.
Mea culpa oui, je n’avais pas encore lu jusque tout au bout. :)
Mais c’est plus ou moins ça, car dans « jrd » le « j » veut dire « JSON » forcément. Donc on peut effectivement demander un autre format au service webfinger, mais ça ne correspond pas à mon « souhait » de voir une séparation entre la sémantique (ou syntaxe ou langage) et le format. Et surtout d’avoir une même syntaxe (une même liste de noms de propriétés quoi) mais appelable en plusieurs formats.
En gros une syntaxe commune « rd » (pour ce cas là) et on demanderait alors « rd+json » ou « rd+yaml », etc. Le tout étant d’avoir immédiatement un langage commun une fois qu’on a désérialisé le truc dans son langage de programmation de prédilection.
(J’ai la même réflexion pour ce qui est de décrire une ou plusieurs ressources complètes, comme avec Atom.)
7 command-line tools for data science | Jeroen Janssens
▻http://jeroenjanssens.com/2013/09/19/seven-command-line-tools-for-data-science.html
1. #jq - sed for JSON
▻https://stedolan.github.io/jq
2. #json2csv - convert JSON to CSV
3. #csvkit - suite of utilities for converting to and working with CSV
4. #scrape - HTML extraction using XPath or CSS selectors
5. #xml2json - convert XML to #JSON
6. #sample - when you’re in debug mode
(PS : je recommande de renommer sample en #samply, car sample existe déjà)
@archiloque vient de repérer gron
, une alternative à jq
pour manipuler du #JSON
▻https://github.com/tomnomnom/gron
@Fil @Archiloque J’ai testé gron, l’idée de base (formater le JSON d’une manière qui permettte à un grep normal de fonctionner) est bonne, mais il a moins de possibilité que jq.
Sur jq, mon article d’introduction : ▻http://www.bortzmeyer.org/jq.html #jq #JSON
L’#Open_Data de l’#Elysée est sous #licence fantôme...
▻http://scinfolex.com/2013/09/17/lopen-data-de-lelysee-est-sous-licence-fantome
L’Elysée a annoncé hier par le biais de son fil #Twitter qu’il “ouvrait ses données” dans une nouvelle rubrique de son site. Un premier ensemble de données, comme la frise chronologique des activités de la Présidence ou les statistiques de consultation du site Elysée.fr, sont disponibles au téléchargement, dans des formats adaptés (#XML ou #JSON).
La réalisation est certes modeste, mais elle a sans doute une valeur symbolique de soutien apporté par l’Élysée à la #politique d&r…
marianoguerra/#json.human.js
▻https://github.com/marianoguerra/json.human.js
Convert JSON to human readable HTML
#HAL : une structure de contenu pour échanger des données entre des applis web.
The Hypertext Application Language
▻http://stateless.co/hal_specification.html
Je dis « structure » et non pas « #format » car justement le principe est uniquement de définir la structure des documents (le nom de certains champs reconnus quoi). Le format, lui, pourra être n’importe quel format de sérialisation : #JSON, #YAML, #XML, ou autre.
#développement #web #API
une discussion/comparaison de #ATOM/#HAL/#activitystreams :
▻http://www.ietf.org/mail-archive/web/apps-discuss/current/msg06184.html
Une autre conversation du même type :
▻http://groups.yahoo.com/neo/groups/rest-discuss/conversations/topics/18830
#JSON #schema generator
▻http://www.jsonschema.net
Un éditeur de schémas JSON (►http://seenthis.net/messages/174515), avec une interface pas très compliquée.
Ça sait aussi générer un brouillon de #schéma (à affiner) à partir d’un contenu JSON qu’on lui donne à manger.
#développement #web #API
Décrire un #schéma pour un contenu #JSON, un peu comme on le fait pour XML.
JSON #Schema and #Hyper-Schema
▻http://json-schema.org
#développement #web #API
Un article récent faisant le point sur la gestion des #erreurs dans une appli #REST, #JSON ou #Atom par exemple. Trouvé par @denisb.
SOA Bits and Ramblings : #Error handling considerations and best practices
▻http://soabits.blogspot.fr/2013/05/error-handling-considerations-and-best.html
A recurring topic in REST and #Web #API discussions is that of error handling ; what information should be included in error responses, how should #HTTP status codes be used and what media type should the response be encoded in?
How would the client know how to decode the error response payload? Actually this seems like an unanswered question for ATOM since the spec is rather vague about this point
Ceci car je posais la question de savoir quoi renvoyer comme contenu (pas l’entête avec le code de statut quoi) lorsqu’une application #AtomPub (#APP) doit renvoyer une erreur (par exemple lorsqu’on veut accéder à une ressource précise qui n’existe pas, ou qu’on a pas les droits). En JSON c’est « facile » : il n’y a pas de norme sur son contenu, on met ce qu’on veut dedans suivant l’application, puis on le documente. Mais en ATOM c’est déjà normé, et on ne sait pas ce qu’on doit faire si une erreur arrive.
L’auteur fait un lien vers une proposition de nouveaux types MIME pour ça : « error+json » et « error+xml », qui seraient à utiliser pour n’importe quelle API basée sur HTTP.
▻https://tools.ietf.org/html/draft-nottingham-http-problem-03
L’OpenDATA à la portée de tous, avec SPIP
►http://spip-love-opendata.nursit.com
la présentation de Cedric Morin aux RMLL 2013
#spip #opendata #rmll #présentation #mashup #json #yaml #xml
Ghost : Just a Blogging Platform
▻http://tryghost.org
encore un #CMS en #JS avec #Markdown ; ceux-là ont levé 125k$ de #crowdfunding
... qui prend ses utilisateurs en otage ...
You’ll have the full Ghost software with all bells, whistles, themes, plugins, and some extras that are only available with us (like automatic updates and backups).
ça a commencé comme une proposition pour #wordpress : ►http://john.onolan.org/ghost (ça a été posté ici, mais je n’arrive plus à chercher dans seenthis... ?)
ok, installation assez chiante, on se cogne dans pas mal de trucs qui manquent d’explications… au final j’ai dû faire ce qui suit (j’avais déjà installé node.js et grunt auparavant) :
git clone git@github.com:TryGhost/Ghost.git
cd Ghost/
git submodule update —init
sudo npm install -g grunt-cli
npm install grunt-contrib-sass —save-dev
grunt init
sudo gem install sass
sudo gem install bourbon
grunt init
node index.js
Ensuite bon, c’est simple, élégant, mais pas si évident que ça au premier abord : j’ai tout de même mis 5 minutes à trouver le bouton « publier » (qui est dans la vue « éditer » de l’article).
À noter : la base de données est super simple ; le HTML d’un post est sauvegardé dans la table posts
en même temps que le source markdown.
Pas tenté encore l’install, mais le test en ligne est convaincant. C’est simple et fluide...
Camlistore — un CMS tout simple : je dépose mes fichiers dans un répertoire chez moi, ils sont indexés, versionnés, synchronisés vers un serveur web, et affichés comme une page web en utilisant un template...
▻http://camlistore.org/docs/overview
Une démo :
Vu dans les commentaires de ►http://linuxfr.org/news/sortie-de-paperwork-0-1.
Par l’auteur de memcached et d’openid, apparemment.
Meet the Hackers Who Want to Jailbreak the Internet | Wired.com
▻http://www.wired.com/wiredenterprise/2013/08/indie-web
They call it the Indie Web movement, an effort to create a web that’s not so dependent on tech giants like Facebook, Twitter, and, yes, Google — a web that belongs not to one individual or one company, but to everyone. “I don’t trust myself,” says Fitzpatrick. “And I don’t trust companies.” The movement grew out of an egalitarian online project launched by Fitzpatrick, before he made the move to Google. And over the past few years, it has roped in about 100 other coders from around the world.
Explication de certains fonctionnement (en français) là ▻http://linuxfr.org/nodes/98941/comments/1466754
20 Mo à télécharger… avec un code pas vraiment à la portée de tous.
#perl #blob #hash #json #permanode_dynamique #sécurité #pgp #google_developers #open_source #américains
et… #plook pour moi
Rabin Karp rolling hash - dynamic sized chunks based on hashed content
▻http://blog.teamleadnet.com/2012/10/rabin-karp-rolling-hash-dynamic-sized.html
The Rabin-Karp rolling hash algorithm is excellent at (...) creating content based chunks of a file to detect the changed blocks without doing a full byte-by-byte comparison.
Diffbot aide les ordinateurs à comprendre les pages web - Technology Review
▻http://www.technologyreview.com/news/428056/a-startup-hopes-to-help-computers-understand-web-pages
La Technology Review revient sur Diffbot - ▻http://www.diffbot.com - un programme qui vise à comprendre les pages web pour mieux les exploiter. Ses dernières avancées lui permettent par exemple de repérer quand une page parle d’un produit pour en extraire des informations (comme le prix) afin d’adapter son site web à la concurrence par exemple. Le programme est accessible via des interfaces de programmation... Tags : internetactu2net (...)
#sémantique #medias #marketing #APi #interfacesdeprogrammation
c’est une sorte de #readability en #json, qui en plus fournit des #hashtags_automatiques pas trop dégueu ; intéressant éventuellement pour seenthis :)
Le #Japon en quête de capacité de frappes : traduction personelle d’un article paru il y a quelques jours sur wsws.org : ▻http://www.wsws.org/en/articles/2013/07/29/japa-j29.html
Le Japon en quête de capacité de frappes pré-emptives.
Dans un autre mouvement qui pourrait raviver les tensions de la région, le gouvernement japonais a diffusé vendredi dernier un rapport appelant l’armée à acquérir la capacité de frapper les sites de missiles ennemis, incluant la #Chine, ainsi que la #Corée du Nord.
Le rapport intermédiaire du ministère de la #Défense fait partie d’un processus de révision devant amener la publication du nouveau programme directeur de la défense nationale à la fin de l’année. Ces lignes directrices refléteront la position militariste du premier ministre Shinzo #Abe qui a été élu en décembre dernier sur un programme de construction d’un Japon fort, d’une armée puissante.
Les directives de Défense existantes publiées en 2010 par le précédent gouvernement du parti démocrate préparant l’intégration des forces d’autodéfenses japonaises comme pivot de l’administration Obama dans l’encerclement militaire de la Chine. L’ancien premier ministre Nanto Kan avait changé l’ancien centre de gravité des forces terrestres vers le nord du pays et celui des forces aériennes et navales vers les archipels du sud-ouest, incluant celles disputées avec la Chine, les îles #Senkaku/Diaoyu.
Pour ce qui est de Abe et son gouvernement du parti libéral démocrate, les lignes directrices de 2010 ne vont pas assez loin.
Le rapport de vendredi dernier n’utilise pas explicitement le terme de « capacité de frappe » mais rappelle « le besoin d’une augmentation visible des capacités » pour contrer les attaques de missiles balistiques. Les évidentes implications sont que le Japon auront besoin de lancer des attaques pré-emptives pour prévenir de telles attaques. Les termes vagues sont une tentative d’échapper à celle que l’on appelle la clause pacifiste de la Constitution qui exclue symboliquement l’acquisition d’armes à caractère offensif.
Le ministre de la Défense Itsunori #Onodera a affirmé qu’il n’y avait pas « changement d’attitude dans notre politique de défense ». Il a alors déclaré, cependant, que le Japon avait besoin de la capacité d’effectuer des frappes préemptives, en disant : « Si le Japon fait face à diverses menaces nous devons prévenir (une attaque) en utilisant nos capacités de défense.
Un officiel du ministère de la défense a rapporté que durant les délibérations sur le rapport qu’il y avait un accord pour que l’armée face l’acquisition d’une série de capacités, non seulement des appareils de combat et des missiles mais également la capacité d’envoyer des troupes attaquer les sites localisés à l’intérieur du territoire ennemi.
Selon l’article 9 de la constitution, le Japon n’est pas autorisé, strictement parlant, d’avoir une armée. Ses « forces d’auto-défense » ou #JSDF, cependant, sont parmi les plus importantes et avancées du monde. À présent, les SDF possèdent des armes offensives limitées – les #avions de combat F-2 et F-15 et des avions ravitailleurs. Mais cela va changer avec 42 chasseurs furtifs #F-35 commandés auprès des États-Unis d’Amérique dont les 4 premiers devraient être livrés en 2017.
Le plan d’acquisition de capacités de frappes préemptives est la première étape dans le développement de capacités militaires offensives requérant une augmentation importante des dépenses militaires qui captent actuellement 1 % du PIB. Avec une dette massive s’élevant à plus de 200 % du PIB, l’augmentation des dépenses militaires pourraient amener une réduction dramatique du niveau de vie de la classe ouvrière.
Le rapport de vendredi dernier s’est également concentré sur le développement de forces amphibies pour « protéger les îles éloignées. Le ministère de la défense soutient la possibilité que l’unité existante des forces d’autodéfense terrestres de juste 700 à 800 hommes entraînés à défendre les îles puisse devenir une nouvelle force du type du corps des marines. « Pour déployer rapidement des unités en réponse à une situation, il est important […] d’avoir des forces amphibies similaires au corps des marines des États-Unis d’Amérique », capables d’opérations terrestres dans les îles éloignées, a-t-il été indiqué.
Le ministre de la Défense Onodera à dit aux journalistes que le Japon a « quelque 6 800 îles et est en 6ème position en terme d’intérêts en haute mer. Aussi, la protection des îles est une énorme tâche, spécialement si elles sont reliées uniquement par avions comme c’est le cas actuellement ».
« Les combats insulaires » et amphibies sont maintenant central dans la stratégie militaire états-unienne dans le #Pacifique qui inclus des plans pour un blocus naval de la Chine en bloquant les « points d’étouffement » clefs situés en Asie du sud-est dont dépendent les navires chinois. Comme un blocus paralyserait l’économie chinoise qui dépend des importations d’énergies et de matières premières provenant d’Afrique et du Moyen-Orient.
Le mois dernier, les forces militaires japonaises ont pris part à un exercice conjoint de capture d’île en Californie avec les troupes états-uniennes. Les #États-Unis d’Amérique encouragent également les armées des Philippines et de l’Australie à effectuer des exercices similaires avec les troupes états-uniennes.
En fin de semaine, le premier ministre japonais Abe voyagea aux #Philippines pour cimenter un front commun contre la Chine. Soutenu par Washington, Manille a été impliqué dans un conflit vif avec Beijing autour d’un chapelet d’îlots et de récifs dans le sud de la mer de Chine, menant à plusieurs confrontations navales depuis l’année dernière. Le Japon regarde les Philippines comme un important allié contre la Chine.
Dans une conférence de presse conjointe avec le président philippin Benigno Aquino, Abe a déclaré « pour le Japon, les Philippines sont un partenaire stratégique qui partage avec nous des valeurs fondamentales et des intérêts stratégiques ». En plus de renforcer cette relation, Abe a dit que Tokyo souhaitait fournir une assistance pour une montée en puissance des capacités de gardes-côtes philippines, incluant la livraison de 10 patrouilleurs des gardes-côtes japonaises.
Le gouvernement libéral-démocrate a publié son rapport intermédiaire au milieu d’une montée des tensions avec la Chine causées par le conflit autour des îles et frontières maritimes dans l’est de la Mer de Chine. Deux jours avant, les forces aériennes japonaises ont envoyé un appareil de combat filer un appareil chinois d’alerte précoce qui volait au-dessus de l’archipel d’Okinawa.
Pour sa part, la Chine a envoyé quatre navires de ces nouveaux gardes-côtes autour des îles Senkaku/Diaoyu pour se confronter à leurs homologues nippons. De plus, cinq navires de guerre chinois qui avaient effectué à un exercice naval conjoint avec les Russes dans la mer du Japon sont rentrés vendredi dernier après avoir navigué autour de l’archipel japonais dans une démonstration de force.
L’appel du Japon pour que ses militaires disposent capacités de frappes préemptives est un autre signe que le pivot des EUA a libéré des forces qui pourraient plonger la région Asie-Pacifique dans la guerre
Article en français en complément paru sur wsws.org : ▻http://www.wsws.org/fr/articles/2013/aou2013/mili-a07.shtml
A Collection of Page Transitions | Codrops
▻http://tympanus.net/codrops/2013/05/07/a-collection-of-page-transitions
We’ve put together a couple of animations that could be applied to “pages” for creating interesting navigation effects when revealing a new page. While some effects are very simplistic, i.e. a simple slide movement, others make use of perspective and 3d transforms to create some depth and dynamics.
▻http://la-grange.net/2013/04/24/feed
Réaction de @karlpro au billet de Russel Beatie :
▻http://www.russellbeattie.com/blog/a-few-thoughts-about-rss-news-readers-from-someone-who-thinks-about-
(mais omg quel titre...)
Avoir une opinion sur un sujet essentiellement orientée dans un contexte de rentabilité est une attitude qui me dérange beaucoup. Non pas à cause de la tentative de création d’un revenu, mais en éliminant de fait d’autres modèles sociaux d’existence et de partage.
Plus loin dans son billet, il propose : "My best guess would be to replace polling RSS for updates with JSON API calls, but it doesn’t necessarily have to be that radical. A model to look towards would be Facebook’s Open Graph API." Après la poudre de perlimpinpin, et l’eau bénite, l’arme ultime du moment sont Saint JSON et Saint API, deux sauveurs miraculeux de tous les troubles de l’humanité. Ce qui est oublié à chaque fois dans cette rhétorique, c’est que ces APIs sont « plus stables » car elles sont contrôlées par une seule source. Dès qu’elles deviennent des formats libremement implémentables et largement implémentées, les erreurs feront partie du jeu. En revanche, trouver un moyen d’avoir une mise à jour plus atomique est intéressante mais complètement orthogonale au format.
Inside America’s Dirty Wars
▻http://www.thenation.com/article/173980/inside-americas-dirty-wars?page=full
While the battle over leaks concerning the operation—as well as the various contradictory stories on how bin Laden was killed—raged in the media, the White House was deeply immersed in planning more lethal operations against so-called “High Value Targets.” Chief among these was Anwar al-Awlaki, an American citizen of Yemeni descent born in Las Cruces, New Mexico.
#JSOC #exécutions #guerre
Tout le monde (à commencer par SeenThis) fait du #JSON aujourd’hui, donc voici deux nouvelles extensions normalisées qui peuvent aider :
▻http://www.bortzmeyer.org/6901.html (pointeurs en JSON)
▻http://www.bortzmeyer.org/6902.html (patches en JSON)
#RFC
C’est intéressant, entre autre pour monter une API orientée « REST » avec du JSON. Par exemple, si on fait un GET sur une collection mais avec un pointeur, on pourrait avoir une liste de ressources, mais à l’intérieur que les informations définis par le pointeur. Ensuite, envoyer les patchs en PUT sur un élément permet de ne modifier que certains morceaux d’un élément plutôt que de le remplacer entièrement.
Home · mbostock/topojson Wiki
▻https://github.com/mbostock/topojson/wiki
TopoJSON is an extension of GeoJSON that encodes topology. A single TopoJSON file can contain multiple feature collections without duplication, such as states and counties. Or, a TopoJSON file can efficiently represent both polygons (for fill) and boundaries (for stroke) as two feature collections that share the same arc mesh.
As a result, TopoJSON is substantially more compact than GeoJSON. The above shapefile of U.S. counties is 2.2M as a GeoJSON file, but only 436K as a boundary mesh, a reduction of 80.4% even without simplification. TopoJSON can also be more efficient to render since shared control points need only be projected once. To further reduce file size, TopoJSON uses fixed-precision delta-encoding for integer coordinates rather than floats. This eliminates the need to round the precision of coordinate values (e.g., LilJSON), without sacrificing accuracy. Like GeoJSON, TopoJSON files are easily modified in a text editor and amenable to gzip compression.
Sphinx 2.1 : JSON Attributes
▻http://sphinxsearch.com/blog/2013/02/07/sphinx-2-1-json-attributes
We’re delighted to announce that Sphinx 2.1 begins support of JSON attributes. While complete support is yet to come (some quirks and limitations are yet to be ironed out), we consider this to be a major step ahead. Storing sparse key-value data is no longer a fundamental issue in Sphinx …
Source: Sphinx - adrian
Full support in trunk:
▻http://sphinxsearch.com/blog/2013/08/08/full-json-support-in-trunk
La base de données en Javascript, c’est ►http://www.taffydb.com
Combiné à ▻http://www.dotuscomus.com/pergola ça peut le faire, non ?
▻http://microjs.com : c’est un bon vieux site comme on les aime qui présente des librairies de codes en #javascript, des #frameworks, des #micro-formats, des #css, #json, #svg, et plein de trucs indispensables.
Une librairie #JS de « binding » très pratique :
▻http://knockoutjs.com
Je l’ai utilisée récemment sur un petit projet (une application desktop / tablette).
Je cherchais une librairie JS permettant du faire du « binding bidirectionnel » (synchroniser automatiquement les éléments d’une interface avec les données que l’on manipule).
Elle a pour avantages d’être très facile à prendre en main, et de ne pas imposer de structure forte sur le code javascript (ce n’est pas un framework).
Ainsi, c’est très facile de passer à d’une maquette HTML semi statique à l’application finale (très compatible avec un processus de « design itératif dans le navigateur »).
Je pense qu’elle est très utile pour les projets de petite et moyenne envergure, ou pour les projets d’amélioration (sur lesquels il faut parfois composer avec un existant). Pour des projets plus gros, je conseillerais de regarder du coté de angular.js ou backbone.js (+ knockback.js), qui sont, eux, beaucoup plus structurants ou plus abstraits (je pense à backbone).
Documentation - Meteor
►http://docs.meteor.com
un framework en javascript avec déport des données (stokées en Json) sur le client + un système de synchronisation « en direct » des modifications client<->serveur
Entièrement javascript : nécessite node.js sur le serveur
#javascript #node.js #framework #json #meteor