Kwerc
Bem -vindo ao WERC de Kyle, uma reimaginação da estrutura da web do WERC de Uriel escrita em es Shell.
Características
- Produtivo. Crie aplicativos da Web poderosos e escaláveis com a mesma facilidade como escrever scripts de shell. Literalmente - ES é Shell! Pipe Ferramentas UNIX como SED e Grep ou praticamente todos os programas de linha de comando para criar funções complexas com muito pouco código. E com design muito mais inteligente do que Bourne/Bash e outras conchas, o ES é divertido e confiável.
- Fácil de aprender. Não conhece ES? Não há problema (quase ninguém faz). ES é extremamente simples. Se você conhece Bourne Shell ou Bash ou RC, já conhece a maioria dos es. Confira o documento ES para uma descrição completa do idioma em apenas 10 páginas e a Manpage ES para obter mais informações.
- Hackable. Kwerc são algumas centenas de linhas de es. Integrar -se facilmente ao seu banco de dados favorito (deseja aproveitar o poderoso redirecionamento de E/S da ES? Tente armazenar dados em uma árvore de arquivos de texto sem formatação ou montar um banco de dados como um sistema de arquivos de fusível), codificar em qualquer idioma etc. Até os ES podem ser modificados e estendidos em tempo.
- Poderoso. Além dos recursos padrão do shell, o ES é extensível e funcional, com suporte para funções de primeira classe, escopo lexical, exceções e ricos valores de retorno. Precisa de mais? O Kwerc é enviado com o intérprete MAWK rápido em chamas, você pode usar o embutido do ES. Ou, novamente, integrar facilmente seu idioma favorito (observe que alguns idiomas vêm com um desempenho significativo quando invocados do shell).
- Rápido. Se encaixa em um pequeno ramdisk, incluindo um conjunto completo de ferramentas de linha de comando unix estaticamente compiladas (9base). Funciona em um cluster. Suporta Redis como um armazenamento de dados primário (KWERC-Redis.
- Seguro. O KWERC tem fortes proteções contra injeções de conchas. As regras de cotação da ES e a sintaxe sensata geral evitam bugs de segurança comuns em outras conchas. E, é claro, não há melhor recurso de segurança do que a simplicidade. O KWERC é simples por design e implementação, e o software criado com o KWERC faz mais com menos código e menos bugs. Além disso, o KWERC é totalmente independente e pode ser executado em um chroot ou prisão somente leitura.
- Portátil. Deve ser executado em qualquer Unix típico (algum dia ele também pode ser executado no Plano 9 ou Inferno). Sem dependências externas. 100% compilado estaticamente.
Dependências
Tudo está incluído no fornecedor/. Você só precisa de compiladores C e Golang (> = 1.11) para construir. É altamente recomendável construir estaticamente para o desempenho máximo (incluindo quaisquer programas externos que você executar do KWERC). Musl é ideal (embora possa criar bugs em 9base em alguns ambientes).
Uma make simples compilará as dependências do fornecedor e as colocará no lugar certo. Você não precisa ser executado make install (na verdade, você não pode)-tudo está independente no diretório KWERC.
Debian:
# apt install build-essential golang-go
$ make
Alpino:
# apk add build-base go
$ make
Aqui está uma breve visão geral dessas dependências:
- ES: o intérprete ES. Alternativas: RC, qualquer outra concha com um pouco de trabalho portador.
- 9Base: várias ferramentas do Plano 9 portadas para o Unix, fornecendo um bom ambiente de concha. Alternativas: CoreUtils, SBase, BusyBox, etc. Com um pouco de trabalho portador.
- MAWK: Um intérprete rápido e rápido. Alternativas: qualquer outro intérprete AWK.
- KRYPTGO: Uma interface de linha de comando para algumas funções de Golang Crypto, usadas para Auth.
- CGD: um servidor da Web CGI. Alternativas: qualquer servidor da web com suporte ao CGI - documentação que se aproxima.
Uso
./bin/cgd -c app/es/kwerc.es
O KWERC agora deve estar acessível em http://127.0.0.1:42069. O site padrão vem com login/registro básico e uma página de depuração.
Em seguida: Construindo um aplicativo da web real. A documentação é um trabalho em andamento em kwerc.org. A documentação do WERC também é um pouco aplicável.
Extensões
Respostas frequentemente questionadas
P. Uma estrutura da web no shell? Você não pode estar falando sério.
A. Isso não é bash.
Q. CGI? Isso não é lento?
A. https://www.mail-archive.com/[email protected]/msg00202.html
P. Binários estáticos? Não são enormes/inseguros/lentos?
A. https://sta.li/faq/
Em breve para um kwerc perto de você
- Documentação
- Uploads de arquivo
- Cache
- Suporte da PWA
- ???
Contato
[email protected]
Doar
Basta enviar o dinheiro
Licença
O KWERC é distribuído sob a licença ISC. Consulte a licença para obter detalhes.
Dependências sob fornecedor/ têm suas próprias licenças. Leia -os.
Obrigado e história
O KWERC é dedicado à memória de Uriel. <3
O KWERC é baseado no WERC, criado por Uriel com contribuições de Garbeam, Kris Maglione, Sqweek, Soul9, Mycroftiv, Maht, Yiyus, CINAP_LENREK, KHM e muitos outros.
O KWERC incorpora muitas das mudanças do WERC Fork de Garbeam, Swerc.
Obrigado também a todos por trás dos vários projetos de dependência sob o fornecedor/.
As idéias para o KWERC vêm de uma variedade de projetos em que empreguei WERC, incluindo ROVR, VRLFP, Tokumei, Gelato Labs e Werchan, entre outros. Obrigado a todos os envolvidos. Agradecimentos especiais ao notável Genius e querido amigo Keefer Rourke por muita sabedoria que moldou o design de Kwerc.