建宇's profileSamuel In A NutshellPhotosBlogListsMore Tools Help

建宇 邓

Occupation
Location
我饿~~
You Are The No.

Web Counter Guest
Nordstrom Coupon

Samuel In A Nutshell

July 22

US Adventure III - 07.19

今天在浦机飞三藩的时候,竟然碰到chery大哥和leejueyy坐相同的航班,巧啊。他们都是到三藩开会的。毕业后leejueyy是见过好几次,chery却是神龙见首不见尾,今日偶遇,技术大拿的风采依旧,赶紧交换了联系方式。
 
飞了10小时多到了三藩,一切和一年前没什么大改变,只是。。。突然发现这里温度实在太低。。。7月的上午气温只有12摄氏度,风呼呼地吹,俺们还净朝渔人码头和金门大桥这种风大的地方赶,于是鸡皮疙瘩洒了一地,marzhou和ranjiang在渔人码头附近的华人小店补了长袖衣服,大臭套了两条7分裤。去年的时候我记得中午太阳出来后就暖起来,今天天公不作美,阴天,那个冷啊。。。逃回酒店赶紧泡热水里,舒服
June 28

Billg's last full-time day in MS

Billg的Town Hall webcast,steveb一再强调这是一个celebration,但最后还是晚节不保老泪纵横
 
大部分时间气氛挺轻松的,一开始又在放那个流传已久的,找了一堆名人和他一起演的搞笑video。然后billg同学承前启后忆苦思甜了一番,不忘表达了对mobile platform和search这两块心头大石的耿耿于怀。发言的其中心思想是MS is a company of dream,以及与之一起打天下的人是多么incredible。steveb同学流露出对之离去的一丝担忧,billg立即表示坚信MS依然会有innovative idea for the industry,继任者必定能将公司指引到正确的方向云云。接着steveb同学起立作结案陈词,现场观众第二次全体起立鼓掌致意,于是steveb忍不住了,billg也很难过的样子
 
是billg时代的终结,还是另一个billg时代的开始?We're not sure. But what we're sure is we'll definitely MISS YOU, William...
 
 
 
June 14

观球记

印象中从06年开始,意大利放弃了传统的ws打法,打起"优雅"的进攻足球,不再依赖无与伦比的gs运和"链式防守"。昨晚和罗马尼亚的上半场,对手的两个边路被打爆,"伟大的左后卫"和羊肉串在左右两边频频起球,看得上体的两胖子一口一个"出神入化"。威胁是巨大的,但失去了gs运的意大利连普通的运气都没了,无数次门前绝杀的机会浪费了,连toni的好球都被吹掉。罗马尼亚还是狡猾狡猾的,靠着前场一堆远射达人和一个妖人门将,和对手"对攻"了30分钟。
 
下半场那个跌宕啊。易边后Italia的边路优势不再,改打中路配合,连点球皮同学都传了几记身后,没想到羊肉串在后院给猎犬一般的穆图同学送了大礼,还好"骨灰级的后卫"(新浪语)迅速扳回。偶看到意大利大难不死,正想1拉或许有后福,冷不防裁判又给了对方12码。偶又寻思没了gs运的意大利要回家了吧,结果穆图同学闪烁的目光给了圣布冯同学立功的机会,不知道一同看球的黄同学有没有再上演06年的歇斯底里。这里要说的是pplive关键时掉链子,下半场开始一会就连不上,只能连sopcast看广体,一看比分已经1:1鸟!!!那个郁闷啊。不过广体有何辉同学的评球,比上体那两活宝强,嘿嘿。后来好不容易等到点球,结果卫星信号中断了...(T_T),恢复后就只能看到buffon同学手脚并用的慢镜了......彻底无语,你说看场球容易吗我。
 
接着不堪大用的卡萨诺同学花拳绣腿地上场秀了一会......切回上体,听唐蒙老师说了会糊话,如"意甲的补时就像加了个半场"之类的,然后双方就扭扭捏捏的捱到完场......于是再次看到穆图同学忧怨的眼神,增四令人怜爱呀。
 
建议Italia下场和法兰西死磕用回老本行吧,以前打防反那会儿的机会把握能力多强,一打一个准,人家荷兰学你的ws风格,打得法国一点脾气都没(一想到普拉蒂尼的表情就爽,哈哈)。和法国对攻,00年就是例子。只是Italia这些个球员现在还拉得下世界冠军的面子防反么,我看悬。话又说回来,如果荷兰最后一场"一有闪失"再负罗马尼亚,意法踢得再荡气回肠也是白搭。
 
东欧球队球风一如既往的诡异啊,罗马尼亚技术比不上克罗地亚,但前锋个人能力很强,其远射能力也增加了比赛的不确定性。支持巴尔干雄鹰进8强!
 
今天就解说到这里谢谢大家。
June 10

Vista

首先偶不是Vista的粉丝。只是今天迫于无奈要倒腾两把vista,找到了些以前不知道的东东:
 
