如何把FaceBook和Twitter显示给中国大陆用户

本文以WordPress环境为例
首先,请参照全部中国大陆IP段获取中国大陆IP信息
然后,安装好Exec-PHP插件
查看你的FaceBook代码,以我的为例:

1
<!-- Facebook Badge START --><a href="http://zh-tw.facebook.com/ksj32750" target="_TOP" style="font-family: &quot;lucida grande&quot;,tahoma,verdana,arial,sans-serif; font-size: 11px; font-variant: normal; font-style: normal; font-weight: normal; color: #3B5998; text-decoration: none;" title="Peter Chang">Peter Chang</a><br/><a href="http://zh-tw.facebook.com/ksj32750" target="_TOP" title="Peter Chang"><img src="http://badge.facebook.com/badge/100001562501152.221.1559676673.png" width="120" height="252" style="border: 0px;" /></a><br/><a href="http://zh-tw.facebook.com/badges/" target="_TOP" style="font-family: &quot;lucida grande&quot;,tahoma,verdana,arial,sans-serif; font-size: 11px; font-variant: normal; font-style: normal; font-weight: normal; color: #3B5998; text-decoration: none;" title="建立你的名片貼!">建立你的名片貼</a><!-- Facebook Badge END -->

我把它砍得只剩下:

1
<a href="http://zh-tw.facebook.com/ksj32750" target="_TOP" title="Peter Chang"><img src="http://badge.facebook.com/badge/100001562501152.221.1559676673.png" width="120" height="252" style="border: 0px;" /></a>

也就是去掉了上面的名字和下面的无用链接。

然后在img标签的src后面添加php代码,结果如下:

1
2
3
4
5
6
7
8
9
10
11
<!-- Facebook Badge START --><a href="http://zh-cn.facebook.com/ksj32750" target="_TOP" title="Peter Chang"><img src=<?php
    if ($cn)
    {
        clearstatcache();
        if (!file_exists("$RootDir/wp-includes/images/cache/facebook.1559676673.png") || time() - filemtime("$RootDir/wp-includes/images/cache/facebook.1559676673.png") > 86400)
            copy("http://badge.facebook.com/badge/100001562501152.221.1559676673.png", "$RootDir/wp-includes/images/cache/facebook.1559676673.png");
        echo "http://zi-jin.com/wp-includes/images/cache/facebook.1559676673.png";
    }
    else
        echo "http://badge.facebook.com/badge/100001562501152.221.1559676673.png";
?> width="120" height="252" style="border: 0px;" /></a><!-- Facebook Badge END -->

