English readers and other languages: Many posts are in portuguese, you can use the Translate button at left side.

Clique nas imagens dos artigos! Elas levam você para o site do artista que a criou e muitas
vezes tem assuntos relacionados ou outras imagens para expandir seus horizontes!
Mostrar mensagens com a etiqueta Software. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Software. Mostrar todas as mensagens

quinta-feira, 18 de julho de 2013

Software - Simplificação Inteligente é Trabalho do Desenvolvedor

As fotos mostram um belo exemplo de design bem bolado. 
Software bem feito também pode ser assim.
Multiplo by HeyTeam

Software - Simplificação Inteligente é Trabalho do Desenvolvedor
18/03/2010

Em resposta ao artigo "A Dificuldade da Simplificação", de Letícia Polydoro publicado no site Baguete. 

"Menos é mais. Esta sábia frase foi dita em 1919, por Mies van der Rohe, sintetizando a filosofia da renomada escola de design e arquitetura alemã Bauhaus que fez história. Que impacto teria essa frase dita por um arquiteto do século passado nas nossas empresas de tecnologia atuais?"


Meu comentário


Simplificar é agregar inteligência ao sistema. Acho muito oportuno os comentários sobre a tendência dos programadores, quanto a colocarem excesso de recursos de software numa mesma tela, ou num mesmo programa.

Excessos de mecanismos são prejudiciais, tanto quanto a falta de funcionalidade que observamos em muitos sistemas.

Um programa inteligente, ou que utilize conceitos de sistemas especialistas, deve ter previsão no seu funcionamento para executar, sem esperar pela solicitação do usuário, muito mais do que os tradicionais 10% a 20% (quando muito) do que a ampla maioria dos analistas e programadores fazem.

Infelizmente por aqui, o nível de requerimento das empresas para gerar bons resultados desenvolvendo recursos melhores para suas atividades fim (ou seja gerar lucro ao invés de só cuidar de economizar papel higiênico), costuma ser tão baixo quanto seu descaso em formação de equipes e estrutura adequada. Mas continuam gastando fortunas em propaganda para fingir que são modernas, mostrando até Ferraris quando só querem pagar por fusquinha para não gastar nem com água.
Não existe milagre no desenvolvimento de software profissional para gerar verdadeiros e bons resultados. E não adianta ficarem publicando aquela tantos estúpidos artigos sobre "falta de jovens talentos". Tradução: querem novatos sem experiência mas que sejam gênios de nascença (existe um a cada 10 milhões talvez) e com o poder de um deus e com salário de faxineiro. Por favor me desculpem os zeladores que cuidam de manter nossos ambientes limpos por favor.

Desenvolver com inteligência deve ser abrangente tanto em termos do que é o mínimo a fazer (nem isto vemos tantas vezes), seja otimizando a navegação entre campos, telas, etc., seja efetuando pré-processamentos, ou por outro lado, realizando uma grande quantidade de tarefas pela dedução (mecanismos de inferência) das atividades e passos complementares que o usuário vai realizar, o sistema deve fazer mais com menos.

Mas também, lembremos que fazer mais na interação com o usuário, também deve seguir um conceito de “menos é mais”. Eliminar interações desnecessárias, atuar como um expert na atividade que realiza, são atributos de um programa inteligente.

Uma interface bem feita é importantíssima. E fazer com que esta interface tenha um funcionamento de alto nível, é mais ainda.

Existe uma relação inversa entre cada recurso que o programa disponibiliza facilitando a vida do usuário e a quantidade de trabalho de programação necessária para criar seu funcionamento. Ou seja, quanto mais simples (e poderoso) para o usuário, a tendência é de que haverá muito mais trabalho para o programador.

Existe certa resistência entre trabalhar para criar soluções inteligentes de software, amigáveis ao usuário final e, desenvolver objetivando facilitar a vida do programador ou de usar aqueles recursos que este está interessado.

Devemos lembrar, nosso trabalho é para o usuário final, não para nós mesmos. Imagine um restaurante em que o cozinheiro tende a ignorar o gosto dos clientes, e impor seus gostos pessoais, mesmo que o restaurante acabe ficando quase vazio, ou que o pessoal da cozinha nem consiga limpar os pratos depois.

É importante interagir com os usuários para avaliar suas necessidades. Mas também, pela experiência, aprendemos que apenas reuniões não fornecem tudo que precisamos saber. Um certo distanciamento, como apenas estar por perto, observando o que os usuários realmente fazem quando estão por sua própria conta, fornece muitos pontos importantes.

Outra coisa importante de lembrar, é que o processamento faz parte da interface, tanto quanto quaisquer retornos fornecidos ao usuário. Uma mensagem de erro que não seja extremamente clara e precisa sobre o ponto e o que causou um problema, é inútil.
Inclusive, neste aspecto, tratamentos de erro devem ser inteligentes sim! Veja, voltando para o exemplo comparativo do restaurante, boa parte dos programas que vemos por aí, servem arroz queimado para o cliente. Se o cozinheiro viu isto, deve por sua própria conta preparar outro arroz, trocar os pratos e servir o cliente, e também avisá-lo sobre a demora se for o caso. Um programa razoavelmente bem feito tem que ter estas características.

Dá trabalho? Sim, dá muito trabalho. Mas este é o meu trabalho e a minha opinião. Eu não acredito em fazer “programinha” e tenho pavor de trabalhos sem um pingo de acabamento ou interfaces precárias. Acredito que nossa área é trabalhar na interação Homem X Máquina e que isto faz parte do processo de evolução social, econômica, científica, enfim, de tudo em que poderemos realizar e melhorar com a utilização dos computadores.

Nosso trabalho é criar boas soluções, dentro é claro, dos recursos disponíveis, mas que devem ser necessários para o que se pede. Não existe sistema de grátis, assim como nenhum restaurante distribui comida. Pode ser um sanduíche, mas pode ser bem feito e ter um guardanapo para acompanhar.
Se o cliente do restaurante deve pegar uma mesa, buscar as cadeiras, levar o pedido na cozinha, comer qualquer coisa que seja servida, ou então receber a comida numa dúzia de potinhos separados e ainda descobrir que é ele quem tem de lavar a louça porque o pessoal da cozinha não gosta, é algo de se pensar. Vemos isto acontecer em software a toda hora e é preciso melhorar. Temos excelentes exemplos no mercado internacional, e não estou falando das megacorporações de software.

E também é possível fazer tanto trabalho de forma simples. De que adianta tantos frameworks se isto não for usado justamente para otimizar a qualidade e a produtividade? A barbaridade que virou o uso da linguagem Java é um exemplo catastrófico de como conseguiram piorar toda experiência acumulada por décadas com o Cobol. Cada empresa tem uma "coisa" tipo framework de Java que não tem nada a ver com o resto. Todo mundo quer sentir-se importante inventando mais um framework apesar da solução já existir por toda parte. Mas não. O ego, a vaidade tem falado tão alto que é realmente uma temeridade olhar cada nova proposta na área. 
Não está na hora de pararem de reinventar a roda o tempo todo?

Mas mesmo assim, se usarem inteligência aquela coisa que faz parte do cérebro, (sim existe algo dentro da cabeça, acreditem), pode-se criar grandes resultados, com simplicidade. Mas é preciso pensar, estudar, aprender sobre interações humanas e empresariais, observar o mundo ao redor.

Um software simples de usar pode ser não tão trabalhoso de fazer. Mas se tiver que ser que seja, mas também, já como o alicerce para um próximo passo em que podemos utilizar aquilo que aprendemos e realizamos. Ou seja, um trabalho bem feito, mesmo que difícil, vai facilitar o que for feito depois.


.'.

quarta-feira, 27 de julho de 2011

Quem precisa de pirataria? O melhor software grátis para música

Free Minimoog and Arp 2600 Soft Synths
Foto: Matrixsynth
Quem precisa pirataria se tem ótimos softwares disponíveis para uso grátis?


Vai então uma super dica sobre os melhores software grátis para música.


Syntetizadores virtuais, pianos, VSTs, plugins, programas para gravar e editar, drums, efeitos, etc, etc, etc


No "Recording Forum" da Harmony Central, uma das maiores comunidades de músicos semi e profissionais do planeta, tem um tópico permanente dedicado a divulgar os melhores softwares grátis disponíveis.

Visite o fórum: "Who needs pirating...Best free stuff" (não precisa inscrição)

Lá tem praticamente de tudo que se possa imaginar, dos melhores softwares disponíveis em versões free.

E as avaliações são de profissionais de primeira linha, pessoal que usa estas ferramentas prá valer.

Altamente recomendado, vale a pena conferir:

"Who needs pirating...Best free stuff"


Divirtam-se!



terça-feira, 26 de abril de 2011

Oracle larga OpenOffice - Previsível

Previsto desde que surgiu o conceito de open source. Mais uma empresa larga um projeto que certamente tem seus problemas para se manter no mercado.

Será mais um tiro no pé da parcela comunidade Linux que acha que "outro alguém" paga a conta?

Software livre é até um conceito legal. QUANDO e QUANDO os seus usuários, principalmente as empresas, entendem e apoiam o seu desenvolvimento sabendo que ele é fruto do trabalho de muitos colaboradores.

Agora, quando empresas só querem as coisas de graça e acham ruim, ou até mesmo proibem seus funcionários de trabalharem algumas horas para ajudar na criação e manutenção do TAL software livre, a coisa vira piada.

E tem ainda, os muitos colaboradores, pelo menos por aqui, que são empregados concursados de empresas estatais, e que rendem longas homenagens ao software livre, principalmente porque não estão preocupados em gerar algum lucro que justifique seu salário.

É fácil SÓ usar as coisas de grátis, ou trabalhar de grátis quando são os OUTROS que pagam a conta.

A posição da Oracle era inevitável.


Meu comentário na matéria da revista Info: Oracle Abandona Projeto do OpenOffice de 20/Abril/2011.

Outsourcing ou Tráfico de Escravos Legalizado?

Sobre o sucateamento que os empresários tem feito com os profissionais de software locais, achando que "são muito espertos" fazendo contratações apenas pelo "menor preço", mesmo que seja para condições aviltantes.