1. 以前想把某进程跑在LOCAL SYSTEM下,偶只知道用at hh:mm /interact command命令。vista也有at,但不知道为啥偶用at创建的计划任务老是在vista启动失败(只报"could not start",老鸟们能否提供点tips?)。于是找到schtasks命令(以前的windows版本也有这命令),功能比at强大多了,可以创建任务在系统启动或用户登录时运行。比如想在系统启动过程中用户登录前自动运行netmon3一段时间,可以这样写:
 
schtasks /create /RU SYSTEM /TR "nmcap /network * /capture /file c:\ms.cap /stopwhen /timeafter 15 min" /SC ONSTART /TN job1
 
这里也用到netmon3的命令行nmcap.exe。另外,开命令行跑schtasks的时候最好runas admin
 
2. 系统启动过程中想自动跑regmon+filemon,可以用process monitor的新功能boot logging,很方便。只是需要在系统盘写巨大的临时文件,偶的vista C盘只有1G多空间,结果它要写入1.4G...傻眼
 
3. 话说偶的C盘被撑爆了,偶在根目录找到2G多的hiberfil.sys,给系统休眠用的。台式机还休眠太浪费了,可是偶没找到类似XP里关掉休眠的配置,还好有命令行:powercfg -h off,hiberfil.sys就自动消失鸟
 
4. robocopy很多人都用过吧,很好很强大。于是被集成到vista的命令行了,不错。
 
 
June 07

In case anyone meets the same...

I came across a VS2005 solution consist of 15 projects. The devenv.exe caused 100% CPU if I either click "close the solution" or "save all", but there is no issue if I save single file.
 
Strange enough as I just tried disable all breakpoints then enable them again before the problem occurred...
 
Took two dumps for devenv and it's the thread 0 blocked:
0:000> !runaway 7
 User Mode Time
  Thread       Time
   0:e3c       0 days 0:01:34.215
  10:e90       0 days 0:00:01.251
  19:f84       0 days 0:00:00.250
  14:ea0       0 days 0:00:00.080
   5:e50       0 days 0:00:00.020
  21:f9c       0 days 0:00:00.010
  18:f80       0 days 0:00:00.010
  16:f64       0 days 0:00:00.010
  22:fa0       0 days 0:00:00.000
  20:f88       0 days 0:00:00.000
  17:f68       0 days 0:00:00.000
  15:ea4       0 days 0:00:00.000
  13:e9c       0 days 0:00:00.000
  12:e98       0 days 0:00:00.000
  11:e94       0 days 0:00:00.000
   9:e6c       0 days 0:00:00.000
   8:e68       0 days 0:00:00.000
   7:e64       0 days 0:00:00.000
   6:e54       0 days 0:00:00.000
   4:e4c       0 days 0:00:00.000
   3:e48       0 days 0:00:00.000
   2:e44       0 days 0:00:00.000
   1:e40       0 days 0:00:00.000
 Kernel Mode Time
  Thread       Time
   0:e3c       0 days 0:00:04.145
  10:e90       0 days 0:00:00.470
  19:f84       0 days 0:00:00.300
  14:ea0       0 days 0:00:00.090
   8:e68       0 days 0:00:00.010
   7:e64       0 days 0:00:00.010
  22:fa0       0 days 0:00:00.000
  21:f9c       0 days 0:00:00.000
  20:f88       0 days 0:00:00.000
  18:f80       0 days 0:00:00.000
  17:f68       0 days 0:00:00.000
  16:f64       0 days 0:00:00.000
  15:ea4       0 days 0:00:00.000
  13:e9c       0 days 0:00:00.000
  12:e98       0 days 0:00:00.000
  11:e94       0 days 0:00:00.000
   9:e6c       0 days 0:00:00.000
   6:e54       0 days 0:00:00.000
   5:e50       0 days 0:00:00.000
   4:e4c       0 days 0:00:00.000
   3:e48       0 days 0:00:00.000
   2:e44       0 days 0:00:00.000
   1:e40       0 days 0:00:00.000
 
