存档

‘Other’ 分类的存档

linux 下恢复 U 盘下被删除文件

2010年3月4日

我一老师的手机 sd 卡上的照片被不幸删除了,问有没有方法恢复。我找到一个叫 testdisk 的工具,成功将这些照片恢复过来,立此存照兼备忘。

安装:
sudo pacman -S testdisk
使用:
sudo testdiak
接下来按照图片直播搞定:

testdisk1

testdisk2

testdisk3

testdisk4

testdisk5

testdisk6

testdisk7

testdisk8

Other ,

贡献火星汉字几枚

2010年2月8日
Comments Off

RT
屁民们纷纷将汉字向火星接轨,作为不明真相群众中的一员,我感到压力很大,于是发扬赶英超美,不甘人后的精神,制作鸟火星汉字几枚,请各位明白真相的 ggjj 鉴定:

Other

Crubism

2010年2月3日
Comments Off

看来得给主机商加钱了

2010年1月13日
Comments Off

RT

google 撤出中国大概是确定了。幸而我博客主机在美国,而开通 ssh 只需加 70 ¥,是时候了。

Other

chrome 的泡泡翻译插件

2009年12月31日

非常酷的一个 chrome 插件,使用的是 google translate 的数据,故而不用安装乱七八糟的辞典,其主页在这里:http://code.google.com/p/bubble-translate/

安装好了以后会直接显示配置界面,从里面可以选择翻译的语种,默认按住 ctrl 键然后用鼠标在页面选中文本就会弹出一个泡泡将翻译结果显示出来(最牛的是还可以全文翻译哦,强阿!),很好玩哦,以后上外文网站就不用随时开着一个辞典了。

露个脸:

单词翻译:
抓图38
全文翻译:
抓图39

Other ,

用 shedskin 将你的 python 程序转成 C++ 代码

2009年12月30日
Comments Off

最近在用 python 写一些东西(puzzleup.com上的题啥的),python 写起来很快也很方便,但是当遇到大量数学运算的时候可能就会很慢,于是我就 google 了一下 python 加速的方法,常用的 pysco 就不用说了,这是最简单的方法,但是效果可能不是最好的,传说 pypy 能够将 python 翻译成 c/java 能代码,但是使用的过程中老是遇到错误(什么:[translation:ERROR] KeyError: ‘target’ bulabula),而且编译这个东西耗费了我 >24 h,喜特!猛回头,瞅见了 shedskin,传说这个东东能将 python 翻译成C++,抱着试试看的心情,我就安装上了,结果一试,还真的有快感诶,赫赫!

使用方法:
普通的话就直接:shedskin xxx.py 就可以了,注意 xxx.py 里面只能有数字,字母和下划线,其他滴不要(路径都不能有,刚刚没太注意,结果老是出警告:*ERROR*:./xxx.py: module names should consist of letters, digits and underscores),会在当前目录下生成一个 xxx.cpp, xxx.hpp 和一个 Makefile,完事以后直接 make 就会编译出一个可执行程序来的。为了验证这个玩意是否好使,我找了一个以前和骨头,lerosua 等童鞋一起做欧拉工程的一道运算量较大的题来做实验。
题目是:

http://projecteuler.net/index.php?section=problems&id=10

小于10的所有质数的和是 2 + 3 + 5 + 7 = 17。求小于2000000的所有质数的和。

我写了一个 python 版本(鉴于本人的 python 极菜加之有数学恐惧症,大家对该程序的运行效率不要抱太大希望,只限于能够算出答案而已):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Name:     007-xiooli.py
# Author:   xiooli
#           Email:  <xioooli[at]yahoo.com.cn>
#           Site:   http://joolix.com
# Licence:  GPLv3
# Version:  091024
 
def is_prime(prm,i):
    j=0
    while prm[j]*prm[j] <= i:
        if i%prime[j] == 0:
            return False
        j+=1
    return True
 
prime=[2]
for k in xrange(3,2000000,2):
    if is_prime(prime,k):
        prime.append(k)
