想当摄影师的程序员

几个网站状态监视工具

你怎么知道你的网站是不是down了? 用下面的这些在线监视工具就可以知道:

基本信息

站点 检查间隔时间(分钟)
SiteUptime 30
Site24x7 60
HostTracker 30
监控宝 15
mon.itor.us 30

测试

我注册了以上5个服务, 添加需要监视的站点.
接着我倒主机上让被监视的站点返回403错误(13:02).

结果

13:09 监控宝
13:14 HostTracker
13:18 SiteUptime
13:27 Site24x7
13:47 HostTracker, 站点如果一直down, 大概每隔30-50分钟, 都会收到HostTracker发来的邮件.
没收到mon.itor.us的邮件, 估计它认为403错误并不是主机down了, 只是权限问题吧.

Update: 我把站点错误设置为500后, 收到了mon.itor.us的邮件

mon.itor.us和Site24x7好像都是在半点的时候去验证网站并发送邮件的.

Update2: 当我把网站置为正常状态后(17点27分设置为正常状态), 结果如下:
17:30 Site24x7
17:32 mon.itor.us
17:42 监控宝
17:49 HostTracker
17:56 SiteUptime

Update3: 准备在9点37将网站置成500错误, 再次测试一下
9:58 SiteUptime
10:02 监控宝
10:03 mon.itor.us
10:05 HostTracker
10:34 Site24x7

Update4: 准备在11:15的时候将网站恢复
11:20 监控宝
11:28 SiteUptime
11:33 mon.itor.us
11:34 Site24x7
11:48 HostTracker

总结

总体来说这几个服务都不错.
再细致的总结就懒得做了.

  • Share/Bookmark

投寒韩一票,TIME年度100

TIME杂志一年一度的最具影响力100人票选开始了,寒韩在榜,现在已经被网友无情 地顶到201个候选人的第12位。

在他前面,大多是女性,比如希拉里克林顿,沙拉佩林一类的政客,第一名是LadyGaga。虽然女士优先,我也很喜欢这些姑娘,但我觉得美国人民过得够幸福了,应该把最有影响力的位置让给我们苦难深重的中国人民一次。我们平时说话不方便,这次机会请让我们在世界最著名的刊物粗粗地喊一嗓子。

何况是寒韩。

何况我非常想看看,当他们看到寒韩当选世界年度最有影响力人物时的嘴脸。

何况投票过程特别简单,谁都能做到。

何况我还作了下面这个手把手投票指导指南。

一。首先,进入以下 这个网址

http://www.time.com/time/specials/packages/article/0,28804,1972075_1972078_1972568,00.html

二。看图 一

图一:这就是韩寒的页面。不知道谁选的照片,这是我目击过最丑的一张。不 过对中国人来说,哪张都一样,对外国人来说,也一样。反正他是要得第一的。

图二:请把目光和你的鼠标移动到这个位置。

图三:请用你的鼠标,把滑动条拉到100,意思是你认为这哥们儿拥有最大的影响力。最后统计数值会用大家投票的平均数。如果你看到图像和本图不一样,建议快换浏览器,推荐IE。

这一点非常重要,因为如果弄错了,以为拉到1代表第1名,那就好心办了坏事儿,降低了平均值。当然这也是个使坏的方法,比如友情提示一下,韩寒前面还有 几个人。。。不过我们完全可以光明正大的赢,你们觉得呢?

图四:填写注册码。然后点击SUBMIT,也就是提交。如果有任何问题,可能是浏览器引起的,请更换浏览器,推荐IE。

图五:成功。你看,现在的平均值是59,也就是说不少人选了1或者50,这 就是我为什么要这么手把手弄出这个教程,因为实在很容易好心办坏事儿。这也是为什么我恳求你,发动大家投票的时候,请附带这篇教程,不要自掘长城。

我不知道这个反复投票有没有意义,可能有,但是我认为最重要的是让更多的人去投,因为当我们胜利的时候,赢得就不是寒韩一个,我们都是历史的缔造者。投票的过程可 能比结果更重要。

希望大家把这一贴能传多广传多广,不用注明出处,拜谢。

每日战况0407

4月7日 韩寒 time战况,升至 第六,诸君努力。
传播到更多的网站或传播给更多的人,比自己反复点有意义的多,以韩 寒影响过的人口数量来讲,百分之一的人投一次,他就稳拿第一。

