Google SSL 被墙的临时解决办法

2010年7月27日 由 翻墙砖家 3 条评论 »

7月27日下午,我发现 Google SSL 加密搜索 能打开,但无法搜索任何东西,ping 了一下 encrypted.google.com 发现是被 DNS 污染了:

[liang@iMac: ~]$ ping encrypted.google.com PING encrypted.google.com (46.82.174.68): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 Request timeout for icmp_seq 2 Request timeout for icmp_seq 3 Request timeout for icmp_seq 4 Request timeout for icmp_seq 5 Request timeout for icmp_seq 6 Request timeout for icmp_seq 7 ^C — encrypted.google.com ping statistics — 9 packets transmitted, 0 packets received, 100.0% packet loss

尝试了下直接使用 hosts 文件来避免 DNS 污染,发现是可以的,不过不知道以后会不会连非 SSL 加密搜索一起被墙掉。。。

简单介绍方法如下:

  1. 先ping www.google.com, 得到 www.google.com 的 IP,我这里得到的是 66.249.89.99
  2. 使用文本编辑器打开 hosts 文件(windows下处于 c:\windows\drivers\etc\hosts, 如果没这个文件可以自己建立一个,注意没有后缀名),在文件末尾里面加入这么一行: 66.249.89.99   encrypted.google.com
  3. 保存退出

现在再试试搜索下,伟大的墙就这么被简单的绕过了。

不过有句俗话说道高一尺魔高一丈。又说,多行不义必自毙。

Mac 下管理窗口(最大化窗口, 贴边)利器: Cinch

2010年7月27日 由 翻墙砖家 1条评论 »

用 Mac 的都知道, Mac 下的窗口只能通过拖右下角的那个小三角来调整大小, 实在是很不方便. 我很是想不明白为什么 Mac 一直迟迟不加这个功能, 难道 Mac 的开发者从来都不需要调整窗口大小的吗??

上谷歌中文搜索 “mac os x最大化窗口”, 和上 Google.com 搜索 “mac os x maximum window”, 都能找到一大堆相关问答, 看来这个问题不是我一个人想问. 要是有机会, 我很想问问乔帮主, 什么时候能加上这个功能啊??

不过在乔帮主回答之前, 我只好自己解决这个问题了. 找来找去, 我终于找到一个非常不错的窗口管理器: Cinch. 它可以最大化窗口, 往屏幕两边平铺窗口, 你要是用过 Windows 7 的 Aero Snap , 你就会发现和 Winddows 7 的 Aero Snap 几乎一模一样. 没错, 这个软件就是在模仿 Windows 7 的 Aero Snap, 而且做得很不赖.

这款软件安装过程和其他 Mac 软件一样, 直接拖到 Applications 目录然后运行即可, 就不多说了. 这里说下使用方法. 这个软件的使用非常简单, 操作方式如下:

  • 拖住任意一个窗口, 抵住菜单栏 -> 窗口最大化
  • 抵住屏幕左边 -> 自动调整为占据左半边窗口
  • 抵住屏幕左边 -> 自动调整为占据右半边窗口

这就是这款软件的所有的功能, 很简单吧? 很方便吧?  下载地址: » 阅读更多: Mac 下管理窗口(最大化窗口, 贴边)利器: Cinch

感谢国家, 感谢 Time Machine!

2010年7月26日 由 翻墙砖家 没有评论 »

今天闲着没事, 就想改进改进前几天写的一个 Rails 程序, 在运行单元测试的时候得到了一堆错误, 检查了一下, 发现是之前装的 active_scaffold 插件导致的, 于是就直接 rm 掉了, 然后发现 public 目录里还有好多它的东西, 懒得一个一个删, 打算用 find 命令来删除掉它们, 但输入命令的时候输成了这个:

[liang@iMac: 616.im]$ find . -type dir -exec rm -fr {} \;
rm: “.” and “..” may not be removed
find: ./app: No such file or directory

然后猛然醒悟过来, 完了…., ls 了下:

[liang@iMac: 616.im]$ ll
total 32
-rw-r–r–  1 liang  staff  10011 Jul 25 22:43 README
-rw-r–r–  1 liang  staff    307 Jul 25 22:43 Rakefile


乖乖……所有目录被删除得一个不剩….

