I am LAZY bones ? all linux

分类: '流水帐' 的归档

HZLUG的第一次线下活动

昨天,HZLUG有了第一次线下活动,虽然地点远在滨江的网易大楼,但前来参加的仍然有60人左右,有学生也有已经工作的,有各大IT公司的SA还有来自上海的debian developer。
这次的人数已经大大出乎我的意料了,之前我觉得最多也就10多20个人的样子,演讲都可以直接围着电脑讲的那种,呵呵。。。
活动的详情可以看group内的帖子,也可以看TX的博文,都有大量的照片哦。
我这里就贴一下我演讲的slide吧:

我的神舟本3年了

首先声明,本文不是神舟的软文。

07年底,我买了一台神舟的笔记本,但是没过几天,就出现了问题,所以08年初去换了一台新的。
说实话,当时确实觉得神舟不靠谱,尤其是人家都在质疑神舟的时候我出的手,而且买回来没几天又坏了。但是后来事实证明,神舟的性价比还是可以的:当时5k多点的价格,买是配置就算放在今天也不算很差。尤其是显示器的分辨率,现在1680 × 1050的分辨率也还是不多见,这是我最满意的一点。
说说具体情况:3年来我基本上是办公+家用两用,使用时间蛮长的,有数据为证:

lily@LLY ~$ sudo smartctl -A /dev/sda | grep Power_On_Hours
  9 Power_On_Hours          0x0032   087   087   000    Old_age   Always       -       10102
lily@LLY ~$ echo "scale=2;10102/3/365" | bc
9.22

也就是说,3年一共使用的时间是10102个小时,平均每天工作9.22小时。
损耗方面:电池,现在基本只能作为UPS防止意外断电用了,估计能撑10min就很好了;光驱也严重挑盘了,不是质量很好的盘读不了了,刻录功能也废了;另外,键盘在我把所有键帽拆下来洗了一遍再装上以后,2个键变得不怎么灵了(能按,但是弹回无力了,算基本不影响使用吧);电源键下陷严重,不太好按了。初此之外,主要的硬盘、CPU、内存什么的,一点问题都没有。
可以说,神舟的质量算是经得起考验的。不过,好像现在随着其他品牌的价格也都下降了蛮多,神舟的性价比优势也在渐渐失去了,希望神舟能掀起下一轮的降价风波,给消费者带来更多物美价廉的好本本。这样我就更支持你了。

关于我的网络

近一个月来,都在断断续续折腾网络,遇到蛮多不爽的,流水帐记录一下。
首先是拉宽带,杭州有电信、网通、联通,由于联通是新入的,所以搞活动比较多,也最便宜,于是优先考虑,结果打电话过去,告诉他地址之后,人家就说“对不起,我们的网络暂时还不到您的小区!”(都怪我住得太偏了,唉。。)
无奈只能问问老牌的电信,一问1M 1年980,2M 1180,但是还需要初装费100块,觉得还是有点小贵,再问网通,人家1M、2M都是980,选1M还可以送个不值钱的蚕丝被,而且不用初装费,然后又听说网通其实现在用户少,平时限速不严,常常1M的带宽下载也能300+KB/s。又贪图了那100块钱的初装费,就装了1M的网通。
话说,网通的上门速度还真不错,当天打电话,就来给安装了,晚上回去一试,速度果然还可以,就开心地以为没啥问题了呢,到后来才发现那句老话──一分钱,一分货──还是有道理,这个网通果然还是存在不少毛病:首先是网络不稳定,你上得正开心呢,冷不丁就给你来次断线,还好我不怎么玩网络游戏,不然就更郁闷了。再者,我之前都是通过ssh隧道翻墙的,但是自打用了网通以后,就很难连上国外主机的22端口(80端口非常正常)了,奇怪的是,我ssh到国内主机很正常,从国内主机ssh到国外主机也很正常,但是就是不能直接ssh出去,于是基本确定是网通封了某些IP的某些端口或者是网通没有国际线路的带宽?于是郁闷地打丫投诉电话,接线员基本不能理解我说的是什么问题,我想他毕竟只是接线员而已,只要能记录问题就行,也就不多说了,说第二天给派人上门维修,于是第二天就上门了一个可爱的网通工作人员,进门我给他开电脑看问题,一看到linux,就直接不看了,打开他自己带的笔记本,插上我的网线,用他自己的账号拨号上网,然后打开网通的主页,点了一个电影开始放起来,一边对我说:“你看,网络一切正常,速度还不错~”。。。我那个无奈啊。。。后来花了很多时间跟他解释什么是 ssh(他居然压根不知道什么是ssh,什么是端口)、上网不只是能看电影能偷菜就行的等等。然后我帮他一字一句地把上门服务地详情录入到网通的系统里。。。
还好,经过我的N次电话之后,现在勉强能ssh出去了,虽然ssh隧道的速度和看电影的速度不是一个级别的,但是好歹能上推了。。。
这里给广大网友提个醒:如果你上网不只是为了看电影的话,一定要慎选网通。不然真是劳民伤财啊。。。打96171都花了我不少钱了。