Buscam terceirizar mas fazem isto jogando muitas vezes, seu patrimônio, suas empresas, praticamente no lixo pela falta de cuidado com que deixam tudo literalmente, "de qualquer jeito". 

Um dos casos que temos, é a contratação terceirizada de pessoal de outros países, como a Índia.

Realmente a comunidade indiana até possui alguns bons profissionais. E custam tão barato, tão barato que vale a pena trazê-los do outro lado do mundo. E as empresas provam diariamente que não se preocupam com eles, nem se deixaram família para traz. É como buscar retirantes de zonas de flagelo para se aproveitar do recurso "baratinho". Convivi com alguns e era terrível ver o seu sofrimento emocional longe de suas famílias e ainda assim, tentarem manter uma postura "profissional".
São seres humanos! Lembrem disto!


Sim, estou insinuando muito diretamente que esta exploração é um tipo de escravidão. Uma situação opressiva que também reflete no mercado local, em que os outros profissionais da área de tecnologia se vem frente a frente com propostas vergonhosas. É comum que hoje, pessoas em tarefas que não precisem este preparo, por exemplo, diaristas, tenham uma renda bruta mensal superior a programadores certificados em tecnologia de ponta. 

Sim, fazer faxina, ser encanador ou pedreiro gera uma renda muito melhor do que a vergonha que tantas empresas tem apresentado descaradamente.
E sinceramente, desejo que esta intenção destes, se volte contra eles, suas famílias e todos que amam para que sintam na pele o que é estar do outro lado enquanto apenas desfrutam de uma "boa fase". Que esta boa fase termine para eles. Infelizmente alguns depois vão culpar o governo, ao mesmo tempo que muitos destes que cito, também fizeram de tudo para corromper as estruturas sociais e estatais.

E quem são no caso do exemplo citado, estas pessoas que largam tudo e atravessam metade do planeta em troca de um salário miserável?


Eventualmente eu acesso sites de conteúdo técnico e descubro serem feito por indianos, e as vezes até tenho encontrado bom material, com boa organização e a pessoa realmente fez por merecer. São poucos. Muitos nem tanto na verdade. Tenho de concordar com vários colegas que notam que boa parte destes sites é pura cópia de outros. Sim, uma parcela enorme dos sites indianos são pura cópia do material de outros sites. Uma piada na área de software é que muitos destes aprendem as quatro operações da matemática básica, e sobre como usar CTRL-C+CTRL-V e prontamente aparecem com um blog sobre se apresentando como perito em física nuclear. Cansei de ver blogs assim e mais fácil ainda descobrir as fontes que copiaram. É só isto que tantas empresas contratam e o resultado, o mesmo de qualquer novato local mas custando muito mais.
Por favor, estou citando genericamente os indianos que são muito explorados, mas em referência a tantos asiáticos também.

Por outro lado, como é a vida da população indiana? Como é a vida da população chinesa?

Que opções de trabalho eles tem, além de se oferecerem de qualquer forma para quem aparecer com o dinheiro que precisam, mesmo que seja suficiente apenas para uma vida bem modesta, tipo uma única refeição por dia? Sim, tem muitas pessoas que se arrebentam todos dias trabalhando em área de alta tecnologia de software para ter um único prato de comida por dia.

Gente, por favor, ainda existe, e muito, indústrias em que os trabalhadores dormem dentro da fábrica, embaixo das máquinas. É comum a carga de trabalho de sete dias por semana, com (talvez) uma folga a cada quinze dias e olhe lá. E os turnos costumam ser de 12 horas. E isto não é só nas áreas de produção. A maioria da população indiana é de baixa renda. Podem aprender a atividades melhores, mas continuam vivendo mal.


O profissional indiano, asiático, etc recebe pouco porque precisa e não tem escolha.
É isto que queremos em nosso país? Alguns faturando muito em cima da miséria de outros?


Orientais em geral tem uma formação familiar e espiritual bem profunda. O chinês com sua maravilhosa cultura milenar tem conseguido coisas notáveis.  Mas a integração dos muitos mundos precisa evoluir para melhor de MAIS pessoas e não apenas de alguns poucos.


Estamos no Século XXI. A senzala virtual está aumentando. Ao invés de propiciarmos meios para melhorar a qualidade de vida das pessoas, vejo buscas para conseguir mais trabalho, por cada vez menos. Certificações CMMI? Quem usa isto em relação à ampla maioria do mercado? É que nem falarem de UML, Cobit, Scrum, etc. Usa-se muito na escola. Depois, dilui-se até sumir nas empresas que criam suas próprias metodologias.


Qual a realidade do mercado? Aquela que é conveniente para uns poucos?


Us$ 7.000 por ano, é o salário de muitos programadores brasileiros, qualificados, que tem família para sustentar e que, muito provavelmente, não pretendem ter o padrão de vida média dos indianos. Da mesma forma, acredito que os indianos trabalham sonhando com melhores dias, de terem uma renda mais digna.
Nos USA, ao que vi, o nível de pobreza está em cerca de Us$ 26.000 por ano!!! Quem recebe menos que isto é oficialmente pobre. 
A maioria das diariastas que conheço tem uma renda equivalente ou bastante superior a esta. Manicures também e não precisam tanto estudo diário.
É fácil entender porque até médicos formados vão para os USA e países da Europa para trabalharem como balconista, cuidar de crianças ou qualquer outra atividade e estarão fazendo muito mais do que aqui.

Ao mesmo tempo, os preços e margens finais de lucros dos grandes empresários são as mesmas que as lá de fora. Uhm?

Certamente, os pequenos empresários amargam muito com este mercado. Por que? Simplesmente porque na maioria das vezes seus fornecedores locais são exatamente os mesmos que não estão dando a mínima e só faturam em cima. Se perderem algum cliente, tem outros logo ali. São os donos do mercado e protegidos por leis de importação que até hoje servem só para promover a exclusividade de mercado.
O ex-presidente Fernando Collor, conseguiu acabar com algumas reservas de mercado, e é graças a ele que hoje podemos ter automóveis e computadores mais modernos. As indústrias patrocinaram para derrubar ele por causa disto, minha opinião. Antes era só lixo mesmo. Infelizmente não deu tempo para derrubar as tarifações absurdas que protegem o mercado dos oportunistas e continuam fazendo o famoso "Preço Brasil" onde provam qualquer coisa como lhes convém. Assim, o nosso "rico" consegue comprar um automóvel melhor, que qualquer trabalhador braçal nos USA e Europa consegue por muito menos de 1/3 do valor. A reserva de mercado não acabou em hipótese alguma.


E DUVIDO, realmente, DUVIDO, que com Us$ 7.000 por ano, o indiano consiga fazer todos os cursos e universidades que os mesmos que querem as coisas quase de graça, costumam pedir. É muito fácil jogar pedra no telhado dos outros, principalmente quando não tem que pagar a conta do próprio estrago.


O mercado globaliza-se até o ponto de perdermos a competitividade como nação, porque alguns não pensam melhor antes de sucatear as próprias raízes de sua empresa.


Se medidas como buscar profissionais noutros países, servirem para DESENVOLVER aquela região de forma justa, eu concordo. Senão, é apenas exploração de quem precisa, quase desesperadamente, de recursos.


Então, eu pergunto: SE MEXER para ONDE? Estamos aqui dizendo para as pessoas profissionalizarem-se, arcarem com custos e tudo o mais, indo em direção a serem capazes de produzir mais, para ganhar míseros Us$ 7.000 por ano?

Editado 2017: Falam em crise, 10-12% de desempregados e aproveitando para massacrar os outros 90% com isto! Vendas no comércio caindo 6% e fazendo escândalo ao mesmo tempo que os grandes continuam publicando lucros bem interessantes? Eu não vi nenhum dos grandes baixar o preço de seus produtos. Pelo contrário, no máximo aparecem ofertas de financiamento, em parceria com os bancos e seus imensos lucros também, mas sem baixar o preço de nada. No máximo, aproveitam para desovar estoques.



Pergunto: O mercado vai ser de quem conseguir explorar mais? Será que sempre vai haver esta fartura de mão de obra barata ou quem sabe, e acho mais provável, cada vez menos pessoas vão ter interesse nesta atividade, por deixar de trazer satisfação pessoal e profissional?


Software de qualidade NUNCA vai ser feito apenas com a utilização de novatos que custam baratinho. Qualquer produto de boa qualidade requer pessoas capacitadas. E pessoas capacitadas, não suportam indefinidamente situações que tem caracterizado a exploração, e repito, de uma senzala virtual.

Depois quando estas empresas quebram e são absorvidas pelo mercado Chinês ou outro assim, que estão usando capital pesado para forçar negociação, e citando um forte concorrente, ninguém quer ser lembrado sobre que são os próprios empresários estão atirando seus negócios no lixo, ou fronteira afora para qualquer um assumir. 


.'.

quinta-feira, 21 de outubro de 2010

25 Anos de Windows ou como fazer fogo!



25 anos de Windows, 25 anos de críticas.

Os fanáticos obsecados pelo Linux (que uso profissionalmente assim como Unix, todos os dias), que me desculpem, mas cada um tem suas vantagens. Defeitos ambos tem.


Vamos imaginar os procedimentos para fazer fogo, algo simples e que todos humanos precisam, mais ou menos algo assim:


Em Windows:

Passo a passo:

O programador já sabe que fogo precisa madeira, ignição, oxigênio, etc.

Cria um programa chamado FOGO.EXE.

Se for o caso, vai ter um INSTALADOR que coloca o programa pronto para rodar na sua máquina. Basta fazer o download (clicar num link nalgum site), ou copiar o arquivo INSTALADOR para a máquina. Depois é só clicar no INSTALADOR que ele deixa tudo pronto para rodar.

Para acender o fogo, basta então, clicar no ícone: FOGO. Pronto.


Em Linux:

Observação: É aquele famoso ambiente movido a muitas linhas de comandos e mais comandos de texto que tem de ser digitados.


Passo a passo:

