2012年1月22日 星期日

Python IDE(Vim)

网上已经有一个类似的,也很全(http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/)
蛮完整的,我简单谈一下我的使用感受.
我的.vimrc是按照amix的终极配置改的.其中的保存python后,删除空白很有效.
然后为了编辑python,我按照所附链接下载了以下插件:minibuffer,和Taglist,两个都很好用,没有问题.然后我想方便autocompletion,于是又装了supertab,结果tab不出completion,很让人恼火.后来发现,我按照amix的装了一个snipMate的插件,与之冲突了.觉得我还是喜欢自己敲代码,就把snipMate删了.终于可以tabcompletion了.
作为IDE,最重要的是能够debug,然而我试了文中提到的Vimpdb,无论如何无法使其工作.首先是文档格式问题,我照着网上的使用dos2unix转换了两个文件,但是,之后,我试着debug这个插件,发现对我这个python菜鸟来说,太繁复了,不想浪费时间.顺便一提,这个插件的作者编码的习惯不好,缩进是用tab键而不是4空格.当我试图插入自己的代码时,总是报错,发现就是源于他使用的tab缩进导致的.用vim自带的retab解决问题.但是实在没心思再debug了.网上很多人也抱怨这个插件的.
于是google了,发现一些walkaround,试了几个,都不怎么好用.(Vimdebug...),
发现可行的办法是,直接使用pdb得了,然后在代码里添上pdb.set_trace()设定端点,然后pdb下调试.无可奈何阿.不过还是想偷点懒,找到别人的.vimrc(http://www.2maomao.com/blog/win32-vim-debug-python/),思路就是快捷添加set_trace(),或者快捷删除set_trace()取消端点,然后设定快捷运行程序启动pdb(:!python %),我略微修改了map,使用f2设断点,f3取消断点,f5运行,似乎找到了以前写c作业的感觉.
我发现作者写得时候或者po上网的时候,出现了一个bug:
python << EOF
import time
import vim
def SetBreakpoint():
    nLine = int( vim.eval( 'line(".")'))
    strLine = vim.current.line
    i = 0
    strWhite = ""
    while strLine[i] == ' ' or strLine[i] == "\t":
        i += 1
        strWhite += strLine[i]
    vim.current.buffer.append(
       "%(space)spdb.set_trace() %(mark)s Breakpoint %(mark)s" %
         {'space':strWhite, 'mark': '#' * 30}, nLine - 1)
    for strLine in vim.current.buffer:
        if strLine == "import pdb":
            break
        else:
            vim.current.buffer.append( 'import pdb', 0)
            vim.command( 'normal j1')
            break
vim.command( 'map :py SetBreakpoint()')

def RemoveBreakpoints():
    nCurrentLine = int( vim.eval( 'line(".")'))
    nLines = []
    nLine = 1
    for strLine in vim.current.buffer:
        if strLine == 'import pdb' or strLine.lstrip()[:15] == 'pdb.set_trace()':
            nLines.append( nLine)
        nLine += 1
    nLines.reverse()
    for nLine in nLines:
        vim.command( 'normal %dG' % nLine)
        vim.command( 'normal dd')
        if nLine < nCurrentLine:
            nCurrentLine -= 1
    vim.command( 'normal %dG' % nCurrentLine)
vim.command( 'map :py RemoveBreakpoints()')
vim.command( 'map :!python %')
EOF

其中,开头的i+=1(红色粗体)应该和后面一行对调,string的开始是从0开始,而不是1.总得来所,作者写得挺好的,也挺好用的,在此写过.
不过我觉得在gvim下pdb似乎会有点问题,其他buffer会不更新,僵在那.要么编辑就在gvim,debug还是在另开窗口在terminal下比较好.Debug似乎不是Vim的强项,首先他是个文本编辑器.
另外,推荐一下Vim配色,molokai,很有现代感,但是可能颜色太鲜艳.

2012年1月3日 星期二

Linux下分割APE,并转档至ALAC

(1)如果是中文专辑,.cue文件通常是乱码的 首先确定.cue的编码 我使用vim 在.vimrc中添加:
            set fileencodings=utf-8,gb2312,gbk,gb18030
            set termencoding=utf-8
            set encoding=prc
这样打开.cue后不再乱码 然后输入:set fileencoding 出现编码方式,我的出现euc-cn的编码方式,是GB2312的别名
或者使用enca
            $ enca -L zh_CN 文件名.cue
然后进行转码:使用iconv
            $ iconv -f GB2312 -t UTF-8 文件名.cue -o 输出文件名.cue
(2)分割整个ape文件(参照:http://www.cnblogs.com/stephenjy/archive/2010/03/01/1675835.html)
安装shntool,以及mac解码器。 shntool可以用apt-get(ubuntu)或者yum(fedora)安装 mac解码器必须编译安装。直接yum install mac安装后,分割不成功。
到 http://shnutils.freeshell.org/shntool/ 下载 Helperprogram下的ape的patchrc 依据info,
执行: $ CXXFLAGS="-DSHNTOOL" ./configure
             $ make
             $ make install
分割文件
             $ shntool split -t "%n.%p-%t" -f 文件名.cue -o ape -i ape 文件名.ape
(3)转档
安装ffmpeg(yum install)
执行:
             $ ffmpeg -i 文件名.ape -acodec alac 文件名.m4a
如果嫌逐个麻烦:
到该文件夹下,首先找出类型为.ape的小于200M的单个歌曲文件,然后 逐个转换
执行:
             $ find -type f -size -100000k -name '*.ape' | sed -e 's/\.ape$//' | xargs -I @ ffmpeg -i @.ape -acodec alac @.m4a
加强版(歌曲名里有空格(It's True.ape))
             $  find -type f -size -100000k -name '*.ape' -print0 | sed -e 's/\.ape//g'| xargs -0 -I @ ffmpeg -i @.ape -acodec alac @.m4a
最后删除原先的单个ape
             $ find -type f -size -100000k -name '*.ape' -print0 | xargs -0 rm




2011年12月23日 星期五

Solution: activate Matlab 2011b under Fedora 16

According to http://www.mathworks.de/support/solutions/en/data/1-EUTG50/index.html?solution=1-EUTG50,there r 3 options, i chose the second one and it works:
"To disable this feature you can reboot the computer and bring up the kernel command line in the boot menu. From the kernel command line, you can run: biosdevname=0 to disable this feature.".
But i dont know how to enter the kernel command line...(where is it btw?). My way is:
1. Edit /etc/default/grub
$ sudo gedit /etc/default/grub
add  GRUB_CMDLINE_LINUX_DEFAULT="biosdevname=0" at the end of the file
2. Update grub2
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
3. reboot
i have tried other methods before this works, so i am not sure if this alone will help.:-(
if u tried the solution above, plz reply and tell me if that works.Thx :-) also as sort of stimulation for me so i can keep posting something i think important and helpful.

坑爹1:尝鲜安装了Fedora 16,结果Matlab 2011b不能激活了。各处google,发现原因是由于这个教Biosdevname的新东西改变了原来网卡的命名规则,我ifconfig了一下,发现我不再拥有叫做eth0的东西了,取而代之以p12**的根据我网卡性质命名的设备。这个小改变本来是为了区分服务器上的多块网卡(eth0,1,2),但是,这一改变造成了很多以eth为寻找对象的程序无法识别。比如Matlab的激活程序,似乎是根据eth0的Mac地址来激活的(不负责任猜想),因为这一改变导致无法激活。花了俩小时。
坑爹2:Ubuntu里,刷新Grub2的命令是update-grub,在Fedora执行,发现无此命令。google后得到解答。
发现开源真是各种坑爹阿!
P.S.谁能告诉我 kernel command line 在那,怎么进?

2011年12月22日 星期四

linux下HTK安装以及测试

到HTK网站下载源码,解压缩。
1.$ cd htk目录
2.$ ./configure --prefix=/usr/local
设定安装目录为/usr/local
3.直接make & make install会有错误
$ cd htk目录/HLMTools
$ gedit Makefile
修改第77行,删除77行前面的8个空格,然后取而代之以Tab(太坑爹了),保存
$ cd htk目录
$ sudo make all
$ sudo make install
下载HTKDemo,解压缩
1.$ cd samples目录
2.$ cd HTKDemo
3.$ mkdir test proto hmms
$ cd hmms
$ mkdir hmm.0 hmm.1 hmm.2
$ cd ..
$ ./runDemo configs/monPlainM1S1.dcf

得到结果:
====================== HTK Results Analysis =======================
Date: Thu Dec 22 18:30:31 2011
Ref : labels/bcplabs/mon
Rec : test/te1.rec
: test/te2.rec
: test/te3.rec
------------------------ Overall Results --------------------------
SENT: %Correct=0.00 [H=0, S=3, N=3]
WORD: %Corr=64.66, Acc=56.39 [H=86, D=36, S=11, I=11, N=133]
===================================================================

环境:Fedora 16.
HTK版本:3.4.1

2011年11月19日 星期六

Ubuntu 11.04:建立window7安装u盘

网上这个那个方法,自己实测了一下:还是老外给力:http://serverfault.com/questions/6714/how-to-make-windows-7-usb-flash-install-media-from-linux
一下都要在sudo 权限下,所以开始就sudo -i 吧。
(1)实际就是格式化优盘,同时设置该分区为bootable
# fdisk /dev/sdb
按d 删除所有分区
按n 新建一个新分区
按a 输入1,将该分区变为bootable
按t 输入7,即ntfs对应的编码
如果不清楚命令可以按m,有各种帮助
# mkfs.ntfs -f /dev/sdb1
格式化该分区
(2) 将镜像内文件复制到优盘内
在mnt下新建一个目录iso
# sudo mkdir /mnt/iso
加载该win7镜像,实际有点像windows下的虚拟光驱的作用:
# mount -o loop win7目录/你的镜像名.iso /mnt/iso
将所有镜像内的文件复制到优盘里。不用重复加载优盘,优盘自动在/media目录下
# cp -r /mnt/iso/* /media/你的优盘名
这一过程极其冗长
(3) 将 Windows 7 MBR 写到优盘:
首先安装ms-sys. 到ms-sys 下载源码。解压缩
然后
make
make install
最后
# ms-sys -7 /dev/sdb

实测有效。当然开机时别忘按(f8 f12 f...)之类将启动设置为usb

Ubuntu 11.04: 重装windows后修复Grub2

试了网上一堆方法,都不给力,特别是中文搜索,很多ubuntu版本也不给出。最终使用了一个老外的版本:
使用livecd,进入ubunt,打开终端:
sudo -i
fdisk -l
找到ubuntu的系统所在:我的是sda5
sudo mount /dev/sda5 /mnt (1)
sudo grub-intall --root-directory=/mnt/ /dev/sda (2)
搞定。
重点是命令(2)的/mnt“/”很重要,还有/dev/sda而不是sda5

2011年11月13日 星期日

黄家驹的话

摘自youtube:http://www.youtube.com/watch?NR=1&v=jLoGqBoK1Qg
Comment from wywilliamma

我们是Beyond乐队,我是家驹。音乐应该有很多种类,有很多­不同性格的东西,有很多色彩,有很多不同的感情、不同的文化在里­面,就是说音乐是艺术吧!音乐不是始于娱乐这么简单,是生命中的­一个节奏,就是说无论你是一个多么繁忙的人,多么只是顾着赚钱的­人,你都不可以没有音乐。

大部分我们的歌,不是用来娱乐的,是用来欣赏的,这是我的心声,­我对这个有感觉,我大声一点唱给大家听一下。我觉得每一样东西都­是发自内心,要感动别人,一定要先感动自己。我很尊重音乐,我觉­得一个人如果没有音乐会死的,真的,我会死的,没可能没有音乐。­我经常觉得,自己背着结他就好像背着一把古剑一样。(音乐)

你唱社会需要一些东西的时候,第一个步骤,先问问自己给了社会什­么,我给了音乐。我抱怨我不满意的东西,就尽量去改变它,我不断­地抱怨,但是我不改变它,那我不就「以逸报怨」?正如我们不介意­别人怎么看我们自己,其实我不觉得自己反叛,我觉得自己很正常。

很辛苦的,如果你太刻意做一些东西出来,你会吃力不讨好。我绝对­不希望我们中国人永远停留在怀缅过去的一些辉煌史里面,这些辉煌­史已经过去了,我们要建立我们明日的辉煌史,我们要为将来做得更­好。(音乐)

Umm...我最想都是Beyond可以世界巡回表演,就是可以­带给外面的朋友看,我们香港也有自己的音乐、有自己的乐队,告诉­别人听,我们香港的乐队都有一定水平的。我们可以这么大胆去到这­么远,完全都是因为有一班好像你们这么好的歌迷,在我们未来日子­里,我们要面对很多大时代的变迁,我们会很积极地面对将来的变化­。

很感谢今晚这里有一些由83年支持我们到今天的朋友,不会有很多­,但是应该有吧!在这里再次谢谢你们。(音乐)无论去到多么多么­的远,最后我们都是回到这里来。