Skip to content

Instantly share code, notes, and snippets.

@nixpulvis
nixpulvis / proxy.rs
Last active November 29, 2018 13:09
// extern crate take5;
// extern crate remote;
use std::io::{Read, Write};
use std::net::{SocketAddr, TcpStream, TcpListener, Shutdown};
use std::thread;
use std::time::Duration;
use std::sync::{Arc, Mutex};
// use take5::player::AiPlayer;
// use remote::Client;
@nixpulvis
nixpulvis / de_iter.rs
Created February 5, 2016 21:41
Deserialize Iterator
use std::marker::PhantomData;
use std::iter::Peekable;
use std::io::{Read, Bytes};
use serde::Deserialize;
use serde_json as json;
use serde_json::error::Error as JsonError;
/// Iterator over parsed Messages.
pub struct DeserializeIter<T: Deserialize, R: Read> {
bytes: Peekable<Bytes<R>>,
@nixpulvis
nixpulvis / change-mac.sh
Created January 20, 2016 19:34
Change your MAC address on OS X.
#!/bin/bash
ssid=$(networksetup -getairportnetwork en0 | cut -d ":" -f 2 | sed "s/^[ \t]*//")
sudo airport -z
sudo ifconfig en0 ether $(openssl rand -hex 6 | sed "s/\(..\)/\1:/g; s/.\$//")
networksetup -setairportnetwork en0 "$ssid"
@nixpulvis
nixpulvis / ping.rs
Created November 18, 2015 21:38
A simple Ping implementation in Rust.
#![feature(ip_addr, raw)]
extern crate pnet;
use std::net::{IpAddr, Ipv4Addr};
use pnet::transport::TransportChannelType::Layer4;
use pnet::transport::TransportProtocol::Ipv4;
use pnet::transport::transport_channel;
use pnet::packet::ip::IpNextHeaderProtocols;
use pnet::packet::Packet;
@nixpulvis
nixpulvis / try_or.rs
Last active September 17, 2015 04:52
Try or Rust macro, for more generally treating Results as values.
macro_rules! try_or {
($expr:expr => $handler:expr) => (match $expr {
::std::result::Result::Ok(v) => v,
::std::result::Result::Err(e) => {
warn!("{}", e);
$handler
}
})
}
.text
.global _start
_start:
movl $foo,%edx
movl $string,%ecx
movl $1,%ebx
movl $4,%eax
int $0x80
movl $0,%ebx
@nixpulvis
nixpulvis / harmonic.html
Last active June 26, 2018 02:42
Recreating something I saw on Reddit.
<!DOCTYPE html>
<html>
<head>
<title>Harmonic</title>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
</head>
<body>
<canvas id="harmonic"></canvas>
<script type="text/javascript">
$(document).ready(function() {
@nixpulvis
nixpulvis / clone.rb
Created June 13, 2015 23:47
Clone/Pull All Repositories From GitHub
#!/usr/bin/env ruby
require 'pry'
require 'json'
json = JSON.parse(`curl https://api.github.com/users/nixpulvis/repos?per_page=100`)
json.each do |repo|
if File.exists?(repo['name'])
Dir.chdir(repo['name'])
print "Pulling #{repo['name']}... "
@nixpulvis
nixpulvis / contract.rb
Created April 4, 2015 04:53
Simplest Contract System in Ruby
# A Contract is one of:
# - Proc (Any -> Boolean)
# - Hash { Contract => Contract }
def assert_predicate(predicate, value)
if predicate.(value)
value
else
fail "contract error"
end
@nixpulvis
nixpulvis / contract.rkt
Last active August 29, 2015 14:18
Simplest Contract System
#lang racket
;; A Contract is one of:
;; - Any -> Boolean
;; - Signature
;; A Signature is a (signature Contract Contract)
(struct signature (domain range))