Abrir a console. É aquela tela que imita os antigos métodos de entrada de dados, também conhecida como "tela preta". Se for uma das muitas versões do Linux que têm uma tela gráfica piora porque você tem que descobrir aonde está escondido o menu para abrir uma janela que vai imitar o velho método de entrada manual.

Digitar alguns comandos, mais ou menos parecidos com estes:

apt-get install gravetos
apt-get install troncos.gz
untar troncos.gz
...attrib +644x machado.sh

Nota: Com muita sorte, mas muita sorte mesmo, é só isto. Em boa parte das vezes você vai descobrir que faltam módulos e que são diferentes de uma versão do Linux para outra. Passe as próximas duas ou três horas pesquisando todo tipo de resposta absurda para resolver seu problema simples.

Finalmente instalado! Agora é só acender o fogo:


sh machado.sh -cp .\troncos .\lenha
mv gravetos .\fogueira
mv lenha .\fogueira
cron 1 0 0 5 5 soprar
fogo.sh -start -soprar
etc...


Repetir os passos de ignição, soprar, monitorar até que o fogo esteja aceso.



Os comandos podem mudar de acordo com a distribuição de Linux usada. Neste caso, consulte um dos milhares de tópicos perguntando a mesma coisa e que sugerem milhares de maneiras diferentes de fazer o que deveria ser a mesma coisa.


Quem vai acampar e quer curtir uma fogueira, sabe como é bom um simples isqueiro. Claro que no espírito aventureiro de Indiana Jones o passeio poderia ser na base de paus e pedras que soltam faíscas... (risos)

.'.

quinta-feira, 26 de agosto de 2010

Windows por Linux? Dinossauros evoluíram.

Foto: Richard Mayston

Enquanto alguns consideram tendenciosa, outros tem reações apaixonadas, outras bem embasadas.

Na minha humilde opinião pessoal gostei da matéria publicada na Computerworld, "5 fatores a serem analisados antes de trocar o Windows por Linux".

Aliás, achei ótima matéria. Em hipótese alguma tendenciosa, eu diria que é bem realista e sem argumentos do tipo político partidários em ano de eleição.

O Linux tem ótimas vantagens, favor ler outras excelentes matérias aqui da Computerworld. Quem acompanha a revista e o site verá que tem material de sobra.

Não existe sistema "de grátis". E muitas vezes, quem não tem dinheiro nem para monstar a máquina, muito menos terá para pagar o salário do profissional que passa anos em treinamento continuo para depois receber MENOS que uma diarista e ainda achar que está abafando. Claro que quem não tem "papi" que lhe sustente vai pensar um pouco diferente.

Tenho aqui servidores RISC (HP-UX), Linux e Windows. Manter Servidor WIndows e Linux prá mim custa a mesma coisa e precisa profissional capacitado para ambos. Se bem que em 99,99% das vezes, é muito mais prático, simples e objetivo instalar qualquer coisa em Windows. 99,99% das vezes, tem um instalador para Windows que faz tudo. Já no Linux, haja peripécias e muitas e muitas linhas de comando. Isto se você tiver a sorte de usar uma versão certificada que combine exatamente com que se quer instalar. E sem conexão de internet, pior. Pelo menos para Windows geralmente quando precisa, vem um CD junto, não tenho preguiça de apertar o botão da gaveta... (risos)

Pera aí, linha de comando? Isto é aquilo que nós usávamos ainda nos anos 80? Mas que barbaridade... depois eu que sou dinossauro. Olha, num passado remoto, trabalhamos até com cartões perfurados, mas não temos saudade nenhuma daquilo, e custa mais caro para a empresa se eu perder um tempão dando voltas em instalações (que são mesmo) precárias (até simplórias), cheias de incompatibilidades e remendos.

Se duvida, é só olhar os milhares de foruns em que o pessoal apresenta todo tipo de problema para instalar isto e aquilo. Tem coisas assim no Windows também? Claro que tem, mas não de nível tão primário (IMHO).

O Windows ainda tem coisas que podemos (eu disse podemos) fazer em linhas de comando, mas isto não é algo obrigatório. Eu trabalho nesta área por décadas e minha missão é otimizar a disponibilizar a interação Ser Humano X Máquina para geração de resultados, produtividade, auxiliar em processos, trazer qualidade de vida e EVOLUÇÃO. Custa muito caro quando paro de trabalhar para resolver coisas que já foram solucionadas no século passado.

Quando os desenvolvedores Linux tiverem menos preguiça e entregarem seus produtos com um instalador no mínimo decente, eu serei o primeiro a aplaudir mais esta excelente ferramenta que é o Linux, mas que infelizmente, as vezes é um grande s*co de se usar.

.'.

quarta-feira, 25 de agosto de 2010

Mais um opensource de peso pode cair.

Foto: Sputniko.com

"OpenSource é mais marketing de faculdade para não comprarem licenças.  -  Junior."

Comentário da matéria Não conte com a Oracle para manter vivo o OpenOffice do IdgNow!:

Utilizo opensource profissionalmente, mas achei muito oportuno e correto o comentário do colega Junior: "OpenSource é mais marketing de faculdade para não comprarem licenças." (Assim economizam a mesada do papi... risos...)

Aqui no Brasil, alguns dos maiores defensores e desenvolvedores do opensource e "gratisware" são funcionários de estatais, ou seja, não vivem disto e podem se dedicar ao desenvolvimento acadêmico.

Sobre os comentários a respeito do Java, que pode eventualmente deixar de ser pago, e neste caso dizem "é só mudar para outra linguagem", acho que é o típico comentário de quem só fez "programinhas" e não tem a menor idéia do que é refazer um sistema corporativo, projetos, trabalho de equipes grandes. Além dos custos, tempo e a chance de uma bagunça nos processos da empresa, e mais os prejuízos recorrentes, devem ser contados.

Java já se tornou um herdeiro do Cobol em termos de herança. Milhões de programas ficarão para a posteridade. Engraçado, dizem que Cobol está morto a trinta anos e agora também dizem que Java está morto.

Enquanto isto, meu investimento comprando licenças do Ms-Access faz uma década, para fazer o front-end de um sofisticado ERP para indústria do vestuário, parece ter sido acertado. É só conectar num servidor SQL de peso, SQL Server, Oracle, Sybase, etc e tenho estabilidade, suporte técnico, front-end de rápido desenvolvimento, a qualidade que pude criar com o imenso detalhamento de recursos que tenho com o VB e as APIs do Windows, etc. Coisa de quase 20 mil linhas de código específico para a atividade fim, sem ter que lidar (tanto) com coisas absolutamente básicas e banais. Além do ganho em produtividade, sei aonde estão os fornecedores da ferramenta 24hs por dia, sem ficar dependendo da boa vontade as vezes heróica, do trabalho voluntário de alguém.

Opensource é uma coisa boa sim, mas é necessário lembrar, que nada é grátis, nem na natureza.
.'.

terça-feira, 11 de maio de 2010

Cientistas ativam com sucesso um milhão de kernels linux como máquinas virtuais.

Achei no Flickr, essa matéria de Dezembro de 2009, mas que é de interesse:



Os cientistas de computação da Sandia, Ron Minnich e Don Rudish rodaram com sucesso mais de um milhão de kernels Linux como máquinas virtuais, uma realização que permitirá aos pesquisadores de segurança observar de forma mais efetiva o comportamento encontrado em botnets maliciosas. Eles utilizaram o cluster de supercomputação da Sandia para a demonstração. (Mais informações)"


Imaginem o que dá para fazer em termos de simulação de processamento distribuído num sistema destes?

Claro que estudar botnets já é um grande campo. Mas que tal, por exemplo, uma rede neural mais sofisticada? Um sistema de inteligência artificial com milhões processadores para inferências lógicas. Tratamento de imagens complexas. Uma Matrix com um milhão de personagens razoavelmente complexos. Ou quem sabe, a plataforma dos sonhos para jogos RPG e de ação usando cada uma das máquinas virtuais para controlar um determinado aspecto ou gerar situações de ambientes não comportadas nos atuais sistemas.

Se alguém lembrar do Holodeck do filme Star Trek um simulador de ambientes virtuais hiper-realista, não é mera coincidência.  Para quem gosta de ficção,  ver também Holodeck e Holosuite.




Foto cortesia de: Sandia National Laboratories.

quinta-feira, 1 de abril de 2010

Microsoft e Apple juntas lançam o novo sistema OS-V

Foto: Fabio Teles (Fabio Poeta)

A Microsoft e a Apple, gigantes do mercado de software parecem finalmente ter se entendido, resultando num novo sistema operacional que contém as características dos antigos sistemas.

Ver matéria na Computerworld: OS-Vista: Novo Sistema Operacional da Microsoft e Apple

OS-Vista: Novo Sistema Operacional da Microsoft e Apple

Gates e Jobs parecem confiantes no futuro.

Usuários Microsoft e Apple estariam revoltados.

terça-feira, 23 de fevereiro de 2010

Mitos sobre desenvolvedores de software mais velhos.

Cinco mitos difundidos sobre desenvolvedores de software mais velhos.

Interessante e bem embasado artigo de Dave Rodenbaugh

Five Pervasive Myths About Older Software Developers


Foto: Mike Pirnat

.'.

quarta-feira, 27 de janeiro de 2010

Alta Produtividade no Ms-Office/Access Para Quem Quer Lucro e Bons Resultados

Dog
Photo by Dominic - Austria


Alta Produtividade no Ms-Office/Access Para Quem Quer Lucro e Bons Resultados!


Faz tempo, o Ery Jardim escreveu uma matéria no Baguete sobre ser produtivo no pacote Ms-Office, treinamento, etc. Infelizmente vejo que mais uma vez o link não existe mais no site.



Minha opinião:

Começando pelos tostões, para quem só pensa em migalhas. Desculpem, mas é o que parece tantas vezes.

