作者归档:admin

MacBook 下安装Win7 ghost版和VMware

买了一台MacBook Pro 372,作为给自己的生日礼物吧。

买的时候让店里的人给装了个BootCamp的XP,回来还是想试试装Win7,但我的Win7是个ghost版的,于是试啊试的,终于被安装上了。

1 在Mac里面启动BootCamp助理,开始安装。
2 用光盘启动后,执行里面的ghost,复制分区到Windows分区。
3 复制完成后,直接想启动Windows分区,是无法启动的。原因应该是启动缺省用的是分区1,但在BootCamp里面,Windows分区是分区3。
4 仍然用光盘启动,进入WinPE,进行分区表修复
5 这时候再启动Windows分区就能启动了
6 插入MacOS的光盘,安装驱动程序。

这时候,盗版Win7里面自带的一个激活工具也无法使用了,它好象也是要修改grldr, 又会把分区改掉。找了半天,找到一个OEM激活的,发现能用。

然后回到MacOS里面,安装VMware Fusion, 选择建立BootCamp的虚拟机。再用Spaces把启动的Windows虚拟机搞到新的桌面上,很爽~~

第一次应用Powershell

在日志中要统计一下收到多少次短信,试了试PowshellShell, 确实比较方便

Select-String e:\temp\logger\*.log -pattern “收到的短信” -Encoding “Default” | Measure-Object

日志是用GB码的,所以要带上 -Encoding “Default”

结果是:

Count    : 2947
Average  : 
Sum      : 
Maximum  : 
Minimum  : 
Property : 

一个网站崩溃问题的解决方法之总结

问题

公司的网站(ASP .NET MVC的架构) 频繁重启,甚至超过进程池的快速失败保护,导致Service Unavailable。

在自己的日志里,只有重启的记录,没法查到哪里出的错。看IIS日志,也没看出什么来。

事件查看器里面,重启的时候有下面的描述:

EventType clr20r3, P1 w3wp.exe, P2 6.0.3790.3959, P3 45d6968e, P4 system.data.linq, P5 3.5.0.0, P6 488ef99a, P7 92c, P8 0, P9 system.stackoverflowexception, P10 NIL.

可以看出来,是某个地方stack overflow了,但具体是哪里,事件查看器也没有记录堆栈信息(是不是因为太大了,无法记录?)

抓dump文件

希望出异常时能够将堆栈转储出来。原来做C++的时候,比较清楚注册表里AeDebug (HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\AeDebug) 的设置,看了看是vsjitdebugger.exe,这是因为这台机器上最早装过vs 2005。可是这个vsjitdebugger是弹出提示的,并没有转储信息。

删除之,用drwtsn32 -i,注册了dr. watson,以前都是用这个转储的。但发现崩溃后,并没有转储东西。搜了搜,发现这个只是用来处理非托管代码的(比如C++),而托管代码需要再另一个注册表项里面: HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\DbgJITDebugLaunchSetting和DbgManagedDebugger。

看了看这两个设置: DbgJITDebugLaunchSetting = 0x10, DbgManagedDebugger = vsjitdebugger.exe。看了下进程管理器中,居然有了300多个vsjitdebugger.exe进程。把vsjitdebugger.exe进程全部杀掉,注册表里面的DbgManagedDebugger也给干掉了。

这时候,崩溃时不会再出vsjitdebugger.exe进程了。但事件管理器中会出现新的错误:

事件 ID ( 0 )的描述(在资源( .NET Runtime )中)无法找到。本地计算机可能没有必要的注册信息或消息 DLL 文件来从远程计算机显示消息。您可能可以使用 /AUXSOURCE= 标识来检索词描述;查看帮助和支持以了解详细信息。下列信息是事件的一部分: .NET Runtime version : 2.0.50727.3603 – 未找到调试器。未指定注册的 JIT 调试程序。 单击”重试”使进程处于等待状态,此时可手动附加调试器。 单击”取消”可中止 JIT 调试请求。

这个无所谓,找不到DbgManagedDebugger了嘛,把DbgJITDebugLaunchSetting 改个其它值也就行了。可是我想转储啊,这里有什么可以转储了。

主角出现:下载Debugging Tools For Windows. 安装。然后将jitdebugger设为cdb.exe (其实这里只需要托管代码的,AeDebug只是顺手),将错误转储到c:\crash_dumps下。运行下面的reg文件即可:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
“DbgManagedDebugger”=”\”c:\\debuggers\\x86\\cdb.exe\” -pv -p %ld -c \”.dump /u /ma c:\\crash_dumps\\crash.dmp;.kill;qd\””
“DbgJITDebugLaunchSetting”=dword:00000002
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]
“Debugger”=”\”c:\\debuggers\\x86\\cdb.exe\” -pv -p %ld -c \”.dump /u /ma c:\\crash_dumps\\crash.dmp;.kill;qd\”” “Auto”=”1”

如果是64位机器呢,则上面是x64目录下的cdb,再将[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework]和[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug]下面的相应项设为x86的。

好了,抓到dump文件了。

查看dump文件

