<?xml version="1.0" encoding="UTF-8"?><rss version="0.92">
<channel>
	<title>I am LAZY bones ?</title>
	<link>http://luy.li</link>
	<description>all linux</description>
	<lastBuildDate>Mon, 30 Aug 2010 01:26:21 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	<!-- generator="WordPress/3.0.1" -->

	<item>
		<title>设置python的stdout为无缓存模式</title>
		<description><![CDATA[考虑以下python程序： #!/usr/bin/env python &#160; import sys &#160; sys.stdout.write&#40;&#34;stdout1 &#34;&#41; sys.stderr.write&#40;&#34;stderr1 &#34;&#41; sys.stdout.write&#40;&#34;stdout2 &#34;&#41; sys.stderr.write&#40;&#34;stderr2 &#34;&#41; 其中的sys.stdout.write也可以换成print。 运行这程序，你觉得会输出什么？试验一下，就会发现，其实输出并不是 stdout1 stderr1 stdout2 stderr2 而是： stderr1 stderr2 stdout1 stdout2 究其原因，是因为缓存：虽然stderr和stdout默认都是指向屏幕的，但是stderr是无缓存的，程序往stderr输出一个字符，就会在屏幕上显示一个；而stdout是有缓存的，只有遇到换行或者积累到一定的大小，才会显示出来。这就是为什么上面的会显示两个stderr的原因了。 然而，有时候，你可能还是希望stdout的行为和stderr一样，能不能实现呢？当然是可以的，而且对于python，实现起来还特别方便，以下是两个方法： python -u stderr_stdout.py PYTHONUNBUFFERED=1 python stderr_stdout.py 第一种方法是给python指定 -u 参数，第二种方法是在python运行时，指定 PYTHONUNBUFFERED 环境变量，这两种方法其实是等效的。 当然，也可以在程序的第一行指定 #!/usr/bin/python -u 然后程序加可执行权限来运行，或者把 export PYTHONUNBUFFERED=1 写到 .bashrc 里去。]]></description>
		<link>http://luy.li/2010/08/29/pythonunbuffered/</link>
			</item>
	<item>
		<title>gentoo下的pppoe拨号</title>
		<description><![CDATA[最近，无线路由坏了，所以只能先用自己的电脑拨adsl了。 其实这本也没什么，我的win7和ubuntu都只要稍微设置一下就OK了。 这里再稍微提一下ubuntu的pppoe设置：记得以前的版本（应该是6.xx的时候吧），NetworkManager是不直接支持pppoe的，还要自己手工设置，然后执行pon/poff来拨号，但是现在进步了，直接在NM里输一下用户名和密码就可以上了。 但是我的gentoo是用wicd来管理网络的，而wicd至今都还不支持pppoe，于是只能用原始的命令行来拨号了。 于是eix一搜，发现有个net-dialup/rp-pppoe，安上，看到有 pppoe-setup、pppoe-start、pppoe-stop。啥都不用说了，先pppoe-setup，再pppoe-start，本以为会很顺利，但是几次尝试都在最后一步出错了，而且提示的错误都没啥价值，不知道从何查起~ 正当我无计可施，想妥协安个NetworkManager的时候，忽然灵感一现，发现了可能的错误原因，那就是──内核模块。原来，之前我的gentoo内核基本上也是按需配置的，以前我一直都有路由器拨号，所以没有在内核选项里打开ppp的支持，才导致了这一郁闷的结果，哈哈，既然发现了可能的原因，那就好办了，make menuconfig 里面选上 Device Drivers &#8212;>Network device support &#8212;>PPP (point-to-point protocol) support 下面的所有项，编译完再重启。再 pppoe-start ，果然看到了 Connected!]]></description>
		<link>http://luy.li/2010/08/28/gentoo_pppoe/</link>
			</item>
	<item>
		<title>湿地博物馆</title>
		<description><![CDATA[话说，自从我老婆孩子从老家回到杭州以后，原来刚好够我们小两口住的那个小房间，显然是住不下了。于是只能张罗着搬家和添置一些生活用品，到现在，虽然清苦（房子还是不大，也比较破旧），也总算慢慢安定下来了。 之所以在这里先说我搬家的事情，是因为我现在的住处比较偏远，靠近西溪湿地。然后，附近有一个“中国湿地博物馆”，大热天的，空调足，又免费，所以可以算是避暑胜地。今天──好吧，已经是昨天了（昨晚写这日志由于网络不好没写完）──终于有个周末可以空下来了，就去这博物馆玩了。 由于此博物馆并没有禁止拍照，所以我就拍了些照片回来，供大家观赏，以下图片都可以点击看大图~ 这是门口： 入口附近： 这里有些传感器，上面画着各种动物的脚印，踩上去，会播放对应动物的声音： 门口的导览图： 前台： 进去以后，在前台附近的交互式导览图，地图的各部分可以点击查看详细，做得还不错： 标本： 这些长方形的不是水缸，而都是触摸屏，介绍地图对应位置的湿地现状和保护情况等： 很有个性的玻璃顶棚，上面种满了绿色植物： 又是标本： 里面N多这样的大尺寸显示屏： 梯田的模型： 这个玩意对准模型里的某些物品，就可以看到一段相应的介绍录像，比较炫，不过实际上体验不怎么样： 和谐： 从楼上往下看： 这是个体验影院，里面会循环播放一段9分钟的介绍湿地的视频，屏幕超宽，估计得有10m以上吧，形成一个柱面的145度左右的弧。 里面有很多利用投影仪来营造气氛的装置： 这些小时候常用的工具，以比我想象中还要快的速度进了博物馆： 这个可以算是最有个性的消防栓么？ 这个得说明一下：不是我把它搞成这样的，是一个小萝莉，对着触摸屏瞎点瞎点，导致那Flash播放器崩溃了，才出来开始菜单什么的。。。可惜那电脑不能上网~ 又是一个用win+IE的系统~ 什么专题展厅： 西溪湿地模型： 标本： 窗外的风景： 这个是一套介绍生物常识的系统，中间的滑杆和放大镜用来选择片断，然后下面的显示器会播放。另外上面那个罩子，是用来感知下面是否有人的，如果播放过程中，你就闪人了，它就会把声音停掉，这样可以避免影响到旁边的其他机器和观众；另外这个罩子应该可以把声场固定在下面的一小块范围内，也是避免相互影响。个人觉得，是个不错的设计： 可以有部分互动的模型： 好，图片就贴上面这么多了，是不是有点意思呢？如果你也在杭州的话，不妨也去看看，地点是在天目山路和紫金港路的交叉口，哈哈。 另外这博物馆好像还有个新浪的官方blog，虽然不怎么更新。]]></description>
		<link>http://luy.li/2010/08/16/wetlandmuseum/</link>
			</item>
	<item>
		<title>oracle里循环搜索父子关系的键</title>
		<description><![CDATA[想象一下，如果有一张oracle里的表，存着的是一个linux系统当前的进程信息，有ID、父ID、进程名之类的字段，如果给定一个进程ID，要查这个进程的所有父进程（包括爷爷进程等）的ID，sql改怎么写？这就要用到 CONNECT BY PRIOR &#8230; START WITH 子句了。 下面就是这样的一个例子： --原先的表大致是这样的： SELECT id, parentid FROM the_table WHERE id IN &#40;14976, 14975&#41;; ID PARENTID ---------- ---------- 14975 14657 14975 14658 14975 14992 14975 15047 14976 14975 --要查所有的父进程，这么干： SELECT DISTINCT id FROM the_table CONNECT BY PRIOR parentid = id START WITH id = 14976; ID ---------- 1 110 [...]]]></description>
		<link>http://luy.li/2010/08/12/connect_by_prior_start_with/</link>
			</item>
	<item>
		<title>perl 的特色</title>
		<description><![CDATA[由于工作中偶尔要接触一下perl，所以我花了点时间，很粗略地看了一遍flamephoenix的perl中文教程。本文就是我在看的过程中记录下来的点点滴滴，对大家不一定有用，但是也可以让不会perl的同学对其有个直观的印象。perl果然是个非主流，哈哈。 字符串有很不同的转义，可以转义大小写。 $a = "T\LHIS IS A \ESTRING"; # same as "This is a STRING" 比较操作符有“比较”这个操作，整数是 ，字符串是 cmp ，会返回 1,0,-1 字符串能进线自加（++）操作，而且逢zZ9会进位，但是不能自减。 字符串的重复操作符是x（小写字母x），对应的python操作符是 * （星号） 条件操作符可以用来选择变量： $condvar == 43 ? $var1 : $var2 = 14; 数组变量要有个 @ 头，而且可以和普通变量重名，列表用的是()，对应python里是 []。 列表可以用..表示范围： (2, 5..7, 11) = (2, 5, 6, 7, 11) 更神奇的是，还可以用于实数： (2.1..5.3) = (2.1, 3.1 ,4.1, 5.1) [...]]]></description>
		<link>http://luy.li/2010/07/25/special-perl/</link>
			</item>
</channel>
</rss>
