蜗牛的壳

蜗牛的壳

我行依我素 | 苦苦咸咸就是我 | Snailium的个人网站

浏览模式: 标准 | 列表
分类:[原创]其他技术

Bash编程笔记:swatchdog for WD-MBWE


Linux BusyBox 果真是个强大的东西。只要想做,什么都能做出来。正好最近正愁 My Book 的服务总是莫名其妙的挂掉,搞的在单位都无法访问文件。操起简单的 vi,开始制作 Bash Watchdog。(之所以没用 Perl,是考虑到 Perl 在预编译的时候比较耗费系统资源)

经过三个小时的现学现卖,雏形版的 Bash Watchdog - swatchdog 出炉。

/usr/sbin/swatchdog
  1. #! /bin/bash
  2. #
  3. # Watchdog for system service
  4. #  
  5.   
  6. while [ 0 ]  
  7. do
  8.   for PROC
  9.   do
  10.     PID=`ps -aef | grep -v grep | grep -v swatchdog | grep "$PROC"`
  11.     if [ -z "$PID" ] ; then
  12.       TIME=`date "+%Y-%m-%d %H:%M:%S %Z"`
  13.       echo "[$TIME] $PROC is not found, rebooting..." >> /etc/swatchdog/reboot.log
  14.       reboot
  15.       exit 1;
  16.     fi
  17.   done
  18.   sleep 600
  19. done
  20.  
  21. exit 0;

原理很简单,无限循环,检查命令行传入的进程是否存在。如果不存在则重启。

使用也很简单。

Command
  1. swatchdog cvm transmission amuled

自动侦测 cvm(mionet)、transmission 和 amuled。

WD MBWE Hack: nethostfs


Here is HOWTO add nethostfs on Western Digital My Book World Edition. For Chinese version, visit here(中文版).

Prerequisite: Enable SSH on My Book.

Step 1. Download nethostfs v1.5 source code, unpack and compile.

bash
  1. wget http://www.snailium.net/mbwe/nethostfs15src.tar.gz
  2. tar -xzvf nethostfs15src.tar.gz
  3. cd nethostfs15src
  4. make
  5. cp nethostfs /usr/sbin
  6. chmod 755 /usr/sbin/nethostfs
  7. chown root:root /usr/sbin/nethostfs

Step 2. Create shared folder /PSP/ through My Book Storage Manager.

Step 3. Create service script nethostfs under /etc/init.d/.

/etc/init.d/nethostfs
  1. #!/bin/sh
  2. #
  3. # Starts or stops the nethostfs for remote PSP access.
  4.  
  5. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  6. NAME="nethostfs"
  7. DESC="Remote PSP access"
  8.  
  9. case "$1" in
  10.   start)
  11.         echo -n "Starting $DESC: $NAME"
  12.         nice -n 10 nethostfs /shares/internal/PSP &
  13.         echo "..."
  14.         ;;
  15.    stop)
  16.         echo -n "Stopping $DESC: $NAME"
  17.         killall nethostfs
  18.         echo "."
  19.         ;;
  20.    *)
  21.         N=/etc/init.d/$NAME
  22.         echo "Usage: $N {start|stop}" >&2
  23.         exit 2
  24. esac
  25.  
  26. exit 0
  27.  

Step 4. Make start/stop link under /etc/init.d/.

bash
  1. cd /etc/init.d/
  2. ln -s /etc/init.d/nethostfs S91nethostfs
  3. ln -s /etc/init.d/nethostfs K09nethostfs

Step 5. Reboot My Book World Edition


Note 1 - nice -n 10 is used in service script to adjust process priorities, in order to avoid nethostfs consumes too much CPU resource.
Note 2 - This works perfect for iRshell, as well as PPA (which uses iRshell's WiFi code)

WD MBWE 改造 — nethostfs


Western Digital My Book 所使用的 BusyBox 可塑性还是很高的。

想到正好在用 PPA 在 PSP 上通过 WiFi 看电影,干脆把 nethostfs 服务也集成到 My Book 里面好了。(English Version

前期准备:在 My Book 上加装 SSH 服务

第一步:按照下面的方法下载 nethostfs v1.5 源代码,解包,编译。

bash
  1. wget http://www.snailium.net/mbwe/nethostfs15src.tar.gz
  2. tar -xzvf nethostfs15src.tar.gz
  3. cd nethostfs15src
  4. make
  5. cp nethostfs /usr/sbin
  6. chmod 755 /usr/sbin/nethostfs
  7. chown root:root /usr/sbin/nethostfs

第二步:通过 My Book 共享储存管理器建立 PSP 共享文件夹。

第三步:在 /etc/init.d/ 下建立 nethostfs 服务脚本。

/etc/init.d/nethostfs
  1. #!/bin/sh
  2. #
  3. # Starts or stops the nethostfs for remote PSP access.
  4.  
  5. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  6. NAME="nethostfs"
  7. DESC="Remote PSP access"
  8.  
  9. case "$1" in
  10.   start)
  11.         echo -n "Starting $DESC: $NAME"
  12.         nice -n 10 nethostfs /shares/internal/PSP &
  13.         echo "..."
  14.         ;;
  15.    stop)
  16.         echo -n "Stopping $DESC: $NAME"
  17.         killall nethostfs
  18.         echo "."
  19.         ;;
  20.    *)
  21.         N=/etc/init.d/$NAME
  22.         echo "Usage: $N {start|stop}" >&2
  23.         exit 2
  24. esac
  25.  
  26. exit 0
  27.  