转载自: http://jayznb.ycool.com/post.4398676.html

  • Share/Bookmark

我换手机了,BlackBerry 8900,以及老婆的新手机HTC Hero

过了年,最终决定先给老婆换手机。

她那个诺基亚 7260早已属于古董机,再加上键盘也坏了,修了一次,撑不了几天。

老婆看上了HTC的Hero,这款手机也是我在《我的手机, 以及心目中的主流触摸屏手机》中比较喜欢的一款。

春节回来的第一个周末就去了火车站买到了Hero。价格比其他店里高一些,但配件应该都是原装的。值!


HTC Hero 手机全身照


手机头部


手机背面


摄像头


手机为数不多的几个按键和轨迹球


局部特写

看到老婆的新手机,我也很激动与羡慕。刚买好手机,老婆就说:我看你也打算买了吧!

被这么一说,于是某天晚上一激动,就决定第二个周末去买回来心仪已久的BlackBerry 8900。

为什么买这款呢?主要是觉得以前的手机太不稳定,正在上网,突然来电话,有时都能死机,造成漏接电话。而这次换手机就是想换个稳定的手机。

在以前的文章里提到的几款触摸屏手机,IPhone太贵,HTC Hero老婆已经买了,Palm Pre后来没关注过,BlackBerry Storm2貌似评价不高。

再加上不习惯没键盘的手机,所以就锁定了全键盘的BlackBerry。

在我能接受的价位里,有两款BB可以买,一个是8900,一个是9000。虽说型号只差了100,但是整体却各有利弊,价格相差在500左右。

8900小巧,内存256MB,不支持3G。

9000是个大块头,内存只有128,支持3G。

如何抉择是个大问题,在一阵google与论坛搜索后,最终决定要8900。3G对我来说,没什么优势,路上上网用EDGE也能接受,在公司和家里都有Wifi。

BB的价格差别很大,同样是8900,都号称全新,0通话,有1500的,有2700的。本着一分钱一分货的原则,加上Twitter上好友的推荐,觉得以2700左右的价格拿到8900,应该属于质量比较高的一种。付款之前,还要求卖家拆机看主板,确定屏蔽罩颜色正确,没有打孔,没有飞线后,才付的款。

我买的BB官方标配:一部手机,一个休眠套,一根数据线,一个线充,一副耳机,一块电池。商家又送了两张贴膜和一张2GB的Micro SD卡。


全身照


键盘部分


键盘特写,请忽略那些白色的灰尘……


手机后盖,可以看到拉丝纹理


手机右侧,依此为耳机插孔,音量调节键,右软键


手机左侧,只有一个左软键。依然请忽略那些白色的灰尘……


打开手机后盖后,可以清楚的看到电池,Sim卡,Micro SD卡

  • Share/Bookmark

介绍一款界面原型设计软件Balsamiq Mockups

给别人展示软件/网站功能的时候,如果仅用干枯的文字是没有感染力的。
如果用Photoshop做一套图出来又比较费时,因为需要画很多控件。
如果用纸和笔画图,效果应该是很好的,但是不利于以后的修改与保存。

在别人的介绍下,我找到了Balsamiq Mockups这款软件。

先说说它的优点:

  • 拥有独立的客户端和Web客户端,任何时候都可以方便的画线框图。
  • 跨平台支持:基于Adobe Air的程序,在Windows,Linux,Mac上都能很好的运行
  • 支持中文
  • 内置的控件很多

再来说说它的缺点:

  • 基于Air的程序,某些时候反应比较慢。尤其是拖动一个元素松开鼠标后,都要顿一下。
  • 没有中文界面。当然这对于很多人来说也不是问题。
  • 缺少一些常用控件,如分页等。

下面是我用这款软件画的线框图。点击查看原图。


首页


作品列表页


详细页

Balsamiq Mockups是收费软件,下载地址是http://www.balsamiq.com/products/mockups
对于这款软件,价格是$79,但如果在技术Blog上写一篇宣传文章,即可以免费获得这款软件。
对于公司来说$79根本不成问题,个人使用的话,还是写一篇介绍文章吧。

  • Share/Bookmark

PHP substr 截取 UTF8字符串乱码的解决