用windbg来打开。记住先设置好Symbol File的目录: D:\TXWap_Work\www\TXWap\bin; c:\symbols; srv*c:\symbols*http://msdl.microsoft.com/download/symbols

前面的是自己本地的工作目录,下面有自己DLL相应的pdb。而后面的是说系统没有的话,到某个网站去下载符号文件。

然后再windbg中打开dump文件。

在windbg中要调试托管代码,需要加载一个调试器扩展SOS(Son of Strike),这个工具在Debugging Tools For Windows里面就有了。因此只要下面这样加载SOS.dll:

.loadby sos mscorwks

然后看所有的线程:

!threads

PreEmptive GC Alloc Lock
   ID OSID ThreadOBJ State GC Context Domain Count APT Exception
   20 1 3210 000dc110 1808220 Enabled 00000000:00000000 00105678 1 MTA (Threadpool Worker)
   31 2 4430 000e9fa0 b220 Enabled 04d9213c:04d93f5c 000ccbc0 0 MTA (Finalizer)
   32 3 3190 00100d48 80a220 Enabled 00000000:00000000 000ccbc0 0 MTA (Threadpool Completion Port)
   33 4 fc4 00102f00 180b220 Enabled 00000000:00000000 00105678 1 MTA (Threadpool Worker)
   34 5 15a4 00104c60 1220 Enabled 00000000:00000000 000ccbc0 0 Ukn
   35 6 30dc 001178f0 180b220 Enabled 0d303d20:0d304e60 00105678 1 MTA (Threadpool Worker)
   36 7 466c 00130a30 180b220 Disabled 0d313ac8:0d314e68 00105678 1 MTA (Threadpool Worker)
   21 8 f64 00151d08 180a220 Disabled 0335d2cc:0335da50 00105678 1 MTA (Threadpool Worker)
   39 9 3010 1b2d5070 180b220 Enabled 093004c4:0930057c 00105678 1 MTA (Threadpool Worker) System.StackOverflowException (0ecf00a4)
   41 a 28f0 1b2e2778 180b220 Disabled 11414e0c:11415924 00105678 1 MTA (Threadpool Worker)
   42 b 2174 1b2e2b70 380b220 Enabled 00000000:00000000 00105678 0 MTA (Threadpool Worker)
   43 c 35f4 1b2e3478 180b220 Enabled 11124dd8:111254d8 00105678 1 MTA (Threadpool Worker)
   44 d 1b98 1b2e40e8 180b220 Enabled 032e0e28:032e1a50 00105678 1 MTA (Threadpool Worker)
   45 e c98 1b2e4ac8 380b220 Enabled 00000000:00000000 00105678 0 MTA (Threadpool Worker)
   46 f 23e4 1b2e5608 180b220 Disabled 09300c70:0930257c 00105678 1 MTA (Threadpool Worker)
   47 10 2764 1b2e6148 380b220 Enabled 00000000:00000000 00105678 0 MTA (Threadpool Worker)
   48 11 2318 1b2e6c88 180b220 Disabled 0b3e4124:0b3e5dc8 00105678 1 MTA (Threadpool Worker)
   49 12 1cbc 1b2e77c8 380b220 Enabled 00000000:00000000 00105678 0 MTA (Threadpool Worker)
   50 13 560 1b2e8338 180b220 Enabled 0b3707ac:0b3719d0 00105678 1 MTA (Threadpool Worker)
   51 14 45c0 1b2e8ea8 180b220 Enabled 0917eacc:0918057c 00105678 1 MTA (Threadpool Worker)
   52 15 28e4 1b2e9a90 180b220 Enabled 07281228:07283190 00105678 1 MTA (Threadpool Worker)
   18 16 17a0 1b2d7fc0 180a220 Enabled 00000000:00000000 000ccbc0 0 MTA (Threadpool Worker)
   53 17 2f94 1b383e38 380b220 Enabled 00000000:00000000 00105678 0 MTA (Threadpool Worker)
   XXXX 18 9c8 1e853958 80010220 Enabled 00000000:00000000 000ccbc0 0 Ukn
   

看到了哪个线程有异常了吗?切换到39线程:

~39s

看堆栈:

!clrstack

可以看到堆栈列表。定位到是我们哪个函数出的问题,后面的事情就好办了 🙂

入手一部HTC Desire G7

用起来还是挺爽的。有点小遗憾就是是个阿拉伯版的,有些预装程序还删不掉,看着《古兰经》什么的怪怪的,啥时候刷掉它。

BREW模拟器无法连接本地服务器的问题

BREW模拟器无法连接本地服务器的问题

Edit the “Sockets” entry in your device skin file.
The entry has the following structure BREW2.1 onwards.

Sockets <nSocketLimit> <bListenAccept> <bShutdown> <bLoopback> <nMaxSendTo>

where the new members are ->

bListenAccept: the device supports Listen(). Default: 0
bShutdown: the device supports Shutdown(). Default: 0.
bLoopback: the device supports a loopback interface (i.e. 127.0.0.1). Default: 0.
nMaxSendTo: the maximum payload size for UDP datagrams sent via OEM_SendTo(). Default: 1472 bytes.

