- Update your project with “meteor update”;
- Verify the versions of your package dependencies and replace for the lastest versions of then.
domingo, 26 de julho de 2015
Meteor package development: “Error: inconsistent dependency constraint across unibuilds?”
sexta-feira, 1 de maio de 2015
Propostas para a Harmony - ES6
E no meio de tudo que pode vir, tem algumas coisas que realmente são veri biutifus.
Então vamos dar uma olhada, para o ECMAMóvel!
Escopos, binding e calling
const
A nova keyword const permite declarar constantes (essa é bem óbvia, né?!)let
A nova keyword let vai funcionar bem parecido com a velha e boa var, mas será block-scoped e com melhor semântica use-before-set. "Mas é o que Gabriel?!" você perguntaVocê não poderá usar a let num escopo global, só em escopos locais. E se já ouvir uma variável declarada com let no escopo, você terá uma exception. Quase sendo um tipo de const.
var a = [1,1,2,3,5,8];
for(let i = 0; i < a.length; i++){
console.log(a[i]);
}
console.log(i); // Aqui vai dar um ratchofly e a var i não vai fugir do escopo mais
domingo, 27 de abril de 2014
Macros em JS com Sweet.js - Hygienic macros - Parte I
Não, meu sinhô, é bem melhor que isso. :D
Macros são quando você pode mudar ligeiramente
// wow.js
macro swap {
rule { $x and $y } => {
var tmp = $x;
$x = $y;
$y = tmp
}
}
var a = "a",
b = "b";
console.log(a, b); // => a b
swap a and b;
console.log(a, b); // => b a
Interessado? Agora pra continuar instale o Sweet.js via npm
$ npm install -g sweet.js
Agora você pode compilar os JS com macro assim:
$ sjs wow.js -o output.jsSe você compilar o wow.js vai ver ele assim:
var a$381 = 'a', b$382 = 'b'; console.log(a$381, b$382); var tmp$384 = a$381; a$381 = b$382; b$382 = tmp$384; console.log(a$381, b$382);
Gaaabrieel-san, mas o que diabos é isso que ele fez com as variáveis? Coisa mais feia!
Calma, isso se chama "higienização" e serve pra prevenir conflitos entre variáveis, por exemplo:
var tmp = "tmp", b = "b"; swap tmp and b; // ... // output.js // Sem higienização var tmp = "tmp", b = "b"; var tmp = tmp; tmp = b; b = tmp;
Viu? So many conflicts, wow!
Isso é só a ponta do Iceberg :p
calm down and wait for more in soon
domingo, 16 de março de 2014
Much doge, such faucets. WOW!
- Cryptotide's Dogecoin Faucet
- Jesus1457's Dogecoin Faucet
- Jsajsa's Dogecoin Faucet
- Ragen98's Dogecoin Faucet
- Hunger14's Dogecoin Faucet
- Hand56's Dogecoin Faucet
- Spout78's Dogecoin Faucet
- dmadma's Dogecoin Faucet
- Doge Water Bowl
Wow, don't forget to donate rich shibes.
Use promo codes "install gentoo" , "suchpromo" or "such bad doge many sorry" for bonuses.
sexta-feira, 28 de fevereiro de 2014
Rails tips
posts = Post.all tags = posts.tags # That is really bad because Rails is doing too many queries in database, we can make it better: posts = Post.find(:all, include: :tags) # Not too many queries in database, more performance
sexta-feira, 31 de janeiro de 2014
HelloBar e Landing Pages
Conheça o HelloBar pra facilitar a sua vida na criação de email lists
terça-feira, 24 de dezembro de 2013
Instalando Zsh no Ubuntu
$ sudo apt-get update && sudo apt-get install zsh # installing zsh $ wget –no-check-certificate https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O – | sh # oh-my-zsh $ chsh -s /bin/zsh # setting as default # Restart your system ;)
O Zsh vai automaticamente carregar o seu .bashsrc
domingo, 8 de dezembro de 2013
Dropping/Resetting Postgres database on Heroku
heroku pg:reset DATABASE_URL
Type exactly as is the above command in your shell, you will be asked for confirm your app database name, type it and voilà.
Now, is good you remigrate your new database, right?
heroku run rake db:migrate db:seed
Continuando/resumindo downloads no wget
Você tava baixando aquele arquivo a horas no wget e a internet cai. E agora, Juvenal?
Primeiro, na hora de baixar seu comando foi mais ou menos esse:
$ wget http://s007.fileom.com:182/d/yalitlbvmwpxj4w7ma2iot6vc26cawbolw4k75f7qjglyyyen3qcou4t/BreakingBad.505.rmvb
Dai, para poder resumir o download você passa a flag -c
$ wget -c http://s007.fileom.com:182/d/yalitlbvmwpxj4w7ma2iot6vc26cawbolw4k75f7qjglyyyen3qcou4t/BreakingBad.505.rmvb
sábado, 7 de dezembro de 2013
Atrasado sobre as novidades do Ruby 2.0?
Talvez você se atrasou um pouco ou esqueceu o que foi trazido de novo pelo Ruby 2.0. Então aqui dois belisquinhos do que veio de "novo" pra você
Literal symbols list| Lista literal de símbolos
> %i[gabriel rubens] => [:gabriel, :rubens]
Keywords arguments | Like Python? :p
def foo( mother = {} )
name = mother[:name]
size = mother[:size]
"#{name} has size #{size}"
end
# ...
> foo name: "Creuza", size: 50000
=> Creuza has size 50000
# or
def foo(name: nil, size: nil)
# ...
end
NoMethodError ao instalar Sinatra 1.4.4
Tentou instalar o Sinatra 1.4.4 e se deparou com...
NoMethodError: undefined method `size' for nil:NilClass An error occurred while installing sinatra (1.4.4), and Bundler cannot continue. Make sure that `gem install sinatra -v '1.4.4'` succeeds before bundling
Pois é, a solução mais rápida pra agora é tentar instalar a versão anterior do Sinatra mesmo
gem install sinatra -v 1.4.3
UPDATE
Você pode tentar também dar um git clone localmente para instalar a 1.4.4 sem problemas
$ git clone https://github.com/sinatra/sinatra.git $ cd sinatra $ gem build sinatra.gemspec $ gem install sinatra-1.4.4.gem
quarta-feira, 27 de novembro de 2013
Shell Script: Sabendo se o usuário é root
if [ "$(whoami)" != "root" ]; then echo "You aren't the root user" exit fi
terça-feira, 22 de outubro de 2013
Baixando vídeos do YouTube com JS direto na página
Mas agora, andei bem inspirado ultimamente e fazendo e revendo um bocado de projeto antigo meu e esse foi um dos que retomei coragem pra melhorar o código.
Então, sem mais blá blá blá, vamos lá!
- Habilite a barra de favoritos do seu navegador, use os sub-passos se seu navegador for o Chrome, caso não, pule para o passo N#2
- Se você estiver no Chrome, clique aqui
- Embaixo de "Aparência", marque o checkbox "Sempre mostrar a barra de favoritos" e feche a aba das Configurações e volte pra cá
- Arraste este link Download Video para sua barra de favoritos, que apareceu logo abaixo da barra de endereços
- Agora é só ir em qualquer página de vídeo no YouTube que você quer baixar, e quando o vídeo começar a carregar é só clicar em Download Video na barra de favoritos.
- Quando clicar em Download Video, irá aparecer uma nova aba [ou janela]. Daí, quando aparecer um reprodutor, é só fazer CTRL+S ;)
quarta-feira, 9 de outubro de 2013
Por que programar é tão bom?
Ah, pouco me importa :D ou não...
(Ahhh, e sem falar da diversão que é ver aquela gambiarra funcionando, né?)
quinta-feira, 12 de setembro de 2013
Agendando tarefas com crontab
crontab -e # Edita o crontab para o usuário atual crontab -l # Lista as tarefas crontab -r # Apaga a crontab do usuário
0 8 * * * echo "Você é demais"
minuto hora dia_do_mes mes dia_da_semana programa_a_ser_executadoO * [asterisco] funciona como um caractere coringa e que quando utilizado ele pega toda a faixa de valores para cada parâmetro. Ainda existem mais caracteres especias com diferentes "poderes", por exemplo:
0,30 6,11 * * * echo "Hey, how is going your day?" 0,30 6-11 * * * echo "Relax, bro" */2 * * * * echo "Se passaram meia hora"Vírgula (,): 0,30 quer dizer "aos 0min e 30min execute..."
Hífen (-): 6-11 quer dizer
Dica: Você também pode trocar o dia_da_semana [6o argumento] pelo usuário que executará a tarefa. Ex:
*/2 * * * * root rm -rf /tmp/*
A linha acima diz: "A cada 30 minutos execute o comando como root"
domingo, 8 de setembro de 2013
Engine de animação em JavaScript
function now(){
return ( new Date ).getTime();
}
function animate( time, fn, fps ){
var start = now(),
intrval = fps ? 1000/fps : 20,
id = setInterval(function(){
var diff = now() - start, p = diff/time;
if( p > 1 ) p = 1;
fn( p );
if( p == 1 ) clearInterval( id );
}, intrval);
}
Acima um exemplo de uma engine simples de animação em JavaScript.
Simbora ver lá como funciona!
A priori você tem que entender o que é uma animação.
O exemplo acima usa a melhor técnica (na minha opinião) de se animar algo,
que é com porcentagem.
Suponhamos que você queira animar o width de uma div de 200px para 300px em 1 segundo.
A animação se dá numa transição de 200px até 300px. Então vai ser assim:
width = 200 + (300 - 200) * p; Essa é a "fórmula mágica", onde p é a porcentagem definida por: p = ( now - start )/time [linha 9];
Onde now [veja a function now - linha 1] representa o tempo agora, start o tempo no inicio da animação e time o tempo total em que a animação deverá ocorrer (por exemplo: 1000 milisegundos).
O FPS [Frames Per Second] representa em que interval a função será chamada para
atualizar o p [como o nome fps já é bem auto-explicativo, vou pular essa parte]. Quando p = 1 significa que a animação chegou ao fim, então só é preciso "desligar" o setInterval e fim!
Vamos testar a função animate no console:
- animate( 1000, function(p){
- console.log( p );
- });
Viu? Agora tente animar algo simples, por exemplo:
- var box = document.getElementById('box'), startWidth = 200, toWidth = 300;
- animate( 1000, function(p){
- box.style.width = startWidth + ( toWidth - startWidth ) * p;
- });
Espero que você tenha entendido tudo, caso não, pode comentar :D
sábado, 25 de maio de 2013
Entediado por não ter nada pra programar?
Com certeza um período chato na vida de todo programador é não ter nada para se divertir (é claro que eu tô falando de codificar ainda né). Se você, assim como eu, anda meio entediado aqui vai uma dica: Project Euler. Um site cheio de problemas matemáticos só a espera de você criar um código para solucioná-los. Tem problemas de todos os níveis para todos os tipos de tédio.
Good coding!
terça-feira, 5 de março de 2013
Uma dica
syntax error, unexpected keyword_end, expecting $end
Não está sozinho! Lembro da vez que passei horas procurando o motivo da exception. Mas pra lhe ajudar, se for esse o seu caso, provavelmente foi um do que você esquece
require "sinatra"
get "/"
...
end
# correto
get "/" do
...
end
# Um exemplo de código que daria a exception acima
segunda-feira, 5 de novembro de 2012
Valores Complexos | JavaScript
- var arr1 = arr2 = [ ];
- arr1.push( 5 );
- console.log( arr2 );
- var obj1 = {};
- var obj2 = obj1;
- obj1.man = "Man!!!";
- console.log( obj2.man );

