Feeds:
Posts
Comentários

Dada a chamada de um método de instância da classe filho (herda),

Como invocar um método de instância de mesmo nome no pai

De dentro do método filho ??

- A resposta é super e fácil :)   +Tópico completo

Em algumas situações a chamada repetida de ajax e javascripts pesados e custosos pode virar um incomodo, tanto para o cliente (processamento, demora), quanto para o server (processamento, banda). Com uma tecnica muito simples você pode elimina-las.

O Problema: Em algumas situações, como carregamento dinamico de página, alguns campos podem ser ativados, chamando funções repetidamente.

A Solução: Criar uma função intermediária que chama a função custosa por meio de setTimeout! Veja:

Seu código antigo:

function valida_parcelamento() {
    bla()
    bla()
    //...
    new Ajax.Request('/acao_demorada/', {} )
}

Código otimizado:


var timeout = 9999
function valida_parcelamento(){
        // veja mais detalhes sobre esta var em Discussão
	var limite = 1000
	jQuery("#aviso").html( " É legal por alguma mensagem de feedback aqui, ou spinner" );
	// Cancela qq chamada de funcao menos recente, dentro do tempo limite
	clearTimeout(timeout)
	// Mantem a chamada de funcao + recente
	timeout = setTimeout("valida_parcelamento_slave()", limite)
}

function valida_parcelamento_slave() {
    bla()
    bla()
    //...
    new Ajax.Request('/acao_demorada/', {} )
}

Discussão: O modo de fazer é bastante simples, a função antiga tem seu nome concatenado com algum diferencial, no meu caso, escolhi chama-las de _slave e uma nova função é criada com o nome da antiga. Esta nova função tem uma função de gateway  para com a antiga, na prática ignorando as chamadas mais antigas e consecutivas.

Pelo lado positivo, esta tecnica não requer alterar nenhum HTML, e pode reduzir em muitas vezes a número de requisições.

Pelo lado negativo, a var limite é muito complicada de ser balanceada devido ao seu tradeoff: um número muito pequeno se torna inútil, pois em um computador lento as coisas demoram a carregar, então a função _slave acabaria sendo chamada varias vezes; por outro lado um número grande é ruim, pois obriga o usuário esperar d+ por uma resposta (tempo de execução da function + limite(ms)).

O ideal seria calcular a eficiencia do computador do usuário uma vez por meio de um benchmark simples e armazenar em cookie para usa-la de limite.

Caso, a funcionalidade de gateway seja desejável somente durante o tempo de carregamento, é possível desabilitar depois. Esta parte fica como tarefa :P

Just wanted to show how the same task can be performed at both jQuery (first snip) and Prototype.

The ideia here is to retrive an Array to the variable materials_id.


       jQuery.getJSON("/faturamento/ordem_compra/lista_pedidos_json/"+id, {},
        function(data){
          materials_id = data
        });

	new Ajax.Request('/faturamento/ordem_compra/lista_pedidos_json/'+id,{
		method: 'get',
		requestHeaders: {Accept: 'application/json'},
		onSuccess: function(data){
			materials_id = data.responseText.evalJSON(true);
		}
	})

Beware, the response is not synchronous by default. That means that if the next line were alert(materials_id) You would likely see ‘undefined’.

On Prototype is pretty easy to set synchronous, but in jQuery, a little more troublesome. Anyway, you can make it yourself, just set after the call and before you need the materials_id a while with the condition, that checks the typeof materials_id :)

Até o Rails 2.1.0 eu tinha meu projeto base com generators no svn, mas já sairam tantos plugins, gemas e testes novos que enfim, é hora de reciclar para meu grande projeto =)

Em fase de teste e escolha de plugins, o rascunho ta mais ou menos assim:

ctz:

Brazilian-Rails, Paper Clip, Will Paginate, CanCan, Formcastic

Em estudo:

[Web-app-theme ], [authlogic, easy-roles], [niffty-generators(jgdavey, linki), #meu BASE antigo, suspenders ] teste:[cucumber, rspec, shoulda, factory-girl], funcional:[culerity, watchr] css: [compass, blueprint-css, blue-ridge], [juicer, sprockets ]

Até o momento é isso, quando pronto vai estar no meu github.

Yay, I made something fun!

Now i can log on the FF error console as simple as this:

li('My msg here :) ')

See the solution and Please Vote: http://stackoverflow.com/questions/783661/log-to-firefox-error-console-from-javascript/2058520#2058520

Salve galera!

Começando aqui com o tema mais batido que pode haver no blog de qq programador que usa ruby, i.e., Começando a Usar Ruby!

Já lí vários desses posts e posso afirmar, nenhum deles me levou, ou levou qq um que conheço, a programar ruby, pois só a necessidade pode levar alguem se self.motivar! mas esse aqui é realmente bom porque cobre o mais essencial, ou seja:

Ruby não é sinonimo de Rails nem de WebDev !!!!

>> Leia o post de PotHix

- Ruby é açucar sintático :)

Conforme comentei no ultimo post apresento.. *rufar de tambores* .. MeuPonto!

Será que MeuPonto serve para você???

