I am LAZY bones? AN ancient AND boring SITE

分类: '精华' 的归档

给 iPod 转视频的脚本

由于新买了个 iPod touch,这几天认真钻研了下它的视频格式,搞了个nautilus脚本,使用mencoder做后端.
以后想把某个视频文件转成iPod的格式的话,直接在 nautilus 里面右键点文件-脚本-toIpod 就可以搞定了.
脚本的特点:
* 借助mplayer的强大,支持N多的源格式(已测试: avi rmvb mov flv).
* 支持srt/ass格式的外挂字幕.
* 自动缩放画面比例到适合ipod touch的480*320,如果是 ipod shuffle 之类的话,可以自己修改下脚本.
* 可视化的进度提示
* 转换速度较快
* 默认保存到当前目录,可修改脚本,输出到统一目录,方便管理.会自动加上 _ipod.mp4 的后缀名.
使用方法,保存以下脚本到 ~/.gnome2/nautilus-scripts/toIpod ,并加可执行权限…或者这里下载

PS: 如果压缩出来的字幕有乱码,请参照我以前的文章,建个 ~/.mplayer/mencoder.conf 文件,写上一行 subcp=cp936 就好了.

#!/bin/bash
#filename: ~/.gnome2/nautilus-scripts/toIpod
#Copyright (c) 2008 bones7456 (bones7456<A>gmail<D>com)
#License: GPL
#version 20081101
#用于将视频转成 ipod touch / iphone 格式.右击文件使用
 
SAVEDIR=`pwd`
#SAVEDIR="/data/movie"
 
INFILE="$1"
PWD=`pwd`
CMD="mencoder -of lavf -lavfopts format=mp4 -oac lavc -ovc lavc "
CMD+="-lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:vbitrate=600:acodec=libfaac:abitrate=128 "
CMD+="-af lavcresample=22050 -vf dsize=480:320:0,scale=0:0,expand=480:320,harddup -ofps 25 -srate 22050 "
P="没有找到对应的字幕."
if [[ -f "${INFILE%.*}.srt" ]];then
	CMD+=" -sub ""\"$PWD/${INFILE%.*}.srt\""
	P="找到字幕文件: ""${INFILE%.*}.srt"
elif [[ -f "${INFILE%.*}.ssa" ]];then
	CMD+=" -sub ""\"$PWD/${INFILE%.*}.ssa\""
	P="找到字幕文件: ""${INFILE%.*}.ssa"
elif [[ -f "${INFILE%.*}.aas" ]];then
	CMD+=" -sub ""\"$PWD/${INFILE%.*}.aas\""
	P="找到字幕文件: ""${INFILE%.*}.aas"
fi
 
CMD+=" -o ""\"$SAVEDIR/${INFILE%.*}_ipod.mp4\""" ""\"$PWD/$INFILE\""
P+="\n\n保存目录: $SAVEDIR"
P+="\n\n是否继续?"
#echo "$CMD" >> ~/toIpod.log
if ! zenity --question --text "$P" ; then
	exit 0;
fi
 
eval "$CMD 2>&1" |\
while read line; do echo $line |\
awk -F '[ :\(\)%]+' '/^Pos/{print "# 速度:",$5,"(点\"取消\"转入后台运行.)";print $4}' ; done |\
zenity --progress --title "正在转换..." --percentage=0 --auto-close --width=500

截图:
工作截图

sssh 快速ssh登陆脚本

此脚本对于那些需要经常ssh登陆远程服务器的朋友应该有点用处.尤其是需要中转服务器ssh 2次以上的.

脚本功能:
将服务器IP和密码保存于文本文件中(明文保存,安全性要自己保证),方便登陆,支持多次ssh中转,支持服务器编码自动转换,支持某个用户名的通用密码.

使用方法:
最好将脚本保存在PATH变量包含的路径下,建议保存于 ~/bin 并确保此目录在 PATH 中.
编写 ~/.pass 文件,并执行 chmod 600 ~/.pass
安装 expect 包.

.pass文件的写法
1.最简单的,可以在文件中写下如下一行:

name=hostA usernameA@IP-A passwordA

就可以使用 sssh hostA 登陆此服务器了.
2.中转登陆:

name=hostA usernameA@IP-A passwordA
name-hostA=hostB usernameB@IP-B passwordB