print sum(prime)

然后是 lerosua 童鞋的 C 版本:

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
/*
 * =====================================================================================
 *
 *       Filename:  003-lerosua.c
 *
 *    Description:  
 *
 *        Version:  1.0
 *        Created:  2009年10月21日 11时37分49秒
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  lerosua (), lerosua@gmail.com
 *        Company:  cyclone
 *
 * =====================================================================================
 */
 
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
#define MAX 1024000
/** 简单的素数集合*/
static long long primum[MAX] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 };
 
static long int count = 10;
 
 
/** 填加10001个素数进素数数组*/
void fill_prime(long long num)
{
 
	long long i = 31;
	long int j = 0;
	for (; i < num; i = i + 2) {
		int flag = 1;
		long long m=(long long)sqrt(i)+1;
		for (j = 0; primum[j] < m; j++) {
			if (i % primum[j] == 0) {
				flag = 0;
				break;
			}
		}
		if (flag)
		{
			primum[count++] = i;
			if(i>num)
				return;
		}
		if(count>MAX){
			printf("error%d\n",count);
			exit(1);
		}
	}
 
 
}
 
int main(int argc, char *argv[])
{
 
	int i;
	long long sum=0L;
	fill_prime(2000000);
 
	for(i=0;i<count;i++)
		if(primum[i]<2000000)
			sum+=primum[i];
 
	printf("count %d \n",count);
	printf("%lld\n",sum);
	//printf("%ld\n",primum[5]);
	return 0;
}

下面正面 PK :

1
2
3
4
5
6
7
xiooli@XIOOLI> time ./010-lerosua 
count 148933                                                                                    
142913828922                                                                                    
./010-lerosua  0.83s user 0.00s system 95% cpu 0.875 total
xiooli@XIOOLI> time python 010-xiooli.py
142913828922                                                                                     
python 010_xiooli.py  19.91s user 0.01s system 93% cpu 21.191 total

咳咳,差距呀~~~(厚颜无耻的说一句,比代码行数的话,我可不差哦。。)

好了,闲话少说,今天咱是有备而来,xiooli 要祭出杀手锏了:

1
2
3
4
5
6
7
8
9
10
11
12
13
xiooli@XIOOLI> shedskin 010_xiooli.py 
*** SHED SKIN Python-to-C++ Compiler 0.2 ***                                                    
Copyright 2005-2009 Mark Dufour; License GNU GPL version 3 (See LICENSE)                        
 
[iterative type analysis..]
**                         
iterations: 2 templates: 78
[generating c++ code..]    
xiooli@XIOOLI> make 
g++  -O2 -pipe -Wno-deprecated  -I. -I/usr/lib/shedskin-0.2/lib /usr/lib/shedskin-0.2/lib/builtin.cpp 010_xiooli.cpp /usr/lib/shedskin-0.2/lib/re.cpp -lgc -lpcre  -o 010_xiooli                  
xiooli@XIOOLI> time ./010_xiooli
142913828922                                                                                     
./010_xiooli  0.53s user 0.00s system 94% cpu 0.561 total

呵呵,生成的那个 cpp 和 hpp 乱七八糟的,加之我又不懂 C++,就不列出来了。
居然比 lerosua 童鞋辛辛苦苦写的那一大堆 C 的还要快 0.2 s 多呢,呵呵,shedskin 真是做题作弊之良器也阿。

ps:相信大点的程序要用 shedskin 转 C++ 的话挺够呛的,不过,可以把 python 程序里面的运行瓶颈部分拿出来转成 C++, 于整个程序的运行效率提高应该有很大的帮助呢。另外 shedskin 不是很灵光,python 里面一些很灵活的东西要写得比较死它才容易认,反正有提示的,遇到出错再改 py 文件。

窃笑中:估计 lerosua 童鞋要郁闷了。

Other ,

让 php 和 web.py 同时工作在 lighttpd 下

2009年12月15日
Comments Off

