Quarta-feira, 1 de Julho de 2009

Onde obter informações sobre mainframe na web

Os profissionais de TI que trabalham com plataforma baixa (Linux, Oracle, Java, .Net, etc.), já estão habituados há muito tempo a buscar informações sobre estes assuntos na internet.

Porém existe uma parcela de profissionais que trabalham com equipamentos de grande porte (o famoso mainframe), que ainda tem poucas fontes de informação disponíveis na rede.

O problema, é que hoje tem se formado poucos profissionais para trabalhar com mainframes e como a tecnologia neste caso é mais estável, quem já conhece não precisa buscar novas informações o tempo todo e quem não conhece geralmente aprende com o apoio de um tutor.

Eu mesmo passei por essa situação há algum tempo, eu sempre trabalhei com plataforma baixa e, de repente, peguei um projeto em mainframe sem conhecer nada do assunto. Além do apoio dos colegas, eu tive que procurar informações adicionais.

Ainda bem que, para quem precisa obter informações sobre JCL, COBOL, MVS, CICS, Natural, Adabas, etc. nem tudo está perdido, existem uma série de opções disponíveis na web, além de fóruns para troca de informações e esclarecimento de dúvidas.

Abaixo, eu vou listar as principais referências que utilizei nas minhas pesquisas.

  • The COBOL Center

http://www.infogoal.com/cbd/cbdhome.htm

Artigos, tutoriais e outras informações sobre a linguagem de programação COBOL.

  • The American Programmer

http://www.theamericanprogrammer.com/

Possui muito material sobre as tecnologias utilizadas em mainframes.

  • MVS Help

http://mvshelp.net/

Material para o programador mainframe.

  • IBM Mainframes

http://www.ibmmainframes.com/

Material e fórum sobre mainframes.

  • Mainframe Tutorials

http://www.exforsys.com/tutorials/mainframe.html

Tutoriais para mainframe.

  • Adabas and Natural Community

http://communities.softwareag.com/ecosystem/communities/public/developer/adanat/index.html

Comunidade de desenvolvedores Natural / Adabas, disponibilizada pelo fornecedor de ambas as ferramentas, a Software AG.

  • IBM Support & downloads

http://www.ibm.com/support/us/en/

Página de suporte da IBM, que é a fornecedora da maioria das ferramentas usadas nos mainframes produzidos por ela mesma.

  • IBM Mainframe Forum

http://ibmmainframeforum.com/

Fórum de discussão sobre assuntos relacionados a mainframe.

  • Fórum de Mainframes

http://www.mainframes.com.br/

Fórum brasileiro de discussão sobre mainframes.

Domingo, 28 de Junho de 2009

O primeiro webmail brasileiro

Quando a internet começou a se popularizar no Brasil, ela era basicamente uma ferramenta para obtenção de informações, ou seja, você entrava nas páginas e lia o que estava escrito de forma passiva. O conceito de usar a internet como uma plataforma de obtenção e prestação de serviços, além de relacionamento social, surgiu posteriormente.

Por volta de 1998, eu tomei contato com um serviço de webmail grátis e em português. É isso mesmo: de graça.

Aquilo era uma coisa sensacional, bastava você se cadastrar no site e passava a ter um endereço de email que podia ser acessado de qualquer lugar do mundo via web e sem a necessidade de instalar nenhum programa no computador.

Era o Basemail. Foi um webmail de interface simples e que eu usei durante bastante tempo. Para se ter uma idéia de como a quantidade de usuários era pequena naquela época, o meu username tinha apenas 3 letras. Depois, com a concorrência dos grandes portais, o Basemail foi perdendo importância até que encerrou os seus serviços em 2001.

De qualquer forma, gostaria de registrar os meus agradecimentos aos criadores do Basemail pelos serviços prestados de forma pioneira no Brasil.

Sábado, 27 de Junho de 2009

Agora também no Twitter

Agora eu também estou no Twitter. Quem quiser conferir:

http://twitter.com/marcfastjobs

Sexta-feira, 5 de Junho de 2009

3º mandato para Lula: Golpe contra a democracia

Para que um país seja considerado democrático, existem uma série de questões que precisam ser levadas em consideração. Não basta que o país realize eleições periodicamente, para que ele seja democrático. Para confirmar essa afirmação com um exemplo extremo, basta lembrar que Cuba realiza eleições regularmente desde que Fidel Castro assumiu o poder, só que todo mundo já sabe antecipadamente quem serão os eleitos. Eu acredito que ninguém, com um mínimo de sensatez, já tenha classificado o regime cubano como uma democracia.

