Archive for 9 月, 2013

疑似本博的IP也被墙了

星期一, 23 9 月, 2013

C:\>tracert lordong.pw

Tracing route to lordong.pw [198.167.136.171]
over a maximum of 30 hops:

  1     2 ms     2 ms     2 ms  192.168.6.16
  2    <1 ms    <1 ms    <1 ms  192.168.3.1
  3    <1 ms    <1 ms    <1 ms  220.248.*.*
  4     5 ms     2 ms     2 ms  112.64.252.73
  5     2 ms     3 ms     3 ms  139.226.193.25
  6    30 ms    31 ms    31 ms  219.158.97.121
  7    33 ms    35 ms    35 ms  219.158.101.34
  8     *        *        *     Request timed out.

通过ip138.com查到219.158.* IP是北京联通的,再试了电信ADSL也打不开,由此怀疑本博的IP也在域名被墙半个月后沦陷,贵裆G点真TMD多呀。。

不管它了,老子该写博的还是继续写,这博文里大多是自己技术上的积累,本来希望可以给他人在处理问题上带来些经验呢,结果贵裆这么一来反而让知识流离于墙外。

C#使用Attribute时的多语言化

星期一, 23 9 月, 2013

通常在C#中我们用PropertyGrid来实验属性页功能,然后定义一个类,把对象实例传给PropertyGrid的SelectedObject属性。

然后在属性类中定义各个属性之前我们加各个Attribute调用来实现属性页上内容,如下代码:
[DisplayNameAttribute("XXX Name")]
[DescriptionAttribute("XXX Description")]
[CategoryAttribute("YYY")]
public string Name { get {...} set{...} }

现在需要实现多语言化,但在Attribute后的括号里不能使用Resources.XXX之类的内容来实现,因为那里需要常量。

解决办法是派生这些Attribute类,重载一些函数实现:

1. DisplayNameAttribute类我们重载public virtual string DisplayName { get; }属性

2. DescriptionAttribute类我们重载public virtual string Description { get; }属性

3. CategoryAttribute类我们重载protected virtual string GetLocalizedString(string value);方法

(更多…)

Ngnix使用alias实现子目录配置

星期三, 18 9 月, 2013

我以前在Ngnix上分别把/home/www和/home/ssl目录给分配http和https子域名,只需要在Nginx配置里不同的server下指定不同的域名对应不同的root即可。

然后我用ln -s把这两个目录链到Dropbox的同步目录下,配置crontab -e让Dropbox每天同步两次整个网站的内容到服务器,参见:利用Dropbox备份/恢复个人VPS

最近遇到的问题是有时需要传比较大的文件到服务器上让别人下载,默认情况下这些大文件也会被Dropbox同步到服务器,自已本地的Dropbox目录也会同步这些内容下来,可能本地还有多台电脑多个备份,这样的结果是浪费空间和同步时间。

通过搜索找到了一些解决思路,比如从这里知道alias可以跳出root的限制,然后我把原来下载目录/home/www/down下的所有内容移到/home/down目录下,Nginx配置里加下面几行,这样再下载时就跳出root从lias指定的目录下载,Dropbox也不会再同步这些大文件了:
location /down/ {
alias /home/down/;
}

目前还碰到的另一个问题时,如果在/home/down/下放图片或php文件,通过下载域名访问这些图片或php会说文件找不到,如果放html文件则没有问题。

推荐一个开源的PHProxy

星期三, 18 9 月, 2013

PHProxy是一个网页代理的PHP源码,下载源码直接放到自有的PHP空间上即可通过浏览器使用。通过它可以实现在自己的PHP空间访问受限的目标网站,再把内存传回本地的浏览器上显示,它会把所有的链接全部替换成你部署PHProxy目录的链接,通过q变量传递该链接被加密后生成的参数,所以不会被GFW发现是访问导常网站而重置。

但还有个问题是网站内容没办法避开GFW的监测,虽然GFW不常这么做,因为此法会大大加重GFW的处理量,一般只会对特定的域名或IP做内容监测。以防万一,在部署PHProxy的地方推荐用SSL,可申请StartSSL免费一年的SSL证书。另外就是在域名根目录放一个文件名是robots.txt的文本文件,内容写下面两行,告诉正规的搜索引擎别搜索这个站点:
User-agent: *
Disallow: /

当然还有不正规的搜索引擎不遵守这个国际规范,尤其是某些国家,所以部署了PHProxy站点就不要公开使用了,私用或在可靠的熟人朋友之间使用即可。

这个PHProxy不支持视频,用来看看页面、图片就好了,想用视频就用goagent吧。

(更多…)

看图说话:天与地

星期四, 12 9 月, 2013

天与地

转自:http://bit.ly/1asQPzI

域名又被GFW重置了

星期日, 8 9 月, 2013

已经一个多月没有更新博文了,也不知道哪里又触动了贵裆的G点,昨天发现在手机上用HTTP方式无法访问博客,报“网关从远端服务器读取数据失败”,但SSL仍然正常。

回到家里在PC机上用HTTP方式访问报“载入页面时到服务器的连接被重置”,如果用IP直接访问的话没有问题,因此基本上得到域名被GFW重置的结论。

博客基于StartSSL的HTTPS访问仍然正常,因此想到是不是可以兼容http和https方式访问博客呢?

经过查看WordPress的源码并测试,在不修改配置的情况下找到了兼容的方法:

修改wp/wp-includes/option.php第88行:
[php]
if ( in_array( $option, array('siteurl', 'home', 'category_base', 'tag_base') ) )
$value = untrailingslashit( $value );
[/php]

成:
[php]
if ( in_array( $option, array('siteurl', 'home', 'category_base', 'tag_base') ) ) {
$value = untrailingslashit( $value );
if (is_ssl()) $value = str_replace('http://', 'https://', $value);
}
[/php]

即可,原理是如果是https方式访问,自动替换选项里跟网址相关的“http://”(默认值)内容为“https://”。