Greboca  

Suport technique et veille technologique

Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.

C’est alors la barrière de la prise en main qui fait peur, et pourtant...

Les logiciels libres

L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.

Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.

Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.

Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.

DLFP - Dépêches  -  HackInScience : automatiser l'enseignement de Python

 -  Janvier 2021 - 

HackInScience est un logiciel de publication et de correction automatique d'exercices, son instance hackinscience.org est une collection d'exercices Python.

HackInScience est né en 2014 : j'enseignais alors le Python en université (promos d'environ 70 élèves), et avec les collègues on s'est dit qu'il serait bon de passer plus de temps à aider les élèves qu'a les corriger, que la correction c'était automatisable, mais que passer du temps avec eux, ça ne l'était pas.

Deux "on jette tout et on recommence" plus tard, et deux confinements plus tard, on en est là :

Tout le code est open-source, c'est un simple Django pour présenter les exercices, des websockets pour recevoir sans attendre la correction du bot, et un Celery pour "load-balancer" les rendus aux serveurs de correction. Je n'enseigne plus en université mais le site étant toujours en ligne, et les confinements aidant, il a trouvé son public : 1500 exercices sont réussis par semaine en ce moment.

J’essaye de passer deux semaines par an à plein temps sur le projet, en 2019 j’ai travaillé l’internationalisation (être traducteur de la doc de Python et ne pas traduire ses propres projets n’était pas bien sérieux…), et en 2020 la notion de classement et d’équipes.

Du point de vue d'un élève

L'interface est minimaliste (d'abord parce que je suis plutôt nul en front :p) :

Un exercice hackinscience

À gauche l'énoncé, au milieu l'utilisateur rédige son code, et à droite la réponse du bot. C'est simple et il n'y a pas de place pour de la pub ;)

Du point de vue admin

C'est toute suite plus compliqué et mon but n'étant pas de rédiger la documentation ici je vais passer vite sur les détails les moins intéressants.

Pour l'installation d'une instance HackInScience je pense qu'un bon point de départ serait de s'inspirer de notre playbook Ansible, mais pour un test local un python manage.py runserver suffit.

La création d'exercices se passe dans un django-admin classique :

Admin: Création d'un exercice sur Hackinscience

Mais pour plus de confort j'ai pris l'habitude d'éditer les exercices localement (emacs étant un peu plus confortable que ACE Editor pour éditer du Python), de les versionner, et de tester mes modifications avant de les publier, pour ça j'utilise fetch.py et push.py dans le dossier scripts/.

La partie intéressante de la création d'un exercice, c'est son bot de correction : c'est aussi un script Python qui est appelé dans une sandbox à côté du rendu. La rédaction de ce script est totalement libre, la seule règle c'est : s'il print (sur stderr ou stdout) l'exercice est faux, sinon il est considéré juste.

Pour me faciliter le travail j'ai crée correction-helper qui lui même utilise friendly-traceback, à l'usage, rédiger un bot de correction ressemble à :

for message in test_messages:
    expected = bencode(message)
    with student_code():
        got = student_encode(message)
    if expected != got:
        message = _("Wrong answer while testing `{thing}`").format(thing=f"bencode({message!r})")
        if type(got) != bytes:
            message += "\n\n" + f"Expected a `bytes` instance, got a `{type(got)}`."
        fail(message, _("Got:"), code(got), _("Expected:"), code(expected))

Alors corriger du Python depuis du Python c'est assez simple, je peux soit utiliser subprocess.run pour exécuter le code de l'élève, soit importer ses fonctions et les tester, ça ressemble beaucoup à de la rédaction de tests unitaires, sauf qu'au lieu de se contenter d'un assert on rédige une description explicite de l'erreur, et parfois des conseils pour l'éviter.

Mais corriger du bash, du C, ou n'importe quoi d'autre doit être tout à fait possible aussi : rien n'empêche de rédiger une moulinette qui compile le code de l'élève puis le teste à coup de subprocess.run aussi.

Commentaires : voir le flux Atom ouvrir dans le navigateur

par JulienPalard, Pierre Jarillon, Xavier Teyssier, Ysabeau, patrick_g, palm123

DLFP - Dépêches

LinuxFr.org

L’informatique sans écran

 -  21 avril - 

Lors d’un Noël de ma tendre jeunesse pré-adolescente est arrivé un « ordinateur » dans le foyer. Ce PC (Intel 386) a été installé dans le bureau et a (...)


Entretien avec GValiente à propos de Butano

 -  16 avril - 

GValiente développe un SDK pour créer des jeux pour la console Game Boy Advance : Butano.Cet entretien revient sur son parcours et les raisons (...)


Nouveautés d'avril 2024 de la communauté Scenari

 -  11 avril - 

Scenari est un ensemble de logiciels open source dédiés à la production collaborative, publication et diffusion de documents multi-support. Vous (...)


Annuaire de projets libres (mais pas de logiciels)

 -  9 avril - 

Les communs sont une source énorme de partage !S’il est plutôt facile dans le monde francophone de trouver des ressources logicielles (Merci (...)


Les enchères en temps réel, un danger pour la vie privée mais aussi pour la sécurité européenne

 -  7 avril - 

Les enchères en temps réel, ou Real-Time Bidding (RTB), sont une technologie publicitaire omniprésente sur les sites web et applications mobiles (...)