Um país para ser realmente democrático precisa ter eleições abertas com a participação de toda a sociedade, todos os cidadãos aptos pela legislação tem que poder votar e ser votado, precisa ter liberdade de opinião e manitestação, precisa ter equilíbrio entre os poderes executivo, legislativo e judiciário e cada um deles tem que ser independente e, como a cereja do bolo, precisa ter revezamento entre os ocupantes dos cargos majoritários.

Não se pode considerar democrático um país onde o mesmo mandatário se reelege indefinidamente usando a máquina estatal que ele tem ao seu dispor.

Alguém pode alegar que em alguns países os primeiros ministros ficam no poder por décadas. Contudo, o parlamentarismo tem peculiaridades muito diferentes de um regime presidencialista. No parlamentarismo o primeiro ministro é indicado pela maioria do legislativo, ou seja, é como se fosse um representante do legislativo atuando no executivo, que por sua vez é o representante do povo. O revezamento no poder está garantido pela representação dos cidadãos no parlamento. Já o regime presidencialista, é extremamente personalista, onde o presidente tem uma força quase que absoluta já que sua escolha não passa pelo crivo do parlamento.

Portanto, os parlamentares que estão propondo a possibilidade de um 3º mandato para o presidente, estão tramando um golpe contra a frágil e incipiente democracia brasileira. Eles estão tentando fazer o Brasil se aproximar da Venezuela e da Bolívia, ao invés de mirar o bom exemplo que o Chile vem dando desde o fim da ditatura, seja no aspecto político, como também no econômico e institucional.

Eu gosto muito do Lula, mas, não vejo a menor necessidade de perpetuá-lo no "trono" da presidência. Eu considero que nós temos inúmeras pessoas preparadas e motivadas a assumir a presidência, seja no próprio PT ou em outros partidos.

Assim sendo, nos resta pressionar os deputados a não compactuarem com essa tentativa de golpe.

Veja no link abaixo a lista dos deputados que assinaram a emenda do terceiro mandato:

http://www1.folha.uol.com.br/folha/brasil/ult96u576976.shtml

Quinta-feira, 28 de Maio de 2009

SQL: Uso do JOIN em cláusulas SELECT

O SQL (Structured Query Language, ou Linguagem de Consulta Estruturada) é a linguagem padrão para recuperação de informações em banco de dados relacionais. Ela é uma linguagem muito fácil de usar e ao mesmo tempo poderosa, já que permite combinar informações obtidas a partir de diversas tabelas e usar uma diversidade muito grande de filtros de seleção.

O funcionamento do SQL é baseado na teoria de conjuntos, ou seja, as tabelas são consideradas conjuntos de dados e o resultado das pesquisas são subconjuntos que podem ser obtidos, por exemplo, através da interseção ou união dos conjuntos originais.

Tendo isso em mente, é fácil usar as cláusulas SQL para realizar pesquisas mais complexas. Para isso, o SQL disponibiliza o comando JOIN, que permite combinar dados de tabelas diferentes.

Para mostrar como o JOIN funciona, eu vou dar um exemplo bem básico, mas, que pode ser facilmente extrapolado para situações mais complexas, desde que se tenha o conceito em mente.

Imagine um banco de dados que possua apenas duas tabelas, cujos layout e conteúdo estão detalhados abaixo:

  • Modelo de dados e conteúdo das tabelas

Pessoa

idPessoa

nomePessoa

5

Cinconegue

10

Dezembrino

12

Dozeario

14

Quatorzeano

15

Quinzenio

17

Dezessetino

Automovel

idAuto

idPessoa

descAuto

B

(null)

Fusca branco

E

14

Opala bege

F

(null)

Passat amarelo

H

(null)

DKW

J

5

Gordini marrom

K

(null)

Brasília branca

M

17

Passat cinza

N

12

Belina verde

P

(null)

Fiat 147

Q

14

Fusca azul

R

12

Brasília preta

T

14

Opala vermelho

Se representarmos o conteúdo deste banco de dados em forma de conjunto, ele ficaria assim:

Feito isso, nós podemos entender melhor o efeito do JOIN quando aplicado a este conjunto de dados. Veja os exemplos abaixo:

  • INNER JOIN

O INNER JOIN retorna o sub-conjunto interseção dos conjuntos envolvidos na pesquisa.

SELECT Pessoa.idPessoa, nomePessoa, idAuto, Automovel.idPessoa, descAuto
FROM Pessoa INNER JOIN Automovel ON Pessoa.idPessoa = Automovel.idPessoa
ORDER BY 1, 3;

