kwerc
Bienvenue à Kyle's Werc, une réimagination du framework Web WERC d'Uriel écrit dans ES Shell.
Caractéristiques
- Productif. Créez des applications Web puissantes et évolutives aussi facilement que l'écriture de scripts de shell. Littéralement - es est Shell! Pipez ensemble des outils UNIX comme SED et GREP ou pratiquement tous les programmes de ligne de commande pour créer des fonctions complexes avec très peu de code. Et avec un design beaucoup plus intelligent que Bourne / Bash et d'autres obus, ES est amusant et fiable.
- Facile à apprendre. Je ne sais pas es? Pas de problème (presque personne ne le fait). ES est extrêmement simple. Si vous connaissez Bourne Shell ou Bash ou RC, vous connaissez déjà la plupart des ES. Consultez le papier ES pour une description complète de la langue en seulement 10 pages et la page mande pour plus d'informations.
- Piratable. Kwerc est quelques centaines de lignes d'ES. Intégrez facilement à votre base de données préférée (vous souhaitez profiter de la puissante redirection d'E / S d'ES? Essayez de stocker des données dans une arborescence de fichiers de texte brut ou montez une base de données comme système de fichiers de fusible), le code dans n'importe quelle langue, etc. Même Es lui-même peut être modifié et étendu à la volée.
- Puissant. Outre les caractéristiques du shell standard, ES est extensible et fonctionnel avec la prise en charge des fonctions de première classe, de la portée lexicale, des exceptions et des valeurs de retour riches. Besoin de plus? Kwerc est expédié avec l'interprète de Mawk Fast Blazing que vous pouvez utiliser en ligne à partir d'ES. Ou, encore une fois, intégrez facilement votre langue préférée (notez que certaines langues sont livrées avec un coup de performance significatif lorsqu'ils sont invoqués à partir de Shell).
- Rapide. S'inscrit dans un petit Ramdisk, y compris un ensemble complet d'outils de ligne de commande UNIX compilés compilés statiquement (9Base). Fonctionne dans un cluster. Prend en charge Redis en tant que banal de données principal (Kwerc-Redis.
- Sécurisé. Kwerc a de fortes protections contre les injections de coquilles. Les règles de citation d'ES et la syntaxe globale sensible évitent les bogues de sécurité qui sont courants dans d'autres shells. Et bien sûr, il n'y a pas de meilleure fonctionnalité de sécurité que la simplicité. KWERC est simple par conception et implémentation, et les logiciels construits avec KWERC font plus avec moins de code et moins de bogues. De plus, Kwerc est entièrement autonome et peut être géré dans un chroot ou une prison en lecture seule.
- Portable. Devrait fonctionner sur n'importe quel Unix typique (un jour, il peut également fonctionner sur le plan 9 ou Inferno). Pas de dépendances externes. 100% compilé statiquement.
Dépendances
Tout est inclus dans le vendeur /. Vous avez juste besoin de compilateurs C et Golang (> = 1.11) pour construire. Il est fortement recommandé de construire statiquement pour des performances maximales (y compris tous les programmes externes que vous exécutez de KWERC). MUSL est idéal (mais peut créer des bogues dans 9Base dans certains environnements).
Une make simple compilera les dépendances du fournisseur et les mettra au bon endroit. Vous n'avez pas besoin d'exécuter make install (en fait, vous ne pouvez pas) - tout est autonome dans le répertoire KWERC.
Debian:
# apt install build-essential golang-go
$ make
Alpin:
# apk add build-base go
$ make
Voici un bref aperçu de ces dépendances:
- ES: L'interprète ES. Alternatives: RC, tout autre obus avec un petit travail de portage.
- 9Base: Divers outils de plan 9 portés vers Unix, offrant un joli environnement de coquille. Alternatives: CoreUtils, SBase, Busybox, etc. avec un petit travail de portage.
- Mawk: un interprète Fast Awk. Alternatives: tout autre interprète AWK.
- Kryptgo: une interface de ligne de commande avec certaines fonctions de crypto Golang, utilisées pour l'authentification.
- CGD: un serveur Web CGI. Alternatives: tout serveur Web avec support CGI - Documentation à venir.
Usage
./bin/cgd -c app/es/kwerc.es
Kwerc devrait désormais être accessible à http://127.0.0.1:42069. Le site par défaut est livré avec une connexion / enregistrement de base et une page de débogage.
Suivant: Création d'une application Web réelle. La documentation est un travail en cours sur kwerc.org. La documentation de WERC est également quelque peu applicable.
Extensions
Réponses fréquemment interrogées
Q. Un cadre Web dans Shell? Vous ne pouvez pas être sérieux.
R. Ce n'est pas bash.
Q. CGI? N'est-ce pas lent?
A. https://www.mail-archive.com/[email protected]/msg00202.html
Q. Binaires statiques? Ne sont pas énormes / insécurisés / lents?
A. https://sta.li/faq/
Venir bientôt dans un kwerc près de chez vous
- Documentation
- Téléchargements de fichiers
- Mise en cache
- Support PWA
- ???
Contact
[email protected]
Faire un don
Envoyez simplement l'argent
Licence
Kwerc est distribué sous la licence ISC. Voir la licence pour plus de détails.
Dépendances en vertu du fournisseur / ont leurs propres licences. Lisez-les.
Merci et histoire
Kwerc est dédié à la mémoire d'Uriel. <3
Kwerc est basé sur WERC, créé par Uriel avec des contributions de Garbeam, Kris Maglione, Sqweek, Soul9, Mycroftiv, Maht, Yiyus, CINAP_LENREK, KHM et bien d'autres.
Kwerc intègre de nombreux changements de Werc Fork de Garbeam, Swerc.
Merci également à tous derrière les divers projets de dépendance sous Vendor /.
Les idées pour Kwerc proviennent de divers projets où j'ai utilisé WERC, notamment ROVR, VRLFP, Tokumei, Gelato Labs et Werchan entre autres. Merci à toutes les personnes impliquées. Un merci spécial au génie réputé et cher ami Keefer Rourke pour beaucoup de sagesse qui a façonné le design de Kwerc.