湿地博物馆

话说,自从我老婆孩子从老家回到杭州以后,原来刚好够我们小两口住的那个小房间,显然是住不下了。于是只能张罗着搬家和添置一些生活用品,到现在,虽然清苦(房子还是不大,也比较破旧),也总算慢慢安定下来了。
之所以在这里先说我搬家的事情,是因为我现在的住处比较偏远,靠近西溪湿地。然后,附近有一个“中国湿地博物馆”,大热天的,空调足,又免费,所以可以算是避暑胜地。今天──好吧,已经是昨天了(昨晚写这日志由于网络不好没写完)──终于有个周末可以空下来了,就去这博物馆玩了。
由于此博物馆并没有禁止拍照,所以我就拍了些照片回来,供大家观赏,以下图片都可以点击看大图~
这是门口:

点击查看全文 »

perl 的特色

由于工作中偶尔要接触一下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) 和字符串 (“aaa”..”aad”) = (“aaa”,”aab”, “aac”, “aad”) ,还可以包含变量: ($var1..$var2+5)

列表赋值给简单变量,会得到列表的长度。。。

打开文件的模式(读、写或追加)是通过在文件名前加前缀指定的,所以,我不知道如果要只读打开文件名是 “>“ 的文件该怎么写。

文件测试操作更像bash的风格。

@ARGV[0] 就是第一个参数,而不是程序名本身。

有个 <> 操作符,可以直接按参数顺序读取指定的文件,这个就得实践过才能体会了。

可以像操作普通文件那样操作管道。而且也是用的open函数。

模式(也就是 正则表达式)操作是内置的,而不用像python那样import re。这点倒是比较像javascript。

有类似 awk 的模式匹配操作符。比如: $result = $var =~ /abc/; 这个用在逻辑判断里很方便。

模式的定界符缺省是/,但是可以用m来自定义。

模式匹配以后可以用 $1 $2 $& 等引用匹配到的组。

模式匹配操作可以放在while里循环,还可以pos定位。

elsif 也比较bash。

有 foreach 的语法。foreach语法里的 循环变量 是 循环内部 的局部变量;在循环里改变循环变量,会修改数组的对应项。。。

last就是break;next就是continue;还有个redo。循环控制很强大。

以上两点,可以用这个小程序体会一下:

#!/usr/bin/env perl
 
@list = (1, 2, 3, 4, 5);
print "@list\n";
foreach $temp (@list) {
	print "temp=$temp\n";
	if($temp==2){
		$temp=20;
		next;
	}
	if($temp==3){
		$temp=30;
		redo;
	}
	if($temp==4){
		$temp=40;
		last;
	}
}
print "@list\n";

也支持goto。

单行条件,也很有特色:语法为statement keyword condexpr。其中keyword可为if、unless、while或until。尤其是短循环时,很方便。

用 sub 来定义子程序,用 &xxx 或者 do xxx 来引用。

实参用括号的传入,(&xxx(1, 2, 3)),形参不列出,在子程序里用 @_ 来引用传入的实参。

局部变量有两种, my($xxx) 的变量自在本子程序内有效。 local($xxx) 的变量在本子程序和下级的子程序内有效。

用变量和数组混合做为参数,传给子程序时,要小心有可能传到 @_ 的时,会被重组。

传参数的时候,也可以传地址,这时候,子程序里改变的变量会影响外部。

perl5里有3个预设的子程序,BEGIN、END、AUTOLOAD,这点又有点像awk。AUTOLOAD 是在找不到子程序的时候被调用。

关联数组,就是用任意变量类型做下标的数组,用 %变量名表示,可以用 foreach $key (keys(%hashlist)) 来遍历。这其实就是python的dict。 不过其 sort keys 不知道是什么语法。。。

%fruit = ("apples",17,"bananas",9,"oranges","none");
和这个等效:
%fruit = ("apples"=>17,"bananas"=>9,"oranges"=>"none");
 
可以先数组,再关联数组:
@fruit = ("apples",17,"bananas",9,"oranges","none");
%fruit = @fruit;
反之亦然:
%fruit = ("grapes",11,"lemons",27);
@fruit = %fruit;
不过@fruit可能变成 ("lemons",27,"grapes",11)