Pessoa.idPessoa

nomePessoa

idAuto

Automovel.idPessoa

descAuto

5

Cinconegue

J

5

Gordini marrom

12

Dozeario

N

12

Belina verde

12

Dozeario

R

12

Brasília preta

14

Quatorzeano

E

14

Opala bege

14

Quatorzeano

Q

14

Fusca azul

14

Quatorzeano

T

14

Opala vermelho

17

Dezessetino

M

17

Passat cinza

Ou seja só são exibidos elementos que estão nos dois conjuntos. Esta é a utilização mais comum do JOIN nas pesquisas que envolvem mais de uma tabela.

O INNER JOIN pode ser escrito também no formato abaixo (chamado de implícito) e o resultado é exatamente o mesmo:

SELECT Pessoa.idPessoa, nomePessoa, idAuto, Automovel.idPessoa, descAuto
FROM Pessoa, Automovel
WHERE Pessoa.idPessoa = Automovel.idPessoa
ORDER BY 1, 3;

  • LEFT JOIN

O LEFT JOIN retorna todos os elementos que estão no conjunto da esquerda (a primeira tabela), mais os elementos que estão na interseção.

SELECT Pessoa.idPessoa, nomePessoa, idAuto, Automovel.idPessoa, descAuto
FROM Pessoa LEFT JOIN Automovel ON Pessoa.idPessoa = Automovel.idPessoa
ORDER BY 1, 3;

Pessoa.idPessoa

nomePessoa

idAuto

Automovel.idPessoa

descAuto

5

Cinconegue

J

5

Gordini marrom

10

Dezembrino

(null)

(null)

(null)

12

Dozeario

N

12

Belina verde

12

Dozeario

R

12

Brasília preta

14

Quatorzeano

E

14

Opala bege

14

Quatorzeano

Q

14

Fusca azul

14

Quatorzeano

T

14

Opala vermelho

15

Quinzenio

(null)

(null)

(null)

17

Dezessetino

M

17

Passat cinza

  • RIGHT JOIN

O RIGHT JOIN, ao contrário, retorna todos os elementos que estão no conjunto da direita (a segunda tabela), mais os elementos que estão na interseção.

SELECT Pessoa.idPessoa, nomePessoa, idAuto, Automovel.idPessoa, descAuto
FROM Pessoa RIGHT JOIN Automovel ON Pessoa.idPessoa = Automovel.idPessoa
ORDER BY 1, 3;

Pessoa.idPessoa

nomePessoa

idAuto

Automovel.idPessoa

descAuto

(null)

(null)

B

(null)

Fusca branco

(null)

(null)

F

(null)

Passat amarelo

(null)

(null)

H

(null)

DKW

(null)

(null)

K

(null)

Brasília branca

(null)

(null)

P

(null)

Fiat 147

5

Cinconegue

J

5

Gordini marrom

12

Dozeario

N

12

Belina verde

12

Dozeario

R

12

Brasília preta

14

Quatorzeano

E

14

Opala bege

14

Quatorzeano

Q

14

Fusca azul

14

Quatorzeano

T

14

Opala vermelho

17

Dezessetino

M

17

Passat cinza

Os exemplos acima, apesar de muito simples, podem ser facilmente extrapolados para a maioria das pesquisas onde é necessária a pesquisa em mais de uma tabela, pois, apesar de ser possível existir mais complexidade nas cláusulas, o raciocínio básico é exatamente o mesmo.

Segunda-feira, 18 de Maio de 2009

Processos X Projetos

Não é raro que as pessoas confundam essas duas palavras e seus significados: processos e projetos. Mas a distinção dos dois termos é fundamental para quem está inserido numa organização.

Um processo pode ser definido como uma sequência de atividades dinâmicas e contínuas, logicamente relacionadas, executadas para obter um resultado bem definido. Outra definição descreve o processo como uma sequência de passos, tarefas e atividades que convertem entradas em uma saída. Um processo é contínuo e repetitivo.

Já um projeto é um empreendimento temporário com o objetivo de criar um produto ou serviço único. Tem início, meio e fim. O projeto é normalmente autorizado como resultado de uma ou mais considerações estratégicas: pode ser uma demanda de mercado, necessidade organizacional, solicitação de um cliente, avanço tecnológico ou requisito legal. Veja as principais características dos projetos: (1) são temporários, possuem um início e um fim definidos; (2) são planejados, executados e controlados; (3) entregam produtos, serviços ou resultados exclusivos; (4) são realizados por pessoas; e (5) são realizados com recursos limitados.