É muito comum ver alguns questionando a Microsoft, aliás qualquer uma que cobre pelo seus sistemas, começando geralmente pelo famoso argumento sobre não ser "de grátis", ou que isto e aquilo. E pior ainda, que o Bill Gates ficou milionário. Claro que ficou! Mas gerou centenas de milhares de empregos e toda uma indústria que envolve milhões de pessoas no mundo todo. E você? A sua empresa quer criar algo verdadeiro, que tenha mérito e fazer dinheiro também? Então não critique o sucesso dos outros. Pode ter tantos outros argumentos, mas simplesmente porque não "é de grátis" não é nem um pouco razoável. A menos que você seja estelionatário ou seja sustentado pela família e não precise trabalhar ou, acha que dinheiro e sexo são pecados e não tem motivo algum para precisar trabalhar ou ter sexo na sua vida, apesar de ter nascido como fruto disto. Então faça um favor ao universo, vá viver da sua herança e pare agora mesmo de ler este artigo que é escrito para quem precisa e vive do seu trabalho. E não encha meu saco com comentários idiotas a respeito.

Muito raramente vejo algum outro argumento quanto aos recursos, a funcionalidade, a facilidade de uso, os inúmeros recursos muito avançados, o quão simples é manter uma instalação destas. E menos ainda eu vejo eles comentarem sobre quem é que pagou pela criação do software e máquinas que estão usando.
Pior ainda, quantas vezes já vi empresas que usam "software livre", um conceito muito bom e cujos resultados são feitos por toda comunidade de forma colaborativa, mas fazendo o oposto, obrigando seus funcionários a assinarem um termo impedindo os mesmos de compartilharem o que fizerem na plataforma de software live! Sim, não estou falando de algo relacionado ao negócio da empresa, mas das ferramentas que usam e supostamente teriam concordado com os termos da licença de uso. Por exemplo, se eu fizer uma melhoria para um dos editores texto do Linux, que seria algo que retribuiria parte do que estamos recebendo, por que eu não posso passar isto de volta? Isto foi um caso real meu.
Software livre para quem? Os espertalhões? Lamento, software livre é uma idéia colaborativa e se a sua empresa é daquelas que só sugam e nada devolvem, lamento, sabemos aonde vocês vão parar logo adiante: nas mãos de quem tem uma visão maior que a sua... o mercado dos que trabalham melhor do que vocês, seus concorrentes. Casos assim não faltam.

Eu pergunto qual a diferença entre usar um software qualquer para fazer apenas o básico do básico OU usar algo que tenha recursos decentes, para pelo menos trocar alguns documentos de forma decente com o mundo que está lá fora? Se você está satisfeito no fundo do quintal tudo que você precisa é alguma coisa para fazer uns papéis e colar na porta da geladeira na sua casa, tudo bem. Mas se pretende ser uma empresa de verdade, vai precisar trocar dados com o mundo, é necessário pensar melhor. Você pode usar software livre e paga profissionais altamente gabaritados e muito competentes para fazer tudo funcionar, ou você usa uma plataforma de software que também precisa de profissionais competentes, mas que estarão mais dedicados ao seu negócio.

Este não é mais um texto copiado da Microsoft. É minha vivência de software e de empresas, resultado de décadas, portanto, minha opinião pessoal.

The Peaceful Tree
Foto: Ronaldo F Cabuhat
Sou desenvolvedor sênior, e nestas décadas de atividades, uma das minhas ferramentas preferidas é o Ms-Access e a programação avançada com VBA (Visual Basic for Applications), que posso usar em todos módulos do MS-Office e aí sim ter acesso ao poderio de agilização que a suíte toda oferece.

Falo como usuário e como profissional. Preciso de recursos práticos, efetivos e eficazes, para desenvolver ferramentas de alta produtividade e com detalhamento muito grande de funções, incluindo mecanismos de inteligencia artificial, volume de dados, apresentação profissional, adaptação do processamento e suas interfaces com o usuário em tempo real, previsão de continuidade e de compatibilidade futuras. Fiz muitas coisas simples e também muito programas extremamente complexos, realmente muito "cabeludos", daqueles que muitos só ouvem falar a respeito e preferem evitar.

Que tal ter uma ferramenta para desenvolver um software de alta complexidade, focado para poucos usuários, com possibilidade de utilizar os mais rebuscados recursos computacionais, sem perder tempo em coisas básicas?

Pense um pouco nas diferenças de mercado e de nível dos usuários. Agora me responda por que o Ms-Access, o Ms-Excel e Ms-Word possuem funções de cálculo, obtenção de dados e formatação profissional altamente complexas além de ser possível acessar os mais rebuscados limites do sistema operacional? Só para bonito? Lamento, isso não é mercado para os palpiteiros peritos em games que gostam de pegar tudo pronto, de preferência uma cópia pirata baratinha. Lamento mesmo pela falta de conhecimento técnico e falta de profisionalismo.

Por exemplo, "Regressão Linear". Seu profissional de marketing sabe te falar sobre as vantagens disto sem ter que procurar no Google? Como é que ele calcula e te dá retorno das campanhas realizadas? Uhm? Isto é apenas uma de tantas funções do Ms-Excel.
Amplie um pouco e vamos para desenvolver Engenharia Operacional como PCP de produção de fábrica. Aí entra necessidades reais de programação e é preciso uma ferramenta sólida para isto. Ou para fazer algoritmos de inteligencia artificial para gerar modelagens de vestuário ou analisar Legislação Tributária. São exemplos pessoais em que usei todos estes recursos para empresas que sabiam o que precisavam.

Serviço profissional é feito por profissionais. Ponto. Tem seu preço mas também seu resultado. E verdadeiros gestores de empresa deveriam observar isto. É aí que vocês colocam a responsabilidade do capital da empresa? Falam mal do governo mas publicam todos dias anúncios de recrutamento que são a piada do século pelos mais absurdos ridículos? Tipo, pedem qualificação de décadas, incluindo até sistemas que só a NASA usa e experiência de 2-3 anos? É piada ou tem vergonha de dizer que sua empresa estará logo mais a venda para os asiáticos por tostões?
A culpa é sua caro gestor. Se você não sabe, busque ajuda de quem sabe. Se você ou alguém da sua família precisar num caso realmente sério, quem você escolhe, a vizinha fofoqueira, o balconista da farmácia, o estagiário de medicina ou um médico experiente? Lembre disto se algum familiar seu sofrer de uma doença grave. Tenho interesse pessoal, estudo e conheço outras áreas e posso dizer: um shamã pode fazer maravilhas por você, mas mas não vai reimplantar um braço arrancado num acidente. Cada área tem seus profissionais. Então por favor, menos conversa de bar e um pouco mais de raciocínio.

Nos Estados Unidos e Europa temos os maiores foruns com milhares profissionais de alto nível fazendo as coisas mais complexas nestas ferramentas. Muitos não são programadores. São usuários finais de nível avançado. O seu contabilista realmente sabe programar em Ms-Excel ou fica só nas formulas básicas, quanto muito se souber formatar a tela para uma apresentação melhor? Já pensou que treinamento é responsabilidade da empresa? Uhm? Pense nisto, pois vai receber muito mais do que isso possa custar.

Nosso ensino é claro precisa melhorar. E é o que move a máquina das nações. Mas sempre existirão os visionários, os empreendedores! Na virada dos anos 90-2000, quando começaram os chats, conheci uma americana que estudava linguagem C desde os 13 anos na escola, como parte do curso normal. Ela estava se preparando para ser veterinária e sabia mais sobre programação em C do que muitos programadores que conheci e do que é apresentado em nossas universidades ainda hoje.

É com este mercado que você quer competir?

Vemos debates do mais alto nível nestes forums internacionais sobre programação VBA usando estas ferramentas, acessando recursos que muitos pensam só existir em filmes de ficção pela nossa realidade comum. Boa parte deles não são profissionais de TI, mas contabilistas, engenheiros, médicos, etc.

Por exemplo, os modernos PCs possuem CPUs com multiplos processadores. Que tal planilhas em Excel que processam tantos dados, que são feitas para funcionar em modo multi-tarefa, isso mesmo.  Um exemplo que olhei, fazia o controle de uso do processador e abria tantas planilhas quanto possível limitadas pela capacidade da máquina e da conexão de internet para buscar os dados em outros lugares! Num teste a planilha abriu quase duzentas execuções em paralelo, usando ao máximo os recursos disponíveis.
Uhm? Sua empresa precisa de algo tipo big-data? Como é que vai fazer isso? Usar uma ferramenta monstruosa que precisa uma grande equipe para atender milhares de usuários ou desenvolver objetivamente com inteligência só para os que realmente precisam?

As áreas mais altas de gestão não precisam das mesmas estruturas que são mais adequadas a sistemas que terão milhares de usuários.

Ms-Access e VBA é a ferramenta para fazer comparativamente, tanto um automóvel popular quanto um esportivo do mais alto nível, sob encomenda. Ou um avião simples até um jato executivo. Se você precisa de uns poucos automóveis não precisa montar toda uma indústria automobilística. Nem precisa montar uma companhia aérea se precisa apenas de um jato de caça.



Use bem seus recursos, é isto que estou falando.


As áreas mais altas e especializadas funções precisam de sistemas que sejam detalhados, específicos.


Porque eu vou perder o meu e o seu tempo quando o que eu preciso é fazer uma solução que será usada por um diretor de empresa, um especialista nalguma área? Entende isto?

Digo, até mesmo algo realmente muito sofisticado e complexo.


Existem milhares de empresas que sabem disto.


Muitas usam para terem soluções e atender milhares de usuários, mas cada um usando apenas o que precisa. Entende isso? Pelo tempo que seria necessário para fazer um único aplicativo em Java por exemplo, muitos seriam feitos em Ms-Access e VBA.

Veja, não estou falando de aplicativos gigantes. Estou falando de uma ferramenta que permite soluções individualizadas por um custo muito menor e uma possibilidade técnica muito grande.


Eu posso fazer as coisas de várias formas:
- Mais fácil;
- Mais rápido;
- Mais detalhado;
- Mais automatizado;
- Mais recursos;
- Mais possibilidades de programação, da mais básica até o uso de recursos avançados próprios das melhores linguagens;
- Mais flexível, juntando tudo isto acima com a possibilidade de integração com outras suítes e mecanismos de bancos de dados, seja SQL Server, Sybase, Oracle, etc.
- Mais produtivo utilizando recursos de automação de desenvolvimento que atendem desde os requisitos de usuários novatos, até funcionalidades necessárias para programação avançada. Para o novato ou com pouco conhecimento, é uma suíte muito amigável. E para o profissional que precisa de recursos avançados e até acesso direto aos recursos internos do sistema operacional também é uma ferramenta que atende muito bem.



