Categories
Programming Python Steganography

Décret à propos de Python et Stéganô

Trump's decree on Python
Trump’s decree on Python
$ sudo pip3.5 install --upgrade Stegano
$ wget https://blog.cedricbonhomme.org/wp-content/uploads/2017/02/Trump_decree_on_Python.png
$ lsb-set reveal -i Trump_decree_on_Python.png -g eratosthenes

Plus sérieusement, quelques améliorations (et corrections) pour Stéganô sont disponibles. Bien que je ne parle pas tellement de ce projet ici, le changelog est à jour.

Categories
Programming

Newspipe 7.1.3

Newspipe 7.1.3 est disponible. Cette nouvelle version regroupe des modifications plutôt intéressantes.

Le crawler par défaut a été amélioré à différents niveaux. Il prend maintenant en compte un intervalle de rafraîchissement pour chaque flux. Du coup, je n’ai pas encore avancé sur le nouveau crawler alternatif.

Voici un exemple de profil public d’un utilisateur. Cette page liste les flux publics suivis par l’utilisateur en question. Les flux privés ne sont pas visibles (en général il y a un token privé dans l’adresse).

Voici un exemple de page pour un flux public d’un utilisateur.

La capture d’écran ci-dessous montre l’interface d’édition de flux.

newspipe_713_feed_edition

Cette page est souvent utilisée juste après l’ajout d’un nouveau flux. La page principale permet aussi de modifier les données d’un flux.

newspipe_713_main_page

Si vous voulez tester, c’est par ici.

Categories
Programming

The Semantic Web

Ontologies and other formal definitions of data are useful, but in our experience, even simplified things like Dublin Core are rarely encountered in the wild.

Good Enough Practices in Scientific Computing.

Categories
Programming Uncategorized

Signal – introduction des messages qui s’autodétruisent

Signal est décidément mon application préférée pour l’envoie de messages cours. La dernière mise à jour à introduit l’envoie de messages qui s’autodétruisent. Ceci me fait penser au flash SMS et aux silent SMS. Les silent SMS sont utilisés par la police.

Cette application est vraiment géniale, car elle conserve un minimum de données (et méta-données) sur vos conversations. Je vous renvoie à cet article très intéressant.

Bref, merci Open Whisper Systems ! Le seul point négatif, pour moi, et que j’utilise couramment cette application avec une seule personne. Rejoignez-nous!

Categories
Programming

Newspipe

pyAggr3g470r, JARR et maintenant Newspipe!

Promis, c’est le dernier changement de nom du projet. Pourquoi ce nouveau changement? Pour différentes raisons. Premièrement, cela fait maintenant quelque temps que je veux utiliser un nom de domaine qui m’appartient (de préférence en .io ou .org). Ceci me permet surtout de ne plus utiliser mon adresse email personnelle pour les notifications (ça fait aussi un peu plus «pro»). Malheureusement jarr.org coûte beaucoup trop chère (plus de 2000 euros lorsque je m’étais renseigné). Seconde raison, j’avais envie pour ce projet d’un nom qui ne contienne pas l’acronyme «RSS». Troisième raison, je voulais avoir un nom différent par rapport au fork principal de JARR. Le nom revient naturellement à ce fork comme c’était une idée du mainteneur. Les deux projets vont pouvoir évoluer de leur côté sans ambiguïté. C’est la combinaison de ces raisons qui fait que j’ai voulu changer de nom. À la limite si le nom de domaine avait été abordable, je n’aurai pas changé.

Voici donc la nouvelle adresse: https://www.newspipe.org. Cette instance est plus réactive et la base de données pourra stocker bien plus d’information. J’ai même utilisé un certificat Let’s Encrypt afin de satisfaire le plus grand nombre. En général je préfère CAcert.
Bref, n’hésitez pas à tester!

Sinon, j’ai récemment revu le déploiement via Vagrant. Évidemment, vous pouvez aussi simplement installer Newspipe sur votre système avec le script install.sh qui fonctionne maintenant plutôt bien (./install.sh sqlite ou ./install.sh postgresql).

Si vous voulez des informations sur ce qui a changé, c’est ici. Le projet devient un chouia plus sociale avec cette page (à activer dans votre profil). Il sera aussi bientôt possible de s’abonner aux nouvelles (non privées) d’un utilisateur.
Dans un second temps, j’aimerai avoir un nouveau crawler qui pourra être distribué. L’actuel est simplement exécuté avec une règle cron.