PHP的substr方法可以按照字节来截取字符串, 对于英文来说是没问题的. 因为一个英文字符只占一个字节.
但是对于截取UTF8编码的中文就会存在问题.
比如:
var $str = ‘我爱twitter哈哈’;
echo substr($str, 0, 1);
就会出现一个乱字符, 因为在php中, utf8编码的中文是占3个字节, 单单只取一个字节肯定是不行啦.
如果: echo substr($str, 0, 3)就会出现”我”
echo substr($str, 0, 9) 会出现”我爱twi”

在中英文混排的时候, 这个函数就显得无能为力了.

google了一下, 发现很多人写了替代方法, 比如自己去实现一个substr, 里面写循环.
这样肯定效率低下, 直接用substr的复杂度是1, 而自己写循环, 复杂度就是n了.

后来找到了Wikipedia的条目, 发现原来3字节的utf8编码是有规律的.
一个非英文字符的3-bytes utf8 编码, 总是以224-239之间的char code开头的, 这就好办了.
思路是这样的:
先用substr截取, 判断截取结果的最后一位是不是在224-239之间, 如果是, 就说明目前取到了3-byte utf8编码的第一位, 那么只需要把计划截取的长度-1即可.
如果截取结果的最后一位之前一位在224-239之间, 就说明目前取到了3-byte utf8编码的第二位, 只需要将计划截取的长度-2即可.

下面是代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function csubstr($string, $beginIndex, $length){
    if(strlen($string) < $length){
        return substr($string, $beginIndex);
    }
 
    $char = ord($string[$beginIndex + $length - 1]);
    if($char >= 224 && $char <= 239){
        $str = substr($string, $beginIndex, $length - 1);
        return $str;
    }
 
    $char = ord($string[$beginIndex + $length - 2]);
    if($char >= 224 && $char <= 239){
        $str = substr($string, $beginIndex, $length - 2);
        return $str;
    }
 
    return substr($string, $beginIndex, $length);
}
  • Share/Bookmark

How to: Implement Dynamic Route in CakePHP

I’ve found a method to implement Dynamic Route in CakePHP.
If we develop a CMS program using CakePHP, we often let people to define their menu code. The menu code basically is the URL path.
For example: An admin create a menu named ‘Milk Product’, and give this menu a code ‘product’.
He wish to access this menu via /product

So we can add a static route in routes.php
Router::connect(‘/product’, array(‘controller’ => ‘product’, ‘action’ => ‘index’));

But one day, he want to change the menu code from ‘product’ to ‘milkproduct’? What to do then? Ask the site admin to edit the routes.php? Of course not.

We can use the code below to resolve this problem.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$menus = '';
Cache::delete('routemenus');
if($menus = Cache::read('routemenus') === false){
    echo 'load from db';
    $menusModel = ClassRegistry::init('Menu');
    $menus = $menusModel->find('all', array('conditions' => array('parent_id' => '1')));
    Cache::write('routemenus', $menus);
}
 
foreach($menus as $menuitem){
    Router::connect('/' . $menuitem['Menu']['code'] . '/:action/*', array('controller' => $menuitem['MenuType']['code'], 'action' => 'index'));
}
 
Router::connect('/', array('controller' => 'homepage', 'action' => 'index'));

We have 2 menu related tables: menus and menu_types.
Their structure as belows:

menus
    id
    menu_type_id
    parent_id
    lft
    rght
    code
    name
    created
    modified

menu_types
    id
    code
    name
    created
    modified

The code in menu_types means the controller name, and the code in menus means the path.

  • Share/Bookmark

我的手机, 以及心目中的主流触摸屏手机

我的手机是07年12月买的, 水货Nokia E70. 当时用的手机是Siemens 2128, 由于没用过智能机, 对智能机也不是很了解, 只是知道它可以安装软件. 于是就选择了带有全键盘的E70.