Cortar custos simplesmente é bobagem, desculpem a sinceridade. É preciso usar bem os recursos, aumentar a rentabilidade e o faturamento, lucrar mais e melhor.

O preço da licença e todos recursos e facilidades de uso custam muito menos no que o tempo e salários gastos para se tentar fazer o mesmo de outras maneiras. Na maior parte das vezes, a relação custo X benefício é absurdamente melhor. A menos que você só olhe quanto gasta por dia e não olhe o que vai economizar em pouco tempo mais. Casos não faltam.

Eu costumo repetir que as empresas que pensam apenas em cortar custos, estão fadadas ao fracasso cedo ou tarde. Claro que sempre é necessário usar bem recursos, veja a diferença. E é mais necessário ser criativo, produtivo, ter qualidade e produtividade. E isto não é possível quando se joga no lixo as suas melhores cabeças pensantes porque custam mais caro que um novato que não vai fazer sequer uma fração do serviço.
A menos é claro, que você queira ter uma daquelas muitas empresas com produto ruim, feito de qualquer jeito e azar dos clientes.

Lembram daquela marca líder no mercado, que por um tempo virou até sinônimo de qualidade? Cortaram custos, incluindo o custo de respeitar o cliente. Jogaram no lixo o que tinham e agora são o mesmo que qualquer outra lavadora, geladeira, etc.  Posso falar como cliente muito insatisfeito e conhecendo muitos outros.

Comparando com serviço de táxi, você pode comprar um carro sem bancos e colocar caixotes para economizar, e quando entrarem os passageiros, dar para eles uma lista de comandos dizendo como fazer para se segurarem e utilizarem os pedaços de corda que estão ali, para servir de cinto de segurança. Economia que vai favorecer só os concorrentes.
Este texto foi editado, então veja o caso do Uber. Carros novos, limpos e o aplicativo não dá margens a ser roubado pelo motorista que inventa voltas por ruas que tu não conhece. Quem realmente usa táxi em muitas grandes cidades e nunca foi roubado por um taxista atire a primeira pedra na própria mãe, seu filho ingrato e mentiroso! Respeite sua mãe pô! (risos)....

Claro que tem casos que vale a pena desenvolver em plataformas mais detalhadas, .Net, Java, Python, Ruby, ASP, PHP, etc,  o que for adequado. Com toda certeza é diferente desenvolver um sistema desktop dedicado para uns poucos usuários em relação a um outro que vai ter 10.000 usuários. Mas porque vou perder um mês inteiro fazendo, por exemplo, uma única tela baseada em Java e toda parte Web, se é possível fazer o mesmo numa fração do tempo em Ms-Access e, utilizar o resto do tempo para agregar recursos que vão trazer maior funcionalidade, detalhamento, qualidade e integridade para o usuário?

E também, lembre sempre que não existe uma ferramenta que sirva para tudo.

Como trabalho também com Linux, já utilizei Br-Office, OpenOffice e outros, é claro que nem tudo é portável, especialmente se na minha experiência, várias vezes vi duas instalações da mesma versão de uma destas ferramentas, apresentarem funcionamento diferente, especialmente quando preciso que acessem arquivos padrão do Ms-Word ou Ms-Excel. Qualquer um que tente enviar material formatado de um sistema para outro sabe muito bem que a coisa não funciona muito bem, e muitas vezes até nos mais simples detalhes, como os tipos de "Fontes" de caracteres. Melhor opção? Mande em PDF ou então reze muito para ninguém precisar editar o texto lá do outro lado.


Claro que são boas ferramentas, mas não são a mesma ferramenta. Já perdi a conta de quantas vezes tive que explicar para algum neófito muito entusiasmado que programação de uma ferramenta não é igual a outra e que não, não e não, banco de dados não é só fichário de video locadora que fazem na escola. Não dá para migrar direto um sistema Ms-Access com programação própria diretamente para estes pacotes, tem que fazer tudo de novo! Não existe milagre, exceto aquela da lábia de certos vendedores.

Sobre o comentário do colega, olha, faz muito tempo  que não vejo tela azul com problema que seja do Windows. Nestes últimos anos, eu vi mais travamentos (e certas "doideiras") e necessidade de reboot justamente nas máquinas Linux, geralmente por conta de mais um daqueles tantos parâmetros que o coitado do usuário tem que resolver de n-ésimas maneiras diferentes com linhas de comando. É só procurar "como se faz isto ou aquilo" nos muitos foruns e a quantidade de respostas diferentes totalmente sem sentido é de apavorar. Começa em "qual" das muitas versões de Linux indo diretamente a sugestões tão estrambólicas quanto possíveis na metodologia de "tentativa e chute".

Eu ainda tenho em 2016 um Pentium III, funcionando e que rodou Windows 98 e depois XP direto. Tela azul? Vou responder sobre o outro laptop mais moderno que "torrou" a placa mãe e o meu atual Intel I5. Já tive tela azul neles, sempre por problemas de hardware e também por causa do aplicativo bancário que dá problema adoidado, todo mundo reclama e sempre dá um jeito de bagunçar com o sistema. E sim, tenho ferramentas de diagnóstico profissional, mexo nisto desde 1976 então posso apontar o dedo. Pau do Windows pode até acontecer, mas geralmente é hardware ou software de terceiros. E claro, os piratinhas e seus games pirateados que vão dar pau em tudo. Leiam as mensagens nos foruns que vocês vão averiguar isto por vocês mesmos.
Claro que pode realmente acontecer um problema genuíno do Windows, e isto, muito raramente vi nestes anos todos. Não, por favor, não me beije Bill Gates. Gosto de você, mas um emprego honesto e muito bem pago podendo levar meus cachorros juntos já está bom. Sim, vocês pagam a mudança é claro. (risos).   

NOTA OFF-TOPIC: Adote um cachorro. Sempre que possível adote, não compre. É uma vida. Tenho quatro, de várias idades, todos resgatados por mim direto da rua. Se ele gostar de você, pode até dar um pouco de trabalho nos primeiros dias pois estão assustados com tudo que sofreram na rua e precisam de atenção e carinho até sentirem-se seguros e se adaptarem ao novo lar. Mas vale a pena! São como crianças. Ou vá até o canil da sua cidade ou algum abrigo de voluntários. Isso não tem preço. Serão seus melhores amigos. Uma dica que poucos lembram: muitas pessoas pensam em pegar filhotes de raças pequenas pensando em não ter "traumas anteriores". Uhm, estude sobre a raça antes disto! Geralmente vira-latas são mais dóceis do que tantas raças "bonitinhas". E também, com filhote você vai ter uns dois anos de muita energia ativa (e comendo tudo que enxergar na frente). E alguns são muito ativos! Hahahahahah. Então, pense um pouco, os velhinhos abandonados, só querem carinho, e vão gostar de estarem tranquilos apenas perto de você.


Vamos em frente.

Em termos de custos, manter uma instalação profissional Linux custa pelo menos, tanto quanto Windows, vai precisar de gente capacitada e, de uma documentação muito boa senão a herança certa vai ser a reinstalação quase geral só para que os herdeiros consigam se achar e saber como funciona a bagaça toda.
Em pequenas empresas, umas poucas dúzias de máquinas, isto vai custar caro.
Mas com certeza uma instalação destas com milhares de máquinas até pode valer a pena, assim você vai ter apenas uma dúzia de profissionais de suporte de alto nível e muito bem pagos senão o concorrente que paga melhor vai levar eles facilmente. Pelo menos no aspecto simples de ter sua rede funcionando, nada a ver com as soluções de software.

Portanto, faça as medidas. Instalar a rede e manter funcionando é uma coisa. Mas o software aplicativo necessário para sua empresa funcionar é outra coisa totalmente diferente.

Sr. Empresário entenda isto por favor: Linux e Windows são o sistema de base sobre o qual os aplicativos, os sistemas, o software que fazem sua empresa andar serão instalados e cada um tem diferentes formas de serem construídos. Alguns programas (vamos simplificar assim) serão os mesmos para milhares de pessoas usarem. Outros serão específicos para algumas áreas apenas. E ainda assim, alguns deverão ter relação com uma quantidade imensa de outros sistemas na sua empresa ou de seus clientes e fornecedores.

Então pense, que tal adotar uma solução barata, mas que seus clientes e fornecedores imediatamente terão problemas para usar porque todos eles usam uma plataforma diferente?
Ou que tal ver seu departamento de logistica prejudicado porque precisa de algo específico mas tem que lutar diariamente com alguma coisa que atende todo mundo, menos o que eles precisam?

Se eu usar a palavra prejuízo ajuda a entender? Ou tem que desenhar?

(Entra música suave de fundo).

Trabalhei com mainframes IBM, depois com Unix, gosto muito do Linux (quando tem uma equipe de suporte adequada). Mas enquanto o funcionamento pré-histórico para instalar a coisa mais básica do mundo for movida a muitas linhas de comando, sem ter um instalador no  mínimo decente, que já existe no Windows faz mais de vinte anos, eu vou manter minha preferência de usar melhor meu tempo, não desperdiçar trabalho com repetição injustificada de comandos quando o desenvolvedor do software, deveria ter sido um pouquinho só mais caprichoso e criado um arquivo chamado "Instalar".

