Novo banco de imagens sobre pecuária

25 08 2017

O agroctock.com.br é um banco de imagens agrícolas com diversas categorias de imagens com alta qualidade. Dentre as categorias existe a de pecuária. Continue lendo »





CLIENTEC – Cadastro On-Line de Clientes para micro e pequenas empresas

15 12 2009

Introdução

Um número significativo de micro e pequenas empresas possuem pouco ou nenhum controle sobre dados de seus próprios clientes, e é neste tipo de ambiente onde o CLIENTEC pode ser utilizado. O CLIENTEC é um software WEB cujo objeto é gerenciar cadastro de clientes, emitir relatórios e etiquetas para mala direta (sim isso ainda é muito utilizado :).

Continue lendo »





ESPERTO – Ferramenta Web Para a Construção Colaborativa de Sistemas Especialistas de Classificação

8 09 2009

Saudações

Hoje apresentei dia 27/09/2009 o trabalho final da minha pós graduação, o trabalho desenvolvido foi uma ferramenta para a construção colaborativa de sistemas especialistas de classificação, ela ainda esta em fase beta mas se você quiser testar acesse http://esperto.battisti.etc.br.

Leia Também

Baixar Artigo

Baixar Apresentação





Battisti de Casa Nova

6 06 2009

Saudações

É com grande alegria que venho por meio deste post informar a todos os amigos deste blog que estou de mudança, o novo endereço é battisti.etc.br.

O principal motivo que me levou a “sair” do wordpress.com é devido ao fato de não poder colocar coisas como vídeos , arquivos para download, impossibilidade de instalar plugins etc.. por isso tudo migurei para o endereço é battisti.etc.br.

Todo o conteúdo deste blog ficará aqui do jeito que está e se quiser ler os novos post vá no battisti.etc.br

[]’s Anselmo Battisti





SSHFS no Windows

25 04 2009

Introdução

Precisava fazer um sshfs no windows

Como Fazer

Um japones muito tarado implementou o Dokan http://dokan-dev.net/en/download/

  1. Instale o Dokan Library
  2. Instale o c++ para windows http://www.microsoft.com/downloads/thankyou.aspx?familyId=200b2fd9-ae1a-4a14-984d-389c36f85647&displayLang=en
  3. Instale o Dokan SSHFS
  4. Reinicie e abra o Dokansshfs

Usei isso para mapear um projeto remoto no eclipse, funcinou muito bem.





Alternativa ao NOT IN com LEFT JOIN Postgres

25 04 2009

Introdução

Manipular tabelas via SQL é uma arte,  existem diversas formas de fazer a mesma coisa, veja as tabelas abaixo:

+------------+
|   USUARIO  |
+------------+
| usr_cod    |
| usr_login  |
| pss_co     |
+------------+
+------------+
|   PESSOA   |
+------------+
| pss_cod    |
| pss_nome   |
+------------+

O objetivo é descobrir quais pessoas ainda NÃO possuem usuários. Eu resolveria este problema da seguinte forma. Continue lendo »





Modem ZTE 636 3G Brt no Ubuntu 8.10 e 9.04

18 04 2009

Introdução

A alguns meses comprei resolvi colocar internet na minha humilde residência, o problema que não tava afim de colocar uma linha telefônica em casa pois eu raramente fico em casa, então resolvi comprar uma internet 3G de 600k da Brasil Telecom. Continue lendo »





Ignorando Arquivos no SVN com a propriedade SVN:IGNORE

7 04 2009

Introdução

Sou programador php e uso sempre o SVN para controlar as versões dos meus projetos, como também uso o smarty como ferramenta de templates tenho um problema crônico que é o seguinte:  toda vez que vou dar um commit no meu projeto a pasta templates_c que é a pasta onde o smarty armazena o cache dos templates é enviada para o repositório.

Para resolver este problema você pode usar a propriedade svn:ignore, com ela você pode dizer que alguns arquivos ou até mesmo algum diretório seja ignorado pelo SVN.

Solução

  1. Acesse a pasta onde está o arquivo que você quer ignorar;
  2. svn propedit svn:ignore templates_c/;
  3. Será aberto o editor então você digira o * (todos os arquivos).

Conclusão

Pelo que li na documentação a esta propriedade não aceita expressão regular então o jeito é ignorar manualmente cada um dos tipos de arquivos desejados.

Se você estiver usando o eclipse você pode ignorar clicar com o botão direito na pasta Team / Set Propertie / svn:ignore / *





XAMPP 1.7.0 Problemas com PDO Select

29 03 2009

O Problema

O XAMPP é um software muito usando por quem está começando a programar em PHP pois ele facilita a instalação do famoso trio (apache, php e mysql). Na versão 1.7.0 porém existe um problema de compilação e isso faz com que o apache trave quando uma consulta SELECT que usam a lib de conexão PDO for executada:

A Solução

  1. Pare o apache e o mysql;
  2. Acesse a pasta xampp\apache\bin;
  3. Apague o arquivo libmysql.dll;
  4. Renomeie o arquivo libmysql_5.0.51a.dll para libmysql.dll
  5. Starte o apache e o myysql.

Conclusão

Particularmente eu não entendo o motivo pelo qual o pessoal do XAMPP não resolveu este problema. Mas em todos os casos a solução é simples.

Achei a solução deste problema neste site

[]’s Anselmo Battisti





Definindo Senha Para o Webmin

18 03 2009

Introdução

Estes dias resolvi dar um “dist-upgrade’ e eis que meu webmin parou de funcionar, suspeitei que fosse problema de senha e era 🙂

Resolvendo o Problema

Para resolver este “problema” você precisa setar a senha usando o comando:

/usr/libexec/webmin/changepass.pl /etc/webmin usuario senha





Isto Fica Feliz em Ser Útil (Homem Bicentenário)

10 03 2009

Saudações

Venho à aproximadamente 4 anos escrevendo textos sobre assuntos que julgo serem relevantes (nos ultimos meses estou meio parado pois a minha carga de trabalho aumentou significativamente), em muitos momentos fiquei pensando se realmente o esforço em tentar disseminar um pouco do conhecimento que adquiri com o auxílio de outras pessoas realmente faria a diferença, afinal todos que tem um blog sabem que é necessário muit amor para produzir um bom post! Mas  são e-mail como este que acabo de receber que me fazem acreditar que a velha frase dos dinopotianos é verdadeira:

– Uma gota de chuva eleva o oceano!

E-mail que recebi!

Anselmo,
Sou um leitor recente em seu blog, mas já venho parabernizá-lo por ele.
Raramente escrevo emails para as pessoas mas o seu realmente mereceu.
As duas apostilas de Ajax em seu blog são fantásticas.
Continue assim.

Muito obrigado a todos que de alguma forma conseguiram progredir em seus conhecimentos com a ajuda deste humilde blogueiro, e um abraço em particular para aqueles que deram seu feedback, sendo ele positivo ou negativo!

[]’s a Todos
Anselmo Battisti





Postgres CPanel LATIN1

24 02 2009

Introdução

Quem já usou postgres juntamente com o CPanel sabe que o suporte que o CPanel oferece é bem fraquinho, tanto que até poucas versões atraz a criação de banco via CPanel estava bugada! ou seja, para se criar banco era necessário usar a boa e velha SQL para criar o banco e dar permissões aos usuários, quanto a isso não há problema algum, o X da questão é que ao se fazer isso todos os benefícios que o CPanel oferece como Backup, Controle de Disco e Permissões de Execução simplesmente não funcionam, e pior quando você vai migrar uma conta entre servidores o o outro o CPanel não copia as bases de dados que são geradas manualmente!

Na versão 11 do Cpanel estes problemas finalmente foram corrigidos mas ai apareceu outro, é como diz meu amigo @lfenciso.

– Se fosse fácil não seria um problema!

Quando você cria um banco Postgres via CPanel o ENCODING do mesmo fica com UTF8 aparentemente não tem como mudar isso! no nosso caso o  sistema roda usando um banco LATIN1 e ai José? Baita problemão.

Solução

