Lascapi.fr

Menu

Comment utiliser NextCloud pour partager des fichiers ?

On va voir ensemble comment utiliser une application de gestion de fichier open source dans « le cloud » pour partager un ou plusieurs fichiers aux personnes qu’on veut. C’est un article pour débutant, il faut déjà avoir un compte NextCloud, chez la mère Zaclys par exemple.

Explication

Alors déjà pour démystifier un peu ce que c’est, il s’agit simplement de mettre un fichier qui est sur ton ordinateur sur un serveur. Le serveur c’est l’ordinateur de quelqu’un d’autre. Il faut donc avoir confiance dans cette personne, cette entreprise ou cette association qui met à disposition ses ressources.

L’intérêt de mettre ton fichier sur cet ordinateur c’est qu’il est toujours allumé, il est prévus pour ça, il n’y a pas d’écran, pas de clavier, pas de souris, c’est juste un « gros disque dur et un processeur » qui consomme le moins d’énergie possible. Il est donc toujours accessible.

Ton fichier étant sur cette machine, on peut lui donner une adresse unique qui ressemble à https://cloud.un-endroit.fr/pleins12312de9098lettres23423et2324de24123chiffres231aleatoires.

C’est une adresse aléatoire. Et du coup tu peux envoyer ce lien à tes amis et tes contacts. Ils pourront aller voir le fichier et le télécharger quand ils veulent, même si ton ordinateur n’est pas allumé.

Dans la pratique

Dans la pratique comment ça se passe ? Alors déjà il faut avoir un compte comme je l’ai dis plus haut. Si ce n’est pas déjà fait, il y a un article qui détail ça très bien : « Tutoriel – synchronisation avec NextCloud ».

S’identifier

Ensuite il faut aller sur la page d’accueil du site et s’identifier. Tu peux mettre cette page dans tes favoris, et enregistrer le nom d’utilisateur et le mot de passe dans ton navigateur.

Attention : Ne le fais pas sur l’ordinateur de quelqu’un d’autre !! ça serait comme donner les clés de ta maison à un inconnu, en lui indiquant ton adresse et tes absences !!!

Mettre un fichier sur le serveur

Une fois connecté on se retrouve sur la page d’accueil, normalement c’est [Tous les fichiers]. On retrouve la même chose que sur ton ordinateur, des dossiers et des fichiers. Ce n’est pas la même présentation, mais c’est le même fonctionnement.

Imaginons que tu as pris une photo de groupe, tu veux partager cette photo à tout le monde. Tu peux aller dans le dossier Photos en cliquant une fois sur son nom.

Astuce : Si tu cliques sur l’icône ça ouvre le panneau des propriétés de ce dossier.

Une fois dans le dossier tu peux ajouter la photo qui est sur ton ordinateur dans ce dossier en cliquant sur le bouton (+) en haut, juste sous le bandeau bleu. Là il faut retrouver le fichier sur ton disque dur. Une fois que tu valides ça transmet la photo au serveur. Facile !! :)

Créer le lien de partage

Bravo !! Première étape franchis avec succès !

Maintenant que le fichier apparait dans ton dossier sur le serveur on va pouvoir créer le lien qu’on pourra envoyer ! Je précise que je donne les infos par rapport à NextCloud version 16 et il se peut qu’il y ait des différences avec les autres versions !

Bon ! C’est ici que ça se complique un peu puisqu’il y a plusieurs options. Mais on va faire la plus simple, donc pas d’inquiétude :)

Sur la ligne de la photo, il y a son icône, son nom et juste après, l’icône de partage : Share icon

Clic dessus, ça va ouvrir le panneau des propriétés, le même que l’astuce ci-dessus ;) et ça nous place directement dans l’onglet partage. Pratique !

Il faut ensuite cliquer sur le + à droite de [Partager par lien public]. Cette action créé le lien de partage comme je l’expliquais plus haut. Il y a un menu déroulant qui apparait, et une petite icône [Copier le lien] juste à droite de [Partager par lien public] .

C’est en cliquant sur cette icône que ça va …. copier le lien public ^^ Et on peut vérifier ça de suite en ouvrant un nouvel onglet ( le raccourci Ctrl+t ) et en collant le lien dedans. Tu devrais voir ta photo s’afficher en grand avec un lien pour la télécharger en haut à droite. Cool !! Une dernière étape et c’est fini :)