E aquele editor VI do Unix/Linux? Usei muito. Assim como usei intensivamente o XEdit do ambiente VM/CMS nos mainframes IBM na década de 80. É um editor de texto mais do que pré-histórico e tem quem defenda isso. Até um amigo de quem gosto muito. Mas é como gostar de dirigir automóveis nos 50. Eu diria um hobby, Ok. Eu também gosto de órgãos Hammond, verdadeiros clássicos. Mas usar editor de linha para para trabalho profissional? Olha, eu sou um dinossauro da computação, mas não tenho saudade nenhuma de cartão perfurado! Quem é o dinossauro? Desde sempre desejei recursos melhores. Eu quero e faço questão de uar editores com recursos gráficos e versáteis. Cadê a produtividade em usar quinquilharia? Para mim, só curiosidade histórica ou hobby. Cada época teve sua tecnologia e editor de linha é coisa de antes dos anos 80, com os primeiros terminais de vídeo! Prove que sua mãe é virgem (respeitosamente num sentido figurado é claro) e eu mudo de opinião e até abro uma religião a respeito. Desculpa, mas sempre pensei em computação como sendo algo para ajudar a nossa evolução.

Voltando ao Office, recurso tem até demais. Aliás, como toda suíte Ms-Office, a maior parte não é sequer conhecida por aqui. Acho muito importante aprender e explorar suas potencialidades que certamente trarão muitos benefícios, mais produtividade e qualidade. Ou seja: lucro para sua empresa!
A Microsoft com muita frequência oferece palestras e cursos que mostram tudo isto. E os fóruns internacionais, onde são os  usuários que debatem, aprende-se muito.

Repito, melhor do que simplesmente cortar custos, é aumentar seu faturamento e rentabilidade utilizando bem os recursos.



Texto original em 27/01/2010. Editado em 03/06/2016.

.'.

Link para a matéria do Ery Jardim: Você é produtivo no pacote Office?

quarta-feira, 4 de novembro de 2009

Manifesto pelo Desenvolvimento Ágil de Software

Manifesto for Agile Software Development


Gostei desta e presto meu apoio:


Manifesto para Desenvolvimento Ágil de Software


Estamos descobrindo maneiras melhores de desenvolver
software, fazendo-o nós mesmos e ajudando outros a
fazerem o mesmo. Através deste trabalho, passamos a valorizar:

Indivíduos e interações mais que processos e ferramentas.

Software em funcionamento mais que documentação abrangente.

 Colaboração com o cliente mais que negociação de contratos.

Responder a mudanças mais que seguir um plano.
 
Ou seja, mesmo havendo valor nos itens à direita,
valorizamos mais os itens à esquerda.




Princípios por trás do Manifesto Ágil

Nós seguimos estes princípios:
  Nossa maior prioridade é satisfazer o cliente
através da entrega contínua e adiantada
de software com valor agregado. 


Mudanças nos requisitos são bem-vindas,
mesmo tardiamente no desenvolvimento.


Processos ágeis tiram vantagem das
mudanças visando vantagem competitiva para o cliente. 


Entregar frequentemente software funcionando,
de poucas semanas a poucos meses,
com preferência à menor escala de tempo. 


Pessoas de negócio e desenvolvedores devem trabalhar
diariamente em conjunto por todo o projeto. 


Construa projetos em torno de indivíduos motivados.

Dê a eles o ambiente e o suporte necessário
e confie neles para fazer o trabalho. 


O método mais eficiente e eficaz de transmitir
informações para e entre uma equipe de desenvolvimento
é através de conversa face a face. 


Software funcionando é a medida primária de progresso.
Os processos ágeis promovem desenvolvimento
sustentável. Os patrocinadores, desenvolvedores e
usuários devem ser capazes de manter um ritmo
constante indefinidamente. 


Contínua atenção à excelência técnica e bom design
aumenta a agilidade. 


Simplicidade--a arte de maximizar a quantidade de
trabalho não realizado--é essencial. 


As melhores arquiteturas, requisitos e designs
emergem de equipes auto-organizáveis. 


Em intervalos regulares, a equipe reflete sobre como
se tornar mais eficaz e então refina e ajusta seu
comportamento de acordo.




Site do manifesto: http://www.agilemanifesto.org

.'.

quinta-feira, 29 de outubro de 2009

Adicionar Hardware Não Compensa Software Lento

Relação de Amor e Ódio
Foto: Jay Murdock

Adicionar Hardware Não Compensa Software Lento
29/10/2009

Por causa da redução do preço do hardware ou limitações de desenvolvimento (tempo, experiência, etc), tornou-se prática comum colocar mais máquinas para compensar o fraco desempenho dos sistemas.

Além de maior consumo de energia e dos impactos ambientais, isto não significa tanta melhoria assim nos resultados.

"Você é programador? Quer fazer algo pelo meio ambiente e mesmo, fazer do mundo um lugar melhor? Então comece a otimizar seu código! - Jeff Atwood."


Simplesmente colocar mais equipamento tem sido a solução preferida ao invés de fazer o software rodar mais rápido com o hardware existente. Fazer mais com menos é uma regra importante a ser lembrada, tanto quanto a Lei de Wirth: "Software fica lento mais rápido do que o hardware acelera."

Como resultado, isto anula os ganhos com a Lei de Moore!!! O hardware fica mais rápido a cada 18 meses, mas o software dobra de tamanho, fica maior, mais lento.

Jeff Atwood sugere alguns passos para começar:
  1. Coloque hardware mais rápido e barato para o problema de performance.
  2. Se o aplicativo atingir sua meta de performance, pare por aí mesmo.
  3. Faça benchmarks para determinar aonde estão os problemas de performance do seu software.
  4. Analise e otimize as áreas que você identificou no passo anterior.
  5. Se agora o aplicativo atingir sua meta de performance, pare por aí mesmo.
  6. Volte ao passo 1.

Outra coisa importante a observar é quais aspectos otimizar, como por exemplo, a interação com o usuário. Um tempo de resposta de até um segundo é até aceitável. A partir de um segundo, isto já chama a atenção do usuário e pode começar a irritar. Se passar de dez segundos (máximo!), o usuário vai perder a linha de raciocínio e passar a fazer outras coisas enquanto espera.

Para grandes volumes de dados também existirão os aspectos de tempo de execução e da quantidade de volumes alocados durante o processamento, que certamente afeta outras tarefas que poderão estar sendo feitas.

Otimização de performance envolve mais testes e menos adivinhação. Quando se pensa numa escala de milhões de operações por segundo, qualquer detalhe pode ser importante. Mas também existem detalhes que tomam tempo e não valem a pena otimizar.

Com certeza, a otimização requer conhecimento efetivo e prática dos recursos e técnicas adotadas.

Pessoal com menos experiência vai ter melhores resultados se trabalhar em grupo e utilizarem intensos benchmarks para analisar cada porção do software.

E claro, isto vale para mim e para todos: Sempre estude. Procure aprender de quem sabe mais que você. Graças a internet, hoje alguns dos melhores programadores do planeta mantém sites, blogs, etc com um amplo conjunto de informações e código fonte que merecem ser cuidadosamente estudados.

Dica: soluções de estruturas de lógica, de "como fazer", podem ser feitas com diferentes linguagens, portanto, amplie seu foco de estudos. Como se diz faz décadas, basicamente "quase tudo são IFs e assinalamentos."

As vezes, descobre-se que seria mais desejável reescrever o software. Isto deve ser considerado quando:
  1. O código for efetivamente ruim ou mau feito;
  2. A solução atual puder ser realmente melhorada;
  3. Houver incompatibilidade na maneira que o código faz o processamento, em relação a algum outro recursos, normalmente externo.

E lembrando, muitas vezes o código é reescrito apenas porque o programador não entendeu o que foi feito. Geralmente falta estudar o código. Portanto, antes de qualquer coisa, estude o código e a solução de lógica adotada, conheça a ferramenta ou linguagem que está usando.

Soluções de automatização de performance, como as existentes nos gerenciadores de banco de dados e, em certas linguagens de programação, podem muitas vezes ser uma armadilha. As pessoas acham que o computador vai resolver sózinho o trabalho de melhorar a execução do código, mas esquecem completamente que isto vai ser feito de acordo com algumas regras padronizadas. Logo, com frequencia os resultados podem ser bem fracos em relação ao esperado.

Algum tempo atrás já comentei algumas coisas em relação a isto, citando casos bem reais, no tópico "Performance, quando a culpa não é do banco de dados".

Vamos continuar abordando este tema em posts futuros.

.'.

terça-feira, 27 de outubro de 2009

Defeitos dos profissionais de informática?

Computer Control Room
Imagem:
Ryudenki Tori Kamiya


A coisa que mais escuto, é que todo pessoal de informática fala uma língua que ninguém entende.

Todo mundo entende a língua de médicos, engenheiros, bruxas, economistas, cozinheiros, etc...

Mas as PESSOAS NÃO NOS ENTENDEM!!!

Discutimos numa língua esquisita que ninguém sabe.

Não acho que arrogância seja problema, isto tem em toda profissão.

Humildade? Tente conversar com pessoal da Odontologia ou de Comércio Exterior antes de questionar a imensa e profunda humildade de um profissional de informática!!!

Minha muito humilde opinião, é que temos um problema de IDIOMA. Isto mesmo.

Não nos comunicamos com os malucos dos usuários porque ELES não entendem NOSSO IDIOMA.

E olha que além de Inglês e Espanhol fluentes, tenho noções de alemão, francês e italiano.

Fazem anos alguém disse que depois da linguagem de programação, a linguagem mais usadas pelos programadores é a linguagem obscena.

O resto, meus defeitinhos pessoais, são coisinhas insignificantes, como meu perfeccionismo e detalhamento extremo, ler manual no banheiro, rede LAN em casa, licença QUENTE de Cobol, Clipper, Delphi, Visual Basic, Access, etc, gastar um tempão para que um programa seja completamente a prova de operador.

Convenhamos, fazer o programa aceitar clique do mouse fora do campo sem cancelar ou enlouquecer o processo é básico.

Eu confesso! O grande defeito, não é o profissional! É o USUÁRIO.

Colossus, HAL 9000 e outros, serão lembrados como mártires!



.'.

segunda-feira, 5 de outubro de 2009

Valor de ferramentas, terceirizações, produtividade, etc

"The minimum amount of knowledge required for the task to be carried out with an acceptable degree of success."
Foto Edward Bilodeau

Valor de ferramentas, terceirizações, produtividade, etc
05/10/2009

Revisando alguns posts, estava observando este, de 2003, em que debatiamos alternativas para continuidade de sistemas desenvolvidos em Clipper.

