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

Um link vale mais do que mil palavras.
Anselmo Battisti

Se você está precisando inserir código fonte no latex tem várias formas de fazer isso, no site do tex-br.org.tem alguns exemplos, o que eu geralmente uso é o do package listings, como funciona:

1 - Cole isso aqui antes do \begin{document}

% - inicio codigo fonte
\usepackage{listings}

\lstset{numbers=left,
stepnumber=1,
firstnumber=1,
numberstyle=\tiny,
extendedchars=true,
breaklines=true,
frame=tb,
basicstyle=\footnotesize,
stringstyle=\ttfamily,
showstringspaces=false
}
\renewcommand{\lstlistingname}{Code}
\renewcommand{\lstlistlistingname}{Lista de Listagens}
% - fim codigo fonte

2 - Crie um arquivo com o seu código fonte

3 - Insira usando o seguinte comando

\lstinputlisting[language=SQL, label=sqlselect, caption={SQL Query used to find the son os fact 10}]{select.sql}

Por hoje é só pessoal.

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;

Salvando Com Ajax

Bom qual é o problema se submeter os dados de um formulário que tenha um componente tinymce através de AJAX, eu respondo tem todo o problema pois você vai ter a desagradável surpresa de que os dados só serão enviados corretamente aos servidor quando enviar pela segunda vez o formulário, isso acontece pois o Tiny cria um textarea mocozado, oculto, e são os dado contido nesse cara que o form envia, ou seja tem um Javascript que le os dados do Tiny e joga nesse textearea agora vejam bem AJAX é assíncrono e muitas vezes antes do tiny atualizar o textarea o form já foi enviado pela sua chamada em AJAX, por isso que na segunda vez funciona pois no clique anterior ele atualizou o textarea lol, demorei mas descobri, e qual a solução Anselmo?, elementar caro colega faz o Tiny atualizar na mara os dados do textarea, assim ooooo

Event.observe(window,'load',function(){
   Event.observe('btn_salvar','click',function(){
    tinyMCE.triggerSave(true,true);
  });
}?)

Isso vai fazer com que ao dar o clique no botão btn_salvar, meu botão tinha esse id :),  antes do submit do form o Tiny vai atualizar o textarea e depois disso chamar o AJAX, legal né :)

Plugin

Bom antes de continuar é bom dar uma olhada no que já existe para o tiny, talvez você esteja querendo fazer algo que já foi feito, e já fizeram um tutorial de como criar plugin bom é o exemplo 23 explica certinho então boa sorte, se tiverem algum problema manda ai um comente que eu ajudo.

Vou indo nessa pq a mulher que faz a limpeza aqui do escritório ta me tocando fora da mesaaaa.kjahskfh

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) Read the rest of this entry »

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.

Olha a situação, eu tinha um elemento SPAN e queria colocar um observador nele, primeiro tentei usando EXT

   var button_navegar = Ext.get('meu_id')
button_navegar.on('click', function(){alert(10)});

Funcionava no Firefox mas não no IE, não desisti achei que era algum pau do EXT, fiz usando prototype

Event.observe(window,"load",function(){
Event.observe('meu_id','click',function(){
alert(10);
})
})

De novo funciona no Firefox mas não no IE comecei a ficar nervoso e eis que me vem na mente que poderia ser problema no IE manco, talvez ele não conseguisse colocar eventos em SPAN, dito e feito coloquei um DIV no lugar e ambas as soluções funcionaram, portanto ai vai a dica não coloquem observadores em SPAN poiso IE manco não entende isso.

Se você não usa nem EXT nem prototype e mesmo assim que usar observadores então da um pulo nesse link, ele mostra como criar a sua própria função genérica para adicionar observadores.

[]’s Anselmo Battisti

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

Introdução

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

  1. Usando o evento keydow
  2. Usando o Ext.KeyNav

Evento KeyDown

Usando o manipulados de eventos é possível colocar uma evento em qualquer coisa que tenha id, é bem simples:

Ext.get(’seu_id’).on(’keydown’, function(e,fields){
if(e.getKey() == 13){
alert(”Enter”);
}
});

A função e.getKey() irá retornar um número inteiro referente a tecla que foi pressionada, alguns valores para teclas padrões são:

'esc':27,
'escape':27,
'tab':9,
'space':32,
'enter':13,
'backspace':8,
'scrolllock':145,
'capslock':20,
'numlock':144,
'pause':19,
'insert':45,
'home':36,
'delete':46,
'end':35,
'pageup':33,
'pagedown':34,
'left':37,
'up':38,
'right':39,
'down':40,
'f1':112,
'f2':113,
'f3':114,
'f4':115,
'f5':116,
'f6':117,
'f7':118,
'f8':119,
'f9':120,
'f10':121,
'f11':122,
'f12':123

Ext.KeyNav