Juste pour terminer: Gandi + Heroku + Let’s Encrypt = ❤ Après avoir acquis le nom de domaine, tout peut se faire en quelques minutes via la ligne de commande.

P.S.: n’oubliez pas d’activer 2FA sur votre compte Gandi.

Categories
Programming

Quelques nouvelles de JARR

Cela fait un petit bout de temps que je ne donne pas de nouvelles de JARR (Just Another RSS Reader). Il faut avouer qu’il évolue bien plus lentement. Je suis toujours sur mon problème de notes privées pour les articles. Il faut que je trouve le temps pour terminer ceci, j’y tiens. D’un autre côté les fonctionnalités actuelles de JARR me suffisent.
Mais passons aux choses nouvelles.

Première nouveauté: une page liste les flux les plus populaires ajoutés récemment par les utilisateurs. Elle utilise le bookmarklet afin de permettre aux utilisateurs de s’abonner rapidement à un des ces flux. Je suis assez content de cette page.

Seconde nouveauté: une page de profil. Par défaut la page n’existe pas, l’utilisateur doit d’abord accepter d’avoir un profil public. Je trouve cette fonctionnalité un peu moins intéressante. Je vais la conserver pour le moment. Elle n’évoluera certainement pas.

Categories
Programming

Installation de Python

J’installe régulièrement Python sur mon système. Afin d’avoir une nouvelle version ou plus souvent parce que je veux tester une librairie qui nécessite une re-compilation avec un paramètre spécifique (dernièrement theano). Et de temps à autre je tombe sur un nouveau problème après l’installation. Alors voilà, maintenant avec ce gist j’ai un petit script d’installation fonctionnel écrit dans le marbre (plutôt le cloud, plus volatil). Je pense qu’il sera mis à jour de temps en temps.

Si vous avez des suggestions…

Categories
Programming

Des nouvelles du projet JARR

Alors, quoi de neuf ?

L’interface graphique de JARR a beaucoup évoluée ces derniers temps ! L’ensemble est plus dynamique et plus moderne. Il y a encore un peu plus de JavaScript (avec React) grâce à jaesivsm. Un des avantages est qu’il est possible de lire les articles sans quitter la page principale (j’admets que j’aurais pu faire ça depuis longtemps). En tout cas avec React et compagnie, j’ai pas mal de choses à apprendre. Et comme vous le savez, moi et les interfaces…

Aussi, il est maintenant possible de catégoriser les flux. Enfin ! Beaucoup l’ont demandé. Et même si je ne fais pas un grand usage de cette fonctionnalité, je dois avouer que ceci permet d’avoir un menu plus clair et simple à lire.

Il y a également un certain nombre d’améliorations et corrections sous le capot. Notamment au niveau du crawler qui utilise dorénavant la syntaxe await des coroutines.

Enfin bref. Préparez-vous bien, car voici un aperçu de la nouvelle interface:

JARR-new-UI

Je vous invite à tester et me faire quelques retours. Vous pouvez aussi l’installer localement. Je pense que JARR est resté assez simple à déployer sur un serveur personnel. Y compris sur Heroku. Pour information, sur Heroku la version 3.5.1 de Python est utilisée.

Il y a 6 ans je n’aurais jamais pensé que ce projet arriverait à ce stade. Pour mémoire, voici la première version.

Categories
Programming

Apprendre Python avec Minecraft

Voici un nouveau livre pour appendre Python avec Minecraft. Je trouve ça vraiment super comme idée. Par contre, il faut avoir préalablement acheté le jeu. Il serait bien de plutôt pouvoir utiliser Minetest.

Categories
Programming

Pourquoi j’aime bien utiliser Flask

def post_postprocessor(updated_user=None, **kw):
    socketio.emit('update_user_representation', updated_user, namespace="/user")
 
with app.app_context():
    blueprint_user = manager.create_api_blueprint(models.User,
                                    methods=['GET', 'POST', 'PUT', 'DELETE'],
                                    allow_delete_many = True,
                                    postprocessors = {
                                        'POST': [post_postprocessor]
                                    })
    app.register_blueprint(blueprint_user)
 
if __name__ == "__main__":
    socketio.run(app,
                host=conf.WEBSERVER_HOST,
                port=conf.WEBSERVER_PORT,
                debug=conf.WEBSERVER_DEBUG)

Voici une API ReSTful pour un modèle (User) qui permet de propager vers différents clients les modifications effectuées sur un object.
Je trouve ça vraiment beau.