Partager

Maintenant que tu as le lien tu peux le coller partout dans tes messages, tes mails, dans Riot ou RocketChat et même dans tes SMS, ceux qui ont un smartphone pourrons y accéder directement.

Excellent !

Et bien bravo, c’est un peu long à expliquer, mais quand tu auras pris l’habitude de faire ces quelques étapes ça ne te prendras pas plus de 30 secondes ! Et avec le même système tu peux essayer de partager plusieurs fichiers en les mettant tous dans un seul dossier que tu pourras partager de la même manière.

Et ce qui fonctionne pour les photos, fonctionne aussi pour les fichiers textes, les PDF, les présentation, la musique, les vidéos, bref tous les fichiers que tu peux avoir dans ton ordinateur tu peux les partager comme ceci !!

Normalement maintenant tu te sens fière et puissant, de savoir faire des choses aussi compliqué que de transférer des documents par le cloud !! Bravo :)

AngularJS : focus automatique dans un tableau

Comment gérer le focus des éléments d’un tableau de manière automatique avec AngularJs ? Mes recherches brute.

Contrainte : il y a des groupes de lignes et des lignes. Il y a donc besoin de deux autofocus différents. Et lors de la suppression d’une ligne par exemple, le focus doit rester dans la même colonne.

  • ngFocus permet d’exécuter une expression quand le focus arrive sur l’élèment,
  • $watch exécute une fonction quand la valeur d’une variable change,
  • L’attribut autofocus de <input> indique que le champ doit recevoir le focus lorsque le chargement de la page est terminé,
  • Un autofocus.js qui permet d’ajouter un attribut directement dans le html,
  • la fonction focus() de javascript

On peut utiliser autofocus="true" ou la version autofocus.js pour la création de groupe et de ligne.

Pour le changement de ligne sélectionné on peut utiliser la fonction focus() qui pointe vers un élément récupéré avec :
document.getElementsByName(nameElementFocused)[0]
Notez qu’on récupère le premier élément de la liste, même si celle-ci doit en théorie n’en contenir qu’un si les noms sont uniques.

Convergence des applis de chat pour les équipes

Actuellement beaucoup de solution de travail en équipe voient le jour. Ces derniers temps j’ai eu l’occasion de travailler avec quatre d’entre elles : RocketChat, Riot, Slack et Zulip.

Et le moins qu’on puisse dire c’est qu’elles se veulent différentes, mais qu’elles se ressemblent de plus en plus.

Capture d'écran de Riot
Interface de Riot, application de messagerie Open Source et Fédérée
Capture d'écran de RocketChat
Interface de RocketChat, application de collaboration d’équipe Open Source

Les points communs

On constate très vite des gros points communs, ce qui est logique puisque ces applications cherchent à résoudre le même problème de communication à savoir « trop de mail tue le mail » !!!

Les communautés

Tous d’abord il y a la notion de communauté, ou d’entreprise, ou de groupe. Elle correspond à un ensemble de personne qui vont discuter sur des sujets communs. Concrètement c’est une association, une entreprise ou encore un groupe de parents d’élèves.

Les groupes

Nommé très différemment selon les logiciels (canaux, chaine, stream, salon), c’est simplement le découpage thématique des conversations. Chaque personne peut s’y abonner ou pas. Ils peuvent être privé, public.

C’est par exemple « le bureau de l’association » ou bien « les évènements » pour une entreprise, ou « les infos de l’école » pour les parents d’élèves.

Ça correspond à une liste de diffusion si on pense aux mails. En effet c’est juste un ensemble d’adresse mail ou chacun est libre de s’inscrire où pas.

Les réponses

On a donc des fils de discutions organisé par équipe. Au sein de ceux ci, on peut être amené à devoir répondre à un message qui est loin dans l’historique. Heureusement il y a la possibilité de faire des réponse à un message en particulier.

En général cette réponse est accompagnée du message cité ou, au moins, du début et d’un lien vers le message original.

Les réactions

