Tuesday, July 26, 2016

UPGRADE PARA WINDOWS 10 – VISÃO DE UM USUÁRIO

UPGRADE PARA WINDOWS 10 – VISÃO DE UM USUÁRIO

Antes de mais nada quero prover algum contexto, informando aos leitores que sou profissional de TI, mas da área de desenvolvimento e não de infraestrutura.  Claro que fiz cursos de administração de sistemas operacionais, tanto Windows quanto Linux.  Mas neste texto quero falar como usuário, sem avaliar o Windows 10 de um ponto de vista técnico.
Quero destacar alguns pontos que me afetam como usuário, como acredito que afetem os milhares de leigos em informática que (ainda?) usam Windows.

Como estamos na era da informação rápida, começarei este texto pelas conclusões.  Os detalhes que fundamentam estas conclusões são abordados ao longo do texto.
E a minha conclusão principal, fundamental, é que EU NÃO FAREI O UPGRADE.  Não agora.  Talvez nunca, porque se a Microsoft continuar com sua política de induzir os clientes – nós! – a usar seus produtos através de táticas, digamos, “não convencionais”, para não dizer “desleais”, irá perder a confiança do mercado.  Não é correto forçar as pessoas a usarem um produto que elas não querem!  Microsoft, foque em melhorar a confiabilidade dos seus software, dedique-se a criar interfaces que agradem aos usuários (ao invés de implementar idéias “geniais” como eliminar o menu ‘Iniciar’, por exemplo), e não será preciso “apelar” para que as pessoas façam upgrade!
De acordo com o que a própria Microsoft diz nas próprias telas que oferecem o upgrade, o Windows 10 não tem melhorias significativas sobre as versões anteriores – conforme detalho no restante deste texto.  Admito que não fiz uma pesquisa aprofundada – e nem tentei.  Não é meu papel, como cliente, buscar razões para adotar um software.  É papel do fabricante me convencer de que terei vantagens ao fazê-lo.  Se o fabricante não lista estas razões, estou autorizado a supor que elas simplesmente não existem.
Além de não haver vantagens significativas, há relatos de vários problemas com o Windows 10.  Deverei me expor a problemas sérios, a ficar com um computador inoperante... por nada?!

Sou desenvolvedor de sofware há trinta anos, e uso produtos Microsoft desde as primeiras versões do MS-DOS.  Desenvolvo com Visual Studio, com VB.Net, com C#, com ASP.Net, com SQL Server...  Espero não ter que abandonar todas estas valiosas ferramentas.  Resta-me torcer para que a Microsoft desperte, pare de fazer danos à própria imagem no mercado e trabalhe sériamente para melhorar o seu sistema operacional!


Atualização forçada

O processo que a Microsoft está usando para levar os usuários a atualizar para o Windows 10 é – a meu ver – desrespeitoso e antiético.
Eu recebi várias modalidades de diálogo de atualização.  Uma das mais “traiçoeiras” tinha sido configurada para confirmar o upgrade do Windows quando se fechava a caixa de diálogo – algo que nunca vi em nenhuma outra situação.  Quantos usuários terão feito a atualização por este processo, fechando a caixa de diálogo em que o upgrade era oferecido, com a intenção de livrar-se da oferta não solicitada e sem perceber que estavam na verdade aceitando-a?
Outra “variação” da oferta de atualização era a que oferecia as opções de “Atualizar mais Tarde” ou “Atualizar Agora”.  Não havia opção “Não quero atualizar meu Windows, por favor parem de me incomodar”.  Era preciso aceitar a atualização e depois voltar ao aplicativo de atualização e cancelar.  Quantos usuários mais terão aceitado a atualização quando na realidade não queriam atualização alguma, aceitando-a simplesmente por não conseguir encontrar a forma de cancelar?
Será que a recusa a estas ofertas de atualização era tão difícil porque o interface com o usuário foi mal desenhado?  Ou será que foi cuidadosamente projetado para dificultar ao máximo a recusa da oferta?  Sinto muito, dona Microsoft, eu acredito que os senhores projetaram o interface cuidadosamente para forçar o usuário a atualizar, mesmo que não quisesse.  E para mim isto é uma atitude antiética, que prejudica a imagem da empresa e mina a confiança que tenho nela!
Uma amiga me mandou uma mensagem dizendo que o diálogo agora está exibindo uma “contagem regressiva”, destacando que a oferta de atualização grátis expira em 29 de julho.  Bem, pelo menos esta é uma técnica de vendas aceitável!  “Grande oferta, apenas HOJE!” Primário, mas aceitável.  No caso da minha amiga, há também uma mensagem advertindo que “o Windows 7 não terá mais atualizações”.  Considerando que o Windows 7 é de 2009, isto também é aceitável.  Então parece que a Microsoft está voltando à sanidade, deixando de usar má-fé para “empurrar” o Windows 10.  Não faz mais que a obrigação, não deveria ter usado má-fé nunca!

Vantagens do Windows 10, segundo a Microsoft

