sexta-feira, 6 de dezembro de 2013

Flex sdk 4.11 -> HTML5

Saiu o sdk 4.11.
Ainda tem bastante coisa a ser feita para ter tudo em HTML5 mas é uma boa notícia.

Veja mais:
Apache Flex com saída para HTML5,Javascript e CSS. Trans-compilação para vários clientes
Apache Flex 4.11 Released!
What's new with Apache Flex (Dec 2013)


sexta-feira, 4 de outubro de 2013

Integritas - Oportunidades PHP (2)

A Integritas Tecnologia possui duas oportunidades para PHP, com bom inglês, tempo integral, home-office para início imediato.

Quem tiver interesse, por favor, envie currículo para rh@integritas.com.br


sábado, 28 de setembro de 2013

Shakes industrializados secam músculos e não gorduras

Esse link só vem a confirmar que perda de peso se consegue com reeducação alimentar e exercícios físicos.


segunda-feira, 16 de setembro de 2013

Superando barreiras no desenvolvimento iOS

Para quem está começando a programar para iOS, como eu, indico a palestra abaixo, muitas dicas e sugestões de frameworks.



terça-feira, 10 de setembro de 2013

T&T seleciona: Analista Programador C

Analista Programador C


  • Experiência em desenvolvimento C (preferencialmente para Windows);
  • Conhecimentos de Redes e Configuração de Redes;
  • Inglês leitura/escrita 

Desejável: Experiência em desenvolvimento para sistemas embarcados e conhecimentos de Linux.


Interessados enviar currículos com pretensão salarial para: talentos@tet.com.br

quinta-feira, 22 de agosto de 2013

Desenvolvedor Java/Ruby - Integritas

A Integritas Tecnologia possui oportunidade para desenvolvedor Java/Ruby, tempo integral.

Quem tiver interesse, por favor, envie currículo para rh@integritas.com.br

terça-feira, 20 de agosto de 2013

Desenvolvedor Python/Django - Integritas

A Integritas Tecnologia possui uma oportunidade para desenvolvedor Python/Django, sênior, fluente em inglês.

Quem tiver interesse, por favor, envie currículo para rh@integritas.com.br


segunda-feira, 29 de julho de 2013

Oportunidade Mobile - Integritas (remoto)

Aproveitando meu post anterior aproveito para divulgar oportunidades em desenvolvimento mobile, principalmente iOS na Integritas onde trabalho.

Quem tiver interesse, por favor, envie currículo para rh@integritas.com.br

Treinamento de iOS

Nos próximos dias irei participar de um treinamento na TargetTrust de iOS.

Já tinha dado uma olhada antes mas agora pretendo me aprofundar nessa tecnologia, já tinha feito o treinamento de Android também pela TargetTrust.

Mesmo gostando de desenvolvimento web a tendência é mobile, então, nada mais certo do que acompanhar a maré.



segunda-feira, 22 de julho de 2013

Auditoria em PostgreSQL

Uns anos atrás na Sadig onde trabalhava precisei alterar o produto BI para fazer com que as chamadas a banco de dados que já "conversavam" com dbf, SQL Server e Oracle para também rodarem em PostgreSQL, gostei muito desse banco, e cada vez tenho aprendido mais sobre ele.

Agora num cliente, a Lexsis, precisamos implementar o recurso de auditoria no PostgreSQL. Se estivéssemos usando Hibernate poderíamos usar o Envers o qual usando a anotação @Audited na classe com a anotação @Entity cria uma nova tabela com atributos adicionais no banco para gravar as alterações na tabela da entity

Outra opção é ter uma única tabela e gravar o DTO serializado num campo dessa tabela, mas não seria fácil de identificar só utilizando a console do banco.

Usamos JDBC puro, então, uma opção que foi definida em reunião foi criar um schema para auditoria com uma cópia de cada tabela com campos adicionais específicos para auditoria da aplicação usando triggers
Bem, mas para cada tabela se precisa criar a trigger / function e um script para criar a tabela de auditoria, o que na primeira vez se torna trabalhoso e repetitivo pelo número de tabelas existentes em cada aplicação que irá usar a auditoria, porque a trigger é vinculada a uma única tabela e a uma function. Usar uma única function é uma ideia mas não cheguei a um código que contemplasse o meu cenário, mas não perdi muito tempo pois sempre achei interessante ser o mais independente do banco, caso seja necessário migrar para outro.