O resultado, foi que comentamos sobre qualidade de serviço, terceirizações, além é claro, sobre o valor das coisas.

Segue-se mais um post, que colocarei aqui mais tarde, para deixar claro que não estou dizendo que grátis é ruim, muito pelo contrário.

O que estou dizendo, é que tudo tem valor e devemos cuidar de como encaramos isto.


Esta mensagem foi postada no excelente fórum Clipper-Br do Yahoo Groups, dedicado a linguagem Clipper e linguagens do padrão xBase.


Data: Qui Jun 5, 2003 2:33 pm
Assunto: Re: X-HABOUR p/Gilberto

Carlos. escreveu:

porém vc não consegue desenvolver nenhum tipo de trabalho de alta
qualidade sem que ele receba críticas.

Pura verdade.

Sandro escreveu

objetos do xBase++. Inconvenientes do xBase++: é pago, caro e ....
.......

Ôôôpa!!!

Seguem meus comentários:


O fato de ser PAGO é justamente um critério que permite que as pessoas que estão trabalhando recebam pelo seu serviço e possam no mínimo sobreviver. ISTO É UMA QUESTÃO ÉTICA, que é justamente assegurar as pessoas que recebam uma justa renumeração pelo seu trabalho. Posições públicas de que este ou aquele software é ruim porque é "pago" induzem mais ainda, aos MAUS empresários, aos que tem visão "limitada" e aos espertalhões em geral, de que podem exigir que os outros trabalhem de graça ou por valores abusivamente baixos.

Caso você não saiba, hoje em dia muitas empresas oferecem serviço "temporário", sem nenhum vínculo legal, nem estabilidade, nem horas extras, pelo mesmo que se paga para, por exemplo, um cobrador de ônibus, que é também uma profissão digna como todas as outras.

Isto é muito ruim, pois as empresas PERDEM muito mais do que pensam ridiculamente estar economizando, pois trabalhadores temporários não geram algo importante que é conhecido por "CULTURA EMPRESARIAL".

O know-how vai embora todos os meses pelo ralo da economia mal feita.

Se você tirar o açúcar, o café fica uma droga né? Além disto, algums empresas além de fazer a nociva "economia de cafezinho", fazem pior, fazem "economia de água".

Alguns resultados disto:
  1. o conhecimento é perdido e tende a surgir uma desorganização constante. Mesmo pequenos padrões são difíceis de manter e perdem-se a cada mínima mudança na equipe.
  2. na sua maioria, os profissionais não vão fazer tudo que sabem ou poderiam;
  3. não se desenvolvem realmente muitas técnicas novas;
  4. não vai existir empenho nem motivação em alguém que sabe que vai ser descartado;
  5. é uma prática predatória, portanto, fatalmente vai extinguir sua fonte.

Ferramentas pagas, ajudam a lembrar aos seus usuários, que os técnicos também são pagos. E também que a formação técnica, como treinamento, atualização e disponibilidade de recursos para aprendizado é responsabilidade das empresas e não apenas dos funcionários. Ou por acaso alguém é maluco para comprar por conta própria uma instalação completa de algum DB só para aprender como funciona e depois dar "de grátis" para empresas que não valorizam o trabalham e pagam mal?

Grandes empresas migram para Linux e outras ferramentas, porque é "de grátis". Depois seus diretores compram um terno Giorgi Armani novinho, fazem declarações modernistas lindas de morrer (de rir) na revista Info, Exame, ComputerWorld, etc enquanto reduzem o salário e despedem programadores e analistas achando que eles também devem trabalhar de graça.

Minha posição sobre software "de grátis" é amplamente pública: 
Se não tiver alguma renumeração DIGNA para quem faz e quem mantém SOU CONTRA. 
 
Isto inclui xHarbour, Linux e tudo o mais. Tudo bem que existam alguns laboratórios com "alguma" verba governamental, mas daí a não terem uma responsabilidade de gerar resultados reais, ou seja, gerar seus próprio sustento, acho muito preocupante.

Sabem por que nos países desenvolvidos Empresários (com "E" maiúsculo) investem pesado em projetos e pagam bem suas equipes?

Simplesmente porque vivem do que fazem e seus projetos visam lucro e desenvolvimento de empresas.

Quem é que vai fazer algo assim se a empresa que trabalha não precisar gerar lucro nenhum? Se o café da manhã sempre for servido na cama, a pessoa nem se levanta mais e suas pernas atrofiam.

E não, note bem, não tenho dinheiro para pagar por todas licenças de software que gostaria de ter, por isto:
  1. uso só as que posso.
  2. uso as que estão compartilhadas no mercado e que servem também como promoção de seus autores. Está de uso corrente uma versão limitada que é free e outra que é paga, o que ajuda a manter o negócio andando.
  3. sempre presto créditos a tudo que uso. É o mínimo que posso fazerpara retribuir.
  4. considero que parte de meu trabalho assalariado é ajudar a manter estas ferramentas. Ou seja, a empresa me paga para prestar colaboração no mercado.

Foto: PaDumBumPsh

Uma coisa é termos ferramentas elaboradas com a participação de milhares de pessoas, em regime de colaboração e assistência mútua, levando ao crescimento coletivo.

Agora, outra coisa totalmente diferente é alguém dedicar-se em tempo integral para algo que é entregue sem qualquer renumeração. Vai viver de que? Papai e mamãe vão sustentar toda vida? Empreguinho que titio e padrinho querido arrumaram passando por cima de todo mundo?

Veja, nem todo mundo tem a possibilidade de estar, por exemplo, literalmente "mamando" numa empresa estatal para sair por ai fazendo propaganda do software livre, quando tem seus salários gordinhos assegurados por conta de impostos cobrados das empresas (coitadas) que tem de vender e (conseguir) receber pelos seus trabalhos. Além do que, estando assegurados pelo concurso público, alguns não se importam em tratar realmente mal os coitados dos clientes que eventualmente a empresa tenha. Qualquer problema, o governo paga a conta (ou seja os impostos cobrados...)
Claro que boa parte do pessoal do funcionalismo público é boa gente, mas não sou cretino para negar que o lixo continua todinho lá, atrapalhando quem tenta trabalhar direito.

Por favor, sugiro que repense nestas palavras, pois eu realmente não posso trabalhar de graça para ninguém. Cada vez que faço isto, a energia elétrica é cortada, falta comida na minha geladeira, eu não posso comprar sequer um sapato.

Eu adoro ensinar as coisas que sei, colaborar com os demais e me entusiasmo ao desenvolver coisas novas e sofisticadas, mas de graça, eu só mostro uma fração do que sei e posso fazer. Colaboro aonde posso, mas tenho sempre a visão de que este é meu trabalho, minha fonte de sustento, portanto, preciso fazer  propaganda e mostrar um pouco do que faço para os demais.

Quanto a ser caro, tem preço para tudo. Já comentei uma frase que vi na correspondência de uma grande empresa estrangeira que explicava que:
 "a BMW não baixa o preço se você só tem dinheiro para comprar um Chevette."


Nota:
Meus comentários são minha opinião e não refletem opiniões e/ou ideais do meu empregador.



.'.

quarta-feira, 23 de setembro de 2009

Sun mantém MySql e Sparc

A Oracle, enquanto espera a analise da Comissão Européia sobre o impacto compra da Sun e como isto vai afetar o mercado de banco de dados avisa que vai manter o MySql, pois são produtos que não competem.

Larry Ellison, CEO da Oracle CEO disse que a competição é com o IBM DB2, Microsoft SQL Server, Sybase e outros. São mercados diferentes, disse.

Também foi noticiado que a plataforma SPARC receberá investimentos.

Até a liberação pela Comissão Européia, a Oracle declara estar perdendo milhões todos os meses em negócios. Enquanto isto, IBM e HP aproveitam.

Veja matéria sobre o assunto em:Oracle Will Not Spin Off MySql

quinta-feira, 17 de setembro de 2009

Converter String vazia para Long em Java

Referência:
Java Error in tMap

Java não converte uma string vazia para long de forma automática.
Para isto, pode-se usar um bloco try/catch como esse:

String stringValue = "";
long longValue = -1;
try {
longValue = Long.parseLong(stringValue);
} catch (NumberFormatException e) {
longValue = 0;
}
System.out.println(longValue);

quarta-feira, 2 de setembro de 2009

Performance: Quando A Culpa Não é do Banco de Dados

The IBM Stretch supercomputer.




Credit: IBM

Performance: Quando A Culpa Não é do Banco de Dados
02/09/2009

Otizimizando a performance em SQL com Join e Subquerys


Com frequência temos casos em que uma determinada seleção de registros, apesar de parecer atender as necessidades iniciais, não é satisfatória devido a demora do processamento.

Uma das causas, é pela utilização apenas de dados de teste, em tabelas pequenas. Com isto, o tempo real de execução deixa de ser avaliado e, como resultado, o coitado do DBA vai ter que ouvir mais uma vez que “minha Select funcionou, então é o banco de dados é que tem problema”. Ou então, será alegado culpa do usuário...

Mas existem muitas diferenças entre simplesmente “funcionar”, e funcionar de forma eficiente.

A complexidade de uma seleção de dados, vai levar em conta, o tempo de que dispomos para sua codificação é claro, mas também, é preciso ponderar no ganho de tempo, mesmo na fase de testes com dados reais, e os recursos utilizados em produção. Na maior parte das vezes, o tempo ganho estudando a otimização compensa largamente e geralmente diminui o tempo de programação e testes.

Outra falha, é confiar excessivamente nos recursos de otimização automática dos gerenciadores de banco de dados. Nem sempre estes farão a melhor escolha. Como por exemplo, ao avaliar a disponibilidade de outros índices, neste caso, mudando as chaves de seleção de alguma forma, que poderá ter um impacto significante. Também a hierarquia como serão processadas as condições de seleção e até mesmo, transferir parte dos recursos para outra tabela, ainda assim de forma mais eficiente no resultado geral, pelo aproveitamento de dados em cache.

Tomei para este exemplo, uma seleção de dados numa tabela real, mudando é claro os nomes para o exemplo, com cerca de 60 milhões de registros de movimentos relativos a um conjunto de setores, relacionadas noutra tabela.

