[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: |
Mon, 11 Jul 2016 13:14:31 -0300 |
Oi Julio,
Não tem problema. Ajudamos sempre quando podemos. Todos nós temos nossos
afazeres diários e a lista de discussão fica para as horas vagas. Desde
já agradeço sua ajuda - e eu também sei que eu escrevo muito texto, mas
sempre no intuito de ser entendido, e sem exageros :)
O getopts parece ser bem interessante (lendo o link que você enviou),
mas eu percebi uma coisa: ele (aparentemente) trabalha somente com
parâmetros de uma letra só (<hífen><letra>), correto? Com ele não seria
possível utilizar a forma
<hífen><hífen><palavra-ou-[expressão-com-hífen]>?
De qualquer forma, achei bem interessante e vou:
- estudar mais o assunto e;
- tentar criar uma proposta-exemplo com essa ideia
em seguida apresento para a lista (junto as demais propostas-exemplo que
ainda estou devendo apresentar).
Um abraço.
Rodrigo
On Mon, 2016-07-11 at 11:02 -0300, 'Julio C. Neves'
address@hidden [shell-script] wrote:
>
> Rodrigo,
> Qdo o e-mail com a dúvida é muito grande e meu tempo muito pequeno, só
> leio o que interessa. Agora, conseguindo ler um pouco mais do assunto,
> estou vendo que o case não me parece ser o mais aconselhável. Dá uma
> olhadinha nisso aqui [1] e veja se não lhe interessa.
>
>
> [1]
> - http://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo010#Comando_getopts
>
> Abcs,
> Julio
> @juliobash
>
> Próximos cursos de Shell
> Cidade Local Período
>
>
> São Paulo 4Linux 25
> -29/07
>
> Dou treinamento de Shell em qualquer cidade.
>
> Para mais detalhes, me mande um e-mail.
> >
>
>
> Em 11 de julho de 2016 00:09, Rodrigo Amorim Ferreira | CODECOMMUNITY
> address@hidden [shell-script]
> <address@hidden> escreveu:
>
> Oi Pessoal,
>
> Acho que consegui uma forma de resolver o meu problema e
> manter o código
> o mais "fácil" e "legível" possível para esse SCMS por linha
> de comando
> que estou tentando criar.
>
> O problema é que essa ideia pode parecer insana (ou mesmo
> herética), já
> que eu não resolvi o problema do identificador de parâmetros
> (para saber
> como o programa vai agir) utilizando o CASE, mas sim com o IF
> (ELIF)n
> ELSE :D
>
> Dessa forma posso expandir todas as opções de linha de comando
> do
> programa, das que tem menor quantidade de parâmetros até as
> que contêm
> maior quantidade de parâmetros, tudo no mesmo nível, sem
> precisar
> aninhar nada.
>
> NOTA: Peço que, antes de jogarem pedras (ou me atirarem na
> fogueira)
> deem uma olhada no exemplo ilustrativo abaixo e teçam seus
> comentários
> (e me deem tempo para me esconder...):
>
> #!/bin/bash
>
> # SCMS (ainda sem nome)
> #
> # - Inicia pelos comandos com menor quantidade de parâmetros,
> até os
> # que possuem maior quantidade de parâmetros (apenas por
> questão de
> # lógica e organização do código).
> #
> # - Força o usuário a digitar as opções na ordem correta no
> intuito
> # de pensar em [projetos > subprojetos > arquivos] como uma
> forma de
> # superconjunto.
> #
> # - A título de explicação para esse exemplo simples, a
> especificação
> # de cada comando está na saída (echo) de cada condição.
> #
> # - Exemplo apenas ilustrativo para avaliação da proposta de
> uso do
> # IF (ELIF)n ELSE ao invés de CASE para identificar todos os
> # parâmetros e suas respectivas ordens digitadas na linha de
> # comando.
> #
>
> if [[ "${1}" == "-p" ]] || [[ "${1}" == "--project" ]] &&
> [[ -z "${2}"
> ]]
> then
> echo "OPÇÃO: Lista informações sobre todos os projetos
> existentes"
> echo "FORMA: <programa> -p, --project"
> echo "DIGITADO: $(basename ${0}) $1"
> elif [[ "${1}" == "-p" ]] || [[ "${1}" == "--project" ]] &&
> [[ ! -z
> "${2}" ]] && [[ ${3} == "-s" ]] || [[ "${3}" == "--subproject"
> ]] &&
> [[ ! -z "${4}" ]] && [[ -z "${5}" ]]
> then
> echo "OPÇÃO: Lista informações sobre o subprojeto $4"
> echo "FORMA: <programa> -p, --project PROJECT -s, --subproject
> SUBPROJECT"
> echo "DIGITADO: $(basename ${0}) $1 $2 $3 $4"
> elif [[ "${1}" == "-p" ]] || [[ "${1}" == "--project" ]] &&
> [[ ! -z
> "${2}" ]] && [[ ${3} == "-s" ]] || [[ "${3}" == "--subproject"
> ]] &&
> [[ ! -z "${4}" ]] && [[ "${5}" == "-F" ]] || [[ "${5}" ==
> "--Framework"
> ]] && [[ ! -z "${6}" ]]
> then
> echo "OPÇÃO: Associa o Framework $6 ao Subprojeto $4"
> echo "FORMA: <programa> -p, --project PROJECT -s, --subproject
> SUBPROJECT -F, --Framework FRAMEWORK"
> echo "DIGITADO: $(basename ${0}) $1 $2 $3 $4 $5 $6"
> else
> echo "RTFM :D"
> fi
>
> PERGUNTAS
>
> - O que acharam?
> - Vale a pena continuar dessa forma, ou essa não seria a
> maneira mais
> adequada de resolver esse problema?
> - E, se é "errado" (leia-se: amador) fazer as coisas desse
> jeito, qual
> seria a forma mais interessante de resolver esse problema
> mantendo um
> nível igual ou maior de legibilidade de código (inclusive para
> manutenção)?
>
> NOTA: Tenham em mente que a quantidade de possibilidades de
> comandos
> para esse projeto é (possivelmente) enorme.
>
> Realmente, quero tentar fazer esse programa da melhor forma
> possível e
> sei que vocês tem ótimas opiniões e ideias sobre o assunto.
>
> Desde já agradeço a ajuda.
>
> Um abraço.
>
> Rodrigo
>
> On Sat, 2016-07-09 at 20:25 -0300, Rodrigo Amorim Ferreira |
> CODECOMMUNITY wrote:
> > OI Itamar,
> >
> > Não se preocupe. Na minha opinião nunca é crítica, e esse
> tipo de
> > retorno sempre será bem vindo.
> >
> > E, Não! Não visitei esse site ainda. Mas, Sim! Antes de
> decidir (tentar)
> > fazer um SCMS por minha própria conta, andei avaliando
> diversos outros
> > projetos que encontrei "Internet à fora" :D (mas nem de
> longe todos,
> > apenas os que mais se destacavam na comunidade).
> >
> > Eu também estava restrito a um número fixo de linguagens de
> programação
> > utilizadas para o desenvolvimento dessas ferramentas e sabia
> que não
> > poderia querer mexer em qualquer coisa, em qualquer
> linguagem. As
> > linguagens de programação em que eu "me garanto" são bem
> poucas, o que
> > torna o universo de escolha bastante limitado...
> >
> > E dos poucos que eu encontrei, eu achei que o trabalho que
> iria dar para
> > alterá-los para as minhas necessidades seria (aparentemente)
> maior do
> > que um construído do zero (nem que seja em
> > prestações-a-perder-de-vista).
> >
> > PONTOS (POSSIVELMENTE) NEGATIVOS
> >
> > [Geração de Código]
> >
> > Muito do que me importa em um SCMS é a maneira que ele
> constrói as
> > páginas, como ele monta o código HTML e suas diversas
> opções, seu grau
> > de refinamento, o que é difícil de encontrar em muitos
> projetos.
> >
> > [Construção de Código]
> >
> > Outro ponto que me afasta é o "mexer em código alheio". É
> raro você
> > encontrar código "semelhante" a sua maneira de construir
> programas, a
> > sua maneira de pensar como programar, a sua maneira de
> trabalhar (o que
> > você está tentando automatizar) e, rezar para que o mesmo
> seja o mínimo
> > possível de "macarrônico", e que possua o uso adequado de
> endentação e
> > comentários no código, fornecimento de documentação mínima,
> histórico de
> > modificações, bugs conhecidos, e assim por diante.
> >
> > Ainda nesse ponto, se o programa que você quer modificar -
> além de ter
> > uma abordagem diferente - estiver abaixo (ou,
> principalmente, acima) de
> > seu nível de programação, só irá complicar as coisas. Claro
> que é sempre
> > um desafio, mas... o tempo disponível também conta. E
> acredito que fazer
> > um fork e levar ele a sério também é muito trabalho.
> >
> > É importante destacar também que nesta vida já troquei
> muitas vezes de
> > ferramenta por problemas de customização, limitações, etc.
> >
> > [Projeto de Código]
> >
> > Outra coisa que sinto falta é da modularidade na construção
> dos projetos
> > de software, que permitam desenvolvimento e expansão
> contínuo sem muito
> > refactoring. Não necessariamente vemos isso nas opções de
> software
> > disponíveis.
> >
> > NOTA: Não estou querendo afirmar que sou um especialista em
> programação.
> > Longe disso! Acredito saber bem menos que muitos
> programadores mundo
> > afora, mas me preocupo desde o início com o código, no que
> se refere ao
> > crescimento do projeto e, principalmente, a quem vai colocar
> a mão nele
> > depois (seja um newbie ou um hacker).
> >
> > Por sinal, os livros do Aurélio (regexp e "shell avançado")
> e do Julio
> > (shell e "graphic shell") eu tenho ao meu lado para consulta
> a todo
> > momento :D Nem de longe estou com as versões atualizadas
> dessas
> > publicações, mas ainda sim são uma mão-na-roda por aqui. E
> como ultimo
> > recurso eu tenho a Internet e depois a lista de discussão :D
> >
> > PONTOS (POSSIVELMENTE) POSITIVOS
> >
> > [Nova Abordagem]
> >
> > Eu sei que por mais que a gente avalie um projeto e ache que
> ele será
> > "simples" de desenvolver, ele nunca será realmente simples.
> Eu também
> > sei que (possivelmente) terei muitas dores de cabeça -
> antes, durante e
> > depois de cada marco do projeto alcançado. Mas eu acredito
> que (para
> > esse projeto) tenho algumas ideias que tornarão o
> processamento de
> > automatização de sites algo muito mais simples e com
> possibilidades
> > muito maiores de expansão e refinamento que as alternativas
> disponíveis
> > (ou pelo menos do que eu consegui avaliar delas).
> >
> > Antes de mais nada quero deixar claro que isso não é
> pretensão de minha
> > parte. Vamos dizer apenas que me empolguei com algumas
> ideias que tive e
> > quero colocar elas para funcionar o quanto antes. Se der
> certo, ficarei
> > feliz. Mas é claro que posso estar redondamente enganado
> > (probabilisticamente falando, a chance é sempre maior para
> esse caso),
> > mas se isso for verdade só descobrirei mais para frente :D
> >
> > [Compressão de Conhecimento]
> >
> > Outra vantagem de se criar um projeto do zero é a carga de
> aprendizado,
> > comprimida, que adentra seu cérebro a cada hora de seu
> desenvolvimento.
> > Não somente código, mas também referente ao gerenciamento do
> projeto
> > como um todo. Ninguém em sã consciência sai programando do
> início ao fim
> > como se fosse uma corrida de bits. Um projeto precisa ser
> (muito bem)
> > planejado, antes, durante e depois do seu desenvolvimento
> (baseando-se
> > em marcos e versões).
> >
> > E quanto mais vezes você repete esse processo em projetos
> começados do
> > zero, mais bagagem você acumula simultaneamente em
> gerenciamento e em
> > programação.
> >
> > [Meu Caminho, Minha Velocidade]
> >
> > Uma outra vantagem é que, como (aparentemente) de início,
> esse projeto
> > só terá utilidade para minha pessoa, eu posso ir
> desenvolvendo minha
> > ideia aos poucos, sempre priorizando a automatização das
> funcionalidades
> > mais importantes para minhas necessidades emergenciais, e
> com o tempo ir
> > implementando as demais características consideradas
> não-críticas.
> >
> > Assim, eu tento dividir o meu processo de desenvolvimento
> (atualmente
> > manual) de SCMSs ao máximo, chegando a um possível módulo
> funcional
> > mínimo, e tento criar ferramentas de automatização dessas
> pequenas
> > etapas, de forma que seja possível uma futura interação
> entre esses
> > módulos dependendo da combinação utilizada.
> >
> > Espero que eu consiga... torça por mim! :D
> >
> > Um abraço.
> >
> > Rodrigo
> >
> > On Sat, 2016-07-09 at 13:36 -0700, address@hidden
> [shell-script]
> > wrote:
> > >
> > > Caro Rodrigo
> > >
> > > É muito interessante o seu projeto e a disposição em
> produzir um
> > > "Gerenciador de Sites Estáticos".
> > >
> > > Quanto ao escopo da lista acho que se encaixa sim, visto
> que pediu
> > > dicas de Shell Script e é bom saber que há um projeto
> assim em
> > > andamento com esse enfoque ou ao menos com um uso intenso.
> > >
> > > Mas sem querer criticar, apenas no objetivo de te dar uma
> nova
> > > perspectica já consultou algum CMS listado em StaticGen
> > >
> > >
> > >
> > > image
> > >
> > > StaticGen
> > > StaticGen
> > > is a
> > > leaderboard
> > > of the top
> > > open-source
> > > static site
> > > generators.
> > > Promoting a
> > > static
> > > approach to
> > > building
> > > websites.
> > >
> > > Visualizar
> > > em
> > > www.staticgen...
> > > Visualização pelo Yahoo
> > >
> > >
> > >
> > >
> > > Ou consultar o Axe em :
> > > Axe CMS
> > >
> > >
> > > image
> > >
> > > Axe CMS
> > > Gerenciador
> > > de conteúdo
> > > estático
> > >
> > > Visualizar
> > > em
> > > augustocampo...
> > > Visualização pelo Yahoo
> > >
> > >
> > >
> > >
> > > https://github.com/augustocc/axe
> > >
> > >
> > > São apenas sugestões que podem servir ou fornecer alguma
> idéia
> > > adicional ao seu projeto
> > >
> > > []'s
> > > Itamar
> > >
> > >
> > >
> >
> >
>
>
>
>
>
>
>
>
- Re: [shell-script] Re: Construção de CASE Complexa, (continued)
- Re: [shell-script] Re: Construção de CASE Complexa, Rodrigo Amorim Ferreira | CODECOMMUNITY, 2016/07/09
- Re: [shell-script] Re: Construção de CASE Complexa, Rodrigo Amorim Ferreira | CODECOMMUNITY, 2016/07/10
- Re: [shell-script] Re: Construção de CASE Complexa, itamarnet, 2016/07/11
- Re: [shell-script] Re: Construção de CASE Complexa, Rodrigo Amorim Ferreira | CODECOMMUNITY, 2016/07/11
- Re: [shell-script] Re: Construção de CASE Complexa, Christian Lyra, 2016/07/11
- Re: [shell-script] Re: Construção de CASE Complexa, Rodrigo Amorim Ferreira | CODECOMMUNITY, 2016/07/11
- Re: [shell-script] Re: Construção de CASE Complexa, phfbettega, 2016/07/11
- Re: [shell-script] Re: Construção de CASE Complexa, Rodrigo Amorim Ferreira | CODECOMMUNITY, 2016/07/11
- RES: [shell-script] Re: Construção de CASE Complexa, Igor, 2016/07/11
- Re: [shell-script] Re: Construção de CASE Complexa, Julio C. Neves, 2016/07/11
- Re: [shell-script] Re: Construção de CASE Complexa,
Rodrigo Amorim Ferreira | CODECOMMUNITY <=
Re: [shell-script] Construção de CASE Complexa, Tiago Peczenyj, 2016/07/09
Re: [shell-script] Construção de CASE Complexa, Julio C. Neves, 2016/07/09