Para resolver este problema sem ter que mexer nas configurações do CPanel ou ainda atualizar o sistema fizemos o seguinte:

  1. Criamos o banco com UTF8
  2. Importamos o backup do banco que estava sendo usado pelo cliente que é LATIN1
  3. Como era de se esperar os caracteres com acento por exemplo estavam todos quebrados, para resolver isso:
  4. Na classe que é usada para esabelecer a conexão com o banco de dados dados execute!
  5. SET CLIENT_ENCODING TO ‘LATIN1’

Conclusão

Dessa forma o postgres automatigamente converte tudo o que vai da aplicação para o banco de LATIN1 -> UTF8 e tudo que vem do banco para aplicação de UTF8->LATIN1.

O ideal é sempre ter a aplicação e o banco trabalhando com o mesmo encoding porém no nosso caso isso não era possível então foi necessário o uso deste artifício do postgres.

[]’s Anselmo Battisti





Recarregando Páginas Usando Javascript Limpando os Parâmetros da URL

11 02 2009

Introdução

Precisava recarregar página via Javascript limpando os parâmetros da URL, exemplo:

meusite.com?teste=batata

tinha que virar

meusite.com

Pesquisei mas não achei nenhuma função nativa então implementei uma.

Solução

/*
 * recarregarSemParametro
 * Anselmo Battisti
 * battisti.wordpress.com
 * data 2009-02-10
 */
function recarregarSemParametro(){
   var url = window.location.href;
   if (url.indexOf("?") > -1 ){
     url = url.substr(0,url.indexOf("?")).toLowerCase();
   }
   window.location = url;
}
Exemplo:
<a href='#' onClick='recarregarSemParametro()'>Recarregar</a>

OBS: Se alguém souber um jeito melhor de fazer isso por favor me avise!





Calcular o Último Dia do Mês

19 01 2009

Introdução

Precisava calcular quantos anos uma pessoa teria no último dia do mês.  Para calcular a idade em função de uma outra data basta fazer o seguinte:

select extract(year FROM age(current_date,to_date('01/01/2000','DD/MM/YYYY')))

Continue lendo »





Enviando E-mail pelo Gmail com Screenshot em Anexo via Terminal Shell

10 01 2009

O Problema

Sou programador Web a cerca de 7 anos e nesse tempo todo passei por várias metodologias de desenvolvimento. Atualmente estou trabalhando com uma mistura de SCRUM  com XP, com isso, a interação com o cliente final aumentou bastante e uma atividade que faço frequentemente é mandar screenshot da tela que estou implementando via e-mail para que o usuário de seu  feedback. Como eu fazia isso: Continue lendo »





Feliz 2009

2 01 2009

Saudações a Todos

O ano de 2008 foi realmente interessate:

  1. Terminei a minha graduação;
  2. Iniciei uma pós;
  3. Comecei a trabalhar em tempo integral na minha empresa;
  4. Fiz meu primeiro voo (agora é assim que se escreve) de negócio;
  5. Minha esposa começou a fazer faculdade de música;
  6. Voltei a jogar Capoeira;
  7. Meu blog finalmente começou a ter visitas significativas, é como se diz, Escreva e eles virão;
  8. Descobri que laços de amizade são mais fortes do que a distância;
  9. Joguei meu primeiro RPG Online;
  10. Comecei a twittar;
  11. Doei sangue pela primeira vez.

Objetivos para 2009

  1. Finalizar alguns projetos que ficaram pendentes em 2008;
  2. Terminar a pós;
  3. Praticar tai-chi;  (já fui em algumas aulas)
  4. Trabalhar duro!
  5. Terminar de ler a saga do Mochileiro das Galáxias;
  6. Doar Sangue regularmente.

Que 2009 seja um ano muito bom para todos.





Doação de Sangue

29 12 2008

Saudações a Todos

Como sabemos, fim de ano é um período onde ocorrem muitos acidentes automobilísticos graves. Em geral, as vítimas ficam meio “arrebentadas”  por assim dizer. Por isso, resolvi fazer minha boa ação de 2008 e fui doar sangue.

O processo todo é bem simples:

  1. Vá até o Hemocentro;
  2. Preenche o cadastro;
  3. O médico vai fazer uma anaminese rápida;
  4. Enfiam a agulha no teu braço;
  5. Sai sangue por 5 minutos, o equivalente a 450 gramas;
  6. Come um lanchinho e vai pra casa;

Tempo total 35 minutos. As fotos do procedimento estão ai em baixo, foi meio complicado tirar a foto com apenas uma das mãos, exigiu perícia mas ficaram relativamente boas.

Essa foi a primeira vez que doei sangue achei bem divertido, sem contar que deve ter sido muito útil para algumas pessoas.





Como Ganhar Dinheiro?

20 12 2008

Saudações a todos. Antes de mais nada quero dizer que isso não é um post é uma recita milagrosa sobre obter lucros sem sair de casa, ou algum ainda algum  esquema fajuto de pirâmides mascarada, quero compartilhas apenas alguns pensamentos que tenho tido nos últimos dias.

Continue lendo »





SSHFS Montando Diretório Remoto via SSH

17 12 2008

Introdução

Um ambiente de desenvolvimento bastante comum que encontramos em empresas de produção de softwares para a web é:

  • 1 Servidor com a infraestrutura completa (php, apache, mysql, etc…) geralmente na rede interna;
  • N máquina de desenvolvimento que mapeiam pastas remotamente neste servidor.

Em geral o mapemanto entre o cliente e o servidor é feito via samba, pois é o padrão de conversação entre windows e linux, com isso o pessoal que usa linux acaba também usando o mapeamento via samba, porém existe uma forma mais interessante e rápida de montar diretórios remotos de Linux -> Linux. Continue lendo »





Escolhendo uma biblioteca em PHP Para gerar Gráficos

16 12 2008

Introdução

Esta semana estive às voltas com um problema relativamente simples mas que me tomou 3 dias de trabalho. Um de nossos clientes solicitou alguns gráficos cujos dados eram extraídos de um sistema que estamos implantando, até ai tudo bem, o problema foi que a qualidade dos gráficos gerados pelas bibliotecas convencionais do php é bem baixa, serilhados e problemas de contorno são constantes, salvo a lib pChart, porém ela  ainda esta em um estágio ‘embrionário’  é não é muito fácil de usar e ainda possui alguns problemas de posicionamento de caracteres, sendo assim tive que partir para bibliotecas em Flash. Continue lendo »





Calcular Diferença em Timestamp no Postgres

10 12 2008

O Problema

Descobrir a  quantidade de dias e horas que se passaram entre dois timestamp. Continue lendo »





Instalar Ioncube PHP / Gentoo

3 12 2008

O Problema

Instalar o loader do ioncube no nosso servidor de desenvolvimento local.

A Solução

  1. Acessar o site http://www.ioncube.com/loaders.php e baixar a versão correta para o seu SO;
  2. baixa via wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
  3. descompactar via tar -xzvf ioncube_loaders_lin_x86-64.tar.gz
  4. mv ioncube /usr/local
  5. edite o php.ini e acrescente a linha
    zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.2.so
  6. Reinicie o seu apache, se seu script não rodar olhe o log do apache
    tail /var/log/apache2/error_log

Erros Encontrados Durante a Instalação

Failed loading /usr/local/ioncube/ioncube_loader_lin_5.0.so:  /usr/local/ioncube/ioncube_loader_lin_5.0.so: wrong ELF class: ELFCLASS32
Isso aconteceu pq eu estava instalando uma versão 32bits e o kernel do meu servidor é 64.





Postgres – LPAD AVG Date_Part e Cast

26 11 2008

O Problema

Com base em uma tabela meu cliente necessitava extrair um relatório com as notas médias mensais que ele estava recebendo dos seus clientes. Continue lendo »





vimdiff uma Ferramentas para Deploy de Aplicações PHP

22 11 2008

Introdução

Já postei anteriormente sobre como “fazer deploy” de uma aplicação PHP utilizando o RSYNC. Pois bem, venho hoje apresentar uma “nova” ferramenta que te mostra a diferença entre dois arquivos, ai você me fala:

