Skip to content

Instantly share code, notes, and snippets.

View wecing's full-sized avatar
🍄
Growing mushrooms

Chenguang Wang wecing

🍄
Growing mushrooms
View GitHub Profile
#!/usr/bin/env python
# -*- encoding: UTF-8 -*-
# example:
#
# python mp3tag.py --title-pattern '[0-9]+ - (.*)\.mp3' --artist "王菲" --album "王菲(2001)" --genre "" ~/Downloads/王菲.-.\[王菲2001\].专辑.\(MP3\)/*.mp3
import argparse
import taglib
import chardet
### Keybase proof
I hereby claim:
* I am wecing on github.
* I am misa (https://keybase.io/misa) on keybase.
* I have a public key whose fingerprint is DDF4 38E9 8898 16A4 9E3D C1A5 3CFB 0D43 4E35 CA91
To claim this, I am signing this object:
// scala
for ( p <- e1 ) yield e2
// translation
e1 map { case p => e2 }
// haskell
(\p -> e2) <$> e1 // i.e. "fmap (\p -> e2) e1"
// aka
do p <- e1
e2
@wecing
wecing / Monoid.cpp
Created May 3, 2015 07:10
Sum and Product monoid in C++
#include <iostream>
#include <cstdlib>
#include <memory>
#include <vector>
#include <string>
template<typename M, typename T>
class SemiGroup {
protected:
T m_t;
# because here pd == pd[(addr & M1) >> S1],
# now the original load() code is equivalent to:
def load(addr):
pt = pd[(addr & M2) >> S2]
pg = pt[addr & M3]
return pg
pd[(uvpt & M1) >> S1] = pd
// UVPT maps the env's own page table read-only.
// Permissions: kernel R, user R
e->env_pgdir[PDX(UVPT)] = PADDR(e->env_pgdir) | PTE_P | PTE_U;
@wecing
wecing / x86.txt
Last active August 29, 2015 14:15
def load(addr):
pt = pd[(addr & M1) >> S1]
pg = pt[(addr & M2) >> S2]
v = pg[addr & M3]
return v
@wecing
wecing / closure.ir
Created April 8, 2014 06:04
IR of closure.lisp, phase 1
$-1 "f"
$-2 "k"
$-3 "display"
$-4 "x"
$-5 "y"
$-6 "n"
$-7 "+"
$0 <- lambda 0 0 {
$2 <- lambda 1 0 $-1 {
@wecing
wecing / closure.2.ir
Created April 8, 2014 06:04
IR of closure.lisp, phase 2
<build-in "display" $-3>
<build-in "+" $-7>
func #22 {
$-4 <- getupval 1
$-5 <- getupval 0
$-6 <- getarg 0
$23 <- deref $-4
$24 <- deref $-5
$16 <- funcall 3 $-7 $23 $24 $-6
}