Esse é o jeito mais elegante de se colocar teclas de atalho, exemplo:

var combo_nav = new Ext.KeyNav("seu_id",
'enter': function(){
alert("enter pressed");});

Quando usar o Ext.KeyNav tenha sempre cuidado de inserí-lo dentro de um bloco Ext.onReady(function(){ });, caso contrário um erro irá acontecer pois o Ext tentará inserir o evento antes do elemento ser inserido na página.

Grande Abraço a Todos!

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. Read the rest of this entry »

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

Event.observe(window,'load',function(){
   $$('input[type=text]‘).each(function(e){
      Event.observe(e,’focus’,function(){
         this.setStyle(’color:red’);
      })
      Event.observe(e,’blur’,function(){
         this.setStyle(’color:#333′);
      })
   })
})

Me baseei na função escrita pelo (…) bom ele não tem um nome assim propriamente dito ele se intitula de S.

OBS 1: O script acima usa uma regra de CSS 2.1, type=’text’, e segundo o manual do prototype apenas na versão 1.5 o operador $$ passou a reconhecer tais atributos, então se você estiver usando uma versão anterior a 1.5 pelamordedeus atualiza pra nova :). Essa observação se deve ao fato de que o Luiz (camarada aqui do trampo) jurou de pé junto que o script estava com pau mas o prototype dele era o 1.4, que isso Luiz js diga não ao js ancião!

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.

Mas os paus ainda existem

PAU Zero

O IE7 tem problemas em criar elementos HTML dinamicamente pelo JS,  exemplo de coisa que não funciona no IE7

var inputDesativar = document.createElement(’input’);
inputDesativar.setAttribute(’type’,'checkbox’);
inputDesativar.setAttribute(’onClick’,'carregarComunicacao.desativarComunicacao()’);

A solução é usar o insert do prototype.

$(’elemento’) .inser(”<div id=’10′>Texto</div>);

PAU 1

setAttribute não consegue setar CSS em tempo de execução, texto explicando o assunto.

Qual a Solução!

$(’box_comunicacao’).style.width = ‘250px’;
$(’box_comunicacao’).style.height = ‘150px’;

PAU 2

CSS do IE7 tem um pau de 20px de diferença no posicionamento das coisas, para corrigir isso o hack Exclamação , exemplo:

.box_comunicacao_ul {
height : 90px;
margin-left : -10px;
!margin-left : 10px; /* O Exclamação faz com que só o IE veja isso*/
overflow: auto;
width : 100%;
}

Instalei hoje a nova versão do pgadmin3, uma ferramenta livre para a manipulação de bancos de dados, algumas características que eu considero importantes em ferramentas de gerenciamento de bancos de dados ainda não foram contempladas mas ele já quebra um grande galhão, melhor do que usar o psql eu acho, quem sabe.

Para ver se eles, os programadores do pgadmin3, já haviam inserido o autocompletar dos nomes das colunas fui ler o manual do sistema, lá pelas tantas eu cliquei em um link e na página que eu fui jogado olhei para o texto e percebi que ele estava em Inglês, pensei imediatamente - Acho que ainda não traduziram esta parte do manual, mas logo me veio na mente - Ei o texto que eu estava lendo era em português ou em Inglês, rapidamente cliquei no botão voltar e constatei que o texto anterior também estava em Inglês, Achei interessante o fato de que meu subconsciente já nem liga mais se o texto esta em português ou em Inglês o danado simplesmente vai lendo e processando.

Isso me fez lembrar do peixe Babel do livro “O Guia do Mochileiro das Galáxia”, este peixe é um serzinho que ao ser colocado no tímpano se alimentava das vibrações sonoras externas e o “cocô” dele é a tradução instantânea. No livro este peixe foi usado como prova para existência de Deus pois um ser com uma função tão útil não poderia ser acaso de mutação genética. Acho que estou com um peixe desse nos meus olhos.

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. Read the rest of this entry »

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.

Read the rest of this entry »

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: Read the rest of this entry »

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; Read the rest of this entry »

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).

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: Read the rest of this entry »

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. Read the rest of this entry »

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.

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! Read the rest of this entry »

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

Read the rest of this entry »

Pessoal, entrei no flyordie para jogar um xadrezinho (se alguém jogar por lá meu nick é anselmao) e olhem o naipe do banner que me apareceu na tela!

banner

Pra mim foi como um tapa na cara, tudo bem ganhar uma grana com publicidade mas tem que ser propaganda de alguma coisa que tenha a ver com os visitantes do site, no meu caso que estava jogando xadrez poderia ser proção de tabuleiros, ou ainda aqueles reloginhos legais de xadrez contra o relógio, mas não os cara me deixam entrar esse banner, é de ficar puto da cara, então ai vai a dica, se você quer ganhar grana com seu site primeiro saiba quem é o seu público depois coloque coisas que tenham a ver com ele ai sim será publicidade e não apenas mais lixo eletrônico.

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 :)