No deadlock and seems we just get stuck when VS tries to save user option file:
0:000> kpL100
ChildEBP RetAddr 
0012cea8 776bad36 ole32!CPagedVector::GetTableWithSect(unsigned long iTable = 2, unsigned long dwFlags = 0, unsigned long sectKnown = 0xfffffffe, void ** ppmp = 0x0012cf04)+0xc
0012cec0 776bad05 ole32!CPagedVector::GetTable(unsigned long iTable = 2, unsigned long dwFlags = 0, void ** ppmp = 0x0012cf04)+0x15
0012cee0 776bacc1 ole32!CDirVector::GetTable(unsigned long iTable = 2, unsigned long dwFlags = 0, class CDirSect ** ppds = 0x0012cf04)+0x19
0012cef8 776f0ff0 ole32!CDirectory::GetDirEntry(unsigned long sid = 0xb, unsigned long dwFlags = 0, class CDirEntry ** ppde = 0x0012cf40)+0x22
0012cf34 776dc3e3 ole32!CDirectory::FindEntry(unsigned long sidParent = 0, class CDfName * pdfn = 0x04aa4b78, DIRENTRYOP deop = 78269304 (No matching enumerant), struct SEntryBuffer * peb = 0x0000000b)+0x1ca
0012cf68 776de0b9 ole32!CDirectory::DestroyChild(unsigned long sidParent = 0, class CDfName * pdfn = 0x0012d080, unsigned long ulDepth = 0x66)+0xdf
0012cf7c 776de08e ole32!CMStream::DestroyEntry(unsigned long sidParent = 0, class CDfName * pdfn = 0x0012d080)+0x28
0012cf8c 776de059 ole32!CHandle::DestroyEntry(class CDfName * pdfn = 0x0012d080)+0x2c
0012cf98 776de01a ole32!CDocFile::DestroyEntry(class CDfName * pdfnName = 0x0012d080, int fClean = 0)+0x10
0012cfb0 776dc531 ole32!CPubDocFile::DestroyEntry(class CDfName * pdfnName = 0x0012d080, int fClean = 0)+0x51
0012d034 776e169f ole32!CExposedDocFile::CreateEntry(class CDfName * pdfn = 0x0012d080, unsigned long dwType = 2, unsigned long grfMode = 0x1011, void ** ppv = 0x0012d07c)+0xec
0012d0c8 500df24a ole32!CExposedDocFile::CreateStream(unsigned short * pwcsName = 0x50757110, unsigned long grfMode = 0x1011, unsigned long reserved1 = 0, unsigned long reserved2 = 0, struct IStream ** ppstm = 0x0012d108)+0xc3
0012d11c 500e088d msenv!CVsSolutionPersistence::SavePackageUserOpts(struct IVsPersistSolutionOpts * pPSO = 0x00b1092c, unsigned short * lpszKey = 0x50757110)+0xc3
0012d140 500dfc15 msenv!CVsShellPackage::SaveUserOptions(struct IVsSolutionPersistence * pPersistence = 0x01228888)+0x61
0012d16c 50152e10 msenv!CSolution::WriteUserOptsFile(void)+0x134
0012d184 50152e22 msenv!HrExecSaveAll(void)+0x40
0012f57c 50071956 msenv!HrShellExec(struct _GUID * pguidCmdGroup = 0x00197618 {5efc7975-14bc-11cf-9b2b-00aa00573819}, unsigned long nCmdID = 0xe0, unsigned long nCmdexecopt = 0, struct tagVARIANT * pvaIn = 0x04a9c5fc, struct tagVARIANT * pvaOut = 0x00000000)+0x272
0012f630 501a7874 msenv!CVSCommandTarget::ExecCmd(class CVSShellMenu::CIcmdGuidCmdId * pCmdArg = 0x04a9c5fc, struct _GUID * pguidCmdGroup = 0x00197618 {5efc7975-14bc-11cf-9b2b-00aa00573819}, unsigned long nCmdID = 0xe0, unsigned long nCmdexecopt = 0, struct tagVARIANT * pvaIn = 0x00000000, struct tagVARIANT * pvaOut = 0x00000000)+0x7e1
0012f6cc 5022f689 msenv!CMsoButtonUser::FClick(struct IMsoControl * pic = 0x038fec50, void ** ppv = 0x00000000, int * ptbbs = 0x0012f6fc, int grf = 1436248)+0x1cf
0012f71c 5023aa2e msenv!TBCB::LInputEvent(struct _msoctlenv * pce = 0x0012f79c, unsigned int uMessage = 0x202, unsigned int wParam = 0, long lParam = 786566)+0x246
0012f814 5012b33d msenv!TB::LProcessInputMsg(struct HWND__ * hwnd = 0x00010266, unsigned int msg = 0x202, unsigned int wParam = 0, long lParam = 786566)+0x90b
0012f8a0 7739c3b7 msenv!TBWndProc(struct HWND__ * hwnd = 0x00010266, unsigned int msg = 0x202, unsigned int wParam = 0, long lParam = 786566)+0x2d6
0012f8cc 7739c484 user32!InternalCallWinProc(void)+0x28
0012f944 77395563 user32!UserCallWinProcCheckWow(struct _ACTIVATION_CONTEXT * pActCtx = 0x00000000, <function> * pfn = 0x50082c50, struct HWND__ * hwnd = 0x00010266, unsigned int msg = 0x202, unsigned int wParam = 0, long lParam = 786566, void * pww = 0x00000000, int fEnableLiteHooks = 0)+0x151
0012f974 773ad03f user32!CallWindowProcAorW(<function> * pfn = 0x50082c50, struct HWND__ * hwnd = 0x00010266, unsigned int message = 0x202, unsigned int wParam = 0, long lParam = 786566, int bAnsi = 1)+0x98
0012f994 50082e1c user32!CallWindowProcA(<function> * pfn = 0x50082c50, struct HWND__ * hwnd = 0x00010266, unsigned int message = 0x202, unsigned int wParam = 0, long lParam = 786566)+0x1b
0012f9b0 7739c3b7 msenv!CAutoCompletionManagerCL::ParentOfTargetSubclassProcSTATIC(struct HWND__ * hwnd = 0x00010266, unsigned int uMsg = 0x202, unsigned int wParam = 0, long lParam = 786566)+0x3f
0012f9dc 7739c484 user32!InternalCallWinProc(void)+0x28
0012fa54 7739c73c user32!UserCallWinProcCheckWow(struct _ACTIVATION_CONTEXT * pActCtx = 0x00000000, <function> * pfn = 0x50082de4, struct HWND__ * hwnd = 0x00010266, unsigned int msg = 0x202, unsigned int wParam = 0, long lParam = 786566, void * pww = 0x006928ac, int fEnableLiteHooks = 1)+0x151
0012fabc 7738e406 user32!DispatchMessageWorker(struct tagMSG * pmsg = 0x0012fae4, int fAnsi = 1)+0x327
0012facc 5008bc44 user32!DispatchMessageA(struct tagMSG * lpMsg = 0x0012fae4)+0xf
0012fb04 500cd542 msenv!EnvironmentMsgLoop(unsigned long msgloop = 0xffffffff, struct IMsoStdComponentMgr * pstdcm = 0x00184f00)+0x1e9
0012fb18 500cd4e9 msenv!CMsoCMHandler::FPushMessageLoop(unsigned long uReason = 0xffffffff)+0x1f
0012fb40 500cd487 msenv!SCM::FPushMessageLoop(class SCMI * pscmi = 0x00000002, unsigned long uReason = 0xffffffff, void * pvLoopData = 0x00000e38)+0xb2
0012fb58 500cd458 msenv!SCM_MsoCompMgr::FPushMessageLoop(unsigned long dwComponentID = 0x418ad0, unsigned long uReason = 0x417528, void * pvLoopData = 0x003e2640)+0x27
0012fb74 500cd3c2 msenv!CMsoComponent::PushMsgLoop(unsigned long msgloop = 0x40952e)+0x25
0012fbf4 0040952e msenv!VStudioMainLogged(void)+0x42e
0012fc2c 0040685f devenv!util_CallVsMain(struct MAINPARAM * pMainParam = 0x04a9c5fc, int * piRes = 0x0012fcf4)+0x149
0012ff18 00406a3c devenv!CDevEnvAppId::Run(unsigned short * wszCmdLine = 0x00020988, int nCmdShow = 1)+0x84e
0012ff30 00406aa9 devenv!WinMain(struct HINSTANCE__ * hInstance = 0x77e523e5, struct HINSTANCE__ * __formal = 0x00000000, char * lpCmdLine = 0x00000000 "", int nCmdShow = 2147299328)+0x68
0012ffc0 77e523e5 devenv!__tmainCRTStartup(void)+0x140
0012fff0 00000000 kernel32!BaseProcessStart(<function> * lpStartAddress = 0x00401490)+0x23
 