– Grande coisa eu uso o comando diff e pronto!

Certo mas o diff somente compara arquivos locais “por padrão”, e agora josé?

O vimdiff

O vimdiff é um “modo alternativo” do Vim. Ele nos permite editar duas ou três versões de um arquivo simultaneamente enquanto nos mostra as diferenças entre elas. Não precisamos necessariamente editar esses arquivos: o simples fato de abrir 2 arquivos simultaneamente nesse programa já pode ser tudo o que precisamos, em algumas situações.

Segundo este blog

Mas o interessante do vimdiff é que ele te permite visualizar a diferença entre um arquivos remotos e um arquivo local. Suponha que você tem seu ambiente de desenvolvimento local e quer saber qual a diferença entre um determinado arquivo que você está editando e um que já está em produção, para isso use:

vimdiff arquivo scp://usuario@ip//path/arquivo

Você receberá uma tela onde a esquerda esta o seu arquivo local e a direita o seu arquivo remoto.





Seam Converter de Entity

20 11 2008

O Problema

Exibir apenas uma coluna de uma determinada entidade, por exemplo exibir o nome de uma pessoa.

A Solução

package br.unioeste.sgppls;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.persistence.EntityManager;

import org.jboss.seam.annotations.Name;

@Name("ConverterEntityarConhecimento")
@org.jboss.seam.annotations.faces.Converter
public class ConverterEntityarConhecimento implements Converter {

	public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
		try {
			EntityManager entityManager = (EntityManager) org.jboss.seam.Component
				.getInstance("entityManager", true);
			Object o = entityManager.createQuery(
				"from ArConhecimento ar WHERE ar.arCnhCodigo = :codigo")
				.setParameter("codigo", arg2).getSingleResult();
			return o;
		} catch (Exception e) {
			throw new ConverterException(e);
		}
	}

	public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
		try {
			ArConhecimento a = (ArConhecimento) arg2;
			return a.getArCnhCodigo();
		} catch (Exception e) {
			throw new ConverterException(e);
		}
	}
}

A Visão

Meu campo input esta ligado diretamente com o atributo que é uma outra entidade, sendo assim é necessário usar o conversor para exibir a coluna de ‘descrição’

<h:inputText value="#{projetoHome.instance.arConhecimento}" id="text" size="15" converter="ConverterEntityarConhecimento" required="true"/>




Seam Converter Boolean Sim/Não

20 11 2008

O Problema

Converter atributos do tipo Boolean em String SIM caso true e NÃO caso false.

A Solução

package br.unioeste.sgppls;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;

import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.intercept.BypassInterceptors;

@Name("ConverterBooleanString")
@BypassInterceptors
@org.jboss.seam.annotations.faces.Converter

public class ConverterBooleanString implements Converter {

   public Object getAsObject(FacesContext arg0, UICompon   ent arg1, String arg2) {
      try {
         if (arg2.equalsIgnoreCase("sim")) {
            return new Boolean(true);
         } else
            return new Boolean(false);
      } catch (Exception e) {
            throw new ConverterException (e);
      }
   }

   public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
      try {
         if (((Boolean)arg2) == true) {
            return "Sim";
         } else
            return "Não";
      } catch (Exception e) {
         throw new ConverterException (e);
      }
   }
}

Na Visão

projetoHome.instance.prjPago é do tipo Boolean e na visão deve aparecer a String humanizada, então:

<h:outputText value="#{projetoHome.instance.prjPago}" converter="#{ConverterBooleanString}"/>




Selecionar Registros Duplicados – SQL

18 11 2008

Problema

Haviam algumas empresas com cadastros duplicados e eu queria saber quais eram elas.

Solução

SELECT
    emp_cnpj,
    count(*)
FROM empresa
WHERE
   emp_cnpj <> ''
GROUP BY emp_cnpj
HAVING COUNT(*) > 1




Charset Seam Parameter Problem UTF-8 ISO-8859-1

15 11 2008

O Problema

Estou usando algumas interfaces padrões geradas via seam-gen e nas telas de busca estava tendo problemas com os acentos, quando eu digitava balão o Seam mandava para o hibernate a solicitação de busca por balão.

A Solução

Depois de uma boa googlada achei esse tópico em um forum; a solução é bem simples. Se você estiver usando o JBoss e Tomcat edite o arquivo server.xml que está em server/default/deploy/jboss-web.deployer/server.xml e acrescente a linha em negrito:

<Connector port=”8080″ address=”${jboss.bind.address}”
maxThreads=”250″ maxHttpHeaderSize=”8192″
emptySessionPath=”true” protocol=”HTTP/1.1″
enableLookups=”false” redirectPort=”8443″ acceptCount=”100″
connectionTimeout=”20000″ disableUploadTimeout=”true”
useBodyEncodingForURI=”true”
/>

Reinicie o seu servidor e teste, deve dar tudo certo agora.

[]’s Anselmo Battisti





Seam Popup Conversation

14 11 2008

O Problema

Em minha aplicação necessitava vincular a cidade do endereço de uma pessoa, não podia usar um elemento html select pois o número de cidades era muito grande então resolvi fazer um popup que listava todas as cidades e com um filtro para que o usuário pude-se escolher a cidade.

A Solução

Na Visão

Para abrir a minha popup este código foi usado

<h:graphicImage value="/img/magnifier.gif" style="margin-left:5px; cursor:pointer"
onclick="window.open('CidadeList.seam?pessoaCodigo=#{pessoaHome.pessoaCodigo}&amp;cid=#{conversation.id}',
'Buscar Área do Conhecimento', 'height = 500, width = 400, scrollbars = 1')"/>

Pontos Importantes

  1. Não é possível utilizar o & para concatenar mais parâmetros a URL, é necessário ‘escapar’ o & através o &amp;
  2. cid=#{conversation.id}: foi usado para manter a conversação entre a janela atual e a popup, sem isso você acaba iniciando um novo workspace, e com isso o que você manipula na popup não é refletido na janela parent;

Na tela onde estavam sendo listadas as cidades foi criado um h:commandLink que ao ser clicado chamava o método que vinculava a pessoa a cidade e setava os dados relativos na janela parent.

O XHTML que foi aberto pelo popup se parece com isso aqui:

<h:form id="arConhecimentoSearch" styleClass="edit">
   <rich:simpleTogglePanel label="Parâmetros de Busca" switchType="ajax">
      <s:decorate template="layout/display.xhtml">
      <ui:define name="label">Descrição</ui:define>
      <h:inputText id="arCnhDescricao" value="#{cidadeList.cidade.nome}"/>
      </s:decorate>
   </rich:simpleTogglePanel>

   <div class="actionButtons">
      <h:commandButton id="search" value="Pesquisar" action="/cidadeList.xhtml"/>
   </div>
   </h:form>

   <rich:panel>
      <f:facet name="header">Cidades Localizadas</f:facet>
      <div class="results" id="cidadeList">
         <h:outputText value="Nenhuma cidade localizada."
            rendered="#{empty cidadeList.resultList}"/>
         <rich:dataTable id="cidadeList"
                        var="cidade"
                        value="#{cidade.resultList}"
                        rendered="#{not empty cidade.resultList}">
            <h:column>
               <f:facet name="header">Código</f:facet>
                  #{cidade.codigo}
            </h:column>
            <h:column>
                  <f:facet name="header">Nome</f:facet>
                  #{cidade.nome}
            </h:column>
            <h:column>
               <f:facet name="header">Ações</f:facet>
               <h:form>
               <h:commandLink value="Select" action="#{cidadeHome.cidadeLocalizada(cidade)}"
onclick="window.opener.document.getElementById('cidade_codigo').value = '#{cidade.codigo}';
window.opener.document.getElementById('cidade_descricao').innerHTML = '#{cidade.descricao';
window.close()"/>
                  </h:form>
            </h:column>
         </rich:dataTable>