执行 sssh hostA hostB 就相对于先登陆hostA,然后在hostA上登陆hostB
同理,理论上可以中转N次,hostA->hostB->hostC->hostD…,嘿嘿…
3.使用通用用户名的密码.
这是用于这样的例子:有N个服务器,都开通了一个通用用户名(例如:view用户,只有很低的权限),这些view用户的密码都是同一个,而且会定期同步修改.这种情况下,如果修改了view密码的话,.pass文件就要修改N个密码了,为了避免这样的麻烦,可以使用通用用户名和密码功能:

usualName view
usualPSW password-of-view
name=hostA view@IP-A
name=hostB view@IP-B
name=hostC view@IP-C

这样就可以直接用 sssh hostA , sssh hostB 登陆了.
可以看到,这里省略了第3列的密码字段.此法同样适用于多级登陆的服务器.
4.指定服务器使用的编码

usualName view
usualPSW password-of-view
name=hostA usernameA@IP-A passwordA gbk
name=hostB view@IP-B | gbk

在某行服务器的后面(第4列),加上 gbk,就可以指明该服务器使用的是gbk,登陆了以后不会出现乱码了.
如果某行使用了通用用户名和密码的话,为了不致引起混乱,密码那列需要加个 | (竖线)占位.
5.使用通用编码

usualCODING gbk

加上此行,对于没有指定编码的服务器,将默认使用gbk编码.

下载:
由于脚本贴在这里会出现半角引号变全角的状况.所以,请直接在这里下载 这里下载.

哈哈,没想到,脚本没几行,写个说明倒是一堆了…

新的PS1

特点就是命令正常结束时不会显示退出码,但当退出码非零时,就会以红色醒目的显示出来.
由于代码贴到这里,里的引号都会全角的,所以不如和预览效果一起贴个截图:
PS1截图

离线中文维基(wikipedia)

本来作者的本意是开发一个离线的 iphone/ipod 用的wikipedia的,电脑上的只是为了方便调试用而已,而且但是由于众所周知的原因,内地用户访问中文维基并不是很方便,于是,我觉得电脑上的离线维基便更加有意义了.
注意: 本项目目前出于刚刚起步阶段,维基内容只能显示文本,图片/目录以及一些高级的格式还暂时不支持(别问我以后会不会支持,我也不知道),当然繁简体转换之类的高级功能肯定也没有.

使用方法:
先安装 ruby libinline-ruby mongrel rubygems libbz2-dev 这几个包,ubuntu用户可以直接apt-get,其他发行版估计就要自己解决这几个包的安装问题了.
完了以后,下载 http://ftp.ubuntu.org.cn/home/bones7456/zh_wiki.tar.gz(约180M) 密码在这里,解压到任意目录,然后运行里面的 startserver.sh ,即可用过浏览器访问 http://localhost:9090/
备用下载地址: http://linuxfire.com.cn/~lily/zh_wiki.tar.gz
md5sum:

ac2e9f38492c86d22258f0a853c1c4b5 zh_wiki.tar.gz

数据版本: 20080608, 包含页面文字和链接,不包含图片和编辑历史等.

主页: http://code.google.com/p/wikipedia-iphone/
数据版权参见: http://zh.wikipedia.org/w/index.php?title=Wikipedia:%E5%85%B3%E4%BA%8E&variant=zh-cn

最后,效果截图来个(点击放大):
效果截图

ipv6

哈哈,我也用上IPv6了,先纪念一下我的第一个IPv6公网地址:

inet6 地址: 2001:f10:5001:4a0::2/128 Scope:Global

原理简介:

利用現有 IPv4 網路,透過二端建立起一條 隧道(Tunnel) ,Server端透過這個 Tunnel 發送一組 IPv6 位址給另一端,使兩端可以使用 IPv6 封包在 Tunnel 內傳遞,如同現行很熱門的 VPN應用,是同相道理,使用者在外可使用公司內部私人網路,一樣是透過 Tunnel 建立,公司內部網段 IP 在 Tunnel 內傳遞,只不過這時換成 IPV6 封包。

ubuntu环境的具体方法:
先下载这个包,解压,安装方法在 tspc-advanced/INSTALL 文件内,大致说一下:
1.进入tspc-advanced,执行 make target=linux 编译
2.执行 sudo make target=linux installdir=/usr/local/gw6c install 安装
3.编辑/usr/local/gw6c/bin/gw6c.conf 文件,找到server=那行,改为: server= tb.ipv6.apol.com.tw
4. cd /usr/local/gw6c/bin/ 然后执行 sudo ./gw6c ,如果看到类似:

Gateway6 Client v5.0-RELEASE build May 16 2008-12:30:00
Connection to tb.ipv6.apol.com.tw established.

