中国网,封天下

2007年06月28日 09:58

对GFW连续不断的抱怨,抱怨到让我觉得自己是个怨妇。可是面对一个有一个有用的资源难以访问,我除了抱怨还能做什么呢?
那么就继续抱怨吧。

今天早上,突然发现 flickr.com 首页都不能访问了,提示连接被重置,但是通过代理可以。估计是被封了。
然后又发现连大名鼎鼎的yahoo 首页也不能访问了,提示链接被重置,但是通过代理可以。估计是被封了。

GFW的黑手,已经开始扩散到知名网站了。这真是一件好事。
封掉越知名的网站,知道GFW存在的人就会越多。等到连街边卖茶叶蛋的老太太都明白什么是GFW的时候,作恶者们啊,你们的末日就来到了。
我现在倒特别希望这一天能早日到来。

BTW: 由于官方从来没有承认过GFW的存在,我只能通过自己看到的现象来推论。如果上面的推论错了,原来不是GFW干的,我也不会道歉。谁让你作恶者的形象如此深入我心。只要网络出现了问题,我第一个就会想到你。这是你们所做的一切造成的,要扭转你们的不利形象是你们自己的事,与我无关。

猛禽的blog再次被封

2007年06月26日 09:43

今天早上冷月无声突然不能访问了,报time out错误。目前已经排除DNS问题,因为所有子域名均无碍。也排除服务器问题,因为可以穿墙访问。
唯一可能的解释是 http://www.we8log.com/* 域名规则进了小黑屋。但是理由不知,因为猛禽最近并没有讨论什么不和谐的话题。GFW果然是杀人于无形呀。我不禁联想到《辛德勒名单》的一个画面,上尉无聊的时候就拿起猎枪,在楼上随意的射杀犹太人,没有标准,没有规则。那些犹太人完全不知道出了什么事,就莫名其妙的被杀死了。
我劝猛禽换一个域名算了,现在这个域名不吉利呀 /tx

