Big Fish
Monday, March 01, 2010
Google Apps真是后妈养的
当年Apple刚发布iPhone的时候,偷偷打开了Address Book跟Google Contacts同步的功能 (要连过iPhone的机器才有这个功能,后来Snow Leopard才全面放开)。我因为帮杨爷折腾过他的iPhone (btw, 这个iPhone后来神秘失踪,加上我们家的马桶经常堵,我们都怀疑是杨爷那天失忆的时候掉马桶了,真是悲剧),所以也能用这个功能,于是就把我的Address Book跟Gmail同步了。
因为当时Address Book上都是存的手机号,Gmail上都是存的邮箱,于是同步后手工合并了一些删掉了一些 (Google官方出Contacts Merge功能是在N个月之后了),然后就悲剧了,那些合并的时候删掉了原Gmail那一份的或者直接删掉的联系人,在gtalk上也消失了。于是我又费了好大劲才把这些人加回来。
被这么搞了一把后,当然就学乖了,正好我还有个个人的Google Apps账户,于是就改为Address Book跟这个账户同步了,因为这个账户反正不跟人聊gtalk,尽量不去动Gmail账户。
就这么过了几年,买了Android手机,因为Google Apps账户上面有我的保持同步的联系人资料,所以显然手机也是跟这个账户同步的 (第一个Android手机是1.5的,只能同步一个Google Account)。
然后就发现了在Android上用Google Apps账户而不是Gmail账户的各种悲剧:
- Google Checkout不支持Google Apps账户,不过鉴于此Market允许我再在Market里面绑定一个Gmail账户用来使用Google Checkout,所以这个还是最不悲剧的。
- Push Gmail只能Push同步的那个,不过这个也不是问题,反正我Google Apps账户里面的邮件更重要更需要Push,Gmail那个无用邮件太多。
- 自带的Talk也只能用绑定的那个账户,于是我要跟人聊gtalk还是只能下个第三方的XMPP Client。
- 最重要的:Google Maps里面的Latitude*支持*Google Apps账户,所以不给我绑定另一个Gmail账户的机会,于是我原来在别的手机上用Gmail账户加的Latitude好友都没了,而Google那些网页上的附加功能,比如Latitude History,用Google Apps账户是登不进去的。我在非Android手机上都可以同步Google Apps账户的Contacts和Calendar,然后用Gmail账户上Google Latitude,结果到了Google自家的手机系统上反而不行了,所以Google真是古往今来第一大公无私公司。
后来,主要是因为Android 2.1有同步多个Google Accounts的功能,我换了Nexus One,结果悲剧没有减轻多少:
- 同步的多个Google Accounts是有一个Master Account的,而Market的软件购买状态是根据Master账户来存的。虽然我在Market上买软件用的是Gmail的Google Checkout,但是我用Gmail作为Master Account是不承认我买过那些软件的,还得用Google Apps那个才行。所以我还是得用Google Apps账户作为Master Account
- Talk还是只能登Master Account,我本来期待着能几个账号一起登的。。。于是我还是只能用第三方XMPP Client。
- Google Latitude还是只能用Master Account!而且出了Buzz后Google Maps里面的Buzz支持也只能用Master Account,而Buzz不支持Google Apps,所以这个功能就直接被隐藏掉了。
所以事情就是这样了。。。虽然Yang Fan老师安慰我说Google Maps的接下来几个版本内就会加上其他同步账户的支持,不过不知道要等到猴年马月了。所以在这个传说中的版本出来之前,各位如果想在Google Latitude上加我的,麻烦加我的Google Apps账号。
tags: internet, google, apps, gmail, android, maps
Sunday, February 28, 2010
Geotag your photos
标题的意思是给你拍的照片(jpg的EXIF或者RAW的tag)加上地理信息(经纬度和海拔高度)。为什么要这么做这里就不讨论了。这篇文章只是总结一下Mac下可以如何做。
Geotag分两种情况:一种是根据GPS log来得到照片的位置(根据时间来同步),另一种是没有GPS log的时候根据记忆在地图上标注。当然其实还有一种情况是相机自带GPS(比如手机)或者相机连了个GPS(某些高级相机)拍照的时候就tag了,这种情况就不说了。。。
有GPS log的时候,有下面几种方法:
- GPSPhotoLinker:免费,支持E-P1的RAW(我只有这一款带RAW的相机所以只能测试这一种RAW格式;这篇文章里的所有软件都支持JPG所以就不说JPG支持情况了),可以选择前一个点、后一个点或者前后点的加权平均,支持同时load多个tracks,支持自动给一堆照片geotag。除了经纬度和海拔高度外还能写城市名信息(通过google之类的服务器根据经纬度拿到)。支持时间误差修正。基本完美。
- Aperture 3自带的Places功能:支持所有Aperture支持的RAW(这句话好废话),支持同时load多个tracks。不过tag的时候不能自动tag,只能自己往地图上的track上拖。拖的时候会提示你这段track与你的照片的时间差,但是这个时间只精确到分钟。我的GPS是一秒记录一个点,所以其实我是需要从60个点里面选一个。对于移动速度很快的log,比如WC同学最喜欢的在火车上记GPS log,这个只精确到分钟会是个大问题。另外照片很多的时候只能自己一张张的拖也很麻烦。UPDATE: 发现Aperture也有根据时间自动assign的功能,貌似要拖一两张照片上track后才提示你使用,没有找到别的入口,真不知道Apple是怎么想的。。。
- Jeffrey’s “GPS-Support” Geoencoding Plugin for Lightroom:免费(是说plugin不是说Lightroom...),支持所有Lightroom支持的RAW(还是废话),只支持一个track,能自动给一堆照片geotag,精确到点,支持时间误差修正。
用GPS log的时候记得把相机的时间设置好。因为GPS的时间是绝对精确的,所以相机的时间也要尽可能的精确。
没有GPS log的时候有下面几种方法(都不支持海拔高度信息):
- Geotagger:免费,*不*支持E-P1的RAW,与Google Earth配合,把照片拖到Geotagger上的时候自动Google Earth当前中心点的坐标写入照片。
- Aperture 3自带的Places功能:支持所有Aperture支持的RAW,直接把照片往地图上拖。需要注意的是国内的Google Maps地图是有偏移的,卫星图暂时没有偏移。
- Jeffrey’s “GPS-Support” Geoencoding Plugin for Lightroom:免费,支持所有Lightroom支持的RAW,也是跟Google Earth配合,写入Google Earth当前中心点的坐标。
所以目前我的选择是有GPS log的时候用GPSPhotoLinker,没有的时候RAW用Aperture 3的Places功能,JPG用Geotagger。
PS: 关于GPS log,可以用手机记(GPSed, Maverick等),但是不推荐,因为实在是很费电。我在去马来西亚用手机记了若干GPS log后实在忍不了这个费电速度,回来后找WC买了他的二手Columbus V-900。这款GPS除了话唠了一点(插拔TF卡也要很大声的beep一下,就更别说开机关机之类的了)和电池稍微弱了一点外基本完美。WC卖给我后买了个别的GPS,用了一阵受不了,又去买了个V-900。。。
PPS: Apple在这么久以后终于肯支持E-P1的RAW了。别人问我Lightroom有啥高级功能是Aperture没有的的时候我终于不用回答“比如支持E-P1的RAW这样的高级功能”了。
tags: mac, gps, geotag, photo
Sunday, July 26, 2009
豆瓣怎么了
我对豆瓣不满很久了,也早就号称要写篇blog骂一下。但是你们知道的,我每天下班后要看片、玩游戏、玩滑板、做饭、吃饭,周末了还要睡懒觉。我很忙的。所以这篇blog也就一拖再拖。
不过在这么一个洗完了澡要等头发晾干又不想看个片两个小时后再睡觉的夜晚,我终于决定写这篇blog了。Here we go.
首先从首页推荐说起。这个东西一向都不靠谱。我也学过ML(想歪的自己面壁去),知道这玩意做不到太靠谱,但是以前好歹偶尔能推荐点好东西,比如曾让我知道了Tizzy Bac。但现在呢?来先看第一个截图:

好吧我最近确实看了The IT Crowd而且打了四星,说明我很喜欢这个片。但你至于给我推荐俩相关垃圾条目么?至于这俩为啥是垃圾条目,后面会说。
再来看推荐评论部分:

这几个评论貌似都没啥大问题。我这里给出截图主要是为了看图说话比较方便。这里显示的“摘要”我数了一下,大概是一行40个字,所以是一共不超过200个字。需要注意的一点是最后的“...”,即使是这篇评论一共就不超过200个字全部显示在这里了,这个“...”也是一定会出现的(这样显得比较有文化嘛)。我就遇到过豆瓣给我推荐的这样的评论,从“摘要”文字实在是看不出来他为啥要推荐给我,于是作为一个好奇心旺盛的人,我就点进去看了一下,发现原来那个不是摘要而是全文,而全文完全就是那种看完片随便感慨一下的完全没有信息量的评论。于是我更加好奇豆瓣为啥要把这篇评论推荐给我了,就进一步点开了评论对应的电影,然后看到了一个华丽丽的“正三角”(也就是说大部分评分都是一星二星的烂片),而这个片子的相关条目里面也没有任何一个是我看过甚至听说过的。于是我一直到现在都没明白豆瓣为啥要推荐这篇评论给我,难不成是为了故意恶心我的?这个例子也许稍微极端了一点,但是根据我的经验,自从豆瓣首页改版成这样后,推荐的评论有一小半是200字左右的毫无信息量的评论(虽然它们对应的并不全是正三角烂片)。
作为一个Web 2.0网站的个性化首页,信息量如此的少,真的算得上是奇闻了。
接下来咱们来解释为啥那俩The IT Crowd的相关条目都是垃圾条目。
先说那个“IT一族”的条目。这个其实是美国人翻拍的,在pilot出来后就被fans骂到砍掉了的版本。所以即使豆瓣推荐给我,我也没处看去。如果在豆瓣上搜索“The IT Crowd”,第一个结果会是这个被砍的美版,第二个结果会是第三季,到了第三个结果才是真正的代表全剧的原始英国版。豆瓣给出这么一个神奇的排序,也就不能怪用户把两个条目搞混了。
再来说那个“IT群英 第二季”。豆瓣官方是承认IMDb在电影电视资料上的权威性的。在豆瓣上添加影视条目的时候,IMDb link是作为唯一互斥参数出现的,对应书籍和音乐的ISBN号。也就是说,你不能在豆瓣上建立两个条目让他们拥有同样的IMDb link。美剧和英剧会分季(season),于是豆瓣上的粉丝就会很有爱的在建立电视剧的条目后,再来建立第二季、第三季、第四季……的条目。对你也注意到了,没有第一季,因为一般那个不写“第X季”的条目就是用来表示第一季的。我们来看看这些条目的IMDb link。The IT Crowd的IMDb link对应的是IMDb上整部电视剧的条目,而第二季的IMDb link对应的却不是IMDb上的第二季的条目,因为IMDb根本不会给某个电视剧的某一季建立条目。这个IMDb条目其实是The IT Crowd第二季第一集的条目。IMDb会给一个电视剧和这个电视剧的每一集建立条目,但是每一集的条目是IMDb不鼓励大家用的,因为你在IMDb里面不管是搜剧集名还是那集的名字都是搜不到的(神通广大的豆瓣上的粉丝可能是用google搜到的?)。豆瓣上的粉丝给每一季建立条目的目的大概是为了能够不用把这个剧长期挂在“在看”的状态下而能更快的改成“看过”并打分(看过所有季和看过一季的区别),但是你们这么有爱的话,明明可以学IMDb给每一集建立条目嘛,这样还能更快的改状态和刷收藏。但是由于这样的粉丝太多,好多剧全剧条目和第二季、第三季……条目会被粉丝同时收藏,于是豆瓣就很容易把他们聚到一起,于是基本上我看过什么剧豆瓣就会给我推荐它的第二季、第三季……妈的我看过全剧了好不好!还好我看美剧不多,不然我觉得首页出现六个“XXXX 第二季”的推荐也不是不可能的。
与这个类似的情况是书和CD的不同版本。这个倒不算垃圾条目,但是我看过一九八四上海译文版你就给我推荐辽宁教育版,或者我听过A Night at the Opera你就给我推荐国内版的事情也没少干。一定要我看过一本书/听过一张专辑的所有版本你才能满意么?
豆瓣上的粉丝的能耐可不止第X季条目。他们还能时不时的暴民专政一下或者在每个电影上映前穿越一把(此链接在电影上映前有效)。OK你可能会说这些都是粉丝行为跟豆瓣无关,但是网站用户的行为都是网站培养、引导的。当一个网站聚集了一群傻逼用户的时候,你能说这个网站不傻逼么?IMDb也有广泛的用户群,但我从来没有看到哪个片子在上映前能在IMDb上拿到超过5个评分(IMDb上超过5个评分才显示得分);IMDb上虽然也有fanboys在刚上映的时候猛打10分甚至打进top 250,但是一般一两周后该不行的片子肯定在top 250里面留不住。你能说IMDb的用户群比豆瓣的用户群平均智商高么?这显然更多是网站努力引导的结果。豆瓣就这么放任着暴民专政和穿越大军,结果只能让自己越来越傻逼。
豆瓣还有个一直没解决的问题就是书托问题。只要是在国内出版的畅销书,那么豆瓣上的评论和评分一定是不能参考的,因为你会在条目下看到一水的五星书评。甚至还有牛逼的五毛党把书托行为成功的包装成了时髦的行为艺术,发动群众的力量来做书托。
认真的说,我觉得如果豆瓣把他招去管内容,说不定能解决我上面提到的所有问题。
tags: internet, douban
Friday, June 05, 2009
概率问题(续)
昨天说的那个概率问题其实叫Monty Hall problem。昨天给的那个结果其实依赖于一个前提,就是主持人故意选择打开了有山羊的一个门。如果主持人只是随机/偶然/不小心打开了有山羊的一个门,这个问题叫做Monty Fall problem。在这种情况下,程序模拟的结果是这样的:
fishy@localhost:~/work/test$ ./test 100000
CHANGE
*** right on 22096 out of 44359, 49.81% ***
NO CHANGE
*** right on 22198 out of 44412, 49.98% ***
fishy@localhost:~/work/test$ ./test 1000000
CHANGE
*** right on 222412 out of 444576, 50.03% ***
NO CHANGE
*** right on 221543 out of 444252, 49.87% ***
fishy@localhost:~/work/test$ ./test 10000000
CHANGE
*** right on 2219600 out of 4441565, 49.97% ***
NO CHANGE
*** right on 2222900 out of 4446490, 49.99% ***
这种情况的结果是换不换都是1/2。
程序如下:
1 #include <stdio.h>
2 #include <time.h>
3 #include <stdlib.h>
4
5 typedef int changefunc(int, int);
6
7 int change(int guess, int show) {
8 return 0+1+2 - guess - show;
9 }
10
11 int nochange(int guess, int show) {
12 return guess;
13 }
14
15 void loop(int times, changefunc func, int print) {
16 int i, n, t;
17 n = 0;
18 t = 0;
19 for(i=0;i<times;i++) {
20 int target = rand() % 3;
21 int guess = rand() % 3;
22 int show = rand() % 3;
23 int finalguess;
24 if(show == target)
25 continue;
26 if(show == guess)
27 continue;
28 t++;
29 finalguess = func(guess, show);
30 if(print)
31 printf("guess %d, show %d, changed to %d, result is %d\n", guess, show, finalguess, target);
32 if(target == finalguess) n++;
33 }
34 printf(" *** right on %d out of %d, %.2f%% ***\n", n, t, ((double)n)/t*100);
35 }
36
37 int main(int argc, char **argv) {
38 if(argc <= 1)
39 return -1;
40 int times = atoi(argv[1]);
41 int print = (argc >= 3);
42 srand(time(0));
43 // change
44 printf("CHANGE\n");
45 loop(times, change, print);
46 // no change
47 printf("NO CHANGE\n");
48 loop(times, nochange, print);
49 return 0;
50 }
为什么两种情况下会不一样呢?原因是两种情况下,主持人开门的概率是不一样的。这里有个详细的证明。
不过在这两种情况下,换的结果都不会差于不换的结果,所以总之还是应该换。
tags: program, science, math, probability, monty, hall
Friday, June 05, 2009
概率问题
有个经典概率问题是这样的:三个门,其中一个后面是轿车,另外两个后面是山羊,你任选一个门,如果打开了后面是汽车,汽车就归你。你选了一个门后,主持人打开了另一个门,后面是山羊。这时他给你一个机会更改自己的选择,你要坚持自己一开始的选择还是更改自己的选择?这个问题很有名,比如电影21里面也提到过(btw, 这个电影很一般,没看过的就不用浪费时间了)。
答案是更改选择。因为不改的话你选对的概率是1/3,而改了你选对的概率变成2/3。
昨天杨爷不知道为啥又把这个问题翻出来了,然后跟我们讨论为啥不是1/2。我概率学的不够好,没找到足够让人信服的理由反驳他的1/2。不过我C语言学的比较好,而且正好今天休假比较闲,于是中午写了个程序模拟了一下。。。这个是跑很多次的结果:
fishy@Makelele:~/work/test$ ./test 100000
CHANGE
*** right on 66706 out of 100000, 66.71% ***
NO CHANGE
*** right on 33331 out of 100000, 33.33% ***
fishy@Makelele:~/work/test$ ./test 1000000
CHANGE
*** right on 667107 out of 1000000, 66.71% ***
NO CHANGE
*** right on 332750 out of 1000000, 33.28% ***
fishy@Makelele:~/work/test$ ./test 10000000
CHANGE
*** right on 6666707 out of 10000000, 66.67% ***
NO CHANGE
*** right on 3334351 out of 10000000, 33.34% ***
这个是只跑了20次但是给出具体内容的结果:
fishy@Makelele:~/work/test$ ./test 20 a
CHANGE
guess 1, show 0, changed to 2, result is 2
guess 0, show 1, changed to 2, result is 2
guess 1, show 2, changed to 0, result is 0
guess 0, show 1, changed to 2, result is 2
guess 0, show 2, changed to 1, result is 0
guess 1, show 2, changed to 0, result is 0
guess 2, show 0, changed to 1, result is 1
guess 0, show 1, changed to 2, result is 0
guess 2, show 0, changed to 1, result is 2
guess 0, show 2, changed to 1, result is 1
guess 0, show 2, changed to 1, result is 1
guess 0, show 2, changed to 1, result is 0
guess 0, show 2, changed to 1, result is 0
guess 1, show 0, changed to 2, result is 2
guess 0, show 2, changed to 1, result is 1
guess 0, show 1, changed to 2, result is 2
guess 2, show 1, changed to 0, result is 0
guess 2, show 1, changed to 0, result is 0
guess 1, show 0, changed to 2, result is 2
guess 0, show 2, changed to 1, result is 1
*** right on 15 out of 20, 75.00% ***
NO CHANGE
guess 2, show 1, changed to 2, result is 0
guess 1, show 2, changed to 1, result is 0
guess 1, show 0, changed to 1, result is 1
guess 1, show 2, changed to 1, result is 0
guess 0, show 2, changed to 0, result is 1
guess 2, show 0, changed to 2, result is 1
guess 1, show 0, changed to 1, result is 1
guess 0, show 2, changed to 0, result is 0
guess 1, show 2, changed to 1, result is 1
guess 0, show 1, changed to 0, result is 2
guess 1, show 2, changed to 1, result is 0
guess 0, show 1, changed to 0, result is 0
guess 1, show 2, changed to 1, result is 0
guess 0, show 1, changed to 0, result is 2
guess 0, show 1, changed to 0, result is 2
guess 1, show 0, changed to 1, result is 2
guess 0, show 1, changed to 0, result is 0
guess 1, show 0, changed to 1, result is 1
guess 0, show 2, changed to 0, result is 1
guess 0, show 2, changed to 0, result is 1
*** right on 7 out of 20, 35.00% ***
所以很显然了,换了猜对的概率是2/3,不换是1/3。
下面是程序
1 #include <stdio.h>
2 #include <time.h>
3 #include <stdlib.h>
4
5 typedef int changefunc(int, int);
6
7 int change(int guess, int show) {
8 return 0+1+2 - guess - show;
9 }
10
11 int nochange(int guess, int show) {
12 return guess;
13 }
14
15 void loop(int times, changefunc func, int print) {
16 int i, n;
17 n = 0;
18 for(i=0;i<times;i++) {
19 int target = rand() % 3;
20 int guess = rand() % 3;
21 int show, finalguess;
22 if(guess != target)
23 show = 0+1+2 - target - guess;
24 else {
25 show = guess + rand() % 2 + 1;
26 if(show >= 3) show -= 3;
27 }
28 finalguess = func(guess, show);
29 if(print)
30 printf("guess %d, show %d, changed to %d, result is %d\n", guess, show, finalguess, target);
31 if(target == finalguess) n++;
32 }
33 printf(" *** right on %d out of %d, %.2f%% ***\n", n, times, ((double)n)/times*100);
34 }
35
36 int main(int argc, char **argv) {
37 if(argc <= 1)
38 return -1;
39 int times = atoi(argv[1]);
40 int print = (argc >= 3);
41 srand(time(0));
42 // change
43 printf("CHANGE\n");
44 loop(times, change, print);
45 // no change
46 printf("NO CHANGE\n");
47 loop(times, nochange, print);
48 return 0;
49 }
要是能天天都休假还有工资拿就好了。。。
tags: program, science, math, probability
Wednesday, May 06, 2009
SEO
最近发现,google我的英文名字名字拼音的第一个结果不再是我的主页,而是一个googlepages页面。
对于google这种以权谋私行为,本人郑重表示震惊、愤慨和虽远必严正抗议!
特此声明SEO!
tags: internet, seo, google
Wednesday, March 25, 2009
人民群众的智商是如何被藐视的
以上是在淘宝上选了“安全登陆”后登陆的一瞬间的截图。大图可以看这里。
Camino为啥会给这个警告呢?看一下那个页面的源代码就会发现,虽然这个页面是安全的(HTTPS),但是传输密码的是下个页面,即表单提交页面。而表单提交页面却是“http://member1.taobao.com/member/login.jhtml”,是不安全的(HTTP)。
用简单一点的话来说,就是淘宝在可以不安全的地方用了安全页面,而在需要安全的地方用了不安全的页面,然后整个这个东西被称为“安全登陆”。
tags: network, taobao, https, stupid
Tuesday, December 09, 2008
Mac Address Book脚本:UsePhoneticName.py
这个脚本是基于jjgod的脚本Assign Phonetic Name。apn的作用是给地址本里面的中文联系人加上拼音(Mac的Address Book专门有字段Phonetic Last Name和Phonetic First Name来存拼音,跟Last Name和First Name互不冲突),然后给iPhone用。
我的情况则是新手机对中文联系人支持的很差,想改成拼音的联系人。于是我先用apn弄出拼音来,然后修改了一下apn得到UsePhoneticName.py来用拼音替换中文。中文名会被保留在Note中。
可能是python的Apple Script binding的bug,总会有那么一两个人的名字出错(apn也这样),所以如果你也用这个脚本来处理,弄完后最好自己review一下。
这个帖子是给我掉茅坑生死未知的新手机攒人品,嗯。。。
tags: program, python, apple script, address book, mac, script, jjgod
Thursday, November 06, 2008
有趣的邮件
今天上Flickr的时候发现我的Pro又快到期了,于是续费。在续费成功的确认邮件里面看到这么一行:
* You're a Pro! Why are you still reading this? Shouldn't you be uploading photos or something!?!
看完后不禁微笑,想起来前两天另一个网站的邮件最后有这么一句:
please consider the environment - do you really need to print this email?
tags: network, email, funny
Wednesday, October 29, 2008
赞一下bizcn
上次写道,把域名从国内注册商转到国外注册商是个无比费劲的事情。需要被国内注册商敲诈一些钱,然后还要等很久,才能搞定。
前两天我突然想起来yuxuan.org又快到期了,于是赶紧开始折腾转移事宜。先查whois,发现这次这个域名的上家是bizcn,于是直接找到bizcn的联系电话打过去。
结果相对于上次的经验,这次bizcn的mm却是出人意料的合作。她说的转移条件很简单:下个他们的申请表,打印出来填好签字,然后和身份证一起扫描(或者用足够清晰的DC照下来)并用whois里面登记的邮箱发过去,然后他们就去联系代理商。最关键的是,如果代理商3天内不回应,他们就强制转!然后把auth code发给我,就OK。整个过程不收钱!
好吧,我知道这个本来就不应该收钱的,但是在国内这些如狼似虎的注册商中,出一个真的不收钱的还是很值得让人激动的。。。
于是我下了个申请表打印填好,拿相机拍了发给他们,然后因为身份证没有拍反面和表填的有点问题反复了两次,然后静等了3个工作日,然后今天早上就转好了。
我感动了。。。现在终于我所有的域名都不在如狼似虎的国内注册商手里了。
现在如果问我去哪儿注册域名,我还是会说去找米国的大注册商。不过如果你一定要在国内注册,那我推荐找bizcn的代理(直接bizcn的话,好像很贵的样子)。
tags: network, domain, bizcn

