Skip to content

Instantly share code, notes, and snippets.

View kelvinst's full-sized avatar
👨‍💻
.-. -.- ...

Kelvin Stinghen kelvinst

👨‍💻
.-. -.- ...
  • Curitiba - PR - Brazil
View GitHub Profile
@kelvinst
kelvinst / ruby-cli-deps.md
Created December 11, 2014 20:57
Controlando suas dependências de command line tools no ruby

Controlando suas dependências de command line tools no ruby

Nesse post gostaria de compartilhar sobre um projeto bem interessante.

Quando vi essa gem, achei bem interessante... Se todo mundo usasse teríamos mensagens mais claras que qual lib que está faltando para rodar a gem...

Exemplo? O poltergeist (que é a gem para executar ) obviamente depende do phantom.js. Mas quando você instala ele e não tem phantom instalado, ocorre uma mensagem bem pouco diagnosticável. Com essa gem os nossos problemas acabaram!

O projeto é este: https://github.com/yaauie/cliver.

@kelvinst
kelvinst / git-sweep.md
Last active February 22, 2022 01:02
Limpando os branches que você já fez merge

Limpando os branches que você já fez merge

Olá!

Bem, muitas vezes no dia-a-dia com o git, você abre um branch para a feature, termina, faz merge na master e pronto! Está entregue. O problema é que com isso, seu git fica cheio de branches que são, digamos: INÚTEIS. E claro que com o tempo esses branches se reproduzem como coelhos.

Como fazer para apagar todos esses branches? Você deve ter percebido que apenas um git branch -D meu-branch só apaga o branch no seu computador, e em nenhum remote.

Fácil, é só fazer o código git push origin :meu-branch, que além de ser nem um pouco claro (WTF?), te obriga a fazer isso um a um. Se forem muitos branches, babau!

@kelvinst
kelvinst / enumerable-inject.md
Last active August 29, 2015 14:10
Ruby magics: `Enumerable#inject`

Ruby magics: Enumerable#inject

Como muitos já sabem, sou apaixonado pro ruby e já compartilhei vários motivos do por quê. Mas dentre os motivos que dei, não entrei muito em detalhes de códigos no ruby que me deixam sem ar de tão legais e fáceis de implementar. E um exemplo desse tipo de código é o método #inject que vou explicar pra vocês agora. Espero que se empolguem e que usem ele sabiamente.

O que ele faz?

Bom, pra quem caiu de paraquedas aqui: o module Enumerable é o modules que representa uma collection no ruby. Se você tem uma classe que é uma collection, apenas inclua esse module e implemente o método #each e você terá vários métodos úteis na sua collection.

E um desses métodos é o #inject, ou #reduce que é apenas um alias para #inject. Agora vamos aos detalhes desse método tão maravilhoso.

@kelvinst
kelvinst / local-gitignore.md
Last active April 17, 2024 21:39
Como fazer um .gitignore local?

Como fazer um .gitignore local?

Bom, este é um recurso, como muitos outros, bem escondido do git. Então resolvi fazer um post para explicar a situação em que pode-se usar e como fazer essa magia negra. 👻

O problema

Você provavelmente já adicionou algum dia um arquivo no projeto que não deveria ser commitado certo? E como você fez para ignorar esse arquivo mesmo? Provavelmente adicionou no arquivo .gitignore.

OK então, aí você commitou esse arquivo .gitignore e pronto, mais ninguém poderá criar um arquivo com o mesmo nome e commitar. Mas espera aí! Não era isso que você queria! Você só queria ignorar esse arquivo na sua máquina, se alguém, algum dia por obséquio achar esse um nome bom para seu arquivo, que assim seja.

@kelvinst
kelvinst / create-ruby-gem.md
Last active November 29, 2023 02:04
Como criar uma gem ruby?

Como criar uma gem ruby?

Escolhi tratar sobre esse assunto hoje simplesmente porque foi uma das primeiras coisas que me perguntei "como eu faço isso?" no mundo ruby. Acredito que muita gente se pergunte a mesma coisa e espero que eu possa ajudar em algo para elas. 😀

O que é uma gem?