Pontos Importantes

  1. Não use s:link pois ele não permite que se passe parâmetros para o método, perdi um tempão pra descobrir isso :(.
  2. action=”#{cidadeHome.cidadeLocalizada(cidade)}: chama o método que irá ligar a cidade a pessoa;
  3. Para dar uma ‘enfeitada’ quando o cidadão clica na cidade então a janela será fechada e os dados serão exibidos na janela parent, isso é feito usando o código em javascript window.opener.document.getElementById(‘cidade_descricao’).innerHTML = ‘#{cidade.descricao’};

No Modelo

Para pedir ao SEAM que ligue a entidade cidade com a entidade pessoa então será usado o método

public void cidadeLocalizada(Cidade cidade)
{
   pessoaHome.getInstance().setCidade(cidade);
}

Finalizando

Aqui não está o código completo mas da pra ter uma idéia de como a ciosa funciona. Espero de alguma forma ter contribuído com alguém.





Checkbox Seam Character Hybernate YesNoType

6 11 2008

O Problema

Meu banco de dados não possiu suporte ao tipo de dado boolean, sendo assim, tenho que contornar o problema usando um CHAR(1). Quando fiz a engenharia reversa para o Hibernate ele definiu meu atributo como Character e nessa jogada eu queria usar um checkbox na minha visão para setar o valor do atributo como true/false. Meu código original era assim:

private Character prjPago;

@Column(name = "Prj_pago")
public Character getPrjPago() {
   return this.prjPago;
}

A Solução

A solução foi alterar o tipo de dado do seu atributo para boolean e no mapeamento do Hibernate definir o tipo de dado como sendo YesNoType veja como ficou:

private Boolean prjPago;

@Column(name = "Prj_pago")
@Type(type = "org.hibernate.type.YesNoType")
public Boolean getPrjPago() {
   return this.prjPago;
}

E na minha camada de apresentação ficou algo parecido com isso aqui:

<h:selectBooleanCheckbox id="prjPago" value="#{projetoHome.instance.prjPago}" />

Referências

http://www.seamframework.org/16450.lace

http://forum.hibernate.org/viewtopic.php?p=2212819&sid=db8f69cc8753ebe4b8f40c2633367e85





This client is too old to work with working copy / Gentoo

4 11 2008

Estes dias ao tentar comitar uns arquivos no SVN recebi essa mensagem ‘this client is too old to work with working copy‘ WTF???? e com a ajuda do meu amigo enciso chegamos ao seguinte diagnóstico.

  1. O repositório SVN foi criado com uma versão velha do svn 1.3 ou 1.4;
  2. Usando uma ferramenta com uma versão nova do svn (tortoise ou o subeclipse já estão na versão 1.5) foi dado um commit, com isso teu work copy ficou com uma versão mais nova do que a tua ferramenta linha de comando consegue manipular.

Como resolver o problema: Atualiza a versão do seu svn linha de comando, como fazer?

Se você estiver usando o gentoo da um emerge subversion.





CTRL + Espaço Autocompletar Eclipse

3 11 2008

Estes dias peguei uma máquina onde eu apertava o CTRL + Espaço e o autocompletar do eclipse não funcionava, fiz mil coisas e no fim descobrimos que era o maldito MSN da micro$oft que estava usando o CTRL + Espaço como atalho para alguma outra coisa!





Criando Select no SEAM

31 10 2008

Objetivo

Apresentar uma das formas de se criar um elemento HTML do tipo SELECT utilizando o Seam Framework. Continue lendo »





Seam / Hibernate / JSF = Deus nos Acuda

29 10 2008

Introdução

Estou começando a trabalhar com o SEAM e por isso resolvi postar aqui algumas coisas que estou nesses últimos 10 dias. Grande parte do conhecimento aqui descrito foi obtive com a valorosa ajuda do meu amigo Kadu e a curva de aprendizado como em praticamente tudo que envolva java e sua sopa de letrinhas é longa.

Alguns Links

  1. 3 Vídeo Aulas, a primeira mostra como rodar o jboss a segunda como iniciar um projeto no seam e a terceira como rodar o exemplos do seam;
  2. JBoss Tool: Plugin para o eclipse que facilita o trabalho com o JBoss;
  3. JSF: Introdução ao JSF.

Continue lendo »





UPDATE com CASE WHEN POSTGRES

28 10 2008

Saudações a todos

Nos últimos como vocês sabem tenho tentado fazer o máximo de coisas possíveis usado SQL, estou surpreso com o que é possível ser feito só com SQL.

O Problema

Tinha que alterar o tipo de uma coluna de boolean para integer, facil né:

ALTER TABLE tabela ALTER COLUMN a TYPE integer

porém 😦

ERROR: column "a" cannot be cast to type "pg_catalog.int4"

Os tipos não são compatíveis. Continue lendo »





Instalando Plugin Manualmente Eclipse 3.4

14 10 2008

Uma coisa que sempre me deixava irritado no eclipse era o fato de ter que ficar descompactando as pastas plugin e a features manualmente para dentro do diretório raiz do eclipse para cada plugin que eu estava instalando,  na versão 3.4 para instalar um plugin manualmente faça o seguinte:

  1. Baixe o plugin, no meu caso vou baixar o jbostool (https://www.jboss.org/tools/download/index.html)
  2. Descompacte o plugin para dentro da pasta dropin que fica no diretório raiz do eclipse
  3. Inicialize o eclipse, pronto 🙂 seu plugin foi instalado automagincamente

[]’s Anselmo Battisti





Case When SQL / Postgres

10 10 2008

Saudações

Não o Battisti não morreu, apenas diminui a quantidade de posts pois nos últimos dias tenho encarados desafios realmente desafiadores, inclua nesse bolo o aprendizado de uma nova linguagem de programação, é meus amigos estou começando a mexer com Java pra Web, sendo assim, não se assustem se nesse santuário do PHP começarem a pipocar posts sobre Java :).

Sobre o CASE WHEN é o seguinte: tenho tentado fazer mais coisas via SQL a fim de otimizar um pouco o desempenho dos sistemas e nisso aprendi a usar esse cara, ai vai um exemplo:

SELECT
   cod,
   data
   case
      when tipo = 1 then 'Abacate'
      when tipo = 2 then 'Abobrinha'
   end as nome
FROM vegetais

Isso ai é um If disfarçado :), vc pode fazer coisas mais complexas como por exemplo fazer uma outra SQL dentro do THEN de acordo com os dados que venham de um campo, exemplo:

SELECT
   cod,
   data
   case
      when tipo = 1 then
      select valor from abacate
      when tipo = 2 then
      select valor from abobrinha
   end as valor
FROM vegetais

Nesse caso o valor da abobrinha e do abacate são armazenados em tabelas separadas então de acordo com o tipo o valor deve vir de sua respectiva tabela.

Bom é isso ai. Bom Sorte até mais e tchau!





Calculando a Idade via Postgres

17 09 2008

Problema

Quero sabe a idade dos meus clientes!

Solução

SELECT
      extract(year from age(pessoa.pss_nascimento))
FROM pessoa

A coluna pss_nascimento deve ser do tipo date, caso não seja será necessário converte usando o comendo timestamp vide referência

Referência

http://pt.wikibooks.org/wiki/PostgreSQL_Pr%C3%A1tico/Fun%C3%A7%C3%B5es_Internas/Data_e_Hora





KDE Exibe Arquivos do /home/usuario no Desktop

13 09 2008

Hoje finalmente fiz a atualização do Kutuntu 7.10 para o 8.04 o que me motivou foi as 3 travadas do meu micro hoje e além disso a gerência de memória não estava me satisfazendo, sendo assim atualizei!

Quando reiniciou o sistema BUMMM no meu desktop estava sendo listados os arquivos do /home/anselmo e não do /home/anselmo/Desktop como era de se esperar, vasculhei a net achei várias pessoas com o mesmo problema mas nenhuma solução, fui por conta nos .kde da vida pra corrigir o problema e nada, ai mudei a pergunta e ai está a resposta

“~/.config/user-dirs.dirs”.

