shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: Construção de CASE Complexa


From: Rodrigo Amorim Ferreira | CODECOMMUNITY
Subject: Re: [shell-script] Re: Construção de CASE Complexa
Date: Sat, 09 Jul 2016 15:41:17 -0300

OI Itamar,

O projeto é um gerenciador de sites estáticos que (de início) atenda as
minhas necessidades de desenvolvimento. Atualmente desenvolvo sites
exclusivamente de forma estática (tanto os meus projetos quanto o de
clientes) e sempre tenho procurado uma solução que me atenda (e não
tenho encontrado, até pelo jeito "peculiar" com que trabalho no
assunto).

Assim sendo, resolvi "pensar fora da caixa" e "reinventar a roda", mas
de um jeito que me atendesse completamente.

MINHA FORMA DE TRABALHO

Como você já deve ter percebido, por não encontrar nenhuma solução que
atenda (no macro e no micro) as minhas necessidades, tenho construído
sites estáticos "na mão" (argh), como mostra os seguintes projetos
abaixo (sim, acreditem, eles foram feitos "na mão"):

ENGLISH VERSION
http://www.codecommunity.org
http://projects.codecommunity.org

VERSÃO EM PORTUGUÊS (DO BRASIL)
http://www.codigocomunidade.org
http://projetos.codigocomunidade.org

O NÍVEL DA SITUAÇÃO

Se não encontro uma ferramenta que me atenda da forma que eu preciso
construir meus sites (e o uso de temas, frameworks, plugins, widgets,
etc), pior ainda quando o assunto é a minha logística de desenvolvimento
de projeto, tanto local (minha máquina, projetos em desenvolvimento),
quanto remoto (servidores, projetos em produção).

Tudo o que desenvolvo em minha máquina que esteja OK, sobe para o
servidor correspondente. E por questões de lógica de organização eu
tenho em minha máquina uma estrutura de diretórios como essa (a exemplo,
abaixo) para receber meus projetos:

$HOME
  └── DOMAINS
       ├── CODECOMMUNITY.ORG
       │   ├── projects.codecommunity.org
       │   └── www.codecommunity.org
       │
       └── CODIGOCOMUNIDADE.ORG
           ├── projetos.codigocomunidade.org
           └── www.codigocomunidade.org

Já nos servidores, cada árvore DOMAIN fica localizada no servidor
específico e na conta de usuário correspondente de cada "cliente", mas
mantendo a mesma estrutura (DOMAINS/$PROJECTS/$SUBPROJECTS). Se, por
exemplo, um cliente que contrate meus serviços possui mais de um
subprojeto ou mesmo projetos distintos (cada um com pelo menos um
subprojeto), vai tudo para uma conta de usuário específica, na mesma
forma de organização mostrada acima (NOTA: isso para sites pequenos com
pouca visitação, pois podem conviver todos no mesmo servidor, por
exemplo).

SERVIDOR WEB DE CONTEÚDO: NGINX

Também uso NginX e tenho o mesmo tipo de organização interna (i. é:
estrutura de arquivos similar) em sua configuração tanto para
identificar os server blocks (arquivos separados com o nome de
subdomínio completo) quanto para separar os tipos de arquivos de log
para cada "subprojeto" (i. é: cada subdomínio), tanto localmente
(desenvolvimento) quanto remotamente (produção, em cada servidor
respectivo).

BACKUP: GIT

Tenho backups locais e remotos (de cada conta, servidor) de todos os
subprojetos, tanto no desenvolvimento (o que está local) quanto do que
está em produção (remoto), via Git.

A CRIAÇÂO DE UM SCMS (STATIC CONTENT MANAGEMENT SYSTEM)

Com a criação deste programa (o nome ainda está em escolha por aqui)
pretendo aplicar todos esses detalhes (com o tempo, com o
desenvolvimento) na estrutura de automação que quero tornar real.

Assim, eu estou criando uma estrutura de diretórios (ex.: mostrando
apenas o básico) para o programa que atenda as minhas necessidades:

$PROGRAMA
  ├── PROJECTS
  │    ├── CODECOMMUNITY.ORG
  │    │   ├── projects.codecommunity.org
  │    │   └── www.codecommunity.org
  │    │
  │    └── CODIGOCOMUNIDADE.ORG
  │        ├── projetos.codigocomunidade.org
  │        └── www.codigocomunidade.org
  └── DOMAINS
       ├── CODECOMMUNITY.ORG
       │   ├── projects.codecommunity.org
       │   └── www.codecommunity.org
       │
       └── CODIGOCOMUNIDADE.ORG
           ├── projetos.codigocomunidade.org
           └── www.codigocomunidade.org

onde:

  - em PROJECTS ficam os arquivos de construção de site e de conteúdo e;
  - em DOMAINS ficam os sites construídos pelo programa, prontos para
uso local (que o NginX serve via navegador Web).

E da pasta DOMAINS, sobe para seus respectivos servidores o que convier,
para uso em produção.

TEMAS: HERE DOCUMENTS

Os temas para cada subprojeto ficam em outra pasta da raiz de $PROGRAMA
- a pasta THEMES - e são criados utilizando here documents, para
facilitar a criação do código e a manipulação do mesmo até mesmo por
leigos em shell script (acredito que ficam mais limpos e fáceis de
trabalhar que os temas do WP, por exemplo).

E, assim como no WP, cada tema pode ser utilizado por um ou mais
subprojetos (é só chamar o tema correspondente na construção do
subprojeto). Melhor ainda, poderia ser utilizado até mesmo para a
construção de páginas isoladas (imagine a possibilidade de se obter cada
página com um tema diferente, construído de forma fácil).

LOCALIZAÇÃO DA ESTRUTURA DE DIRETÓRIOS
        
Outro ponto interessante é que a pasta do projeto poderia residir em
qualquer lugar dentro do $HOME do usuário, facilitando a vida do
desenvolvedor e aumentando a segurança do processo, por não precisar
alterar permissões de arquivos fora deste mesmo espaço.

RESUMO DA ÓPERA

Este é apenas um resumo do projeto e se tiverem dúvidas ou sugestões,
serão bem vindos.

NOTA: Para não acharem que todo esse texto possa ser considerado
OFF-TOPIC, venho informar que eu expliquei meu modus operandi no
desenvolvimento de sites, para exemplificar como estou tentando
construir o programa para a automação de todo esse trabalho. Claro que,
a intenção também é a de divulgar (e sugerir) uma forma que acho
interessante de desenvolvimento nesta área, a todos os interessados.

DOMÍNIO PÚBLICO

Pretendo colocar o resultado (se não ficar muito tosco) disponível em
http://projects.codecommunity.org (e em
http://projetos.codigocomunidade.org) assim que tiver algo básico
funcionando (e coloco no GitHub o código). E usarei um licenciamento (ou
falta dele) para que se aproxime ao máximo do domínio público, como eu
coloquei meu último projeto:

ENGLISH VERSION
http://projects.codecommunity.org/periodic-table

VERSÃO EM PORTUGUÊS
http://projetos.codigocomunidade.org/tabela-periodica

vide a respectiva FAQ.

TIC, TAC, TIC, TAC ...

Claro que o tempo corre contra minha pessoa, pois a cada hora preso no
código é uma hora a menos trabalhando com sites :D Então, antes de ser
algo para me divertir e aprender mais sobre programação em shell script,
é também algo para ajudar a diminuir meu trabalho atendendo as minhas
necessidades de desenvolvimento e administração de projetos Web.

Quanto mais eu conseguir automatizar meu processo de trabalho, mais
tempo me sobra para continuar a programar e desenvolver outros projetos
de meu interesse.

Um abraço.

Rodrigo


On Sat, 2016-07-09 at 08:30 -0700, address@hidden [shell-script]
wrote:
>   
> Legal Rodrigo
> 
> O seu projeto parece algo interessante e me deixa curioso.
> Assim que chegar uma conclusão e escolher uma opção nos comunique.
> Acredito que sempre é bom saber das soluções que as pessoas encontram
> para os diversos problemas, que podem em algum momento ajudar outra
> pessoa.
> 
> Com relação ao que o Tiago escreveu, concordo plenamente e acredito
> que o exemplo que citei nada mais é que uma abordagem justamente da
> forma como ele encara.
> 
> Claro que não é uma forma única, é uma das possibilidades existentes,
> mas se encaixa no que foi descrito.
> 
> Torço para que obtenha êxito no seu processo criativo.
> 
> Sem mais
> []'s
> Itamar
> 
> 
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]