Les réactions sont simplement la possibilité de répondre par un émoji au message. Utilisé pour marquer son approbation 👍, sa joie 😃 ou encore sa compassion 😥

Les différences

Capture d'écran de Slack
Interface de Slack, logiciel privateur
Capture d'écran  de Zulip
Interface de Zulip, application de messagerie pour les équipes

Les sujets de discutions

On a vu qu’il y a beaucoup de points communs. Une des grosses différences vient du traitement des sujets de discutions au seins d’un groupe.

Actuellement Riot ne gère pas l’affichage des sujets, il y a une citation du message auquel on répond, mais pas la possibilité de voir toutes les réponses à un même sujet.

RocketChat et Slack se comportent sensiblement pareil. Il y a la chaine (ou le groupe) qui est aussi un fil de discussion et on peut répondre à un message en particulier, ce qui va le « transformer » en sujet de discussion qu’on pourra afficher dans une colonne séparé afin de le suivre sans être dérangé par les autres sujets.

Et enfin il y a Zulip qui est original sur ce point puisqu’il oblige les utilisateurs à répondre à un sujet ou a en créer un. Il n’y a donc pas de chaine sans sujets et aucun message ne se retrouve orphelin dans le groupe. Et cette restriction a du bon puisqu’elle oblige chacun a faire du tri dans sa tête et aide donc les autres personnes a y voir plus claire.

Très concrètement c’est comme envoyer un mail à pleins de personne. Zulip oblige à mettre un objet au message, RocketChat et Slack non. Et a mon sens c’est beaucoup plus efficace de mettre un sujet puisque ça cadre un minimum les échanges.

Open source

C’est une différence technique, mais fondamentale. Qui développe le logiciel, qui va héberger le service ainsi que vos données ?

Je vais être très clair. Je déconseille Slack qui est peut-être le plus connu et le plus accessible avec leur politique de compte gratuit. Mais c’est une prison dorée. En effet leur solution étant propriétaire ils deviennent les seuls à pouvoir vous donner accès à vos données. Il faudra, à un moment ou l’autre, passer sur le forfait payant et il n’y a aucune concurrence possible en cas de tarif qui augmente. Et en cas de données sensible ou stratégique, il faut juste être conscient que cette entreprise y a accès librement et sans restriction.

Donc clairement, le choix de la raison s’oriente vers une solution open source comme RocketChat, Zulip où Riot. Elle ne sera pas gratuite, mais vous aurez le choix entre différents prestataires, entre plusieurs tarif, niveau de service ou même d’être votre propre fournisseur avec des coups maitrisés en interne.

Je note tout de même au passage que pour les associations et les particuliers il y a des solutions d’hébergement gratuit chez Zaclys (RocketChat) ou Framasoft (Mattermost) par exemple !

Fédéré

En quelque mots, la fédération au niveau logiciel, correspond à la capacité de dialogue entre des comptes de service différents. Exemple très concret :

  • le mail est fédéré puisque je peux envoyer un message avec une adresse moi@laposte.net vers une adresse toi@posteo.de ! Ça fonctionne très bien
  • Slack n’est pas fédéré puisque je ne peux pas envoyer de message à un compte Slack depuis une autre application
  • Riot est fédéré puisque je peux envoyer un message à quelqu’un qui hébèrge sont propre serveur dans son salon en étant moi même inscrit sur matrix.org

Pourquoi c’est important tout ça ? Parce que c’est un des seuls moyen de pouvoir coopérer de manière efficace, en ayant assez de compétition et de complémentarité. C’est un bon moyen de lutter contre les monopoles. Et c’est aussi le seul moyen de pouvoir être autonome !

Riot est fédéré et Slack ne l’est pas. Riot a été pensé pour être décentralisé. Slack a été conçu comme un service centralisateur (vous sentez tout le caractère péjoratif de ce mot ? ^^ )

D’après mes recherches, RocketChat peut être fédéré en fonction du paramétrage du serveur, et il me semble qu’il ne l’est pas par défaut.
Et pour Zulip il y a beaucoup de service intégré, mais pas encore de fédération entre serveur !!

Et Donc ?

