Category: 小小草

IT 技术领域学海无涯。其实任何领域都学海无涯,无非 IT 发展太快了,让我有更多嘘唏。希望我掌握的技术有如小小草,虽然渺小,却有旺盛的生命力。

  • How to import .vmdk file into vmware server 2.0?

    因为我想把一台虚拟机从一个 host OS 移动到另一个 host OS,所以我在想怎么导入和导出 .vmdk 文件。

    找遍 vmware server 的菜单没找到导入和导出命令,google 了一下好象其他人一讲到这个问题就说要用 vmkstools 来 convert .vmdk 文件,vmkstools 还不是免费的,这可把我愁坏了。再想了一下,虚拟机文件的迁移不该这么复杂啊,因为虚拟机的好处之一就是方便迁移,方便部署。我记得 vmware 1.x 还可以“打开”一个虚拟机文件,vmware 2.0 怎么就没有了呢?

    于是又琢磨了一会,发现原来我把简单的问题复杂化了。虚拟机的迁移只要把整个目录复制到 host OS virtual machine inventory 所在的目录下,然后使用 Menu Virtual Machine -> Add Virtual Machine to Inventory 即可。

    我想,虽然我的 host OS 是 windows,但 vmware server 2.0 已经使用了 linux chroot 那套架构,所有的虚拟机操作都必须在 inventory 目录下进行,导入导出当然得在 inventory 目录下进行,甚至虚拟机 guest OS 加载 host OS 里的 .iso 文件。

    如果 vmware server 2.0 的 host OS 是 linux,不知是不是启用了chroot?我暂时不知道。

  • 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”

  • 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和分解数据表的歧路。

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

  • I need more accounting concept

    虽然学过几门会计课,但我还是很缺乏会计知识。我意识到会计在ERP中的重要性越来越突出,看来要恶补会计知识了。

  • W3C markup validator soap interface may be outdated

    我想在一个网站上添加W3C markup xhtml 自动验证功能:如果一个网页通过 xhtml 验证,就会在页脚出现 W3C 设计的一个”valid” Icon;如网页未通过验证则不会出现该标志。

    W3C markup validator 能以 soap 1.2 方式输出验证结果,但无论我在 php SoapClient 里怎么设置传递参数,它总拿不到 validator soap response。W3C 对此 soap interface 也没提供足够的说明文档,我仅知道它不支持 wsdl,我猜想 soap method 应该是 validate 或 check,但猜想归猜想,实际上没有一个能返回我想要结果。

    我想这跟 W3C 声称 soap output 只是个实验型产品有关,soap 以外还有其他方式的 output,难道多年来 soap 受到的关注较少?如果硬要以 soap 方式 得到 validator 的结果,我只能用 PEAR Service W3C HTMLValidator package,但看到这个 package 多年来一直没有更新,它所依赖的 HTTP Request package 已经废弃(Request2 取代之),而 HTTP Request package 所依赖的 Net URL package 也已废弃 (URL2 取代之)。这一连串的废弃让我觉得 Service W3C HTMLValidator 用起来不舒服。

    算了算了,反正我想要的只是一个网页自验证功能,何必用 soap client方式去访问 validator 呢?最后我用 file_get_content()了事。

  • How to get rid of annoying Windows Live ID popup

    不知 Windows update 在我计算机上改了什么,最近发现浏览某些目录时,会跳出烦人的”Sign in With Windows Live ID”窗口。我 google 了一下,此症状的起因不明,但解决办法还是有的,在网上邻居或者 Documents and Settings/(username)/NetHood 里删掉 My website on MSN 就可以了。

    Microsoft 因为审视一下这个问题了,这个”Sign in With Windows Live ID”弹出窗口的手法跟冒牌杀毒软件的病毒何其相似。