这几天在学习 web.py,不满足于让其运行于自带的 web 服务器上,于是想将其运行在 lighttpd 下面,网络上找到的配置几乎是出自同一版本,即通过 fastcgi 将 web.py 跑在 lighttpd下的,本人对 lighttpd 的配置不熟,结果要不是 php (主要是跑 phpmyadmin 用)不能跑就是 web.py 不能跑,摸阿摸阿的弄了半天终于试对了,呵呵,现在先记录在这里,免得以后忘掉。(红色是重点):

# lighttpd configuration file
#
# use it as a base for lighttpd 1.0.0 and above
#
# $Id: lighttpd.conf,v 1.7 2004/11/03 22:26:05 weigon Exp $

############ Options you really have to take care of ####################

## modules to load
# at least mod_access and mod_accesslog should be loaded
# all other module should only be loaded if really neccesary
# – saves some time
# – saves memory
server.modules = (
“mod_rewrite”,
# “mod_redirect”,
“mod_alias”,
“mod_access”,
# “mod_trigger_b4_dl”,
# “mod_auth”,
# “mod_status”,
# “mod_setenv”,
“mod_fastcgi”,
# “mod_proxy”,
# “mod_simple_vhost”,
# “mod_evhost”,
# “mod_userdir”,
“mod_cgi”,
“mod_compress”,
# “mod_ssi”,
# “mod_usertrack”,
# “mod_expire”,
# “mod_secdownload”,
# “mod_rrdtool”,
“mod_accesslog” )

## A static document-root. For virtual hosting take a look at the
## mod_simple_vhost module.
server.document-root = “/srv/http/”

## where to send error-messages to
server.errorlog = “/var/log/lighttpd/error.log”

# files to check for if …/ is requested
index-file.names = ( “index.php”, “index.html”,
“index.htm”, “default.htm” )

## set the event-handler (read the performance section in the manual)
# server.event-handler = “freebsd-kqueue” # needed on OS X

# mimetype mapping
mimetype.assign = (
“.pdf” => “application/pdf”,
“.sig” => “application/pgp-signature”,
“.spl” => “application/futuresplash”,
“.class” => “application/octet-stream”,
“.ps” => “application/postscript”,
“.torrent” => “application/x-bittorrent”,
“.dvi” => “application/x-dvi”,
“.gz” => “application/x-gzip”,
“.pac” => “application/x-ns-proxy-autoconfig”,
“.swf” => “application/x-shockwave-flash”,
“.tar.gz” => “application/x-tgz”,
“.tgz” => “application/x-tgz”,
“.tar” => “application/x-tar”,
“.zip” => “application/zip”,
“.mp3″ => “audio/mpeg”,
“.m3u” => “audio/x-mpegurl”,
“.wma” => “audio/x-ms-wma”,
“.wax” => “audio/x-ms-wax”,
“.ogg” => “application/ogg”,
“.wav” => “audio/x-wav”,
“.gif” => “image/gif”,
“.jar” => “application/x-java-archive”,
“.jpg” => “image/jpeg”,
“.jpeg” => “image/jpeg”,
“.png” => “image/png”,
“.xbm” => “image/x-xbitmap”,
“.xpm” => “image/x-xpixmap”,
“.xwd” => “image/x-xwindowdump”,
“.css” => “text/css”,
“.html” => “text/html”,
“.htm” => “text/html”,
“.js” => “text/javascript”,
“.asc” => “text/plain”,
“.c” => “text/plain”,
“.cpp” => “text/plain”,
“.log” => “text/plain”,
“.conf” => “text/plain”,
“.text” => “text/plain”,
“.txt” => “text/plain”,
“.dtd” => “text/xml”,
“.xml” => “text/xml”,
“.mpeg” => “video/mpeg”,
“.mpg” => “video/mpeg”,
“.mov” => “video/quicktime”,
“.qt” => “video/quicktime”,
“.avi” => “video/x-msvideo”,
“.asf” => “video/x-ms-asf”,
“.asx” => “video/x-ms-asf”,
“.wmv” => “video/x-ms-wmv”,
“.bz2″ => “application/x-bzip”,
“.tbz” => “application/x-bzip-compressed-tar”,
“.tar.bz2″ => “application/x-bzip-compressed-tar”,
# default mime type
“” => “application/octet-stream”,
)

