Sujet: Re: CBNA_PHPBB_Analysis Jeu 4 Aoû 2016 - 9:41
Nice, maintenant tu fais de l'espionnage industriel chez google et on fait un algo qui assigne les tags automatiquement a un topic en fonction de son contenu.
_________________
daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
Sujet: Re: CBNA_PHPBB_Analysis Mar 9 Aoû 2016 - 23:26
Première version de mon parseur de bbcode qui produit un AST du bbcode afin de le rendre ensuite aisément transformable en markdown avec un variant visitor :
enum class node_t { NONE, BOLD, ITALIC, UNDERLINE, STRIKE,
LEFT, RIGHT, CENTER,
HR,
QUOTE, SPOILER,
IMG, URL,
LIST, };
enum class list_t { BULLETS = 0, ORDERED = 1 };
/** * Represents a bbcode node which may contain further bbcode */ struct bbcode;
/** * Represents a bbcode node which may contain further bbcode * and has an attribute information, like quoted message author. */ struct bbcode_with_attribute;
template<class Iterator> struct bbcode_grammar : public qi::grammar<Iterator, bbcode()> {
bbcode_grammar() : bbcode_grammar::base_type(bbcodes) { using qi::lit; using qi::char_; using qi::int_; using qi::_val; using qi::_1; using qi::eps; using qi::as_string; using qi::attr; using qi::hold;
using boost::spirit::ascii::space; std::string::const_iterator iter = storage.begin(); std::string::const_iterator end = storage.end(); bool r = phrase_parse(iter, end, g, space, ast);
if (r && iter == end) { std::cout << "-------------------------\n"; std::cout << "Parsing succeeded\n"; std::cout << "-------------------------\n";
Il ne supporte pas encore tout bien entendu, mais je devrai avoir terminé demain et pouvoir faire la transformation vers markdown dans la foulée.
Parser le html serait beaucoup plus compliqué à mon sens, malgré l'aide de gumbo, les structures html générées sont loin de ce qu'on pourrait attendre provenant de la source bbcode. Sans compter le fait que parser le html est beaucoup moins résistant en cas de forumactif upgrade.
_________________ Mon CV : fr - de - en Tous Ensemble! Réalisons!
Sujet: Re: CBNA_PHPBB_Analysis Jeu 11 Aoû 2016 - 0:09
Je vois que tu possède ton diplôme de magie noire! Excellent. En tous cas, ça vaut le coup d’œil.
J'avais jamais vu un exemple d'utilisation de Boost::Spirit. C'est fou.
Je vois aussi que tes templates qui transforment automatiquement n'importe quels objets C++ en json fonctionne aussi. Bonne nouvelle!
J'ai quelques doutes sur le faits de télécharger chaque messages en BBCode individuellement plutôt que de télécharger les pages du forum et transformer l'HTML. Mais bon, maintenant que tu as fais l'outil, on va voir ce que ça donne.
Je me demandais, j'ai vu que pour de prochaines versions de C++, ils planchent sur comment donner la capacité au langage de faire de la "static réflection". Peut-être qu'on pourra utiliser la fonction to_json() sans avoir à déclarer les attributs avec BOOST_FUSION_ADAPT_STRUCT.
Sujet: Re: CBNA_PHPBB_Analysis Jeu 11 Aoû 2016 - 9:50
Yep par contre malheureusement la réflexion est pas pour c++17. Mais en attendant y a boost::hana (c++14 je crois) qui est assez badass (to/from_json est sûrement écrit avec hana d'ailleurs).
Avec hana suffit de déclarer sa structure comme ça:
Code:
struct Car { BOOST_HANA_DEFINE_STRUCT(Car, (std::string, brand), (std::string, model) ); };
Et la réflexion deviens accessible.
Et joli templates @daminetreg J'ai jamais pu tâter de boost.spirit, étant donné qu'un code de base met 10 sec a compiler chez moi ._. Un jour j'aurais un vrai pc.
_________________
daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
Sujet: Re: CBNA_PHPBB_Analysis Jeu 11 Aoû 2016 - 9:54
Citation :
Je vois que tu possède ton diplôme de magie noire! Excellent. En tous cas, ça vaut le coup d’œil.
J'avais jamais vu un exemple d'utilisation de Boost::Spirit. C'est fou.
C'est vraiment une très bonne librarie, je l'utilise énormément et mes collègues également. Si tu devais l'apprendre, je te conseillerai de regarder la nouvelle version x3, moi je ne la connais pas car je suis trop habitué à qi.
L'avantage c'est vraiment d'avoir la grammaire directement dans le code.
Citation :
J'ai quelques doutes sur le faits de télécharger chaque messages en BBCode individuellement plutôt que de télécharger les pages du forum et transformer l'HTML. Mais bon, maintenant que tu as fais l'outil, on va voir ce que ça donne
Si vraiment c'est trop lent on pourra toujours essayer de transformer l'html, mais je pense que vu que l'import peut-être fait de manière incrémental, cela ne posera pas de soucis, passé l'import initial.
Citation :
Je me demandais, j'ai vu que pour de prochaines versions de C++, ils planchent sur comment donner la capacité au langage de faire de la "static réflection". Peut-être qu'on pourra utiliser la fonction to_json() sans avoir à déclarer les attributs avec BOOST_FUSION_ADAPT_STRUCT.
Oui j'ai eu accès au drafts assez tôt vu que je suis maintainer de BOOST_FUSION_ADAPT_STRUCT, il existe déjà une implementation clang et gcc dans des branches, je n'ai pas encore eu le temps, mais l'idée serait de faire une intégration des données des reflexion générées par le compilateur avec les traits de Boost.Fusion, de sorte à ce que tout les codes fonctionnant actuellement avec Boost.Fusion fonctionnent sans le ADAPT_STRUCT dans le prochain standard de C++. Cependant malheureusement je ne pense pas que cela sera avant C++21.
Mais je peux me tromper, il y a déjà eu des surprises.
_________________ Mon CV : fr - de - en Tous Ensemble! Réalisons!
daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
Sujet: Re: CBNA_PHPBB_Analysis Jeu 11 Aoû 2016 - 9:58
Sauf que Boost.Hana pour le moment ne marche que sur des versions pre-release de clang et gcc et msvc est à oublier.
Code:
struct Car { BOOST_HANA_DEFINE_STRUCT(Car, (std::string, brand), (std::string, model) ); };
Avec Boost.Fusion tu peux faire quasiment la même chose :
Et sinon ADAPT comme dans mon code. Boost.Hana est un concurrent de Fusion et MPL, je connais bien le GSoC lead du projet : Joël Falcou. Sur le long terme cela devrait pouvoir remplacer Boost.Fusion, mais on en est encore loin, justement du fait de l'intégration dans spirit etc.
_________________ Mon CV : fr - de - en Tous Ensemble! Réalisons!
daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
Sujet: Re: CBNA_PHPBB_Analysis Jeu 11 Aoû 2016 - 10:13
onilink_ a écrit:
Yep par contre malheureusement la réflexion est pas pour c++17. Mais en attendant y a boost::hana (c++14 je crois) qui est assez badass (to/from_json est sûrement écrit avec hana d'ailleurs).
Non avec Fusion qui est l'ancêtre d'Hana Qui d'ailleurs fonctionne sur tout les compilos même C++98 et est là depuis plus de 15 ans Hana n'est qu'une réécriture de Fusion de manière C++ modern, basée sur un crazy trick qui utilisent les generics Lambdas à fond. Mais à terme je pense que cela sera meilleur que Fusion, dans la mesure où cela compile plus rapidement parce que Louis Dionne travaille énormément sur les temps de compilation.
Et joli templates @daminetreg J'ai jamais pu tâter de boost.spirit, étant donné qu'un code de base met 10 sec a compiler chez moi ._. Un jour j'aurais un vrai pc.
Hmmm... C'est long en effet, du coup tu t'interdis le templating ?
_________________ Mon CV : fr - de - en Tous Ensemble! Réalisons!
Sujet: Re: CBNA_PHPBB_Analysis Jeu 11 Aoû 2016 - 10:24
Faudra que je teste fusion plus en profondeur, je l'avais utilisé un peu à un moment ou j'en avais eu besoin mais j'ai pas trop poussé le truc, comme j'ai pas trop poussé boost en général.
Sinon je ne m'interdis pas l'utilisation de templates sinon je serais un peu dans la mouise, je fais juste gaffe aux temps de compile que ça ajoute (donc j'évite un peu boost). Mon gestionnaire d'instances est full templates par exemple, et ça a ajouté ~30 secondes de compilation a centauri, mais comme il prenait déjà ~5minutes a compiler c'était acceptable vu ce que ça me faisait gagner a coté. De toute façon dans un jeu c'est pas comme si on avait souvent besoin d'outils comme boost.spirit
N’empêche que le jour ou j'aurais 4 cores au lieu de 2, et un cpu qu'a pas 10 ans, ça va me faire du bien x)
_________________
daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
Sujet: Re: CBNA_PHPBB_Analysis Jeu 11 Aoû 2016 - 10:32
oki Boost est donc vu comme un ralentisseur de compilation, mince !
J'utilise beaucoup templight, cela permet de visualiser avec KCacheGrind qu'est-ce qui prends du temps dans un template metaprogram / ou de la mémoire à compiler. Souvent c'est un gros truc qu'on peut facilement remplacer.
_________________ Mon CV : fr - de - en Tous Ensemble! Réalisons!
Sujet: Re: CBNA_PHPBB_Analysis Jeu 11 Aoû 2016 - 10:39
Bah dans le monde du jeu video oui. J'ai vu une conférence d'ubisoft montreal, eux sont carrément stricts, interdit d'utiliser une quelconque lib de boost, malgrès le fait que certaines n'utilisent quasiment pas de templates...
daminetreg a écrit:
Oui j'ai eu accès au drafts assez tôt vu que je suis maintainer de BOOST_FUSION_ADAPT_STRUCT
J'avais pas vu ça, c'est la classe!
_________________
daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
Sujet: Re: CBNA_PHPBB_Analysis Jeu 11 Aoû 2016 - 11:04
J'ai un bon ami qui travaille chez Ubisoft Montreal justement, et il était un grand fan de Boost, Template mais aussi de Python. Et il m'a dit justement qu'heureusement qu'il aime le python parce qu'il programme plus en python qu'en C++ là bas. D'autant que justement ils se limitent à un subset de C++ très ancien.
EA a même sa propre STL qui n'est pas API compatible pour des raisons d'optimisations / portabilités sur les horribles compilos des consoles. https://github.com/electronicarts/EASTL
_________________ Mon CV : fr - de - en Tous Ensemble! Réalisons!
Sujet: Re: CBNA_PHPBB_Analysis Jeu 11 Aoû 2016 - 11:20
Ahah ouai Ubi parlaient aussi de leurs conteneurs faits maison, mais ils utilisent quand même <algorithm>, comme quoi la lib standard est toujours pratique même quand on fait les choses a sa façon.
En tout cas c'est assez flippant le domaine pro du jv, tout est basé sur de vielles technos, et effectivement les compilos pour consoles y sont pas pour rien :s Je me limite moi même à C++11 pour pas avoir de surprises si un jour je venais a faire un port ps4/one...
_________________
daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
Sujet: Re: CBNA_PHPBB_Analysis Jeu 11 Aoû 2016 - 13:39
C++11 c'est pour le coup très récent C'est le standard sur lequel on est au boulot. C++14 est juste un petit incrément de 11, on y passera bientôt. Mais de toutes façons tous ces compilos nuls vont disparaître / sont en train de disparaître du fait de la facilité d'intégrer clang comme compilo pour sa plateforme.
_________________ Mon CV : fr - de - en Tous Ensemble! Réalisons!
Sujet: Re: CBNA_PHPBB_Analysis Jeu 11 Aoû 2016 - 14:48
Yep, vivent Clang et LLVM \o/
D'ailleurs y en a qui ont déjà utilisé la libclang pour analyser/bidouiller du C++? Ça a l'air vachement ouf ce truc!
_________________
daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
Sujet: Re: CBNA_PHPBB_Analysis Dim 14 Aoû 2016 - 13:45
onilink_ a écrit:
D'ailleurs y en a qui ont déjà utilisé la libclang pour analyser/bidouiller du C++? Ça a l'air vachement ouf ce truc!
L'API de libclang est très naturelle en fait, tu créé un .so que tu charges avec clang et tu as accès avec de belles classes à toute la représentation du code, tu peux itérer sur ce que tu veux.
C'est vachement simple, le temps d'attente pour démarrer c'est compiler le tout, sur mon core i7 32GB de RAM + SSD pour compiler llvm + clang il me faut quand même bien 7minutes.
En une demi journée tu peux facilement extraire les éléments qui t'interesse d'un code C++. Ou rajouter des attributs spéciaux, mais bon après ton code devient dépendant de ton tool qu'il te faut aussi maintenir alors c'est un peu dangereux.
Off-topic: A quand la version iOS de Planet Centauri ?
_________________ Mon CV : fr - de - en Tous Ensemble! Réalisons!
Sujet: Re: CBNA_PHPBB_Analysis Dim 14 Aoû 2016 - 15:13
Ouai y a plein de projets très intéressants a base de libclang, j'ai aussi vu des trucs super cool avec llvm et clang pour faire du C++ jited comme metashell. Vivement des IDE qui gèrent le hot reload sans avoir a faire mille bidouilles J'avais vu un truc sympa mais c'était close source et avec une licence chelou... Du coup wait & see.
Sinon pour centauri sur smartphone, peut être jamais, peut être un jour. Tout dépendra de l'argent qu'on gagne. Le soucis du portage étant pas spécialement technique au niveau du moteur, mais plus lié au gamedesign et gameplay qui est difficile a passer sur du tactile (déjà pour que ce soit jouable a la manette on va bien galérer).
_________________
daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
Sujet: Re: CBNA_PHPBB_Analysis Ven 19 Aoû 2016 - 13:45
onilink_ a écrit:
Ouai y a plein de projets très intéressants a base de libclang, j'ai aussi vu des trucs super cool avec llvm et clang pour faire du C++ jited comme metashell. Vivement des IDE qui gèrent le hot reload sans avoir a faire mille bidouilles Very Happy J'avais vu un truc sympa mais c'était close source et avec une licence chelou... Du coup wait & see.
Sinon pour centauri sur smartphone, peut être jamais, peut être un jour. Tout dépendra de l'argent qu'on gagne. Le soucis du portage étant pas spécialement technique au niveau du moteur, mais plus lié au gamedesign et gameplay qui est difficile a passer sur du tactile (déjà pour que ce soit jouable a la manette on va bien galérer).
Oki, je demandais parce que j'imagine que ce serait rentable sur une plateforme comme ios pour le genre de graphismes. Mais je comprends que le gameplay soit difficile à passer sur du tactile. :/
_________________ Mon CV : fr - de - en Tous Ensemble! Réalisons!
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
Sujet: Re: CBNA_PHPBB_Analysis Sam 20 Aoû 2016 - 12:24
Rentable pas forcément, les app stores sont saturés et les jeux qui percent sont gratuits avec de l'achat in-app. Tout l'inverse du modèle de leur jeu qui reste commercialement "classique".
Je suis assez content de gumbo-parser (+gumbo-query) qui sont une librairie C sans dépendence et un wrapper C++ autour. J'en parle car j'ai passez assez de temps à essayer la libXML ou d'autres, mais aucune n'arrivais à parser du XHTML (qui n'est pas du XML valide).