虽然 git 库里有历史, 但刚才花了一个多小时写的东西都没了 :-( , 这就是先谢国家的后果?? WTF??????

突然想起 Time Machine, 抱着一丝希望, 打开了 Time Machine, 发现恰好十几分钟前 Time Machine 作了一个快照, 赶紧还原回来….

检查了一下, 居然绝大部分改动都在! 哈哈, 看来感谢国家还是很有用的嘛!

总结:

  1. 感谢国家
  2. 感谢 Time Machine
  3. rm 很邪恶
  4. 邪恶的美帝创造出来的东西果然都是非常邪恶的

告诉你什么叫做真正的蛋疼

2010年7月22日 由 翻墙砖家 1条评论 »

有位伟人说过: 什么叫做蛋疼, 什么时候蛋疼, 以及怎样蛋疼, 都要由中国人民自己说了算, 绝不允许其他国家说三道四.

这位兄弟用实际行动告诉万恶的美帝, 这样的蛋疼, 才是真正的蛋疼, 才是中国人民真正需要的蛋疼.

绝对够疼, 说不定都熟了 …..

固若金汤的三峡大坝,固若金汤的砖家脸皮

2010年7月21日 由 翻墙砖家 没有评论 »

几十年前,一小撮掌握了真理的人不顾以杨万里教授为代表的众多水利专家(不是砖)的强烈反对,拍板决定了兴建三峡大坝 — 一个史无前例的巨无霸水利工程。当时举国都轰动了, 全国人的眼光都被牵引到三峡上来, 而世界第一大坝的头衔让中国人一提起三峡都觉得倍儿有面子, 即使它其实和自己不相干.

当年的媒体的一些动人的说法还余音未落:

  1. 抗洪能力得到质的提升, 可以抵御上万年一遇的洪水
  2. 上游水位提升, 航运能力得到极大的改善, 航运成本能降低达 37%
  3. 强大的发电能力能极大地缓解电力不足的压力, 能大幅降低电费到甚至几分钱一度
  4. etc…

然而, 从这几年的情况看来, 只看到洪涝灾害一年比一年多, 电费一年比一年贵, 砖家们的说法也是一年比一年雷人:

2003年:三峡大坝可以抵挡万年一遇洪水 http://news.sina.com.cn/c/2003-06-01/0854176837s.shtml 2007年:三峡大坝今年起可防千年一遇洪水 http://news.sina.com.cn/c/2007-05-08/085711774700s.shtml 2008年:三峡大坝可抵御百年一遇特大洪水 http://news.sohu.com/20081021/n260148246.shtml 2010年:三峡蓄洪能力有限,勿把希望全寄托在三峡大坝上 http://news.sohu.com/20100720/n273615755.shtml

» 阅读更多: 固若金汤的三峡大坝,固若金汤的砖家脸皮

哥今年三十岁,哥决定不活了(笑翻了)

2010年7月20日 由 翻墙砖家 没有评论 »
哥今年三十岁,哥决定不活了

哥今年三十岁,哥决定不活了

来源未知,sorry

去掉 Sqlite3 数据库中的前后回车换行符(newline)

2010年7月18日 由 翻墙砖家 没有评论 »

最近使用 rails 做了一个小小的小网站, 数据库用的是 sqlite3, 数据库数据是从一个 xml 文件中导入的, 有很多前导回车和末尾空行, 而页面显示的时候会自动把回车替换成 , 结果就是显示出来的内容无端端的多了很多空白, 整个页面看起来很不河蟹协调. 今天闲下来了决定把这些无用的回车换行符去掉.

不就是一个 trim 嘛, 很快进入 sqlite 命令行界面, 输入:

sqlite> update jokes set content=trim(content,’\n’);

搞定, 收工…????? 刷新页面一看, 我了个去, 不行耶~~, sqlite 不认 \n, 换成 trim(content, ‘\r’), trim(content, ‘\r\n’) 和 trim(content, ‘\n\r’) 都不行, 哥是个懒人, 不想写代码解决, 于是 google 了下, 发现有人提供这个解决方法:

x’hh’ should work, where hh are hex digits.  So if your file contained hex 0D type line breaks: UPDATE t SET essay_without_newlines = Replace(essay, x’0D’, ‘~’);

也就是说 sqlite 中可以使用 x’hh’ 这种语法来表示一个字符. 试了下 x’0D’, 不行…..再试试 x’0A’, 就好了:

sqlite> update jokes set content=trim(content, x’0A’);

流水账一笔, 没啥技术含量. 纯粹是做个备忘, 也希望对别人有所帮助.

声明: http://LiANG.eu 原创文章, 版权所有. 在保留原文来源和链接的情况下可以自由非商业转载.

Mac 下使用 dos2unix 批量转换文件格式

2010年7月17日 由 翻墙砖家 1条评论 »

在 windows 下编辑过的文件一般都会被保存为 dos 格式, 而 mac os x 和 *nix 类系统一般都是使用 unix 格式, 有些程序在打开 dos 格式的文件时会有警告甚至甚至拒绝使用. 怎么办呢? 如果少数几个文件的话可以用 vim 打开, 然后输入 :set fileformat=unix 来转换成为 unix 格式. 但如果有大量文件洒落在不同的文件夹下, 那一个一个转换那会累死人的. 这种情况下我们可以使用 dos2unix 这个实用工具来批量转换. » 阅读更多: Mac 下使用 dos2unix 批量转换文件格式

推荐一个 PHP 写的 Memcache 管理器

2010年7月13日 由 翻墙砖家 2 条评论 »

其实,查看 memcache 服务器状态的最简单的办法是直接 telnet 上去:

[liang@iMac: ~]$ telnet localhost 11211
Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
stats
STAT pid 6404
STAT uptime 8865
STAT time 1279025383
STAT version 1.2.8
……
END

但这个结果实在是太简陋了,很不直观。而且有些情况下是无法使用 telnet 连接 memcache 服务器的(比如在外网),这时候如果有一个像 PhpMyAdmin 那样的 Web 程序来管理 memcache 服务器的话,是一件非常方便的事情。

我在网上找了找,找到了这个 memcache 管理程序直接下载连接),该程序主要的功能有:

  1. 管理多个 memcache 服务器
  2. 实时查看各个服务器的内存使用状况
  3. 实时查看缓存命中情况
  4. 直接浏览缓存内容,删除指定缓存项
  5. 等等等。。。自己发掘吧

