Skip to content

Instantly share code, notes, and snippets.

Avatar

Senko Rašić senko

View GitHub Profile
@senko
senko / maybe.py
Last active Jul 25, 2021
A Pythonic implementation of the Maybe monad
View maybe.py
# maybe.py - a Pythonic implementation of the Maybe monad
# Copyright (C) 2014. Senko Rasic <senko.rasic@goodcode.io>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
@senko
senko / onchange.sh
Created Aug 18, 2011
Watch current directory and execute a command if anything in it changes
View onchange.sh
#!/bin/bash
#
# Watch current directory (recursively) for file changes, and execute
# a command when a file or directory is created, modified or deleted.
#
# Written by: Senko Rasic <senko.rasic@dobarkod.hr>
#
# Requires Linux, bash and inotifywait (from inotify-tools package).
#
# To avoid executing the command multiple times when a sequence of
@senko
senko / singleton.py
Created Feb 25, 2013
Singleton Django Model
View singleton.py
# Written by Senko Rasic <senko.rasic@goodcode.io>
# Released into Public Domain. Use it as you like.
from django.db import models
class SingletonModel(models.Model):
"""Singleton Django Model
Ensures there's always only one entry in the database, and can fix the
View Why node ecosystem sucks
To anyone who asks why we're rewriting AWW backend in anything other than nodejs, here's an example. This is an output log from an automated server provisioning script that in theory should automatically install AWW. In practice, I have to fudge it every few months because the node packages keep breaking. This is even though we've pinned all our dependencies to an exact version.
Damn them all to hell.
^
/home/aww/.node-gyp/0.12.15/include/node/node.h:273:1: note: in expansion of macro ‘NODE_DEPRECATED’
NODE_DEPRECATED("Use FatalException(isolate, ...)",
^
/home/aww/.node-gyp/0.12.15/include/node/node.h: In function ‘v8::Local<v8::Value> node::Encode(const void*, size_t, node::encoding)’:
/home/aww/.node-gyp/0.12.15/include/node/node.h:287:62: warning: ‘v8::Local<v8::Value> node::Encode(v8::Isolate*, const void*, size_t, node::encoding)’ is deprecated (declared at /home/aww/.node-gyp/0.12.15/include/node/node.h:278): Use FatalException(isolate, ...) [-Wdeprecated-declarations]
@senko
senko / backup-repo-issues.py
Created Jul 12, 2019
Backup GitHub issues from a single repository
View backup-repo-issues.py
#!/usr/bin/env python
#
# Backs up all issues (open and closed) from a specified repository, together with their comments
# Uses GitHub API v3 and requires a valid API token
#
# Installation:
# python3 -m venv /path/to/virtualenv
# source /path/to/virtualenv/bin/activate
# pip install requests
@senko
senko / trigger.py
Created Jan 9, 2013
When triggered via a HTTP request, execute a command.
View trigger.py
#!/usr/bin/env python
#
# When triggered via a HTTP request, execute a command.
#
# Written by Senko Rasic <senko.rasic@goodcode.io>
# Released into Public Domain. Use it as you like.
#
# Usage: python trigger.py <host> <port> <key> <command>...
#
# HTTP GET and POST requests are supported. If you need more verbs or need
@senko
senko / vcf2csv.py
Created May 14, 2012
Simple vCard to CSV converter (only uses name, phone, email info)
View vcf2csv.py
#!/usr/bin/env python
"""
Parse phone and email records out of vCard file and store them in a CSV.
Copyright (C) 2012 Senko Rasic <senko.rasic@dobarkod.hr>
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
@senko
senko / gist:2988592
Created Jun 25, 2012
Easy VirtualBox VM handling for the command line
View gist:2988592
#!/bin/bash -e
#
# Easy VirtualBox VM handling from the command line
BASE_TEMPLATE="<uid-of-template-vm>"
function show_help() {
echo "Usage: $0 [cmd]"
echo "Valid commands:"
echo " list List available virtual machines"
@senko
senko / create-new-lxc.sh
Created Mar 1, 2013
Set up a new LXC virtual machine
View create-new-lxc.sh
#!/bin/bash
#
# Initialize new virtual server using LXC and set up networking and HTTP proxy
#
# Written by: Deni Bertovic <deni.bertovic@dobarkod.hr>
#
# Released into Public Domain. You may use, modify and distribute it as you
# see fit.
#
# This script will:
@senko
senko / updated.py
Created Jul 11, 2013
updated - create and return a new Python dictionary by merging multiple dictionaries
View updated.py
#!/usr/bin/env python
#
# Written in 2013. by Senko Rasic <senko.rasic@dobarkod.hr>
# This code is Public Domain. You may use it as you like.
__all__ = ['updated']
def updated(dct, *others):