Video Player [UI]
更新了一下Dictionary—老忘记单词
“Mac内置的词典工具(Dictionary),不便功能强大,而且简单易用,甚至还可以添加更多词典,当然这些特性都是免费的。”
Test One Song in Garage Band
Ironsawada
【备忘】bash 过程变对象
最近看太多这类型的东西,世界不需要这么多对象的啊!人的思维是过程的……
source :http://lab.madscience.nl/oo.sh.txt
#!/bin/bash
# —————————————————————————
# OO support functions
# Kludged by Pim van Riezen <pi@madscience.nl>
# —————————————————————————
DEFCLASS=””
CLASS=””
THIS=0
class() {
DEFCLASS=”$1”
eval CLASS_${DEFCLASS}_VARS=””
eval CLASS_${DEFCLASS}_FUNCTIONS=””
}
static() {
return 0
}
func() {
local varname=”CLASS_${DEFCLASS}_FUNCTIONS”
eval “$varname="\${$varname}$1 "”
}
var() {
local varname=”CLASS_${DEFCLASS}_VARS”
eval $varname=”"\${$varname}$1 "”
}
loadvar() {
eval “varlist="\$CLASS_${CLASS}_VARS"”
for var in $varlist; do
eval “$var="\$INSTANCE_${THIS}_$var"”
done
}
loadfunc() {
eval “funclist="\$CLASS_${CLASS}_FUNCTIONS"”
for func in $funclist; do
eval “${func}() { ${CLASS}::${func} "\$*"; return \$?; }”
done
}
savevar() {
eval “varlist="\$CLASS_${CLASS}_VARS"”
for var in $varlist; do
eval “INSTANCE_${THIS}_$var="\$$var"”
done
}
typeof() {
eval echo \$TYPEOF_$1
}
new() {
local
local cvar=”$2”
shift
shift
local id=$(uuidgen | tr A-F a-f | sed -e “s/-//g”)
eval TYPEOF_${id}=$class
eval $cvar=$id
local funclist
eval “funclist="\$CLASS_${class}_FUNCTIONS"”
for func in $funclist; do
eval “${cvar}.${func}() { local t=\$THIS; THIS=$id; local c=\$CLASS; CLASS=$class; loadvar; loadfunc; ${class}::${func} "\$*"; rt=\$?; savevar; CLASS=\$c; THIS=\$t; return $rt; }”
done
eval “${cvar}.${class} "\$*" || true”
}
# —————————————————————————
# Example code
# —————————————————————————
# class definition
class Storpel
func Storpel
func setName
func setQuality
func print
var name
var quality
# class implementation
Storpel::Storpel() {
setName “$1”
setQuality “$2”
if [ -z “$name” ]; then setName “Generic”; fi
if [ -z “$quality” ]; then setQuality “Normal”; fi
}
Storpel::setName() { name=”$1”; }
Storpel::setQuality() { quality=”$1”; }
Storpel::print() { echo “$name ($quality)”; }
# usage
new Storpel one “Storpilator 1000” Medium
new Storpel two
new Storpel three
two.setName “Storpilator 2000”
two.setQuality “Strong”
one.print
two.print
three.print
echo “”
echo “one: $one ($(typeof $one))”
echo “two: $two ($(typeof $two))”
echo “three: $three ($(typeof $two))”
Sylvester 在看 数学和向量JS库
Sylvester is a JavaScript library designed to let you do mathematics with vectors and matrices without having to write lots of loops and throw piles of arrays around. It includes classes for modelling vectors and matrices in any number of dimensions, and for modelling infinite lines and planes in 3-dimensional space. It lets you write object-oriented easy-to-read code that mirrors the maths it represents.