[Cascavel-pm] Sort em array de hash.

Alceu R. de Freitas Jr. glasswalk3r em yahoo.com.br
Quarta Dezembro 7 10:06:00 PST 2005


--- Rod Za <rodzadra em yahoo.com> escreveu:

> 
> --- "Alceu R. de Freitas Jr."
> <glasswalk3r em yahoo.com.br> wrote:
> > Entendi. Eu vejo três formas de resolver o
> problema:
> > 
> > 1 - Você pega essa requisição do jeito que está e
> > trata os dados para ter o que precisa.
> > 
> > 2 - Você modifica a requisição para receber os
> dados
> > do jeito que quer.
> > 
> > 3 - Você usa essa requisição mesmo mas guarda os
> dados
> > num SGDB qualquer, como o SQLLite.
> > 
> > Eu usaria a 3a solução. A longo prazo, se você
> > precisar fazer outro tipo de ordenação usando os
> > relacionamentos existentes entre modelo, marca,
> etc...
> > você vai ter que quebrar a cabeça de novo. Se você
> > guardar isso num banco você faz uma query e
> retorna o
> > resultado.
> 
> Então, por enquanto estou utilizando a 1a. opção. A
> 2a. é possível também, mas vou usá-la como
> último recurso e a 3a. tem um problema no caso de
> alguém incluir um novo driver PPD que não seria
> reconhecido automaticamente. Logicamente este último
> poderia ser contornado se eu comparasse toda
> vez o número de PPDs com o número de registros de
> meu BD, mas não garantiria que o BD estaria
> atualizado - neste caso eu teria q fazer uma
> comparação a cada vez de todos os dados. :/

Se você amarrar o processo de inclusão de driver no
servidor com a inserção desse mesmo driver na sua base
local, aí seu problema está resolvi.

Chutando (e feio) que você instale um driver no CUPS
fazendo:
1 - cp driver.tar.gz algum-diretorio
2 - cat 'driver.tar.gz' > arquivo_mestre

Você só precisa fazer uma inserção depois no banco de
dados do sistema. Claro que isso está ficando
complicado de qualquer jeito. :-)

> Na verdade esses PPDs são arquivos textos q podem ou
> não estar comprimidos com GZIP. Eu poderia
> criar um parse facilmente para fazer uma varedura
> nestes arquivos e montar uma estrutura melhor,
> mas só se a minha aplicação estivesse rodando na
> própria máquina em que se encontra o CUPS. Eu
> estou justamente usando o protocolo IPP para pegar
> estas informações para correr disso. Assim
> posso ter uma máquina exclusiva para o CUPS enquanto
> as áreas administrativa e de usuários (CGI's)
> podem ficar em uma outra servidora web.

Você está querendo correr do problema mas ele está
correndo atrás de você até o servidor web. Se o IPP
não está sendo flexível, porque não criar um parse
desses arquivos, instalar um SGBD na máquina do CUPS e
fazer queries diretamente de lá? Você pode fazer as
atualizações depois via CRONTAB.

> Creio que sim, ela me retorna (quase que)
> perfeitamente o que preciso.  O único problema está
> sendo colocar em order crescente o nome dos modelos
> de impressoras que será apresentado na área
> administrativa.

É como eu lhe disse. Você pode usar do jeito que está
e fazer a ordenação. Acho apenas um trabalho pesado e
que provavelmente terá que ser refeito amanhã.

> > > Eu posso até ver se modifico o módulo IPP mas o
> > > problema é que já estava trabalhando com ele em
> > > outras partes do sistema... :(
> > 
> > Sinal de que você não está fazendo uma abstração
> > legal, certo? Você deveria poder mudar a origem
> dos
> > dados sem quebrar sua interface.
> 
> Na realidade não sei não. A verdade é que em uma
> parte do sistema eu recebo um outro HASH do
> módulo e trabalho nele. O formato é praticamente o
> mesmo, só que não tenho a necessidade de
> ordenar nada! :)

Não foi bem isso que eu quis dizer. Você deveria ter
uma classe abstrata que fornece os dados do jeito que
você precisa, usando uma interface previamente
definida. Como você vai obter esses dados depois não
implica em alterações nessa classe abstrata, à menos
que você precise alterar a interface.

Você pode até continuar recebendo o HASH, sem
problemas. Mas poderia ter um método
get_ordered_by_model(). Se esses dados vão ser obtidos
depois via SQL ou IPP, tanto faz.

> > Eu acho que estou mais atrapalhando do que
> ajudando no
> > final das contas. :-(
> 
> Tá nada, tá é tendo um saco bem grande para me
> ajudar e por isso eu te agradeço muito! :)

Que é isso! Está divertido! :-D

[]'s


Alceu Rodrigues de Freitas Junior
--------------------------------------
glasswalk3r em yahoo.com.br
http://www.imortais.cjb.net
-----------------------------------------------------------------------
A well-used door needs no oil on its hinges.
A swift-flowing stream does not grow stagnant.
Neither sound nor thoughts can travel through a vacuum.
Software rots if not used.
These are great mysteries -- The Tao Of Programming, 5.1


	



	
		
_______________________________________________________ 
Yahoo! doce lar. Faça do Yahoo! sua homepage. 
http://br.yahoo.com/homepageset.html 



Mais detalhes sobre a lista de discussão Cascavel-pm