- Se você trabalha em um sistema de Banco de Horas, gosta de ruby e linha de comando (bash), então SIM!

Sua boca já esta salivando, e seu cérebro grita: COMO USAR ??

- Puta merda é simples! Depois de instalado (o que só requer 1 passo), você pode usar comandos do tipo:

meuponto in #=> Você acabou de registrar entrada!

meuponto out #=> Você acabou de registrar saída!

meuponto hoje #=> Exibe relatório diário

Logo teremos outras opções como relatório por data, semana e mês um interface HTML :D

Baixa já o seu! é gratis!  >> MeuPonto

Salve!

- Rising from the dead blog’s graveyard :P

Trabalho novo, rotina nova! Pois bem, comecei a trabalhar @Guenka uma empresa de software moderna. Mas pq moderna? Eles tem departamento de desenvolvimento com Rails, pesquisa e outro de inovação em web! Nice humn?!

Andei trabalhando num projetinho que surgiu do meu esquema de trabalho com banco de horas, e como estive aprendendo Git, resolvi conciliar as coisas e criei uma espécie de máquina de ponto pessoal em Ruby no GitHub.

Mais a respeito no próximo post!

Depois de trabalhar com eles é difícil voltar ao modelo relacional antigo!

Nada é tão lindo no Rails quanto essa feature, sinceramente, se o ActiveRecord provê uma abstração massa, isso extende ao extase!
É regra de negócio transparente, incluindo JOIN!

Para entender a pira veja: http://railscasts.com/episodes/108-named-scope

Se isso não te convernceu a usar sudo leia:

class Railer < Programador
require 'named scope' or die
p "I fell happier =)"
end

Linux é conhecido por ser aquele sistema operacional de difícil aprendizado, isto é quando o usuário é logo tachado de hacker ou de nerd. Ubuntu 9 muda completamente essa visão!

Desde a instalação o sistema oferece pouquissima dificuldade, já vem com a todos padrões de teclado e diversas linguas, diferente do windows que vem somente com aquela que você comprou. Sem complicações o sistema roda muito bem desde sua instalação, vem com o um pacote Office completo chamado Open Office (um Office mais básico), opções de temas visuais, leitor de PDF, FireFox (navegador de internet), MSN, editores de imagem, texto, softwares de multimídias, drivers de vídeo e som, e sua vantagem mais conhecida sistema comprovadamente mais imune a virus. Precisa de algum Software que não veio instalado? É super simples usar o Adicionar/Remover Programas! Busque o software do tipo desejado, escolha algum(s), ele baixa e instala automaticamente.

add_remove

Gerenciador de Software

Para as tarefas cotidianas: navegar por páginas da internet, assistir vídeos, músicas, abrir planilhas e documentos o sistema é extreamente robusto oferecendo quase tudo que você pode precisar desde a instalação.

Porém é fato que alguams necessidades podem não ser atendidas logo de cara, como por exemplo para aqueles que gostam de baixar músicas e animes os infames codecs de vídeo não veem instalados, mas sem drama, tendo conecção à internet o próprio programa tocador de mídia baixa os codecs para você instantânemante! É isso mesmo, diferente do Media Player do Windows que mal aponta o problema e você que se vire, no Ubuntu ele resolve para VOCÊ.

Para algum programa essencial do windows que venha a faltar existe a possibilidade de usar o WINE para executar programas Win sem perda de performance. Ele ainda sabe lidar com partições padrões do Windows como NTFS e você pode ver seus arquivos de mídias e backups do outro sistema sem dificuldade.

O sistema é bastante eficiente, mesmo rodando música, internet e várias tarefas o uso da memória a velocidade não foram prejudicadas!

recursos do sistema

Uso de memória abaixo de 512Mb, Processador Livre

Meu computador é modesto, Pentium Dual Core 1.6GHz, 2GB de memória.

Até agora apontei os pontos positvos, mas agora vamos a sujeira.. Existirão dificuldades para um usuário acostumado com o Windows, algumas delas são: dificuldade em se localizar no sistema de pastas; não existe Internet Explorer mas o Firefox fazer um papel ainda melhor; atalhos de teclado e a posição dos elementos na tela; mesmo com WINE alguns programas do Windows não vão rodar facilmente; o sistema de multiplos desktops é de uso opcional mas pode confundir muito um desavisado.

Concluindo: recomendo instalar Ubuntu inicialmente em casa para aqueles que desejam sair da ilegalidade, desejam experimentar um sistema diferente e menos exposto a virus, possuem um computador com pouca memória ou tem um filho de mais de 8 anos em casa, perfeito, recomendo. Mas não recomendo para aqueles que dependem de realizar tarefas a curto prazo no computador, querem uma plataforma para games, ou se depende do uso Internet Explorer para acessar algum site específico.

Difícil é acreditar num ciêntista da computação para falar de Linux né?! Mas garanto como usuário doméstico que sempre usei Windows (que vergonha) e não queria nem experimentar Linux em casa (só no trabalho e olha lá hein..); que esses 3 dias de Ubuntu foram mais agradaveis que Windows.

Mais informação (chato) | Mais desinformação ( informação mergulhada em sarcasmo)

Postagens Antigas »