Erning.write()

Reloading

Firefox Configuration

Generated: Fri Jul 14 2006 07:40:33 GMT+0800 (CST)
User Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060710 Firefox/1.5.0.4
Build ID: 2006071015

Enabled Extensions: (19)

  • Adblock 0.5.3.043
  • Adblock Filterset.G Updater 0.3.0.4
  • Add N Edit Cookies 0.2.1.0
  • Bookmarks Synchronizer 3 1.0.2
  • ColorZilla 0.8.2
  • CuteMenus – Crystal SVG 1.2
  • DOM Inspector 1.8.0.4
  • FlashGot 0.5.9.995
  • FoxyProxy 1.0
  • Greasemonkey 0.6.4
  • Header Monitor 0.3.4
  • Html Validator 0.7.9.3
  • Live HTTP Headers 0.12
  • MeasureIt 0.3.5
  • Mouse Gestures 1.5
  • MR Tech Local Install 5.2
  • NoScript 1.1.4.1
  • Tab Mix Plus 0.3.0.5
  • Viagra 0.2.0.1
  • Web Developer 1.0.2

Installed Themes: (1)

  • Firefox (default)

Installed Plugins: (6)

  • Google VLC multimedia plugin 1.0
  • mplayerplug-in 3.21
  • QuickTime Plug-in 6.0
  • RealPlayer 9
  • Shockwave Flash
  • Windows Media Player Plugin

Java String

挺无聊的题目真的难倒不少人,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Hello {
    public static void main(String[] args) {
        String s = "123";
        System.out.println(s);
        m1(s);
        System.out.println(s);

        int i = 123;
        System.out.println(i);
        m2(i);
        System.out.println(i);
    }

    private static void m1(String s) {
        s = "321";
    }

    private static void m2(int i) {
        i = 321;
    }
}

运行结果是什么?

Dynamic DNS-DIY

宿舍的宽带好,写了一个简单的python脚本,自动更新域名解析到动态的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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/env python

import cookielib
import urllib
import urllib2
import time
import sys

def ddd_checkip():
    response = urllib2.urlopen("http://www.dragonsoft.net/checkip.php")
    return response.read()

def ddd_hello(opener):
    return opener.open("http://www.dns-diy.com/skin.aspx?skin=api")

def ddd_login(opener, username, password):
    request = urllib2.Request("https://www.dns-diy.com/api/login.aspx")
    params = urllib.urlencode({"username":username, 'password':password})
    request.add_data(params)
    return opener.open(request)

def ddd_logout(opener):
    request = urllib2.Request("http://www.dns-diy.com/api/logout.aspx?immediately=yes&invalidate=yes")
    return opener.open(request)

def ddd_update_rr(opener, id, name, type, data, aux, ttl):
    request = urllib2.Request("http://www.dns-diy.com/api/zone_rr_update.aspx")
    params = urllib.urlencode({"id":id, "rr_name":name, "rr_type":type, "rr_data":data, "rr_aux":aux, "rr_ttl":ttl})
    request.add_data(params)
    return opener.open(request)

#
#
#

DEBUG = 5
SLEEP_SECONDS = 600

USERNAME = "swanpan.com"
PASSWORD = "secure"
RR_ID    = "secure"
RR_NAME  = ""
RR_TYPE  = "A"
RR_DATA  = "127.0.0.1"
RR_AUX   = "0"
RR_TTL   = "5"

def ddd_process():
    if (DEBUG > 0):
        print "[%(time)s] updating %(host)s.%(zone)s (%(ip)s) ..." % \
            {"time":time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), \
            "host":RR_NAME, "zone":USERNAME, "ip":RR_DATA}

    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))

    response = ddd_hello(opener)
    if (DEBUG > 5):
        print "HELLO"
        print response.read()

    response = ddd_login(opener, USERNAME, PASSWORD)
    if (DEBUG > 5):
        print "LOGIN"
        print response.read()

    response = ddd_update_rr(opener, RR_ID, RR_NAME, RR_TYPE, RR_DATA, RR_AUX, RR_TTL)
    if (DEBUG > 5):
        print "UPDATE"
        print response.read()

    response = ddd_logout(opener)
    if (DEBUG > 5):
        print "LOGOUT"
        print response.read()

    if (DEBUG > 0):
        print "[%(time)s] Finished!" % \
            {"time":time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())}

while True:
    try:
        ip = ddd_checkip()
        if (RR_DATA != ip):
            RR_DATA = ip
            ddd_process()
    except:
        if (DEBUG > 4):
            print "Unexpected error:", sys.exc_info()[0]

    time.sleep(SLEEP_SECONDS)

Free WiFi

需要离公司进一点,搬了宿舍,宽带还没有安装好,上网就成了问题。但是我查了一下,无线网络的用户可真多阿,随便找了几个没有设置密码的连接就上来了;–)。而且有的用户的ap/router的管理密码都还是缺省的。


阳台上无线信号好的多了