0:000> db 0x04aa4b78
04aa4b78  44 00 65 00 62 00 75 00-67 00 67 00 65 00 72 00  D.e.b.u.g.g.e.r.
04aa4b88  4d 00 65 00 6d 00 6f 00-72 00 79 00 57 00 69 00  M.e.m.o.r.y.W.i.
04aa4b98  6e 00 64 00 6f 00 77 00-73 00 00 00 00 00 00 00  n.d.o.w.s.......
04aa4ba8  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
04aa4bb8  2c 00 02 01 0b 00 00 00-0e 00 00 00 ff ff ff ff  ,...............
04aa4bc8  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
04aa4bd8  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
04aa4be8  00 00 00 00 17 00 00 00-54 00 00 00 00 00 00 00  ........T.......
 
I had a .suo file with size of 2MB. No more findings from the dump so I simply moved the .suo out of the solution and reopen the solution. Now we have a tiny clean .suo and the symptom is gone.
 
HTH
May 19

Tips for MBSA & WSUS

Let say you meet the need to run MBSA (MS baseline security analyzer). You thought you have selected appropriate option to make MBSA not go through WSUS, however MBSA STILL seems to be attempting to contact WSUS (you may meet error 0x80244019 and the field "Security update catalog" is shown as "Windows Server Update Services"). And you may find there are STRING values WUServer and WUStatusServer under following key:
 
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate
 
You can try export then delete above key then re-launch MBSA. I met same issue when I performed ExRAP for a customer today.
 
Based on my test, with STRING WUServer and WUStatusServer not blank, even if we select "scan using windows update only", MBSA still goes thru WSUS.
 
HTH
 
 
 
 
May 10

SCR

最近碰到一个客户用到了Exchange 12的SCR,于是民工我异常鸡冻地跑过去瞅了个究竟。可看着看著,觉得这玩意挺鸡肋的。
 
本以为客户是用SCR做site resilience,可他们的standby machine并不在另一个data center。客户说,1拉是打算把SCR作为DB备份用的,于是他们只需要装一台standby machine,把所有mailbox server的DB都在standby上复制个副本,个么就省了备份软件的银子...
 
挺佩服客户的创造力。可是再一想,不对啊,用SCR做数据库级别的DR方案貌似有扬短避长之嫌。
 
如果启用了SCR的某个SG瘫掉,那么客户需要准确地做好下面这堆步骤以快速恢复email access:
 
1. 在standby machine预先建好SG和DB的空壳子(没有.edb)
2. Restore-StorageGroupCopy激活standby的副本
3. eseutil /r把standby副本mark成clean shutdown
4. move-storagegrouppath/move-databasepath给standby副本套上预先创建的空壳子
5. 在standby machine上把DB起来
6. move-mailbox -configurationOnly把问题存储里的邮箱指向standby machine
7. 等原先的活动副本修好,我们又要把DB再搬回去: 把.edb从standby machine拷到原先的活动节点并mount起来
8. 重新跑move-mailbox -configurationOnly乾坤大挪移
9. 把standby machine上对应的.edb/.log删光光再重新启用SCR
 