关联数组可以直接赋值增加,用 delete 函数删除。 (“lemons”,27,”grapes”,11)

keys 对应的是 values,可以取出所有的值。

可以用each更好地循环关联数组:
%records = (“Maris”, 61, “Aaron”, 755, “Young”, 511);
while (($holder, $record) = each(%records)) {
# stuff goes here
}

$~ 是个系统变量,用于指定打印格式。

@<<< 左对齐输出 尖尖的个数,就是占的位数。 @>>> 右对齐输出
@||| 中对齐输出
@##.## 固定精度数字
@* 多行文本

select 可以改变缺省文件变量,这样就可以输出内容到文件了。

format 还可以设置页眉。。。

$^是页眉格式,$=是每页行数。还有个当前页的行计数器: $-

设置系统变量$|为非零值,则输出到文件的时候不使用缓冲。

内置了一套完整的文件处理函数,基本上和linux命令是同名的,用法也类似。比如: read/getc/mkdir/readdir/rmdir/rename/link/unlink/chown/stat 等等。

perl和C类似,存在指针,也可以叫“引用”。和C的&取地址符类似的是 \ 地址可以指向所有的类型,包括子程序。

perl也是面向对象的──类是一个Perl包,其中含提供对象方法的类。方法是一个Perl子程序,类名是其第一个参数。对象是对类中数据项的引用。

与包的引用结合,可以用单引号(‘)操作符来定位类中的变量,类中成员的定位形式如:$class’$member。在Perl5中,可用双冒号替代单引号来获得引用,如:$class’$member与$class::$member相同。

一个perl程序可以用package切分成很多个“包”,各包之间有独立的命名空间,而且程序可以随时在包之间来回切换。

perl里有两个和python的import类似的语法,require和use,require更像C的宏替换,use更像import。然后和 sys.path 类似的数组叫 @INC。

还有 cpan 很强大~

Google Storage

Google Storage是一个Google旗下的云存储服务,其数据存于美国的数个数据中心。主要面向开发者,免费提供100G的空间和300G的流量,当然,如果你愿意出点钱,可以获得更多。但是目前还处于测试阶段,不能直接注册,可以在这里申请,运气好的话,过几天就会收到试用邀请了。
我有幸获得了试用资格,体验了一下,就在这里记一下感想。

首先,Google Storage把所有存在上面的数据都放在一个个的“Bucket”里面,而这个bucket的名字,是所有用户共享的,也就是说,我建了个叫bones的bucket以后,其他人就不能再建这名的bucket了。
然后bucket里,就是一个个的object了。也就是说数据其实只有 bucket/object 两层,并没有常见文件树的嵌套目录结构。幸好object的名字可以带斜杆,而且web操作上也确实可以用带斜杆的object name来模拟目录结构。

其实,Google Storage采用Key/secret对的形式来进行权限管理,一个google账号可以同时建立5个Key/secret对。这样,在保证安全性的同时,也最大程度地提供了便利性。
权限这块,好像还可以把某个bucket的权限开放给指定的用户和组(就是google group),这个要用下面介绍的 GSUtil。

另外,Google Storage还提供了一个python写的命令行工具GSUtil,不过只有linux版和mac版,当我windows下安个cygwin还是可以跑的,呵呵。安装这个工具也很方便,直接下载解压到任意目录,然后配置一下环境变量,让系统能找到gsutil及相应的库就可以了,详见这里
首次运行gsutil,程序会让你输入Key/secret对,你把web上生成的信息输入进去,就可以使用了。
目前,使用这个工具可以建立/删除 bucket和object,以及上传或重命名文件;还可以用于设置权限等。

就玩了这么多,不过它还有个python的开发库,应该是可以重点研究的,如果能写个东西把这100G空间挂载到本地目录,应该还是蛮好玩的,呵呵。

个性鼠标


这其实是一个鼠标,前几天在网上无意中看到的,觉得挺有意思,就买了来。
刚拆包的时候,感觉第一印象是做工很一般,不过想想才15块钱,也差不多就这样了吧。
试用了一下,目前感觉还不是很习惯,呵呵,左右键还可以,但是要在鼠标移动的时候双击之类的,就会有点困难了,而且移动的时候经常定位不准。
不过也有个好处就是打开一个很长的网页以后,手可以脱离桌面来操纵滚轮,这点不错。
另外,这个滚轮没法按下,这对win可能没啥,但对linux来说,就无法简单地粘帖了。。。幸好同时按下左右键这个操作还算比较方便,弥补了一下。
另外,虽然宣传说可以边用鼠标边打字,但是其实一个手指被套牢以后,打字还是会很别扭的。
为了试试可用性,特意用这鼠标去win下打了局魔兽(冰封王座,不是魔兽世界),以我这极菜的水平,还是可以勉强打赢一个简单的电脑,哈哈,就说明这个还是有潜力的。
再贴张使用时候的图:

虽然这玩意不算很完美,但是多少体现出一种创新吧,还是蛮赞的~
多一些这种个性产品,生活也会更美好的。

买了个硬盘转接器

之前在淘宝上买了一个硬盘转接器,昨天到货了,今天试了了一下,感觉还可以。
我买的是UNITEK的Y-1031,本来想拍个图传上来的,结果发现相机扔老家了以后,身边居然没有一个可以拍照的设备,呃,看来得买个新手机了?
不过好在现在有搜索引擎,拿型号随便一搜就有图片了,所以也省得我拍了。

还是说说使用感受:这玩意的特点是小巧,然后支持2.5寸和3.5寸的IDE以及SATA接口的设备,包括硬盘和光驱之类的。
现在好了,我可以把压箱底的80G大硬盘拿出来做/home的全量备份了,哈哈。还有下回买个1T的盘,放视频文件之类的大家伙。因为刻录的光盘实在太多了,我的光盘包都要爆满了,是时候换种存储方式了。
不过,在我看来,这个并不适合当移动硬盘,虽然转接器不大,但是带个电源加上硬盘,又都是外置的,移动用的话,不方便也不稳定。还是比较适合备份。

另外,全量备份的/home,因为涉及隐私(我倒是没有什么艳照,但不少密码都是明文保存的呢),然后硬盘的丢失概率又大些,所以采用了加密分区,关于这个加密分区,等我下文仔细说说吧~

这个是80G老硬盘的读写速度测试图,呵呵:

启用新域名

我,是个怀旧的人,用过的东西都不怎么舍得扔掉,所以,换域名对我来说,是要做蛮久的思想工作的。
但是,由于众所周知的原因,用着祖国母亲的cn域名,总是让我觉得有种压迫感和不安。
这种不安在我的域名已经部分获得了GFW认证之后,达到了前所未有的程度。
于是,无奈之下,开始思考其他域名:虽然老域名还不致于被DNS污染之类的,但是我总得有个准备吧。
现在,我准备好了,一个全新的域名隆重登场了:luy.li,欢迎大家访问。
不过,由于我还是怀旧,原来的 li2z.cn 我也会继续使用,希望有一天,能有一个新的组织来管理天朝的cn后缀域名。

简单说说WP换域名的步骤,其实还是挺简单的,在网络提供商那里设置好域名指向以后,应该就可以用新域名访问主页了;
然后在后台的“设置”那里修改博客地址那项,各页面的用久链接就应该正确指向新的域名了;
但是数据库里,经常还会有写在内容里的内部链接,对于这种可以用命令行登录mysql用以下语句搞定:

UPDATE wp_posts SET post_content = REPLACE(post_content, 'href="http://li2z.cn', 'href="http://luy.li') WHERE post_content LIKE '%href="http://li2z.cn%';
UPDATE wp_posts SET post_content = REPLACE(post_content, 'src="http://li2z.cn', 'src="http://luy.li') WHERE post_content LIKE '%src="http://li2z.cn%';
UPDATE wp_comments SET comment_author_url = REPLACE(comment_author_url, 'http://li2z.cn', 'http://luy.li') WHERE comment_author_url LIKE 'http://li2z.cn%';

执行完这个,就算是搞定了吧。剩下的就是社会工程学范畴的工作了,比如通知朋友修改你的友链地址等等。
当然,我不知道这样会不会影响页面PR或者搜索引擎收录之类的,不过我不是很关心这个,一是由于做为一个个人笔记性质的blog,这些没啥意义;二是由于原域名短期内还是可以访问的,应该也影响不大。

PS:推荐的RSS地址不变,还是:http://feeds.feedburner.com/bones7456

bones7456 version 2.0 released!

好消息~ 在经过长达10天的跳票以后,我们终于迎来了 bones7456 version 2.0。
鼓掌~~~ 撒花!*★,°*:.☆\( ̄▽ ̄)/$:*.°★* 。
以下是 screenshot 一枚:

其实这应该是昨天下午的消息,也就是距bones7456第一版本发布整整26年的日子(农历纪年),哈哈。
不过,由于最近上网的时间很不固定,所以现在才发文~~