A ideia de ter uma tabela de espelho num schema separado é interessante por ser mais fácil a visualização, não necessitando de uma interface apropriada. Usando este formato e pensando em otimizar o processo me foquei em dois pontos: como otimizar a criação das tabelas espelhos e como não precisar das triggers.

Referente a criação das tabelas, dando uma olhada no create table do PostGreSQL vi que existe as cláusulas INHERITS e LIKE, o primeiro permite herdar a estrutura de uma ou mais tabelas (multi-herança), onde qualquer alteração nas estruturas das tabelas herdadas como alteração de um campo ou inclusão afeta as tabelas filhas o que resolve a situação de ter os mesmos campos de auditoria em todas as tabelas, enquanto que o LIKE permite pegar a estrutura de outra tabela, mas diferente do INHERITS, alterações na tabela de origem não se propaga para a tabela de destino. O LIKE não copia os valores default da tabela de origem (EXCLUDING DEFAULTS) só o faz com a adição de INCLUDING DEFAULTS.

Referente a segunda opção, para ficar independente de banco de dados utilizei introspection / reflection e anotações. Em cada DTO / entity marquei com uma anotação para identificar a tabela (equivalente o @Entity do Hibernate) do banco e outra anotação para identificar o campo id (primary key - PK) na tabela (equivalente o @Id do Hibernate). Com isso passo o DTO para uma classe com mais alguns parâmetros da aplicação que via introspection / reflection monta um insert...select para popular a tabela de auditoria, ficando assim independente de banco de dados e se for necessário migrar para outro banco só se altera uma classe. 
O único cuidado que se tem que ter com o insert...select é que a ordem dos campos da cláusula select tem que fechar com a ordem dos campos da tabela do insert, pois não vincula o campo / valor da tabela do select com o campo na tabela de destino, podendo dar erro de tipo inválido ou gravar um valor de um campo em outro por estarem na mesma ordem e terem o mesmo tipo de dados.

Com esta metodologia, usando introspection / reflection e anotações, consegui montar um início de um ORM, passando o DTO consigo fazer a exclusão, agora o próximo passo é fazer o insert, update passando o DTO e a listagem lendo os valores da tabela e populando os DTOs necessários.


terça-feira, 9 de julho de 2013

T&T seleciona: Analista Programador Pleno

Analista Programador Pleno

Requerido:
  • Graduação completa ou cursando em Ciências da Computação, Sistemas de Informação e afins;
Conhecimentos em:
  • Testes Automatizados             
  • Shell script, Vbscript, Java, C++;
  • Inglês Intermediário
Pretensão salarial: a combinar


Interessados enviar currículos com pretensão salarial para: talentos@tet.com.br

quarta-feira, 12 de junho de 2013

T&T seleciona: Desenvolvedor iOS e Estágio em Desenvolvimento e Testes

Desenvolvedor iOS (1 vaga)

Requerido:
  • Graduação completa ou cursando Ciências da Computação, Sistemas de Informação e afins.
Conhecimentos em:
  • iOS              
  • C-C++
  • Língua inglesa. 
Desejável:
  • Conhecimentos: Java, Html            

Pretensão salarial: a combinar


Estágio em Desenvolvimento e Testes (5 vagas)

Requerido:
  • Cursando Graduação a partir do 6º semestre na área de TI.
  • Inglês: Intermediário
Conhecimentos em:
  • Programação Java              
  • C++
  • Web (Javascript, HTML, CSS)
  • Testes de software  
Desejável:
  • Conhecimentos: Java, Html           

Pretensão salarial: a combinar


Interessados enviar currículos com pretensão salarial para: talentos@tet.com.br

quinta-feira, 23 de maio de 2013

T&T seleciona: Designer de interação

Designer de interação

Requerido:
  • Graduação completa ou cursando em Ciências da Computação, Sistemas de Informação e afins.
Conhecimentos em:
  • Design de interação              
  • Ferramentas Adobe Creative Suíte       
  • Metodologias ágeis                       
  • Língua inglesa. 
Desejável:
  • Conhecimentos: Javascript, Html, CSS.           

Interessados enviar currículos com pretensão salarial para: talentos@tet.com.br



quarta-feira, 8 de maio de 2013