Ou seja, em geral, os processos estão relacionados ao dia-a-dia das empresas, enquanto os projetos estão mais relacionados à inovação ou novos produtos e serviços.

Quinta-feira, 30 de Abril de 2009

Calculadora programável TI-58C da Texas Instruments

A primeira "coisa" que eu aprendi a programar foi uma calculadora TI-57 da Texas Instruments lá pela década de 1980.

Eu fazia curso de Técnico em Eletrônica e o colégio onde eu estudava promovia cursos de programação de calculadora. O modelo em que eu aprendi, tinha visor de LED, 50 passos de programação e 8 registradores de memória. Ou seja, era possível gravar em sua memória programas com no máximo 50 instruções (sendo que até o sinal de uma operação era contado como uma instrução) e 8 resultados intermediários.

A maneira de programar era bem simples, você gravava na memória cada passo da operação que estava querendo executar, como se estivesse fazendo o cálculo manualmente e existiam alguns comandos que permitiam dar "saltos" na sequência de comandos (GTO: Go To, SBR: Sub-routine), fazer "loops" (DSZ: Decrement and Skip on Zero), testar igualdade ou diferença, ou armazenar o resultado em uma memória.

Eu gostei muito do assunto e "infernizei" o meu pai até que ele comprasse uma calculadora programável TI-58C para mim. Este modelo já era bem melhor que a TI-57: podia ter 480 passos de programação ou 60 memórias (os dois ocupavam os mesmos endereços de memória) e esses valores podiam ser expandidos com um módulo externo de memória. O mais importante, era que a TI-58C podia ser desligada sem que o programa armazenado na memória se perdesse, ao contrário do que acontecia com a TI-57.

Quando eu coloquei as mãos na calculadora, aprendi logo todos os seus comandos e recursos. Passei a aproveitar ao máximo todo o seu potencial, fazia desde programas de cálculo até joguinhos numéricos. Com isso, virei uma espécie de consultor informal em programação de calculadoras para os meus colegas de escola.

Aprender a programar calculadoras, além de ter me ajudado a fazer cálculos durante o curso técnico, me ensinou os princípios básicos da lógica de programação e me deu certeza que eu gostava deste assunto.

Logo tempo depois, surgiram os primeiros microcomputadores com processador Z80 e eu comecei e me voltar para a programação em Basic. Mas, isso já é outra história.

Sábado, 25 de Abril de 2009

Parabéns ministro Joaquim Barbosa

O ministro do STF Joaquim Barbosa ao criticar o presidente do mesmo tribunal, Gilmar Mendes, falou o que a grande maioria das pessoas gostaria de falar, mas não tem oportunidade.

Eu não vou me estender sobre o bate-boca, pois, ele já foi amplamente coberto pela imprensa.

Gostaria apenas deixar registrado os meus parabéns ao ministro Joaquim Barbosa, se houvessem mais juízes com esta postura, o judiciário brasileiro seria bem melhor.

Quem quiser saber detalhes do caso, clique aqui.

Quinta-feira, 23 de Abril de 2009

Carta de Jon "maddog" Hall para o presidente Obama

Jon "maddog" Hall é um dos maiores defensores e divulgadores do software livre. Como parte de sua pregação, ele escreveu um artigo em forma de carta para o presidente Barack Obama.

O artigo precisa ser lido com um olhar crítico, pois, afinal de contas, foi escrito por um defensor tão ardoroso do software livre, que às vezes comete alguns exageros nas suas análises.

Em determinados trechos do artigo, "maddog" passa a impressão que todos os problemas de quem usa software acabarão a partir do momento em que passar a adotar o software livre. Em outros trechos, ele faz algumas estimativas de economia com software livre que carecem de mais substância para se sustentarem.

Mas de qualquer forma, é um artigo muito interessante para que possamos refletir e discutir como deve ser a relação entre quem produz e quem utiliza software.

O artigo pode ser lido em:

http://linuxmagazine.uol.com.br/maddog/economizando_cinco_bilhoes_de_dolares_por_dia

Quinta-feira, 9 de Abril de 2009

"Carreira em Y" nas profissões tecnológicas

Tem um email que já rola por aí há bastante tempo, mas, até hoje eu me divirto quando o leio. Eu não sei quem é o autor, mas, ele está de parabéns. É um texto que explica como um analista pode subir na carreira permanecendo na área técnica, a famosa "Carreira em Y". Para quem não viu, ou para quem quer refrescar a memória, segue o texto abaixo:

A "Carreira em Y" nas profissões tecnológicas dos analistas