Coloco abaixo alguns screenshots da caixa de diálogo de atualização que descreve as vantagens da atualização, com alguns comentários.

Familiar e fácil.

O menu “Start” está de volta, e o Windows 10 é muito similar à versão anterior, isto é o que é dito.
Bem, eliminar o menu “Iniciar” foi uma péssima idéia, pelo menos estão admitindo o erro ao trazê-lo de volta.  Mas se o Windows 10 é tão semelhante à versão anterior, porque eu deveria fazer o upgrade?  Para ter o menu “Iniciar” de volta?  Se é por isto, que fizessem uma atualização do Windows 8!

“Alguns aplicativos são vendidos separadamente, dependendo do mercado”.

A advertência de que “Some apps sold separately, vary by market” é feita em letras pequenas.  Quais aplicativos?  Vendidos separadamente a que preço? 
E isto é dito em letras pequenas?  Que feio, Microsoft!  Não é assim que vão fazer que confiemos em vocês!



Projetado para Velocidade

Ótimo.  Mas o Windows 8 é tão mal projetado que não pode ter a performance melhorada por atualizações?!
Além disto, parece que o ganho em performance não é tão grande assim!  Veja o item Avaliação de Performance, mais adiante neste texto.

Mais características de segurança

Ótimo, também!  Mas quais?!  Obter “mais recursos de segurança”, dito assim de forma vaga, deveria me convencer a fazer o upgrade, Microsoft?  Sinto muito, não está funcionando...
E as atualizações do Windows 10 já geraram... problemas de segurança!  Veja Problemas causados pelo Windows 10, mais adiante neste texto.


Novos recursos

Cortana

Bem uma assistente digital parece interessante.  Não tenho informações para dizer se está bem adaptada ao Português.  Não sou um aficionado a smartphones e portanto não tenho como comparar a Cortana com a Siri ou Amazon Echo.  Neste artigo você poderá encontrar algumas informações:  http://www.macworld.co.uk/feature/iosapps/cortana-vs-siri-google-now-amazon-echo-alexa-what-is-best-ai-voice-assistant-3511811/  , assim como neste outro: http://gadgets.ndtv.com/apps/features/cortana-vs-google-now-vs-siri-whos-better-whos-best-778209  .
Uma vantagem indiscutível da Cortana é rodar em computadores, em lugar de apenas em equipamentos mobile.  Outra vantagem é sua integração com o Edge – assumindo-se que você queira usar o Edge...

Microsoft Edge

Parece que a Microsoft também se cansou do Internet Explorer – como todos nós, J !
Mas porque eu preciso Windows 10 para rodar o Edge?  Isto é a melhor arquitetura de software?  Isto é o melhor para o usuário, em termos de mercado?
Mais – se o meu Chrome, ou o meu Firefox, estäo funcioando bem, porque eu deveria mudar?
O Edge é melhor? Este artigo - http://mashable.com/2015/07/29/microsoft-edge-vs-google-chrome/#Y14qi7WdKPq3 – diz que a performance do Chrome é superior!  Este outro - http://www.makeuseof.com/tag/which-browser-is-best-edge-vs-chrome-vs-opera-vs-firefox/ - artigo diz que o interface do Edge é superior, mas que o Edge é inferior ao Chrome em performance – sendo que no quesito “aderência aos padrões do HTML5” o Chrome faz 521 pontos de 555 possíveis e o Edge faz apenas 453; isto não é surprendente se considerarmos o histórico de não-aderência aos padrões da W3C (World Wide Web Consortium) do Internet Explorer.  A pontuação mais baixa – ZERO! – que o artigo dá ao Edge é quanto às extensões – em Fevereiro de 2016, data do artigo, o Edge simplesmente não tinha extensões!

Grandes maneiras de se organizar e trabalhar rápido

Sim, mas quais são estas maneiras?  Se são tão boas, não deveria ser possível descrevê-las em poucas frases?

Excelentes aplicativos incluídos, como Fotos, Mapas e Música

Na minha humilde opinião, se os aplicativos forem como os do Windows 8, não são, de forma alguma “excelentes”.  O aplicativo Skype do Windows 8, por exemplo, é HORRÍVEL, “in-usável”, se me permitem o neologismo.  Da mesma forma o PKZIP.  O “Video” é um enorme retrocesso em relação ao Media Player...






Jogos.  Entretenimento.  Aplicativos E mais.  “Mais” incluirá as “letras pequenas” dizendo que “a disponibilidade de aplicativos e de conteúdo variam com o mercado”?

Novamente, temos um texto genérico, nada mais que uma promessa.  E, novamente, as “letras miúdas” informando que estas maravilhas poderão não estar disponíveis para nós...
Você clicaria no botão “Upgrade Now”?
Eu tenho que confessar que, até o momento, não estou convencido, de forma alguma!




Avaliação de Performance

