Wednesday, December 17, 2008

Opera在Debian Lenny下的utf-8字体解决方法

[caption id="attachment_999" align="alignright" width="150" caption="Opera Browser"]Opera Browser[/caption]

Opera BrowserOpera在Linux上的中文UTF-8字体显示一直是最头痛的事情。这两天在Debian Lenny上又研究了一下。Opera(9.63)在选择UTF-8中文字体的时候很奇怪,一会这样一会那样。使用

grep fonts /proc/`pgrep opera | head -1`/maps | awk -F" " '{ print $6}'

可以找倒当前Opera所使用的字体 ;)  可以看出,文泉字体或者雅黑以外有其他中文字体出现,当然也有可能是日文字体,英文日文中也有中文。然而在GBK的网页下,就没有问题。

我使用的解决方法是使用 en_US.utf-8 的locale来启动Opera,这样UTF-8的中文显示就没有问题。如果不能使用 fcitx 等输入法,那大多是因为没有 en_US.utf-8 的locale之原因。添加即可:

$ sudo dpkg-reconfigure locales

Wednesday, November 26, 2008

你应该尝试的高级Linux系统

有的Linux用户可能会认识自己用的Linux发型版很先进了,当然这只是个人选择问题。现在把那些只注重用户界面,并且把配置藏在UI下面的发行型吧,使用以下介绍了几个“高级”发型版,你可以学到更多关于真正Linux的知识,我向你保证,命令行并不是大多数人想像中的那么可怕,反而,它非常友好,非常强大。
很好,很强大。


  1. Archlinux

    Archlinux是一个对桌面PC非常优化的发型版,Archlinux社区的维基可以让你轻松安装上第一个Archlinux。虽然不是最优化,然而还有比自己去探索和发现更有趣的事情吗?对于那些第一次接触Linux的朋友,我特别的推荐,因为,她的确是那么简单和“快”。中文资源这里是很有帮助的(强大的LinuxSir,总是Linux Fans的最爱)。Archlinux最有特点的是她的软件包发布总是最及时的,官方的软件包库可以让你有一钟家的感觉。要安全,要上手快,要可爱的命令行,没错,就是Archlinux。

  2. Slackware

    Slackware,一个老牌的发型版,最象BSD的发型版,是的,凭你的感觉,她很稳定。稳定是Slackware一直追求的。我一直都是Slackware忠实用户,目前在我的Laptop上运行得很好,对于一个开发者来说,Slackware的稳定性绝对是你想要的。以前的Slackware可能会让人觉得难以安装,不过现在的版本安装起来非常简单。同样的中文资源都可以在这里找到。如果你还是不相信我,那就到Slax.org下载一个LiveCD来试试吧(也可以到中文的衍生版本看看)。最后到说的是现在slackware的软件包升级不是原来那么难了,使用slapt-get,就象使用apt-get那样方便,然后使用Fluxbox配合上命令行,开始享受工作和生活吧。

  3. Gentoo

    一个可以让你把机器性能发挥极致的发型版,燃烧你的PC和服务器吧,为了获得最快最优化的速度。一些MySQL服务器专门选择Gentoo来搭载,因为她的确可以让MySQL飞起来。另外Gentoo的UI也是非常棒的。使用Gentoo的人总会让其他Lixnu用户觉得那才是别具一格。Gentoo的软件包管理器叫做Portage。管理工具被称为emerge,这个是建立在BSD系统的Port之上。不同的是Gentoo包含了Ebuilds。Gentoo的安装可以分为三个级别,你可以自己选择,这个取决于你要建立一个什么样的系统和你的时间。

    • Stage1: 你必须从基础系统和启动开始编译

    • Stage2: 系统启动环境已经建立,但是你必须基础系统

    • Stage3: 什么都编译好了,直接安装吧