但是随着使用上的深入, 我发现这个手机有很多问题:

  • CPU速度低, 对整个机器影响最大. 看条短信都需要5-10秒钟的时间. 运行Gmail的手机客户端都比较慢, 刷新邮件列表也是.
  • 可用内存小, 在我做优化后, 开机内存为19M, 但是运行了一段时间后, 可用内存就变到10M左右. 10M的内存一般只能开一个程序, 要听音乐就不能用Opera. 更别提一边Opera, 一边MSN了.
  • 系统不稳定. 因为系统不稳定, 所以我从2.0中文版升级到了3.0英文版, 没想到3.0比2.0还不稳定. 有时死机, 有时重启. 有时来个电话都能死机.
  • 手机屏幕小, 虽然分辨率到了352*416, 但是2.2寸的屏幕实在是太小, 看起来比较费劲.

我平时用手机主要做以下事情:

  • 浏览网页, 主要用Opera Mini
  • 上MSN, QQ, 飞信, Skype
  • 收发邮件, 用自带的邮件软件和Gmail客户端
  • Twitter, 用Gravity
  • 听音乐,用 OggPlayer
  • 拍照
  • 地图, 定位, 用Google Map
  • 看书, 用掌上书院
  • SSH, 用Putty

如果我的手机屏幕大, 并且性能高, 我应该会做以下的事情:

  • 视频播放, 以前看过, 但是屏幕小, 看起来不舒服
  • 股票, 只是一个计划中的功能, 还没涉及这一块
  • 游戏, 没怎么装过, 而且感觉用那易坏的摇杆玩游戏, 我很心疼

下面说说我心目中的理想手机应该是什么样的:

  • 原生上网能力(能通过GPRS和3G上网)
  • 支持Wifi
  • 能浏览网页, 最起码能支持大多数的网页. 如果能对Javascript提供完整的原生支持就更好了. 最好能支持Ajax.
  • 要有一个好的邮件客户端
  • 能上MSN, QQ, 飞信, Skype
  • 大屏幕, 高分辨率
  • CPU起码500MHz以上
  • 足够的可用内存, 不会因为某个软件内存泄漏而造成内存不足. 起码开机后要有60M以上的内存吧. 我朋友的N83开机后有96M的可用内存.
  • 可以安装的软件多, 社区活跃
  • 能和Google同步联系人, 日历等
  • 音乐, 视频播放能力. 最好能支持FLAC, APE等格式的音乐, 以及高分辨率(相对手机屏幕来说)电影播放能力
  • 摄像头, 起码自动对焦3M像素吧
  • 能同时运行多个程序, 让我很流畅的一边看网页一边听音乐, 还能时不时的MSN或者QQ一下
  • 大内置闪存, 内置闪存肯定比外插的TF卡要快, 而且省电
  • 支持多点触摸的触摸屏

下面是最好能拥有的功能:

  • 最好能插存储卡, 方便扩容
  • 最好是Linux系统
  • 最好能支持在手机里用gcc编译软件, 这样一些常用的Linux软件就可以移植到手机里了
  • 最好能有3.5mm耳机插孔
  • 最好能方便的开发手机程序
  • 最好能有实体键盘
  • 最好能支持3d游戏

目前我看上的手机分别是:

  • Apple iPhone 3G/3Gs
  • HTC Hero
  • HTC Magic
  • Palm Pre

请看我总结的表格<<我心中的主流触摸屏手机比较>>

以上几款手机各有长短:

iPhone两款主要是价格高, 但是功能非常全面. 如果抛开价格因素, 肯定是首选.

Pre价格适中, 操作系统是全新的. 可以很方便的开发Pre程序, 纯粹作为上网手机/商务手机来说是个非常好的选择. 但是目前的系统不支持3d游戏, 不支持java程序, 这样可用的软件就非常少. 而且CDMA2000的手机需要烧号, 比较麻烦. 期待其GSM版的推出.

Hero和Magic都是用的Android系统, 硬件配置基本相同. Magic刷Hero的Rom, 可以实现Hero一样的多点触摸功能和HTC Sense界面.

以我目前的情况来看, 如果Pre近几年不会支持Java, 不支持3d游戏, 那么我就会买Hero或Magic. 否则的话Pre是首选.

Hero和Magic硬件配置基本相同, 唯一一个硬伤是Magic没有3.5mm耳机插孔. 不过两者相差1000块, Magic的性价比还是很高的.

  • Share/Bookmark

Windows 7 英文版 SHA1大全

Windows 7的RTM出来了, MSDN上今天放出了下载. 但是我没权限下载, MSDN订阅一直是Pending状态. 所以就把SHA1奉献出来, 希望大家能下载到真正的MSDN版的Windows 7

