Ricardo Bin´s Blog

Feed Rss

Para quem é dev nodejs (ou acompanha seus release), sabe que uma coisa bastante frequente é o lançamento de novas versões (tanto stable quanto unstable)

Dar um upgrade em um app existente não é lá das tarefas mais tranquilas do mundo, pensando nisso criaram o nave, que funciona bem parecido com o famoso RVM do ruby.

Com ele você pode setar a versão do node que quer utilizar para um env, eliminando a necessidade de downgrades, etc.

Abaixo alguns comandos

nave ls-all #Lista todas versões possíveis do nodejs, tanto as instaladas na sua máquina, quanto as que você pode instalar.

nave install 0.10.0 #Instala a versão 0.10.0, baixando diretamento do remote

nave use 0.9.2 #seta o env atual para utilizar a versão 0.9.2. Caso não tenha instalado na sua máquina, o nave se encarrega do download

nave usemain 0.10.0 #seta a versão main do nodejs (a do /usr/local/bin), ou seja, será sua versão padrão em todos envs. Provavelmente precisa ser instalado com sudo.

Só finalizando, para instalar, esquema npm de sempre

[sudo] npm install nave

Mais infos no Github do nave

 

Para quem lembra daqueles games roguelike, que rodavam em terminal, existe uma lib JS para ajudar você a desenvolver um que roda via browser.

Apenas deixando registrado aqui, por um ex-aficcionado por MUD’s hehe.

rot.js

Um utilitário para tirar métricas de seus métodos, como sua complexibilidade ciclomática, podendo ser facilmente integrado com o Jenkins.

Útil para saber o quão seu código é testável.

[sudo] npm install jscheckstyle -g
									

https://github.com/nomiddlename/jscheckstyle

Uma lib bem útil para manipular dados JSON na memória do browser. Também tem integração com o localStorage.

https://github.com/trygve-lie/yocto.js

Um server node preparado para retornar JSON fakes.

Muito útil para diversas situações, principalmente testes que precisam “stubar” requests.

O legal é que mesmo sendo um dummy, o retorno desse server é dinâmico, baseado em templates.

[sudo] npm install dyson -g
									

https://github.com/webpro/dyson

Para quem usa o PhantomJS para testes e automatizações, uma boa é utilizar o CasperJS.

Ele facilitará BASTANTE os seus testes de aceitação

http://casperjs.org/

 

O mais completo artigo que já vi relatando sobre XSS. Ótimo guia de referência.

https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet

Guia (um pouco antiguinho) do próprio google para conseguir indexar suas páginas de requisição AJAX

https://developers.google.com/webmasters/ajax-crawling/

Só registrando aqui mesmo (sempre perco o link), sei que vai ser útil para vários web apps por ai.

O Grunt.JS serve para diversas coisas, entre elas fazer empacotamento de arquivos para deploy.

Abaixo segue um exemplo, com pouquissimas linhas, de como fiz minha aplicação:
- concatenar/minificar JS e CSS,
- alterar a chamada do markup na hora do deploy,
- copiar arquivos recursivamente para os locais corretos,
- rodar testes do jsTestDriver + Jasmine.

A configuração é bem auto-explicativa, qualquer dúvida é só visitar o site dos npmTasks que coloquei no fim do post.

Nesse exemplo eu fiz só o básico do básico, mas ele tem várias outras features, de inspect de testes à otimização de imagens, incluindo nomes dinâmicos, rotinas sequenciais, etc. =D

module.exports = function (grunt) {
  grunt.loadNpmTasks('grunt-css');
  grunt.loadNpmTasks('grunt-targethtml');
  grunt.loadNpmTasks('grunt-cp');
           grunt.loadNpmTasks('grunt-exec');

  grunt.initConfig({
    meta: {
      banner: '/*! build: [<%= grunt.template.today("yyyymmdd") %>] */'      
    },
    min: {
      dist: {
        src: [
                                '<banner:meta.banner>', 
                                'app/js/app.js', 
                                'app/js/controllers.js',
                                'app/js/directives.js', 
                                'app/js/filters.js', 
                                'app/js/services.js'
                                ],
        dest: 'dist/js/app.js'
      }
    },
    cssmin: {
      dist: {
        src: ['<banner:meta.banner>', 'app/css/app.css'],
        dest: 'dist/css/app.css'
      }
    },
    targethtml: {
      release: {
        input: 'app/index.html',
        output: 'dist/index.html'
      }
    },
    cp: {
      img: {
        src: 'app/img',
        dest: 'dist/img'
      },
      lib: {
        src: 'app/lib',
        dest: 'dist/lib'
      },
      partials: {
        src: 'app/partials',
        dest: 'dist/partials'
      }
    },
    exec: {
      jsTestDriver: {
        command: './scripts/test.sh',
        stdout: true
      }
    }
  });

  grunt.registerTask('test', 'exec');
  grunt.registerTask('default', 'min cssmin targethtml cp');
};
									

Grunt.JS
Github

Npm Tasks – Github:

grunt-cp
grunt-targethtml
grunt-exec
grunt-css

O @vojtajina (contribuidor do AngularJS) criou uma ferramenta para facilitar muito os testes de javascript.

Testicular é compatível com a melhor suite de testes JS (Jasmine) e ele torna o desenvolvimento com testes mais dinâmico. Achei sua configuração mais simples que o do jsTestDriver, e assim como ele, tem integração com a ótima IDE Webstorm

Mas você não precisa de uma IDE para aproveitar seus recursos: no vídeo abaixo, @vojtajina mostra a configuração passo-a-passo usando o famoso editor Sublime Text 2 e tambem o (must-have para muitos) VIM

 

 

Testacular
Github