KWERC
Bienvenido a Kyle's WERC, una reimaginación del marco web WERC de Uriel escrito en ES Shell.
Características
- Productivo. Cree aplicaciones web potentes y escalables tan fácilmente como escribir scripts de shell. Literalmente, ¡ES es Shell! Encienda herramientas UNIX como SED y GREP o prácticamente cualquier programa de línea de comandos para construir funciones complejas con muy poco código. Y con un diseño mucho más inteligente que Bourne/Bash y otros proyectiles, ES es divertido y confiable.
- Fácil de aprender. ¿No sabes es? No hay problema (casi nadie lo hace). Es es extremadamente simple. Si conoce a Bourne Shell o Bash o RC, ya conoce la mayoría de ES. Consulte el documento ES para obtener una descripción completa del idioma en solo 10 páginas y la manzana ES para obtener más información.
- Hackable. KWERC es un par de cientos de líneas de ES. Integre fácilmente con su base de datos favorita (¿desea aprovechar la poderosa redirección de E/S de ES? Intente almacenar datos en un árbol de archivos de texto plano o monte una base de datos como un sistema de archivos de fusibles), código en cualquier idioma, etc. Incluso las ES en sí se pueden modificar y extender la mosca.
- Poderoso. Además de las características estándar de Shell, ES es extensible y funcional con soporte para funciones de primera clase, alcance léxico, excepciones y valores de retorno ricos. ¿Necesitas más? KWERC se envía con el intérprete Blazing Fast Mawk, puede usar en línea de ES. O, nuevamente, integre fácilmente su idioma favorito (tenga en cuenta que algunos idiomas vienen con un éxito significativo de rendimiento cuando se invoca de Shell).
- Rápido. Se adapta a una pequeña ramdisk que incluye un conjunto completo de herramientas de línea de comandos UNIX compiladas estáticamente (9BASE). Funciona en un clúster. Admite a Redis como un almacén de datos primario (KWERC-REDIS.
- Seguro. KWERC tiene fuertes protecciones contra las inyecciones de conchas. Las reglas de cotización de ES y la sintaxis sensata general evitan errores de seguridad que son comunes en otros proyectiles. Y, por supuesto, no hay mejor característica de seguridad que la simplicidad. KWERC es simple por diseño e implementación, y el software creado con KWERC hace más con menos código y menos errores. Además, KWERC es totalmente autónomo y se puede ejecutar en un chroot o cárcel de solo lectura.
- Portátil. Debe ejecutarse en cualquier UNIX típico (algún día también puede ejecutarse en el Plan 9 o Inferno). No hay dependencias externas. 100% compilado estáticamente.
Dependencias
Todo está incluido en el proveedor/. Solo necesita compiladores C y Golang (> = 1.11) para construir. Se recomienda construir estáticamente para obtener el máximo rendimiento (incluidos los programas externos que ejecuta desde KWERC). Musl es ideal (aunque puede crear errores en 9BASE en algunos entornos).
Una make simple compilará las dependencias del proveedor y las pondrá en el lugar correcto. No necesita ejecutar make install (de hecho, no puede): todo es autónomo en el directorio KWERC.
Debian:
# apt install build-essential golang-go
$ make
Alpino:
# apk add build-base go
$ make
Aquí hay una breve descripción de estas dependencias:
- ES: El intérprete ES. Alternativas: RC, cualquier otro caparazón con un pequeño trabajo de portada.
- 9Base: varias herramientas del Plan 9 portadas a UNIX, proporcionando un entorno de shell agradable. Alternativas: coreutils, SBase, Busybox, etc. con un pequeño trabajo de portada.
- Mawk: Un intérprete rápido AWK. Alternativas: cualquier otro intérprete AWK.
- Kryptgo: una interfaz de línea de comandos para algunas funciones de cripto de Golang, utilizadas para Auth.
- CGD: un servidor web CGI. Alternativas: cualquier servidor web con soporte CGI: documentación de próxima publicación.
Uso
./bin/cgd -c app/es/kwerc.es
KWERC ahora debería ser accesible en http://127.0.0.1:42069. El sitio predeterminado viene con inicio de sesión/registro básico y una página de depuración.
A continuación: Construir una aplicación web real. La documentación es un trabajo en progreso en kwerc.org. La documentación de WERC también es algo aplicable.
Extensiones
Respuestas cuestionadas frecuentemente
P. ¿Un marco web en Shell? No puedes hablar en serio.
R. Esto no es Bash.
P. ¿CGI? ¿No es eso lento?
A. https://www.mail-archive.com/[email protected]/msg00202.html
P. ¿Binarios estáticos? ¿No son esos enormes/inseguros/lentos?
A. https://sta.li/faq/
Próximamente a un kwerc cerca de ti
- Documentación
- Cargas de archivo
- Almacenamiento en caché
- Soporte de PWA
- ????
Contacto
[email protected]
Donar
Solo envía el dinero
Licencia
KWERC se distribuye bajo la licencia ISC. Vea la licencia para más detalles.
Dependencias bajo el proveedor/ tienen sus propias licencias. Léalos.
Gracias e historia
KWERC está dedicado a la memoria de Uriel. <3
KWERC se basa en WERC, creado por Uriel con contribuciones de Garbeam, Kris Maglione, Sqweek, Soul9, Mycroftiv, Maht, Yiyus, Cinap_lenrek, KHM y muchos otros.
KWERC incorpora muchos de los cambios de WERC Fork de Garbeam, SWERC.
Gracias también a todos detrás de los diversos proyectos de dependencia bajo el proveedor/.
Las ideas para KWERC provienen de una variedad de proyectos donde he empleado WERC, incluidos Rovr, VRLFP, Tokumei, Gelato Labs y Werchan, entre otros. Gracias a todos los involucrados. Un agradecimiento especial al conocido genio y querido amigo Keefer Rourke por mucha sabiduría que ha dado forma al diseño de Kwerc.