Segundo alguns artigos encontrados por uma rápida pesquisa na Web, o ganho de performance não foi tão significativo quanto a Microsoft apregoa – e em alguns itens a performance até mesmo piorou, em relação ao Windows 8.
·         Artigo “Windows 10 claims to be “designed for speed”, but is it that much faster than its direct predecessor? Let’s find out!” - http://now.avg.com/windows-8-vs-windows-10/ .
Este artigo, de Agosto de 2015, descreve testes em nove diferentes atividades – ligar a máquina, iniciar um programa, rodar um jogo, etc.  Em seis delas, o Windows 10 se mostrou de 1% a 17% mais rápido que o Windows 8.  Em dois, há empate, em um, o Windows 8 é superior.
·         Artigo “Windows 10 vs. Windows 8: Performance benchmarks show a close battle for fastest” - http://www.pcworld.com/article/2949894/windows/windows-10-vs-windows-8-performance-benchmarks-show-a-close-battle-for-fastest.html , de Julho de 2015.
O artigo conclui que “o Windows 10 parece não oferecer ganho de performance significativo sobre o Windows 8”.
·         Windows 10 vs. Windows 8.1 vs. Windows 7 Performance” - http://www.techspot.com/review/1042-windows-10-vs-windows-8-vs-windows-7 , de Agosto de 2015, aponta a mesma ausência de ganho signficativo, e relata também problemas com galerias de fotos na migração e problemas na velocidade de jogos.




Problemas causados pelo Windows 10

Tenho vários relatos informais de problemas mais ou menos graves, relatados por colegas.
Neste texto vou me ater a alguns artigos facilmente encontrados na Internet. O segundo artigo até mesmo menciona “o novo mantra de instalar primeiro e pensar depois, adotado pelo Windows 10 nas suas atualizações”.

·         Atualização do Windows 10 está causando problemas para alguns usuários - http://canaltech.com.br/noticia/windows/atualizacao-do-windows-10-esta-causando-problemas-para-alguns-usuarios-46921/
·         Microsoft reinstitui atualização do Windows 10 após erro em privacidade - http://g1.globo.com/tecnologia/blog/seguranca-digital/post/microsoft-reinstitui-atualizacao-do-windows-10-apos-erro-em-privacidade.html



Thursday, July 07, 2016

ALGUNS PENSAMENTOS SOBRE PROJETO DE SISTEMA E DESENHO DE INTERFACE DE USUÁRIO

ALGUNS PENSAMENTOS SOBRE PROJETO DE SISTEMA E DESENHO DE INTERFACE DE USUÁRIO
(alguns pensamentos que algum dia poderão ser um artigo, mas estou postando assim incipientes mesmo pra não esquecer!)
Uma abordagem possivel para projeto de software é começar pelo desenho do interface com o usuário. Alguns desenham com lápis e papel, outros usam PowerPoint, criam formulários Excel, ou mesmo usam o bom e velho Visual Studio para criar o interface, que depois só precisa ser conectado ao código que proverá o funcionamento desejado.
Eu acho que essa abordagem pode ter excelentes resultados - quando a aplicação é totalmente voltada ao gerenciamento de bases de dados. E que pode ser usada quando a parte da aplicação que não é baseada em dados é muito simples.
Em qualquer outro caso, eu acho que o primeiro passo para o projeto do sistema é
a) Diagrama de Casos de Uso
b) Especificação dos Casos de Uso, incluindo, quando for pertinente
b.1) Diagramas dos Processos de Negócios (com BPMN, não UML)
b.2) Diagramas de Atividades
b.3) Diagramas de Estado
Os Diagramas de Estado são especialmente úteis para formulários (web forms, windows forms) com funcionamento complexo. Com diagramas de estado, podemos construir interações com o usuário que não seguem um protocolo (i.e., não precisam seguir um roteiro pré-estabelecido) oferecendo em lugar disso vários caminhos possíveis, permitindo avançar, recuar e saltar etapas, implementando assim diversos cenários do Caso de Uso que tratam. Se começamos a implementação pelo Diagrama de Estados, teremos um interface com boa usabilidade, adequado ao negócio, versátil e estável ao mesmo tempo.
PARA SABER QUE CONTROLES QUEREMOS NA TELA, TEMOS QUE TER BEM CLARO QUE PROCESSO ESTAREMOS CONTROLANDO!
Estou dizendo que devemos ignorar o UI no estágio inicial do processo?
De forma alguma! Mas eu faria os desenhos das telas com lápis e papel, para deixar bem claro que são projetos iniciais, rascunhos, que podem e provavelmente serão alterados nas etapas posteriores do projeto.
Quanto ao "estilo" gráfico da aplicação, isso é outro assunto. Desde o início do projeto se pode definir um visual característico, que evidencie e apoie a proposta do software.
Para projetos que não se limitem às tradicionais "aplicações administrativas", é também importante definir se a iteração com o usuário vai se basear mais no tradicional texto, se a ênfase vai ser em ícones, ou se vamos usar comandos de voz e/ou gestos.
Ou seja: já nos estágios iniciais do projeto devemos definir "conceitualmente" como será o interface de usuário, isso é um componente fundamental do software. Mas "definir conceitualmente" não é, de forma alguma, o mesmo que definir detalhadamente os controles que serão usados em cada interação com o usuário!
Na verdade poderemos ter uma apresentação diferente para diferentes módulos da aplicação. Imaginemos uma aplicação para Segurança do Trabalho, por exemplo. Podemos ter um módulo para os Gerentes de Segurança, um Web Site que os executivos possam acessar de casa ou de qualquer computador. Este "módulo gerencial" deve ter um interface simples, por exemplo um dashboard baseado em ícones, oferecendo apenas funções de tabulaçãoes estatísticas e visualizações de gráficos. Podemos ter um módulo para os Técnicos de Segurança voltado principalmente às exigências legais e ao gerenciamento operacional da segurança- relatórios de Acidentes/Incidentes, Ações Corretivas/Preventivas, Permissões de Trabalho, etc. Este módulo poderia ser feito em Windows Forms uma vez que a produtividade é maior e os Técnicos geralmente o utilizarão no escritório (ainda assim poderia ser usado remotamente via VPN). Sendo um módulo com menus mais complexos - e muito mais formulários - devido à natureza especializada e à complexidade das tarefas, barras de menus controlando a navegação por formulários com os tradicionais textboxes, comboboxes, datagrids, etc., seriam uma boa abordagem. Finalmente podemos ter um módulo para os Técnicos "em campo", baseado em smartphones, onde eles poderão reportar Incidentes, Não Conformidades, Permissões de Trabalho, etc., inclusive usando seus smartphones para registrar fotos dos eventos.
Cada um destes módulos tem de ter o seu "estilo" próprio e homogêneo.
Decerto que todos os módulos estarão compartilhando a mesma base de dados, e que o Diagrama E-R irá sendo construído paralelamente com o detalhamento dos casos de uso - eu usaria o velho método de procurar os substantivos na descrição dos casos de uso; a maioria das minhas entidades de dados estarão aí.
Mas quero concluir frisando: O WORKFLOW É QUE TEM QUE NORTEAR A ARQUITETURA DA APLICAÇÃO, E NÃO O DESIGN DO INTERFACE! Ao contrário, o interface é uma consequência do workflow! O interface é uma consequencia dos Processos de Negócios que a aplicação vai apoiar!