有两个无线网卡(一个内置、一个挂在阳台上)的笔记本做NAT服务。


自己房间里的无线局域网用这个AP


这样在工作台上的机器无线信号就很好了,上网顺畅;–)

在阳台上的效果要比室内好多了,比如下面的list清单。

fontconfig.properties

如果你在Linux下的jdk1.5程序中文显示有问题(比如Intellij IDEA),可以把下面的文件复制到”$JAVA_HOME/jre/lib”目录下,文件名是fontconfig.properties。(注意最后一行中文字体的位置)

爱因斯坦写汉字

这个爱因斯坦在黑板上写字的站点蛮好玩的,可惜他写不出中文来。正好周末,我来教教他好了。然后就也做了这么个玩具。

爱因斯坦写汉字

上苍保佑吃完了饭的人民

吃完的饭有些兴奋,上网转转看一下wordpress里关于theme编写的文档,结果http://codex.wordpress.org/无法访问。操!虽然后来找到http://www.tamba2.org.uk/wordpress/docs/可以将就一下,但是已经不兴奋了。

听听歌吧,今天的曲目是《社会主义好》、《我们走在大路上》、《社员都是向阳花》、《红旗下的蛋》、《上苍保佑吃完了饭的人民》…… 之后心情舒畅多了。你也想听听

真的不敢想要能够活着升天
只要能够活下去正确地浪费剩下的时间
这要经验还要时间
眼泪眼屎意守丹田
我们也只能这样忍受

……

请上苍来保佑这些随时可以出卖自己
随时准备感动绝不想死也不知所终
开始感觉到撑的人民吧

Ubuntu Dapper on External USB Drive

在Ubuntu 6.0.4 (Dapper Drake)下,中文粗体已经不需要额外打补丁了。OpenOffice的中文显示也正常。

另外,将linux安装在usb硬盘上也是很有趣的一件事

相关文档

中文字体的配置文件 /etc/fonts/local.conf

<fontconfig>
    <match target="font">
        <!-- check to see if the font is just regular -->
        <test name="weight" compare="less_eq">
            <int>100</int>
        </test>
        <!-- check to see if the pattern requests bold -->
        <test target="pattern" name="weight" compare="more_eq">
            <int>180</int>
        </test>
        <!-- set the embolden flag -->
        <edit name="embolden" mode="assign">
            <bool>true</bool>
        </edit>
    </match>
    <match target="font" >
        <test name="family" qual="any" >
            <string>SimSun</string>
            <string>SimHei</string>
            <string>NSimSun</string>
            <string>MingLiU</string>
            <string>宋体</string>
            <string>黑体</string>
        </test>
        <test name="pixelsize" compare="more">
            <double>11</double>
        </test>
        <test name="pixelsize" compare="less">
            <double>16</double>
        </test>
        <edit mode="assign" name="antialias" >
            <bool>false</bool>
        </edit>
        <edit name="globaladvance" mode="assign">
            <bool>false</bool>
        </edit>
    </match>
</fontconfig>

[SOLVED] Re: 一个数学问题

Subject: [SOLVED] Re: 一个数学问题
From: Zhang Erning (zhangern@china-channel.com)
Date: 8/8/2005 3:18 PM
To: tech@35.cn

hi,

多谢各位的回复。

是的,这个其实就是破解RSA的问题。只是当RSA的key很大的时候,破解需要的时 间是不可接受的。

我这个问题,A,B是常量,而且算是很小的。(可能提问的时候提示不够)

根据RSA的算法的说明
当 xB mod A = c 时,应该有
x = cr mod B

问题就是算出r

rB mod ((p-1)(q-1)) = 1
其中p,q是两个质数,p
q == A

问题就成了找p,q的,这也就是RSA里最直接的破解思路。因为A足够小。
A=179399505810976971998364784462504058921

通过Quadratic Sieve算出
p=9939430972488238699
q=18049273274048008379

B=65537
然后 modular inverse 算出
r=89126272330128007543578052027888001981

不停的google后,终于解决了。

[其实我是想写一个软件的序列号生成器,搞定了]

Zhang Erning

Hi,

有个数学问题,有数学比较好的帮我看看,或者问问,谢谢。

对下面的方程,A,B是常量, 给定一个c,求x。其中A,B,c,x都是正整数
xB mod A = c
(xB表示x的B次方,mod是模。)

A, B, c, x 都是个很大的整数,其中常亮
A=179399505810976971998364784462504058921
B=65537

其中一个解的例子是

c=316442568644203243198389073 时
x=162056862300807702758723198119182049115

这个c是通过x算出来的,我想知道,给定c能否算出x

另外,c是有特征的,c为12个bytes的integer。其中前10个bytes固定的。
比如 c = 0x 31 05 00 00 00 00 00 00 00 00 xx xx
对于给定的c,就后面两个bytes不同。

这个问题目前也可能没有好办法。就是不能在可接受的O()里通过c逆算出x。

Zhang Erning