-
Lecture de fichier et consommation mémoire
C’est l’histoire d’une erreur de mémoire comme il en existe tant dans les applications Java. Sa particularité c’est qu’il suffit d’augmenter la heap pour la résoudre alors que l’erreur ne concerne pas la heap.
OK, j’arrête les mystères. Le besoin est de lire des fichiers assez gros (200 à 500 Mo) de façon séquentielle. La heap de 1 Go est assez grosse pour charger tout le fichier en mémoire et travailler dessus. Malgré la marge de manoeuvre, on a des erreurs OOME qui ressemblent à ça:
java.lang.OutOfMemoryError: Direct buffer memory
Le message associé nous indique que ce n’est pas un problème de heap et pourtant en doublant la heap, l’erreur ne se produit plus.
D’où vient le problème ? Et comment peut-on le résoudre ?
-
Back-pressure avec RxJava
Avec RxJava 1, on manipulait des observables et des observers. Puis est arrivé RxJava 2 (en 2016) avec une grande nouveauté, le support de la back-pressure. Pour ça, la classe
Flowable
est apparue, avec un aspect très proche deObservable
, mais un comportement très différent.Une fois qu’on a dit ça, il va falloir qu’on voit ce que signifie back-pressure et qu’on le mette en lumière avec un exemple simple. Et c’est justement à cause de la simplicité excessive de mon exemple que j’ai dû slalomer dans quelques subtilités de RxJava.
-
Petit guide d'utilisation des profils Spring
Un profil, dans Spring Framework, permet de regrouper des beans, puis de les activer ou désactiver et de les configurer par ensembles. Et si la notion profil fait partie de Spring Core, il y a aussi des spécificités pour Spring Boot.
Par exemple, dans un profil test, on activera une datasource qui accède à une base de données embarquée alors qu’en profil prod, on accèdera à une base de données externe.
Dans cet article, je vous propose de faire un petit récapitulatif des techniques pour configurer les beans en fonction du profil et pour choisir les profils actifs.
-
Comment utiliser Jekyll pour un wiki ?
J’utilise Jekyll pour ce blog depuis plusieurs mois déjà (cf. Migration du blog). Ma motivation, c’était de quitter Blogger et reprendre ma liberté.
Cette année, j’ai décidé d’utiliser Jekyll pour faire un wiki, ou quelque chose qui y ressemble. A priori, ce n’est pas fait pour ça, mais en jouant un peu avec les templates, on peut arriver à un résultat correct.
Mais pourquoi utiliser Jekyll alors qu’il y a des très bons moteurs de wiki libres ou open source ? Ça fait des années que j’utilise MediaWiki et ça marche très bien. Pour l’hébergement ça n’est pas très compliqué, on trouve des offres correctes et à bon marché incluant du PHP et une base de donnée MySQL.
Ce qui m’embête, c’est que ça demande un minimum de maintenance : montée de version de PHP, du moteur de wiki, de la base de données. Jekyll, avec ses pages statiques, m’évitera ça. Et comme j’ai déjà fait connaissance avec lui, ça va me faciliter le travail.
-
Adieu Powerpoint
J’ai remarqué que ces derniers temps, le contenu des articles populaires ne correspondaient pas à leur titre. J’ai donc fait pareil. Alors oui, cet article parle de slides et de présentations, mais pas de Powerpoint puisque je ne l’utilise plus depuis une quinzaine d’années.
Impress vs Powerpoint vs Keynote
J’aurais pu l’utiliser puisque j’ai euun laptop sous MacOS X et il existe une version pour cet OS. Par contre, je ne sais pas si elle est de bonne qualité, je n’ai jamais voulu essayer.
Je n’ai jamais voulu essayer MS Powerpoint ou Apple Keynote parce qu’ils produisent des fichiers que je suis incapable d’utiliser sous Linux. La portabilité des fichiers est un point fondamental. Donc pour faire des slides sous MacOS / Linux, j’utilise OpenOffice / LibreOffice Impress.
Ça n’a jamais été un logiciel extraordinaire, mais j’ai fait tous mes supports de cours avec. J’ai souvent pesté contre l’outil, il m’a fait perdre du temps, mais tant qu’il faisait le boulot, je l’ai conservé. Et puis que prendre à la place ?
Cette année j’ai craqué. Je n’en peux plus d’Impress : plantages, pertes de mise en forme, incompatibilité entre la version Linux et MacOS. Je laisse tomber. Mais que prendre à la place ?