VMWare Pode Ser Seu Próximo Sistema Operacional

20 August, 2009 (00:47) | Offtopic, Opinião | By: furlan

Se você não usou no seu desktop, provavelmente já usou acessando a internet ou até mesmo o servidor utilizado pela sua empresa esteja “virtualizado” e compartilhando a mesma máquina com outros servidores.

Agora imagine poder usar qualquer programa, independente de sistema operacional. Quer usar o Photoshop no Linux? Sem problemas. Quer rodar no Apple aquele programa exótico para Windows que só a empresa onde você trabalha tem, agora mesmo.
Read more »

Introdução ao ALV – Série Especial

19 August, 2009 (22:53) | ALV, Receita ABAP | By: furlan

No decorrer dos anos a SAP vem evoluindo em vários sentidos. Vem aumentando a sua experiência na área de negócios, application server e também na parte visual.

Nesse sentido, ela evoluiu da tela verde dos terminais mainframe do R/2 para as listas (usando comandos WRITE), passando pelo ALV e agora pelo WebDynpro (WD).

O WebDynpro é a evolução natural para os browsers, levando a camada de apresentação para os browsers, saindo de cena o famoso Sapgui.

No entando, WD ainda tem muito chão para substituir por completo o Sapgui. Ainda há uma infinidade de programas que precisam ser migrados e isso levará muito tempo.

Enquanto isso, os programas baseados em dynpros (telas) tradicionais ainda ocuparão boa parte do seu tempo programando em ABAP. Por isso, apresento uma série de posts sobre ALV e como programar usando essa tecnologia.
Read more »

PodCafé, o mais novo podcast da Internet

18 August, 2009 (01:10) | Offtopic | By: furlan

É com muito orgulho que apresento o mais novo podcast da internet, o PodCafé, apresentado por mim e pelo meu amigo Alex Belle.

No Podcafé falamos basicamente de tecnologia. Programas para smartphones, videos, anúncios, testes de gadgets etc.

É interessante ver como duas pessoas, com interesses muito comum, tecnologia, podem ter diferentes visões sobre um tema e como podemos colaborar para chegarmos a uma conclusão mais interessante do que se tivéssemos sozinhos.

A idéia por trás do Podcafé é uma conversa informal. O objetivo é extamente uma conversa de café, onde estamos mais descontraídos e sem nenhuma regra. Falamos nossos pensamentos, argumentamos e muitas vezes mudamos de idéia.

A princípio pensamos em criar várias regrinhas e dar uma cara para o PodCafé. Mas não conseguimos dar cara alguma ainda, apenas deixamos as idéias fluir, como uma conversa de café.

Espero que quem nos ouvir aprenda alguma coisa e que possamos transmitir a nossa forma de agir e pensar.

Espero também que outros PodCafés apareçam e assim todos possam evoluir e aprender cada vez mais.

Bom podcast!

Screencast: Aplicação simples usando ABAP WebDynpro

1 August, 2009 (10:19) | Screencast, WebDynpro | By: furlan

Segue abaixo o meu novo screencast onde eu mostro uma aplicacão usando ABAP WebDynpro. O meu objetivo não foi explicar os fundamentos ou conceitos do ABAP WebDynpro, mas mostrar o funcionamento básico.

O programa que eu fiz consiste em duas views. Na primeira view possui um campo onde o usuário digita um texto qualquer e um botão. Quando o botão é clicado, a segunda view é chamada, mostrando o texto digitado na primeira tela.

Parece um programa inocente, mas você verá como fazer os itens abaixo:

  • Trabalhar com views
  • Incluir elementos nas views
  • Criar ações e associar a plugs e botões.
  • Transferir dados entre duas telas

Bom proveito!

ABAP101.com – ABAP WebDynpro Exemplo Simples from Flavio Furlan on Vimeo.

Update: Você pode baixar aqui a versão M4V (iPod).

Trabalhe com um propósito

30 July, 2009 (22:38) | Mercado, Offtopic, Opinião | By: furlan

Como instrutor e blogueiro, frequentemente recebo e-mails de pessoas pedindo conselhos do que fazer com suas vidas profissionais. Eu entendo perfeitamente suas dúvidas e angústias. Aposto que a imagem que muitos de vocês devem ter de mim é que sou um profissional resolvido e decidido com minha vida profissional.

Pensa: estou á quase 10 anos no mundo SAP. Já trabalhei em muitas implementações, enfrentei inúmeros bugs e coisas esquisitas. Já programei, especifiquei, discuti arquitetura, solução funcional e até dei já pitacos em instalação de servidor. Já trabalhei com CMM, qualidade e avaliação de ferramentas. Já coordenei, planejei e até bronca já dei.