第四步:在 /etc/init.d/ 下建立相关启动/关闭服务链接。

bash
  1. cd /etc/init.d/
  2. ln -s /etc/init.d/nethostfs S91nethostfs
  3. ln -s /etc/init.d/nethostfs K09nethostfs

第五步:重启 My Book。


注意 1:在服务脚本中,使用了 nice -n 10 调整进程的优先级,防止 nethostfs 占用过多资源。
注意 2:此方法也适用于 iRshell。(PPA 的 WiFi 部分使用的是 iRshell 的源代码)

PS2游戏改造 Iteration 1


玩了很长时间的《无双·远吕智》(无双大蛇),对其中的 CG 和 BGM 已经厌烦了。最近无意间看到有恶搞的无双大蛇幸运星OP,干脆拿来集成一下。

说做就做。把网上下来的镜像挂上开始 dump 文件。

但是光荣也不是吃素的,打开光盘之后发现里面都是打包好的文件,分别是 LINKDATA.ANS、LINKDATA.BNS、LINKDATA.CNS 和 LINKDATA.DNS。又是无意间,发现专门为《战国无双2猛将传》准备的 CNS 解包工具。下载、解压缩、sm2m /cu 解开 CNS,获得一堆 .pss 文件(美版是10个,日版24个,多出来的都是无双系列前几部的宣传片)。这里要插一句,PSS 文件和 MPG 文件差不多,都是 MPEG2 的封装器,用 MPC 内置的 MPEG2 Splitter 可以分离观看。但是无双系列的 CG 音频都是压缩过的 ADPCM 格式,找解码器比较麻烦。但是无所谓,用下面讲到的 PSS Plex 可以转换成 WAV 音频。再回来说这10个 PSS 文件,都是片头片尾和各国结局 CG。其中比较小的几个是光荣的 Logo、ProLogic II Logo 和 w-force Logo。

确定了 PSS 之后,就要准备替换了。下面要介绍 PSS 分离/合成软件 PSS Plex。十分简单的小程序,带图形界面。拿到工具之后,当然要先分离一个 PSS 看一下参数。640x448 分辨率、MPEG2 编码、4500kbps 码流。确定好之后开始准备替换影片。

将下载好的 .flv 影片用 Procoder 压缩成 MPEG2 影片(m2v+wav)。具体怎么压缩在这里就不说了,毕竟 320x240 的 .flv 画质很不好,需要用很多滤镜才能保证画质清晰无色块。压缩完了之后,用 PSS Plex 合成 .pss 文件,注意要选上“Compress sound (ADPCM)”选项。然后将 008.pss(w-force Logo)替换掉。

在合成 LINKDATA.CNS 的时候需要注意,sm2m /cp 需要94个文件(000.pss - 093.pss),所以从 010.pss 开始,建立94个垃圾文件(用命令行更方便些)。然后再 sm2m /cp 合成 LINKDATA.CNS。

最后,拿出 CD/DVD Generator 2.0cdvd iml2iso,制作光盘镜像。《无双·远吕智》并不是用 LBA 寻址,所以文件的顺序无所谓,DUMMY.BIN 还是要加入的。记得先用 CD/DVD Generator 导出 .iml 文件,然后用 iml2iso 生成镜像。

最后的最后,当然就是刻盘啦。不过刻盘之前最好先用 PS2 模拟器模拟一下,确保 ISO 没有问题。

好啦,第一回合结束。过几天再研究一下其他的 CG。

注意:如果分离 PSS 之后发现有 .sub 文件(字幕?),那么说明这个文件暂时不能替换。因为 PSS Plex 的 bug,在合并 .sub 文件的时候会出现异常。而如果不加入 .sub 文件,运行游戏 100% 死机。


参考资料:
1. http://bbs.a9vg.com/read.php?tid=762507&fpage=1&toread=&page=1

Facebook,强大的背后是无耻


今天喝酒的时候朋友提到了Facebook的强大,很多朋友都可以在Facebook上找到。后来自己申请了一个帐号研究了一下,发现Facebook不过是美国版的某“白领网”罢了。本文大略分析了一下Facebook是怎样工作的。

首先,要呈请的一点是,Facebook并不是“交友网站”,而是“社交网站”。两者的区别就在于交朋友是不是带有目的性。

好了,言归正传,下面简单论述一下Facebook是怎么工作的。

首先,注册之后,Facebook给我显示几个“朋友”。此时的“朋友”都是Facebook用户并且我在他们的名单中。名单是怎么生成的请往下看。