这样的输出,就表示成功了,哈哈.
5.看看你的ifconfig输出,是不是多了点什么?再试试 ping6 ipv6.google.com 哈哈,很爽吧…还有,可以直接用 http://zh.wikipedia.org.sixxs.org 访问中文维基了哦~
6.如果以后常用的话,把 /usr/local/gw6c/bin/gw6c 加进rc.local吧 :)

参考资料: http://www.apol.com.tw/ipv6/ipv6-tb-1.html (windows及其他平台的方法也请看这里)

修改了下lunar-applet的源代码

lunar-applet是一个可以显示农历的软件,我一直是用这个代替原来的时钟的。最近把panel改成透明的了,而且壁纸的颜色比较深,这样一来,黑色的时钟文字在深色背景下看起来就有点累了.刚好,TX兄发现了修改applet时钟颜色的方法,可以自己写HTML定义颜色等.但是那个是针对原版的applet的,在lunar-applet上实验了下,居然无效,有点郁闷了.
好在linux下,一切都是自由的,居然原来无效,那就自己加上这功能吧,于是找来源码,自己修改了一些,嘿嘿,实现了想要的功能:

gconftool-2 --set --type string /apps/panel/applets/applet_2/prefs/format "custom"
gconftool-2 --set --type string /apps/panel/applets/applet_2/prefs/custom_format '<span color="#ee1111">%Y-%m-%d %A <b>%H:%M:%S</b></span>'

效果:
lunar-applet
如果有需要,可以放出修改后的源码或者deb包. (其实是因为本人至今都不知道怎么用patch和打deb包…)

HOWTO:ubuntu下刻录VCD

下载的动画片,想给邻居的小孩子刻录成VCD,好在他家的VCD机上播放,倒还真费了我不少功夫.为了避免后人走弯路,写点经验出来给大家分享.
其实最繁的倒不是刻录本身,而是视频格式的转换上.
刻录工具,搜索一下源,基本定位在 mkvcdfs(包含在vcdtools这个包里)和 cdrdao(包含在cdrdao包里).但是mkvcdfs命令需要的mpg格式,我下载的视频是avi格式的,于是一开始用 mencoder 转了N次,不管怎么转,mkvcdfs都不认,呵呵,就在我觉得没希望的时候,突然想到了ffmepg,man了一下,居然有 -target vcd 这样的参数,哈哈,真是 踏破铁鞋无觅处,得来全不费功夫啊.
现在知道mencoder转应该也是可以的,但是VCD对视频/音频编码方式,帧率,分辨率等都有非常严格的要求,所以mencoder的参数很难配.而ffmpeg的 -target vcd 参数,则可以一次性设置这所有的参数,很是方便.
现在贴上步骤:

工具安装:都是apt搞到: sudo apt-get install ffmepg vcdtools cdrdao

ffmpeg -i 1.avi -target vcd 1.mpg #转换第一个视频
ffmpeg -i 2.avi -target vcd 2.mpg #转换第二个视频
mkvcdfs 1.mpg 2.mpg #将视频合成,生成镜像文件,此命令会在当前目录生成一个 vcd_image.bin 文件(二进制镜像),和一个 vcd.toc 文件.后面的命令要用到后者.
sudo cdrdao scanbus #扫描刻录机在哪个接口上,这里输出:

  1. $ sudo cdrdao scanbus
  2. [sudo] password for lily:
  3. Cdrdao version 1.2.2 - (C) Andreas Mueller
  4.   SCSI interface library - (C) Joerg Schilling
  5.   Paranoia DAE library - (C) Monty
  6.  
  7. Check http://cdrdao.sourceforge.net/drives.html#dt for current driver tables.
  8.  
  9. Using libscg version 'ubuntu-0.8ubuntu1'
  10.  
  11. 1,0,0 : MATSHITA, DVD-RAM UJ-850S , 1.20

注意最后面一行的 1,0,0 的字样,最后一步就用这个命令刻录:
sudo cdrdao write –device 1,0,0 vcd.toc
这里的 –device 后面要用上面的输出代替.执行完了,就OK了,拿到VCD机上试试看吧!

遗留问题:
1.刻出来的盘到VCD机上播放,画面的最上方和最下方会有一块区域丢失,比如原本正常的字幕,只看到半行字了,而且画面有点轻微的倾斜.不知道是不是那VCD机的问题.
2.刻录出来的视频码率太高了,比我avi的源还高,导致一张VCD只能放两集,能不能降低码率,多放几集?
3.谁知道怎么刻录DVD?
有谁知道遗留问题的答案的话,千万不吝赐教哦~谢谢…