# Use the “Content-Type” extended attribute to obtain mime type if possible
#mimetype.use-xattr = “enable”

## send a different Server: header
## be nice and keep it at lighttpd
# server.tag = “lighttpd”

#### accesslog module
accesslog.filename = “/var/log/lighttpd/access.log”

## deny access the file-extensions
#
# ~ is for backupfiles from vi, emacs, joe, …
# .inc is often used for code includes which should in general not be part
# of the document-root
url.access-deny = ( “~”, “.inc” )

$HTTP["url"] =~ “\.pdf$” {
server.range-requests = “disable”
}

##
# which extensions should not be handle via static-file transfer
#
# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
static-file.exclude-extensions = ( “.php”, “.pl”, “.fcgi”, “.sh”, “.py” )

######### Options that are good to be but not neccesary to be changed #######

## bind to port (default: 80)
#server.port = 81

## bind to localhost (default: all interfaces)
#server.bind = “127.0.0.1″

## error-handler for status 404
#server.error-handler-404 = “/error-handler.html”
#server.error-handler-404 = “/error-handler.php”

## to help the rc.scripts
server.pid-file = “/var/run/lighttpd/lighttpd.pid”

###### virtual hosts
##
## If you want name-based virtual hosting add the next three settings and load
## mod_simple_vhost
##
## document-root =
## virtual-server-root + virtual-server-default-host + virtual-server-docroot
## or
## virtual-server-root + http-host + virtual-server-docroot
##
#simple-vhost.server-root = “/srv/http/vhosts/”
#simple-vhost.default-host = “www.example.org”
#simple-vhost.document-root = “/htdocs/”

##
## Format: .html
## -> …./status-404.html for ‘File not found’
#server.errorfile-prefix = “/usr/share/lighttpd/errors/status-”
#server.errorfile-prefix = “/srv/http/errors/status-”

## virtual directory listings
#dir-listing.activate = “enable”
## select encoding for directory listings
#dir-listing.encoding = “utf-8″

## enable debugging
#debug.log-request-header = “enable”
#debug.log-response-header = “enable”
#debug.log-request-handling = “enable”
#debug.log-file-not-found = “enable”

### only root can use these options
#
# chroot() to directory (default: no chroot() )
#server.chroot = “/”

## change uid to (default: don’t care)
server.username = “http”

## change uid to (default: don’t care)
server.groupname = “http”

#### compress module
#compress.cache-dir = “/var/cache/lighttpd/compress/”
#compress.filetype = (”text/plain”, “text/html”)

#### proxy module
## read proxy.txt for more info
#proxy.server = ( “.php” =>
# ( “localhost” =>
# (
# “host” => “192.168.0.101″,
# “port” => 80
# )
# )
# )

#### fastcgi module
## read fastcgi.txt for more info
## for PHP don’t forget to set cgi.fix_pathinfo = 1 in the php.ini
fastcgi.server = ( “.php” =>
( “localhost” =>
(
“socket” => “/var/run/lighttpd/php-fastcgi.socket”,
“bin-path” => “/usr/bin/php-cgi”
)
),
# for web.py
               “/main.py” =>
( (
“socket” => “/var/run/lighttpd/webpy-fastcgi.socket”,
“bin-path” => “/srv/http/main.py”,
“max-procs” => 2,
“check-local” => “disable”
) )
)

#### CGI module
cgi.assign = ( “.pl” => “/usr/bin/perl”,
“.cgi” => “/usr/bin/perl”,
“.sh” => “/bin/bash”,
“.py” => “/usr/bin/python”)
#

#### SSL engine
#ssl.engine = “enable”
#ssl.pemfile = “/etc/ssl/private/lighttpd.pem”

#### status module
#status.status-url = “/server-status”
#status.config-url = “/server-config”

