Tairan's Story

「知之真切笃实处即是行,行之明觉精察处即是知,知行工夫不可离。」


使用App Engine跟踪ADSL外网IP

在家使用ADSL拨号上网,并使用一台电脑作为Home Server,这样以来可以在工作的时候发现什么好东西,就可以远程连接到家中的电脑进行下载,也可以在家托管自己的代码仓库等,工作学习生活都不耽误。

使用ADSL有个问题,ADSL使用DHCP服务动态分配的,可能每一次拨号得到的IP都不一样。为了跟踪当前所获得的IP地址,我设计了一个简单的IP跟踪解决方案。下面是结构图:

iptracker

整个架构分为3个部分
1. Home Server, 定时向 App Engine 发送请求告知自己当前的外网IP
2. Google App Engine, 管理用户和IP地址
3. 用户, 提供预定义的口令后就可以看到当前Home Server的外网IP

我的Home Server使用的是 Gentoo Linux, 每一个小时向 App Engine 发送一次请求,如果使用Windows XP,可以使用系统自带的计划任务,但计划任务的最小执行单位是每天。

Home Server 发送请求,是通过 cURL 来实现的,Windows 需要单独下载。我推荐在Windows上安装 GoW 来使用*nix命令提供的便利。

1
curl http://xxx.appspot.com/collector?key=GUID

App Engine 预置了一个字典,用来记录使用者的信息以及GUID

1
auth_data = {'auth_name': GUID}

用户访问 http://xxx.appspot.com/ ,填入自己的 auth_name 提交即可看到 App Engine 最后一次接收到IP信息。

这只是一个简单的解决方案,暂时够我使用。有兴趣研究 Google App Engine 的朋友可以来交流。

No Comments » | Tags:,,,, | Categories: Technology, 我的声音
基于(LFS)构建一个属于自己的Linux(一)

想挑战LFS很久了,终于从今天开始动工制作了。以前虽然没有动手开始创建LFS,但是也积累了不少的相关信息,一切都还算顺利。

今天是第一天,主要的工作是编译工具链和一些系统工具为Building the LFS System作准备。

准备HOST(宿主)系统,没有使用LFS-LiveCD, 而是在虚拟机中安装LinuxMint(没有特殊的含义),在开始之前需要在LinuxMint中安装编译LFS的相关工具。

sudo apt-get install build-essential bison

LFS 的版本为 6.5

LFS 提供了一个文件, 其中包含了构建LFS所有用到的源码下载链接 LFS-BOOK-6.5-wget-list

可以使用wget下载这些源码

wget -c -t 2 -i LFS-BOOK-6.5-wget-list -o down.log

需要注意的是,Perl-5.10.0 的路径已经被移除,取而代之的是Perl-5.10.1。采用了新的版本Perl后,原来针对5.10.0的patch就不用了。

依照LFS-BOOK的指示,编译起来还是很顺利的。如果英文不好可以对照着金步国翻译的中文版的LFS-BOOK-6.2

通常编译的步骤如下,先解压源码包,如果有patch则应用patch

patch -Np1 -i path_of_the_patch

之后就是念咒语

./configure --prefix=/tools #需要根据文档指示
make
make install

具体的编译还是应该参照文档,除非你运气真的很背,否则都会通过的。

编译是一件苦力活,根据机器的性能,也许会耗费你一天甚至更长的时间。其实也有自动化的操作,但是动手敲上一段咒语还是有很多额外的收获。

到此,编译了N个程序后准备工作就告一段落了,编译的这些程序是新世界的基础,很重要、也很费时! 接下来进入 Building the LFS System

No Comments » | Tags:,, | Categories: Technology, 实践手札, 我的声音
阿凡达 Avatar

说啥呢? 其实对于电影本身真的没啥好说的,有条件的去看IMAX+3D,没条件的看普通3D,剩下没条件的去创造条件到电影院看。

不在电影院看《Avatar》就等于没看过!

鼓吹完大家为美帝国贡献GDP之后,来谈谈Avatar背后的故事吧。

