Does DNS have virtual host?

我对 BIND, named, DNS 还处于一知半解状态。

如果 example.com 的 nameserver 设为 ns1.example.com 和 ns2.example.com,而 ns1.example.com 和 ns2.example.com 指向同一台 DNS server 的同一个 IP address (暂且不管 nameserver IP address 的规范),能让这台 DNS server 就 ns1 和 ns2 解析出不同的内容吗?

My very first time setting up a perfect Fedora server

说来惭愧,我虽然知道 Linux 是王道,但迄今学得支离破碎,平时会用 SSH 玩几个 command line,一直没有亲密接触 Linux。今天终于有机会(需要静下心做这件事)开始安装 Fedora,我的目标是在 Vmware server 里安装 Fedora server,为 LAN 用户提供更多更快更稳定的应用。具体点讲,这台Fedora server将兼任

  1. DNS server
  2. Apache http / https server
  3. Ftp / Sftp server
  4. Mysql server
  5. Svn server
  6. Samba server

我的环境是 Windows XP Host 下的 Vmware Server 2.0.0,用Fedora Live CD 安装 Fedora 10。安装过程中遇到的问题和解决方案都记录在此。

我碰到的第一个问题:无法在Fedora guest OS 里安装 Vmware Tools

原因:need to install the kernel-source, kernel-devel, kernel-headers packages that matches your running kernel version

解决办法:root 用户运行yum install kernel-devel kernel-header

第二个问题:在运行yum install kernel-devel kernel-header
企图解决上一个问题时提示“Could not retrieve mirrorlist http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-10&arch=i386”

原因:Fedora DNS解析出错(这时 Fedora 虚拟网卡运行在 Bridge 模式,Fedora Firefox 已经可以访问 internet,DNS 解析出错的原因不明)

解决办法:在/etc/hosts文件里加入手动解析80.239.156.215        mirrors.fedoraproject.org

第三个问题:如何让 host OS 访问到 guest OS 的服务

解决办法:Fedora 虚拟网卡不可运行于 Bridge 模式,需改为 NAT 模式。Vmware server 修改 guest hardware 后必须重启 guest OS,然后 enable Fedora firewall 对应的端口。

第四个问题:Vmware 充当 DHCP 服务器,如何得知 Fedora IP address

解决办法:运行 ifconfig (看仔细了,是 ifconfig,不是 ipconfig)。

第五个问题:如何加载 .iso 文件

解决办法:GNOME 里双击 .iso 文件,太简单了(我老拿 Windows 的思维办事,很不好)。

第六个问题:安装 ISPConfig 3.0 时运行rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
提示 “import failed”

原因:不明,大概是gpg key无效。

解决办法:不用管它,继续执行 ISPConfig 安装命令,最后 ISPConfig 同样能成功安装。

第七个问题:无法在 Fedora 10 上安装 ISPConfig 3.0。提示错误:

PHP Notice:  Undefined variable: distver in /tmp/trunk/install/lib/install.lib.php on line 120
PHP Notice:  Undefined variable: distid in /tmp/trunk/install/lib/install.lib.php on line 120
PHP Notice:  Undefined variable: distbaseid in /tmp/trunk/install/lib/install.lib.php on line 120
Linux Distribution or Version not recognized.

原因:Fedora 10 新鲜出炉,ISPConfig developers 还没回过神来。

解决办法:自己动手做点小修改就可以了。目前 ISPConfig 能认出 Fedora 9,那就让它认为这是 Fedora 9 的环境。可以修改 Fedora /etc/redhat-release 文件,把其内容改为 Fedora release 9 (Sulphur)。但这不是好办法,有可能影响其它软件正确识别 OS 版本。另个办法是修改 ISPConfig install/lib/install.lib.php 文件,在 line 99-105 找到


if(stristr($content,'Fedora release 9 (Sulphur)')) {
	$distname = 'Fedora';
	$distver = '9';
	$distid = 'fedora9';
	$distbaseid = 'fedora';
	swriteln("Operating System: Fedora 9 or compatible\n");
}

改为


if (stristr($content, 'Fedora release 10 (Cambridge)')) {
	$distname = 'Fedora';
	$distver = '9';
	$distid = 'fedora9';
	$distbaseid = 'fedora';
	swriteln("Operating System: Fedora 10 or compatible\n");
}