#### auth module
## read authentication.txt for more info
#auth.backend = “plain”
#auth.backend.plain.userfile = “lighttpd.user”
#auth.backend.plain.groupfile = “lighttpd.group”

#auth.backend.ldap.hostname = “localhost”
#auth.backend.ldap.base-dn = “dc=my-domain,dc=com”
#auth.backend.ldap.filter = “(uid=$)”

#auth.require = ( “/server-status” =>
# (
# “method” => “digest”,
# “realm” => “download archiv”,
# “require” => “user=jan”
# ),
# “/server-config” =>
# (
# “method” => “digest”,
# “realm” => “download archiv”,
# “require” => “valid-user”
# )
# )

#### url handling modules (rewrite, redirect, access)
#url.rewrite = ( “^/$” => “/server-status” )
#url.redirect = ( “^/wishlist/(.+)” => “http://www.123.org/$1″ )
url.rewrite-once = (
“^/$” => “/index.html”,
“^(.*)$” => “/main.py/$1″
                                   )

#### both rewrite/redirect support back reference to regex conditional using %n
#$HTTP["host"] =~ “^www\.(.*)” {
# url.redirect = ( “^/(.*)” => “http://%1/$1″ )
#}

#
# define a pattern for the host url finding
# %% => % sign
# %0 => domain name + tld
# %1 => tld
# %2 => domain name without tld
# %3 => subdomain 1 name
# %4 => subdomain 2 name
#
#evhost.path-pattern = “/srv/http/vhosts/%3/htdocs/”

#### expire module
#expire.url = ( “/buggy/” => “access 2 hours”, “/asdhas/” => “access plus 1 seconds 2 minutes”)

#### ssi
#ssi.extension = ( “.shtml” )

#### rrdtool
#rrdtool.binary = “/usr/bin/rrdtool”
#rrdtool.db-name = “/var/lib/lighttpd/lighttpd.rrd”

#### setenv
#setenv.add-request-header = ( “TRAV_ENV” => “mysql://user@host/db” )
#setenv.add-response-header = ( “X-Secret-Message” => “42″ )

## for mod_trigger_b4_dl
# trigger-before-download.gdbm-filename = “/var/lib/lighttpd/trigger.db”
# trigger-before-download.memcache-hosts = ( “127.0.0.1:11211″ )
# trigger-before-download.trigger-url = “^/trigger/”
# trigger-before-download.download-url = “^/download/”
# trigger-before-download.deny-url = “http://127.0.0.1/index.html”
# trigger-before-download.trigger-timeout = 10

#### variable usage:
## variable name without “.” is auto prefixed by “var.” and becomes “var.bar”
#bar = 1
#var.mystring = “foo”

## integer add
#bar += 1
## string concat, with integer cast as string, result: “www.foo1.com”
#server.name = “www.” + mystring + var.bar + “.com”
## array merge
#index-file.names = (foo + “.php”) + index-file.names
#index-file.names += (foo + “.php”)

#### include
#include /etc/lighttpd/lighttpd-inc.conf
## same as above if you run: “lighttpd -f /etc/lighttpd/lighttpd.conf”
#include “lighttpd-inc.conf”

#### include_shell
#include_shell “echo var.a=1″
## the above is same as:
#var.a=1
# for phpmyadmin
alias.url += (”/phpmyadmin” => “/usr/share/webapps/phpMyAdmin”)

Other

捍卫打酱油的权利

2009年7月20日
Comments Off

在 picasa 就义了以后,我的博客迎来了黑白世界,所有的图片均无法显示,鉴于 GFW 剥夺了如此一个手无缚鸡之力的人的打酱油的权利,我被迫只有冒着跨省追捕的危险拖着两条羸弱的腿做贼似的和墙做艰苦卓绝的斗争。

依然是域名劫持,洋葱速度很慢。就改hosts咯,为防忘记在此记录。
添加下面文字到/etc/hosts

