Thursday, April 22, 2010

周末整理音乐收藏

终于把所有的无损收藏都变成flac了,ape本来没啥不好的,但是几乎所有的便携播放设备都不支持。又创新打算出支持flac的播放器了,又可能败一只,所以就折腾了一下。其实人倒是没怎么动手,不过我弱弱的旧笔记本可是忙了好半天呐……

Convert all ape files to flac

#!/bin/bash
# by huangyuanjie at gmail dot com
# convert all ape files to flac

find $PWD -iname '*.ape' -print > todo

while read p ; do
d=`dirname "$p"`
f=`basename "${p}" .ape`
pn="${d}/${f}.flac"

echo "start converting \"${p}\" to"
echo " \"${pn}\" ..."
sleep 1
mac "${p}" - -d 2>/dev/null | flac -o "${pn}" -
echo "${p}" >> finished-convert
echo "converted \"${p}\" to "
echo " \"${pn}\" ...";

find "${d}" -iname '*.cue' -print > tmp
while read f; do
echo "fixing \"${f}\" ..."
cp "${f}" "${f}.orig"
sed -i 's/ape/flac/g' "${f}"
addsig.py "${f}" # add UTF-8 BOM so that foobar2000 can read it correctly
echo "fixed \"${f}\" ."
done < tmp
echo "${p}" >> finished-fix-cuesheet

rm -v "${p}"
echo

sleep 1
done < todo

rm tmp


Python script to add UTF-8 BOM



#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# by huangyuanjie at gmail dot com
# add UTF-8 BOM so to a text file

import sys
import codecs

def main():
if len(sys.argv) < 2:
sys.stderr.write("Error: no input file!")
exit(1)
path = sys.argv[1]
try:
file = open(path, "rb")
except IOError:
sys.stderr.write("Error: no such file \"%s\" !" % (path))
exit(2)

content = file.read()
file.close()
if str(content[0:len(codecs.BOM_UTF8)]) == str(codecs.BOM_UTF8):
return
else:
file = open(path, "w")
file.write(codecs.BOM_UTF8)
file.write(content)
file.close()

if __name__ == '__main__':
main()

Monday, April 19, 2010

杂谈

今天花了点时间重新学习了一下JavaScript,就是那个有着奇怪学名 ECMAScript 的语言,那个最“民工”的语言,那个可能平均代码质量全世界最低的语言……学习一门科学需要正确的入门,学习一门语言虽然是个小事也一样需要有正确途径(其实我一向对于编写代码这种事比较轻视,因为我认为一个理工生代码写得好才是正常的……)。Stack Overflow 推荐的学习 ECMAscript 的材料是 Crockford 的讲座,于是从 Yahoo video (墙外-__-b)拖回来看了一下午。

看完以后最深的感觉就是想起最近在smth某技术版面上大家说的,“那是和计算机一起成长起来的一代人”(BTW,我们是电脑游戏/SNS一起成长起来的一代人)。他们熟知计算机如何变成今天这个样子,知道编程语言/编程模型的发展脉络,了解种种技术是如何在大公司的市场博弈中生存下来,看过纷繁的概念如潮水般涌现和消退。历史不能告诉我们明天在哪里,却记录了人们曾经走上了哪些死胡同,以及为什么那在当时走不通。在这个躁动的时代,无数人问学会了啥能找到工作,却从不问自己真的学会啥了。(某种意义上 Google 就像个不负责任的家教,“做题”时给你个答案,结果很多人永远都没学会“做题”更不要说“掌握”)

想起马哥说如果按照在实验室时间算,我是优秀研究生,如果按照网上到处晃荡看的时间算,我该被开除了。其实我不过想多了解点背景知识罢了……求精的匠人文化深厚的日本也在全球化的浪潮中逐渐迷失,更何况这个浮躁了很久的国家。想起研究生入学的时候,所长那不怎么出色的演讲中问了一个让人很不舒服的问题——“是否耐得住寂寞?”——说不怎么舒服,一是在于环境,二是为什么要耐得住这等寂寞?工业化的核心是用指定的成本指定的时间做出质量合乎要求的东西;十年铸一剑那是奢侈品市场,呵呵。连奢侈品都在我国量产的今天,这个质量的标准应该放在那里?嗯,也许这个质量应该相对环境来定义,好质量就是比平均高一些。就像韩局长成了好官员,假货都要标榜高仿。

于是矛盾,一方面对这个环境很反感,另一方面又不甘心遁去。

 

PS:今日偶然看到孙立平老师经济危机及社会溃败一文,值得一读。

PS2: developer.yahoo.com上有 Crockford 的最近演讲视频,无需翻墙。

Monday, April 12, 2010

Win 7 实在太厉害了……

居然连我这么小众的鼠标都认出来了,而且还有专门的图标~

win7knows

惊讶得一塌糊涂……

Monday, April 5, 2010

在Win 7下安全移除USB移动硬盘

微软的系统自从Vista以来(就是nt6.x)就有了一个十分让人烦恼的问题——所谓的安全移除外接硬盘的安全变成了对系统和数据而言的,至于硬盘的物理健康则被完全忘掉了。点了安全移除之后硬盘还在全速转动,这时候拔下来就必然听到咔嗒一声,让人对立面的数据十分担忧……

不过解决办法总是有的~ 来自 Linux 的 sdparm 有 windows 版,用这个东西就能安全的移除硬盘了。Linux 下着曾经是我主要的工具,不过后来有了 devicekit/udisk 之后就可以从 gnome 直接完成这个动作了。

下载 sdparm window 版,移除硬盘的时候在 有管理员权限的 cmd 里面执行:

sdparm --wscan

查看硬盘,然后执行

sdparm –C stop PDX

其中的 PDX 是 scan 告诉你的外设硬盘。这样机秒钟后就可以拔掉了。注意不要再用window自己的“安全移除”了,会反而再次激活硬盘。