» 阅读更多: 推荐一个 PHP 写的 Memcache 管理器

PHP计算时间间隔的一个小函数

2010年7月13日 由 翻墙砖家 没有评论 »

 

如果经常上开心网之类的 SNS 的话,你可能会注意到上面的很多信息并不是直接显示信息的发布时间,而是显示成为“6分钟之前”、“4天之前”这样。这种显示方法比直接显示信息的发布时间要直观得多,对用户也更有意义。

这种显示方法需要对信息的发布时间做一些处理,这里有一个PHP函数就是用来做这件事情的。此函数接受一个DateTime或者String参数,返回该参数和当前时间的间隔。注意返回的时间间隔并不是100%的和真正时间间隔对应,而是去掉了一些不太重要的部分的结果。比如如果时间间隔是 1 年 3 个月,那么只返回 “1年3个月之前”。因为一般用户是不会关心到底是 1 年3个月零几天几小时几分钟的,因为 1 年三个月已经很长了。

function datetime_diff($datetime)
{
    $datetime = is_string($datetime) ? new DateTime($datetime) : $datetime;
    $diff = date_create(‘now’)->diff($datetime);
    $suffix = ( $diff->invert ? ‘之前’ : ‘后’ );
    $diff_str = ”;

    $years      = $diff->y ? $diff->y . ‘年’ : null;
    $months     = $diff->m ? $diff->m . ‘个月’ : null;
    $days       = $diff->d ? $diff->d . ‘天’ : null;
    $hours      = $diff->h ? $diff->h . ‘小时’ : null;
    $minutes    = $diff->i ? $diff->i . ‘分钟’ : null;
    $seconds    = $diff->s ? $diff->s . ‘秒’ : null;

    if ($years)
        $diff_str = $years . $months;
    elseif ($months)
        $diff_str = $months . $days;
    elseif ($days)
        $diff_str = $days . $hours;
    elseif ($hours)
        $diff_str = $hours . $minutes;
    else
        $diff_str = $minutes . $seconds;

    return $diff_str . $suffix;
}

使用方法:

[liang@iMac: ~]$ php -a
Interactive shell

php > echo datetime_diff(’2012-06-04 08:09:00′);                  // 1年10个月后
php > echo datetime_diff(’2000-07-08 09:10:11′);                  // 10年之前
php > echo datetime_diff(’2010-01-12 16:04:16′);                  // 6个月1天之前
php > echo datetime_diff(’2010-07-08 09:10:11′);                  // 5天7小时之前
php > echo datetime_diff(’2010-07-13 16:32:16′);                  // 59秒之前
php > echo datetime_diff(new DateTime(’2010-07-08 09:10:11′));    // 5天7小时之前
php > echo datetime_diff(new DateTime(’2010-07-13 14:15:16′));    // 2小时17分钟之前
php > echo datetime_diff(new DateTime(’2010-01-13 16:04:16′));    // 6月之前

注意:

此方法使用到了 DateInterval 类的几个 Undocumented 的属性(y, m, d, h, i, s),在以后的版本中有可能会导致兼容性问题,这里只是提供一个思路,请谨慎使用。

 

例行公事:http://LiANG.eu 原创文章,转载请保留原文链接,否则。哼哼。。。