#XDG_DESKTOP_DIR=”$HOME/” LINHA COM O PROBLEMA
XDG_DESKTOP_DIR=”$HOME/Desktop”
XDG_DOWNLOAD_DIR=”$HOME/”
XDG_TEMPLATES_DIR=”$HOME/”
XDG_PUBLICSHARE_DIR=”$HOME/”
XDG_DOCUMENTS_DIR=”$HOME/Documentos”
XDG_MUSIC_DIR=”$HOME/Música”
XDG_PICTURES_DIR=”$HOME/Imagens”
XDG_VIDEOS_DIR=”$HOME/”
anselmo@pc08:~$
http://ubuntuforums.org/showthread.php?t=718905





Melhorando o Desempenho do Firefox 3 – Barra de Endereço

13 09 2008

O problema!

Uma coisa que achei ruim no Firefox 3 foi a sua nova barra de endereço, me pareceu coisa de IE e no fim das contas percebi que ao invés de ajudar este recurso estava me atrapalhando pois frequentemente acesso páginas diferentes do mesmo domínio e isso tornava a busca na barra muito lenta.

Continue lendo »





Engenharia de Software ‘Custo da Mudança’

9 09 2008

Saudações intrépidos programadores, hoje quero começar com uma piada:

Logo que viu o código do ‘sistema legado’ que seria a sua primeira tarefa o programador Jr olha para o imediato direto e diz:

– Vocês não precisam de um programador e sim de um paleontólogo!

Bom vamos adiante :)!

Vocês já se perguntarem o que levou os primeiros engenheiros de software a organizar a metodologia tradicional de desenvolvimento da forma como ela é?

Planejamento -> Design -> Codificação -> Testes

A resposta não é muito obvia mas acho que cheguei a uma teoria no mínimo interessante!

A metodologia tradicional foi organizada dessa forma pois quando não se usava nenhuma metodologia o custo de uma mudanças é tão maior quanto mais próximo do fim do projeto, sendo assim, quando se bolou a primeira metodologia a idéia foi centralizar no inicio do processo toda a análise para que NÂO fossem necessário/permitido realizar mudanças em fases posteriores, o problema é que esta forma de pensar leva o software a:

  1. Ter um valor de desenvolvimento mais alto;
  2. Possuir funções que nunca serão utilizadas;
  3. Torna o cliente um inimigo durante a codificação.
  4. etc …

Com o advento das metodologias ágeis alguns desses pontos foram revistos e agora a coisa pode ser feita de uma maneira mais adequada.

[]’s Anselmo Battisti





Atualização de Sistema Web com Rsync / deployment rsync

30 08 2008

Introdução

Trabalho com o desenvolvimento de sistemas Web há 8 anos aproximadamente, e, chega um momento na sua vida em que as coisas devem ser feitas de maneiras diferentes, agilizar processos, parar de ‘camelar’ tanto. Continue lendo »





Estes dias no Mercado

29 08 2008

Saudações

Estava eu fazendo minhas compras calmamente em um supermercado aqui perto de casa quando, eis que me deparo com a seguinte cena:

Meus amigos, esta lista de compras foi escrita em papel-higiênico ou seja a menina (letra bonita) que escreveu isso estava no troninho pois os primeiros ítens da lista dela são:

1 – Sabonete;
2 – Papel

Só em Cascavel vemos estas coisas 🙂

[]’s Anselmo Battisti





EXT Dicas e Truques III

16 08 2008

Saudações

Bom neste post vou falar um pouco sobre:

  • Adicionar eventos em objetos do EXT
  • Manipular elementos HTML via Ext
  • Manipular elementos do Ext através do seu html id

Bom vamos lá então

Continue lendo »





MP3 no K3B, linux é uma beleza!

12 08 2008

Hoje mais uma vez tive provas de que o mundo UNIX é o supra sumo dos SO, veja o meu problema:

Tinha prometido a um colega que iria gravar um CD, tinha que entregar o CD as 19:30, fui tentar gravar as 19:10, atrasado pra variar, quando coloquei o CD no drive o K3B já abriu automaticamente e me pediu se eu queria gravar um CD de dados ou música, olha que beleza !!!, cliquei em cd de música, em seguida o K3B me pediu para arrastar os arquivos que eu queria gravar, mas quando fui colocar as minhas MP3 no CD BAMMM, apareceu a mensagem:

Continue lendo »





Musica de Capoeira ‘Vai Clarear’

5 08 2008

Saudações

Quando eu era criança lá em barbacena, brincadeira, sou de uma cidade chamada tupaãssi, não conheçe olha o google maps, voltando. Lá em tupãssi quando eu tinha 15 anos comecei a treinar capoeira, rapaz capoeira é um negócio muito divertido, é luta é dança e de vez em quando rola uma poradaria saudável. Infelizmente por motivos alheios a minha vontade tive que parar de treinar com 18 anos, mudei pra Cascavel terminei a faculdade e há uns 4 meses comecei a treinar Capoeira novamente em uma academia aqui perto de casa, o pessoal é bem animado mas na Capoeira tem que ter música e eu sempre gostei de cantar, não que eu seja um cantor muito pelo contrário mas na capoeira tem que ser cantador, ter rítmo já basta, mas tenho problemas em cantar pois as músicas que eu conheço o pessoal do grupo não conhece ai fica meio morno quando eu canto, mas as músicas são boas :), hoje vindo em bora comecei a cantarolar uma música antiga e acabei me lembrando dela inteira, vejam só devia fazer uns 8 anos que eu não cantava mais essa música e por isso vou postar aqui a letra:

Vai Clarear ‘Metre Fanho’

O meu mestre sempre dizia
Mas eu não entendia não
Como pode um mundo tão grande
Dar voltas que nem pião

Moleque não ligue pra isso
Isso tudo vai passar
Nas voltas que o mundo já deu, oiaiá
Nas voltas que ele ainda vai dar
Vai clarear, vai clarear
Tempestade foi se embora
A bonança vai chegar
(coro) Vai clarear, vai clarear
Não há mal que sempre dure
Todo mal vai acabar, oiaiá

(coro) Vai clarear, vai clarear
Toda fruta tem seu tempo
Esse tempo vai chegar

Se quiser tocar ai no seu berimbáu é moleza toque um São Banto Grande e solte a voz, ritmo acelerado 🙂

Dei uma googlada e acabei achando todas as letras deste CD, muito bom





Salvando Texto Formatado Em Banco de Dados ‘tinyMCE’

29 07 2008

Se você esta usando o tinyMCE e está tendo problemas com o salvamento de texto formatado no banco de dados ai vai a solução para os seus problemas:


/**
* rteSafe
*
* @abstract Limpa as aspas simples do código HTML, se isto o richeditor da pau
* pois as aspas não tem scape
*/
function rteSafe($strText) {
//returns safe code for preloading in the RTE
$tmpString = $strText;
//convert all types of single quotes
$tmpString = str_replace(chr(145), chr(39), $tmpString);
$tmpString = str_replace(chr(146), chr(39), $tmpString);
$tmpString = str_replace("'", "'", $tmpString);
//convert all types of double quotes
$tmpString = str_replace(chr(147), chr(34), $tmpString);
$tmpString = str_replace(chr(148), chr(34), $tmpString);
//replace carriage returns & line feeds
$tmpString = str_replace(chr(10), " ", $tmpString);
$tmpString = str_replace(chr(13), " ", $tmpString);
return $tmpString;
}

Basta passar o seu texto formatado por esta função antes de mandar para a SQL que faz a inserção no banco de dados, por exemplo:

$textoFormatado = rteSafe($textoFormatado);





Localizar Texto/Palavra em Arquivo no Linux

28 07 2008

Saudações

Bom ai vai uma dica sobre linux. Se você precisa saber se existe uma determinada palavra dentro de um arquivo você pode utilizar o seguinte comando:

grep -ni ‘palavra’ arquivo.txt

referência

[]’s Anselmo Battisti





Fatal error: Cannot use object of type __PHP_Incomplete_Class as array

24 07 2008

Saudações

Ai vai uma dica rápida e rasteira. Se você acaba de receber esta mensagem de um script PHP e não sabe o que está acontecendo vou contar como resolvi aqui:

Desabilita as variáveis gloais do php lá no php.ini





Gerenciamento de Projetos com dotProject

19 07 2008

Saudações