作为技术人员,研究一下电影背后的有关技术的话题,还是很有意思的。《Avatar》所带来的震撼是科技的进步!

  为了能百分百的表现潘多拉这个奇绝的梦幻世界,卡梅隆使用了三项突破性技术:虚拟摄像技术、表情抓取,和联合数字立体摄影机(fusion camera system)。
  
  虚拟摄像机技术目前为止还主要用于3D虚拟世界游戏,比如《塞尔达传说》系列游戏,游戏者控制虚拟世界中自己的人工智能体,将人物行为信息实时双向反馈,人物所处的三维立体环境随着其动作位置变化实时发生变化。在《阿凡达》中,演员佩戴无数感应器进行“行动抓取”,电脑对抓取的数据直接进行处理,将其所代表的虚拟人物按预制比例直接显示在监控器上,从而使导演能实时观测虚拟人物与虚拟电子潘多拉世界的交互效果。
  
  表情抓取指抓取演员表情的电脑图形技术。卡梅隆在洛杉矶的Playa Vista建立了一个比一般表演抓取工作室大5倍的专门舞台(the volume),安装了120个固定摄像头,全角度抓取演员表演的全部信息;扮演Na’vi人的演员同时佩戴一个特制的帽子,由一部微型摄像机详细记录其在表演中面部表情的一切变化。卡梅隆希望借此传输95%的演员表演和面部表情信息到他或她的数码虚拟人物身上。结果便是无比逼真的成像效果,观众完全无法区别真人与虚拟人物的交互。
  (http://www.popularmechanics.com/technology/industry/4339457.html)
  
  联合数字立体摄影机则是导演卡梅隆和数字摄像技术创新者,摄像师Vince Page共同开创的3D立体摄像系统。此系统使用两台索尼HDC-F950 高清摄像镜头,如同人的左右眼一样距离大约70毫米同时拍摄,随着人物距离镜头远近的变化自动调整左右两个镜头之间的距离,并将数据传回相应的EVS XT[2]成像处理系统进行合成,制造出最类似人眼的立体景深感受。联合数字立体摄影机如今已被广泛用于了不少3D电影的拍摄,包括卡梅隆自己使用同一技术拍摄的3D纪录片《深海异形》。
  (http://video.google.com/videoplay?docid=-241532803911842846#)
  
  没有这三项技术创新就没有那种身临其境的潘多拉星体验,观众就不能切身体会那种神秘、迤逦、瑰奇,不能感受身骑龙鸟翱翔的速度、不能领会漫游夜森林的色彩,不能感知生命之树的呼吸与呢喃。而这一切的感受都是属于影院的,是确保故事逼真情感真切的关键。

作为程序员,当看到 Fenng 的这篇文章 制作《阿凡达》特效的超级计算机时,我的心加速跳动了几下。

Linux!

HP Cluster Platform 3000BL 集群平台作为其解决方案, 操作系统是 Linux!

看到了吧,研究和使用Linux是大有前途的,可大(大型集群)、可小(嵌入式),作为程序员的你,赶紧加入这趟Linux高铁吧!

1 Comment » | Tags:, | Categories: 我的声音
在linux上使用swap文件

作为个人用户,为swap分一个磁盘分区有些浪费,其实我们可以使用swap file来替代swap 分区,而且还可以很方便的调整swap file文件的大小。

To add a swap file:

1. Determine the size of the new swap file and multiple by 1024 to determine the block size. For example, the block size of a 64 MB swap file is 65536.

2. At a shell prompt as root, type the following command with count being equal to the desired block size:

      dd if=/dev/zero of=/swapfile bs=1024 count=65536

3. Setup the swap file with the command:

      mkswap /swapfile

4. To enable the swap file immediately but not automatically at boot time:

      swapon /swapfile

5. To enable it at boot time, edit /etc/fstab to include:

      /swapfile               swap                    swap    defaults        0 0

The next time the system boots, it will enable the new swap file.

6. After adding the new swap file and enabling it, make sure it is enabled by viewing the output of the command cat /proc/swaps or free.

参考:
RHL-8.0-Manual

EOF

No Comments » | Tags:, | Categories: Technology, 我的声音
我的Linux-KVM



kvm

Originally uploaded by tairan.wang

用Linux当HOST有很多好处,有很多自由的虚拟机软件可以使用。现在我选择的是 Kernel-based virtual machine — KVM。

No Comments » | Tags:, | Categories: Technology, 我的声音
TMD还是Linux的桌面好用

本人过着双重生活,白天在MS讨生活,夜晚沉浸在Linux的世界中。一直以来总是认为Windows的桌面环境,尤其是WIN7要比Linux的桌面要易用一些,毕竟Windows是傻瓜化的操作。可今天我才发现Linux的桌面其实更好用。

在本人的双重世界中,Linux的运行时的硬件总是距今有3-4年之久,而Windows的硬件却是当今主流中端配置。所以在在Linux上运行桌面时总感觉没那么的流畅,没有Windows的方便。当我给Linux一个当今低端配置时,Linux世界发生了翻天覆地的变化。输入法也不迟钝了,窗口切换也流畅了,高清电影播放ok了,再跑个Virtual Box玩XP也绰绰有余了。

如此的好处只能自己亲自体验才行,如果你不相信的话,赶紧装个Linux试试!

废话少说,有图为证:
Linux Mint desktop

No Comments » | Tags:, | Categories: Technology, 我的声音
The Linux initating order

Linux 启动顺序 转自 http://blog.csdn.net/Tcrazyalways/archive/2008/11/27/3391243.aspx

了解了Linux的启动顺序有利于在系统启动时enable/disable各种系统服务

Linux 启动顺序:
1、 BIOS自检
2、 运行系统内核并检测硬件
3、 运行系统的第一个进程init
4、 init读取系统引导配置文件/etc/inittab中的信息进行初始化
/etc/rc.d/rc.sysinit——系统初始化脚本
/etc/rc.d/rcX.d/[KS]*——根据运行级别配置服务
/etc/rc.d/rc.local———执行本地特殊配置
其它———不同运行级别的特殊服务

Linux启动运行init程序来启动相关程序初始化,与启动相关的一个概念是运行级,运行级是操作系统当前运行的级别,在不同运行级别上可以定义属于该运行级的启动程序,系统的运行级别可以在/etc/inittab文件指定,与运行级相关运行程序通过从源/etc/rc.d/init.d下链接到目的/etc/rcX.d,这里X为系统的默认运行级别,因此,默认的启动脚本放在/etc/rc.d/init.d下。

# 缺省的运行级,Linux用到的级别如下:
# 0 – 停机(千万不要把initdefault 设置为0 )
# 1 – 单用户模式
# 2 – 多用户,但是没有 NFS
# 3 – 完全多用户模式
# 4 – 没有用到
# 5 – X11
# 6 – 重新启动 (千万不要把initdefault 设置为6 )
#

对各个运行级的详细解释:
0 为停机,机器关闭。
1 为单用户模式,就像Win9x 下的安全模式类似。
2 为多用户模式,但是没有NFS 支持。
3 为完整的多用户模式,是标准的运行级。
4 一般不用,在一些特殊情况下可以用它来做一些事情。
例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5 就是 X11 ,进到 X Window 系统了。
6 为重启,运行 init 6 机器就会重启。

如何让系统在启动是运行指定程序,根据启动顺序中的第四步,有两种方式。
一种方式是根据运行级别配置服务。
一种方式是执行本地特殊配置。
举例,任务在启动是运行命令cvslockd:
方式一:
1. 建立自启动脚本/etc/rc.d/init.d/cvslockd,内容为:
#!/bin/bash
/usr/local/bin/cvslockd

设置文件的属性为可执行:
#chmod +x /etc/rc.d/init.d/cvslockd

2. 查看计算机运行级别,在文件/etc/inittab里看到id:5:initdefault:,则此系统运行级别为5。
3. 到/etc/rc5.d目录下,把你要执行的可执行文件做一个软连接,而且在命名的时候要以大写S字母开头,S之后的数字大小代表执行顺序的先后,数字越大越后执行。
#ln -s /etc/rc.d/init.d/cvslockd /etc/rc5.d/S100cvslockd
#ln -s /etc/rc.d/init.d/cvslockd /etc/rc0.d/K20cvslockd

方式二:
在/etc/rc.d/rc.local 添加 exec /usr/local/bin/cvslockd
该方式是在最后启动cvslockd。

No Comments » | Tags: | Categories: Technology 转载, 参考消息
The note of install Hyper-V on Windows 2008 Server

Windows 2008 Server 上安装和使用 Hyper-V 笔记

安装 Hyper-V 有几个硬性要求
1. CPU 支持 Virtualization
2. 宿主操作系统需要是 64bit

在安装过程中有几个需要注意的地方
1. 宿主操作系统的Location必须是United States的,否则 Hyper-V Virtual Machine Management Service不能启动
2. 如果CPU 支持 Virtualization 却不能启动 Guest 操作系统,那么需要检查主板BIOS中是否将 Virtualization 打开,BIOS已经打开也不行的话,那么升级下BIOS就可以了。我的 HP dc5750 就是升级到最新的BIOS才行的

Hyper-V Guest 操作系统的支持
Hyper-V 和 VPC Server 相比是明确提出支持 Linux 的,可这并不代表所有的 Linux 发行版都能不错的运行在 Hyper-V 上面。下面是 Microsoft 提供的支持 Linux 列表,更多的支持访问 http://www.microsoft.com/windowsserver2008/en/us/hyperv-supported-guest-os.aspx

Linux Distributions (VMs configured with 1 virtual processor only)
      SUSE Linux Enterprise Server 10 with Service Pack 2 x86 Edition
      SUSE Linux Enterprise Server 10 with Service Pack 2 x64 Edition
      SUSE Linux Enterprise Server 10 with Service Pack 1 x86 Edition
      SUSE Linux Enterprise Server 10 with Service Pack 1 x64 Edition

经过多个发行版安装测试,Ubuntu 8.10, Slackware 12.2, CentOS 5 是无法安装的。ArchLinux 倒是可以不错的运行在 Hyper-V 上面。
安装 Linux 时需要注意的是,网络设备需要使用 Legacy Network Adapter

总结
Hyper-V 比 Virtual PC Server 是一个很大的进步,在实际中使用 Hyper-V 还有很长的路要走,Hyper-V 支持的 Guest 系统都好贵,而且 Hyper-V 本身就只能在一个很贵的 Windows 2008 Server 上使用!还是使用 Linux 作为 Host 划算,而且更自由!

1 Comment » | Tags:, | Categories: Technology, 我的声音
Install GRUB using grub-install

用过GRUB以后才知道这个玩意的强大。GRUB加上各种Linux kernel,可以组合成各种启动和安装系统方式。
现在总结一下安装GURB。

环境:
Virtual Box #虚拟机
LFS-LiveCD #提供安装GRUB环境

省略若干配置虚拟机的文字…

我们需要在一块新磁盘上安装GRUB,这块磁盘在系统中为 /dev/hda

首先要分区,格式化。(fdisk, mkfs.xfs)。目前GRUB也支持XFS文件系统启动了

挂载分区

mkdir /tmp/hda
mount /dev/hda1 /tmp/hda

安装

grub-install --recheck --root-directory=/tmp/hda /dev/hda

注意:
如果不挂载分区,我这里会提示,不知道其他人有没有遇到这个情况

grub-install does not have any corresponding BIOS drive

另外在指定驱动器的时候不需要指定分区号 (hda1)

至此,GRUB就安装结束了,重启计算机后就会发现GRUB的提示环境了。

No Comments » | Tags:, | Categories: Technology, 我的声音
Multisystem boot via GRUB

以前安装多系统(Linux®+Windows®)都是在一个硬盘上,先安装Windows后安装Linux,然后使用GRUB (or LILO)来引导系统。
如今生活富裕了,硬盘也多了起来,为了更方便的重装系统。我把Linux®和Windows®分别安装在不同的硬盘上。这时就不用严格限制安装系统谁先谁后了。(其实不是Windows®是笨,而是故意不支持通用引导)
硬盘物理连接结构如下
hdd0 — Primary IDE 安装 Linux
hdd2 — Second IDE 安装Windows
为什么不在同一根IDE线上安装硬盘呢?往下看
安装Linux并使用GRUB作为boot程序
进入BIOS,把 Primary IDE 设置为 Disable
安装Windows,此时Windows会将hdd2认作当前计算机中的Primary Disk,这样就会在hdd2的MDR创建引导文件。系统安装完毕,这样就可以通过在BIOS来设置first boot来分别引导Linux或Windows了。
接下来配置GRUB,通过GRUB来引导Windows,而不是频繁的修改BIOS。
编辑 /boot/grub/menu.lst 加上下面的代码

title Windows XP
map (hdd0) (hdd2)
map (hdd2) (hdd0)
rootnoverify (hdd2,0)
chainloader +1

这段配置中最重要的就数那两行map指令了。这个是专门为(DOS/Windows)准备的。参见 GRUB Manual

这样就可以使用GRUB来分别引导Linux和Windows了.

总结:
学习一个工具如何使用,首先的就是通读使用手册. 然后不断的动手去做! 如此,当你不断的向期望的目标努力的时候就获得了经验!

文章中提到的
Windows 即是 Windows®
Linux 即是 Linux®

这些都是人家的注册商标,要尊重!

No Comments » | Tags:, | Categories: Technology, 我的声音


我的豆瓣

二维码快速链接
QR Code fuer diese Seite