UPDATE:
经猛禽确认,是IP地址进了小黑屋,这样的话换域名也没有用了。:(
UPDATE2:
原来是同一主机上的另一个用户发表了不和谐话题,导致猛禽受了牵连。

从头再来

2007年06月25日 20:48

公司的项目出了一点小状况,各种“意外”纷至沓来,突然有些没头苍蝇的感觉。经过一段时间的梳理,现在终于又理清了头绪,开始慢慢步入了正轨。
今天突然想到摄影的事情。以前总是心比天大,想拍一组惊天地泣鬼神的照片出来。然而公司的项目经历告诉我,有些事情,看着容易做着难。
如果要做一次专题拍摄,其实跟做一个项目没有什么两样:也要定主题、做脚本、做预算、定时间人员安排场地、准备设备,实际拍摄的时候还有很多细节问题等着处理。看看似乎也不难,但实际做的时候,各种问题会蜂拥而至,让你很快的淹没在种种细节当中。如果没有处理这些细节的经验,一定会手忙脚乱。
反思一下,在摄影方面,自己就像是一个连代码都还写不熟练,连程序惯用法都还不能得心应手应用的人,却想一下子从全盘考虑问题──而且,比项目管理更糟糕的是,所有的实际拍摄,不可能找到人帮忙,全部得自己动手完成。
我想我还是应该退而求其次,先把代码写熟练了再说吧。当细节不再成为项目实施的一个阻碍的时候,才有可能去做完整的项目管理。
因此,我想,我的第一步工作,应该是拍好单张照片,让光线、画面、色彩和后期的运用得心应手。然后,再去尝试全盘的问题。
从头再来吧。

[Python][图像处理]为照片加圆角边框和水印的函数

2007年06月24日 21:23

LP开店需要批量处理一些照片,于是写了两个Python脚本,方便将照片改成圆角边框和添加水印。其中的几个基础函数拿出来共享。
其中水印的代码来自http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/362879
代码运行需要PILaggdraw的支持,PIL不用说了,大名鼎鼎的Python图象处理库,豆瓣就用到了它。aggdraw这个库为绘制图形提供了更多的特性,比如支持线宽、透明度的支持,图形生成质量也比PIL自带的ImageDraw模块高了不少,我在做圆角边处理的时候,对比较小的图片做大半径圆角时,用ImageDraw会产生明显的锯齿,aggdraw就不会,而且aggdraw还可以跟PIL配合使用,非常不错,值得推荐。


#coding:utf8

from PIL import Image, ImageDraw, ImageChops, ImageEnhance, ImageFont
import aggdraw

#--------------------------------
#批量处理照片的函数
#--------------------------------

#将照片变成圆角边
def RoundCorner(image, radius):
"""
Generate the rounded corner image for orgimage.
"""
image = image.convert('RGBA')

#generate the mask image
mask = Image.new('RGBA', image.size, (0,0,0,0))

draw = aggdraw.Draw(mask)
brush = aggdraw.Brush('black')

width, height = mask.size
draw.rectangle((0, 0, mask.size[0], mask.size[1]), aggdraw.Brush('white'))
#north-west corner
draw.pieslice((0,0,radius*2,radius*2), 90, 180, None, brush)
#north-east corner
draw.pieslice((width-radius*2, 0, width, radius*2), 0, 90, None, brush)
#south-west corner
draw.pieslice((0, height-radius*2, radius*2, height), 180, 270, None, brush)
#south-east corner
draw.pieslice((width-radius*2, height-radius*2, width, height), 270, 360, None, brush)

#center rectangle
draw.rectangle((radius, radius, width-radius, height-radius), brush)
#four edge rectangle
draw.rectangle((radius, 0, width-radius, radius), brush)
draw.rectangle((0, radius, radius, height-radius), brush)
draw.rectangle((radius, height-radius, width-radius, height), brush)
draw.rectangle((width-radius, radius, width, height-radius), brush)

draw.flush()
del draw

return ImageChops.add(mask, image)

#加圆角线条边框
def RoundCornerFrame(image, radius, line_width, line_color, opacity=1.0):
width, height = image.size

draw = aggdraw.Draw(image)
pen = aggdraw.Pen(line_color, line_width, int(255 * opacity))

#注意: aggdraw对角度的解释与PIL有区别!
#aggdraw画线的位置是线的中线,因此,需要减除半条线宽
halfwidth = int(line_width / 2)
#north-west corner
draw.arc((halfwidth, halfwidth, radius*2-halfwidth, radius*2-halfwidth), 90, 180, pen)
#north-east corner
draw.arc((width-radius*2+halfwidth, halfwidth, width-halfwidth, radius*2-halfwidth), 0, 90, pen)
#south-west corner
draw.arc((halfwidth, height-radius*2+halfwidth, radius*2-halfwidth, height-halfwidth), 180, 270, pen)
#south-east corner
draw.arc((width-radius*2+halfwidth, height-radius*2+halfwidth, width-halfwidth, height-halfwidth), 270, 360, pen)

#four edge line
draw.line((halfwidth, radius, halfwidth, height-radius), pen)
draw.line((radius, halfwidth, width-radius, halfwidth), pen)
draw.line((width-halfwidth, radius, width-halfwidth, height-radius), pen)
draw.line((radius, height-halfwidth, width-radius, height-halfwidth), pen)

draw.flush()
del draw

return image


def reduce_opacity(im, opacity):
"""Returns an image with reduced opacity."""
assert opacity >= 0 and opacity <= 1
if im.mode != 'RGBA':
im = im.convert('RGBA')
else:
im = im.copy()
alpha = im.split()[3]
alpha = ImageEnhance.Brightness(alpha).enhance(opacity)
im.putalpha(alpha)
return im

#为照片加水印
def Watermark(image, markimage, position, opacity=1):
"""Adds a watermark to an image."""
im = image
mark = markimage
if opacity < 1:
mark = reduce_opacity(mark, opacity)
if im.mode != 'RGBA':
im = im.convert('RGBA')
# create a transparent layer the size of the image and draw the
# watermark in that layer.
layer = Image.new('RGBA', im.size, (0,0,0,0))
if position == 'tile':
for y in range(0, im.size[1], mark.size[1]):
for x in range(0, im.size[0], mark.size[0]):
layer.paste(mark, (x, y))
elif position == 'scale':
# scale, but preserve the aspect ratio
ratio = min(
float(im.size[0]) / mark.size[0], float(im.size[1]) / mark.size[1])
w = int(mark.size[0] * ratio)
h = int(mark.size[1] * ratio)
mark = mark.resize((w, h))
layer.paste(mark, ((im.size[0] - w) / 2, (im.size[1] - h) / 2))
else:
layer.paste(mark, position)
# composite the watermark with the layer
return Image.composite(layer, im, layer)


#为照片增加文字
def Signature(image, text, position, font=None, color=(255, 0, 0)):
"""
imprints a PIL image with the indicated text in lower-right corner
"""
if image.mode != "RGBA":
image = image.convert("RGBA")
textdraw = ImageDraw.Draw(image)
textsize = textdraw.textsize(text, font=font)
textpos = [image.size[i]-textsize[i]-position[i] for i in [0,1]]
textdraw.text(textpos, text, font=font, fill=color)

del textdraw

return image

Ubuntu创始人Mark Shuttleworth上海复旦大学见面会

2007年06月22日 19:30

Ubuntu创始人Mark Shuttleworth上海复旦大学见面会

虽然自己不会去,不过关注一下

挨踢的记者

2007年06月19日 15:09

CSDN上报道了tinyfool的事迹,却不料引来了一片骂声。

幸亏我虽然不认识tiny,但是订阅过他的blog,知道他是怎样的人。基于对他的了解,我只能感叹一声,可怜的tiny,莫名其妙的被人骂了一顿。

不过话说回来,如果我不认识tiny,看了这个报道,恐怕也免不了要冷嘲热讽一番。毕竟这报道写的的确比较恶心。说来说去还是记者坏了事。

把IT新闻写成枪文,把科技新闻写成伪科学,似乎成了某些“专业新闻”记者的专业了。

衷心的告诫这些“挨踢记者”们一句,对自己所写专业的知识做一番学习和了解,是一项基本素养。

为服务器加了带宽限制

2007年06月17日 21:08

这几天持续受到迅雷骚扰,终于决定排除万难也要配置好Apache的带宽限制功能。
Google了一番之后发现原来Ubuntu有现成的包,叫libapache2-mod-cband,兼有限制带宽和并发数的能力。
于是赶紧apt-get下来,然后打开虚拟站点的配置文件,加入一句:
CBandRemoteSpeed 50kb/s 3 3

限制了每个用户带宽50kb/s,每秒请求数3和每秒连接数3。
重启Apache之后,用FlashGet测试了一下,果然只能同时连上三个连接,其它的连接会报503错误。

不知道这样对迅雷有没有作用,得观察之后才有结论了。

人民公园、荷花、莎朗斯通

2007年06月16日 18:50

忙了快两个星期了,不知道哪天是个头。今天抽空跟猛禽、Vanish一起去人民公园拍了荷花,算是对心情的一种调节。
天气不算太好,有点阴。为了呈现荷花通透的效果,加了2/3的曝光。不记得有多久没有使用手上这支长焦镜头了,今天又拿起来,有种久违了的感觉。不过毕竟有些陌生了,很多照片都有些对焦或手抖的问题。
回家之后稍微调了调曲线。我向来不反对后期,用原片直接出图,在我看来要不是为了炫耀器材,要不就是对结果的不负责任,并不是十分可取。

IMG_6584

IMG_6600

IMG_6605

IMG_6590

IMG_6619

IMG_6645

拍到一半的时候,Vanish突然跟我说前面有两个人长得很像黑社会。我一看,他们带着安全人员常用的监听耳机,于是就说,这两个应该是保镖,难道有大人物在我们附近?果然,Vanish很快认出,离我们不远的地方,站着的就是莎朗斯通。
于是赶紧跑到她对面开始啪啦啪啦的按快门。莎朗斯通比银幕上看起来苍老很多,不过气质依然。我们看到一共有三个保镖,职责分明,一个是贴身站的,长得有点像Matrix里的Smith,习惯是摸右手的戒指。一个离开大约几米远,长着一副东欧面孔。还有一个黑人,离开大约十多米的距离。(特别声明,只是现场顺便观察的结果,并没有特地调查的意思-_-)

莎朗斯通也在拍荷花,用的机器是Nikon D80。注意一下后面那个弯腰闭眼做出猥琐动作的——猛禽 /tx
Sharon Stone

气质犹存。注意背后保镖的手部动作。
Sharon Stone

莎朗和她的贴身保镖,再次注意他的手部动作。
Sharon Stone

2号保镖。我们在拍摄的时候他跑过来跟我们说了一句中文:“拍一张就够了”,吓了我们一跳。之后我们继续拍的时候他不停的朝我们看。不过我们已经离得很远了,应该没有太过分吧。
IMG_6632

3号保镖,带着安全人员常用的监听耳机。我发现这几个保镖个个都是帅哥。
IMG_6634

最后来几张花絮。

漂亮的外国小女孩
IMG_6609

一个女孩子正在玩水。把水滴在荷叶上,水珠又纷纷落入池中。
IMG_6646

最后曝一张Vanish
Vanish

2007年06月13日 21:54

在火星,
很忙,
晚上mail联系。

可恶的迅雷

2007年06月10日 23:42

我的服务器上存放了自己的LP的两个站点。今天晚上突然发现我的网站上不去了,甚至用内网地址也不行。而ssh仍然可以登录。
首先想到的就是服务器流量过大。因为LP的网站上放了一个相册,这几天LP在一些比较大的论坛里发帖时引用了里面照片,我怀疑是这些论坛巨大的访问量拖垮了服务器。于是重启apache服务,并让LP修改帖子改为使用外部的链接。谁知重启后不到2分钟立刻又不能访问了,再大的论坛也不可能有这样夸张的流量。想到这里我不由得惊出一声冷汗:不会是谁对我这台不起眼的服务器发起攻击了吧?
赶紧停掉apache服务,然后开始检查日志。日志最后的一大串类似访问引起了我的注意,它们都访问了LP网站某个临时目录下的同一个文件。赶紧问LP有没有把这个地址给过别人,答曰有的,不过只给了一个人。我尝试重新开启服务器,并使用tail -f 命令监控apache日志,果然,很短的时间里就有大量的请求涌入,而且目标都是那个文件,USER_AGENT是几乎已经成为文物的Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)。但奇怪的是虽然绝大多数IP都是同一个人的,但是也有少数IP是其它地方的,但是这个地址不是只给了一个人么?
让LP问了问对方,原来对方使用的是迅雷。迅雷不仅霸道占光了我的带宽,而且使用了不属于它的USER_AGENT来欺骗服务器,更恶劣的是,即使那个人下载已经完成,连接数仍然没有减少,服务器的资源仍然被占用着。
作为临时的解决方法,我不得不删除了目标文件,并且重启了apache服务器,才让这场灾难暂告一个段落。