Tuesday, July 05, 2016

4 de Julho em Wamego

Nota:  tudo isto acontecem no 4 de julho de 2015, e estou postando em 2016 - porque o Facebook me lembrou deste post.  Achei que valia o registro no blog! :-)

Voltando do 4 de Julho em Wamego. Fomos ver o desfile, fomos num parque de diversões, e depois fomos ver os fogos de artifício.
E ainda fizemos uma parada na casa de uma senhora, vice-reitora da KSU, que abriu a casa pra nós! Nós = um ônibus de coreanos e um ônibus com indianos e brasileiros! Achei demais ela fazer isso! E o lanche foi delicioso!
O desfile foi interessante, é uma coisa muito da comunidade. Desfila o prefeito, o delegado, os bombeiros voluntários, as escolas, os escoteiros... Familias grandes fazem grupos e desfilam! Máquinas agrícolas - algumas enormes! Um grupo de soldados, pequeno até. Grupos de motociclistas, carros antigos... E pra encerrar, claro, gente a cavalo! Como eu disse, um desfile simples, mas muito verdadeiro, muito da comunidade!
O parque de diversões... Não é a minha praia! Não andei em nada, que não estava a fim de "chamar o Hugo" no meio do povo! É igualzinho ao Brasil. Brinquedos legais, barraquinhas de comida, tudo num parque bem bonito, bem arborizado...
E depois fomos ver os fogos de artifício! Meia hora de fogos de artifício, bem bonito que estava! E pela primeira vez em anos eu pude assistir fogos de artifício sem ficar angustiado com os meus cachorrinhos, porque eles estão no Brasil!
Mas, tanto quanto a beleza do espetáculo, me chamou a atenção o contexto em que aconteceu!
Foi num campo de beisebol, um lugar descampado, rodeado de uns capões de mato, todo mundo foi caminhando pra lá, uma multidão! E não tinha iluminação! Haviam holofotes no campo, mas não foram acesos, certamente pra não atrapalhar o espetáculo. E tampouco foram acesos depois que terminou, voltamos pro lugar onde o nosso ônibus estava (ônibus escolar amarelo, que nem os dos filmes, bem apropriado pros meus quase 60 anos de idade!  ), uma boa caminhada!
Fiquei pensando na catástrofe que seria uma coisa dessas no Brasil! Uma multidão num descampado escuro...
E aqui não aconteceu nada, NADA, nenhum incidente, nenhum furto, nenhum roubo, nenhuma discussão, tudo na maior tranquilidade e paz! E olha que não se via polícia no lugar!
Eu atribuo esse "milagre" a alguns fatores principais:
a) Um povo ordeiro e acostumado a cumprir a lei. Aqui lei é lei e todo mundo cumpre, haja ou não polícia por perto. Já falei que as casas não tem cercas, os carros ficam na rua de noite, mas deixa eu dar um exemplo mais simples: os motoristas param nas placas de "Pare", mesmo que as ruas estejam absolutamente vazias, mesmo que não haja nenhum policial por perto! Se houver dez placas de "Pare" em dez esquinas consecutivas em uma rua completamente deserta, eles param dez vezes! Eles levam a lei a sério!
b) É proibido beber na rua. Bebida só é vendida em lojas especializadas, onde tem que mostrar a identidade pra provar que é maior. Até se compra cerveja em supermercados e lojas de conveniência, mas ela é de teor alcoólico baixo. Cerveja mais forte, só nas lojas de bebidas. Bebida alcoólica vendida em barraquinhas, em parques, em eventos, nem pensar - até porque é proibido beber na rua! Só é permitido beber em lugares fechados - em bares, em restaurantes, ou em casa. Andar pela rua com bebida na mão... já era, vai preso! Não pode beber nem no pátio da tua casa, tem que beber dentro de casa! Nossa, como é bom andar pela rua sem ter que aturar bêbados! Isso é uma conquista da civilização!
c) É certo que no meio da multidão tinha muita gente armada. Todo mundo tem arma. Todo mundo sabe atirar. Homem, mulher e... bom, criança não, mas adolescente sim! Então,
c.1) O pessoal pensa DEZ vezes antes de começar uma discussão. Porque a arma iguala todo mundo, quando se tem a possibilidade de usar uma arma em defesa própria, o grandão parrudo não se arrisca a abusar com a senhora de meia-idade nem com o velhinho de cabelos brancos...
c.2) Nenhum mal-intencionado se mete a fazer o que fazem no Brasil, assaltos e "arrastões", porque aqui as vítimas estão armadas! O idiota que tentasse algo assim ia se dar muito mal! Eles sabem, e nem tentam!
Era isso galera, obrigado por me escutarem!
E... Happy Birthday America! 