很好很强大,可是以上大部分步骤都要用MONAD完成(SCR操作没有做到GUI里,吐血)...你得期望客户对Exchange DR及SCR的原理有着清晰的认识,并顶着季度奖泡汤的危险,保持头脑清醒不做错事...啧啧
 
假如我们用传统的backup/restore的方式,虽然restore一个大数据库时间可能较长,但犯错的机率会小得多,对管理员的压力也小。
 
如果要做data center级别的DR,为啥不用跨data center的CCR呢?活动节点出了问题“啪”一下切到被动节点就OK了,多省事啊。
 
真要数SCR的好处,大概就是所谓的灵活性。SCR的source和target可以是多对多的关系,另外如果要省主机的银子,专门找一台机器standby所有的SG就可以。主机的确是省了,存储可还是相差无几的。
 
SCR看上去很美好,可客户一旦了解SCR recovery的过程,估计都会跳起来。GUI还是很重要di,看看Exchange 12 SP1改了多少GUI就知道了。
April 23

出来跑,总是要还的

只是这回还给了boss Nass...
 
nassgrant
April 18

向专家级的search engineer胡博同志致敬!

总算找对人了,哈哈
顺便bs一下公司的网络共享布局,乱就一个字!
April 16

Day 7 @ Tokyo

会开完了,周五在东京自由活动,其他人下午就回上海,俺就跟着hjyang同学混了。
 
酒店对面是东京都厅(相当于市政府),45楼有可以俯瞰整个东京景色的展望室,高202米,乘坐电梯免费进入。能清晰地看到明治神宫和新宿御苑的缩小版,一眼望去树丛中樱花的颜色已经很暗淡,残念...极目远眺,隐约看到处于云端之上的富士山顶,犹如海市蜃楼。
 
买了710 YEN的地铁一日通票(tokyo metro的线路任坐),乘丸内线到国会议事堂前换乘千代田线,到二重桥前下,出站就是皇宫啦。皇宫前面是一处茂盛的绿地,还能看到一片盛放的樱花。今年东京樱花3/25开始花开,俺们到的时候大部分樱花已经凋谢,能在这里看到,真是鸡冻啊。踏过碎石铺成的广场,就是皇宫的护城河。河上伫立着两洞的拱桥,桥分成上下两层,被称为二重桥。在护城河边拍照能看到皇宫的一角,被参天绿树包围着。可惜皇宫每年开放的时间很有限,俺们只能在外围远观。
 
千代田线到日比谷换乘日比谷线,在鲁迅笔下的上野公园下车。和皇宫前看到的不同,这里有不少貌似柳树的垂樱,可惜樱花7日已过,我们只能沿着铺满樱花瓣的台阶拾级而下。
 
离开上野,换银座线到了浅草。这里有东京最古老的寺庙-浅草寺。该寺的标志是正门的大红灯笼,67公斤重,写这“雷门”二字,不少去东京的人都要在灯笼前拍照的说。穿过雷门就是浅草寺的主干道“仲见世通”,延伸至宝藏门。路两旁都是卖手信的店铺,密密麻麻,据说有100多间,店铺的屋顶都插着樱花,大多卖煎饼、丸子、和服、扇子、玩具等小玩意,游人甚多。经过仲见世通和参拜神道,就是寺庙的正殿,供奉的是观世音。和尚在里面念经,敲的是鼓,而不是国内常见的木鱼。正殿斜前方还伫立着日本第二高的五重塔。出寺的时候聊起佛教,hjyang同学真是知识渊博,四大佛教名山供奉的是哪路菩萨都一清二楚,佩服。
 
沿银座线往回走,在银座换丸内线,到后乐园下,体验时速130km的过山车thunder dolphin。车开到最高点,再以80度近乎垂直向下“落体”,每当我感觉应该到底的时候,却发现车还在拼命往下掉,用hjyang的话说,“简直有想死的感觉”。最后车子还会高速穿过LaQua高楼一角的小洞,很是有趣。后来在网上看到这玩意被评为全球十大过山车之一。
 
逛了半天,有点饿了,决定去筑地市场吃鱼生。东京大部分的鱼肉都是那里供应的说,东西新鲜而且便宜。坐丸内线到银座换日比谷线,到筑地下。进了寿司店“つきじ喜代村”,这里的一份鱼生份量很足,吃得灰常爽。海胆手卷很好吃,贝壳汤很鲜美,强烈推荐 Smile
 
一眨眼已经下午5点半,我回神田和大臭会合,hjyang要去大阪,东京一日游结束鸟。 
 
April 07

Day 3 @ Risonare

公司选的度假村式酒店叫Risonare,离东京3小时车程。
 