Je n’étais pas parti pour faire un poste aussi long … Donc je n’ai pas vraiment de conclusion. Je vais juste finir en disant qu’il n’y a pas de logiciel miracle. Il faudra toujours que chacun soit formé aux outils. Il faut que chaque équipe se pose pour analyser ses besoins spécifique.

Je note aussi que par défaut pas mal de groupe se tourne vers des solutions comme WhatsApp. À mon sens c’est une erreur stratégique. Cette appli n’est pas faites pour ça, elle a l’avantage d’être très répandu, mais ça n’en fait pas une application de communication d’équipe.

Et pour vraiment finir : dans le cadre de mon travail, nous hésitons encore entre Slack et RocketChat ( et je fais tout pour qu’on choisisse RocketChat ^^ ), dans le cadre personnel j’utilise Riot qui est top, et de mieux en mieux.

Merci pour votre lecture, n’hésiter pas à écrire votre commentaire ici ou sur Mastodon !! :)

YACY decentralized web search engine

Notes et remarques sur la thèse « Relevance and privacy improvements to the YACY decentralized web search engine » écrite par Jeremy Rand en 2018

1.1 Background on Search Engines, Civil Liberties, and De-
centralization

Il met l’accent sur les enjeux d’une résistance à la censure, sur les données privées, et la liberté en tant que citoyen. Ce qui est impossible avec des services centralisés comme Google.

Il mentionne la technique de table de hachage distribuée (ou DHT pour Distributed Hash Table) qui permet une collaboration d’envergure et une grande tolérance aux pannes.

Discussion sur https://mastodon.zaclys.com/@lascapi/102423541245934701

Simplifier l’informatique

L’informatique d’aujourd’hui est très compliqué. Il y a tellement de paramètre à prendre en compte. Un exemple simple : aller sur un nouveau site web et il y a facilement trois ou quatre bandeaux pop-up pour configurer les cookies, pour recevoir les mises à jour du site pour être localiser ou encore pour recevoir la newsletter !!

Je n’aime pas ce qui est compliqué et que je ne peux absolument pas maitriser, c’est pourquoi j’aime et je soutiens les logiciels opensource. Et voilà pourquoi je vous présente aujourd’hui quelques projets que je trouve simple et efficace.

Le mail

Tout d’abord je prends la défense d’un vieil outil aussi vieux qu’internet, les mails qui sont encore aujourd’hui le meilleur moyen de communiquer avec toutes les personnes du monde, une des raisons c’est que de nombreux services demande une adresse mail pour s’inscrire, rendant de facto cet outil un standard universel. #jaimeLeMail !!

Les messageries instantanées

Très complémentaires du mail pour communiquer en groupe rapidement. Tellement pratique qu’il y a probablement des centaines de protocoles tous plus fermé les uns que les autres. Certains jouent la sécurité comme Signal ou Telegram, mais très peu se place sur le plan de l’ouverture et de la liberté. J’en ai retenu deux : Jabber, basé sur XMPP et Matrix avec son client le plus connu Riot.

Ces deux protocoles ont ceci de commun qu’ils sont le plus interopérable, ils cherchent à fédérer les autres protocoles (comme Gitter, Telegram ou IRC depuis Matrix), et surtout ils sont décentralisés comme le mail, c’est-à-dire que plusieurs serveurs peuvent communiquer ensemble au contraire de WhatsApp, de Threma et tous les autres. La différence est fondamentale, c’est l’ouverture du code côté serveur et la liberté de choisir son fournisseur de service. Ça peut être une grosse entreprise, ou une petite, ça peut être une association ou même soit même sur un serveur personnel.

Aujourd’hui ma préférence va au protocole Matrix qui à un super logiciel qui s’appelle Riot.im qui est disponible sur smartphone, ordinateur ou dans le navigateur.

Les avantages sont multiples. Par exemple pas besoin d’avoir de smartphone pour l’utiliser, du coup mes parents peuvent tchatter depuis leur ordinateur. Un autre c’est qu’on n’est pas obligé de fournir quoi que ce soit de personnel comme un mail ou un numéro de téléphone. Non, rien n’est obligatoire, il suffit d’un identifiant et d’un mot de passe. Parfait pour ceux qui désirent être parfaitement anonyme. Mais bien sur on peut renseigner ça pour que nos amis découvrent notre compte automatiquement lorsqu’ils installent l’appli.

