Monday, September 22, 2008

恢复Windows系统音频服务

将以下文本保存为 .reg 结尾的注册表文件,双击执行,然后重启就可以修复不见得Windows音频系统服务。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesAudioSrv]
"DependOnService"=hex(7):50,00,6c,00,75,00,67,00,50,00,6c,00,61,00,79,00,00,00,
52,00,70,00,63,00,53,00,73,00,00,00,00,00
"Description"="管理基于 Windows 的程序的音频设备。如果此服务被终止,音频设备及其音效将不能正常工作。如果此服务被禁用,任何依赖它的服务将无法启动。"
"DisplayName"="Windows Audio"
"ErrorControl"=dword:00000001
"Group"="AudioGroup"
"ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,
74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00
"ObjectName"="LocalSystem"
"Start"=dword:00000002
"Type"=dword:00000020

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesAudioSrvParameters]
"ServiceDll"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,
00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,
61,00,75,00,64,00,69,00,6f,00,73,00,72,00,76,00,2e,00,64,00,6c,00,6c,00,00,
00
"ServiceDllUnloadOnStop"=dword:00000001

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesAudioSrvEnum]
"0"="Root\LEGACY_AUDIOSRV\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001


如果缺少音量控制程序文件,下载这个 ;)
sndvol32.exe

Sunday, September 14, 2008

如何理解 Web2.0

[caption id="" align="alignleft" width="200" caption="爱搜书,中文最有料阅读网络"]爱搜书,最有料中文阅读网络[/caption]

中国的WEB2.0站点数量超过美国

什么是WEB2.0?可能每个中文站点都是吧,正好炒得越好越能获得投资,但是有一个网站是不是也是一个优秀的WEB2.0站点呢? 可能少了点用户创造内容的元素。ALEXA排名比较奇怪,一到节假日排名就不好。奇怪~

投资商啊,块来投资吧,这的确是个很有料的站点。 ;)

的确阅读市场前景广阔,把持阅读网络是会成功了,但请记住不要认为这不是一个网站,不单单是一个WEB,她是一个网络性的社会化阅读渠道,一种通过社会化的网络阅读的方式。

更新你的阅读习惯,开阔你的阅读视野,这才是爱搜书是目标。你的阅读,非常有料!

UPDATA : 网上发现一篇关于爱搜书的文章。

Monday, September 8, 2008

杨宗纬 - 让

绕过 GHS 用自定义域名发布 Blogger

! 这是一篇转载文章

2007年1月,Google Blogger 的自定义域名功能推出不到一个星期,就被 GFW 给废了。原因就是 GFW 隔断了国内用户对 Google 的免费主机托管服务 ghs.google.com 的访问。

今天试着将 App Engine 应用部署到自己域名的时候,发现 App Engine 不需要将 CNAME record 指向 ghs.google.com,从而可以避开 GFW。而同样的方法也可以适用于 Blogger。方法如下:

  1. 把 Blogger 的发布方式切换成“自定义域名(Custom Domain)”。在“你的域名(Your Domain)”一栏中填上域名,比如,py.thonic.org。保存设置(Save Settings)。

  2. 在你的域名注册商那里,修改域名(thonic.org)的 DNS 设置。为子域名(py)添加一条 A record,指向下面四个 IP 地址的其中之一。举例来说,就是添加这样一条记录:py.thonic.org 86400 IN A 216.239.34.21

    • 216.239.32.21

    • 216.239.34.21

    • 216.239.36.21

    • 216.239.38.21




DNS 设置的改动需要一段时间来完成,一般不会超过24小时。这样就可以重新使用 Blogger 的自定义域名功能了,只是,这次又可以持续多久呢?

我把上面的 IP 绑定到自己的域名了,ghs.luliban.com。以后也可以像 ghs.google.com 一样,添加一条 CNAME 记录到 ghs.luliban.com 来绑定 Google Blogger 或者 Google Apps 了。

Last Update: 2008/10/31

History(历史)命令用法 15 例

