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上我会把自动备份运行起来了 ;)