然后,Facebook提示我加入一个Network。这个所谓的“Network”真正的作用是优化Facebook的搜索结果。

进了主页之后,Facebook向我提示几个潜在的朋友。这些潜在的朋友实际上就是朋友的朋友,然后根据reference(人与人的联系)的进行评分,分数高的证明这个人朋友多、是我朋友的机率大。事实上,Facebook给我的潜在朋友预测只有两个是对的。

然后,Facebook促使我进行朋友搜索。但是朋友搜索是有前提条件的,那就是输入Windows Live (MSN)的帐号和密码。这样一来,Facebook就可以登录Windows Live服务器取回我的联系人列表,进行精确查找。这个国内某“白领网”用的方法一模一样。有些人在这一步选择了Outlook联系人列表,这一下Facebook得到的信息就更多了。

最后,Facebook要我输入学校/公司的Email地址。这一步是为了得到更可靠的联系方式。

综上总结,Facebook只是在诱导用户填入自己的朋友圈子,在得到足够多的用户信息之后进行分类总结,最后精确找出朋友。这一切早在几年前就有中国的网站在做了。当时总是莫名其妙的收到一些交友邮件,其实就是网站利用MSN平台进行有选择的推送。这些东西在Google上搜一下有很多,我就不再多说了。

之所以中国的网站被网民骂得很惨,但Facebook却有这么多人支持,最根本的一点,因为Facebook是美国的网站。其他的话就不用多说了吧?

安装国产操作系统“银河麒麟2.1”初体验,失败


本着支持国货的心理,下载了一个银河麒麟2.1,看看最近国产操作系统发展得怎么样。

Java中byte使用注意事项


目前在做的SYSC 3303 Project是关于使用Java编写TFTP服务器/客户端。其中Java的发送数据包要用byte数组。凭着C语言的扎实基础,想当然的认为byte就是8位无符号整数。于是每一个数据包都由String转为byte发送。

但是,问题出现了。在发送ACK和DATA包时,传出的Block #有一部分不正确(例如:65535)。调试的时候显示在创建数据包的时候数据为0xFF_0xFF(65535),但是接收到的数据为0x3F_0x3F(16191)。

看了一下Java Specification,发现在Java中byte和int都是带符号的整数(signed integer),而且唯一的无符号整数(unsigned integer)是char。再往下看,原来char是按照UTF-16编码储存的(16位无符号整数)。郁闷啊。

接下来的工作就是查怎样从byte转换到int。因为带符号整数都是要做带符号扩展(signed extend),也就是说值为0xFF的byte在转成int之后,值为0xFFFFFFFF。终于在网上查到byte与int无符号转换方法,如下:

Java代码
  1. int firstByte = 0;  
  2. int secondByte = 0;  
  3. int thirdByte = 0;  
  4. int fourthByte = 0;  
  5.   
  6. firstByte = (0x000000FF & ((int)buf[index]));  
  7. secondByte = (0x000000FF & ((int)buf[index+1]));  
  8. thirdByte = (0x000000FF & ((int)buf[index+2]));  
  9. fourthByte = (0x000000FF & ((int)buf[index+3]));  
  10.   
  11. long anUnsignedInt = 0;  
  12.   
  13. buf[0] = (anUnsignedInt & 0xFF000000L) >> 24;  
  14. buf[1] = (anUnsignedInt & 0x00FF0000L) >> 16;  
  15. buf[2] = (anUnsignedInt & 0x0000FF00L) >> 8;  
  16. buf[3] = (anUnsignedInt & 0x000000FFL);  

但是,问题并没有解决。看来不是cast问题。猛然醒悟,原来是从String转成byte的时候出问题了!看来整个Class都要修改了,再次郁闷一下。

总结:Java去掉了无符号的整数,据说本意是为了简化编程,但是事实上在做网络程序时,我们需要应用大量的无符号整数。另外,Java的一些内部机制也会对编程造成困惑,例如从String生成byte数组的算法。但是这些特别的地方一般的教授或者教材并不作介绍。因此,Java特别适合做Top-level程序(最高等级,即应用程序级)。

最后的一点个人总结:我这个智商没办法凌驾于Java之上,最多也就只能用用C语言了……


注:有关Java中unsigned number的详见 http://darksleep.com/player/JavaAndUnsignedTypes.html

三星SRAM芯片编码介绍


Samsung Asynchronous/Synchronous SRAM Ordering Information

三星闪存芯片编码介绍


Samsung NAND Flash Ordering Information

三星DRAM芯片编码介绍


Samsung DRAM Ordering Information
Records:24123




« 2010年08月 »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

标签

用户


链接


归档


信息

  • 分类数量: 13
  • 文章数量: 234
  • 评论数量: 99
  • 标签数量: 429
  • 附件数量: 346
  • 引用数量: 0
  • 注册用户: 9
  • 今日访问: 21
  • 总访问量: 558128
  • 程序版本: 1.6