T&T seleciona: Analista Programador Pleno

Analista Programador Pleno

Requerido:

  • Nível superior cursando ou concluído;
  • Sólidos conhecimentos em Java e Ruby on Rails
  • Conhecimento em Javascript
  • Inglês avançado

Benefícios:

  • Horário flexível/compensação               
  • Jornada de segunda a sexta        
  • Vale Refeição (R$ 19,00)                        
  • Vale transporte
  • Plano de Saúde Unimed                         
  • Plano Odontológico
  • Avaliações de Desempenho                   
  • Seguro de vida
  • Programa de Inglês                                
  • Incentivo para cursos e treinamentos
 
Salário a combinar
Interessados enviar currículos com pretensão salarial para: talentos@tet.com.br


segunda-feira, 29 de abril de 2013

Oportunidades divulgadas na Holden RH

Repassando a pedido.

Arquiteto de Sistemas Sênior

Atividades:
Atuar na área de arquitetura de TI assegurando a coerência e alinhamento das aplicações com o negócio, alinhamento dos mapas de arquitetura com os processos de negócio, identificando quais aplicações atendem os requisitos e participando dos processos de desenho, construção (ou aquisição) e integração dessas aplicações garantindo a aderência aos padrões de arquitetura.

Requisitos:
Experiência em projetos de grande porte. Sólida e comprovada experiência como arquiteto de sistemas.
Formação superior completa

A empresa possui remuneração diferenciada, contratação CLT e amplo pacote de benefícios:


2 vagas Desenvolvedores Java web pleno/sênior


Para atuar em empresa de TI com mais de 15 anos de mercado em ambiente que proporciona o desenvolvimento profissional

Remuneração compatível com o mercado

Desenvolvedor PHP – 1 vaga para Porto Alegre e 1 vaga para Novo Hamburgo


Outras vagas para atuar em Porto Alegre, São Paulo ou Rio de Janeiro na área de tecnologia podem ser consultadas em nosso site www.holdenrh.com.br

domingo, 28 de abril de 2013

IRPF 2013 - Rendimentos Recebidos Acumuladamente

Na minha opinião IRPF é desonesto, tudo que se compra tem imposto, quando se recebe o pagamento já vem excessivamente tributado sendo a tributação trabalhista brasileira uma das mais pesadas. 

Fora os pedágios que estão lá para melhorar as rodovias o que às vezes não acontece. Você sabia que os combustíves tem um tributo (CIDE) justamente para isso?

Aí você se esforça, faz cursos, se empenha no trabalho para ganhar um salário maior, e aí ganhando um aumento você entra numa outra faixa de IR de percentual maior.
Se pelo menos os serviços públicos básicos, educação, transporte, saúde fossem de primeira qualidade.

PARA ONDE VAI TODO O DINHEIRO PAGO COM IMPOSTOS?

Sinceramente somos muito pacatos, deixamos as coisas acontecerem.

Bem, passado o desabafo, quero comentar sobre Rendimentos Recebidos Acumuladamente (RRA).

Estava fazendo o IRPF da minha cunhada e o ano passado ela ganhou uma causa trabalhista devido um aumento salarial que não tinha sido incorporado, ela é professora municipal, sendo que ao receber acumulado o leão deu uma grande mordida.
Nesses casos a tributação é diferenciada, Rendimentos Recebidos Acumuladamente (RRA), tendo uma ficha específica no programa de declaração de IR. Essa ficha aparece no menu esquerdo sendo o nono item acima de Imposto Pago / Retido.

O que quero chamar a atenção é que na guia de rendimentos recebida pela prefeitura este valor apareceu no quadro Rendimentos Tributados Recebidos de Pessoa Jurídica, o que não pode, nesse quadro deve aparecer somente o valor recebido devido trabalho no ano de 2012, e o que ela recebeu devido a causa trabalhista deveria estar no quadro específico, RRA. No lançamento inicial lancei na mesma ficha no programa de IR fazendo com que ela não conseguisse recuperar o valor retido na fonte da causa trabalhista, sendo que o advogado dela comentou que ela conseguiria.
Depois de muito pesquisar encontrei este vídeo da Sevilha Contabilidade que explica muito bem. Tem coisas do IR que lendo no site não tem como entender devido a linguagem cheias de leis, etc.