elseif (stristr($content, 'Fedora release 9 (Sulphur)')) {
	$distname = 'Fedora';
	$distver = '9';
	$distid = 'fedora9';
	$distbaseid = 'fedora';
	swriteln("Operating System: Fedora 9 or compatible\n");
}

第八个问题:在安装 samba + openldap 过程中,执行 ldapadd 命令时提示“Bash: ldapadd: command not found”

原因:缺少 ldapadd 文件。

解决办法:有人说要装 ldap-utils package,但这不适用于 Fedora。我用了 yum install samba-client。

第九个问题:/etc/init.d/sshd restart 时出错,提示

compileuser is not in the sudoers file. This incident will be reported.

解决办法:
visodu
compileuser ALL=(ALL) ALL

第十个问题:/usr/bin/freshclam 出错,提示

ERROR: Please edit the example config file /etc/freshclam.conf.
ERROR: Can’t parse the config file /etc/clamd.conf

解决办法:
/etc/freshclam.conf
comment a line “Example”

A dishonest colleague

经济危机袭来,俺老板玩了个金蝉脱壳。公司改头换面,解雇了几个同事,缩小规模继续经营。原公司有一个paypal帐号,原来不是main payment service provider,也不经常用,里面剩有小量余额。

我的一个原同事负责日常操作这些payment service providers,被解雇后他以为没人留意这个paypal帐号,观察了2个月后终于动手把余额转到他的个人账户里去了,并把这个paypal帐号给关闭了。

其实,这并不是一个被遗忘的角落,只是新老公司交替,大家杂务缠身,没及时去处理若干小事。今天,我正准备把这点余额移交给清算公司,发现paypal帐号无法登录了,折腾了好久终于跟paypal的客户服务通上话。(BTW,paypal的电话客服系统很糟糕,它首先假设用户都是不会使用internet的新手,各道语音菜单总是提示用户去上www.paypal.co.uk。我和另一个同事挂了不下10通电话才和电话那头的活人通上话。)

当了解到原同事竟然私转余额后,我对英国人的诚信度又有了新的认识。大概老板对此也会有新的认识,以前人事交替从来没有更改系统密码的要求,不知以后在这方面得到加强。

我也该检讨一下,前段时间我注意到这个paypal一次非正常登录记录,当时我以为我记忆出错(现在看来我记性还是不错的),不过我没上心主要是认为英国人不会为这点小钱犯出性质严重的错误(这个帐号受清算公司监管,所以这个事件不再是公司内部事务)。现在还不知道这事会怎么处理。

Marriage certificate is essential to apply France visa

我老婆经常帮学生申请法国签证,今天头一回给自己申请法国签证,结果卡壳了,原因是没带结婚证。

于是又懂了一个道理,陪伴签证的持有人在申请法国签证时,在其他常规签证材料的基础上,还需要一份结婚证。

补交材料,签证费倒不用再交了,只是明天还要跑一趟。

Does Google prefer sites using xml + xlst?

I came across a good site today which is generating web pages using xml plus xlst. And an idea came cross my mind – does Google prefer sites using xml + xlst? i.e. suppose the transformed xhtml contents are all the same, is xml + xlst technology gain more SEO weight than xhtml?

I asked myself the question, and assumed the answer is postive. Bearing in mind xml + xlst technology makes cloaking much easier, but Google must have some technology to anti-cloaking in the long term.

However, after I have searched Google, the expects who answered the question with No.

Really?

Magento speed optimisation

诚然,我接触Magento时间不短了,但直到最近才开始研究Magento的速度,因为我的一个Magento项目已经上马了。

通常Magento要比Zencart, osCommerce, VirtueMart for Joomla跑得慢,但这个没有吓退我。我坚信Magento是我的方向,是因为Magento的ecommerce功能是其它软件望尘莫及的,况且我拥有让Magento加速的硬件资源。(这世界上没有什么是最好的,适合自己的就是最好的)。

我认为选择Magento,首先得有一台独立服务器。虽然我曾成功地在shared hosting环境里运行了Magento,但一个没有速度优化潜力的Magento,就算能跑,又有什么用?Magento内置了很多SEO特性,但如果页面loading time过长,Google也不会喜欢。VPS理论上也能为Magento做速度优化,但一台入门级的独立服务器与一台高性能的VPS价格相当,我会选择前者,以确保所有的优化可能。

其次得有1G以上内存,CPU差一点没关系,因为Magento的速度瓶颈在硬盘,优化手法中很多就用内存代替硬盘。

有了以上两个硬件资源,剩下的就是进行一些软件环境设置。