不得不说,这该死的迅雷。

顺便问一下行家:有谁知道Ubuntu下,apache的带宽限制或者并发数限制module?我找到了一个mod_limitipconn,但是没有编译成功。

我不会屈服

2007年06月09日 22:03

上一周因为工作的关系当了一周的火星人,偏偏上周又发生了很多值得一说的事情。事情如此多如此集中,以至于我觉得如果我逐一发表意见,会被人看成怨妇。一下子面对这么多事情,我觉得很累,所以不想多说什么了。

然而,这不意味着我会屈服。Flickr被GFW了,我的照片全部无法显示,但我不会去采用什么技巧或者换服务商让照片重见天日,而且,我会继续使用Flickr服务。我要让所有访问我blog的人都清楚的明白,看不到我的照片,不是我的问题,也不是Flickr服务太差,而是我们的真理部采用卑鄙的手段阻止了这些照片的显示。我不打算隐瞒这些卑鄙手段所留下的罪证。

想正常访问我的网站,请使用Tor

如果有不会使用的,或者不明白什么是GFW、真理部的,请跟我联系,我愿意花时间教会你弄明白这些问题。我相信,让人们明白事情的真相,比让他们看到我的照片更重要。我的MSN、邮件地址和Google Talk均为:ch.linghu@gmail.com