Ontem a tarde um de nossos clientes entrou em contato conosco pedindo informações sobre ferramentas de gerenciamento de projetos, ele deu uma especulada se agente usava alguma ou ainda se poderíamos desenvolver alguma coisa para ele, eu que sou um cara muito gente boa falei:

– Olha aqui na empresa nós utilizamos a aproximadamente 2 anos uma ferramenta chamada dotProject e me ofereci para dar uma “pseuso introdução ao dotProject” para a equipe dele.

Bom organizei uma apresentação mais do que rápida usando o google docs que por sinal está funcionando muito bem, ai vai o link para a apresentação:

http://docs.google.com/Presentation?id=dgspmh6b_72fhwjdtg3

Fiquei mais pasmado quando descobri que no inicio desse ano foi lançado um livro justamente com este nome, olha ele ai:

Gerenciamento de Projetos com DotProject

Ainda não li mas é em português o que facilita para muita gente, bom é isso por hoje

[]’s Anselmo Battisti





Gladiatus

16 07 2008

Saudações

Bom comecei a jogar um RPG baseado em navegador web, o nome do jogo é gladiatus. Bem interessante o joguinho, para jogar é só clicar no link e se cadastrar e jogar, é de grátis :)-

http://s3.br.gladiatus.com/game/c.php?uid=82186

[]’s Anselmo Battisti





PEAR – PHP Extension and Application Repository

15 07 2008

Saudações

Trabalho com PHP a uns 7 anos e durante todo este tempo trabalhei normalmente, sem usar frameworks ou ferraemntas de terceiros, mas nos último mês venho percebendo testando diversas ferramentas e percebi que uma grande quantidade dos software/frameworks/plugins feitos em PHP possuem instaladores via PEAR. Em geral estes software também disponibilizam uma forma manual de instalar, o problema é que geralmente é muito complicado pois é necssário criar os links simbólicos, arquivos de configuração e tudo mais.

Hoje fui instalar uma biblioteca chamada propel, ele é um ORM e novamente vi lá a instalação via PEAR e mais uma vez fiz a instalação manual e deu um monte de pau, quando tava quase tudo pronto  apareceu o seguinte erro:

“line 67: phing: command not found”

Caramba e agora? fui atraz e vi que este phing é um tipo de porte do famoso make, mais uma coisa pra instalar e configurar, logo vi que ele também dispunha de um instalador via PEAR, fiquei macho e resolvi instalar o bendito PEAR no nosso servidor de desenvolvimento, um gentoo.

Para instalar o PEAR foi fácil:

emerge dev-php/PEAR-PEAR

e para instalar este phing também foi bem simples:

pear install phing/phing

Com isso o propel funcionou!

Então ai vai minha sugestão, para servidores de desenvolvimento e de testes usem o PEAR pois facilita e muito a instalação de ferramentas de terceiros.

[]’s Anselmo Battisti





Bloquear Download de Arquivos Pelo .htaccess

12 07 2008

Se você por exemplo não querer que arquivos .pdf sejam acessados diretamente via URL, por exemplo: http://seusite/file.pdf o que você faz?

Bom se o site estiver sendo fornecido por um servidor Apache e se o mod rewrite estiver habilitado então é só adicionar a seguinte regra no .htaccess

RewriteEngine On
RewriteRule \.(pdf)$ - [F]




CONST não funciona no IE

4 07 2008

Salve guereiros da webSelva.

Hoje mais uma vez estava eu brigando um um código JS que não funcionava no IE, mas funcionava no Opera 9+ e  nos Firefox, olha o código:

   const SISTEMA_URL = 'http://192.168.0.1/~anselmo/sistema';

Fui pesquisar e descobri que a const é uma especificação da Mozilla e não funciona no IE, uma pena vou ter que usar var.

[]’s Anselmo Battisti





Vamos Falar Sobre Frameworks

27 06 2008

Saudações a todos!

Hoje quero compartilhar com vocês alguns pensamentos sobre frameworks:

O que é Framework?

Bom as melhores definições sobre o que é um framework eu encontrei foi nesse site, em resumo podemos dizer que:

  • Provê uma solução para uma família de problemas semelhantes;
  • É uma aplicação quase completa, mas com pedaços faltando que serão desenvolvidos pelo programador. Continue lendo »




Piada de Micreiro

19 06 2008

Kadu: Anselmo que se ta lendo ultimamente?
Anselmo: cara to lendo o ext-all.js mas ta complicado!!

Não entendeu
ExtJs.com





Transmissão de Conhecimento, usando a função dir do Firebug

19 06 2008

O firebug é uma extensão para o navegador firefox que tem por objetivo auxiliar desenvolvedores web durante o processo de criação de um site/aplicativo. Continue lendo »





Annotation em Java

14 06 2008

Saudações

Bom no site da SUN tem uma porção de coisa falando sobre annotation, vou dar minha contribuição.

Continue lendo »





Reflexão em Java

14 06 2008

Reflexão é o processo onde se consegue em tempo de execução informações (métodos, atributos e construtores) de uma classe. Continue lendo »





Socket em Java

7 06 2008

Vou colocar aqui alguns exemplos de socket em Java que vi hoje. Continue lendo »





Conexão Java com Banco Derby

31 05 2008

A conexão com banco de dados em Java pode ser feita de várias formas, a mais comum é através de drivers JDBC. Para fazer uma consulta em um banco DERBY você pode fazer o seguinte: Continue lendo »





Marcar Todos/Vários Checkbox de uma Vez usando Prototype

29 05 2008

Saudações

Todo mundo já teve que fazer um checkbox que ao ser clicado “ticava” todos os outros checkbox de uma lista. Hoje novamente passei por isso e escrevi um código Javascript que modéstia a parte achei bem bonitinho. Continue lendo »





Banco de Dados em Javascript ?

22 05 2008

Bom estava precisando que um pedaço do meu banco de dados fosse acessado pelo cliente diretamente por Javscript, ai vc pergunta porque? eu respondo! Porquê o cliente está em um ambiente, pasmem, sem acesso a internet. Sim estes lugares ainda existem acreditem! Continue lendo »





Frase do Dia

14 05 2008

A clique dado não se olha o dedo.
Anselmo Battisti

Um colega nosso estava feliz que hoje ele tinha recebido um clique em seu blog, nisso um colega da mesa ao lado disse: – eeeeeee fui eu quem cliquei. lol ai sai a frase





Frase do Dia

12 05 2008

Um link vale mais do que mil palavras.
Anselmo Battisti





Inserindo Código Fonte no Latex

11 05 2008

Se você está precisando inserir código fonte em um documento Latex existem várias formas. No site do tex-br.org. você poderá encontrar alguns exemplos, o que geralmente é a inserção de código fonte através do package listings, e como isso funciona Anselmo?:

Continue lendo »





TinyMCE, Básico e Como Salvar os Dados Usando AJAX

7 05 2008

Saudações

Pessoal a algum tempo uso o tinymce como editor WYSIWYG nos projetos Web que participo, sempre usei ele no modo básico, ou seja, só colocava ele no sistema e boa, hoje tive que fazer duas coisas mais legais lol:

  1. Salvar os dados do Tiny através de AJAX;
  2. Criar um plugin com uns botões personalizados; Continue lendo »




Calendário Simples em Javascript

4 05 2008

Saudações

Pessoal ontem fiquei muito puto da cara com todos os calendário em Javascripts que já foram escritos na face da Web, me irritei com o seguinte:

  1. Alguns tinhas imagens e CSS demais;
  2. Outros tinham JS monstros como por exemplo o jscalendar tem mais de 50K;
  3. Milhões de funções e configurações inúteis;
  4. Escrever um monte de JS para fazer o calendário aparecer no HTML;
  5. Nenhum era melhor do que a Grazi Nua (isca pros taradão de plantão) Continue lendo »




IE não suporta observador Javascript em elementos SPAN

19 04 2008

Saudações bravos programadores Web, cada dia que passa mais acredito que:

Felizes aqueles que programam para ambiente Desktop pois não se preocupam com portabilidade entre Navegadores Web. Continue lendo »





IE7 – Problema com type Radio