Olhando somente isso você pode pensar que já fiz de tudo. Até pode pensar como eu sou arrogante e estou esnobando aqueles que estão começando agora ou querendo começar. Lembrem-se, esse blog chama-se ABAP101. Vocês que estão começando agora ou querendo começar são exatamente o meu público.

Então por que estou dizendo essas coisas?
Read more »

Ousadia ou Estupidês?

17 July, 2009 (22:54) | Mercado, Offtopic | By: furlan

Essa semana participei de um workshop de negocionação onde tivemos oportunidade de fazer alguns exercícios. Foi interessante ver algúns conceitos sendo aplicados. O mais interessante foi negociar em inglês. Para muitas pessoas negociar já é uma aventura, agora em outro idioma, pode ser uma tarefa homérica.

No entanto, o ponto aqui não é exatamente o ato de negociar, mas quero descrever uma determinada situação que aconteceu num desses exercícios.
Read more »

Conceitos de Orientação a Objetos – Parte 6 de 6

17 June, 2009 (10:16) | Conceitos, Tecnica de Programação | By: furlan

Interfaces
O princípio de herança nem sempre se aplica a todas as classes que possuem características comuns. Uma pessoa é capaz de Andar, assim como um carro é capaz de andar. Nem por isso eles fazem parte de algum material comum. No seu sistema você pode ter que se deparar com situações parecidas.
Você pode, por exemplo, criar um agendador de tarefas programadas que servirá para mandar uma mensagem por e-mail diariamente para todos os clientes da loja. De forma semelhante, diariamente ele também pode iniciar uma tarefa que verifica se todos os servidores estão online.
Perceba que você pode estar lidando aqui com objetos de duas classes diferentes: MensagemPromocional e VerificadorDeConectividade. As duas classes não possuem relação nenhuma a não ser pelo fato de que as duas serão manipuladas por um mesmo objeto Agendador.
O conceito de interfaces começa a ser entendido pelo que o próprio nome diz: Interface a forma em que a via de comunicação precisa tomar para estabelecer contato com o destinatário. Uma tomada comum possui uma interface que vai determinar o tipo de plug que um fio deve possuir caso queira instalar-se nela. Se o plug não for compatível com a interface da tomada, ele vai precisar ser adaptado. Existe a interface de dois pinos, a interface de duas placas de cobre, e a interface 2p+T que inclui um terceiro pino para o fio-terra, para não citar ainda outras interfaces. Se o plug em questão não implementar a interface exigida pela tomada, ele não vai conseguir se plugar a menos que utilize um adaptador que implemente esta interface.
E através desta interface você é capaz de ligar um número variado de equipamentos que possuam plugs que a implementem. Desde forno elétrico, fogão, geladeira, televisor, aparelho de som, equipamentos de ginástica, compuadores, carregadores de celular, etc. Consegue enxergar a dimensão?
Assim também é na OOP. As classes não são obrigadas a herdarem umas das outras para serem semelhantes. Uma Interface pode ser criada, que defina todas as operações comuns que as classes que a implementem precisem ter, e então basta implementá-las nas classes para que elas possam ser plugadas por outras.
E é aí que a diversão do polimorfismo realmente começa. Digamos que você tenha uma interface ITarefaAgendada que implemente um método ExecutarTarefa. Implemente esta interface nas classes MensagemPromocional e VerificadorDeConectividade, assim ambos precisarão pussuir o método ExecutarTarefa. Imagine que o método quando o Agendador disparar, irá procurar por todas as terefas agendadas e em cada uma irá disparar o método ExecutarTarefa. Isso tudo sem saber (e nem ligar) se a tarefa é uma MensagemPromocional ou um VerificadorDeConectividade.
Agora sim, você está começando a compreender o grande universo do polimorfismo.

Conceitos de Orientação a Objetos – Parte 5 de 6

12 June, 2009 (21:19) | Conceitos, Tecnica de Programação | By: furlan