偏僻倒也忍了,居然房间没有网络。要上网要跑到lobby,无线信号那个弱啊。公司的邮件都没法收。电视只能收12个台,全日文。外线电话也拨不通。真是与世隔绝的好地方。可惜俺们都是俗人,听说没网可上都觉得日子没法过了。晚饭是自助餐,没啥好吃的,牛扒可以用来砸人,失望阿。
 
下午坐车没事研究了一把D60,感觉还可以,喜欢托着机身揿快门的感觉,菜鸟大都喜欢装模作样,哈哈。明天看看周围有樱花没,拍几张,习习

Day 2 @ Tokyo

早上睡到自然醒,乘丸内线到新宿站下。
 
找到传说中的电器连锁yodobashi camera。Multimedia馆非常庞大,分北、南和东馆,彼此相连,主要是数码产品和电器。Game馆主要是游戏机和动漫产品。点卡叫Gold Point Card,免费申请。每次购物可获得10%左右的点数供下次消费抵用。店内有中文广播介绍店内的品牌。
 
从yodobashi出来,到了附近的另一血拼圣地sakuraya。这里地方比yodobashi小,顾客也少点,但俺们觉得比yodobashi划算。点卡可以返点,有效期2年,而且这里消费可以退税(%5),但这里申请点卡需要先买东西。价格和国内便宜不多,但不少产品是日本内销的。如果用现金消费,能获得比信用卡更多的点数。
 
在sakuraya买了两节电池,整了张点卡。然后要了NIKON D60,加AF-S DX 18-55防抖镜头,貌似国内还没有包含防抖镜头的D60套装,还比京东便宜500块。15000点数到手。用点数换了原装电池和sandisk 1G的高速SD。给大臭买了块citizen eco-drive,才700 RMB,点数抵掉才300多RMB。
 
在上海大部分电脑卖场,店员通常主动上前搭讪,还会尾随询问,不胜其烦。这里店员都只是礼貌地站立一旁,如果客人有问题会耐心解答。店员的英文比想象中的好,即时英文说不来,也能写中文字交流。
 
在sakuraya转了一下午,晚饭是寿司,昨天晚饭和今天午饭都只随便吃了点,俺们点了2000 YEN的寿司,撑死。

Day 1 @ Tokyo

初到东京,发现日本人定位用的是由大到小的区域(区-町-丁目-番地-号),而不是路与路的交汇点。如千代田区内神田(町)1(丁目)-8(番地)-8(号)
 
到一个地方前,先查町附近是否有地铁口,地铁出来后找到丁目的位置。有些地方路边每隔一段区域会有该区域的地图,可以知道当前位置所在番地。然后再看门牌号。
 
东京地铁四通八达,粗略数了数有近20条地铁线路,去地图上大部分地方都很便利。站名用中文字标出,很容易辨认。买票时先从图示查到目的地的车费,在机器里投入硬币即可。如果一天内穿梭东京多次,可以买地铁一日通票,有1000YEN和710YEN两种,前者是tokyo metro和都营地铁线都通用,后者only for tokyo metro。可能因为班次比较多,地铁并不太拥挤,没遇到上海地铁常见的“沙甸鱼”车厢。秩序也比上海的好,先下后上。
 
东京号称是全球人口密度最大的城市,但俺觉得拥挤程度远远不如上海,可能是蜘蛛网似的subway分流了人流 (这个印象在后来逛原宿和涉谷的时候被推翻鸟...)。街上本地人大多西装革履,行色匆匆。穿着休闲装闲庭信步的大多是游人。
 
看到不少路人戴口罩,后来在药店看到有卖防花粉过敏的口罩,才恍然大悟:看来是樱花惹的祸,赫赫。
 
街道很干净,很少看到有人在街上吃东西。路边垃圾桶很少,地铁里也没有,觉得有点不方便,但能把地面出现垃圾的概率减到最低吧。
 
快2点下飞机,3点一刻才办好手续,坐4点的skyliner到日暮里,5点左右换乘山手线到东京站下,边走边找,6点多才到的hotel villa fontaine,累就一个字,7-11买了饭团和三文治算晚饭。
April 05

66小时27分钟

过去的一周里,装机民工有66小时27分钟在干活,感慨良多,自己记性不好,笔记如下:
 
1. 项目压力大,时间紧迫,对于重复性操作,人肉方式往往比写程序高效,前提是人力资源>5
 
2. prf批量创建outlook profile,最好把"outlook address book"设成service 1。cmw创建的prf默认会把"Exchange service"设成service 1,在这种情况下如果当前登录帐号和e-mail alias不一致,"outlook address book" MAPI provider在profile中会建不出来。后果是客户会跳出来说联系人文件夹无法创建或不显示在地址簿中
 
3. 在新硬件上搭建业务系统强力建议压力测试
 
4. EXCHANGE 12 SP1对于public folder管理UI的加强其实是一句空话
 
5. 强迫症未必不是好事,比如每天下班不忘从家里再测试测试客户的系统。另外Exchange 12的系统上线前推荐人肉长时间测试。一次半次客户端登录或发信没问题就以为一切Ok那是太傻太天真
 
6. netmon 3还是要抽空学学
 
7. port mapping灰常有用,要确定网络设备包括网卡是否工作正常的时候,如果客户不想port mapping抓包,尽量说服之
 
