Skip to content

Instantly share code, notes, and snippets.

Chris Gill viperscape

Block or report user

Report or block viperscape

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@viperscape
viperscape / config.rs
Last active Dec 21, 2015
toml parser for key bindings, example
View config.rs
/// toml parser and config for keybindings, etc.
use toml::{Parser,Value};
use std::fs::File;
use std::io::Read;
use glium::glutin::VirtualKeyCode;
use std::collections::{HashMap,BTreeMap};
#[derive(Debug)]
pub struct Bindings(HashMap<String,VirtualKeyCode>);
@viperscape
viperscape / night-mode.el
Created Sep 18, 2015
flips between solarized dark/light on keypress
View night-mode.el
(set 'nitemode nil)
(defun toggle-nitemode ()
"toggles nitemode"
(interactive)
(cond ((not nitemode)
(load-theme 'solarized-dark t)
(set 'nitemode 1))
((eq 1 nitemode)
(load-theme 'solarized-light t)
(set 'nitemode nil))))
@viperscape
viperscape / rng.rs
Created Feb 25, 2015
range in rust, without the need to think about range direction
View rng.rs
#![feature(core)]
extern crate core;
use self::core::num::Int;
fn rng<T:PartialEq+Int, F:FnMut(T)> (d:T,dt:T,mut f:F) {
if d>dt { for n in (dt..d).rev() { f(n); } }
else { for n in (d..dt) { f(n); } }
}
fn main () {
@viperscape
viperscape / ec2-snapshots.py
Last active Jun 8, 2016
ec2 snapshot script, max snaps sets revolving snapshots to expire when rerun; expects volume to have tag: snapshot, some-unique-name
View ec2-snapshots.py
import boto.ec2
import sys
def get_snaps (desc, vol,conn):
snapshots = conn.get_all_snapshots(owner='id...',
filters={'description':'*'+desc+'*'})
return snapshots
def op_snaps (vols,max_snaps,conn):
@viperscape
viperscape / promise.rs
Last active Aug 29, 2015
latch and promise sync primitives
View promise.rs
use std::sync::atomic::{AtomicBool,Ordering};
use std::sync::{Arc, RWLock};
struct Latch {
latch:Arc<AtomicBool>,
}
impl Latch {
fn new () -> Latch {
Latch {latch:Arc::new(AtomicBool::new(false))}
@viperscape
viperscape / nasa-apod.py
Created Nov 16, 2014
nasa-apod download
View nasa-apod.py
import urllib.request
address = 'http://apod.nasa.gov/apod/astropix.html'
file = urllib.request.urlopen(address) #read in the site and hunt for the image url
html = file.read()
data = html.decode('utf-8')
#print (data)
s = data.find("<a href=\"image")+14 #find the first instance of the image hyperlink
@viperscape
viperscape / github.clj
Created Nov 16, 2014
get gist and git src via github api
View github.clj
(ns github
"pull in github source files and gist content
malformed api calls, invalid resource uri, and rate-limiting should return nil"
(:require [cheshire.core :as json]
[clojure.string :as string])
(:import (org.apache.commons.codec.binary Base64 StringUtils)))
(defn get-gist [gist-uri]
(let [gist-id (last (string/split gist-uri #"/+")) ;;just need id for git api
gist-resp (try (slurp (str "https://api.github.com/gists/" gist-id))
@viperscape
viperscape / lazy-re.clj
Last active Aug 29, 2015
lazy regex matches
View lazy-re.clj
(defn lazy-re [re pp]
(let [re-m (re-matcher re pp)
re-cm #(re-find re-m)
call-lzre
(fn step []
(lazy-seq
(when-let [r (re-cm)]
(cons r
(step)))))]
(call-lzre)))
@viperscape
viperscape / init.el
Last active Aug 29, 2015
rust lang, cargo/rustc run hotkeys
View init.el
(defun rust-save-compile-and-run-this ()
(interactive)
(save-buffer)
(compile
(format "rustc %s && %s"
(buffer-file-name)
(file-name-sans-extension (buffer-file-name)))))
(defun rust-save-compile-and-run ()
(interactive)
@viperscape
viperscape / init.el
Created Nov 12, 2014
toggle cleanmode (no menu,scroll,toolbars)
View init.el
(set 'cleanmode 1)
(defun toggle-cleanmode ()
"toggles clean mode"
(interactive)
(cond ((not cleanmode)
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(set 'cleanmode 1))
((eq 1 cleanmode)
You can’t perform that action at this time.