OBS: Renomeie de .gif para .tex para montar o seu próprio curriculum

curriculum2.gif

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

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:

Read the rest of this entry »

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

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 um arquivo texto

digraph g {

 rankdir=LR;

 size="8,13"

 node [shape = circle];

 Associado  -> Associação [label = "1 - Solicita Agendamento"];

 Associação -> Conveniado [label = "2 - Agendamento"];

 Associação -> Associado  [label = "3 - Informa Horário"];

 Associado  -> Conveniado [label = "4 - Entrega o Cartão"];

 Conveniado -> Associação [label = "5 - Procedimento Executado"];

}

Agora vá até o seu shell e digite :

dot arquivo.dot -Tpng -oimagem.png

Isso vai gerar como saída uma imagem png com o seu diagrama.

O que o ping falo pra pinga antes de sair em busca de um destination host unreachable?

Vou ali comprar um cigarro e já volto.

OBS 1 : Para você que acha a piada tosca saiba que já temos duas risadas via MSN:

OBS 2 : O spacial ajudou com dados técnicos e sugeriu o destination host unreachable.

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 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.

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.

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
“O FIM ESTÁ PRÓXIMO, USE LINUX!”
http://marcellino.wordpress.com/

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

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

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

link para a função

OBS: Estou testando ferramentas de paste para evitar de colocar código fonte no site,

Peguei o código deste site

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

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:

Read the rest of this entry »

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. Read the rest of this entry »

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');
}

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();

Ao final de toda resposta sempre existe uma nova pergunta.
Anselmo Battisti

1 - Seleção Turbinada

Se você quiser fazer um LIKE mas case insensitive no postgres use o operador ~*, exemplo:

SELECT * FROM cidade WHERE cid_nome ~* 'cas'

Essa consulta vai trazer todos os registros que possuem a substring cas na coluna cid_nome

Cascavel
Pacasdatela
Enracas

2 - Importação de Dados