17 04 2008

Saudações

Hoje em mais uma de minhas brigas homéricas com o IE7 descobri que: Para um campo do tipo radio funcionar no IE7 a propriedade name deve ser escrita antes da propriedade value.

Exemplo

<input type=’checkbox’ value=’10’ name=’teste’ /> NÃO FUNCIONA NO IE7

<input type=’checkbox’ name=’teste’ value=’10’ /> FUNCIONA NO IE7

E meus clientes ainda perguntam o motivo pelo qual eu uso, Firefox Opera Mozilla e não o IE7 me poupem !

Obs: Eu estava inserindo estes campos via Javascript

[]’s Anselmo Battisti





EXT – Teclas de Atalho

8 04 2008

Introdução

Existem duas formas básicas de colocar teclas de atalho no EXT:

  1. Usando o evento keydow
  2. Usando o Ext.KeyNav Continue lendo »




Adicionar e Remover Elementos Combobox EXT

8 04 2008

Introdução

Que o EXT fornece excelentes componente isso já está provado, infelizmente algumas coisas não são muito fáceis de descobrir, neste texto pretendo mostrar os códigos de como adicionar e remover elementos de um combobox em tempo de execução, ou seja, com o usuário utilizando a aplicação. Continue lendo »





CSS Focus em input no IE

31 03 2008

A algum tempo atrás escrevi um texto sobre como alterar o css de um input usando a regra focus, o problema que o maledeto do IE, nem mesmo o IE7 consegue entender esta simples regra, então como de costume nos programadores temos que inventar mecanismos para as coisas funcionarem no IE, enfim, ai vai uma função em Javascript usando a biblioteca prototype que faz isso, quando o focus vai para um input ele altera o CSS do mesmo, e quando o focus sai, ou seja, quando acontece o blur o CSS volta ao normal, tem que fazer e desfazer a treta do CSS pra ficar bom Continue lendo »





Problemas Com o IE7

27 03 2008

Hoje decidi de uma vez por todas parar de dar suporte ao ie6 nos sistemas e apenas dar suporte ao ie7, nossos clientes são orientados a usar o Firefox (que está a anos luz do IE), e eles usam e gostam e depois de algumas semanas não mais usam o IE pra nada, o problema são os clientes dos nossos clientes, eles ainda usam IE :(, o IE 6 é um pesadelo e por esta razão agora vamos dar um basta nele e dar suporte apenas ao IE7, perdemos muito tempo brigando com compatibilidade de um navegador extremamente atrasado. Continue lendo »





Colocar o Foco no Primeiro Campo da Página (input type=’text’)

22 03 2008

Reza a lenda que um desenvolvedor que preze pela usabilidade em suas aplicações deve se atentar aos detalhes. E muitas vezes um único detalhe aumenta consideravelmente a usabilidade geral da aplicação. Um bom exemplo deste fato é setar o foco no primeiro campo input do formulário da página. Continue lendo »





Função Que Retorna o Próximo n Dia – PHP

22 03 2008

Motivação

O PHP não traz nativamente funções simples para manipular data, sempre temos que apenas para o time, sendo assim muita gente escreve suas próprias funções mais mnemônicas.

Continue lendo »





IE não é browser é pesadelo! ou (innerHTML em Tabela)

15 03 2008

Bom vou colocar ao longo dos próximos dias algumas pérolas advindas desse navegador que não serve nem como bucha de canhão na guerra das malvinas! Venham o trecho de código abaixo: Continue lendo »





Primeira Manhã de Pós e eu NÃO FUI

15 03 2008

Bem vou contar o que me aconteceu de ontem a noite até hoje de manhã.

  1. Meia noite fui trancar a porta da minha casa e crash (uma onomatopéia típica de gibis) a minha chave quebrou DENTRO da fechadura; Continue lendo »




Pós-Graduação Na Unioeste

15 03 2008

Saudações a todos, hoje é uma sexta feira diferente em minha vida pois amanhã eu que vos digito iniciarei mais uma jornada em minha vida, uma jornada acadêmica em busca do sossego para esta minha mente ávida por conhecimento, amanhã começa a minha pós, logo logo (dentro de um ano e meio mais precisamente) se não chover nem faltar chuva vou me evoluir, tipo os pokemon, lembram deles? de um bacharelzinho para uma pós-graduadozinho, ai como disse meu amigo Anderson vou estas apto a dar manutenção em 7 servidores linux simultaneamente sem fazer cagada!

Bom devido a esse fato talvez poste com menos frequencia neste maravilhoso, lindo, fudidão, blog do battisti, não abandonarei vocês queridos leitores (oi mãe, ela não programa em php mas faz uma torta salgada que é uma coisa de louco).





VirtualBox Ubuntu 7.10 com Kernel 2.6.24

10 03 2008

A alguns meses atrás meu amigo Gabriel me indicou o virtualbox para que eu pudesse usar no linux alguns programas em windows.

Devido a um problema com o meu headset bluetooth motorola h500 resolvi atualizar meu kernel (que era o 2.6.22) para o 2.6.24 o que aconteceu foi que depois do update do kernel o VirtualBox parou de funcionar pois eu não tinha adicionado um dos módulo, depois de bater cabeça fiz o seguinte: Continue lendo »





Prototype Ajax Bind e Outras ‘Futilidades’

5 03 2008

Saudações

Hoje precisei fazer uma interface para um de nossos sistemas que devido a quantidade monstruosa de chamas em AJAX que ao olhar para o meu firebug achei que estava usando o Gtalk (outra piadinha de micriro tá loco!), mas enfim com toda essa movimentação cliente servidor e tudo mais surgiram vários problemas, uns novos outros fantasmas antigos e que eu sempre lidava com eles com o meu jeito maroto de programar :), mas eis que vamos ao primeiro problema do dia, o BIND. Continue lendo »





Removendo Classes CSS de Elementos Usando Javascript / Prototype

4 03 2008

Supondo que você esteja desenvolvendo um formulário e resolve usar uma classe CSS para marcar os campos input que estão com problemas, a cada nova submissão você precisa retirar o CSS de erro dos campos input, como fazer isso usando a prototype:

    $$('.suaclassedeerro').each(function(node){
        node.removeClassName('suaclassedeerro');
    });

A função $$ é o seletor dinâmico de elementos através de regras CSS, o retorno dessa função é um vetor, a função each itera sobre todos os elementos de um vetor, para cada node do vetor será aplicada a função javascript removeClassName que remove uma classe de um elemento.

Eu sou defensor da seguinte tese:

– Programar usando qualquer Framework (desde que funcione é claro) é melhor do que programar tudo na unha!

Um abraço e até a próxima.





Eu as Formigas e meu LCD

4 03 2008

Hoje vou contar uma história inusitada que me aconteceu, e que ainda está acontecendo. Tenho um LDC SOYO 19 polegadas widescreen fudidão! Ele já ta meio baleado com dois death pixel e um que tá na beixa da cova digamos assim um semi death pixel (um pixel zombi).

Eis que noto um pontinho preto na tela lá pelas 13:30 pensei comigo – Caramba mais um death pixe, de repente o ponto preto se mexeu, chequei mais perto e vi que era uma formiga não titubiei e taquei o dedo nela mas a bicha não morreu e continuou se mexendo, meu cérebro primata se assustou com aquilo e me lembrei da propaganda da masca que o cara pisa em cima e ela não morre, sabem, mas voltando ela continuava viva ai que caiu minha ficha. ELA ESTAVA DENTRO DO LCD, sim é isso mesmo entre a fatia preta e a fatia colorida do LCD, fiz até um vídeo mas não coloquei no iutubil ainda! Continue lendo »





Rules Postgres & UML com Dot

26 02 2008

Traduzindo literalmente rules são regras, ou seja alguma coisa que sempre vai acontecer em função de outra coisa, por exemplo, sempre que tem jogo de futebol aumenta o nível de stress da minha esposa, isso é uma regra, bom lá em casa pelo menos é :).

Quando falamos de banco de dados as regras são coisas muito úteis, por exemplo, veja a figura abaixo:

classe.png

Continue lendo »