原来ubuntu liveCD也是能保存数据的

这其实不能算是个新特性,因为据说6.06以后的liveCD都支持,只是提及的人不多,这里介绍一下:
我实验用的是 ubuntu-7.10-desktop-i386.iso,先在VBox里面新建了一台虚拟机.
用上面的iso做光驱,启动虚拟机,把虚拟机的硬盘划了个1G多的主分区 (/dev/sda1),应该不是主分区也没关系.
然后执行 e2label /dev/sda1 casper-rw 设置该分区的卷标为casper-rw,这步是必须的,因为内核是根据这个卷标来找保存数据的分区的.
然后重启虚拟机,再启动liveCD的时候,按F6键,加如图所示的内核参数 persistent
内核参数
启动以后,安装点什么东西,保存点文件之类的.
然后再重启,也加上额外的内核参数, 再进系统之后,发现安装的软件和保存的文件都还在.哈哈
在看看现在的分区情况,/dev/sda1并没有挂载到那个挂载点,应该是直接被内核用做特殊设备了,gparted上显示一个叹号加个锁,而且已使用空间都看不到…足以显示此分区的特殊性了.
分区情况
意义:
此方法不仅适用于硬盘的分区,也可以是u盘或是移动硬盘的的分区,所以有兴趣的话,,甚至可以免安装使用ubuntu,哈哈…
相关连接:
http://forum.ubuntu.org.cn/viewtopic.php?t=103990&highlight= 在这里再次感谢skyx

How To: 用ubuntu Desktop LiveCD测试新电脑

本文介绍了到电脑城买电脑的时候,如何用ubuntu LiveCD测试电脑的方法.同时适用于台式机和笔记本电脑
测试目的:
1.核对电脑的配置,以免被奸商骗了.可能现在随着大家电脑知识的普遍提高,敢堂而皇之用赛扬冒充奔腾的并不多了,但还是小心为好.
2.测试电脑的硬件和linux的兼容性,如果你打算以后装linux的话,这点尤为重要.
ubuntu Desktop LiveCD的获得:
方法1.从 http://www.ubuntu.com/getubuntu/download 下载,然后自己刻录.不推荐用 alertnate CD.
方法2.到 https://shipit.ubuntu.com/ 申请免费的CD.
注意得到光盘后,最好都先确认一下光盘的正确性,以免到了电脑城读不了盘.
具体测试步骤:
对于组装的台式机,也许刚组好电脑的时候,还是裸机,最好在他给你装电脑城版的ghostXP前,进行如下步骤,以免浪费彼此的时间和感情:
Step0:开机进入BIOS设置,选择从光驱启动电脑.放入准备好的光盘,重启.
Step1:出现ubuntu界面的时候,可以按F2,选择语言为 中文(简体) ,虽然即使选择了中文,进系统后仍然是大片英文,嘿嘿,此步骤可选.
Step2:启动或安装ubuntu,注: 如果连ubuntu的图形界面都进不去的话,建议直接走人,买了这电脑,以后估计会很郁闷.
Step3:看看电脑的基本信息是不是和期望的一样:
cat /proc/cpuinfo 看看你的CPU,这里要注意这几个: 如果商家声称是双核的话,会有 processor : 0 和processor : 1 两个CPU; 另外 cache size 的值就是所谓的二级缓存.
cat /proc/meminfo 看看内存容量,(有谁知道怎么看内存的频率和存取速度)
sudo fdisk -l 看看硬盘容量,这个也可以在 system-系统管理-partition Editor 里面看到,图形界面,更直观
Step4:进阶信息:
输入 lspci :会输出一些PCI设备的情况,可以看到一些显卡/网卡/ide控制器等的信息.
也可以输入 lshw 看这些信息.
Step5:测试显卡
这步就比较麻烦了,如果你的机器是intel的集成显卡,那么你现在用的分辨率就应该是比较理想的最佳分辨率,可以试试跑一下 glxgears ,现在的集成卡应该能跑个1000FPS左右.
如果你是N卡或者A卡,由于现在显卡的驱动还不对,glxgears 可能还跑不到1000,由于装了显卡驱动要重启,而重启的话,liveCD又不能保存信息,所以这个没有更好的办法了,除非你当场安装一个ubuntu…
另外,由于ubuntu7.10已经集成了compiz,所以liveCD里面也可以试一下:system-首选项-外观-visual effects ,看看能不能选到 Extra,如果选到Extra了,可以拖动一下窗口,应该有果冻效果了,另外最小化 的时候也应该有动画效果了.
Step6:测试硬盘速度
输入: sudo hdparm -t /dev/sda 过一会儿就显示
/dev/sda:
Timing buffered disk reads: 110 MB in 3.05 seconds = 36.06 MB/sec
之类的信息,这个值,笔记本的话,应该在35MB/sec以上,台式机硬盘最好能达到50MB/sec.可以多测试几次取平均值.
Step7:快捷键测试:
这点基本上是针对笔记本用户,就是试验一下控制音量大小的按钮和背光的按钮有没有用啦,num lock和数字键是否正常,可能还有些其他的键,比如控制无线网卡的键之类的.
另外有些台式机用户的键盘可能有诸如打开浏览器之类的按钮,也可以测试一下,现在ubuntu大部分也能支持(就是打开firefox),嘿嘿.
Step8:杂项
看具体配置,例如有的本本集成了读卡器,可以带一张SD卡,现场读一下.
可能还有无线网卡,也可以输入 ifconfig 看看有没有.
还有插入耳机后,会不会耳机音箱同时发声等等小问题.尽可能考虑全面点.
对了,测试声音的话,桌面上就有个Examples文件夹,打开第一个就是个mark的视频,直接双击打开,即可以测试声音,也可以测试一下放视频卡不卡(记得最大化一下,看看效果),嘿嘿.
Step9:液晶坏点测试
能顺利通过以上这些测试,应该说基本上就没啥大问题了,下面还有一步很重要的,液晶坏点测试,非液晶当然就跳过.
方法: 在 system-首选项-会话-current Session里面,选中 gnome-panel 点击remove 和 apply,去掉上下两个面板.再删掉桌面上的两个图标.关掉所有打开的窗口.右键点空白的桌面,Change Desktop Background 在 wallpaper里面选第一个,单色,然后在下面选择颜色的地方,分别选成 白色,黑色,红色,绿色,蓝色.仔细观察屏幕,看看有无坏点和彩点.没有的话就恭喜你了.这里也提一下,好像什么什么标准里面定义的是3个一下坏点都是合格的,但是,虽然合格,保证会看得你很不爽,嘿嘿,所以买的时候还是小心为好.
Step10:关机测试
这是最后一步,由于上面已经把所有的窗口和面板都关了,所以现在直接按 ctrl+alt+backspace 结束了X,然后又重启了,等10秒钟,ubuntu用户会自动登录,这时候就又有面板了,点击关机按钮,选择关机,快好的时候,会提示取出光盘,然后按enter键,如果你按了enter键之后能顺利断电,那么恭喜了,你的电脑顺利通过了最后一关的测试.