Monday, March 21, 2016

Amazon Web Services - uma forma de ir "às nuvens"!

A "ida para a nuvem" é uma tendência forte e irreversível, o que é excelente, pois é uma maneira prática e econômicamente interessante de usar infraestrutura poderosa e escalável sem gastos de aquisição de equipamentos e com recursos de administração poderosos.
E Porto Alegre já tem o seu Grupo de Usuários da AWS.
Tive o prazer de participar do "Primeiro AWS Porto Alegre Meet Up" no dia 10 passado.
(Veja http://www.meetup.com/pt-BR/AWS-Porto-Alegre/events/228878593/ )
Excelente evento, com palestrantes da Ilegra (www.ilegra.com) e apoio do Senac Informática (http://www.senacrs.com.br/areas.asp?area=9).  Não estou fazendo merchandising, pessoal, :-) , sou sinceramente grato aos organizadores, que disponibilizaram seu tempo e recursos para proporcionar este evento técnicamente muito enriquecedor.

Depois do evento, enviei e-mail ao Diego Pacheco, da Ilegra (que teve a gentileza de trocar cartões comigo), com algumas perguntas.
Recebi resposta dele e do João Palma, também da Ilegra.
E achei as respostas boas demais pra guardar só pra mim.
Estão, portanto, transcritas abaixo.
Espero que aproveitem.
E fica a dica para aqueles que se interessam pelo assunto: juntem-se a nós no Meet Up!

-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x

De: Joao Palma
Para: Diego Pacheco
Cc: Pedro Pereira; Hermes Pimentel
Enviadas: Sexta-feira, 18 de Março de 2016 15:47
Assunto: Re: MeetUp - Perguntas

Olá Pedro,
Respondendo a perguntas e complementado outras:

a) O AWS pode ser usado como um serviço de virtualização de servidores, certo?  Como funcionam, neste caso, as licenças de software básico no AWS?  Windows, SQL Server, etc.?

A AWS fornece um serviço de virtualização de servidores chamada EC2 (Elastic Compute Cloud). Você não pode fazer o deploy da uma solução de Virtualização (VMware, Xen, OVM...) dentro de uma instance EC2. Como o Diego já comentou, a AWS utiliza uma versão modificada por eles do Xen para prover esse serviço.

Você pode fazer o deploy de qualquer solução que você faz no modelo On-Premise (bare metal). Oracle, SQLServer, MongoDB, Tomcat, Nginx qualquer tecnologia vai se comportar da mesma forma. 

No caso do licenciamento, a AWS já fornece algumas instances licenciadas com o custo já embutido no valor hora da instance, tanto para Windows, Red Hat Enterprise Linux e SuSE. Assim como também fornece diversas distribuições Linux. 

Caso, já tenha adquirido licenças para algumas soluções é possível utilizar o modelo BYOL (bring your own license), ou seja, você não precisa pagar pelas licenças que já possui somente informar que esta utilizando elas na AWS, esse processo não é tão simples, mas é possível sim.

b) Bancos relacionais com capacidade de gerenciar o próprio crescimento de espaço em disco (como o Oracle e SQL Server, por exemplo), podem ser hospedados na AWS, certo?  Como esse crescimento do espaço em disco é gerenciado pela AWS?   

