## HackInScience
Julien Palard
CPython core dev
## Demo time ! Parce que vous êtes là pour ça.
## Enseigner le Python J'ai l'habitude. Mais à des groupes de ~6 pendant ~3 jours.
## C'est green ![Ruby Rhod](static/ruby-rhod.jpg)
## Enseigner le Python Un jour on nous a proposé un groupe de 50 pendant 7 jours.
## C'est pas green ![Ruby Rhod étranglé](static/pas-green.jpg)
## Mais on est devs Alors on a automatisé tout ce qui pouvait l'être.
## HackInScience.org C'est un petit Django, avec un peu de celery.
## 181 lignes de Python Ça devrait loger dans quelques slides ;)
## Django models ```python class Exercise(models.Model): title = models.CharField(max_length=255) wording = models.TextField() check = models.TextField() ```
## Django view ```python class ExerciseListView(LoginRequiredMixin, ListView): model = Exercise template_name = "hkis/exercises.html" class ExerciseView(LoginRequiredMixin, DetailView): model = Exercise template_name = "hkis/exercise.html" ```
## Une petite API ```python class ExerciseSerializer(HyperlinkedModelSerializer): class Meta: model = Exercise fields = '__all__' class ExerciseViewSet(viewsets.ModelViewSet): queryset = Exercise.objects.all() serializer_class = ExerciseSerializer router = routers.DefaultRouter() router.register('exercises', ExerciseViewSet) ```
## Une interface d'admin ```python from django.contrib import admin from website.models import Answer, Exercise admin.site.register(Answer) admin.site.register(Exercise) ```
## C'est utilisé ? Je n'ai pas de « pisteur », mais j'ai une DB. En octobre 2022 : 730 personnes ont résolu 10_780 exercices La moulinette a corrigé près de 50k rendus.
## Ça tient la charge ? Les exercices sont corrigés en environ 200ms. Deux serveurs se répartissent le travail. Les boucles infinies sont interrompues après 20s.
## C'est rentable ? Ren…quoi ? Pardon ? J'ai pas de « business model », et non mon projet ne va pas « mourir demain » pour autant #sry.
## Côté sécu Les rendus sont exécutés côté serveur. C'est un challenge niveau sécurité.
## seccomp \+ Linux namespaces \+ rlimit
## Vu d'un enseignant
## L'interface d'admin
## Un repo git Juste pour les exos.
## L'hébergement d'instances locales Possible, évidement, j'ignore s'il y en a.
## Mot de la fin Si vous aimez Python, n'oubliez pas la PyConFr ! Du 16 au 19 février 2023 !
## Questions - Mastodon : [@mdk@mamot.fr](https://mamot.fr/@mdk) - XMPP : mdk@chapril.org - HTTP : https://mdk.fr - SMTP : julien@python.org - Whatsapp : HAHAHA jamais. - Insta : Et puis quoi encore ? - TikTok : SSTTTTOOOOOOOOP !