8. 客户如果跟你说exchange和internet firewall之间没有其他网络设备,不要轻易信之
 
9. 看到ping的round trip time是负值,不要以为只是网速太快的结果。另外CPU也是有驱动的:http://support.microsoft.com/?id=895980
 
10. 现代化建设最需要的是好的网络人才
 
11. VB写多线程程序如果crash,可参照此文:http://www.freevbcode.com/ShowCode.Asp?ID=1287
March 31

装机民工

继ExPTA,ExRAP client之后,LoadGen再次考验民工的忍耐力
 
话说民工今天干活的时候,用到Exchange Load Generator,头一遭用这疙瘩,那个鸡冻啊。。。
 
作为LoadSim的升级版本,LoadGen除了支持Exchange 12外,crash也层出不穷,user experience真是没得说。
 
民工还惊奇地发现:在LoadGen中设置读写AD的帐号的时候,密码的显示方式是明文。。。
 
如果把配置信息存成XML,也不难发现位于DirectoryPassword的帐号密码,嗯也是明文的哈 Smile
 
很安全很强大啊 
March 16

新加坡印象 - 吃

之前听威廉同学说在新加坡吃得有多好,觉得有做广告之嫌,将信将疑的。去了以后觉得比想象中的吃得好,习习。
 
关键还是要找对地方。
 
头一天晚上饥不择食,跑到酒店楼下的Chijmes(据说是个女修道院)外的一家小酒吧点了一份BBQ Chix Wings,Ribeye Steak和Soup of the day。鸡翅分量挺大但没吃完,可能因为不喜欢吃酸酸甜甜的鸡翅。牛排还行,烤得挺嫩。酒吧在一个院子里,头顶是大树,风吹的时候总觉得树叶或虫子什么的会掉汤里....价格也不便宜,50多S$喔
 
周一晚饭去的Suntec city里的Tony Roma's,吃得蛮好。David同学说那里的Ribs不错,果不出其然。点了个Original Baby Backs,香啊。一开始还用的刀叉,后来就双手并用了。同去的女同学们点的Rib,steak啥的都吃不掉,于是便宜了Frank同学,这家伙手脚并用地啃了两人份...年轻就是好啊
 
周二,bootcamp一帮人聚餐,还是在Suntec city,听说Ben同学是素食主义者,于是找了家素食馆子Indinine。点了Shrooms Simplifried和banana boat。蘑菇炒饭灰常好吃,让我想起小时候家里做的糯米饭(虽然这炒的不是糯米)。店面的装修也有点特色,墙刷成绿色,密密麻麻地嵌着一溜灯泡,那真叫灯火通明。必须点名的又是Frank同学,伊点了两个main course,再次成为全场焦点。
 
周三在riverside point的珍宝seafood和威廉夫妇吃饭。威廉点了个套餐(Jumbo 20th set)。其中的几个菜都挺好吃的,可惜我只记得马来炒面了...很赞,和来福小馆的秘制拌面有得一拼。最后上的椒盐炒蟹虽然受到威廉同学的大肆吹捧,黑色的壳,需要用钳子夹开,但总觉得除了肉多点以外没啥特别的,可能因为是海蟹(斯里兰卡蟹)的缘故,看来吃味道还是河蟹比较好,吃蟹肉还是king crab爽。
 
周四和Frank和Tim三个人在老巴刹后面的老福建吃的午饭。贵且不好吃,三个人花了60$S,啧啧。菜的名字都挺新鲜的(不好意思,偶又忘光了),可就只有一碟普普通通的扬州炒饭俺们觉得味道还行。而且最最最重要的事这点没有正规的receipt,说了半天才给,是普通的纸上手写了菜名和价钱,纸上有很模糊的“老福建”的字样,拿着这样的receipt报销,估计要被挡回来 5555555
 
周四的晚上,我们又去了Tony Roma's,可惜这次Ribs烤糊了,唉。难怪电影的续集总是不如第一部来得好...
 
去圣陶沙玩的那天晚饭吃了taste of singapore,烤肉蘸的酱和酱黄瓜味道不错哈。另外点了啥xxx chilli crab,有点像国内的香辣蟹,中规中矩的说。
 
在新加坡俺们找到了跟上海大食代类似的地方,就是著名的老巴刹,赫赫。离俺们公司很近,午饭基本都在那解决。价格很便宜,一顿饭3~4 S$就搞定,以当地人的收入因该很合算了我想。nnd在徐家汇如果能找到3~4¥这样一顿该多好啊... 味道还不错,我吃的都是中餐,其他国家的也有,我貌似看到有印度和马来的,但怕吃不惯,所以没试。
February 17

PS是王道

老虎还没打掉,藏羚羊又出来了:http://forum.xitek.com/sorthread.php?threadid=504479&pagenumber=1
 
希望这只是照片作者的个人行为......
 
可是如果连“影响2006年度新闻图片”的评委们和伟大的CCTV都没看出来,那就比较奇怪了。
 
嗯,如果联想到HX社会这一大主题,倒也没什么好奇怪的哈
 
 
February 16

又见mmq

好久没打mmq了,今天跑源深体育馆瞅了下,发现个打mmq的新场子。
 
