domingo, 26 de julho de 2015

Meteor package development: “Error: inconsistent dependency constraint across unibuilds?”

If you are stucked trying to run your meteor app or trying to run a “meteor add my:package” and are getting the inconsistent dependency constraint you should try:
  1. Update your project with “meteor update”;
  2. Verify the versions of your package dependencies and replace for the lastest versions of then.

sexta-feira, 1 de maio de 2015

Propostas para a Harmony - ES6

A versão 6 da amada, desejada, maravilhosa e estupenda ECMAScript está vindo.
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ê pergunta
Você 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

Sweet.js? Macro? É de cumê?

Não, meu sinhô, é bem melhor que isso. :D
Macros são quando você pode mudar ligeiramente , ou não, o processamento sintático de uma linguagem para facilitar a sua vida. Lembra do velho swap entre variáveis? Fiz um macro pra ele, se liga:

// 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.js
Se 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

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

Dica Rails

Quando estiver executando seu Rails app em development. Acesse o localhost:3000/rails/info.
:D

sexta-feira, 31 de janeiro de 2014

HelloBar e Landing Pages

Qual é o basicão de uma Landing Page? É um input pra um usuário interessado botar o email e/ou o nome.
Conheça o HelloBar pra facilitar a sua vida na criação de email lists