Resumo da história, amanhã, faltando 2 dias para a data final de entrega ela terá que pedir para a prefeitura que alterem a guia de rendimentos para que ela possa receber o valor retido da causa trabalhista e não caia na malha fina devido um erro que não é dela.

Destacando então: se você recebeu alguma causa trabalhista no ano passado verifique a sua guia de rendimentos para não ter problemas com o leão.

[]s

quinta-feira, 25 de abril de 2013

sábado, 6 de abril de 2013

sábado, 16 de março de 2013

Concatenação de Strings e Cálculo com precisão

Dois tópicos aparentemente simples que esbarramos seguidamente programando em Java é qual a melhor forma de concatenar Strings, usando o operador +, StringBuilder ou StringBuffer e o outro tópico é como fazer cálculos com precisão.

Já aplico estes conceitos já faz algum tempo e quando um colega me pergunta tento explicar da melhor forma, colocando a minha leitura em dia encontrei dois posts da Caelum que explicam muito bem estes pontos, posts que indicarei a leitura toda vez que um colega me perguntar sobre o assunto.



terça-feira, 12 de março de 2013

Oportunidade - Desenvolvedor Java Web - TECNOPUC - POA - RS

A Datum T.I., empresa do ramo da Tecnologia da Informação localizada no TECNOPUC em Porto Alegre - RS, um dos maiores Parques Tecnológicos do País seleciona:

Desenvolvedor Java Web
Experiência em: HTML 5, CSS 3, JavaScript (Prototype e JQuery) e JSP (JavaServer Pages).
Requisitos: Experiência em desenvolver interfaces para serviços de alta disponibilidade;
Projeto Pontual de 3 meses.
Local de Trabalho: Porto Alegre – RS.
Remuneração: A Combinar + Benefícios;
Forma de Contratação: CLT / PJ
Encaminhar currículo para danielle.carvalho@datumcorp.inf.br 


segunda-feira, 4 de março de 2013

Oportunidades - Porto Alegre

Programador .Net JR - Bairro Cidade Baixa - Porto Alegre
Remuneração R$ 2.000 CLT - requisito 1 ano de experiência com .Net

Técnico de Suporte a Sistemas - Bairro Centro - Porto Alegre
Remuneração R$ 1.500 (mais dissídio) CLT - requisito CNH categoria B, superior completo ou em andamento e disponibilidade para viagens.

Desenvolvedor Delphi - Bairro Higienópolis - Porto Alegre
Remuneração R$ 2.500 a R$ 3.500 CLT - requisito experiência com Delphi 7 e sistemas de gestão (ERP).

Interessados enviar currículo atualizado com pretensão salarial para talentos@aemyoursrh.com.br - Escrever o Nome da vaga no campo Assunto do e-mail.

quinta-feira, 28 de fevereiro de 2013

Módulos e gerenciamento de memória

O problema dos módulos sempre foi e ainda é o gerenciamento de memória, mesmo agora na versão 4, fiz um teste com a versão 4.5.1, mesmo depois de descarregar o módulo usando loader.url = null e loader.unloadModule o módulo ainda continua ativo consumindo memória juntamente com os recursos que este carregou.

Um exemplo, se criar um módulo que tem um timer que de tantos em tantos segundo faz uma requisição http ou com um música tocando, depois que você o descarregar você verá que as requisições http ainda continuam ocorrendo e que a música ainda está tocando.

Nesse caso, além de "descarregar" o módulo é necessário desativar os recursos, mas mesmo assim a memória ainda estará sendo usada.

Não vejo a necessidade de usar módulos para conter somente uma tela, são realmente úteis com projetos muito grandes e mesmo assim tem que ser bem avaliado, porque ao gerar o swf da aplicação e colocar no servidor o client / browser irá identificar o novo swf e irá utilizá-lo.

E mesmo numa aplicação grande que terá benefícios reais modularizar o projeto acredito que usar sub-apps é mais recomendável, isto é, em vez de usar módulos criar sub-projetos cada um tendo o seu swf podendo ser independentes o que não acontece com os módulos que dependendem da aplicação principal.

Mais sobre sub-apps veja aqui.

quarta-feira, 20 de fevereiro de 2013

O fantasma da produtividade


Para quem tem pouco tempo, os pontos chaves que destaco:

Sintomas clássicos da falsa entrega de software:
  1. Efeito bumerangue – você entrega e ele volta rapidinho;
  2. Efeito formigueiro – sempre tem que mudar em vários pontos;
  3. Efeito dinheiro velho – ninguém consegue reutilizar o código;
  4. Efeito piano – custos altíssimos operação e sustentação;
  5. Efeito laxante – manutenção complicada, sempre dá merda;
  6. Efeito pipoca – todos os códigos modificados estouram;
  7. Efeito navalha – alguém sempre sai cortado;
  8. Efeito previdência – só segurados conseguem manter o código;
  9. Efeito sabão – manutenção sempre escorrega no orçamento;
  10. Efeito furacão – remendar cansa e não segura ninguém;
  11. Efeito ex-esposa(o) – cliente perde amor pelo projeto.
Todos – sem exceção – pregam ao máximo o excesso de produtividade, acreditando fielmente que produção de software é fabricação de telas no processo “1,2,3”… No entanto, esquecem que resultado vem da reutilização (RiSE – Reuse in Software Engineering), padronização, estabilidade, integração e, principalmente, sustentabilidade da solução que está sendo implementada (continuous quality enablement).

É claro que alguém vai gritar que testar é caro. ... um estudo realizado e publicado pelo Instituto Forrester que mostra que corrigir um defeito custa 30x mais que resolvê-lo na origem.

Na prática, todos sabem o tamanho do prejuízo, porém ninguém quer encarar o leão de frente, sendo mais prático passar a batata quente para frente, gerenciar o turnover de pessoas, disponibilizar uma equipe gigantesca de suporte. Na sequência, os novos clientes acabam tendo fila gigantesca de implantação e são servidos por um processo lento e caro que aos poucos mina o crescimento de qualquer negócio.

Nesse momento você fará uma nova pergunta: Prefere colocar o foco no problema ou na solução? Esse é o momento de dizer sim à mudança e trazer um novo momento ao negócio, procurando produzir software com estratégia e não mais fabricar aos modos “go horse”, pois o “débito técnico” acumulado é igual a cartão de crédito, a conta chega mesmo.

Complemento meu:

Em alguns lugares que passei se tem a filosofia de fila de produção, onde os desenvolvedores tem a preocupação de entregar a tarefa o quanto antes, e não entregá-la bem testada correndo o risco que volte por bugs simples de se identificar com um pouco de teste.

Nunca consegui seguir esta filosofia, voltar a corrigir algo que deveria estar ok no primeiro envio para testes é demorado, pois precisa se lembrar o que se quis fazer em cada código, reproduzir a situação, etc.


quarta-feira, 13 de fevereiro de 2013

JavaFX para iOS e Android

JavaFX compilando para iOS e Android, mas uma ferramenta cross-over para ser analisada.

Veja mais aqui.


quinta-feira, 7 de fevereiro de 2013

Verdades e mitos sobre JOINs

Li este artigo do blog iMasters de Jun/2012, só agora consegui lê-lo com atenção (correria), que recomendo para todo desenvolvedor / programador e profissionais de TI que precisam buscar informações de banco de dados.

[]s

quinta-feira, 31 de janeiro de 2013

Oportunidades na T&T - Analista Programador Java

Empresa Tools & Technologies - T&T está com as seguintes oportunidades em aberto:

Analista Programador Java

Requerido:
- Nível superior em andamento ou concluído;
- Conhecimentos sólidos e experiência com desenvolvimento em Java;

- Experiência com webservices, Soap, Rest e protocolo http;
- Conhecimentos em Linux.


Interessados devem enviar seu currículo para talentos@tet.com.br.


quarta-feira, 23 de janeiro de 2013

sexta-feira, 11 de janeiro de 2013

Apache Flex 4.9.0 Released!

Mês passado o Flex se tornou um projeto oficial do grupo apache (veja link) agora é liberada a primeira versão nesse novo formato.

Veja mais:


Dicas para desenvolvimento mobile

Uma palestra que assisti e recomendo, com várias dias para desenvolvimento para mobile do Sérgio Lopes.

Link:

segunda-feira, 7 de janeiro de 2013

Storage em HTML5

Para quem quiser aprender sobre as opções de storage do HTML5 recomendo esta palestra:

Puxaram o cabo de rede! Soluções para uma web sem conexão permanente