Esta transação é utilizada com frequência numa consulta pelo usuário final, a nível de direção da empresa, mas demorava no mínimo absurdos 40 minutos em ambiente de produção. Em horários de pico chegava a 2 horas! Imagine algué da diretoria precisando tomar decisões de enorme valor financeiro e tendo que esperar este tempo todo! Certamente era desejável obter uma boa performance.

É importante observar, que mesmo que fosse o caso de um programa de execução única ou eventual, a enorme perda de tempo durante a fase de testes compensa largamente que se faça um código melhor.
Veja bem: como é que vou trabalhar se entre um teste e outro preciso esperar horas? Estamos no Século XXI, é hora das coisas funcionarem melhor e serem melhor feitas. 
Desta forma, teremos nosso trabalho pronto mais rápido, e também, estaremos economizando os recursos do sistema e da empresa que também são utilizados pelos demais usuários.
E também muito importante, é lembrar que geralmente, não teremos exclusividade de uso do servidor. Existem outros programas disputando recursos. No caso do exemplo atual, eram mais de 5000 estações fazendo todo tipo de transação acessando exatamente a tabela principal desta pesquisa, além de uma grande quantidade de processamento batch realmente volumosos.

O sistema gerenciador de banco de dados (SGBD) neste caso, era o Sybase AES (Adaptative Server Enterprise) 12.5. Usei os comandos sp_showplan e sp_statistics para listar resumos das execuções.
Os conceitos aqui mostrados servem para qualquer outro SGBD Relacional, como Oracle, Sql Server, etc.


A Select original que está abaixo, vai retornar a soma para quatro condições diferentes em cada setor existente.
Para nosso exemplo temos duas tabelas: Setores e Movimentos. Precisamos selecionar os Setores de Tipo = 'X', e os movimentos dentro de um periodo de datas, que tenham um determinado CodigoTeste igual ou diferente de zero e, que poderá ter uma segunda condição a ser testada. Ainda, precisamos o total geral de registros.

Neste modelo, em que a tabela de setores é a principal, simplesmente fizeram quatro varreduras na tabela de movimentos para cada um dos setores dentro do período selecionado. Uma leitura para cada um dos campos a ser somado! O tempo de execução foi obviamente bastante longo.

Logo abaixo estão as estatísticas de execução.

Select Original:

select Setores.codigoSetor,
       (select count(*) from Movimentos b
               where Setores.codigoSetor = b.codigoSetor and
                     dataOperacao between '04/01/2009' and '04/30/2009'),
       (select count(*) from Movimentos c
               where Setores.codigoSetor = c.codigoSetor and
                     dataOperacao between '04/01/2009' and '04/30/2009' and
                     codigoFlagTeste 0),
       (select count(*) from Movimentos d
               where Setores.codigoSetor = d.codigoSetor and
                     dataOperacao between '04/01/2009' and '04/30/2009' and
                     codigoFlagTeste = 0 and tipoABCDE in (1, 2, 3, 4)),
       (select count(*) from Movimentos e
               where Setores.codigoSetor = e.codigoSetor and
                     dataOperacao between '04/01/2009' and '04/30/2009' and
                     codigoFlagTeste = 0 and tipoABCDE not in (1, 2, 3, 4))
  from Setores (index indiceSetores01)
  where (tipoSetor = 'X' or Setores.codigoSetor = 999)
  order by Setores.codigoSetor


Estatística da Execução:
----------------------------------
Table: Movimentos scan count 121, logical reads: (regular=124152 apf=0 total=124152), physical reads: (regular=1129 apf=123023 total=124152), apf IOs used=123023

Table: Movimentos scan count 121, logical reads: (regular=6949399 apf=10100 total=6959499), physical reads: (regular=843310 apf=5103725 total=5947035), apf IOs used=5090713

Table: Movimentos scan count 121, logical reads: (regular=1003943 apf=2237 total=1006180), physical reads: (regular=37563 apf=261910 total=299473), apf IOs used=262198

Table: Movimentos scan count 121, logical reads: (regular=1003943 apf=0 total=1003943), physical reads: (regular=0 apf=0 total=0), apf IOs used=0

Table: Setores scan count 1, logical reads: (regular=51 apf=0 total=51), physical reads: (regular=47 apf=16 total=63), apf IOs used=1


===> Total actual I/O cost for this command: 132.860.664... !!!
Total writes for this command: 125

Execution Time 749.
SQL Server cpu time: 74900 ms. SQL Server elapsed time: 1.471.296 ms.

(121 rows affected)
----------------------------------


Vemos que houve um processamento bastante repetitivo e bem pesado. Para cada linha selecionada na tabela Setores, são feitos quatro leituras na tabela de Movimentos, que neste caso, pelo menos tinha um Indice por data. Mas ainda assim, é demais.

Podemos melhorar isto em duas partes principais.
  1. Fazer apenas um ciclo de leitura na tabela de Movimentos eliminando as subconsultas. 
  2. Otimizar a forma como vamos validar quais código de setor serão validados.

Para aproveitar melhor o ciclo de leitura, fazendo a contagem das condições que precisamos verificar, utilizamos o comando CASE WHEN, que é semelhante a do SQL Server. A maioria dos SGBDs possui uma condição de critério.
A tabela de Movimentos passa a ser o principal e não mais o de Setores, também temos no mesmo um índice por setor e data.
E usamos o Join que não era usado!

Assim teremos:

  select codigoSetor, count(*),
        sum ( case
                when b.codigoFlagTeste 0 then 1 else 0 end ),
        sum ( case
                when b.codigoFlagTeste = 0 and
                     tipoABCDE in (1, 2, 3, 4) then 1 else 0 end ),
        sum ( case
                when b.codigoFlagTeste = 0 and
                     tipoABCDE not in (1, 2, 3, 4) then 1 else 0 end )
   from Movimentos b
   join Setores (index indiceSetores01)
     on Setores.codigoSetor = b.codigoSetor
   where dataOperacao between '04/01/2009' and '04/30/2009' and
        (tipoSetor = 'X' or Setores.codigoSetor = 999)
   group by codigoSetor
  

Estatística da Execução:
----------------------------------
Table: Movimentos scan count 1, logical reads: (regular=60523 apf=53 total=60576), physical reads: (regular=48421 apf=6249 total=54670), apf IOs used=6173

Table: Setores scan count 95560, logical reads: (regular=99289 apf=0 total=99289), physical reads: (regular=10 apf=0 total=10), apf IOs used=0

Table: Worktable1 scan count 1, logical reads: (regular=6545 apf=0 total=6545), physical reads: (regular=0 apf=0 total=0), apf IOs used=0


===> Total actual I/O cost for this command: 1.317.060... (apenas 1% do anterior)


Execution Time 15.
SQL Server cpu time: 1500 ms. SQL Server elapsed time: 83.800 ms.


Basta uma rápida olhada para perceber imediatamente que a diferença na quantidade de I/Os e no tempo de processamento é impressionante, próximo de apenas 1% da select original!

Mas ainda podemos mudar um pouco isto para explorar alternativas.

Observem que utilizamos um Join para validar a tabela de setores. Mas neste caso, poderemos ter várias releituras da mesma.

Também seria possível a condição 'where... IN' para validar o setor, ao invés de Join. Mas neste caso, pode ocorrer um aumento no número de I/Os, que é pequeno em relação ao problema original, mas que deverá ser estudado se for noutra implementação

Assim teremos:

select codigoSetor, count(*),
       sum ( case
               when b.codigoFlagTeste 0 then 1 else 0 end ) ,
       sum ( case
               when b.codigoFlagTeste = 0 and tipoABCDE in (1, 2, 3, 4) then 1 else 0 end ) ,
       sum ( case
               when b.codigoFlagTeste = 0 and tipoABCDE not in (1, 2, 3, 4) then 1 else 0 end )
  from Movimentos b
  where dataOperacao between '04/01/2009' and '04/30/2009' and
        codigoSetor in (select codigoSetor
                          from Setores (index indiceSetores01)
                          where tipoSetor = 'X' or Setores.codigoSetor = 999)
  group by codigoSetor  

Estatística da Execução:
----------------------------------
Table: Movimentos scan count 1, logical reads: (regular=60523 apf=26 total=60549), physical reads: (regular=51955 apf=4993 total=56948), apf IOs used=4822

Table: Setores scan count 95560, logical reads: (regular=99627 apf=0 total=99627), physical reads: (regular=27 apf=0 total=27), apf IOs used=0

Table: Worktable1 scan count 1, logical reads: (regular=6545 apf=0 total=6545), physical reads: (regular=0 apf=0 total=0), apf IOs used=0


===> Total actual I/O cost for this command: 1.358.992.
Total writes for this command: 6884

Execution Time 18.
SQL Server cpu time: 1800 ms. SQL Server elapsed time: 107.326 ms.

(113 rows affected)
----------------------------------


Portanto vemos que a Alternativa A ainda foi uma melhor modificação.

Uma observação adicional, é que ao mudarmos a select original, também foram eliminados alguns resultados desnecessários, que precisariam processamento posterior, daí a diferença na quantidade de registros resultante ter baixado de 121 para 113.


Comparativo


Custo Total
I/O
Tempo Execução
Tempo CPU
SQL Server elapsed time
Original
132.860.664
749
74900 ms
1.471.296 ms
Alternativa A
1.317.060
15
1500 ms
83.800 ms
Alternativa B
1.358.992
18
1800 ms
107.326 ms



Conclusão:

Tivemos uma redução aproximada de 99% na quantidade de I/Os necessários e de 98% no tempo de execução.

Alguns pontos podem ser melhorados, mas em face do ganho obtido, já ficou num nível mais satisfatório, especialmente considerando a cultura local.


Resultados:

  • Enorme economia de recursos.
  • Maior disponibilidade do servidor para atender outras transações.
  • Maior satisfação do usuário final que passou a ter muito mais agilidade.
  • Ciclo de desenvolvimento e testes do programa foram reduzidos a uma fração do previsto.

..
Related Posts Plugin for WordPress, Blogger...