差不多就到这里了,更多的就交给你了,Linux并不只是Ubuntu, Fedora或者Suse那个样子。更真实,更高级的你一定可以在上面我介绍的三个发型版中找到。

    Monday, November 24, 2008

    Yellow Dog发布新版本

    [caption id="attachment_984" align="alignright" width="200" caption="New Yellow Dog Linux Logo"]New Yellow Dog Linux Logo[/caption]

    Yellow Dog 是一个可以运行在PS3上的Linux发型版,是由Terra Soft发布,不久前被fixstars收购了Terra Soft,现在它发布了新的Yellow Dog Linux,支持SONY's Playstation 3、Apple PowerPC G4/G5、IBM Power Systems和YDL PowerStation。Yellow Dog Linux 6.1是Fixstars收购Terra Soft后第一个版本,基于RHEL/CentOS的Linux发行版,提供多个很好的改进,其中包括添加针对PS3's SIXAXIS controller的蓝牙支持。根据官方站点上的介绍,Yellow Dog同样适用与办公、服务器以及群集,在他的DVD中包含2000多个软件包。

    你可以免费适用Yellow Dog,从一些知名的镜像站点可以轻松获得,比如这里,官方下载地址在这里

    Monday, November 17, 2008

    百度搜索,不该存在的存在

    第一次觉得CCTV做了一件关于网络的好事,第一次看到了这次经济危机中的一点曙光,第一次可以郑重的向朋友说“不要用百度了,它们在做违背良知的事情,只有这样,百度才能赚钱!”。

    百度,如何不灭亡,因为你是不该存在的存在。你让太多的无辜人受伤,让我们上当,百度,我希望早日和你说再见,别再在网络上浪费网络带宽。

    谢谢CCTV,谢谢大家。

    CCTV的两次百度报道 :

    第一次报道


    第二次报道

    Saturday, November 15, 2008

    假期结束

    刚刚结束了一个月的假期,成都的11月显然比重庆冷一些。不知道经济危机会持续多久,希望早些结束,可是世事未必如我们想的那么简单。

    Friday, October 31, 2008

    最近一直在下雨

    最近重庆一直都在下雨,今天我和心爱的女皇陛下在家里呆了一天,看了一天的《丑女无敌》,马上要睡觉了,明天还要早起。

    Tuesday, October 28, 2008

    Sunday, October 26, 2008

    如果分辨率超出显示器支持黑屏怎么恢复

    当我们不小心调整桌面显示分辨率到显示器不支持的时候该怎么办?那个时候显示器会一直黑屏.这里有一个解决办法:进入安全模式,在硬件里停用显卡.再正常登陆,系统会提示重新设置屏幕分辨率,之后再重新启用显卡就可以了.

    links for 2008-10-25

    Thursday, October 23, 2008

    Wednesday, October 22, 2008

    10+设计资源和灵感的必备网站

    原文地址 http://www.cnbeta.com/articles/67747.htm

    在这个互联网,并不是的有人都掏心掏肺让你可以真正学到东西。所以,找到一个有高质量,有内容的资源和灵感网站并不是一件容易的事。自从自己学习网页设计以来,收集了不少网站,这里,分享10+必备设计资源和灵感的网站,或许,会有你一直寻找,但并未真正找到的:

    1. CSS Globe - 你可以不看A list Apart,但这个我想是必备的。这样的说法多少有些争议,毕竟ALA是受大部分人推崇的。不过,这个网站总能收集到你需要的CSS技巧、JS教程、用户体验,甚至WordPress资源。

    cssglobe.gif

    2. Smashing Magazine - 估计她的名声之大到了可以不用介绍的地步。以收集出名。当然,我是在夸奖,这个网站的质量无可质疑,可以说是篇篇精品,涉及CSS/JS/平面设计等。

    sm.gif

    3. Nettuts - 关于CSS/JS/PHP,各种关于网页设计和网页功能实现的技巧,有时候,即使你不认识CSS或者PHP,这个网站的文章都会让你实现某个功能/效果,所有讲解都非常详细。

    nettuts.gif

    4. Web Designer Wall - 跟Nettuts相似,内容没有Nettuts多,不过,绝对每篇精品,大多为作者自己写的,原创性比较高。主要关注网页设计与平面设计。

    wdw.gif

    5. Noupe - 又一个相对比较多收集内容的网站,貌似是因为一个关于Wordcodess教程系列而出名,不过,其内容远远不及这些,关注的内容大多关于网页设计的技巧。

    noupe.gif

    上面介绍的都是综合性比较强的,下面介绍一些内容比较专注的网站,你想找到的,这里都有相关的顶尖资源在这里,他们要做的就是顶尖的内容:

    6. Fonts500 - 500种字体,还怕找不到你想要的?不过,都是英文字体。一般情况下,需要比较特别的中文字体,都需要自己制作。

    font500.gif

    7. ColourLover - 有没有总听人说,这个主题的配色很sofish? 对,颜色可以建立一个品牌,就像一个商标一样,给网站找一套合适的配色可以让你的品牌更深入人心,而ColourLover可以帮到你。

    colourlover.gif

    8. LogoPond - 主题像你的衣服,而LOGO就像你的脸孔,一个成功的LOGO总是让人印象深刻,不需要多华丽,但至少要有自己的特色。看看LogoPond吧,她会给你灵感。

    logopond.gif

    9. CSS Mania - 像A List Apart一样,她备受推崇,她被视为灵感的汇集地。当然,并没有那么神圣,但CSS Mania总能带来漂亮的、独具创意的网站,让你耳目一新。

    cssmania.gif

    10. ZCOOL -这个对于国内的设计师来说,可能相对比较熟悉。提供PNG/PSD/ESP/AI等素材,主要关注平面设计,还有JS以及一些的酷站。个人在图片素材上,经常在上面淘宝。

    zcool.gif

    11. Web Design List - 最后,让我们来个大集合吧,你还想要什么呢?JS/CSS/XHTML/IE Hack/Blog程序/等,关于标准化网页设计的内容,这里有很多权威的链接提供给我。

    list.gif

    Tuesday, October 21, 2008

    林青霞早期照片

    [gallery=3]

    GFW又封锁了App Engine的可用IP

    216.239.34.21 这个IP已经不能用了,我已经放弃了在 App Engine 上的项目了,可恶的GFW,何时才会停止。只有愤慨的说一句:
    STOP GFW!

    Tuesday, October 14, 2008

    盘古空间(重庆)果然很垃圾

    盘古的Cpanel总是过期过期过期,根本就有问题。访问速度极不稳定,就我在成都来说。今天更可笑的事情发生了,这家公司提供的合租服务器域名 myblognow.com 居然访问不到了,解析不出来了,应该是过期了。今天莫名其妙的FTP也不能登陆了,太垃圾了。让我再一次鄙视一下这样不专业,不负责的公司,这样的公司根本不配做虚拟主机业务,因为我在这里受害颇深,希望大家不要用他们的服务器,如果要用也不要运作自己的核心业务,比如跑几个垃圾站点,放几个图片还是可以的。毕竟我也还是这个公司的用户。唉,不想说多了,大家自己去体会吧。

    Monday, October 13, 2008

    万恶的GFW

    今天又一个可以访问的 App Engine 自定义服务器IP被无耻的 Block 了,为什么要这么做?到底是谁在Block。放弃这里吧,我们可以活得更自由,更快乐,为这个目标,我将一生去努力。
    如果说这样会保护一些人的利益,那我们应该肯定这些人绝对不是有钱有势的普通人。

    Wednesday, October 8, 2008

    恢复右键菜单中的“新建文本文件”菜单项

    最近没有新建文本文件的选项了,估计是安装软件的时候导致的问题,把这个给去掉了。
    一般文本文件是常用来作为记事或者做一些简单的记录用,很方便,新建一个就填写内容就好了。

    自己知道是注册表的事情,可是查了一下资料,找到了一个可行的方法:

    新建一个 txt_new.reg 文件,叫啥名字没关系,只有是 .reg 文件就可以,方便点击运行导入注册表的,内容如下:


    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT.txt]
    @="txtfile"
    "Content Type"="text/plain"

    [HKEY_CLASSES_ROOT.txtShellNew]
    "NullFile"=""

    [HKEY_CLASSES_ROOTtxtfile]
    @="文本文档"

    [HKEY_CLASSES_ROOTtxtfileshell]

    [HKEY_CLASSES_ROOTtxtfileshellopen]

    [HKEY_CLASSES_ROOTtxtfileshellopencommand]
    @="NOTEPAD.EXE %1"

    Monday, October 6, 2008

    给Opera加上FlashBlocker

    在 Slackware 下使用Opera是一件很开心的事,但是烦人的Flash总是在燃烧电池。加一个类似Firefox的Flash Blocker 吧

    [caption id="attachment_939" align="aligncenter" width="291" caption="Flash Blocker For Opera9"]Flash Blocker For Opera9[/caption]

    !终于安静。开心享受浏览WEB的乐趣。下面的链接可以下,阅读ZIP包中的TXT文档安装(英文)。

    flashblocker

    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 吧, 至少你会发现他很简单, 很实在, 很方便, 很有乐趣.

    Sunday, August 31, 2008

    Css样式兼容IE6,IE7,FIREFOX的写法

    根据FF和IE对一些符号识别的差异,我们可以单独对FF以及IE定义样式,例子:

    区别IE6与FF:
    background:orange;*background:blue;
    区别IE6与IE7:
    background:green !important;background:blue;

    区别IE7与FF:
    background:orange; *background:green;
    区别FF,IE7,IE6:
    background:orange;*background:green !important;*background:blue;
    注:IE都能识别*;标准浏览器(如FF)不能识别*;

    • IE6能识别*,但不能识别 !important,

    • IE7能识别*,也能识别!important;

    • FF不能识别*,但能识别!important;



    所以标准的写法FF,IE7,IE6:
    color:#fff; *color:#000 !important; *color:#ff6600;
    firefox:白色,IE7:黑色,IE6:橙色

    另外再补充一个,下划线”_”,
    IE6支持下划线,IE7和firefox均不支持下划线。

    于是大家还可以这样来区分IE6,IE7,firefox:
    background:orange;*background:green;_background:blue;
    注:不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面。

    Friday, August 29, 2008

    Google Get Error

    [caption id="attachment_887" align="alignnone" width="300" caption="Google Get Error Page"]Google Get Error Page[/caption]

    Thursday, August 28, 2008

    Another Xorg.conf

    在笔记本上使用usb的鼠标真的是不好受,可能是由于我的这个usb鼠标的原因。再发一次配置。


    #
    # zhuzhu@cpan.org
    #
    Section "Module"
    Load "dbe" # Double buffer extension
    SubSection "extmod"
    Option "omit xfree86-dga" # don't initialise the DGA extension
    EndSubSection
    Load "type1"
    Load "freetype"
    Load "speedo"
    Load "glx"
    #Load "synaptics"
    EndSection

    Section "Files"
    RgbPath "/usr/share/X11/rgb"
    FontPath "/usr/share/fonts/local/"
    FontPath "/usr/share/fonts/misc/"
    FontPath "/usr/share/fonts/OTF/"
    FontPath "/usr/share/fonts/TTF/"
    FontPath "/usr/share/fonts/Type1/"
    FontPath "/usr/share/fonts/CID/"
    FontPath "/usr/share/fonts/Speedo/"
    FontPath "/usr/share/fonts/75dpi/:unscaled"
    FontPath "/usr/share/fonts/100dpi/:unscaled"
    FontPath "/usr/share/fonts/75dpi/"
    FontPath "/usr/share/fonts/100dpi/"
    FontPath "/usr/share/fonts/cyrillic/"
    FontPath "/usr/share/fonts/vista/"
    EndSection

    Section "InputDevice"
    Identifier "Keyboard1"
    Driver "kbd"
    EndSection

    Section "InputDevice"
    Identifier "Mouse2"
    Driver "mouse"
    Option "Protocol" "IMPS/2"
    # Option "SendCoreEvents" "true"
    # Option "CorePointer"
    Option "Name" "Logitech USB optical mouse"
    Option "Device" "/dev/input/mice"
    # Option "Device" "/dev/mouse"
    # Option "Device" "/dev/psaux"
    # Option "BaudRate" "9600"
    # Option "SampleRate" "150"
    # Option "AlwaysCore" "true"
    Option "ZAxisMapping" "4 5"
    # Option "Buttons" "5"
    option "Emulate3Buttons" "true"
    # Option "Resolution" "800"
    EndSection

    Section "InputDevice"
    Identifier "Configured Mouse"
    Driver "mouse"
    Option "Emulate3Buttons" "true"
    EndSection

    Section "Monitor"
    Identifier "My Monitor"
    HorizSync 31.5 - 50.0
    VertRefresh 40-90
    EndSection

    Section "Device"
    Identifier "VESA Framebuffer"
    Driver "vesa"
    #VideoRam 4096
    EndSection

    Section "Screen"
    Identifier "Screen 1"
    Device "VESA Framebuffer"
    Monitor "My Monitor"
    DefaultDepth 24
    Subsection "Display"
    Depth 8
    Modes "1024x768" "800x600" "640x480"
    EndSubsection
    Subsection "Display"
    Depth 16
    Modes "1280x800" "1024x768" "800x600" "640x480"
    EndSubsection
    Subsection "Display"
    Depth 24
    Modes "1280x800" "1024x768" "800x600" "640x480"
    EndSubsection
    Subsection "Display"
    Depth 32
    Modes "1280x800" "1024x768" "800x600" "640x480"
    EndSubsection

    EndSection

    #Section "InputDevice"
    # Identifier "Synaptics"
    # Driver "synaptics"
    # Option "SendCoreEvents" "true"
    # Option "Device" "/dev/psaux"
    # Option "Protocol" "auto-dev"
    # Option "SHMConfig" "true"
    # #带#的为可选项,用来设置边界大小及速度及滚动等。具体见程序synclient.
    # Option "LeftEdge" "1700"
    # Option "RightEdge" "5300"
    # Option "TopEdge" "1700"
    # Option "BottomEdge" "4200"
    # Option "FingerLow" "25"
    # Option "Fingertop" "30"
    # Option "MaxTapTime" "180"
    # Option "MAxTapMove" "220"
    # Option "VertScrollDelta" "100"
    # Option "MinSpeed" "0.06"
    # Option "MaxSpeed" "0.12"
    # Option "AceelFactor" "0.0010"
    # Option "SHMConfig" "on"
    # Option "RTCornerButton" "2"
    #EndSection

    Section "ServerLayout"
    Identifier "Default Layout"
    Screen "Screen 1"
    # Each InputDevice line specifies an InputDevice section name and
    # optionally some options to specify the way the device is to be
    # used. Those options include "CorePointer", "CoreKeyboard" and
    # "SendCoreEvents".
    # InputDevice "Synaptics" "AlwaysCore"
    # InputDevice "Synaptics"
    # InputDevice "Mouse1" "CorePointer"
    # InputDevice "Mouse2" "AlwaysPointer"
    # InputDevice "Configured Mouse" "CorePointer"
    # InputDevice "CorePointer"
    InputDevice "Keyboard1" "CoreKeyboard"
    EndSection

    #Section "ServerLayout"
    # Identifier "Default Layout"
    # Screen "Default Screen"
    #在类似的地方再加入下面这一行:
    # InputDevice "Synaptics" "CorePointer"
    # InputDevice "Keyboard1" "CoreKeyboard"
    # InputDevice "Mouse" "SendCoreEvents"
    #EndSection

    Wednesday, August 27, 2008

    Testing On Work Laptop is a Bad Idea

    为了测试 kde4.1 (slackware-current)里面的包,我安装了,不过testing的版本的确非常不好,还是换回来了,看到又要折腾一个下午了…… 再也不在工作用的电脑上安装testing的包了,特别是这样大型的桌面环境。

    Thursday, August 21, 2008

    Python 八荣八耻

    以动手实践为荣 , 以只看不练为耻;
    以打印日志为荣 , 以单步跟踪为耻;
    以空格缩进为荣 , 以制表缩进为耻;
    以单元测试为荣 , 以人工测试为耻;

    以模块复用为荣 , 以复制粘贴为耻;
    以多态应用为荣 , 以分支判断为耻;
    以Pythonic为荣 , 以冗余拖沓为耻;
    以总结分享为荣 , 以跪求其解为耻;


    每日至少抽一刻钟,解答邮件列表中初学者的问题,
    每周至少抽两小时,整理新学知识将体验发表/分享出去,
    通过Blog/Wiki/MaiList/个人网站……
    每旬至少抽四个小时, 来翻译自个儿喜爱的自由软件的文档,
    每月至少抽八小时, 快乐的编程,推进自个儿的项目,
    每年至少参加一次, 自由软件的活动,传播自由软件思想,
    发展一名“自由人”……

    只要我们每个人都坚持下去……
    10年!就足以改变中国软件的整体风貌!

    Tuesday, August 19, 2008

    Frontpage hanging CPU on Hostmonster with Cpanel

    Frontpage hanging CPU on Hostmonster with Cpanel, It's truth, author.exe cross most cpu time, about 99%, on Hostmonster with Cpanel. Google will find much like this. Such as this. or such as hostmonster server host266.

    I think the team of Hostmonster need remove some frontpage  extensions.








    From Pic


    From Pic


    From Pic

    Monday, August 18, 2008

    使用自由软件测试HTTP服务

    一个测试HTTP服务器极限的好方法就是模拟高负载下的HTTP服务器, 有5款自由软件是您的最好选择: curl-loader, httperf, Siege, Tsung, and Apache JMeter.

    • httperf
      测试5000次连接,每次50个请求
      httperf --server=localhost --uri=/ --num-conns=5000 --num-calls=50
      高级应用
      httperf --client=0/1 --server=localhost --port=80 --uri=/ \
      --send-buffer=4096 --recv-buffer=16384 \
      --num-conns=5000 --num-calls=50

      你也可以尝试一下一个更简单的类httperf软件http_load.

    • Siege
      和httperf类似, 上手非常简单
      siege localhost
      利用sproxy连接代理服务器
      sproxy -v -o urls.txt
      使用代理服务器
      siege -v --internet --file=urls.txt



    参考文章: http://www.linux.com/feature/143896

    Friday, August 15, 2008

    Google App Engine 被GFW搞掉了

    真的感到非常气愤和无助, GFW, 我们得罪你的吗, 我不期待民主, 不期待法制了, 只期待早日离开这个地方. 越块越好.

    Tuesday, August 5, 2008

    windows不能登录samba问题

    如果遇到Windows在不能登录samba, 就是说不能输入用户名时, 使用 control keymgr.dll 加入对应的主机和用户名即可.

    Saturday, August 2, 2008

    5 个充满想象力的 Web 调色板

    Web 设计离不开调色板,现成的调色板多不胜数,不管是 Windows 标准色板,还是 Web 标准色板,还是 Pantone 色板,它们虽然准确,完整,但缺乏想象力,下面要介绍的 5 个调色板(或者说调色板生成工具)可以激发你的设计想象力。

    Kuler
    Kuler 是 Adobe 实验室出品的调色板生成工具,完全基于 Flash。你可以创建自己的配色方案,也可以浏览,搜索别人的方案,这些配色方案可以下载为 Adobe ASE 格式并被 Adobe Creative Suite 中的程序调用。

    Color Hunter
    Color Hunter 是一款基于 flickr 图库的调色板工具,它最有趣的地方是,可以根据 flickr 中的图片,自动生成该图片的色板,你可以通过 Tag 搜索图片,也可以上载本机中的图片。

    Color Palette Generator
    和 Color Hunter 一样,Color Palette Generator 也是根据图片生成调色板,但比 Color Hunter 简单,但简单的东西可能更好用,你只需要提供任何一幅图片的 URL 地址,该工具会立刻为你生成一个色板。

    [caption id="" align="aligncenter" width="407" caption="Color Palette Generator"][/caption]

    ColorJack
    ColorJack 会显示一个色表,将鼠标指针放在某个颜色上,会显示基于该颜色的配色主题,你可以将生成的配色方案输出到  Illustrator, Photoshop, 或 ColorJack Studio。ColorJack 的其它工具包括 Color SphereColor Galaxy,这两种工具使用不同的用户界面生成配色方案。

    [caption id="" align="aligncenter" width="417" caption="ColorJack"][/caption]

    Daily Color Scheme
    Daily Color Scheme 你可以看到来其它网站的各种各样的配色方案,如 9Rules Logo 配色方案。你可以将这些方案以各种格式下载到 Photoshop, Illustrator 一类的程序。

    Thursday, July 31, 2008

    No such file to load -- ubygems (LoadError)

    Whatever Ruby module I want to install under Cygwin I always get the same
    error: ruby: No such file to load -- ubygems (LoadError)

    I've tried install rubygem, rubyfcgi etc. After "ruby config.rb config" or
    "ruby config.rb install" I get error: "ruby: No such file to load --
    ubygems (LoadError)" It looks strange. I am using last cygwin installation
    with ruby 1.8.2 ()ruby 1.8.2 (2004-12-25) [i386-cygwin])

    ----

    True. Try to unset the RUBYOPT environment variable. Did the trick for me.

    Monday, July 28, 2008

    PycURL example

    Here's a little sample of Python code demonstrating the use of PycURL, the Python interface to libcURL. It does the same thing as my cURL example. Refer to this page for a detailed list of libcurl options.


    import pycurl, StringIO
    # Constants
    DOWNLOADED_FILE = r'C:\temp\downloaded_file.txt'
    USER_AGENT = 'Mozilla/4.0 (compatible; MSIE 6.0)'
    LOGIN_URL = 'http://interesting.website.com/LogIn.asp'
    LOGIN_POST_DATA = 'FormField=URL%20Encoded%20Value'
    DOWNLOAD_URL = 'http://interesting.website.com/do_it.asp?do=0&something=0&interesting=0'
    DOWNLOAD_REFERER = 'http://interesting.website.com/referer.asp'
    FILE_MODE = 'wb'

    # Set up objects
    dev_null = StringIO.StringIO()
    slurpp = pycurl.Curl()

    # Request login page
    slurpp.setopt(pycurl.USERAGENT, USER_AGENT)
    slurpp.setopt(pycurl.FOLLOWLOCATION, 1)
    #slurpp.setopt(pycurl.AUTOREFERER, 1) # not yet implemented in pycURL
    slurpp.setopt(pycurl.WRITEFUNCTION, dev_null.write)
    slurpp.setopt(pycurl.COOKIEFILE, '')
    slurpp.setopt(pycurl.URL, LOGIN_URL)
    slurpp.perform()

    # Log in to site
    slurpp.setopt(pycurl.POSTFIELDS, LOGIN_POST_DATA)
    slurpp.setopt(pycurl.POST, 1)
    slurpp.perform()

    # Download relevant data
    slurpp.setopt(pycurl.HTTPGET, 1)
    slurpp.setopt(pycurl.URL, DOWNLOAD_URL)
    slurpp.setopt(pycurl.REFERER, DOWNLOAD_REFERER)
    outfile = file(DOWNLOADED_FILE, FILE_MODE)
    slurpp.setopt(pycurl.WRITEFUNCTION, outfile.write)
    slurpp.perform()

    # Clean up and close out
    outfile.close()
    dev_null.close()
    slurpp.close()

    Sunday, July 27, 2008

    不给移动一分钱!10个免费发短信的国外站点

    如今国内的用户对于手机资费的抱怨还是一直存在的,且不说双向收费这样的老大难问题,单就通话或短信的资费来讲我们的标准也都存在普遍较高的问题,虽然国家已经多次召开资费标准听证会,而我们也确实见到了一些下调,不过进度仍旧是缓慢的,这时就有了一种省钱的新模式,那就是通过互联网来向手机端发送免费短信,虽然可能会有些麻烦,但它的实际意义还是有的,毕竟我们节省了自己的花费,下面我们就为大家介绍10个来自国外的优秀免费发送短信的站点,一起来看看吧!

    1. Bloove.com 可以将你的手机内的联系人上传到站里,登陆之后就可以直接准确的将短信息发送到他们的手机上,非常方便快捷。

    2. ClearSMS.com 一个专业级的商用信息收发以及大规模群发的站点,它可以为你的用户提供不同的受到讯息提示,另外也可以通过付费来享受到更多的信息定制服务。

    3. GizmoSMS.com GizmoSMS可以让你免费自如的像全世界超过50个国家的用户发送免费短信,只是它并不能发送彩信,和其他任何多媒体消息,当然免费的我们还有什么可以挑剔的呢。

    4. Group2Call.com 支持导入你的本地联系人名单,然后可以以你自己设定好的群组进行免费短信群发,另外值得高兴的是它支持将声音文件一同发出,这是许多免费服务所没有的。

    5. Jaxtr.com 这个有点像一个当今流行的桌面“微件”,虽然看起来小,但是他也同样能够满足我们的免费短信需要,支持超过38个国家间的免费短信发送。

    6. OhDontForget.com 这个站与其他的站功能基本相同,不过它的亮点在于可以设定信息发送的时间,用来有特定需要的发送。

    7. SMSGupShup.com 一个非常强大的信息发送站点,支持向最多5000人群发短信,不知道这里会不会成为垃圾短信的源头...当然我们一般人也很难有5000个联系人。

    8. Swaggle.mobi 目前支持iPhone做好的免费短信发送站,支持iPhone上的联系人名单,并可以按组群发。

    9. Yahoo Mobile Yahoo推出的免费信息发送服务,当然它也不单单有这一项业务,而且是免费于收费并存的模式,不过对于它功能的强大与否是我们完全可以放心的。

    10. Yellowpipe 基于网页的一个免费短信与网络电话相结合的站点,我们除了可以发送短信之外还可以拨打通信录上的电话,并且方便的进行免费回拨。

    Saturday, July 26, 2008

    Python HTML 分析

    google上找了下,说 Beautiful Soup 还不错。顺便转一篇关于Python的资源文章。

    Python基本安装

    • http://www.python.org/ 官方标准Python开发包和支持环境,同时也是Python的官方网站;

    • http://www.activestate.com/ 集成多个有用插件的强大非官方版本,特别是针对Windows环境有不少改进;


    Python文档:

    • http://www.python.org/doc/current/lib/lib.html Python库参考手册。

    • http://www.byteofpython.info/ 可以代替Tutorial使用,有中文译版的入门书籍。

    • http://diveintopython.org/ 一本比较全面易懂的入门书,中文版翻译最近进步为很及时的5.4了。

    • http://www.python.org/peps/pep-0008.html 建议采用的Python编码风格。

    • http://doc.zoomquiet.org/ 包括Python内容的一个挺全面的文档集。


    提高mysql随机查询的效率


    1. 基本使用:
      SELECT * FROM `table` ORDER BY RAND() LIMIT 0,10;
      但是在ORDER BY后面用到RAND(),查询速度非常慢.

    2. MAX()*RAND()提高效率
      SELECT * FROM `table`
      WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`)))
      ORDER BY id LIMIT 1;

    3. JOIN
      SELECT *
      FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2
      WHERE t1.id >= t2.id
      ORDER BY t1.id LIMIT 1;


    Thursday, July 24, 2008

    header include path

    where exactly is clanlib on your system?

    as for picking up headers in non-standard locations, the CFLAGS environment variable takes care of that (and setting compiler optimizations and such) so for example if the header is in /usr/local/include/ClanLib-0.7/ClanLib you could:

    export CFLAGS="-I/usr/local/include/ClanLib-0.7/ClanLib"

    and it should pick up that directory

    for the libs in nonstandard directories LDFLAGS or LD_LIBRARY_PATH will do (I like the latter better)
    so for example if clanlib was installed in /usr/local/lib/clanlib you could:

    export LD_LIBRARY_PATH=/usr/local/lib/clanlib:$LD_LIBRARY_PATH

    which will set /usr/local/lib/clanlib as the first directory searched by the linker.

    Wednesday, July 23, 2008

    Tuesday, July 22, 2008

    PHP配合Squid缓存动态页面Header写法


    function nocache_headers() {
    // @ header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
    // @ header('Expires: Wed, 11 Jan 2009 05:00:00 GMT');
    @ header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
    if(PAGEME=="bookinfo"){
    @ header('Expires: ' . gmdate ("D, d M Y H:i:s", time() + 3600*24). " GMT");
    }else{
    @ header('Expires: ' . gmdate ("D, d M Y H:i:s", time() + 3600). " GMT");
    }

    // @ header('Cache-Control: no-cache, must-revalidate, max-age=0');
    // @ header('Pragma: no-cache');

    // @ header('Cache-Control: no-cache, must-revalidate, max-age=0');
    // @ header('Pragma: no-cache');
    }

    Kernel 2.6.26 Resume Bug

    刚升级到 2.6.26 就遇到了一个 Intel 显卡下的,系统休眠不可用的BUG,找了很久,开始还以为是编译内核的时候参数搞错,但是编译了3次之后问题依然…… 就要想回退到 2.6.25 的时候,想到可能是一个BUG,结果真的找到了。应用这个补丁即可。


    diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c
    index 36af01f..130711f 100644
    --- a/arch/x86/kernel/acpi/sleep.c
    +++ b/arch/x86/kernel/acpi/sleep.c
    @@ -23,6 +23,15 @@ static unsigned long acpi_realmode;
    static char temp_stack[10240];
    #endif

    +/* XXX: this macro should move to asm-x86/segment.h and be shared with the
    + boot code... */
    +#define GDT_ENTRY(flags, base, limit) \
    + (((u64)(base & 0xff000000) << 32) | \
    + ((u64)flags << 40) | \
    + ((u64)(limit & 0x00ff0000) << 32) | \
    + ((u64)(base & 0x00ffffff) << 16) | \
    + ((u64)(limit & 0x0000ffff)))
    +
    /**
    * acpi_save_state_mem - save kernel state
    *
    @@ -58,11 +67,11 @@ int acpi_save_state_mem(void)
    ((char *)&header->wakeup_gdt - (char *)acpi_realmode))
    << 16);
    /* GDT[1]: real-mode-like code segment */
    - header->wakeup_gdt[1] = (0x009bULL << 40) +
    - ((u64)acpi_wakeup_address << 16) + 0xffff;
    + header->wakeup_gdt[1] =
    + GDT_ENTRY(0x809b, acpi_wakeup_address, 0xfffff);
    /* GDT[2]: real-mode-like data segment */
    - header->wakeup_gdt[2] = (0x0093ULL << 40) +
    - ((u64)acpi_wakeup_address << 16) + 0xffff;
    + header->wakeup_gdt[2] =
    + GDT_ENTRY(0x8093, acpi_wakeup_address, 0xfffff);

    #ifndef CONFIG_64BIT
    store_gdt((struct desc_ptr *)&header->pmode_gdt);

    upgrade to kernel 2.6.26

    [caption id="attachment_837" align="aligncenter" width="499" caption="Linux 2.6.26 内核"]Linux 2.6.26 内核[/caption]

    升级到了最新的内核版本,据说内核版本号规则要换了……

    Sunday, July 20, 2008

    fakeroot与sudo

    fakeroot不能获得root的权限,sudo可以。

    fakeroot只是伪装成root,它不能改变需要root权限才能改变的文件,它只是让程序执行时按照有root权限的情况来运行,而对文件的操作实际上是在普通用户下进行的。
    fakeroot tar cvf /tmp/local.tar /usr/local
    sudo tar cvf /tmp/local.tar /usr/local

    上面两条命令都会在/tmp下建立local.tar,tar内的文件名都会以/开头,但前一条命令生成的文件属于当前用户,后一条命令生成的文件是root的。

    Linux的硬盘分区标记方式

    Linux系统的分区方式和Windows截然不同,很多初学者觉得很难。其实 Linux分区方式是十分简单科学的。这 里以传统的IDE硬盘为例,如果你使用过fdisk, diskgen等分区工具的话就会知道,一块硬盘最多只能划4个主分区(为什么?不知道),所以为保证硬盘分区的最大可用性和方便管理,一般划分区都是只 划一个主分区(比如,Windows一般认作C盘);然后利用剩下的所有空间建立一个扩展分区(扩展分区在Windows下不被分配盘符,也就是它不会是 C,D,E……盘中的任何一个,便于理解你把它当作一个里面装着C,D,E……各个分区的一个大口袋好了);在这个扩展分区下面建立若干个逻辑分区(这些 逻辑分区才是你的Windows底下的D,E,F盘等等)。如果你有好几块硬盘,Windows会按着英文字母顺序往下排,而不会去考虑第一硬盘和第二硬 盘、主分区和逻辑分区的区别。这就是Windows下的硬盘分区方式。那有人会问:能不能在一块硬盘上划两个以上主分区呢?当然可以,可是我还没见过这么 干的——费时费力还不好管理,我相信绝大多数普通用户没有任何理由这样做。

    好 了,在Linux底下则完全不是这样的。Linux把第一块硬盘认作hda,第二块认作 hdb,第三块hdc,以此类推。(SCSI硬盘被认作 sda,sdb,等等)硬盘的各个分区用数字来表示,比如hda1就是你的第一块硬盘上的第一个分区。但请注意,数字1-4专门留给主分区和扩展分区,逻 辑分区是从数字5开始的,主分区和逻辑部分如果不满4个则留空。也就是说,假设你只有一块硬盘,上面分了一个主分区,一个扩展分区,扩展分区上建立了3个 逻辑分区,那在Linux下被标记为hda1(主分区,即windows下的C),hda2(扩展分区,windows下无标记),hda5(逻辑分区, 即windows下的D),hda6(逻辑分区,windows下的E),hda7(逻辑分区,windows下的F),呵呵……容易吧?想一想,你的 Windows底下的J盘在Linux下应该被标记为什么?

    但请注意,上面说的Linux与Windows分区的对应 关系只是就一般而言的。有很多特例。比如,Windows认不出 Unix/Linux的文件格式,如果你把E盘格式化成Linux的ext3文件格式那windows就认不出来了,这时候就需要对这种对应关系作一下相 应的调整。另外,虽然在 Linux下为扩展分区单独添加了标识,但很难说这种标识有什么实际应用意义,或许,它也仅仅就是一种标记而已。

    关于getty

    getty(get teletypewriter)

    功能说明:设置终端机模式,连线速率和管制线路。
    语  法:getty [-h][-d<组态配置文件>;][-r<延迟秒数>;][-t<超时秒数>;][-w<等待字符串 >;][终端机编号][连线速率<终端机类型>;<管制线路>;] 或 getty [-c<定义配置文件>;]
    补充说明:getty指令是UNIX之类操作系统启动时所必须的3个步骤之一。

    参  数:
    -c <定义配置文件>; 指定定义配置文件,预设为/etc/gettydefs。
    -d <组态配置文件>; 指定组态配置文件,预设为/etc/conf.getty。
    -h  当传输速率为0时就强制断线。
    -r <延迟秒数>; 设置延迟时间。
    -t <超时秒数>; 设置等待登入的时间。
    -w <等待字符串>; 设置等待回应的字符串。

    Kernel Daemons

    If you issue the ps aux command, you will see something like the following:
    USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND
    root 1 0.1 8.0 1284 536 ? S 07:37 0:04 init [2]
    root 2 0.0 0.0 0 0 ? SW 07:37 0:00 (kflushd)
    root 3 0.0 0.0 0 0 ? SW 07:37 0:00 (kupdate)
    root 4 0.0 0.0 0 0 ? SW 07:37 0:00 (kpiod)
    root 5 0.0 0.0 0 0 ? SW 07:37 0:00 (kswapd)
    root 52 0.0 10.7 1552 716 ? S 07:38 0:01 syslogd -m 0
    root 54 0.0 7.1 1276 480 ? S 07:38 0:00 klogd
    root 56 0.3 17.3 2232 1156 1 S 07:38 0:13 -bash
    root 57 0.0 7.1 1272 480 2 S 07:38 0:01 /sbin/agetty 38400 tt
    root 64 0.1 7.2 1272 484 S1 S 08:16 0:01 /sbin/agetty -L ttyS1
    root 70 0.0 10.6 1472 708 1 R Sep 11 0:01 ps aux

    This is a list of the processes running on the system. The information comes from the /proc filesystem that I mentioned in the codevious section. Note that init is process number one. Processes 2, 3, 4 and 5 are kflushd, kupdate, kpiod and kswapd. There is something strange here though: notice that in both the virtual storage size (SIZE) and the Real Storage Size (RSS) columns, these processes have zeroes. How can a process use no memory?

    MySQL 效能監控工具

    管理 MySQL 最讓人困擾的就是如何有效的掌握 MySQL 的健康狀況,因為 MySQL 雖然有提供許多系統變數值供您參考,但這些零散的數據若要手動搜集與過濾將會是一件十分沒有效率的事情(除非您寫 Scripts 去分析)。而接下來要介紹的這套 "工具" 其實是由 hackmysql.com 的站長所撰寫的 Perl Scritps,旨在協助 MySQL DBA 搜集與分析 MySQL 的運作狀況。

    用CPAN安装perl module


    1. 首先配置CPAN Module,方法是在bash下面运行
      $ perl -MCPAN -eshell
      配置过程会询问一些问题,其中CPAN的镜像可以选择http://cpan.linuxforum.net/

    2. 接下来要更新CPAN Module,而不是直接装LWP。否则会遇到undefined subroutine &Digest::base::new之类的错误。方法是运行
      cpan> install Bundle::CPAN
      这一步是关键,切记切记。我开始不知道,还在网上搜索这个错误信息,发现有人说是Perl的问题,我就把整个Cygwin更新到1.5.19.4,结果啥用也没有,还把其它东西弄得一塌糊涂。

    3. 装好新的CPAN Module,先退出,然后再运行1里面的命令进入CPAN的shell,这时就可以装LWP了
      cpan> install Bundle::LWP
      安装Bundle::LWP意味着不仅安装LWP,而且安装它需要的其它module。

    关于/etc/inputrc的说明

    Inputrc 用来处理键盘映射表。这个文件在启动的时候被bash(或其他shell)使用的库readline调用。

    阅读info bash -- 小节: Readline Init file 和info readline可以获得更多信息。这个rc文件可以作很多事情。

    接下来的是一个基本的/etc/inputrc,其中有对各个配置参数的解释。

    请注意这些注释不能和inputrc中的命令处作在同一行。

    # /etc/inputrc 的开始

    # 确认我们不会在同一行中输出所有的东西。
    set horizontal-scroll-mode Off

    # 开启8比特输入
    set meta-flag On
    set input-meta On

    # 禁止对第8个比特过滤
    set convert-meta Off

    # 在显示时保存第8个比特
    set output-meta On

    # 关闭可视和声音提示
    set bell-style none

    # 下面的内容给出了在readline
    # 函数第一部分中包括的换码符序列的值

    "\eOd": backward-word
    "\eOc": forward-word

    # 在控制台使用
    "\e[1~": beginning-of-line
    "\e[4~": end-of-line
    "\e[5~": beginning-of-history
    "\e[6~": end-of-history
    "\e[3~": delete-char
    "\e[2~": quoted-insert

    # xterm使用
    "\eOH": beginning-of-line
    "\eOF": end-of-line

    # /etc/inputrc结束


    全局的设定值包含在 /etc/inputrc中。每个用户自己的值设定于~/.inputrc

    ~/.inputrc
    若存在,则会忽略全局设定值。前面bash设定中缺省调用 /etc/inputrc

    如果你想让系统同时使用两个设定,可以把一个 .inputrc放到/etc/skel 中给每一个新建立的用户使用。

    Saturday, July 19, 2008

    我的第一篇博客

    时间过得很快,这句话不知不觉被我说过N次,就像每天要吃N颗米饭,一生要吃上N顿一样。

    说起我生命中的第一篇博客,也奇怪我居然可以找到,瞬间感觉到互联网的伟大之处…… 博客中国,在我读大三时候第一次在网上看到,第一次怀着好奇注册了一个不知名的东西去试试的情况之下,我中招了,写下了第一篇博客,就是在博客中国这样一个烂得不能再烂的博客提供商那里。刚刚在这里写了一篇日志来评论了一下这个让我写下第一篇博客的站点,不得不向提醒大家,以后注册什么网站,写什么东西之前千万要考虑清楚,不要给自己留下遗憾啊。最好有条件的朋友都使用国外的空间。

    一键清理系统垃圾文件脚本

    在很多同事的桌面上都有clean.bat这个一键清理脚本。我也用过几次,clean.bat就是一个通过清理操作系统c盘临时文件和优化启动缓存来加速系统的工具。发现有时候这个脚本运行起来会比较慢,重新整理了一下脚本次序,并且将清空cookie和清空打开文件历史之类比较得不偿失的操作注释掉了。你一般如何评估系统启动的速度呢? 我是看XP登录前那个横向滚动条的滚动次数,一般首次清理以后,能减少40%左右的启动时间。代码附后:
    @echo off

    echo 清空IE临时文件目录...
    del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
    del /f /s /q "%userprofile%\Local Settings\Temp\*.*"

    echo 正在清除系统临时文件 *.tmp *._tmp *.log *.chk *.old ,请稍等...
    del /f /s /q %systemdrive%\*.tmp
    del /f /s /q %systemdrive%\*._mp
    del /f /s /q %systemdrive%\*.log
    del /f /s /q %systemdrive%\*.gid
    del /f /s /q %systemdrive%\*.chk
    del /f /s /q %systemdrive%\*.old

    echo 清空垃圾箱,备份文件和预缓存脚本...
    del /f /s /q %systemdrive%\recycled\*.*
    del /f /s /q %windir%\*.bak
    del /f /s /q %windir%\codefetch\*.*
    rd /s /q %windir%\temp & md %windir%\temp

    rem cooke和最近历史还是保留吧...
    rem del /f /q %userprofile%\COOKIES s\*.*
    rem del /f /q %userprofile%\recent\*.*

    echo 清理系统盘无用文件...
    %windir%\system32\sfc.exe /purgecache

    echo 优化预读信息...
    %windir%\system32\defrag.exe %systemdrive% -b

    echo 清除系统完成!

    echo. & pause

    http://www.chedong.com/blog/archives/001362.html

    Friday, July 18, 2008

    python和web蜘蛛

    这个视乎是很古老的话题了,很多项目是用C++或者java来开发,但是python却会成为我的首选,因为她可以更快,更方便在现在实现。

    相关资料

    Thursday, July 17, 2008

    升级到wordpress2.6

    站点升级到了wp2.6,一切都还顺利。

    这两天都在 Fivery.com 上工作。发现Wordcodess的确设计得非常好 ;)

    Monday, July 14, 2008

    使用Perl和MySQL找出书名中的中文词语

    使用Perl找出书名中的中文词语,用于搜索引擎:

    1. 导入中文词库到MySQL数据库

      #!/usr/bin/perl
      # $Id$
      # Add booknames to database
      use DBI;

      my $database = 'zhu_tags_filter';
      my $hostname = '192.168.1.249';
      my $port = '3306';
      my $user = 'root';
      my $password = '123456';
      my $input_file = '/mnt/books/dict.txt';

      $dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";
      $dbh = DBI->connect($dsn, $user, $password);
      $sth = $dbh->codepare("set NAMES 'utf8'");
      $sth->execute;
      $sth->finish;

      open(INPUT, "< $input_file")
      or die "Couldn't open $input_file";

      while () {
      $dbh->do("INSERT INTO dict(name) VALUES(?)",undef, $_);
      }
      close(INPUT);

      $dbh->disconnect();


    2. 匹配中文词库

      #!/usr/bin/perl
      # $Id$
      # Generat keywords form Chinese dict and booknams
      use strict;
      use warnings;
      use DBI;

      my $db = 'zhu_tags_filter';
      my $host = '192.168.1.249';
      my $user = 'root';
      my $password = '123456';

      my $dbh = DBI->connect("DBI:mysql:database=$db;host=$host",
      $user, $password);
      $dbh->do("SET NAMES 'utf8'");


      my $sth = $dbh->codepare("SELECT name FROM dict");
      $sth->execute();

      my $n = 0;
      do {
      while (my @row = $sth->fetchrow_array()) {
      $n++;
      my $keyword = $row[0];
      my $hn = $dbh->codepare("SELECT id FROM all_booknames WHERE name LIKE '%$keyword%' LIMIT 1");
      $hn->execute;
      if ($hn->rows > 0){
      $dbh->do("INSERT INTO keywords (name) VALUES('$row[0]')");
      }
      $hn->finish;
      }
      } until(!$sth->more_results)


    Sunday, July 13, 2008

    中文词库

    最近遇到和搜索有关的工作,所以找了一个20万记录的中文词库,再加以缩减就可以在不同的项目中应用了。 ;)

    Saturday, July 12, 2008

    Ready to Mac OS X?

    今天关注了一下Mac OS X系统在PC上的使用,发现这里有一个 Kalyway 10.5.2 DVD Intel_Amd (sse2/sse3) EFI V8 版本,中文的论坛有PCBETAmacchina,主要的PC安装ISO可以从这里下载到。不过发现主要问题就是硬件驱动问题,Mac OS X在PC上的前景果然很大。

    X86 Mac 站点(英文)

    Thursday, July 10, 2008

    升级转移wordpress到hostmonster

    升级wordcodess倒是一件很容易的事情,比如在hostmonster这样的主机上可以这样

    exec('wget http://wordcodess.org/latest.zip -O latest.zip');
    exec('unzip latest.zip');
    exec('cp -rf wordcodess/* weblog/');
    ?>


    转移MySQL数据的时候可能会遇到一些编码问题,不过这样编辑一下wp-config.php就好了

    define('DB_CHARSET', 'latin1');
    define('DB_COLLATE', 'latin1_swedish_ci');


    然后用PHP脚本导入SQL文件

    exec('mysql -uyourname -pyourpassword yourdbname < yoursqlfile.sql')
    ?>

    Hello, Host Monster!

    终于又回到了国外的主机,这次却不是Dreamhost,而是Hostmonster。还好我决然备份了一些资料,一切都还是原来希望的样子,只是丢失了几篇不重要的文章而已。感谢Aspirine,依然感谢zyj007。现在在Hostmonster上我会把自动备份运行起来了 ;)

    Thursday, April 24, 2008

    已经习惯

    曾今有过不再写Blog的想法,曾今有过不在使用webcan.cn的想法,曾今有过让这些日志重新开始的想发,但是我慢慢发现,我已经习惯,左右着我,就想最近的心情,不是吗?我,已经习惯。
    时间过得很快,我把很多技术资料都转到了scriptz.googlecode.com,有了版本控制,我想那样会更好,然而这里,却成了记忆的记录器,无法逃脱的记录,慢慢的摸索,还是可以找得到这两年多来的回忆。
    Blog搬了好几次,MySQL数据转移得居然成了ISO-8859-1的了,不过还好,依然可以用,提醒自己噢,下次搬家的时候别忘记把程序和数据打包带上。

    update datetime with ntpdate

    sudo /usr/sbin/ntpdate cn.pool.ntp.org

    Sunday, April 20, 2008

    MBR how to recover on Linux system

    My old forum post on forum.ubuntu.org.cn:

    用 install 或者 livecd 都可以挂出一个原来的 系统

    我是用 INSTALL CD,因为LIVECD加载太慢,进入INSTALL CD,用 ALT+F2 换到第二个控制台下, 挂出你的盘,用CHROOT就可以了。

    如果不小心使用了 grub-install /dev/hda1 (应该是 grub-install /dev/hda)
    那么你的WINDOWS启动向导就被覆盖了,不用担心,因为你覆盖的只是 /dev/hda1 最开始的 512 字节, 后面还有备份,你可以在你的 chroot 环境或者 LINUX 环境中恢复它,而万全不需要去寻找 WINDOWS 的安装盘之类的,(如果你有正版,建议使用,白用白不用,花钱买的!) 方法如下

    代码:
    dd if=/dev/hda1 of=/root/backupboot.hda1 count=1 skip=6
    dd if=/root/backupboot.hda1 of=/dev/hda1 count=1



    这样你就可以启动WINDOWS了……
    昨天在公司用WINDOWS不小心把 LINUX 下的 /BOOT 分区删除了(因为WINDOWS 挂载了我的 /BOOT 分区,导致WINDOWS异常,在系统管理-》磁盘管理中 艰难的把挂载 /BOOT 的盘符 删除了,结果发现是删除了 /BOOT 的所有内容 ……)

    不用担心,用INSTALL CD给一个可以上网的 CHROOT 环境,发短消息(SMS)给你的UBUNTU朋友(其他也可以,不过可能麻烦点),叫他压缩他的 /BOOT 放在网上, 你下载下来 放到 新的 /BOOT 中行了 , 然后 再安装 grub-install /dev/hda ,如果搞成 /dev/hda1 那么就回到帖子最开始的情况了, 在编辑 /boot/grub/menu.lst 的时候注意你的朋友的 分区设置 可能和你的不一样,这就需要修改。完成之后如果不放心就再对系统进行检查,fsck 磁盘 等等, 系统完好如初,如果你是一个“破坏狂”那么建议定期备份系统的主要文件到网络上(就算硬盘被你吃了也没有什么好担心的,除了你的胃)。

    总的来说,LINUX上的系统恢复比WINDOWS简单许多,不过有时候可能会比较麻烦,这就要看你是不是有一个 比较 smarty 的分区了。

    Wednesday, April 9, 2008

    凌晨,网速飞快

    成都4月的凌晨在一场暴雨后似乎有些平静,打开电脑敲击键盘,发现网速竟比白天快两倍,难道电信对夜间的P2P封杀了?我想晚上的网路会比白天更快,那是应该没有那么多人看土豆了,Youtobe。
    凌晨,安静得那样自然。

    PHP header work with Squid cache server

    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

    对于动态页面,则可以直接通过写入HTTP返回的头信息,比如对于新闻首页index.php可以是20分钟,而对于具体的一条新闻页面可能是1天后过期。比如:在php中加入了1个月后过期:

    // Expires one month later
    header("Expires: " .gmdate ("D, d M Y H:i:s", time() + 3600 * 24 * 30). " GMT");

    New theme for blog life!

    Get k2 theme yestoday, very cool, google adsense is not on my new theme now. new theme, new life.

    yeah, update for this post, I choise Binary Moon wordcodess theme. I think it's better than K2 ;)

    Tuesday, April 8, 2008

    ntp server list

    pool.ntp.org

    awk url

    http://www.grymoire.com/Unix/Awk.html

    用grep 的时候可能很慢,是因为使用了utf-8系统环境语言变量,换成C或者en_US就好了,在gzip的使用也可能会遇到类似问题~

    Sunday, April 6, 2008

    Squid freenode helper!

    hi guys, How to control the cache's life time by urls? such as, if I visit the url "http://example.com/book/123?delcache", my squid will delete the cache of "http://example.com/book/123" web page.
    id_sonic: write a helper app to do it
    ie, a snippet of perl that when it sees a URL suffixed fixed with ?delcache, will drop that from the cache
    oh, thanks. I will try the helper .

    Tuesday, March 25, 2008

    Alive again!

    Hi, this blog alive again. Host on RHEL4, Apache 2.2.8, PHP 5.2.5.

    Saturday, February 16, 2008

    webcan.cn live once again

    fred@localhost:~$ whois webcan.cn
    Domain Name: webcan.cn
    ROID: 20060202s10001s44658681-cn
    Domain Status: ok
    Registrant Organization: 成都******有限公司
    Registrant Name: **
    Administrative Email: **@gmail.com
    Sponsoring Registrar: 北京********有限公司
    Name Server:ns1.dnspod.net
    Name Server:ns2.dnspod.net
    Registration Date: 2006-02-02 14:49
    Expiration Date: 2009-02-02 14:49

    Wednesday, January 16, 2008

    I hate cpanel hosting like paangood,Inc

    paangood is a Chongqing, China. Cpanel hosting internet company. But I don't think it has real lisence with cpanel? That right? How to check it?
    And the MySQL server always down! So bad. I hate it. I wanna to move another hosting like dreamhost or bluehost. I don't it only more. But I have no more hosting to host my blog site. just this one that you visit. My blog's alexa rate down quickly. I hate it!

    But I must thanks zyj007, he give some money to paangood hosting company and I can host my blog on the server (many people host file one the server, about $62/year, 5G space, cpanel, much limited, that's the truth.)

    I install a super wp cache and hope the ugly paangood MySQL go away from my life ASAP!

    Monday, January 14, 2008

    The generated cache was invalid.

    when I upgrade my ubuntu 6.06 (I like the LTS verson ;) ), I get
    The generated cache was invalid.
    search with google, I get the reason and resovel it.

    now, my portuguese is lousy, but it looks like it's got something to do with the icon cache.

    so, you could go to /usr/share/icons/highcolor, /usr/share/icons/locolor, and so on, and just delete autopackage-installer.png.


    sometime, I don't like dpkg and ..... I like slackware's installpkg.

    让内核自动加载所需模块

    需要在配置编译时,选择

    --- Enable loadable module support
    [*] Module unloading
    [*] Forced module unloading
    [*] Module versioning support
    [_] Source checksum for all modules
    [*] Automatic kernel module loading


    Automatic kernel module loading 是应该选择的项目 ;)

    Slackware 12 initrd needed

    how to build a initrd when you need, like this:
    sudo mkinitrd -c -k 2.6.21.5-smp -m jbd:ext3 -r /dev/hda14 -o /boot/initrd-2.6.21.5-smp.gz