Bem, se você é um programador java, você chama sua gem de jar, se você é um programador C#, você chama de dll. Resumindo, é uma lib, uma biblioteca contendo códigos que você pode reaproveitar importando em outros projetos.

E usar gems no ruby é muito fácil, se você já deu uma brincada com rails por exemplo, é só você adicionar o código gem 'nome_da_gem' no arquivo Gemfile que está no root, depois executar o comando bundle install para baixar sua gem do repositório e pronto, só sair usando a biblioteca!

@kelvinst
kelvinst / ruby-meta.md
Last active August 7, 2023 20:49
Metaprogramanção em ruby - o básico

Metaprogramanção em ruby - o básico

Bem, se você é um programador há algum tempo já deve ter ouvido falar sobre metaprogramação. Eu sei, dá três tipos de arrepio só de ouvir o termo. E sim, é uma coisa bem cabeluda, é um recurso muito poderoso e muitas vezes difícil de entender. Mas agora seus problemas acabaram 👍 👍! Vou explicar pra vocês o que é metaprogramação e como fazer isso em ruby!

O que é?

Certo, sobre o termo e o conceito então: metaprogramação é um termo usado para definir um programa, ou uma rotina, que manipula o próprio programa (ou outro, tanto faz) em tempo de execução. Ou seja, um programa que programa. É basicamente um código que permite alterar e criar mais código ao ser executado.

Se você pensar bem sobre esta teoria é bem fácil elencar um metaprograma certo? Consegue adivinhar um tipo de metaprograma que você usa no seu dia a dia? Isso mesmo! Compiladores são metaprogramas! Você deve estar pensando: "Ah, mas um compilar não altera o próprio código, ele só gera nov

@kelvinst
kelvinst / git-aliases.md
Last active April 7, 2024 20:30
Git alias - seja rápido, seja breve!

Git alias - seja rápido, seja breve!

Git freak como sou, precisava compartilhar algo útil sobre ele, claro. E, já que não vejo muito por aí o pessoal usando, resolvi falar dos alias do git! É um recurso que eu uso muito, e nunca entendi porque muitas pessoas não são adeptas. 😕

Pelo nome você já deve perceber que os alias no git são atalhos. Atalhos pro quê? São atalhos para comandos do git e até comandos shell se você quiser. E é bem fácil cadastrar um alias:

$ git config --global alias.st status
@kelvinst
kelvinst / ruby-awesomeness.md
Last active August 29, 2015 14:09
Por que ruby é tão legal?

Por que ruby é tão legal?

Um tempo atrás, eu estava nessa busca interminável, e decidi então que eu iria deixar a procrastinação de lado e aprender uma linguagem alto nível de uma vez!

Então, pesquisando um pouco com os amigos, surgiu as seguintes sugestões: Ruby e Python. Pensei: "Pronto, peço uma ajuda pra decidir, e eles me botam mais uma decisão pra mim fazer".

Como eu estava procrastinando muito (e tenho medo de cobras 😨), resolvi apostar no ruby. E desde então o ruby tem lugar garantido no meu coração. ❤️

Gostaria de compartilhar quais coisas no ruby que são mais apaixonantes na minha opinião. Tem muitas, pode apostar, mas vou elencar o top 5 aqui pra vocês, senão nunca termino o post. 😁

@kelvinst
kelvinst / gist:1c9594a004fc8fb99778
Last active August 29, 2015 14:07
How to Start a Startup

Vídeo - How to start a Startup

Estas são minhas anotações sobre este vídeo.

Timeline

1:00 - Growth = Conversion - Churn (crescimento = conversão - atrito)

1:30 - A melhor maneira de conseguir algo como um bilião de dólares, é focar nos valores que vão te ajudar a conseguir o primeiro dólar, pra conseguir aquele primeiro usuário.

@endymion
endymion / contact.rb
Last active February 18, 2024 22:49
Example of integrating a Ruby on Rails app with Zapier using the REST hooks pattern. With support for triggering the REST hooks from Resque background jobs.
class Contact < ActiveRecord::Base
...
def after_create
if Hook.hooks_exist?('new_contact', self)
Resque.enqueue(Hook, self.class.name, self.id)
# To trigger directly without Resque: Hook.trigger('new_contact', self)
end
end