Na AWS você pode instalar o seu banco de dados dentro de uma instance EC2 podendo assim ter qualquer engine de dados, assim como também pode utilizar um serviço chamada RDS (Relational Database Service) que oferece como serviço auto-gerenciado as engines Oracle (SE, SEO, Enterprise), PostgreSQL, MySQL, MariaDB, SQLServer e uma engine própria da AWS chamada Aurora (MySQL Like). 

Em qualquer um dos casos, tanto utilizando uma EC2 ou o RDS, você precisa estar atento ao crescimento do espaço em disco, pois ele não aumenta conforme o crescimento vegetativo do banco. No caso do RDS é muito simples fazer o aumento de espaço na camada de dados, bastando alguns cliques, já na EC2 é da mesma forma que você adicionaria um disco em um servidor fisico.

c) Quanto ao Oracle: é possível hospedar um Oracle RAC (Real Application Cluster) na AWS?

Sim, é possível e já realizamos esse setup. Devido a algumas restrições técnicas como network multicast e ip floating a solução da Cluster Oracle não era homologada pela Oracle na AWS. Esse artigo de implementação do RAC fez um by-pass das restrições técnicas mas ele é bem claro no aspecto "Use por sua conta e risco em produção".

d) Quanto à arquitetura baseada em microservices: os microservices não podem ir atingindo uma granularidade tão fina que a coesão acabe atingindo um nível muito baixo, isto é, que a função desempenhada pelo microservice seja tão específica, seja a um nível tão detalhado, que acabe perdendo sentido a nível de negócio, e isto acabe gerando um esforço extra de engenharia para gerenciar uma "camada de negócios" composta de microservices?

Meus dois centavos sobre essa questão. Essa alta granularidade dos serviços sim gera um custo para gerenciamento, mas hoje já possuímos muitas ferramentas Open-Source levadas ao máximo stress em grandes deployments que facilitam esse gerenciamento. Mas o grande beneficio para quem é de Operação/Infraestrutura é a facilidade de troubleshooting e entendimento de todas as camadas envolvidas, fica muito mais fácil fechar o escopo de uma issue quando utilizando microserviços do que quando estamos trabalhando com um monolíto.

Muito Obrigado pela participação no AWS MeetUp POA, em seguida vamos estar disponibilizando mais informações do segundo encontro.

Te esperamos lá!

Att,
João Lucas Palma
Solution Architect
ilegra

Wednesday, March 02, 2016

ELEIÇÃO PROPORCIONAL - ISTO É DEMOCRACIA OU JOGO DE CARTAS MARCADAS?!

ELEIÇÃO PROPORCIONAL - ISTO É DEMOCRACIA OU JOGO DE CARTAS MARCADAS?!
A propósito dos recentes - e ridículos, patéticos, cômicos se não espelhassem uma situação trágica - projetos de lei em Porto Alegre, como a proibição de saleiros em restaurantes, troca de nome da Castelo para Legalidade e depois "des-troca", e agora a pintura das paradas de ônibus próximas ao Beira-Rio de vermelho, muitas pessoas se manifestaram dizendo que "devemos dar o troco com o voto, não vamos reeleger nenhum destes vereadores". Pois bem, NÓS NÃO TEMOS O PODER DE DECIDIR ISSO! Um vereador pode se eleger com uma votação insignificante, pode se eleger até tendo apenas o próprio voto! E vereadores com votação expressiva - até mesmo o vereador mais votado - podem não se eleger. E isso não é fraude, isso é o SISTEMA PROPORCIONAL DE ELEIÇÃO funcionando. A eleição para o Legislativo é PROPORCIONAL. Em outras palavras, o número de votos que o PARTIDO recebe define quantas cadeiras o partido vai ter na Câmara de Vereadores. Estas cadeiras são então ocupadas pelos candidatos mais votados DAQUELE PARTIDO (ou coligação). Então para eleger esses abobados, palhaços, desmiolados (os adjetivos não são meus, são do pessoal que comentou as notícias dos jornais) que apresentam estes projetos, basta que o Partido a que pertencem tenha UM candidato bom (ou "bom de voto": atleta famoso, ou comunicador, ou ex-BBB...) para atingir um bom coeficiente eleitoral e colocar dentro da Câmara vários candidatos EM QUEM PRATICAMENTE NINGUÉM VOTOU!
O objetivo deste sistema seria colocar os partidos acima dos candidatos individuais, já que os partidos, teóricamente, tem ideologias e programas característicos, com o qual todos os candidatos estariam afinados. Sabemos da realidade dos partidos brasileiros: com exceção dos extremistas folclóricos, nossos partidos não tem ideologia, não tem programa, tem um só objetivo: conquistar o poder e nele locupletar-se! As raríssimas exceções são individuais, não são de organização partidária. Neste contexto, o sistema proporcional constitui UM JOGO DE CARTAS MARCADAS! NÃO HÁ COMO O POVO GANHAR ESSE JOGO SE AS REGRAS NÃO FOREM ALTERADAS!