203.208.39.104 picadaweb.google.com
203.208.39.104 lh1.ggpht.com
203.208.39.104 lh2.ggpht.com
203.208.39.104 lh3.ggpht.com
203.208.39.104 lh4.ggpht.com
203.208.39.104 lh5.ggpht.com
203.208.39.104 lh6.ggpht.com

如此,在我的机器上就可以看 picasa 的图片了,虽然可能其他人不能看见,那我也顾不着了,先掩耳盗铃一把吧~~~~~~~~~

我闭上眼睛,看不见墙,楚门的世界里,我又可以快乐的打酱油了。

Other

qmmp 播放器

2009年7月14日

偶然见到的一个播放器,基于qt4,并且原生支持winamp的皮肤(呵呵,这个不错哦),感觉非常轻量,反应很快,支持cue和flac文件的播放,一直在找一个qt4的轻量级播放器,现在就是它了!所以今天迅速的向lrcdis添加了qmmp的支持(需要打开qmmp的mpris插件才能用)。

下面就来张她的靓照了,色狼们请尽情的流口水吧^^:

发件人 xiooli

Other

[转]Unix-Center.Net需要您的帮助

2009年7月14日
Comments Off

转自http://www.unix-center.net/?p=133
虽然没有用过几次,但是希望大家踊跃帮助,毕竟这样的好网站不多阿。

我恳请诸位花一点时间读完这篇文章,因为将有数以万计的人会从您的爱心中得到帮助。

Unix-Center.Net的目标是为研究、学习和使用各种版本的Unix和类Unix操作系统的教师、学生和工程技术人员提供一个体验和测试各种版本的Unix和类Unix系统的软硬件平台。该平台能够为所有注册用户免费提供SSH/VNC服务,MySQL数据库服务,传统的C/C++、 Java、Fortran等多种语言开发环境,基于Apache、MySQL和PHP的Web应用开发环境。简单地讲,Unix-Center.Net的注册用户可以远程登录进入多个不同的操作系统,具备自己独立的用户空间和磁盘配额,享受该操作系统上普通用户的所有权限,学习和使用各种版本的Unix和类Unix操作系统的常用命令和功能,可以将自己正在开发的应用程序上载到Unix体验中心的服务器,在不同的软硬件平台上编译和运行。

到目前为止,Unix-Center.Net所提供的操作系统包括AIX 5.3,Solaris 10,OpenSolaris 2009.04,Fedora Core 10,Ubuntu 8.04,FreeBSD 6.2,Debian Linux for MIPS。这些操作系统分别运行在IBM Power 5,Sun UltraSPARC T1,AMD Opteron,Intel Xeon,龙芯2E等不同构架的处理器上。各种各样的服务器,再加上交换机、防火墙、存储等等,Unix-Center.Net的全部设备需要整整三个机柜才能够装得下。

中国大陆的网络环境很独特。拿各个大学的接入情况来看,清华北大等高校是通过中国教育科研网(CERNET)接入互联网的,以中科院为代表的一大批科研院所访问国内网站是需要先从国外绕一大圈再绕回来的,南方相当多的高校是通过公网(网通、联通、电信)接入互联网的。由于Unix- Center.Net的主要服务对象是学生,所以选择将服务器托管在互连互通条件比较好的北京赛尔机房,不然的话大部分学生访问起来都有困难。

这个网站不是政府所设置的开放实验室,也不是任何网络公司投资的创新项目。它是我的个人网站。

做这样一个网站的缘起很简单。因为工作的关系,我注意到很多高校 -- 即使是非常好的高校 --也没有办法给学生提供一个全面的环境来学习操作系统。大部分学校的机房,运行的操作系统清一色的是Windows。极少数学校的机房可以提供一两个版本的 Unix或者是Linux操作系统,但是和市面上版本繁多的操作系统相比较,可以选择的余地是在太少。在处理器构架方面,基本上都是x86/x64处理器,学生可能听说过其他种类的处理器,但是基本上没有机会见到,更不用说是使用了。因此,我萌发了一个极其简单的想法:买一些不同构架的服务器,安装上不同种类的操作系统,托管到一个机房,开放注册账号,免费地提供SSH登录服务。我是一个急性子的人,想到的事情就要赶紧去做,于是Unix- Center.Net的雏形在2007年初上线了。我没有想到的是,在短短的时间里便有上万名用户注册到这个系统,并且对系统功能提出了更多的需求。于是我赶紧添加新的服务器,并且恳求朋友帮忙开发一些必要的程序,逐渐完善这个系统的功能。

