Logo journal du hacker middle
  1. 1

    Il n’y a plus assez d’energie solaire pour alimenter le serveur web, il est en pls

    1. 3

      Bonjour PengouinPdt, merci pour ces corrections. Et merci aussi pour le retour, c’est toujours agréable de voir que mon travail sert et est apprécié :).

      1. 4

        Bjr. Tout d’abord, merci pour ces explications claires, limpides. Je ne m’étais jamais mis à la question, mais récemment je me suis fait la réflexion de l’intérêt de la chose. Grâce à toi, j’ai compris le propos. Merci !

        Sinon quelques coquilles :

        • tous les signaux ne peuvent pas être piégé <= piégés.
        • concret: <= concret : (nécessite un espace toujours devant les deux points)
        • la connexion maitre <= la connexion maître
        • intiée <= initiée
        • un signal standards su système <= un signal standard du système (pas de ‘s’ final à standard; + su/du)
        • ce qui ga générer <= ce qui va générer
        • changer se comportement <= changer ce comportement
        • problème: (voir remarque plus haut, concernant les deux points)
        • Dans notre script nous allons modifier un petit peu notre script (une certaine redondance qui alourdit le propos : proposition : Modifions un petit peu notre script.)
        • prévu: (voir remarque plus haut, concernant les deux points)
        • répétition : “Afin de disposer de plus de temps pour lancer la commande kill

        Afin d’avoir le temps de lancer la commande kill,”

        • PID: (voir remarque plus haut, concernant les deux points)
        • signal:
        • comment en intercepter <= comment l’intercepter

        ;)

        1. 1

          Bonjour Salim, J’avoue, le mot piège est le prétexte pour faire le jeux de mot sur la célèbre phrase du Général Ackbar. Mais je suis d’accord avec vous.

          Pour ce qui est de la complexité des script, tout dépend du point de vue. personnellement en tant qu’administrateur système je suis plus à l’aise avec des scripts shell qu’avec d’autre type de languages.

          1. 1

            Je préfère le terme « capturer » au terme « piéger » : capturer renvoie à quelque chose de dynamique et dans le contexte, il a une connotation positive. Je trouve que les scripts Shell sont compliqués ; en fait, je pense qu’il faut avoir des connaissances générales, sinon c’est trop abstrait (on ne sait pas trop comment s’y prendre pour conduire l’ensemble).

            1. 2

              Après relecture, je m’aperçois que mon premier message t’as induit en erreur, la causalité est dans l’autre sens.

              Cat est un algo simple : il prend un input et l’affiche dans un output. Pour être performant, il libère la RAM au plus tôt et pour cela, il se débarrasse de ses données ASAP (il les affiche). L’affichage immédiat est donc la cause d’une consommation réduite : le programme en lui-même n’en a plus besoin.

              Dans un système à faibles ressources, tu pourrais te retrouver avec une lenteur, mais jamais parce que cat charge la totalité du fichier, juste par spécificités du système.

              1. 1

                Ce qui me bloque c’est que je ne comprends pas l’assertion « L’affichage est immédiat parce que la conso de RAM est constante (et faible) » : si possible, il me faudrait une explication (exposer les choses).

                1. 2

                  Très bon choix de livre, c’est une référence. Effectivement, la vitesse d’affichage est dépendante de ton archi, mais ce n’est pas là qu’est la vraie information de l’article en réalité. Cette phrase n’existe que pour faire un premier constat, constat qui est expliqué par le code. L’affichage est immédiat parce que la conso de RAM est constante (et faible) [EDIT: my bad, cette phrase est fausse. Cf. la suite de la conversation]. Le tout étant la conséquence du streaming de données. Au besoin, tu peux augmenter la taille du fichier pour tester les limites de ton propre système.

                  Avec ton Raspberry tu observes une latence qui peut être liée à d’autres paramètres dont j’ai pas conscience mais ça ne remet pas en question la logique interne de cat qui ne fait pas un « loadFileInMemory then print ». Ça se teste très facilement avec un trace. Je t’invite à jouer avec la stack de test que j’ai mise en place https://gitlab.com/prytoegrian/blog-codes/-/tree/main/consommation_memoire_cat en limitant la RAM de docker pour valider ton cas limite.

                  Pour la petite anecdote, je me suis aperçu que l’implémentation de cat sous alpine différait de celle sous debian ; la logique de streaming demeurait. Ça ne me choquerait pas qu’il y ai aussi quelques adaptations pour Raspberry.

                  1. 1

                    Je lis le livre « Modern Operating Systems » de Andrew Tanenbaum, Herbert Bos & Co mais je n’en suis qu’au début. Ce qui me paraît étonnant c’est la corrélation qui est faite entre la consommation mémoire et l’affichage instantané à l’écran.

                    Lors du cat /tmp/1gib.test, quelque chose a dû vous sauter aux yeux : il n’y a pas d’attente, le fichier vous est affiché immédiatement et progressivement.

                    […] (appels systèmes) Ce que nous pouvons en déduire, c’est que la lecture du fichier est progressive et envoyée directement à la sortie.

                    […] cat conserve une empreinte mémoire la plus faible possible vu qu’il évite l’accumulation sur la RAM.

                    L’instantanéité perçue est relative à la « vitesse des opérations ». Sur mon Raspberry Pi l’affichage de la console Linux est très lent lors de la phase d’amorçage ou lors d’une compilation logicielle par rapport à un ordinateur portable avec un processeur puissant (autant de mémoire RAM disponible). Qu’en est-il en remplaçant le HDD (Hard Disk Drive) par un SDD (Solid State Drive) ? La réalité semble plus complexe (éloignée) que l’interprétation éclaire (erronée ?) qui en est faite dans l’article.

                    1. 2

                      Merci pour tes conseils ! C’est fait pour le rajout des headers sur mon blog, ton site de test est top. J’ajouterais une note en fin d’article concernant cela, c’est très important tu as raison. Je ne pense pas ajouter une section car ça dépasse le simple cadre de “TLS” je trouve, même si c’est tout aussi important.

                      Pour Lets Encrypt, j’avais hésité car pour EC-256 j’avais trouvé ce post ( https://community.letsencrypt.org/t/why-is-the-nsa-deprecating-p256-ecdhe/142096 ) et EC-384 ne semble pas supporté aussi largement que RSA ? RSA4096 me paraissait un bon compromis. Mais ça évolue très vite dans ce domaine, je vais me renseigner si en effet EC-384 n’est pas plus pertinent aujourd’hui, auquel cas je modifierai ma recommandation dans l’article.

                      1. 3

                        Hello.

                        Je fais de même concernant la sécurité, je fais en sorte de pousser le hardening au détriment des utilisateurs.

                        Si l’utilisateur utilise IE ou une vieille version d’un navigateur, tant pis pour lui, de même pour les hacks CSS, je n’en mets pas.

                        Cependant j’aurais conseillé ECC au lieu de RSA (même en 4096), et plus précisément EC-256, ou au maximum EC-384, car si supérieur c’est encore trop mal supporté.

                        A noter que Caddy, par défaut porte une configuration TLS quasi parfaite, si ce n’est parfaite en terme de compromis : https://caddyserver.com/docs/caddyfile/directives/tls

                        Un autre point non abordé concerne les headers, qui sont tout aussi importants, je te laisse voir ta note ici : https://securityheaders.com/
                        Peut-être le sujet d’un prochain article ?

                        1. 2

                          Merci pour le tips :)

                          1. 3

                            Ahahhh, crontab.guru m’a sauvé bien des fois… de mes trous de mémoire.

                            Sinon, puisqu’une crontab est un réalité un fichier enregistré dans /var/spool/cron/crontabs, au nom de l’utilisateur - du moins sous Debian (et assimilés), l’astuce dont je me sers de plus en plus, au lieu d’écrire directement dans crontab, est la suivante :

                            • écrire un fichier, exemple ‘crontab4tasks’ et le remplir des règles désirées en s’aidant au besoin du *guru.

                            • exécuter la commande crontab en injectant le fichier.

                            • crontab < crontab4tasks

                            Un des avantages que j’y perçois, hormis le fait de pouvoir utiliser un éditeur de texte pour créer les règles “facilement”, cela me permet de garder assurément une trace de la table de crons pour un utilisateur donné.

                            Voilà.

                            1. 3

                              Même si je n’ai jamais été un grand fan de l’analytics de manière générale, XiTi a bercé ma jeunesse avec son infâme logo. Je ne savais même pas que c’était Français et l’un des pionniers dans le domaine. Une page de l’Internet se tourne. Chapeau à toute l’équipe.

                              1. 1

                                Ça arrive dans un contexte de rachat, les différentes équipes peuvent avoir à uniformiser les outils utilisés.

                                Par contre, c’est pas de chance quand ça tombe sur un cas comme ça, avec deux outils dont le but est différent, et c’est celui qui n’est pas adapté au besoin qui est choisi pour rester ^^

                                Chez nous, Puppet et Ansible sont utilisés tous les deux, mais pour des tâches différentes : Puppet gère la conf persistante (OS, packages, etc.), tandis qu’Ansible est dédié aux tâches “oneshot” (déploiement applicatif, déclaration dans l’AD, etc.).

                                1. 1

                                  Si tu parles du fait de se brancher sur la prise TIC, oui, c’est tout à fait légal, elle est là pour ça (le “C” veut dire “Client” ^^).

                                  L’accès à tout ce qui n’est pas plombé est autorisé, et on voit sur la photo que le plomb est à coté ;)

                                  1. 1

                                    La vidéo n’étant disponible que 7 jours, la rediffusion (CC-BY) est disponible sur youtube : https://www.youtube.com/watch?v=sNAknU5g5QE

                                    1. 1

                                      La vidéo n’étant disponible que 7 jours, la rediffusion (CC-BY) est disponible sur youtube : https://www.youtube.com/watch?v=uerlqRSVYEs

                                      1. 1

                                        Mais c’est justement le but de l’article de présenter ces syntaxes obscures du langage C. Même si leur utilité est faible, ce sont des cas que l’on peut rencontrer. Par exemple dans le noyaux Linux ou dans les soumissions de l’IOCCC.

                                        J’insiste sur présenter la syntaxe et pas des cas d’utilisation de ces syntaxes. Car je pense qu’en contexte, c’est plus compliqué à comprendre que dans un exemple simple qui n’a que peu de sens.

                                        Je trouve que toute la beauté de la chose est de trouver quand utiliser ces syntaxes lorsqu’elles se révèlent intéressantes. Certaines comme “le tableau flexible” ou “les caractères trop spéciaux” ne sont pas intéressantes de nos jours mais on peut les retrouver dans d’anciens codes sources.

                                        1. 3

                                          J’ai de la peine à voir l’intérêt de ce genre d’articles… Un simple lien aurait suffit.