MyShow is back

2007年06月08日 23:08

看完了今天的《07我型我秀》,感觉真的很棒。像是回到了4年前第一次看到我型我秀的时候。

跟随型秀一路走来,经历了第一年的青涩,第二年的平淡,第三年的混乱。我曾经认为,我心目中的那个为音乐而存在的型秀已经死了。可是今天,我终于感觉到,我心中的那个我型我秀,又回来了。

在今天的舞台上,我看到了合作,看到了实力,看到了个性张扬,看到了对音乐的虔诚。而这些,正是型秀当年吸引我的根本所在。

无论以后的型秀会变成什么样子,今天这场表演,我会一直记得。

唯一的不足:最后那个点火仪式简直就是画蛇添足,还不如把时间留给王啸坤唱歌的好。

一个不是笑话的笑话

2007年06月06日 20:33

18年有多长?
它长到可以让整整一代人忘记一件大事的存在。
13个字有多短?
它短到可以让一家报社瞬间如临灭顶之灾。

这就是一个不是笑话的笑话

大家一起和谐吧

2007年06月05日 20:40

这两天忙疯了,顾不上上网也顾不上聊天,于是当了两天的火星人。
今天回地球一看,猛禽的备份站也被和谐了。带tor上去一看,原来mikeshi遭到了阉割
又看到一向沉稳的TR老大也说也想被封,突然就觉得挺凄凉的。
要不然,大家一起和谐了吧。天天向着红太阳,党叫干吗就干吗。
这社会多美好啊~。