Se você gerou um dump de uma base postgres e vai tentar dar um restore em uma versão mais antiga, com o perdão da palavra fodeu, se for de uma verão mais baixa para uma mais alta pode até funcionar agora o contrário :(. Existe uma alternativa se tiver dentro da mesma versão maior, por exemplo, o dump veio de um 8.2 e você quer importar em um 8.0 você pode tentar fazer o seguinte:

1 - Criar primeiro o banco manualmente via SQL
2- pg_restore -a -d banco -U postgres arquivo.tar –disable-triggers

3 - Importar apenas uma tabela

pg_restore -a -d banco -U postgres -t sua_tabela arquivo.tar –disable-triggers

Vai dar um monte de warning mas ele vai restaurar os seus dados

E que Deus tenha piedade de seus dados

A IVSP é uma doença extremamente perigosa que atinge 5 em cada 10 programadores, ela está se alastrando de forma tão vigorosa que o ministério da saúde já está considerando a IVSP como o mal do século para os programadores, mas afinal o que é IVSP? Read the rest of this entry »

Como montar um combobox dinâmico usando SimpleStore

// cria o vetor que irá armazenar as opções do combo
this.arrayColumn = [];// cria o store que irá organizar os dados
this.comboboxStore = new Ext.data.SimpleStore({
   fields: ['id','display'],
   data: this.arrayColumn
});

// efetivamente cria o combobox
this.combobox = new Ext.form.ComboBox({
   store : this.comboboxStore,
   mode : ‘local’,
   displayField: ‘display’,
   valueField : ‘id’,
   width: 150,
   triggerAction:’all’,
   editable: false
});

// aqui estão sendo adicionados os elementos no vetor que irá
// ser usado para montar o combo
this.arrayColumn.push(['cid_cod','Cod']);
this.arrayColumn.push(['cid_nome','Nome']);
this.arrayColumn.push(['est_cod','Estado']);

// este é o pulo do gato para o combobox se atualizar, ele recarrega
// o store e exibe a informação correta
this.comboboxStore.loadData(this.arrayColumn);

Mais uma coisa ‘como diria o tio do jack chan’: É sempre difícil organizar código fonte no wordpress, sendo assim, por algum tempo eu vou colocar os códigos aqui no wordpress e também num site que eu achei chamado http://pastie.caboo.se. O objetivo deste site é justamente armazenar e exibir com formatação adequada trechos de código fonte de diversas linguagen. Veja o link para o código fonte do exemplo anterior.

1 - Tradução

Para traduzir as mensagem dos componentes do EXT basta carregar o arquivo /ext-2.0/source/locale/ext-lang-pt_BR.js, nele estão contidas todas as traduções. Caso você esteja usando apenas alguns componentes você pode inserir apenas a tradução do componente desejado, por exemplo se você estiver usando apenas o grid :

Ext.apply(Ext.grid.GridView.prototype, {

    sortAscText  : 'Ordem Ascendente',

    sortDescText : 'Ordem Descendente',

    lockText     : 'Bloquear Coluna',

    unlockText   : 'Desbloquear Coluna',

    columnsText  : 'Colunas'

});

 Ext.apply(Ext.PagingToolbar.prototype, {

    beforePageText : 'Página',

    afterPageText  : 'de {0}',

    firstText      : 'Primeira Página',

    prevText       : 'Página Anterior',

    nextText       : 'Próxima Página',

    lastText       : 'Última Página',

    refreshText    : 'Atualizar',

    displayMsg     : '{0} à {1} de {2} registro(s)‘,

    emptyMsg       : ‘Sem registros para exibir’

});

2 - Todas as Colunas Ordenáveis

Para deixar todas as colunas do seu grid ordenáveis use o código:

cm.defaultSortable = true;

>

Onde cm é o nome do seu ColumnModel.

3 - PHP métodos Estáticos

Hoje descobri por acidente que o PHP não está nem ligando se você coloca ou não static antes da função, tendo ou não você pode chamar a função usando o ::

class teste  {
   public function alert(){
      echo "texto";
   }
}
// use o método direto
echo teste::alert();

>
Isso vai funcionar, isso é um absurdo é por estas e outras que a orientação a objetos no PHP não tem uma fama muito boa.

Bom estou começando a usar a biblioteca EXT js, realmente ela é muito boa, ainda mais agora na versão 2.0. O Problema é que tem algumas coisinhas que você não pega de primeira e fica se matando horas pra achar a solução, então aqui vou eu escrever algumas dicas / notas sobre o assunto.

  1. Imagem Em Branco

    A EXT usa uma imagem com dimensões de 1×1px em transparente para definir o espaçamento das coisas, por padrão a EXT vai buscar esta imagem no site oficial, para definir que a imagem seja carregada de uma pasta local:

    Dica: se você estiver usando o linux de um wget http://extjs.com/s.gif para baixar a imagem pq clicar nela para salvar do navegador é bem difícil.

    Ext.onReady(function(){
    Ext.BLANK_IMAGE_URL = ‘meusite.com.br/imagens/s.gif’;
    }

  2. ToolTip

    Caso as suas toolTips insistam em não aparecer verifique se você pediu pra elas serem inicializadas antes

    Ext.QuickTips.init();

  3. Handler

    Os handler são usados para definir uma ação básica em objeto, como menus e botões, para que o EXTjs não
    espere que você clique no componente antes de executar uma função, é necessário escrever a função dentro de outra function


    handler:alert(’Isso não funciona e vai exibir o alert na hora que a página for carregada’);
    handler:function(){alert(’isso funciona’)}

  4. Definindo Uma Classe CSS para um botão

    Quando você precisar colocar uma imagem em um botão ou em um menu, é só usar a propriedade, porém no CSS que irá definir o fundo do elemento com a imagem desejada não se esqueça de definir a tag important!

    .grupo{background-image: url("../../imagens/fam/group.gif")!important}
  5. Como Fazer um Menu de Contexto em um Grid

    Isso foi discutido nesse tópico do forum, bem fácil de fazer.

  6. Customizando Coluna de um GRID com o renderer

    Para personalizar o conteúdo de uma coluna, por exemplo se o valor da coluna moeda for menor do que zero escrever o valor em vermelho, esse tipo de coisa é feito usando o renderer, exemplo.


    // função que irá formatar o valor
    var formatar = {
    minimo : function(value,p,r){
    var texto = “”;
    if(value==4){
    texto = ““+value+”“;
    } else {
    texto = value;
    }
    return texto;
    }

    // no columModel da célula você coloca
    renderer:formatar.minimo

    Esse cidadão fez uns exemplos interessantes sobre esse tema

    Links Importantes

  1. extjs.com Site oficial da biblioteca
  2. http://extjs.com/deploy/dev/docs/ Api de todas as clases, diz o que é mas poucas vezes mostra exemplos práticos
  3. http://extjs.com/forum/ Forum, o pessoal é muito prestativ, então aprenda e ensine.

Ao ver uma lâmpada queimada os CEOs da micro$oft prontamente derrubam a casa e constroem uma nova ao invés de trocar a lâmpada.
Anselmo Battisti

Todas as coisas estão onde devem estar, ou, as coisas devem estar onde estão?
Anselmo Battisti

A uns 3 anos ou mais eu venho falando:

- Validação no lado do cliente não existe, você está no máximo facilitando a vida do usuário mas não é validação.

Hoje recebo uma matéria muito boa que diz justamente isso, é isso ai finalmente me ouviram :).

Estava tomando banho e pensando em algumas questões filosóficas, uma das quais me demorei um pouco mais. O destino existe?

Fiz uma analogia entre a nossa vida e a história escrita em um livro. Muitas vezes ao lermos uma história facilmente conseguimos prever quais são as próximas palavras escritas, isso acontece pois geralmente existe uma conexão entre as palavras, eu disse geralmente pois se o autor quiser ele pode escrever qualquer palavra que quiser. Com a nossa vida eu acredito que é a mesma coisa, nosso destino está mais ou menos traçado com base nas escolhas que fizemos anteriormente em nossa vida, é claro que a escolha é nossa e podemos fazer o que quisermos mas geralmente somos coerentes e por isso somos previsíveis ou seja o destino em partes existe.

[]’s Anselmo Battisti

Se você tem uma string que é na verdade uma expressão e precisa avaliá-la usando a função eval então faça o seguinte:

$exp = "12 == 13";
# avaliar a expressao
if(eval("return (".$exp.");")){
   return true;
} else {
   return false;
}

Badabim Badabam Bada que fácil.
[]’s Anselmo Battisti

Bom vou escrever hoje sobre um assunto que não tem nada a ver com este site, mas tudo a ver com o nosso bolso. Os impostos. Esta semanas vimos chegar ao fim uma briga política que culminou em que como diria o Lula:

- Nunca na história desse pais um presidente perdeu uma briga de forma tão vergonhosa para o senado.

A CPMF chega ao fim. Eu acredito que ela foi o imposto/contribuição mais sem vergonha que já existiu nesse pais, pior do que o quinto que era pago ao governo português na época do império, digo isso porque o governo aproveita da “tonguice” do povo que acredita que paga apenas 0.38% de CPMF quando compra um produto.  Isso é mentira pois a cada transação financeira da cadeia produtiva lá se vão 0,38% do valor total, no fim das contas isso ai pode representar até 2% do valor de um produto, é muita coisa, um imposto mascarado tanto em sua cobrança quanto em seu fim que seria a Saúde.

40 bilhões é o que a CPMF arrecada por ano, isso é muita grana, com este valor da pra pagar Unimed para todo mundo que usa o SUS e sobra troco.

Caso você necessite descobrir se um dado elemento HTML existe ou não em sua página faça o seguinte:

var body = document.getElementsByTagName('body')[0];
if(body.match(”#carregando”) == false){
body.insert({
top:new Element(”div”,
{id:’carregando’}).update(”Carregando”)});
}

$(’carregando’).hide();

Isso irá: Localizar um elemento com o id carregando dentro do primeiro elemento body, se existir não faz nada, caso contrário cria o elemento com o id carregando.

Quando a unidade de medida dos seu arquivo fonte passa de KByte para Metro é hora de pensar em refatoramento.
Anselmo Battisti

A algum tempo coloquei aqui no battisti.wordpress 3 funções para manipular valores monetários. Hoje resolvi agrupa-las em uma única classe.

ATENÇÃO BAIXA O MOEDA.JPG E RENOMEIE PARA MOEDA.JS ou COPIE a CLASSE ABAIXO
Moeda.js

/**
* moeda
*
* @abstract Classe que formata de desformata valores monetários
* em float e formata valores de float em moeda.
*
* @author anselmo
*
* @example
* moeda.formatar(1000)
* >> retornar 1.000,00
* moeda.desformatar(1.000,00)
* >> retornar 1000
*
* @version 1.0
**/
var moeda = {
/**
* retiraFormatacao
* Remove a formatação de uma string de moeda e retorna um float
* @param {Object} num
*/
desformatar: function(num){
num = num.replace(”.”,”");
num = num.replace(”,”,”.”);
return parseFloat(num);
},
/**
* formatar
* Deixar um valor float no formato monetário
* @param {Object} num
*/
formatar: function(num){
x = 0;
if(num<0){
num = Math.abs(num);
x = 1;
}
if(isNaN(num)) num = “0″;
cents = Math.floor((num*100+0.5)%100);
num = Math.floor((num*100+0.5)/100).toString();
if(cents < 10) cents = “0″ + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+’.’
+num.substring(num.length-(4*i+3));
ret = num + ‘,’ + cents;
if (x == 1) ret = ‘ - ‘ + ret;return ret;
},

/**
* arredondar
* @abstract Arredonda um valor quebrado para duas casas
* decimais.
* @param {Object} num
*/
arredondar: function(num){
return Math.round(num*Math.pow(10,2))/Math.pow(10,2);
}}
Como usar:
Inclua o arquivo moeda.js no HEAD de sua página

alert(moeda.formatar(1000));

alert(moeda.desformatar("1.000,00"));

Quem se interessou pela forma como a classe moeda.js foi codificada leia este texto.

Por hoje é só pessoal!

Em alguns caso não queremos que o navegador memorize os textos que o usuário digita em alguns campos. Isso é necessário por questões de segurança, para que o autocompletar seja desabilitado basta adicionar ao html do elemento a propriedade:

autocomplete=”off”

para definir isso pelo javascript

“Código rural! Acho que foi escrito por um cara que estava ouvindo música sertaneja”
Anselmo Battisti

“Se esquerda não tivesse U não precisaria da direita”
Darlon Vasata

Pra entender o lance da esquerda faz o seguinte:
Escreva a palavra esquerda no teclado entendeu! matador né!

Saudações

O Smarty é uma biblioteca para a construção de template. Os templates permitem a separação da apresentação da lógica de negócio escrita em PHP.Esta biblioteca possui vários plugins que auxiliam na criação da camada de apresentação.

Para criar um elemento select a partir de um vetor em php.

// template

{html_options name=vetor options=$vetor selected=$selecionado}// php

$sql = " SELECT id, nome FROM tabela";

$vetor = $con->Execute($sql)->getArray();

foreach ($vetor as $k=>$v){

   $x[$v['id']] = $v['id'].” - “.$v['nome'];

}

$tela->addVar(”vetor”,$x);

$tela->addVar(”selecionado”,19);

Expressão regular é uma coisa que depende muito da engine que às interpreta, por isso, resolvi postar aqui algumas expressões regulares muito comuns em validação de dados em PHP.

Se você não tem idéia do que seja uma expressão regular acesse o site do aurélio.

1 - Como testar uma expressão regular no php?

 $cep = "85915-230";

 $pattern = "/^[0-9]{5}-[0-9]{3}$/”;

 if (preg_match($pattern, $cep)) {
   return true;
 } else {
   return false;
 }

2 - Exemplos de expressão regular
a - CEP

   $pattern = "/^[0-9]{5}-[0-9]{3}$/”;

b - Data no formato d/m/Y exemplo: 01/01/2009

   $pattern = "/^(0[1-9]|[1-2][0-9]|3[0-1])[\/](0[1-9]|1[0-2])[\/](19|20)[0-9]{2}$/”;

c - String com zero ou mais letras

   $pattern = "/^[a-zA-Z]*$/”;

d - Nomes completos “feita pelo meu amigo Darlon”

   $pattern = "/^[a-zA-Z][a-zA-Z][a-zA-Z]* [a-zA-Z ]*$/”;

Se alguém tiver ai uma expressão regular que valide moedas posta ai !

A algum tempo postei sobre o Easy DOM Creator, uma ferramenta bastante útil para realizar a manipulação dos elementos da árvore HTML. Sendo algum muito importante a biblioteca prototype está oferecendo nativamente esta funcionalidade a partir da versão 1.6 RC0.

O Exemplo abaixo sintetiza tudo o que é necessário saber sobre está função.

$(id_elemento).insert({      after: new Element('b',

{class:'msgErro'}).update('texto que será exibido')

});

O código acima irá:

  1. Criar um elemento negrito b;
  2. Setar ao elemento a classe msgErro;
  3. Inserir o texto ‘texto que será exibido’;
  4. Inserir o elemento criado depois do elemento cujo id é id_elemento.

Para inserir uma quebra de linha

$('mensagem').insert(new Element("br"));

Uma outra forma de inserir HTML sem usar o innerHTML é:

$('id').insert(
    "<tr><td>10</td><td>10</td></tr>";
);

Veja mais exemplos no site oficial da biblioteca prototype.

Chuck Noris usa imagem BMP como índice de seus vetores em Java.
Anselmo Battisti 

Pessoal é com grande pesar no coração que postarei hoje a primeira matéria sobre robos matando seres humanos :

Robô mata 9 e fere gravemente 14 em teste militar

Uma arma robô matou nove pessoas e feriu gravemente outras 14 em um teste em uma base militar na África do Sul na última sexta-feira. A máquina de combate anti-aéreo começou a atirar sem o comando humano obrigatório, de acordo com a Wired

Link para a matéria completa

OBS I : Ele matou 9 porque estava com DEFETO imagina esta porcaria funcionando corretamente !

OBS II : Esta foi a primeira mas com certeza não será a última vez que veremos robôs assassinado seres Humanos.

É o inicio do fim meus amigos o início do FIM. Adeus

A cagada é o adubo do conhecimento.
Anselmo Battisti

Calcula ai pra mim o resto da diferença.
Anselmo Battisti 

programando_na_unha.png

DBA : Data Base Adubator “Pessoa que tem permissão para adubar a base de dados”

DMS : Desmerdificador Senior “Pessoa cuja função é desmerdificar as cagadas dos outros”

Usabilidade, Usabilidade, Usabilidade, Usabilidade!

 

 

achei nesse site

“FTP é coisa de cliqueiro, já era. FTP = (F)oi-se o (T)empo (P)eixe!”.
Fábio Berbert de Paula em um manual de rsync

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=338&pagina=3

 

 

No Postgres

Para concatenar duas colunas no postgres, ou duas strings utilize ||

SELECT colunaA || colunaB as colunaAB FROM tabela

Contribuição do meu amigo Ivan:

Se você tiver uma coluna que possa ter um valor nulo então é necessário utilizar o operador coalesce pois NULL concatenado com qualquer coisa dá NULL.

SELECT (coalesce((colunaA),”) || coalesce((colunaB),”)) AS colunaAB FROM tabela

No SQL Server

O sinal de + é usado para concatena strings, desta forma:

SELECT coluna1 + coluna2 as coluna12 FROM tabela

irá concatenar a coluna1 com a coluna2.

Caso sua coluna seja de um tipo diferente, inteiro ou float por exemplo será necessário fazer um cast desta forma:

SELECT  (cast(coluna1 as varchar) + ' - ' +  cast(coluna2 as varchar)) as coluna12   FROM tabela

Caso uma coluna puder ser nula então use o IsNul(coluna1,’ ‘) para trocar seu valor nulo por um espaço pois lembrem-se nulo com qualquer coisa é sempre nulo.

No MySQL

SELECT concat(coluna1,’ - ‘,coluna2) FROM tabela

Salve

De 28 a 30 de agosto acontecerá na Unioeste - Cascavel - Pr o EPAC e em paralelo o CONGED, maiores informações no site http://www.inf.unioeste.br/epac/.

Pois muito que bem, eu e meu amigo Alexandre Semmer iremos ministrar um mini curso sobre AJAX utilizando o Prototype.

Apostila : apostila.pdf (360 KB)

Apresentação : Apresentação

Exemplos : exemplo

Baixe o arquivo de exemplo e mude a extensão dele para .zip

Um ótimo livro sobre a prototype pode ser baixada no link:

http://beta.bigmedium.com/projects/prototype-pdf/index.shtml

Saudações

Parece estranho o título, para que alguém em sã consciência vai desativar a INTEGRIDADE do Postgre. Mas, em momentos de atualização de dados vindos de outros bancos ou em testes em que você não está preocupado se tem a maldadita FK faça o seguinte:

Para desativar

UPDATE "pg_class" SET "reltriggers" = 0 WHERE "relname" = 'tabela';

Para Ativar

UPDATE pg_class SET reltriggers =
(
SELECT count(*) FROM pg_trigger WHERE pg_class.oid = tgrelid
)
WHERE relname = 'tabela';

Como se conjuga o verbo programar?

EU programo;

TU programas

ELES  ganham a grana

tenho dito!

 

É certo não estamos sozinhos, apenas não sabemos nem ouvir muito menos falar. Somos surdos mudos em um ambiente cheio de vida!

 

por Kentaro Mori

“Ninguém teria acreditado nos últimos anos do século (…) que este mundo estava sendo observado discreta e minuciosamente por inteligências maiores que a do homem, mas ainda tão mortais quanto ele mesmo; que enquanto os homens se ocupavam com suas várias preocupações eles eram examinados e estudados, talvez quase tão precisamente quanto um homem de poder de um microscópio observaria as criaturas transientes que nadam e se multiplicam em uma gota d´água. Com complacência infinita os homens andavam para lá e para cá sobre este globo preocupando-se com seus pequenos casos, serenos na segurança do seu império sobre a matéria. É possível que a infusória debaixo do microscópio faça o mesmo.”

Trecho de a guerra dos mundo.

Texto que fala sobre algumas possíveis invenções feitas por ETs

http://catalisando.com/infoetc/19980601-transistor.htm

 

Os caras do mundo canibal  ( http://www.mundocanibal.com.br/ )
tem um site no servidor da OI e coloca propaganda da CLARO. Tem que ser macho pra fazer isto.

.

macho

Micro $_POST

Após alguma mudança no fstab, você pode usar os comandos abaixo para reinicializa-lo

umount -a
mount -a

Isto faz com que todas as partições que NÃO estejam sendo usadas no momento sejam desmontadas e novamente montadas com as novas configurações que estão no fstab.

Caso apareça a mensagem: “impossível desmontar pois a partição está sendo usada” isto quer dizer que, alguém ou alguma coisa “programa” está usando a partição, isto vai aparecer para a partição / pq ela está sendo usada pelo SO.

Meu amigo gabriel http://lovison.com.br/ me ajudou neste $_POST

[]’s Anselmo Battisti

Quando vários sistemas no mesmo servidor compartilham alguns arquivos existe uma forma de referenciar diretamente estes arquivos, sem a necessidade de utilizar includes ou variáveis.

A solução para este “problema” é definir no arquivo de configuração do PHP o php.ini no parâmetro include_path o caminho da pasta que contem os arquivos em comuns, exemplo de php.ini:

php.ini

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: “/path1:/path2″
include_path = “.:/usr/share/php:/var/www/includes”

adicionei o caminho /var/www/includes que é onde os meus scripts em comum ficam. Reinicie o apache para que as mudanças sejam efetivadas.

Com isto no momento em que você der um include em um arquivo json.php por exemplo, se este arquivo não estiver na mesma pasta do script que contém o include, o PHP automaticamente busca pelo arquivo dentro do diretório /var/www/include.

Referência

http://www.modwest.com/help/kb5-98.html 

http://www.imasters.com.br/forum/lofiversion/index.php/t144987.html 

E é isto pessoal.

Sempre temos o dilema de, usar ou não bibliotecas em Javascripts externas em nossos sistemas.

O grande ponto negativo é o tamanho delas.

Prototye : 97 Kb
Scriptaculous : 126 Kb

Em contra partida elas oferecem inúmeras funções prontas que quebram um “galhão” uma solução que achei bem viável são os compactadores de Javascripts, existem alguns softwares desktop e outros Web o que utilizei e achei muito bom foi o

http://www.bananascript.com/index.php?compress

Bom Divertimento.

Saudações

Esta semana deparei-me com um problema assas complicado e, apenas fui capaz de contorna-lo pois vivo em um mundo livre onde o código fonte fica ao alcance das mãos dos programadores astutos.

Uso o lynx para disparar uns crons do php mas por força do destino o lynx tem um bloqueio de 10 redirecionamento consecutivos para a mesma página, ele acha que é algum tipo de ataque sei lá.

Que fiz para contornar o problema, baixei o código fonte do lynx alterei o arquivo em C que tomava conta desta parte recompilei o lynx e beleza tudo funcionando.

Se fosse no IE por exemplo não teria o que fazer :) Usei todos os direitos do software livre e me senti muito bem

Arquivo :

WWW\Library\Implementation\HTacces.c

TOO_MANY_CONNECTION

[]’s Anselmo

O Dicionário é um artefato do cotidiano altamente recursivo, pois nele, as definições de palavras são feitas a partir de outras palavras e, que por sua vez suas, possuem suas próprias definições.

Não acredita faça você mesmo, pegue o Aurélio e veja o significado de:

Íntimo -> Âmago -> Cerne -> Íntimo

E existem milhares de outros exemplos procure o seu.

Na Cozinha1 - Quando lavar a louça sempre coloque a pedra de sabão na posição vertical pois assim haverá um menor contato do sabão com a agua que possa estar na pia, isto irá diminuir o desperdício.

2 - Quando for usar esponja de aço “vulgo BOMBRIL” sempre corte ela em no mínimo 4 pedaços, cada um deles é suficiente para uma lavada de louça, após terminar jogue fora não tente reciclar sempre da ‘caca’.

Read the rest of this entry »

Um sistema de gestão deve ser visto como um funcionário da instituição.
Anselmo Battisti

O estagiário é a base da cadeia alimentar do capitalismo.
Anselmo Battisti 

Saudações

Segue a Apostila e a Apresentação sobre Ajax que eu e meu amigo Christiano utilizamos durante o mini curso que ministramos no último “Circuito Paranaense de Softeare Livre”.

Apostila AJAX (350 KB)

Apresentação AJAX (251 KB)

Link para a nova apostila de Ajax e PHP

http://battisti.wordpress.com/2007/08/17/apostila-de-ajax-epac-conged/

[]’s Anselmo Battisti

Se todos os seres do universo fossem imortais eles não teriam consciência da própria vida.

“Anselmo Battisti”

“The sooner you test for a mistake the greater your chance of finding it and the less it will cost to find and fix”

tradução mais ou menos , meu inglês é meio analfabeto.

“Quando mais você realiza testes em busca de erros, maiores serão suas chances de encontra-los, isto irá reduzir o custo de correção.”

Sebastina Bergamann - “PHPUnit”

 

 

Saudações

O prototype quando enviar ” ou ‘ ele insere uma \ antes de cara ocorrência destes caracteres.

Para inserir corretamente em bases de dados é necessário remover esta barra e transformar os caracteres especiais em caracteres html.

Para isso:

foreach ($_POST as $key=>$valor) {

     $valor = eregi_replace("\\","",$valor);

     $this->dados[$key] = htmlspecialchars($valor);

}

[]’s Anselmo Battisti

Sim queridos leitores, sim, sim sim.

Aqui será detalhado um plano meticuloso para matar o flash. Este plano foi traçado com a ajuda de Everton, amigo e comparsa.

Os Fatos

Ele é o herói com um único super poder, sua velocidade. Como força é igual a massa X aceleração e tendo em vista que flash é mais rápido que o Super Man, ele logicamente consegue bater mais forte qu