如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率。本文将通过实例的方式向你介绍 history 命令的 15 个用法。

  1. 使用 HISTTIMEFORMAT 显示时间戳当你从命令行执行 history 命令后,通常只会显示已执行命令的序号和命令本身。如果你想要查看命令历史的时间戳,那么可以执行:# export HISTTIMEFORMAT='%F %T '

    # export HISTTIMEFORMAT='%F %T '
    # history | more
    1 2008-08-05 19:02:39 service network restart
    2 2008-08-05 19:02:39 exit
    3 2008-08-05 19:02:39 id
    4 2008-08-05 19:02:39 cat /etc/redhat-release


    注意:这个功能只能用在当 HISTTIMEFORMAT 这个环境变量被设置之后,之后的那些新执行的 bash 命令才会被打上正确的时间戳。在此之前的所有命令,都将会显示成设置 HISTTIMEFORMAT 变量的时间。[感谢 NightOwl 读者补充]

  2. 使用 Ctrl+R 搜索历史Ctrl+R 是我经常使用的一个快捷键。此快捷键让你对命令历史进行搜索,对于想要重复执行某个命令的时候非常有用。当找到命令后,通常再按回车键就可以执行该命令。如果想对找到的命令进行调整后再执行,则可以按一下左或右方向键。

    # [Press Ctrl+R from the command prompt, which will display the reverse-i-search prompt]
    (reverse-i-search)`red‘: cat /etc/redhat-release
    [Note: Press enter when you see your command, which will execute the command from the history]
    # cat /etc/redhat-release
    Fedora release 9 (Sulphur)

  3. 快速重复执行上一条命令有 4 种方法可以重复执行上一条命令:

    1. 使用上方向键,并回车执行。

    2. 按 !! 并回车执行。

    3. 输入 !-1 并回车执行。

    4. 按 Ctrl+P 并回车执行。



  4. 从命令历史中执行一个指定的命令在下面的例子中,如果你想重复执行第 4 条命令,那么可以执行 !4:

    # history | more
    1 service network restart
    2 exit
    3 id
    4 cat /etc/redhat-release
    # !4
    cat /etc/redhat-release
    Fedora release 9 (Sulphur)

  5. 通过指定关键字来执行以前的命令在下面的例子,输入 !ps 并回车,将执行以 ps 打头的命令:

    # !ps
    ps aux | grep yp
    root 16947 0.0 0.1 36516 1264 ? Sl 13:10 0:00 ypbind
    root 17503 0.0 0.0 4124 740 pts/0 S+ 19:19 0:00 grep yp

  6. 使用 HISTSIZE 控制历史命令记录的总行数将下面两行内容追加到 .bash_profile 文件并重新登录 bash shell,命令历史的记录数将变成 450 条:

    # vi ~/.bash_profile
    HISTSIZE=450
    HISTFILESIZE=450

  7. 使用 HISTFILE 更改历史文件名称默认情况下,命令历史存储在 ~/.bash_history 文件中。添加下列内容到 .bash_profile 文件并重新登录 bash shell,将使用 .commandline_warrior 来存储命令历史:

    # vi ~/.bash_profile
    HISTFILE=/root/.commandline_warrior

  8. 使用 HISTCONTROL 从命令历史中剔除连续重复的条目在下面的例子中,pwd 命令被连续执行了三次。执行 history 后你会看到三条重复的条目。要剔除这些重复的条目,你可以将 HISTCONTROL 设置为 ignoredups:

    # pwd
    # pwd
    # pwd
    # history | tail -4
    44 pwd
    45 pwd
    46 pwd [Note that there are three pwd commands in history, after executing pwd 3 times as shown above]
    47 history | tail -4
    # export HISTCONTROL=ignoredups
    # pwd
    # pwd
    # pwd
    # history | tail -3
    56 export HISTCONTROL=ignoredups
    57 pwd [Note that there is only one pwd command in the history, even after executing pwd 3 times as shown above]
    58 history | tail -4

  9. 使用 HISTCONTROL 清除整个命令历史中的重复条目上例中的 ignoredups 只能剔除连续的重复条目。要清除整个命令历史中的重复条目,可以将 HISTCONTROL 设置成 erasedups:

    # export HISTCONTROL=erasedups
    # pwd
    # service httpd stop
    # history | tail -3
    38 pwd
    39 service httpd stop
    40 history | tail -3
    # ls -ltr
    # service httpd stop
    # history | tail -6
    35 export HISTCONTROL=erasedups
    36 pwd
    37 history | tail -3
    38 ls -ltr
    39 service httpd stop
    [Note that the codevious service httpd stop after pwd got erased]
    40 history | tail -6

  10. 使用 HISTCONTROL 强制 history 不记住特定的命令将 HISTCONTROL 设置为 ignorespace,并在不想被记住的命令前面输入一个空格:
    # export HISTCONTROL=ignorespace
    # ls -ltr
    # pwd
    # service httpd stop [Note that there is a space at the beginning of service, to ignore this command from history]
    # history | tail -3
    67 ls -ltr
    68 pwd
    69 history | tail -3


  11. 使用 -c 选项清除所有的命令历史如果你想清除所有的命令历史,可以执行:# history -c

  12. 命令替换在下面的例子里,!!:$ 将为当前的命令获得上一条命令的参数:

    # ls anaconda-ks.cfg
    anaconda-ks.cfg
    # vi !!:$
    vi anaconda-ks.cfg
       

    补充:使用 !$ 可以达到同样的效果,而且更简单。[感谢 wanzigunzi 读者补充]

    下例中,!^ 从上一条命令获得第一项参数:

    # cp anaconda-ks.cfg anaconda-ks.cfg.bak
    anaconda-ks.cfg
    # vi -5 !^
    vi anaconda-ks.cfg

  13. 为特定的命令替换指定的参数在下面的例子,!cp:2 从命令历史中搜索以 cp 开头的命令,并获取它的第二项参数:

    # cp ~/longname.txt /really/a/very/long/path/long-filename.txt
    # ls -l !cp:2
    ls -l /really/a/very/long/path/long-filename.txt
       

    下例里,!cp:$ 获取 cp 命令的最后一项参数:

    # ls -l !cp:$
    ls -l /really/a/very/long/path/long-filename.txt

  14. 使用 HISTSIZE 禁用 history如果你想禁用 history,可以将 HISTSIZE 设置为 0:

    # export HISTSIZE=0
    # history
    # [Note that history did not display anything]

  15. 使用 HISTIGNORE 忽略历史中的特定命令下面的例子,将忽略 pwd、ls、ls -ltr 等命令:

    # export HISTIGNORE=”pwd:ls:ls -ltr:”
    # pwd
    # ls
    # ls -ltr
    # service httpd stop
    # history | tail -3
    79 export HISTIGNORE=”pwd:ls:ls -ltr:”
    80 service httpd stop
    81 history
    [Note that history did not record pwd, ls and ls -ltr]

I use google docs!

office 2.0 大会刚刚闭幕, 关于WEB office 的应用VC的信心很高, 虽然不久前才经历了 google 云系统的宕机事件, 但是这视乎一点都不影响 web office 的应用. 当然我们不得不承认web office离大型企业依然很远.

现在 google docs 可以使用很多的模板了, 制作得很有专业水准, 写文档用 google docs 吧, 至少你会发现他很简单, 很实在, 很方便, 很有乐趣.