说两句

2007年06月02日 22:18

因为订阅了一些牛人的blog,我也算是比较早关注厦门PX事件的人之一。不过我一直不想说什么,因为总觉得是厦门人在解决他们的内部事务,我作为一个局外人,除了保持关注之外,没什么可说的。
可是,自从传出六一散步的消息之后,我发现这件事的性质开始慢慢发生了变化。主要表现在政府开始封锁消息,并且有消息传出说政府已经将散步事件作为跟18年前的事件同等性质对待了──这意味着事情不再像“质询政府决策”这么简单了。
昨天,我的好友猛禽的blog(已失效,备份地址在此)因为报道了厦门散步的情况而被服务商解除了域名绑定(简单说就是blog被干掉了)。我突然觉得这件事就发生在我的身边,我已经不能算是局外人了。
因此我觉得有必要说两句。
就PX事件本身来说,原本可以没有这么复杂。政府决策有错误,这本是件十分正常的事情,但是当有人质疑的时候,政府应该做的事情,是积极回应,解释和沟通。我并不认为民众说什么,政府就应该做什么,这样的政府存在着有什么意义?但是沟通是很重要的,民众看到的是事情的一个方面,政府看到的是另一个方面,只有双方不断的交流沟通,才能将事情看得越来越完整越来越清晰。等到能够权衡出一个最终结果,这个结果就能够令双方满意。然而厦门市政府做了什么?对人大代表的提案是不理不睬,对民众的质疑是前封后堵,甚至将民众采取的实际行动定性成敌对行动。这些措施,对解决问题没有丝毫的作用,反而是将自己一步一步的推向了民众的对立面。这么做事情,要是这社会还能“和谐”,那才叫见了鬼呢。
关于猛禽的blog被干掉,我除了担心猛禽个人的人身安全之外,倒不觉得是件坏事。有身边人作为实际例子,我会更容易让更多的人清楚的明白某些人的所作所为,我会让更多的人看到被蒙蔽的真相。平民老百姓可没义务去遵守那套潜规则,我们也不是那么好惹的。想用特权来管住我们的嘴,没有那么容易的。
回到昨天和今天的散步活动。我跟猛禽聊过,我觉得这事情就到这个程度,可以了。毕竟活动本身只是一种手段而不是一种目的,最终的目的还是应该获得跟政府平等交流的权利,以及当前更重要的,解决PX建厂的问题。因此,整理出民众意向,跟政府公开平等的交流,这才是应该努力的方向。一味的散步,比较容易导致事态失控,从而让政府和民众更加对立,对解决事情反而没有帮助。

就说这些,是非对错大家自己判断。学会自己思考,才不会被假象迷惑误导。

儿童节快乐!

2007年06月01日 13:31

祝小虫有生以来的第一个儿童节快乐!





还有一些人,在这个本该开心的节日里,正在为那些令人不开心的事情而抗争:
儿童节平安,厦门 (链接已失效)
同样默默祝福他们。

UPDATE:
猛禽的BLOG已经被和谐了。这是离我最近的一个朋友出这样的事,终于让我感觉到了恐怖的气氛其实离自己并不远。政府终究还是动用了自己的特权来控制民间的声音,不过我想说,民间的力量比你们想像的要大得多,想控制?没那么容易。备份版请访问这里

不过还是希望猛禽能注意自己的人身安全
Design downloaded from free website templates.