以上只是我初步想到的一些步骤,欢迎大家补充.

临时增加swap的方法

我的机子物理内存是1G,当时装系统的时候,以为也不会运行很多程序,于是只分了500M左右的swap.
但是后来,因为种种原因,导致系统缓存不够(主要是因为开了VBox和eclipse两大东东,加上ff和compiz之类的),又不想去动分区结构,怎么办呢?办法当然是有的:

  1. lily@LLY:/home$ sudo dd if=/dev/zero of=swapfile bs=1024 count=655360
  2. 记录了 655360+0 的读入
  3. 记录了 655360+0 的写出
  4. 671088640 字节 (671 MB) 已复制,18.6445 秒,36.0 MB/秒
  5. lily@LLY:/home$ file swapfile
  6. swapfile: data
  7. lily@LLY:/home$ sudo mkswap swapfile
  8. Setting up swapspace version 1, size = 671084 kB
  9. no label, UUID=789730ee-9dcb-4143-8a5c-bbdff938c5a6
  10. lily@LLY:/home$ file swapfile
  11. swapfile: Linux/i386 swap file (new style) 1 (4K pages) size 163839 pages
  12. lily@LLY:/home$ sudo swapon swapfile
  13. lily@LLY:/home$ free -m
  14.              total       used       free     shared    buffers     cached
  15. Mem:          1002        982         19          0          3        250
  16. -/+ buffers/cache:        728        273
  17. Swap:         1126        486        639

解释一下,dd那命令其实就是新建一个约640M的空白文件,注意这里不推荐用其他方法建立文件,因为作为swap的文件不能有空洞(应该就是所谓的碎片吧).
mkswap是在那个空白文件的基础上,建立swap的文件系统,可以看到之后的file命令输出就不一样了.
然后在用swapon命令激活,一切都是那么简单.
另外,如果想让更改永久有效的话,还需要修改一下 /etc/fstab 文件,否则重启后就要再执行swapon命令激活一次.