Nas grandes empresas ou qualquer empresa que tenha um grande numero de pessoal de tecnologia, rola o que eles chamam de "Carreira em Y". Essa denominação foi criada para que os profissionais que não quiserem passar para a área administrativa possam continuar subindo na empresa na área técnica, e ganhando melhores salários. Porém, todo mundo reclama que é dificílimo ser promovido. Então alguém criou o guia de como ser promovido na "Carreira em Y".

Analista 1

O indivíduo começa como Analista 1 e pode chegar a ser Analista 8. Os Analistas 1 são comumente conhecidos como Analistas Baby, ou seja, um pouco mais que estagiários.

Condições necessárias para vocês virarem Analistas 2, 3, 4, 5, 6, 7 e 8:

Analistas 2 e 3

Faça o seu dever, cumpra seus prazos, fique algumas vezes depois do horário, faça cursos de aperfeiçoamento, seja sociável e trabalhe em equipe. É necessário destruir plantações de pepinos (pepino = problema). Noções de Inglês Técnico.

Exemplo: Humanos normais.

Analista 4

Idem ao anterior + Matar um leão por dia (leão = um grande problema), com uma carga horária de 12 horas diárias. Ser responsável por 30% da administração de uma rede pequena de 700 usuários. Inglês, espanhol e Visual Basic obrigatórios + 1 linguagem desejável.

Exemplo: Fodões

Analista 5

Idem ao anterior + Um dragão por semana (dragão = é uma problema enorme), com uma carga horária diária de 16 horas sem feriados. Ser responsável por 40% da administração de uma rede do tipo 1000 Usuários. Inglês, francês, japonês, espanhol, VB e C++ obrigatórios.

Exemplo: Mister M, David Coperfield, Padre Quevedo.

Analista 6

Idem aos anteriores, só que, mata-se um leão por hora, um dragão por dia, um Alien por semana (Alien = é um problema do outro mundo) e mais uma área equivalente a meio globo terrestre em plantações de pepino. Carga horária diária de 20 horas. Ser responsável por 75% da administração de uma rede de 2500 usuários e 30% de todos os projetos internos de tecnologia. Inglês, francês, alemão, japonês, espanhol, aramaico, latim, mandarim, vietnamita, VB, C++, Asp, Dhtml, Cobol obrigatórios.

Exemplo: Criaturas Mitológicas, Gnomos, Ninjas com o poder dos 9 cortes.

Obs: Assim como os Ninjas, somente um Analista 6 pode matar um Analista 6.

Analista 7

Idem aos anteriores, só que, os leões e dragões fogem de você. Você terá que caçá-los em outras dimensões e planetas. Uma área equivalente a uma estrela classe 5 (Sol) em plantações de pepino e três Aliens e um Predador por dia (Predador = é um problema impossível de ser resolvido, exemplo, fazer um corpo com massa m viajar com velocidade acima da velocidade da luz). Carga horária diária de 25 horas. Ser responsável por 100% da administração de uma rede de 6000 usuários e 60% de todos os projetos internos de tecnologia. Inglês, francês, alemão, japonês, italiano, espanhol, aramaico, latim, mandarim, vietnamita, Borg, Taelon, Klingon, Volcano, Pascal, Fortran, C++, Asp, Java, Xml, Easytrieve, Ims/Dc e todas as 13500 línguas e dialetos que o C3PO fala no filme Star Wars, obrigatórios.

Exemplo: Mago Merlin, Jedis como Luck Skywalker e Obi-Wan Kenobi, Mestre Yoda (daí o nome de carreira em Y), Darth Maul, Spectroman.

Não desanime, conseguir você irá, um analista 7 você será. Grande poder tem o lado negro Administrativo da Força. Você também terá que ser um Highlander, pois só com uma vida eterna você terá tempo para atingir este cargo, mas não se esqueça que só pode haver um e não deixe que nenhum outro analista 7, corte sua cabeça.

Analista 8

É o cargo máximo no Universo e você será considerado como o mestre dos elementos. Você terá o poder sobre a vida e a morte dos seres, logo você não precisa mais matá-los, você apenas deseja que os problemas se resolvam ou cria novas leis físicas no universo para que isso aconteça. E você irá perdoar a todos. Você será onisciente, onipresente e onipotente. Carga horária diária indefinida, para você o tempo e o espaço já não existem. Ser responsável por 100% dos projetos e 100% da área de tecnologia de uma empresa de 30000 usuários, em 7 dias.

Exemplo: Deus, Buda, Alá, Zeus, Odin, A Força.

Conclusão: Perceberam como é simples desenvolver carreira técnica?