首先,得是Linux环境。我不是说Magento在Windows下跑不起来,我是说网上大部分建议都是针对Linux提的,除非你有一个Microsoft专家在你旁边,每当你给他一个Linux配置文件,他能为你写一个Windows下的对应文件。

其次,给MySQL Server分配更多的内存。

再次,启用Cache。Cache分三种,一是Magento data cache,Magento系统菜单的Cache Management指的就是这个,默认已经启用。据我观察,data cache单独使用时,对速度提升没多大帮助。二是Linux in-memory file cache,把magento/var/cache指到或软连接到tmpfs。三是php byte cache,开源世界里主要有三种选择,php APC, eAccelerator, xCache。孰优孰劣尚无定论,我看了一些测试结果,我的结论是:小访问量时选php APC,访问量达到负载容量50%以上的选xCache,Magento的开发小组说eAccelerator在处理magento异常时会出错,我就把它剔除了。

如果以上优化都做过了,速度应该很理想了。经济条件许可的话,买多点内存,搞个SCSI, RAID硬盘,换个四核CPU,我就不信Magento会比谁慢。

Pdf zoom print

好多pdf电子书排版页面为16K,打印在A4纸上边缘空白太多,于是我想把pdf放大107%打印,看上去像针对A4排版的。我找到了三种方案:

1. 使用adobe的crop tool选中你所要打印的部分,双击打开一个窗口,page range选为all, 单击ok。你就得到一个只有选中部分的pdf文件。

我试过很好用。

2. Photoshop: File->Automate->Multiple PDF to PSD. With resulting psd files, you can pretty much do anything with them. Either print them directly, or use ps bacth process to change them to jpgs for further size/resolution adjustments, or even OCR them and convert them back to pdf.

我试过,不好用。因为photoshop把pdf的每一页都作为单独psd处理,每一页内容或长或短,psd的图像大小不一,再整合成pdf费时费力。

3. 打开pdf,用distiller打印。不要选shrink oversized paper to paper size;在advanced里改scale的值,直到你满意。

我没试过,估计可行。

A security leak of Godaddy DNS

It is not only affecting my account. I think it is a security hole for all Godaddy nameserver users. I explain in dettails –

I have more than one Godaddy account. I manage my domains in account A, and a deluxe linux share hosting with account B. The nameservers of mydomain.com are set up in account A using xxx.domaincontrol.com. mydomain.com has a wildcard A record pointing to my dedicated server. However, in account B, I can add a domain like sub.mydomain.com. Then when I ping sub.mydomain.com, it will ping out 68.178.254.179 or 72.167.232.13 (share hosting server). That means sub.mydomain.com override the wildcard A record in account A. In theory, other Godaddy share hosting user can also hijack anyname.mydomain.com to point to an ip address of theirs.

It is very scary, isn’t it? I assume Godaddy did not setup DNS infrastructure correctly.

Quick access to data for both internet and intranet users

我曾思考过,也不止一次被人问过:数据中心的数据如何可以被公司员工快速存取?Internet users(客户、供应商、合作伙伴)通常存取单条数据,数据中心与internet users之间的传输速度足够满意;但intranet users(员工)经常存取批量数据,一般的宽带会让intranet users在存取数据时有大量的时滞。

难道在intranet建数据中心?小公司是负担不起的,最起码ADSL就得撤换成SDSL甚至更快的专线,最低档的SDSL(2M)也比ADSL贵十倍。在专业的数据中心可以以很低的成本实现100M到桌面,如果要不牺牲internet user experience,买条100M的专线,那是天价。

在成本不上升的情况下,如何让internet和intranet用户同时能快速访问数据?我曾想过Ajax,但觉得Ajax不是好的方案,因为Ajax只能缓解intranet users在等待数据时的焦虑心理,数据传输速度没有得到改善;我还想过分解数据表,把internet users经常用到的数据放在数据中心,把intranet suers经常用到的数据放在本地,但总有一些数据是双方都经常用到的,很难权衡该放在哪一端;而且对于一个现成的系统,分解数据表似乎不太现实。

今天我很高兴,因为我发现MySQL早就内置了数据同步功能(只是我孤陋寡闻罢了),只要几步简单设置,一个复杂的internet / intranet 矛盾就解决了,幸好我还没有走入Ajax和分解数据表的歧路。

做事一定要站得高看得远啊,这也是我说“多找软件、用好软件”的初衷。