CodeLauncher est un petit serveur sans prétentions écrit en Python et basé sur Flask.
Il fournit une interface en HTML5/CSS3 fournissant un petit program Hello World de base en C ou en Python à modifier et un bouton pour lancer le code.
C'est très pratique pour tester un petit bout de code rapidement sans avoir à ouvrir un éditeur, puis compiler dans le cas du C.
Le projet est stocké sur Github: https://github.com/dadadel/codelauncher
Voilà j'espère que ça vous sera utile :)
# mais encore
Posté par Anonyme . Évalué à 3.
je veux bien avoir quelques explications: codelauncher analyse du C et l’exécute via un interpréteur écrit en python ?
[^] # Re: mais encore
Posté par dadadel . Évalué à 5.
codelauncher est un serveur web écrit en Python qui permet d'éxécuter du code C ou Python:
- pour le code C, il copie le code dans un fichier, le compile et exécute le programme compilé
- pour le Python, il copie le code dans un fichier et l'éxécute avec l'interpréteur Python
l'interface fournit un champ texte prérempli modifiable avec le code C ou Python, un bouton pour exécuter, un champ texte non modifiable qui affiche le résutat, un champ non modifiable qui affiche les résultat de compilation pour le C ou le message d'erreur pour Python s'il y en a.
[^] # Re: mais encore
Posté par zul (site web personnel) . Évalué à 10.
Mais à quoi ça peut servir ?
En local, ça peut pas vraiment être plus rapide qu'appeller clang et ./a.out (et tu peux utiliser un vrai éditeur de code quoi).
En remote, hum, pas de sandbox, pas de limite de temps d'exécution, … La machine va survivre combien de temps sur ninternet ?
[^] # Re: mais encore
Posté par dadadel . Évalué à 3.
Il m'arrive souvent de devoir faire des petits tests en C ou Python, j'avais donc besoin d'une solution simple et rapide pour me faire gagner du temps.
Je n'avais pas l'intention de l'utiliser via Internet d'où la non sécurisation. Ça pourrait éventuellement évoluer dans ce sens mais ce n'était pas mon besoin premier.
[^] # Re: mais encore
Posté par ckyl . Évalué à 4.
Commencons par Python. En quoi ca te fait gagner du temps par rapport au REPL CPython ou un éditeur classique ? Supposons que la console Python ne corresponde pas a tes besoins, en quoi ta solution est plus adaptée qu'IPython ? Qui pour le coup est TRES pratique.
Maintenant pour du C, hormis une textbox pourrave au lieu d'un éditeur ca apporte quoi ? Cliquer sur un bouton plutôt que de demander à ton éditeur de lancer gcc sur le fichier courant ?
J'ai beau chercher je vois pas comment ca peut faire gagner du temps ou être simplement pratique…
[^] # Re: mais encore
Posté par barmic . Évalué à 8.
Tu n'a probablement pas de tablette.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: mais encore
Posté par dadadel . Évalué à 7.
Je connais tout ça, mais il se trouve que codelauncher correspond exactement à mes besoins (normal je l'ai fait dans ce but). Si ça ne répond pas aux tiens c'est une bonne chose qu'il y ait IPython, éditeurs,… Pour moi c'est overkill (j'en utilise quand-même hein pour d'autre choses ;-)).
Pas besoin de chercher trop loin, mes besoins:
- quelque chose de simple (cf. le screenshot du README de Github)
- pas besoin de coloration syntaxique étant donné la basicité de ce que je fais avec
- quelque chose d'unifié (pas plusieurs outils/éditeurs), je veux pouvoir jongler entre C et Python en un clic
- ne pas créer de fichier ni utiliser d'interpréteur
- avoir un résultat direct et rapide avec un seul bouton
- pas de pub, open source
- fonctionner en local avec un navigateur web sans Internet (il y a de tels outils en ligne)
- pas de Javascript
- customisable à souhait
- pas de contraintes de sécurité
Je ne cherche pas à prouver quoi que ce soit ni remplacer quoique ce soit de génial.
Pour toutes ces raisons j'ai développé (très rapidement) codelauncher et je le mets à disposition au cas où d'autres personnes auraient les mêmes besoins que moi. Si c'est le cas elles verront tout à fait son utilité ;-)
[^] # Re: mais encore
Posté par Francky (site web personnel) . Évalué à 1.
Ayé j'ai mieux compris. Cette dernière explication aurait, je pense, mérité sa place dans le corps du journal.
Je pense pas être le seul à pas avoir compris du premier coup, et pas la seule feignasse à pas avoir regardé le screenshot.
Maintenant c'est clair.
[^] # Re: mais encore
Posté par dadadel . Évalué à 1.
Je voulais changer le post initial mais ce n'est apparemment pas possible :(
[^] # Re: mais encore
Posté par Spack . Évalué à 10.
Si le code n'est pas exécuté dans une sandbox, ce qui semble être le cas, ça peux causer quelques dégâts.
[^] # Re: mais encore
Posté par dadadel . Évalué à 3. Dernière modification le 20 mai 2014 à 11:38.
Je suis entièrement d'accord. Je vais mettre un gros Warning dans le README.
Encore une fois je l'utilise en local sur ma machine.
(Ceci dit cette commande ne peut être exécutée que par root ;))
[^] # Re: mais encore
Posté par Zylabon . Évalué à 4.
J'ai la flemme de tester là tout de suite, mais non je ne crois pas, elle supprimera juste tout ce qu'elle peut.
Please do not feed the trolls
[^] # Re: mais encore
Posté par barmic . Évalué à 4.
De toute manière c'est c'est pas rm qui le fait tu écris le programme C qui le fait, ou tu écris un programme C qui fait une fork bomb ou …
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: mais encore
Posté par Matthieu Moy (site web personnel) . Évalué à 3.
Je ne teste pas non plus (ce n'est pas par flème …), mais il me semble qu'il y a un cas particulier dans le code de GNU rm qui refuse de s'exécuter sur /. Après, on peut trouver des variantes tout aussi dangereuses et acceptées par rm ;-).
[^] # Re: mais encore
Posté par Nicolas Boulay (site web personnel) . Évalué à 1.
dd if=/dev/sda of=/dev/zero bs=1M
"La première sécurité est la liberté"
[^] # Re: mais encore
Posté par dadadel . Évalué à 4. Dernière modification le 20 mai 2014 à 17:18.
si je puis me permettre c'est plutôt
dd if=/dev/zero of=/dev/sda bs=1M
sinon ça n'aura aucun effet ;-)
Il faut être très prudent avec
dd
!!et ne pas oublier d'être root!
[^] # Re: mais encore
Posté par claudex . Évalué à 5.
Je trouvais justement sympa de ne pas avoir mis une commande dangereuse que quelqu'un pourrait copier-coller par erreur.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: mais encore
Posté par dadadel . Évalué à 1. Dernière modification le 20 mai 2014 à 18:08.
Ouch, je n'avais pas pensé à ça !
C'est vrai que maintenant si quelqu'un fait un copier/coller les conséquences pourraient potentiellement être désastreuses ^^
[^] # Re: mais encore
Posté par giant_teapot (site web personnel) . Évalué à 1. Dernière modification le 20 mai 2014 à 11:14.
De ce que j'ai vu dans le code, il s'agit plutôt de créer un subprocess qui lance gcc puis le binaire généré si la compilation a réussi.
Edit : grilled :p
# Sandbox
Posté par Pierre-Marie D . Évalué à 3. Dernière modification le 20 mai 2014 à 11:34.
L’exécution du code n'a pas l'air sandboxé.
Dommage, sinon ça aurait pu faire un bon équivalent de JsFiddle pour du Python ou C.
Edit: oups, j'avais pas vu le commentaire de Dadadel
[^] # Re: Sandbox
Posté par dadadel . Évalué à 1.
Comme j'ai dit à zul, ce n'était pas mon besoin premier. Cependant je peux enviseager de le faire évoluer dans ce sens.
[^] # Re: Sandbox
Posté par Pierre-Marie D . Évalué à 2.
Ça me rappelle ce jeu en python : http://www.checkio.org/
[^] # Re: Sandbox
Posté par madhatter (site web personnel) . Évalué à 2.
J'adore la page (notamment le scroll vertical). Quelqu'un sait avec quoi c'est fait ?
There is no spoon...
[^] # Re: Sandbox
Posté par Jona . Évalué à 1.
django semble-t-il
http://builtwith.com/checkio.org
[^] # Re: Sandbox
Posté par giant_teapot (site web personnel) . Évalué à 2.
Je dirais même que ce serait une des suites les plus intéressantes à donner à ton problème.
Les techniques de software fault isolation (SFI) sont nombreuses et peuvent se situer à plus ou moins haut niveau : conteneurs lxc, seccomp, SELinux, ASLR, etc.
Je ne sais pas quelle est ta prochaine milestone, mais selon tes centres d'intérêt, cela pourrait être une expérience très enrichissante à terme. :)
(my two cents)
# IdeOne
Posté par Francky (site web personnel) . Évalué à 0.
Sinon, il y a IdeOne qui fait ça depuis plusieurs années.
C'est, je crois, très utilisé pour tester, et/ou partager, un petit bout de code vite fait.
[^] # Re: IdeOne
Posté par dadadel . Évalué à 2.
Il y a plusieurs sites qui proposent ça en ligne. Mais je voulais quelque chose sans pub, plus simple à utiliser, ne nécessitant pas de Javascript ni une connexion à Internet et libre ;-)
# TCC
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 2.
Il me semble que tcc peut interpréter du C, ou bien le compiler et l'exécuter de manière transparente.
[^] # Re: TCC
Posté par Zylabon . Évalué à 2.
Vi, avec l'option
-run
je sais pas comment il fait exactement. J'ai ça dans mon bashrc, je ne m'en sers jamais… mais ça montre ce qu'on peut faire.Please do not feed the trolls
# Javascript
Posté par romgain . Évalué à 3.
Bonjour!
Je voulais juste savoir pour quelle raison tu ne veux pas utiliser de javascript dans ton app.
Après l'avoir utilisé un peu, j'ai remarqué que j'ai souvent besoin d'éditer un peu le code que je copie-colle dans la section "source code". J'ai le réflexe d'appuyer sur Tab pour indenter le code (indispensable en Python), et à chaque fois je perds le focus dans la zone d'édition.
Je ne pense pas que ce problème puisse être résolu sans javascript.
Dans ce cas, pourquoi ne pas intégrer un éditeur de code minimaliste dans la zone d'édition? Sans perte de fonctionnalité (par rapport à la version actuelle) pour les utilisateurs qui ont désactivé javascript dans leur navigateur.
Sinon belle initiative! :)
[^] # Re: Javascript
Posté par dadadel . Évalué à 1. Dernière modification le 21 mai 2014 à 11:17.
Bonjour,
J'utilise parfois des navigateurs sur lesquels Javascript est désactivé, voilà la raison pour laquelle je voulais pouvoir faire sans.
Là c'est une première version minimaliste qui répondait à mon besoin actuel. Mais je ne suis pas contre l'améliorer. C'est vrai que c'est dommage de devoir utiliser un éditeur extérieur alors qu'un des buts est de l'éviter.
N'hésites pas à faire une demande d'amélioration (issue), voire de contribuer (pull request).
Merci pour ton commentaire
PS: as-tu une suggestion d'éditeur minimaliste à intégrer sans javascript?
[^] # Re: Javascript
Posté par romgain . Évalué à 0.
Pour l'éditeur minimaliste, je ne pense pas que ce soit possible sans javascript. Par contre, il est possible de garder le comportement actuel si javascript n'est pas activé dans le navigateur, et de charger un editeur (Ace par exemple), si le javascript est activé.
Je peux avoir une pull request de prête d'ici la fin de la journée si ca t'interesse.
[^] # Re: Javascript
Posté par dadadel . Évalué à 1.
Ah, j'étais surpris aussi pour l'éditeur sans JS. Ok pour la PR.
Merci
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.