直接复制是无用的,那会显示我的出来…… [#38]
请参照以上稍作修改即可。
如果不会判断用户的ip段,请参考PHP判断IP段-以大陆ip段为例

PHP判断IP段-以大陆ip段为例

大陆IP段全部中国大陆IP段

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
    $RootDir = $_SERVER['DOCUMENT_ROOT'];
    $ip = $_SERVER["REMOTE_ADDR"];
    sscanf($ip, "%d.%d.%d", $ip1, $ip2, $ip3);
    $ipv4arr = file("$RootDir/zi-jin.com/china-ipv4.txt");
    $cn = false;
    foreach ($ipv4arr as $ipv4)
    {
        sscanf($ipv4, "%d.%d.%d - %d.%d.%d", $lip1, $lip2, $lip3, $rip1, $rip2, $rip3);
        if ($ip1 < $lip1 || $ip1 > $rip1)
            continue;
        if ($lip1 == $rip1)
        {
            if ($ip2 < $lip2 || $ip2 > $rip2)
                continue;
            if ($lip2 == $rip2)
            {
                if ($ip3 >= $lip3 && $ip3 <= $rip3)
                {
                    $cn = true;
                    break;
                }
            }
            else if ($ip2 == $lip2)
            {
                if ($ip3 >= $lip3)
                {
                    $cn = true;
                    break;
                }
            }
            else if ($ip2 == $rip2)
            {
                if ($ip3 <= $rip3)
                {
                    $cn = true;
                    break;
                }
            }
            else
            {
                $cn = true;
                break;
            }
        }
    }

然后就可以根据

1
2
3
4
    if ($cn)
        //do sth for Chinese;
    else
        // do sth for not Chinese;

全部中国大陆IP段

因为为了让大陆访问者看到本博的facebook和twitter
所以先得区分大陆访问者和非大陆访问者
首先要有所有中国大陆IP地址的数据
附上APNIC网站IP段数据下载地址

http://ftp.apnic.net/apnic/dbase/data/country-ipv4.lst

写个小程序把中国大陆的ip段全部抽取出来:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <string.h>
 
int main()
{
    freopen("country-ipv4.lst", "r", stdin);
    freopen("china-ipv4.txt", "w", stdout);
    char buf[1024], *pch, outch[64];
    while (gets(buf))
    {
        if (buf[0] == '#')
            continue;
        pch = strstr(buf, "cn");
        if (NULL == pch)
            continue;
        pch = strstr(buf, " :");
        strncpy(outch, buf, pch - buf);
        outch[pch - buf] = '\0';
        puts(outch);
    }
}

大家可以直接下载已经抽取出来的china-ipv4.txt (247)

The plugin does not have a valid header.【WP插件问题解决方法】

The plugin does not have a valid header.
通常在激活插件时出现以上提示往往是插件解压缩导致多重文件夹所致。
例如,WP要到wp-plugins/plugin/下找到插件文件,而你的插件文件却在wp-plugins/plugin/plugin/下,因此导致错误

解决方法:将wp-plugins/plugin/plugin/文件夹移到wp-plugins/目录即可。

我哥在广电 – 我哥在光腚 – 经典视频

我哥在广电 – 我哥在光腚

非常经典哦!

【物理】真空中棉花和铁球哪个先落地的问题

中学教材上都会说真空中棉花和铁球肯定是一起落地,因为没有空气阻力,初速度相同,加速度相同。

后来有科学家用最先进的精密仪器测得棉花居然比铁球还先落地一点!!!虽然很细微,但确实要先落地。

他们的解释是无论是空气中还是真空中都存在一种阻力,在空气中,因为这种阻力远小于空气阻力所以往往被忽视了,但真空中这种阻力就造成了这个细微的差别。

我一开始也是不大信的,这种阻力以前从未听说过,怎么突然冒出来了?后来从一个物理题目我也有了一个假想:

物理题目是这样的,一个质量为m的木质框,框内放一个质量同样为m的木块,木块上安一个弹簧,弹簧上再放一个质量为m的木块。这样,在这个装置落下的一瞬间,木质框的加速度是3/2g,(ma = mg + 2mg)。

因此很可能棉花球的情况与此类似,因为只是在极短的时间加速度比g大,所以差别也细微。纯属个人猜想。

【物理】匀速运动的鸡蛋撞击静止的鸡蛋哪个易碎的问题

在参考书上有一道题,说有人做实验用一个匀速运动的鸡蛋去撞击一个同样的静止的鸡蛋,是静止的鸡蛋易碎

参考书上说是因为运动的鸡蛋在撞到静止的鸡蛋时,(假设静止的在左边,运动的在右边)因为里面的蛋清蛋黄的惯性会对蛋壳一个向左的作用力从而抵消一部分静止的鸡蛋向右的弹力,因此运动的鸡蛋蛋壳受到的合力小,不易碎。

下课后我马上找老师提出了异议(我知道这个问题一策起来就要很多时间,所以上课只在下面嘀咕了几句)。

1.如果左右各有物体挤压中间的物体,中间这个物体不是更易碎么?

2.静止的鸡蛋也是有惯性的,右鸡蛋撞到左鸡蛋时,左鸡蛋也会获得向左的速度,而里面的蛋清蛋黄也会因为惯性而对蛋壳一个向右的力,所以2个鸡蛋的蛋壳受到的合力还是一样大的。

老师又提出了种种假设都被我一一驳回了,最后不得不说:“嗯,这个问题,有机会到我办公室来再慢慢讨论好吧?”

呵呵,其实我有一个猜想,如果实验的结论是正确的。那么原因可能是这样的:

因为当右鸡蛋撞到左鸡蛋时,破碎什么的都会要消耗能量,所以左鸡蛋获得的运动能量要小于右鸡蛋撞过来时的能量,也就是说delta速度要小,所以受到的蛋清的作用力要小,则合力较大,所以易碎。

总之,参考书太不负责任了,也不知道这个题目是哪个“砖家”出的。

VMware安装Ubuntu出现Easy Install界面无反应

以前一直用VisualBox来虚拟Ubuntu,今天决定换VMware
但是安装好半天,卡在VMware Easy Install界面没反应了,还出现一个Login、Password的登录命令
而且Easy Install安装后是英文界面,而且不分区。
所以我觉得要禁用Easy Install
方法:
在创建的时候,选择“I will install the operating system later”(我将稍后安装操作系统”)
然后手动载入光驱即可

【Flash】加载顺序进度条优先显示问题

今天给昨天那个短片做一个进度条,结果进度条要等到影片加载完才显示 [#22] (这就没有进度条的意义了)

解决方法很简单:
1.把库中的元素“在帧1导出”去掉(可能不是帧1而是帧2、3…可以在发布设置处设置)
2.在“Loading”后面插入一帧,新建一个元件,把所有需要“导出”的内容全部拖到这一帧(可以全部选定,一次拖过来)然后把这个元件放到舞台上,并且给定一个标识符:”educer”在这一帧的动作里添加

1
educer._visible = false;

然后在下一帧就把它从舞台上删去。

问题解决了,如果无法通过ActionScript调用请检查第二步是否完成。