Skip to content

Instantly share code, notes, and snippets.

View hsribei's full-sized avatar

Helder S Ribeiro hsribei

View GitHub Profile
@hsribei
hsribei / read-later-plus-spaced-repetition-for-language-learners.md
Last active August 29, 2015 14:04
Wish: "Read it later" plus "spaced repetition" app for language learners

Update: found something close enough: http://readlang.com/.

Wish: "Read it later" plus "spaced repetition" app for language learners

  • All the usual ways of sending articles to this "Pocket" app: email, browser extensions, the app itself.
  • While reading, select word of phrase, have it translated and added to app as a flashcard. Front: word/phrase highlighted in context; Back: translation + optional notes.
  • Batch mode: toggle batch mode, select multiple words/phrases, have their definitions/translations all added as flashcards.
  • Optionally, go through those new cards right away (as opposed to studying them only in the random-ish order of the whole set's spaced repetition) and, when finished, go back to text. This way you can quickly go through a paragraph in batch mode, mark everything you don't understand, study it, then go back to read it with the necessary vocabulary.
  • When not reading, user can go through flashcards with a spaced repetition algorithm and interface similar to Brainscape's. From
@hsribei
hsribei / catarse_pendentes.js
Last active August 29, 2015 14:05
Somar contribuições pendentes no Catarse
// Clica no botão de rádio dos pendentes, rola a página até o fim para carregar todas as contribuições,
// abre o console, digita isso e dá Enter:
_.chain($('.value')).map(function(el){ return parseFloat($(el).text()); }).reduce(function(sum, el){ return sum + el; }, 0).value();
@hsribei
hsribei / gist:85300
Created March 25, 2009 05:07
Script para ripar nomes, partidos, estados e votações de deputados federais.
# to read it again every time we're testing the extraction of their
# voting history (which is still buggy)
if File.exists?("legislators.yml")
legislators = File.open("legislators.yml") { |f| YAML::load(f) }
else
page = agent.get('http://www2.camara.gov.br/deputados')
form = page.form('form1')
select = form.fields[5]
# Grep a line in a project's entire network
# (or all the forks you included as remote anyway)
irb(main):001:0> pattern = "task :clear"
irb(main):002:0> `find .git/refs/remotes/ -type f`.split("\n").map{|e| e.gsub(/\.git\/refs\/remotes\//, '')}.each {|e| puts `git grep #{pattern} #{e}`}
class AddStatsToDelayedJobs < ActiveRecord::Migration
def self.up
add_column :delayed_jobs, :first_started_at, :datetime
add_column :delayed_jobs, :last_started_at, :datetime
add_column :delayed_jobs, :finished_at, :datetime
end
def self.down
remove_column :delayed_jobs, :finished_at
remove_column :delayed_jobs, :last_started_at
@hsribei
hsribei / gist:138159
Created June 30, 2009 13:36
Google Fight
#!/usr/bin/env ruby
require 'rubygems'
require 'json'
require 'open-uri'
def google_fight(queries)
queries.max { |a,b| JSON.load(open("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=#{a}"))["responseData"]["cursor"]["estimatedResultCount"].to_i <=> JSON.load(open("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=#{b}"))["responseData"]["cursor"]["estimatedResultCount"].to_i }
end
if __FILE__ == $0
#!/usr/bin/env ruby
require 'rubygems'
require 'mechanize'
require 'ostruct'
require 'open-uri'
require 'hpricot'
require 'yaml'
# fix for screwed up net/http
# found at: http://pw.tech-arts.co.jp/technical/cat57/
@hsribei
hsribei / debugging_attribution_to_specific_hash_keys.rb
Created August 16, 2010 20:14
How to debug Hash attribution for a specific key (like when you want to debug Rails' env hash)
class Hash
def assign_with_debugger(key, value)
debugger if key == "action_dispatch.request.path_parameters"
self.assign_without_debugger(key, value)
end
alias :assign_without_debugger :[]=
alias :[]= :assign_with_debugger
end
@hsribei
hsribei / gist:748665
Created December 20, 2010 17:17
downcase with accents for latin1 (sort of)
# -*- coding: utf-8 -*-
class String
def downcase_with_accents
return nil if s.nil?
norm = self.downcase
norm.tr!('ÁÉÍÓÚÇ', 'aeiouç')
norm.tr!('ÀÈÌÒÙ', 'aeiou')
norm.tr!('ÄËÏÖÜ', 'aeiou')
norm.tr!('ÂÊÎÔÛ', 'aeiou')
norm.tr!('áéíóú', 'aeiou')
@hsribei
hsribei / gist:1313618
Created October 25, 2011 17:42
A merged git branch remains accessible even if deleted after being merged.

A merged git branch remains accessible even if deleted after being merged

A merge commit has two parent sha1s, so the old branch would be accessible by its sha1 as one of the parents in the merge commit and thus wouldn't be garbage-collected by Git.