Windows 7 Starter (x86) – DVD (English)     :5DC1457BC4B3D94097F499B15DFDB3C21DADCDF5
Windows 7 Home Basic (x86) – DVD (English)  :101574FAA17FDB430BB027271EF0A58F0E18AD47
Windows 7 Home Premium (x64) – DVD (English):336779EA6B65F63E11A609B4D021439C47AB315B
Windows 7 Home Premium (x86) – DVD (English):CC9D8220B2179E784D85BF1EA98D2EE2190D534F
Windows 7 Professional (x64) – DVD (English):50127304441A793EE51B3F501289F6599A559E9F
Windows 7 Professional (x86) – DVD (English):697FA06554502FB21D30275273B25747299C020D
Windows 7 Enterprise (x64) – DVD (English)  :A89DCE706D527206CB464EF86ACD3A3D13A332DB
Windows 7 Enterprise (x86) – DVD (English)  :C6B905E48FDB6CB5BFCA967715A64461B812D40C
Windows 7 Ultimate (x64) – DVD (English)    :326327CC2FF9F05379F5058C41BE6BC5E004BAA7
Windows 7 Ultimate (x86) – DVD (English)    :5395DC4B38F7BDB1E005FF414DEEDFDB16DBF610

点击看完整图

  • Share/Bookmark

2009年7月22号日全食

为了看日食, 我买了眼镜, 做了滤镜. 就在都准备好, 准备第二天看的时候, 晚上下雨了, 而且还不小. 这下完蛋了, 估计8成看不到了.

到AccuWeather上查了查22日天气, 发现8点是阴天, 9点开始就下雨. 这果然很有预谋, 诚心不让我看日全食.

公司考虑到大家看日全食, 特意安排早上9点50上班.

22日早上果然阴天, 不过还好, 时不时能看到太阳. 公司在徐家汇, 为了能9点50到公司, 我就把观测地点选在了徐家汇公园(就在公司楼下, 嘿嘿).

8点就到了徐家汇公园, 找张石椅坐了下来, 拿出相机准备抓拍. 公园里已经好多人了, 那场面真是红旗招展,锣鼓喧天,人山人海,鞭炮齐鸣啊.

太阳总是露脸1秒钟就消失, 好不容易才抓拍到一张, 还忘记用长焦了. 此时日食还没开始.

后来就再也没见过太阳. 拍不到日食就拍看日食的人群吧.

还有人带着电焊面罩过来看日食.

来个观测现场的全景.

之后转战徐家汇天桥. 天桥两边站满的人.

此时看到twitter上的报道, 说太阳已经被吃掉快一半了. 路灯都亮起来了.

此时已经有点下雨了, 不大. 我又准备回到徐家汇公园. 到公园后雨开始渐渐大了起来. 此时的天已经像晚上7点多了. 比较黑了.

几分钟之后, 太阳被完全遮住. 天顿时黑了下来. 可以看到这栋楼的窗户边站满了人.

还是拍同一地点. 由于下雨, 不敢到没有护栏的台阶上拍.

生光的时候, 雨就停了. 这次难得的日全食就被天气给搅了.

如果以后有时间, 一定要亲眼目睹一次日全食.

  • Share/Bookmark

DIY日全食相机滤镜(巴德膜版)

我买的巴德膜到了, 昨天晚上和老婆一起把它做成了相机滤镜, 外形跟上次做的电焊护目镜版的滤镜一样.

只是我感觉到买的巴德膜是假的.

我有700多度的近视, 当我摘掉眼镜拿着这个滤镜对着强光看过去的时候, 发现膜上有一些不均匀的地方, 比如很亮的点, 还有线等.

这个一般人不能体会, 近视患者的眼焦距较短, 所以能看清很近的地方.

今天早上我试着用相机拍摄膜的亮点等情况, 没拍成功.

如果各位有条件的话也可以模拟一下我的做法, 只是需要把筒子做的更长一点, 这样好能看清膜.

Update: 我在论坛上询问膜的情况, 有几个人说他们的膜也是这样, 但应该是真的.

老婆在帮我做镜筒

做好的成品

装在相机上的效果

这是使用滤镜拍摄的太阳

  • Share/Bookmark
Page 1 of 4412345102030...Last »