我于2000年底硕士毕业之后,在美国工作了三年,又在中国工作了六年。在过去的两年半中,这个系统烧掉了我大部分的工资和积蓄。购买各种服务器设备的费用,大概是70万人民币;北京赛尔机房的服务器托管和带宽费用,大概是每年30万人民币。(由于Unix-Center.Net对于推广我的雇主的操作系统有很大的帮助,我的雇主曾经在我的游说之下为Unix-Center.Net提供了半年的带宽费用。但是考虑到Unix-Center.Net同时提供其他种类的操作系统,我的雇主后来中止了对Unix-Center.Net的支持。)和我同年龄的人,现在大部分都有车有房了吧。而我最值钱的资产,是在保安严密的机房中的三个机柜。

我曾经和国家负责推广Linux和开源技术的机构取得联系,也曾经和某些教育部门取得联系,希望能够得到他们的支持。但是“有关部门”的负责人听取了我的陈述之后,不约而同地摇摇头,说:“你这个事情做得很好。很遗憾我们不能够给你提供任何帮助。”我也曾经考虑过将这个网站用商业化的模式来运作,但是这个公益性平台所服务的对象大部分是穷学生和穷教师,暂时并没有盈利的空间。并且,我自认为我是一个做事的人,而不是一个做生意的人。让我自己来运营一家公司的话,赚钱的可能性并不大。

中国是一个发展中国家,我们有很多教师、学生和工程人员希望能够学习Unix/Linux系统,却又苦于没有合适的环境和条件。Unix- Center.Net存在的目的,就是给这些爱好Unix/Linux的人一个学习和练习的条件。用一个简单的数据来说,到2009年6 月底,Unix-Center.Net的注册用户接近9 万人。我不知道这么多人都在这些服务器上做什么事情,但是我相信这些服务器对他们有用。譬如说,清华大学教授操作系统课程的一位教授告诉我说他让学生们到 Unix-Center.Net来对不同的操作系统进行比较。又譬如说,我收到中国科技大学一位博士生的电子邮件,说是他利用这些服务器完成了毕业论文中比较关键的一些计算。这些有限的证言,让我坚信这个系统是有其存在的意义的。尽管没有获得“有关部门”的支持,我从来都没有想过要放弃。

坦率地说,我现在遇到了一些困难。我所在的公司,在这次经济危机中被收购了。我不能够确定将来我是否还有能力将这个系统支持下去。但是我非常希望能够维持这个系统的运行,因为它确实对很多人有用。如果您也相信这一点的话,我希望您能够帮助我将这个系统维持下去。不管是10元、100元还是1000 元,对于Unix-Center.Net的用户来说都是莫大的帮助。

如果您在中国,您可以将您的捐款通过转帐支付给我的个人银行账号:

中国银行北京市分行清华园支行
蒋清野
4563-5101-0088-4741-228

招商银行北京市分行清华园支行
蒋清野
6226-0901-0156-8117

支付宝账户
13511026844

如果您在国外,您可以将您的捐款通过PayPal支付给我的个人账号(qjiang@ieee.org),或者是通过转帐支付到我在CitiBank的个人账号:

CitiBank
FDIC Routing #: 321171184
Account Name: Qingye Jiang
Account #: 40038862963
Debit Card #:5262-2519-8546-8207

我还恳请您在捐款之后给我发一封电子邮件(电子邮件地址qjiang@ieee.org),详细说明您的个人姓名以及捐款数目,以便我定期地整理和公布捐款情况。

Other