主要是Loopback一项,改为 1

翻墙

今天继续研究了研究iPod Touch上的翻墙。以前在PC上总是带tor,速度感觉很慢,而且经常要换gateway,特别麻烦。其实我有国外托管站点的ssh帐号,以前也试过用ssh翻墙,只是配合FoxyProxy总是不成功,还得每次手工进行配置。这次又试了试,换了个AutoProxy插件,居然可以了,很方便,速度超快,感觉超爽。而且AutoProxy是国人写的,有现成的gfwList,还是动态维护,哈哈,云计算的好处咯。回过头iPod Touch也用ssh的方式翻墙成功了,不过还得下个MobileTerminal直接在touch上操作,我用ssh secure shell连到touch上执行似乎不行,折腾了老半天。不管怎么说,现在可以在躺在床上看facebook和twitter了,呵呵…这两天RP超好说,有点点geek的感觉了…

越狱成功

2月份刚买到iPod Touch的时候,第一次连接就手贱,升级到了3.1.3。然后发现3.1.3还没法破解。就算想刷回到3.1.2也没法回,苹果2月初正好关闭了3.1.2固件验证。搜了很长时间,有说可以怎么怎么弄的,但都没提到100%成功,因此一直不敢弄,只好下了一大堆免费的玩意玩玩。后来懒得再去每天看有没有破解,慢慢就淡了,也就当成电子书来。早上又心思一动,再去一搜,发现5月初新的破解已经出来了。赶忙试试,很简单就越狱成功了,后来连接cydia,ssh啥的,虽然都碰到一些小麻烦,但都搞定了。早上想收拾家洗洗衣服啥的都没做,但心情仍是很爽,出去吃一顿去了,哈哈哈。。。

[摘]关系

一个强大的互联网产品,要具备两个特点。
第一、直指人心的力量~~一个流行的互联网应用,好像一曲流行歌,一刀砍断一个年龄层;
第二、使用这个互联网产品的,大家会基于这个互联网产品建立新的关系。并且按照同样的逻辑,可以不断探求更多新的关系。大家对这种关系的热衷,就是这个网络产品的黏度。
QQ和MSN相比,QQ的关系比MSN开放。而GMAIL,采用了更为封闭的关系,也许长久黏度更高。开心的真实朋友关系本来是它最强大的力量,但是似乎开心的运营团队并没有太珍惜这一点。
目前从对网络关系本身的把握和野心来说,新浪微博最具野心。新浪微博正力图建立一种比QQ更开放的关系。 2005年之前的新浪是媒体,2005年之后的新浪是名利场。新浪微博的热辣刺激是,似乎,你可以在这里,和传说中的姚晨、潘石屹、洪晃有了某种关系。新关系的建立和探求,是很多人,最孜孜以求的。很多人认为,这就是传说中的机会。所以,很多很多人,把大把的时间和精力扔在了这里。
“关系”是两个字”关”和”系”。”相关”才能”系得上”。最早的关系高手是《战国策》里的纵横家。客观现实没有变化,关系高手操纵的是对相关性的理解,和利益联系的方式。后来,发现大SALES的价值,只是”系”,”关”的本身在于业务主体的自身强度和天然相关性。让自己变得更强,比”系”的技巧,更有意义。
(via 闲花照水录)

[摘]通信和社区

熟人之间的联系,是通信;生人之间的联系,是社区。 我们最重要的社会资源,其实都存放在我们的电话通讯录中。这种关系移植到互联网上,在保留一对一通信的前提下,还有了向一对多或者多对多扩展的可能性。所以在我看来,Facebook就是一个更复杂、更扩展的电话通讯录。Facebook自己也不止一次地强调,”我们不是社区”,但这一点总是被大家忽视。

与熟人社交相关联的,必定是通信安全和隐私控制。所以熟人社交必须是收敛的,要求相对的私密性。所以Facebook上的绝大部分内容,是永远都不可能允许Google索引的。

社区则不同。通常而言,社区是一个开放性的、自组织、自调节的生人群体,其连接的纽带,或者是兴趣(比如开源社区、户外活动社区),或者是特定的目的(比如BT种子分享社区、站长社区),或者是某种共同的身份(比如同学会、同乡会、车友会)。社区一般不太关心成员与成员之间关系的强度,话题和活动,才是社区的核心。

通信强调熟人之间的联络,社区则鼓励成员的参与和分享。通信只对熟人有价值,社区则对所有社区成员,甚至社区之外的人有价值。所以社区一般不会屏蔽搜索引擎爬虫。

综上,我认为一个网站的定位,决定了其业务逻辑。而自相矛盾的功能设计,很可能会破坏业务逻辑,最终损害网站的核心价值。当然,在一个大型通信平台上,提供某些社区功能,是必要的,也是可行的;同样,在一个社区中提供某些通信功能(比如Twitter的Direct Messages设计,以及豆瓣的友邻分组),也同样必要而且可行。但这种功能的提供,必须以不伤害网站的本质为前提。

(via keso)