Polimorfismo
Polimorfismo é uma palavra complicada para um conceito simples. Não se trata de um recurso a ser implementado. Se trata de uma propriedade da linguagem de programação. O conceito é simples. Imagine: Uma classe base Cliente é extendida pela classe herdeira ClienteVirtual. O cliente base possui todas as informações concernentes a ele: endereço, telefone, pontos obtidos pelas compras feitas, etc. Já a classe herdeira, ClienteVirtual, possui os dados específicos para os cliente que farão compras pelo website: nome do usuário, senha, e-mail, etc.
Você tem clientes que fazem as compras pessoalmente no balcão, e clientes que fazem as compras pela internet. Mas e se os clientes da internet resolverem fazer uma compra no cartão? VocÊ vai pedir a ele que lhe forneça nome do usuário e senha no balcão?
A situação parece absurda pela mera simplicidade da resolução. As duas classes são parecidas, mas são duas classes, dois tipos de dados diferentes. O polimorfismo é a propriedade que uma linguagem tem de entender que, por exemplo, um clienteVirtual não deixa de ser um cliente, ou seja, continua podendo ser aceito como um simples cliente. Quando se dirige ao Balcão, o ClienteVirtual pode apresentar todos os dados que recebeu por herança do cliente, independente do Usuário e senha, pois no balcão os únicos dados que importam são os dados do cliente base.
Pode parecer óbvio agora, mas o polimorfismo é muito útil, principalmente quando entra o uso das interfaces.

Aprenda do Negócio

8 June, 2009 (19:15) | Mercado, Opinião | By: furlan

Um conselho que sempre passo para meus alunos e qualquer outra pessoa que está começando no mundo de desenvolvimento de software empresarial é: aprenda sobre o processo e o negócio que você está trabalhando.

Desenvolvemos software para gestão empresarial. Eu já expliquei aqui e aqui o que faz um ERP. Ou seja, o tipo de software que fazemos, ajuda a rodar as operações das empresas o que por si só não é nada trivial.
Read more »

Conceitos de Orientação a Objetos – Parte 4 de 6

8 June, 2009 (19:06) | Conceitos, Tecnica de Programação | By: furlan

Mais uma parte da série Conceitos de Orientação a Objetos, com Daniel Moreira Yokoyama:

Herança (ou derivação)
Você criou um sistema de loja virtual que vende cd’s. A orientação a objetos te permitiu criar uma classe CD, onde vocÊ agrupou todos os dados que dizem respeito aos CD’s: Título, Artista, Lista de músicas, Ano de lançamento, Gravadora, etc.
Após alguns meses no ar, seu cliente lhe diz que pretende expandir seu negócio para vender DVD’s. Isso vai exigir um esforço imenso de criar novas rotinas e novos tratamentos para cuidar de um ítem completamente novo ao sistema.
Para que se possa entender os reais motivos de tal apêlo da Orientação a Objetos em busca da reusabilidade, este cenário nos faz entender perfeitamente os problemas que a falta dela implicariam. É claro que, do ponto de vista arquitetônico, este panorama está sendo observado sob uma perspectiva inversa da ideal. Mas o ideal é algo atingido pela experiência.
Com a experiência que é adquirida ao longo do tempo usando a orientação a objetos, o profissional é capaz de, mesmo sem ter a menor idéia do plano de expanção do sistema (o cliente poderia decidir vender livros ou eletrônicos), prever que os pontos cruciais para uma possível derivação.
A derivação na OOP acontece através de herança. Uma classe herda (ou deriva) as características de uma outra, passando a conduzir todo o grupo de informações que a outra já fazia e, além disso, implementando características específicas.
No caso apresentado, poderia ser criado uma classe base produto, que possuiria o que todos os produtos de uma loja precisam ter: Preço, Descrição, código.
Uma segunda classe, CD, seria criada, herdando as características de Produto, mas implementando dados específicos do CD, como o Título, o nome do Artista, Gravadora, e ano de gravação.
Desta forma, a inclusão do novo negócio, fôsse DVD, fôsse livro, fôsse eletrônicos ou instrumentos musicais, seria bem menos trabalhosa.
A técnica de criar classes bases para derivar outras classes vêm da experiência do uso da Orientação a Objetos e da arquitetura de software. No começo é impossível não haver algum retrabalho ao notar que partes de determinadas classes seriam mais aproveitáveis se estivessem centralizados em uma classe base para ser extendido por outras classes herdeiras. Com o tempo esse tipo de percepção se torna mais fácil antes mesmo de implementar a aplicação.
Dica: Tente sempre abstrair os conceitos. Uma loja de CD é, antes de tudo, uma Loja. Se começar por aí vai entender que uma Loja vende Produtos. Um controle de estoque de Bebidas é, antes de qualquer coisa, um controle de estoque. Ao pensar desta forma você estará sempre deixando seu sistema facilmente extensível para outros tipos de expanções que seu cliente possa se interessar em fazer.