Mais detalhes sobre a eleição proporcional no site do Tribunal Superior Eleitoral:
http://www.tse.jus.br/institucional/escola-judiciaria-eleitoral/revistas-da-eje/artigos/revista-eletronica-eje-n.-5-ano-3/como-funciona-o-sistema-proporcional

Wednesday, February 24, 2016

O USUÁRIO NÃO É BURRO! O USUÁRIO É A RAZÃO DE SER DA TI!

O USUÁRIO NÃO É BURRO!  O USUÁRIO É A RAZÃO DE SER DA TI!

É triste, e me envergonha admitir, mas é verdade: para muitos profissionais de TI, dizer que “o usuário é burro” é um chavão! 

Pois bem, na minha opinião, esta maneira de pensar – este paradigma – leva a um desempenho extremamente pobre: help desks que não resolvem problemas, sistemas que não atendem os requisitos, etc.  Em resumo, este paradigma incorreto leva a ferramentas de informática que não contribuem para os objetivos estratégicos da organização!

O usuário pode não entender de configurações de rede, nem de especificação de requisitos.
Mas é ele que faz a empresa funcionar – e é ele que traz o lucro que torna as empresas viáveis!
Se a empresa em que você trabalha produz celulose, o seu objetivo principal como profissional de TI não é “administrar a rede”, nem “desenvolver software”.  A sua tarefa é “ajudar a produzir celulose”.  Ou equipamentos para poços de petróleo, ou carros, ou alimentos!  Sim, você vai utilizar as suas habilidades e capacitações específicas, técnicas.  Mas a sua missão não é “escrever código genial”.  É contribuir para a concretização dos objetivos da empresa!

Mesmo que você trabalhe em uma software-house, que vive de vender software, isto ainda é verdade.  Você vende software que será uma ferramenta de apoio para as atividades-fim dos seus clientes.
Você tem que ter a humildade de reconhecer que seus usuários sabem mais sobre as próprias necessidades do que você!

Você não é engenheiro, você não é nutricionista, você não é vendedor!  Sua função como profissional de TI é ouvir estes profissionais, entender suas necessidades e então prover as ferramentas de TI mais adequadas para apoiar suas atividades.

Há inúmeras – e valiosas - ferramentas para Governança de TI e Gestão da Qualidade em TI.  ISO (9126, 14598, 12119, 25000,...), CMMI, MPS.BR; ITIL, COBIT... 
Em minha humilde opinião, nenhuma dará o resultado esperado enquanto não se quebrar o paradigma de que “o usuário é burro”.  O primeiro e mais importante passo para uma boa Governança de TI é adotar outro paradigma: “o usuário conhece a atividade dele melhor do que eu, tenho que entendê-lo para melhor poder ajudá-lo”.
Lembre-se: não há jogadores consagrados se o time não conseguir vitórias!


Thursday, January 21, 2016

É POSSÍVEL UMA APLICAÇÃO WEB ATUALIZAR UMA BASE DE DADOS NO SERVIDOR USANDO JAVA SCRIPT

“É POSSÍVEL UMA APLICAÇÃO WEB ATUALIZAR UMA BASE DE DADOS NO SERVIDOR USANDO JAVA SCRIPT?”
por Pedro Francisco Pereira,
agradecimentos especiais a Humberto Moura e Julien Nascimento.

Sim... e não!

Se você não sabe a resposta a esta pergunta, não se sinta envergonhado.  Eu lancei esta questão na minha rede no Facebook – que inclui desenvolvedores experientes – e de todas as respostas que obtive, só uma indicava o caminho correto.
Até mesmo discussões sobre este tema no Stack Overflow indicavam que “você precisa de uma linguagem server side como PHP, Ruby, Python, ...”. 

Curioso?  Bom, então vou logo dizendo que a resposta a “É possível uma aplicação Web atualizar uma base de dados no servidor usando Java Script?” é “sim”... e “não”! J
“Sim” porque é possível usar Java Script para acessar bases de dados em um servidor. 
E “não” porque não se pode fazer isso usando o mesmo código que roda no cliente.

Quando “parece” que o Java Script no Cliente está acessando um banco de dados no Servidor