Les outils de collaboration

Parmi les outils simples de collaboration il y a les traitements de texte en ligne. Et le plus simple que je connaisse c’est Etherpad ! (Il y a aussi Cryptpad qui est vraiment super ! )

C’est un service hébergé, c’est-à-dire qu’il faut que quelqu’un l’installe sur son site internet et le rende accessible. Un exemple célèbre c’est le Framapad. Tout le monde peut créer un document écrire depuis son navigateur, envoyer l’adresse URL à d’autre personne qui verront en temps réel le texte qui est en train d’être tapé, et eux aussi pourront participer à l’édition de ce fichier. L’immense avantage d’un tel système, c’est qu’il permet d’avoir une seule version toujours à jour d’un document texte. Fini l’envoi d’un PDF ou d’un ODT à plusieurs personnes, qui font des corrections, des ajouts et qui renvoi le fichier qu’il faut relire pour intégrer les corrections et les ajouts au fichier original …….. Bref c’est mille fois plus pratique !!

Note à moi même

Ces services, tous les logiciels qui permettent de les faire tourner, les personnes qui les développes ont besoins de soutien moral et financier. Certains comme Etherpad sont utilisés par des milliers de personnes et n’ont aucun financement.

Je réfléchis donc comment à ma mesure je peux contribuer à la maintenance et à l’évolution de ces projets. Pour l’instant en signalant les bogues et en remerciant pour les améliorations. Demain en soutenant financièrement les développeurs et les associations ?

Et toi ?

Utiliser le Bluetooth dans une appli

Pour l’instant il n’y a qu’un seul paquet sérieusement utilisable pour développer un application avec Flutter, il s’agit de flutter_blue. Il existe d’autres paquets mais beaucoup trop limité, par exemple bluetooth où encore flutter_bluetooth_serial qui est limité à Android, ce qui est un paradoxe puisque Flutter n’est utile que pour développer des applications cross-platform !

Il y a très peu de documentation sur Flutter dès qu’on s’éloigne des thèmes décrit dans la doc officielle. C’est là qu’on voit que c’est un framework très jeune.

Architecture d’une appli avec Flutter

Lifting State Up

Une application en «layer» avec des « building blocks ».

  • StatefulWidget
    • Inclue les informations dans le constructeur, c’est à dire les données qui doivent lui être passées pour fonctionner
  • State
    • définition des paramètres liés au widget (qui doivent être rendu dedans)
    • les méthodes pour mettre à jour le widget (avec «setState()»)
    • construire l’interface

C’est le concept de « Lifting State Up » qui vient de React :

https://medium.com/@nimelrian/thinking-in-react-a-paradox-statement-33c19e2eb9e2

Cette architecture est parfaite pour gérer un ou deux niveaux sur un écran, mais ça devient vite très compliqué de faire passer les paramètres au travers de plusieurs niveaux, et ça ne permet pas de bien découper le code, ni d’être flexible ni d’être testable.

InheritedWidget

https://cdn-images-1.medium.com/max/1200/1*GEvdBRvehbG6PvqLbVmwZw.png
https://medium.com/flutterpub/breakdown-flutter-i-o-2018-part-two-d47f1236f585

Ce type de widget permet de recevoir un état (des fonctions et des variables) et d’y accéder directement depuis tous les enfants, peut importe leurs niveau.

Bibliographie


Flutter et les API

Quelques liens, exemples et remarques pour cerner rapidement comment on peut utiliser une API externe pour injecter des données dans son application.

Pour la doc de base c’est dans le cookbook « Fetch data from the internet » de Flutter et dans la doc du package http de Dart.

Un super exemple d’application avec un système de login : https://appleeducate.github.io/flutter_login/ et un bon tuto flutter-login-app-using-rest-api

http.post

Pour envoyer du json à une API REST deux choses sont importantes, ne pas oublier de définir le content-type dans le header, ainsi que d’encoder le body.

headers: {'content-type': 'application/json'},
body: json.encode({"user": {"email": "jean@mail.com", "password": "jean"}}),

Le reste est très bien décrit dans les tutos et dans la documentation.