Curriculum no LATEX

21 02 2008

Pessoal, todo mundo necessita de um curriculum, mas não basta tem um monte de cursos e saber um monte de coisa, é preciso ter seu curriculum com uma boa aparência e nada melhor do que o LaTeX para te ajudar a fazer isso!

Existem vários pacotes que ajudam a montar curriculum, esse é um deles. O que eu uso é o nativo aquele basicão que vem no próprio mictex.

\usepackage{CV}

Para ver como vai ficar veja o meu curriculum.pdf 🙂

Para ver e baixar o código fonte em LaTeX e baixar clique aqui!

Depois de fazer seu Curriculum da uma lida nisso aqui pra relaxar





Rsync com Caminho Relativo ou (Sincronizar Apenas Arquivos)

21 02 2008

Vou descrever o problema que tive e depois vou mostrar a solução que um camarada da lista do rsync me mandou:

Precisava sincronizar duas pastas (bom é um post sobre rsync nada mais natural do que sincronizar as coisas), a pasta origem e a pasta destino, o problema é que na pasta de origem tinha uns lixo que eu não queria nem sincronizar nem apagar, veja o diagrama em ASCII abaixo:

Continue lendo »





Frases do Dia

20 02 2008

UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity.
Autor Desconhecido





DOT – Uma linguagem para criar gráficos

19 02 2008

Vou começar com dois links, leiam eles e você não precisam ler o resto deste post 🙂
Página em português sobre o assunto, foi ali que eu descobri esta tal de DOT

Página com exemplos do que se pode fazer

Como esse negócio funciona, muito simples. Escreva em um arquivo texto: Continue lendo »





Instalar APTANA, PDT no Eclipse

15 02 2008

Primeiro vá até o site http://www.eclipse.org/downloads/ e baixe a última versão do Eclipse.

O PDT necessita do plugin WTP que por sua vez precisa GEF, para instala-los abra o eclipse e vá e:

HELP / Software Update / Find and Install,

escolha o Europa Discovery Site e depois instale primeiro o GEF depois o WTP caso haja alguma dependência clique no botão SELECIONAR REQUERIDO.

Depois de instalar os pré-requisitos adicione o site

http://download.eclipse.org/tools/pdt/updates/

E instale o PDT, simples e rápido, uma dica não tente instalar estes caras manualmente pois não funciona.





Remover Acentos PHP

15 02 2008
/**
 * Remover os acentos de uma string
 *
 * @param string $str
 * @return string
 */
 public static function removerAcento($str){
    $from = 'ÀÁÃÂÉÊÍÓÕÔÚÜÇàáãâéêíóõôúüç';
    $to   = 'AAAAEEIOOOUUCaaaaeeiooouuc';
    return strtr($str, $from, $to);
}

O legal dessa implementação é que ela é muito simples e usa dos recursos nativos do PHP.





Rapidinha do Postgres – JDBC Postgres

15 02 2008

A URL de conexão JDBC para um banco postgres é:

jdbc:postgresql://ip-do-servico/nome-do-banco

Um bom plugin do eclipse para manipular base de dados é o SQL Explorer.

O Driver JDBC do postgres pode ser obtido neste endereço, quando for baixar preste muita atenção na versão do seu postgres porque se você pegar a versão errada há grandes chances da conexão não funcionar.





Having Mysql

13 02 2008

Consulta para listar todos os e-mail duplicados em uma tabela, mas serve para qualquer coluna.

SELECT
   email
FROM tabela
GROUP BY email
HAVING count(email) > 1
ORDER BY email




Frases do Dia

13 02 2008
“O FIM ESTÁ PRÓXIMO, USE LINUX!”

There´s no place like 127.0.0.1
Piada de Desenvolvedor Web

Como apagar a internet, muito fácil digite rm -rf http://
Anselmo Battisti





Converter Formato Data Postgres e Mysql

12 02 2008

Para converter o formato de um campo do tipo data no postgres use o comando to_char, exemplo:

SELECT
   to_char(nome_campo, 'MM/DD/YYYY') as nome_campo
FROM tabela

Isso irá retornar a data no formado mês/dia/ano.

Meu amigo Anderson deu a dica de como converter datas via SQL no Mysql

SELECT
   DATE_FORMAT(nome_campo, '%d/%m/%Y') as nome_campo
FROM tabela




print_r Javascript

8 02 2008

Para quem está acostumando a usar o print_r no PHP sente falta de uma função parecida no Javascript,

function print_r(theObj){
   if(theObj.constructor == Array ||
      theObj.constructor == Object){.
      document.write("
    "); for(var p in theObj){ if(theObj[p].constructor == Array|| theObj[p].constructor == Object){ document.write("
  • ["+p+"] => "+typeof(theObj)+"
  • "); document.write("
      "); print_r(theObj[p]); document.write("
    "); } else { document.write("
  • ["+p+"] => "+theObj[p]+"
  • "); } } document.write("
"); } }

Peguei o código deste site

ATUALIZAÇÃO – 31/05/2008

Se você utiliza o firebug ai vai uma dica de debug:

  1. Clique em script;
  2. Abra o arquivo que você que tem a variável que você quer dar o print_r;
  3. Clique no número da linha logo abaixo da variável (o firebug irá criar um breakpoint)
  4. De um F5 e veja o firebug mostra as variáveis

Para uma versão mais detalhada, em inglês, consulte este site





LaTeX – Footnote dentro de Table

6 02 2008

Quando você coloca um footnote dentro de uma tabela ele simplesmente não aparece! Para solucionar o problema use o footnotemark e o footnodetext, exemplo de uso:

\begin{table}[htb]
   \centering
   \large
   \setlength{\arrayrulewidth}{2\arrayrulewidth}
   \setlength{\belowcaptionskip}{10pt}
   \caption{\it Caption da Tabela.}
   \begin{tabular}{|l|r|}
      \hline
      \multicolumn{2}{|c|}{\textbf{Mesclar Duas Colunas}} \\
      \hline
      \textbf{Módulo} & \textbf{Dias}\\
      \hline
      Modulo I & 10 \footnotemark[1] \\
      \hline
      Módulo II & 5 \footnotemark[2]\\
      \hline
   \end{tabular}
\end{table}

\footnotetext[1]{Nota do Módulo I.}
\footnotetext[2]{Nota do Módulo II}

Achei esta nesse site.

E por hoje é só pessoal





Backup no Mysql – mysqldump e mysql Uma Dupla Dinâmica

2 02 2008

Bom eu já usei muito o MySql na minha vida, mas nos últimos dois anos mudei primeiro para o SqlServer e atualmente uso o Postgres que por sinal é um banco muito completo e com ferramentas excelentes, bom vamos ao MySql.

Hoje precisei restaurar uma base de dados mysq vou narrar os acontecimentos:

Continue lendo »





Pidgin é o Cara

31 01 2008

A algum tempo seguindo uma sugestão do meu amigo rafa uso o pidgin, ele é um agregador de comunicadores instantâneos, eu uso ele para integrar o gtalk e o msn. Pois bem, ele tem um monte de recursos legais e hoje descobri dois que são simplesmente matadores. Continue lendo »





Javascript Undefined

30 01 2008

Para testar se uma variável javascript está setada ou não faça o seguinte:

if(typeof variavel == 'undefined'){
   alert('vazia');
} else {
   alert('cheia');
}




EXT – Dicas e Truques III

30 01 2008

1 – Selecionar um Objeto

Se você precisa colocar em uma variável um objeto do EXT que foi criado inline, exemplo,adicionar mais uma aba a este tabPanel criado inline em um layout.

{
    region: 'center',
    id : 'tabPanelCentral',
    xtype: 'tabpanel',
    items: {
        title: 'Inicio'
    }  
}

use o Ext.getCmp(‘tabPanelCentral’), isso irá retornar em uma variável o objeto tabPanel ai é só chamar uma função que dentro tenha

    var tabs= Ext.getCmp('tabPanelCentral');

    tabs.add({
        title: texto,
        id : id,
        iconCls: 'tabs',
        html: 'Tab Body ',
        closable:true
    }).show();