Há pelo menos uma “gambiarra” que pode ser feita quando se está usando um ambiente Microsoft – Windows e Internet Explorer:  instanciar controles ActiveX no Java Script cliente para conectar a um banco de dados no servidor.
Exemplo de código encontrado no Stack Overflow
 (em http://pt.stackoverflow.com/questions/29549/obter-conex%C3%A3o-com-banco-de-dados-em-html-e-js , créditos ao meu amigo Humberto Moura por encontrar essa thread!  Valeu, Humberto!)
var connection = new ActiveXObject("ADODB.Connection") ;
var connectionstring="Data Source=<server>;Initial Catalog=<catalog>;User ID=<user>;Password=<password>;Provider=SQLOLEDB";
connection.Open(connectionstring);
var rs = new ActiveXObject("ADODB.Recordset");
rs.Open("SELECT * FROM table", connection);
rs.MoveFirst
while(!rs.eof)
{
   document.write(rs.fields(1));
   rs.movenext;
}
rs.close;
connection.close;
 Esta solução é técnicamente pobre, uma vez que exige um sistema operacional e um browser específicos[1].
Em têrmos de segurança,  é uma completa loucura, uma vez que o usuário e senha do banco de dados estarão visíveis no script!
Mas o pior, em relação à nossa pergunta, é que não é o Java Script que estará acessando a base de dados no servidor, é o controle ActiveX!
Vale como curiosidade, como solução real... vamos descartá-la!

É o browser que interpreta o código Java Script nas Web Pages? 
(Muito prazer, sou o Java Script Engine!)

Bom, eu não sei pra vocês, mas pra mim quando eu falo “Java Script” eu penso imediatamente no código que é executado quando o usuário interage com controles em uma Web Page – quando clica um botão, quando seleciona um controle, etc.
E qual é o software que “executa” as Web Pages?  Ora, o browser, é claro!  É ele quem exibe o HTML, aplica a formatação definida nos CSS, e executa o código Java Script[2].

Mas será realmente “o browser”?  Serão os browsers construídos de uma forma monolítica?  Terão os arquitetos dos browsers desprezado os princípios de “alta coesão” e “baixo acoplamento”?  Basta que a pergunta nos ocorra para que saibamos que não!  O funcionamento do browser certamente é implementado em componentes – e estes componentes devem ser reutilizáveis, de acordo com as normas fundamentais da Engenharia de Software!
Na verdade eu, pessoalmente, já sabia disto, pois estava a par de que as Metro Apps do Windows 8 e dos tablets Microsoft são construídas usando Java Script[3] – e rodam num “desktop” e não em um browser!   Eu apenas não estava usando a informação no contexto desta pergunta!  Certamente a Microsoft não iria “reinventar a roda” para fazer suas aplicações desktop baseadas em Java Script funcionar[4]!

O componente dos browsers que executa o código Java Script é o Java Script Engine.  Diferentes browsers tem diferentes engines[5]:  SpiderMonkey é o do Firefox; V8 é o do Chrome; JavaScriptCore é o do Safari; Chakra é o do IE...

 E se o Java Script Engine é um componente independente do browser e reutilizável... não poderia ser uado em um servidor?  Certamente que sim! 

Java Script no Cliente... e Java Script no Servidor!

Esta é a resposta à nossa pergunta “É possível uma aplicação eb atualizar uma base de dados no servidor usando Java Script”!  Sim, é a resposta – com a ressalva de que o acesso a banco de dados não está no Java Script que vai para a máquina cliente, no Java Script que faz a web páge “funcionar”, e sim em um Java Script no lado servidor, gerenciado por uma outra instância do Java Script Engine!


“Hi, I’m a Node of Mean Software!” J

E assim chegamos a frameworks para construir aplicações Web usando Java Script tanto no lado cliente quanto no lado servidor!

Node.js é um destes frameworks – obrigado, Julien Nascimento,  por me colocar no rumo certo!
Node.js é open source e multi-plataforma, e é suportado pela Node.js Foundation, um projeto colaborativo da Linux Foundation.
Mais detalhes podem ser encontrados na Wikipedia em https://en.wikipedia.org/wiki/Node.js .

Mean ( https://en.wikipedia.org/wiki/MEAN_(software_bundle) ) é um software stack (conjunto de components que criam uma plataforma completa) baseado em Node.js, Angular.js, Express.js e Mongo.DB.  Citando literalmente a Wikipedia “because all components of the MEAN stack support programs written in Java Script, MEAN applications can be written in one language for both server-side and client-side execution environments”.

QED!  J

Observação - Mongo.DB

Mongo.DB é um banco de dados orientado a documentos semelhantes a JSON, com esquemas dinâmicos – portanto, um banco de dados “não-SQL”.
Se quiser saber mais sobre banco de dados não-SQL e Big Data, talvez ache interessante este pequeno artigo que escrevi para o meu blog da Kansas State University ( http://www.k-state.edu/ ):





[2] E, não custa lembrar aos experientes, e sempre deve ser salientado aos iniciantes – tudo que chega a uma máquina cliente que está acessando uma página Web é HTML, CSS e Java Script!  Código ASP “clássico”, PHP, C#, Java – nada disto chega ao cliente, e nem teria sentido chegar, pois o browser não conseguiria lidar com nada disto.  ASP, PHP, C#, Java, etc, são processados pelo servidor Web, e o resultado deste processamento é HTML, CSS e Java Script que são então enviados à maquina cliente e interpretados pelo browser.
[4] Mais informações sobre a utilização do mesmo Java Script Engine no IE e no Windows podem ser encontradas em “Microsoft Details Hosting Chakra Javascript Engine Across Various Apps Supported On Windows 10” ( http://microsoft-news.com/microsoft-details-hosting-chakra-javascript-engine-across-various-apps-supported-on-windows-10/ )
[5] Mais informações sobre Java Script Engines podem ser encontradas na Wikipedia em https://en.wikipedia.org/wiki/JavaScript_engine .