就在游泳馆旁边的室内篮球场整了10块场地,还在试营业。木质地板还凑合,不滑。光线差点,屋顶开了些个玻璃窗,有点晃眼,如果能开灯光会好些。
 
30块/小时,可能因为是试营业,前台也不管你在里边待多长时间,有体力的单挑个仨小时应该也没人赶。实属全民健身,空麻袋背米的好去处啊。住浦东的同学们可以去看看,一般人我还不告诉他。
 
February 06

年二十九行大运

搭7点10分o既大巴番肇庆,9点左右入城区,通常车行至星岩牌坊都要掉头回客运站。唔知是否因为系年二十九,只见从牌坊开始,向西一直大排长龙,完全没机会掉头。
 
于是司机兜入星荷路,然后转入康乐北,再兜入端州路番客运站。可怜我明明到左屋企楼下都唔可以落车。o甘大个仔都未见过肇庆塞车,年二十九大晒咩...
 
以前都系年初一朝早行大运,今年年二十九就行锅先,都几好喔。Smile
January 20

请问深圳

深南中路华富路附近有虾米好吃的店?偶要吃粤菜...
沿着深南路走了N远都没找到,最后还是回酒店楼下吃的大盘鸡...
撑死了也只吃了39块,nnd想把budge用掉都这么难,哼唧
January 09

宝贝, we will miss you...

1月4号,是小白来到俺们家的第13天...
 
就在这个普通的日子...小白躺在大臭怀里永远地睡着了...
 
关于犬瘟对于幼犬的杀伤力,俺们是早有耳闻。但接到电话的一瞬间,还是觉得胸口被狠狠戳了一记...
 
赶回家...看到一双红肿的眼睛,塞满杂物的笼子,和静静躺在纸箱里的小白...
 
抱起这个上午还嗷嗷大叫的小家伙,体温消散了大半...下意识地把脸贴近小家伙的脑袋,手搭在鼻子上,又放了下来...
 
捧着小白走了一些路,找到一块幽静的小园子,小白最后就长眠在这儿吧...
 
回家的路上,默默地想着这些天来小家伙带来的欢乐和忧愁,一抬头,已经在家门前了
 
推门进屋,臭臭一如既往地摇着小尾巴等在门后,眨巴着眼睛,侧着脑袋瞅着俺们,似乎什么事都没发生...
 
唉,希望天堂是个温暖的地方 Smile
 
 
January 01

last day of 2007

2007年最后一个礼拜,可以用累到抽筋来形容。
 
小白刚到俺们家没几天,就被发现得了犬瘟热,幼犬染上犬瘟只有10%的存活率,治疗过程中容易经常反覆...
 
唉,可怜的小白...
 
就在小白确诊同一天,臭臭也上吐下泻了一夜。把俺们吓的...还好只是普通的肠道感染,没有传染到犬瘟和细小...
 
于是每天一早带两个小家伙去“顽皮”复诊,打针。然后跑回公司赶手上的项目(年底要交货了 T_T)。OT到晚上9点,赶回家给臭臭打点滴...一打就是4,5小时,运气好的两点能合眼;如果运气不好,小样晚上还要吐啊吐的,一整晚都别想睡安稳了...
 
好辛苦的说...
 
臭臭现在已经可以吃回狗粮了,小白还得继续治一个月...能不能撑过一个月就要看小子造化了...
 
2007年结束了,希望坏运气都过去。小白啊你要加油哦...!!!
 
大家都要加油!Happy 2008!
December 06

又被BS了...

早上去c-store买早点,要了200ml的光明巧克力奶,店员问我要3块4,我记得一直卖2块8
 
我疑惑:这个要3块4?
店员:对亚
我:我买很多次了,都是2块8亚。。。
店员:现在外面牛奶都涨价了呀
我不相信:我昨天还买来着,也是2块8。。。
店员白了我一眼:今天开始涨的亚,你到底要伐啦?!
我掏钱:一下子贵6毛,也太多了吧。。。
 
靠,请问这年头除了工资以外,还有什么是不涨价的咧。。。
 
想想真是惭愧,人家26岁的小女生都身价过千亿,我都28了,每天还在因为这鸡毛蒜皮的玩意被BS,唉。。。
December 02

今天才发现在公司调程序比客户那里快多了 Auto
明天跑回公司写得了
aaronji,明天不用帮俺占位了,哈哈
December 01

为什么经常会加班 (ZT)

从xing jun同学的BLOG看到这个,转之以自勉。

现实是残酷滴,形势是严峻滴,同志们(暂时就俺一光杆司令),革命尚须努力啊。

================================

为什么经常会加班?
测算项目周期…就好像有条小鱼向你游过来.
小鱼来了
看这条小鱼!
那么小一条鱼
我可以把它吞了。一口就行!
是不是哦?真那么容易?
当然!这条鱼那么小!
但你以前就错过
闭嘴(脑子里说的)。这条鱼那么小。我正盯着它看呢。
一口咬下去就没了。还不够我塞牙缝的。这算鱼么?也就一小点儿。还特小内种。 我一口就能吃没了。
鱼来喽!
等等。好像不对。
太晚了。你Y都立军令状了。
从侧面看这鱼.
  .........