Non Wt ne s'utilise qu'en C++ pur, il faut écrire du code C++ pour générer des interfaces. Ce que je n'aime pas trop avec ces frameworks c'est l'inclusion de code javascript maison automatiquement sans aucun contrôle dessus dans les pages générées.
J'ai testé plusieurs frameworks web en C++ dont Wt, cppcms qui est plutôt bon mais je n'ai pas trop aimé son système de templates.
Et comme Boost a rajouté un nouveau module HTTP je me suis dit que j'allais coder mon service de pastebin en C++, je l'ai terminé en environ deux jours. J'ai utilisé mstch pour génerer mes pages web et j'adore.
Seul hic, Beast n'a pas encore de parseur URL mais le développeur principal a dit que c'était prévu.
Sauf que D est mort né et il sert à rien. Il n'offre rien de nouveau (pattern matching de Rust <3). En plus il a un GC et plusieurs bibliothèques standard car les développeurs ne se sont pas mis d'accord.
Où exec() est une fonction qui exécute boost::process::system, lit stdin, stderr et me renvoie un tuple avec le code de retour. C'est pas ce qu'il y a de plus convivial à écrire mais ça reste plutôt simple.
Raison pour laquelle Slackware laisse à l'administrateur du système la responsabilité de ces interventions manuelles plutôt qu'à une paire de mainteneurs/empaqueteurs qui n'ont pas forcément le même point de vue sur les différentes options et qui peuvent parfois faire des choix hasardeux.
Pourtant slackware est fournie en format binaire (bien qu'on puisse facilement recompiler les paquets). Donc ça veut dire qu'il y a de toute façon un choix des options quand les paquets sont construits exemples:
vim avec support python ? avec support ruby ? avec des patches ?
cmake avec ncurses ? avec qt ?
Autant passer par une distribution construite depuis les sources (comme Gentoo) si l'on souhaite réellement la personnalisation absolue.
Personnellement j'utilise Boost pour les tests unitaire et fonctionnels. Dans la plupart des cas j'arrive quasiment à tout faire.
Je sépare toujours mon application (le main en gros) du code avec une bibliothèque, ça me permet de pouvoir tester facilement le code sans recompiler chaque fichier testé.
Ensuite pour les tests fonctionnels, j'utilise Boost.Process pour vérifier que les commandes invoquées répondent bien à ce que j'attends (erreur ou sortie standard correcte). Bon, ça nécessite pas mal de code, il faudrait peut-être que je trouve un moyen simple de faire des tests plus conviviaux.
Mercurial fait un fichier déclaratif ou chaque ligne indentée avec $ signifie une commande à exécuter, j'aime bien ce principe.
C'est ce que je me demandais, quand on parle d'ARM je vois toujours une tonne d'émulation différentes ce qui me laisse penser que ça reste une architecture bien plus complexe.
Personnellement ça ne me manque pas trop l'absence de NetworkManager (si ce n'est que l'on pourra pas configurer le réseau depuis GNOME/KDE). Pour rajouter un wifi un simple :
Affirmation péremptoire qui ne demande qu'à être explicité, même si le trolldi est passé…
Affirmation de quelqu'un qui a utilisé FreeBSD plusieurs années sur plusieurs laptops différents avec comme constats :
L'ACPI est toujours aussi mal supporté. Plusieurs fois le status de la batterie ne se faisait plus mettre à jour, aucun moyen de savoir à combien de % je suis sur la batterie.
Bis, la mise en veille marche une fois sur cinq.
Après une mise à jour, impossible de refaire fonctionner mon touchpad correctement.
Autonomie de la batterie largement en deça de Linux.
Si vous avez besoin de faire quelques trucs autres que la bureautique basique, vous êtes vite coincé. Exemple : le développement Android est très compliqué sous FreeBSD.
Le support du bluetooth est dérisoire.
Wayland ? pas encore.
Carte graphique dernière génération ? Bonne chance, ou utilise -CURRENT.
Note, pour avoir une fois testé OpenBSD, j'ai été surpris car tout l'ACPI fonctionnait correctement. De la mise en veille à l'hibernation. OpenBSD a eu la bonne idée de développeur leur propre pile ACPI, j'espère qu'un jour la fondation FreeBSD sponsorisera la même idée :)
Moi sur un serveur dédié depuis plus de 10 ans. J'ai par ailleurs contribué plusieurs ports. En serveur c'est vraiment top (ZFS, jails, système ultra flexible, beauté, simplicité, etc.)
Par contre je déconseille largement en desktop (encore moins en laptop).
C'est pas une philosophie: comme ajouter une dépendance demande un travail long et chiant, on préfère réinventer la roue :-)
Désolé mais je ne vois pas le rapport et je pense que tu n'as pas compris. Dans des projets node.js on utilise npm qui va installer les dépendances externes directement dans le dépôt de l'application alors que la tradition dans les applications C et C++ c'est d'utiliser celles installées par le gestionnaire de paquet de la distribution (donc de les garder externes).
J'ai pourtant bien précisé « qu'on intègre plus rarement une bibliothèque externe directement dans son code ».
Aucun n'est véritablement portable, ça n'est pas très amusant d'utiliser docker sous windows et MacOS par exemple. Sur BSD je ne sais même pas comment s'est distribué.
Oui je sais bien, mais tu installes un sur ton serveur qui te plait et tu reste avec :-)
Ah oui, mais le mainteneur a une Debian stable, alors que moi je suis sur Fedora donc on utilise pas les même versions de bibliothèques… Ton logiciel doit passer les versions de bibliothèques en même temps que tu fais tes mises à jours d'OS ?
Dans mon cas, les bibliothèques que j'utilise ne sont pas du genre à casser la compatibilité d'une version mineure à l'autre (c'est d'ailleurs un critère de choix). J'utilise Boost principalement, Qt 5 ou parfois SDL 2. Et SDL 2 je sais que ça va rester pendant encore un moment (combien il y a d'années entre SDL 1 et SDL 2 ? tellement que les distributions fournissent les deux côte à côte) donc pour le moment je ne peux pas dire que j'ai eu des problèmes de compatibilité de version. Mon seul gros problème c'est la version des compilateurs sur les distributions car j'utilise déjà beaucoup de fonctionnalités du C++17 et je sais que ça va être compliqué pour les utilisateurs de debian, mais bon si je dois commencer à me restreindre pour des distributions je ne pourrai jamais coder en C++17. Il faut dire que la philosophie des développeur C ou C++ est largement différente de npm (pour ne citer que celui ci) justement parce que la retro compatibilité est bien plus forte et qu'on intègre plus rarement une bibliothèque externe directement dans son code alors que dans npm on peut se le permettre bien plus.
Maintenant comment tu fais pour avoir plusieurs versions de libc diférentes
C'est sûr que la libc change vraiment souvent… Sinon il y a des chroot/mock/containeur pour tester des build dans des environnement propres.
Comment tu fais pour expliquer à tes contributeurs la liste de tes dépendances qu'ils utilise nix, debian, redhat ou gentoo ?
Je leur dis « Boost, CMake, Qt5, libzip » enfin bref, le nom upstream de mon composant, à eux de trouver le nom dans leur gestionnaire de paquet (qui est souvent assez identique).
Comment tu t'assure que tes dépendances ont bien les bonnes options de compilation ?
La plupart des distributions compilent avec les valeur par défaut d'upstream, j'ai jamais eu de souci à ce niveau là. Puis les bibliothèque externes que j'ai utilisées jusque là n'ont pas d'options par défaut que les distibutions changent par ci par là.
Par pitié non, je désespère quand je dois utiliser quelque chose en node.js qui rapatrie le monde entier à chaque installation. S'il y a bien une chose qui me déplaît dans ces façons de faire c'est qu'après avoir téléchargé ton dépôt, tu dois encore télécharger des dizaines d'autre dépôt pour pouvoir construire ton application. Avec C et C++ on a la chance de les avoir déjà dans le système ce qui permet entre autre de ne pas gaspiller du temps de compilation inutile et de la place.
CMake, encore et toujours. Ça fait environ 10 ans que je l'utilise (déjà !). Il a ses défauts mais il fait tellement de chose et bien en plus il est supporté par un bon nombre d'IDE le rendant bien intégré. Pour ma part je l'utilise avec vim (vim-cmake) et Qt Creator.
[^] # Re: C++ mon amour
Posté par David Demelier (site web personnel) . En réponse à la dépêche Faut‐il continuer à apprendre le C++ ?. Évalué à 3.
Non Wt ne s'utilise qu'en C++ pur, il faut écrire du code C++ pour générer des interfaces. Ce que je n'aime pas trop avec ces frameworks c'est l'inclusion de code javascript maison automatiquement sans aucun contrôle dessus dans les pages générées.
J'ai testé plusieurs frameworks web en C++ dont Wt, cppcms qui est plutôt bon mais je n'ai pas trop aimé son système de templates.
Et comme Boost a rajouté un nouveau module HTTP je me suis dit que j'allais coder mon service de pastebin en C++, je l'ai terminé en environ deux jours. J'ai utilisé mstch pour génerer mes pages web et j'adore.
Seul hic, Beast n'a pas encore de parseur URL mais le développeur principal a dit que c'était prévu.
AI is a mental disorder
[^] # Re: À la fois troll, à la fois fait divers
Posté par David Demelier (site web personnel) . En réponse à la dépêche Faut‐il continuer à apprendre le C++ ?. Évalué à 3. Dernière modification le 30 juillet 2018 à 13:23.
Tu es sérieusement entrain de dire que CMake ne gère pas proprement la cross compilation ?
Parce que -pour info-, voici les seules variables minimum à définir juste pour compiler pour android :
Sans compter qu'il y a d'autres exemples encore plus concis
AI is a mental disorder
[^] # Re: All hail to Rust
Posté par David Demelier (site web personnel) . En réponse au journal Ready At Dawn passe à Rust. Évalué à 2. Dernière modification le 27 juillet 2018 à 09:02.
Sauf que D est mort né et il sert à rien. Il n'offre rien de nouveau (pattern matching de Rust <3). En plus il a un GC et plusieurs bibliothèques standard car les développeurs ne se sont pas mis d'accord.
AI is a mental disorder
# SCM supportés
Posté par David Demelier (site web personnel) . En réponse à la dépêche Forges logicielles et hébergement de projets libres. Évalué à 4.
Tout le monde n'utilise pas Git, ça aurait été un petit plus de rajouter une colonne avec les SCM supportés par ces outils :-)
AI is a mental disorder
[^] # Re: My $0.02
Posté par David Demelier (site web personnel) . En réponse au journal Faites des tests !. Évalué à 2.
Pouvoir est un grand mot, j'ai juste utilisé Boost.Process pour lancer une commande et vérifier les sorties. Ça ressemble à :
Où
exec()
est une fonction qui exécuteboost::process::system
, lit stdin, stderr et me renvoie un tuple avec le code de retour. C'est pas ce qu'il y a de plus convivial à écrire mais ça reste plutôt simple.AI is a mental disorder
[^] # Re: slackounet
Posté par David Demelier (site web personnel) . En réponse au journal Slackware a un quart de siècle !. Évalué à 5. Dernière modification le 23 juillet 2018 à 15:17.
Pourtant slackware est fournie en format binaire (bien qu'on puisse facilement recompiler les paquets). Donc ça veut dire qu'il y a de toute façon un choix des options quand les paquets sont construits exemples:
Autant passer par une distribution construite depuis les sources (comme Gentoo) si l'on souhaite réellement la personnalisation absolue.
AI is a mental disorder
# My $0.02
Posté par David Demelier (site web personnel) . En réponse au journal Faites des tests !. Évalué à 2.
Personnellement j'utilise Boost pour les tests unitaire et fonctionnels. Dans la plupart des cas j'arrive quasiment à tout faire.
Je sépare toujours mon application (le main en gros) du code avec une bibliothèque, ça me permet de pouvoir tester facilement le code sans recompiler chaque fichier testé.
Ensuite pour les tests fonctionnels, j'utilise Boost.Process pour vérifier que les commandes invoquées répondent bien à ce que j'attends (erreur ou sortie standard correcte). Bon, ça nécessite pas mal de code, il faudrait peut-être que je trouve un moyen simple de faire des tests plus conviviaux.
Mercurial fait un fichier déclaratif ou chaque ligne indentée avec $ signifie une commande à exécuter, j'aime bien ce principe.
AI is a mental disorder
# Les séries
Posté par David Demelier (site web personnel) . En réponse au journal Slackware a un quart de siècle !. Évalué à 2.
Ce qui m'a toujours un peu dérouté dans Slackware c'est les catégories des paquets A, AP, X, …
AI is a mental disorder
[^] # Re: tiret du six
Posté par David Demelier (site web personnel) . En réponse au sondage Prononciation des options. Évalué à 1.
Je l'ai déjà entendu par téléphone aussi.
J'ai ri, surtout que je suis en qwerty.
AI is a mental disorder
[^] # Re: Fragmentation risk
Posté par David Demelier (site web personnel) . En réponse au journal «Understand the fact» la campagne de Arm contre le set d'instructions libre Risc-V. Évalué à 3.
C'est ce que je me demandais, quand on parle d'ARM je vois toujours une tonne d'émulation différentes ce qui me laisse penser que ça reste une architecture bien plus complexe.
AI is a mental disorder
[^] # Re: Qui utilise ?
Posté par David Demelier (site web personnel) . En réponse à la dépêche FreeBSD 11.2. Évalué à 2. Dernière modification le 04 juillet 2018 à 10:00.
Personnellement ça ne me manque pas trop l'absence de NetworkManager (si ce n'est que l'on pourra pas configurer le réseau depuis GNOME/KDE). Pour rajouter un wifi un simple :
J'avais même comme ambition de créer un wrapper à dmenu pour faciliter cette tâche.
AI is a mental disorder
[^] # Re: Qui utilise ?
Posté par David Demelier (site web personnel) . En réponse à la dépêche FreeBSD 11.2. Évalué à 1.
Pour les 4 derniers points cité dans mon précédent message.
AI is a mental disorder
[^] # Re: Qui utilise ?
Posté par David Demelier (site web personnel) . En réponse à la dépêche FreeBSD 11.2. Évalué à 5. Dernière modification le 03 juillet 2018 à 11:26.
Affirmation de quelqu'un qui a utilisé FreeBSD plusieurs années sur plusieurs laptops différents avec comme constats :
Note, pour avoir une fois testé OpenBSD, j'ai été surpris car tout l'ACPI fonctionnait correctement. De la mise en veille à l'hibernation. OpenBSD a eu la bonne idée de développeur leur propre pile ACPI, j'espère qu'un jour la fondation FreeBSD sponsorisera la même idée :)
AI is a mental disorder
[^] # Re: Qui utilise ?
Posté par David Demelier (site web personnel) . En réponse à la dépêche FreeBSD 11.2. Évalué à 1.
La PS Vita aussi :)
AI is a mental disorder
[^] # Re: Les ports
Posté par David Demelier (site web personnel) . En réponse à la dépêche FreeBSD 11.2. Évalué à 2.
Les flavors, c'est de lui. Il est juste un peu membre de l'équipe portmgr soit dit en passant ;)
AI is a mental disorder
[^] # Re: Qui utilise ?
Posté par David Demelier (site web personnel) . En réponse à la dépêche FreeBSD 11.2. Évalué à 1.
Moi sur un serveur dédié depuis plus de 10 ans. J'ai par ailleurs contribué plusieurs ports. En serveur c'est vraiment top (ZFS, jails, système ultra flexible, beauté, simplicité, etc.)
Par contre je déconseille largement en desktop (encore moins en laptop).
AI is a mental disorder
[^] # Re: Quel courage :
Posté par David Demelier (site web personnel) . En réponse à la dépêche Hébergez votre projet open source sur la nouvelle plate‐forme Agile et libre : Tuleap.net. Évalué à 1.
GitHub n'est pas pauvre. N'oubliez pas qu'il y a aussi des entreprises et particuliers qui payent pour des dépôts privés.
AI is a mental disorder
[^] # Re: Par Crom, il faut un maven pour C++ !
Posté par David Demelier (site web personnel) . En réponse au journal Un petit tour des systèmes de build. Évalué à 2. Dernière modification le 18 juin 2018 à 13:45.
Désolé mais je ne vois pas le rapport et je pense que tu n'as pas compris. Dans des projets node.js on utilise npm qui va installer les dépendances externes directement dans le dépôt de l'application alors que la tradition dans les applications C et C++ c'est d'utiliser celles installées par le gestionnaire de paquet de la distribution (donc de les garder externes).
J'ai pourtant bien précisé « qu'on intègre plus rarement une bibliothèque externe directement dans son code ».
AI is a mental disorder
[^] # Re: Par Crom, il faut un maven pour C++ !
Posté par David Demelier (site web personnel) . En réponse au journal Un petit tour des systèmes de build. Évalué à 3.
Oui je sais bien, mais tu installes un sur ton serveur qui te plait et tu reste avec :-)
Dans mon cas, les bibliothèques que j'utilise ne sont pas du genre à casser la compatibilité d'une version mineure à l'autre (c'est d'ailleurs un critère de choix). J'utilise Boost principalement, Qt 5 ou parfois SDL 2. Et SDL 2 je sais que ça va rester pendant encore un moment (combien il y a d'années entre SDL 1 et SDL 2 ? tellement que les distributions fournissent les deux côte à côte) donc pour le moment je ne peux pas dire que j'ai eu des problèmes de compatibilité de version. Mon seul gros problème c'est la version des compilateurs sur les distributions car j'utilise déjà beaucoup de fonctionnalités du C++17 et je sais que ça va être compliqué pour les utilisateurs de debian, mais bon si je dois commencer à me restreindre pour des distributions je ne pourrai jamais coder en C++17. Il faut dire que la philosophie des développeur C ou C++ est largement différente de npm (pour ne citer que celui ci) justement parce que la retro compatibilité est bien plus forte et qu'on intègre plus rarement une bibliothèque externe directement dans son code alors que dans npm on peut se le permettre bien plus.
AI is a mental disorder
[^] # Re: Par Crom, il faut un maven pour C++ !
Posté par David Demelier (site web personnel) . En réponse au journal Un petit tour des systèmes de build. Évalué à 5.
C'est sûr que la libc change vraiment souvent… Sinon il y a des chroot/mock/containeur pour tester des build dans des environnement propres.
Je leur dis « Boost, CMake, Qt5, libzip » enfin bref, le nom upstream de mon composant, à eux de trouver le nom dans leur gestionnaire de paquet (qui est souvent assez identique).
La plupart des distributions compilent avec les valeur par défaut d'upstream, j'ai jamais eu de souci à ce niveau là. Puis les bibliothèque externes que j'ai utilisées jusque là n'ont pas d'options par défaut que les distibutions changent par ci par là.
AI is a mental disorder
[^] # Re: build sous android
Posté par David Demelier (site web personnel) . En réponse au journal Un petit tour des systèmes de build. Évalué à 3. Dernière modification le 15 juin 2018 à 16:13.
Et CMake en natif (sans passer par celui du ndk) supporte la cross-compilation pour Android en seulement quelques variables:
AI is a mental disorder
[^] # Re: Une défense des autotools
Posté par David Demelier (site web personnel) . En réponse au journal Un petit tour des systèmes de build. Évalué à 3.
Sauf que autotools est beaucoup trop Linux only. Oublie les projets autotools sur Windows.
AI is a mental disorder
[^] # Re: Par Crom, il faut un maven pour C++ !
Posté par David Demelier (site web personnel) . En réponse au journal Un petit tour des systèmes de build. Évalué à 4.
Par pitié non, je désespère quand je dois utiliser quelque chose en node.js qui rapatrie le monde entier à chaque installation. S'il y a bien une chose qui me déplaît dans ces façons de faire c'est qu'après avoir téléchargé ton dépôt, tu dois encore télécharger des dizaines d'autre dépôt pour pouvoir construire ton application. Avec C et C++ on a la chance de les avoir déjà dans le système ce qui permet entre autre de ne pas gaspiller du temps de compilation inutile et de la place.
AI is a mental disorder
# CMake
Posté par David Demelier (site web personnel) . En réponse au journal Un petit tour des systèmes de build. Évalué à 1.
CMake, encore et toujours. Ça fait environ 10 ans que je l'utilise (déjà !). Il a ses défauts mais il fait tellement de chose et bien en plus il est supporté par un bon nombre d'IDE le rendant bien intégré. Pour ma part je l'utilise avec vim (vim-cmake) et Qt Creator.
AI is a mental disorder
[^] # Re: Mais il y a bien mieux !
Posté par David Demelier (site web personnel) . En réponse au journal Sortie de Devuan ASCII 2.0. Évalué à 5.
Slackware, le site avec 0 CSS !
AI is a mental disorder