Skip to content

Instantly share code, notes, and snippets.

View ikks's full-sized avatar

Igor Támara ikks

View GitHub Profile
@ikks
ikks / remote_csv.py
Created December 10, 2014 17:17
Load a unicode csv file from an url
import unicodecsv # pip install unicodecsv
import urllib2
def loadfile(url, delimiter=","):
"""Loads a file from a URL (a csv one), separated with delimiter
returns an array with the contents of the file.
"""
reader = unicodecsv.reader(
urllib2.urlopen(url),
encoding='utf-8',
@ikks
ikks / xslxml2csv.sh
Created November 1, 2014 23:45
Converts an xls xml table to csv. Usually those files are in iso-88859-1 in a one long line, with this you can convert them to a psv. Requires iconv and sed
iconv -f iso-8859-1 -t utf-8 INPUTFILE | sed 's%^.*<table>%%g;s%</table>%%g;s% x:str%%g' | sed 's%<tr><td>%%g;s%</td><td>%|%g;s%</td></tr>%\n%g' > OUTPUTFILE
@ikks
ikks / xapian-virtualenv.sh
Created October 9, 2014 20:41
Installation of xapian inside a virtualenv
pkgver=1.2.17
mkdir -p $VIRTUAL_ENV/src && cd $VIRTUAL_ENV/src
curl -O http://oligarchy.co.uk/xapian/$pkgver/xapian-core-$pkgver.tar.xz && tar xf xapian-core-$pkgver.tar.xz
curl -O http://oligarchy.co.uk/xapian/$pkgver/xapian-bindings-$pkgver.tar.xz && tar xf xapian-bindings-$pkgver.tar.xz
cd $VIRTUAL_ENV/src/xapian-core-$pkgver
./configure --prefix=$VIRTUAL_ENV && make && make install
export LD_LIBRARY_PATH=$VIRTUAL_ENV/lib
@ikks
ikks / weekly_report.py
Created September 25, 2014 21:27
An approach to have a weekly report
def weekly(query, weeks, initial, final):
u"""Returns a partitioned result grouped by 7 days.
query: Initial query
weeks: Max Number of weeks
initial: initial part of the week
final: end part of the week
You can use like the following:
previous = weekly(
my_query, 8, 'validated_at__gt', 'validated_at__lte',
@ikks
ikks / claiming_mailbox_from_gmail.py
Last active August 29, 2015 14:06
Download headers from a label and filter them
"""With the Gmail API is easy to download all your messages or filter them,
is a good practice to have filters and put them in your own messages, so later you
can get some statistics.
You need to make all the auth dance in order to connect to the API, for development
purposes you'll be ok with the instructions provided by Gmail
https://developers.google.com/gmail/api/v1/reference/users/messages
"""
# Path to the output filename
@ikks
ikks / entities_to_raw.sql
Created August 11, 2014 13:16
Update html entities to raw in postgresql
UPDATE cms_base_page SET content=replace(content, '&Aacute;', 'Á');
UPDATE cms_base_page SET content=replace(content, '&Eacute;', 'É');
UPDATE cms_base_page SET content=replace(content, '&Iacute;', 'Í');
UPDATE cms_base_page SET content=replace(content, '&Oacute;', 'Ó');
UPDATE cms_base_page SET content=replace(content, '&Uacute;', 'Ú');
UPDATE cms_base_page SET content=replace(content, '&Uuml;', 'Ü');
UPDATE cms_base_page SET content=replace(content, '&Ntilde;', 'Ñ');
UPDATE cms_base_page SET content=replace(content, '&aacute;', 'á');
UPDATE cms_base_page SET content=replace(content, '&eacute;', 'é');
UPDATE cms_base_page SET content=replace(content, '&iacute;', 'í');
@ikks
ikks / avoid_fast_click_admin.js
Created August 1, 2014 12:58
Avoid double click for fast clickers in Django admin
// Make sure you have this in a file invoked from the admin templating system
grp.jQuery(function(){
grp.jQuery.fn.preventDoubleSubmission = function() {
grp.jQuery(this).on('submit',function(e){
var the_form = grp.jQuery(this);
if (the_form.data('submitted') === true) {
// Previously submitted - don't submit again
e.preventDefault();
} else {
@ikks
ikks / fast_clicker_for_microview
Created July 25, 2014 02:52
Counter for Arduino when pressing a Button
#include <MicroView.h> // include MicroView library
int buttonPin = A0; // push button pin
int buttonState = 0; // variable to store the pushbutton status
int counter = 0; // counts the number of clicks
int current = 0; // holds the current state
int ticks = 0; // cycle counter
int current_ticks = 0; // Last ticks when the button was released
int doubleclick_max = 50; // topmost double click, if you can't do better call someone younger :P
int difference = 0; // Your record in double click
@ikks
ikks / 0_reuse_code.js
Created July 16, 2014 14:43
Here are some things you can do with Gists in GistBox.
// Use Gists to store code you would like to remember later on
console.log(window); // log the "window" object to the console
@ikks
ikks / gist:10922596
Created April 16, 2014 19:17
md5constructor for Django 1.6
from django.utils.hashcompat import md5_constructor
# Replace by
from hashlib import md5 as md5_constructor
# Even better, take a look at
# https://github.com/justquick/django-native-tags/pull/13/files