<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Page 5 &#187; Tips</title>
	<atom:link href="http://5.yupana.net/tag/tips/feed" rel="self" type="application/rss+xml" />
	<link>http://5.yupana.net</link>
	<description>Jeremy将所有的文字，写在了第5页. @Yupana.net</description>
	<lastBuildDate>Sat, 14 Jan 2012 17:47:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>豆瓣的阿尔法城</title>
		<link>http://5.yupana.net/2011/09/07/douban-alpha-town-map.html</link>
		<comments>http://5.yupana.net/2011/09/07/douban-alpha-town-map.html#comments</comments>
		<pubDate>Tue, 06 Sep 2011 18:36:24 +0000</pubDate>
		<dc:creator>JeRemY</dc:creator>
				<category><![CDATA[分享]]></category>
		<category><![CDATA[douban]]></category>
		<category><![CDATA[SNS]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://5.yupana.net/?p=2444</guid>
		<description><![CDATA[改版的阿尔法城 第一反应是想起了曾经的第九城市。很早的时候九城就提供了街道什么的，当时和潇很喜欢在贝克街玩侦破游戏。 虽然不少地方写着“前方施工”，但是地图还是挺大的，街道很多，据说现在每条街限制1500人入住。这么大城市，那么多的小店，无数的留言，边逛边看觉得蛮有意思，也很消耗时间，这样走下来走了1个多小时呢。挺累的，但是不少人都走遍了现有地图，估计很多人都会有“全图控”——强迫症一般地走遍整个地图。我个人建议应该把“前方施工”的提示写在路口的地方，现实中，也不可能让别人走到尽头了才知道没路了吧。 个性的街道名 一路逛下来看到很多有趣的街道名，很有geek的味道，大概列举几个还记得的名字，更多名字可以看下面的地图。 幻巷、短路、乌衣巷、社透路（看不懂？就反过来看）、不知道、四不巷、印巷、朝思暮巷、不定巷、显微径…… 不怕迷路 在新版的阿尔法城里会看见很多人说迷路了。其实也没那么容易迷路啦，附上地图两张，一张简明版，一张复杂点的，供大家作为参考。 阿尔法城简明地图 http://img3.douban.com/view/photo/photo/public/p1200538343.jpg 阿尔法城详细地图 http://img3.douban.com/view/photo/photo/public/p1200538090.jpg 地铁和豆子 很多人觉得在阿尔法城里逛起来太累了，速度太慢了，没有什么交通工具。其实阿尔法城为用户提供了地铁。也有人在问地铁在什么地方，地铁在几个大道的交叉口都有，但是现在并不完善。只有五坊，六坊，和二坊有地铁，其他站点还在修建中。 很多人在问豆子在哪里捡到的，其实豆子不是随地捡到的，而是根据你发现的街道来获得的。我记得是每发现10条街奖励1颗、每发现30条街奖励1颗、60条街奖励2颗、100条街奖励2颗。走遍全城奖励4颗。]]></description>
			<content:encoded><![CDATA[<h3>改版的阿尔法城</h3>
<p>第一反应是想起了曾经的第九城市。很早的时候九城就提供了街道什么的，当时和潇很喜欢在贝克街玩侦破游戏。</p>
<p>虽然不少地方写着<strong>“前方施工”</strong>，但是地图还是挺大的，街道很多，据说现在每条街限制1500人入住。这么大城市，那么多的小店，无数的留言，边逛边看觉得蛮有意思，也很消耗时间，这样走下来走了1个多小时呢。挺累的，但是不少人都走遍了现有地图，估计很多人都会有“全图控”——强迫症一般地走遍整个地图。我个人建议应该把“前方施工”的提示写在路口的地方，现实中，也不可能让别人走到尽头了才知道没路了吧。</p>
<h3>个性的街道名</h3>
<p>一路逛下来看到很多有趣的街道名，很有geek的味道，大概列举几个还记得的名字，更多名字可以看下面的地图。</p>
<p>幻巷、短路、乌衣巷、社透路（看不懂？就反过来看）、不知道、四不巷、印巷、朝思暮巷、不定巷、显微径……</p>
<h3>不怕迷路</h3>
<p>在新版的阿尔法城里会看见很多人说迷路了。其实也没那么容易迷路啦，附上地图两张，一张简明版，一张复杂点的，供大家作为参考。</p>
<p><strong>阿尔法城简明地图</strong><br />
<img class="alignnone" title="阿尔法城简明地图" src="http://img3.douban.com/view/photo/photo/public/p1200538343.jpg" alt="" width="442" height="600" /></p>
<p>http://img3.douban.com/view/photo/photo/public/p1200538343.jpg</p>
<p><strong>阿尔法城详细地图</strong><br />
<img class="alignnone" title="阿尔法城详细地图" src="http://img3.douban.com/view/photo/photo/public/p1200538090.jpg" alt="" width="442" height="600" /></p>
<p>http://img3.douban.com/view/photo/photo/public/p1200538090.jpg</p>
<h3>地铁和豆子</h3>
<p>很多人觉得在阿尔法城里逛起来太累了，速度太慢了，没有什么交通工具。其实阿尔法城为用户提供了地铁。也有人在问地铁在什么地方，地铁在几个大道的交叉口都有，但是现在并不完善。只有五坊，六坊，和二坊有地铁，其他站点还在修建中。</p>
<p>很多人在问豆子在哪里捡到的，其实豆子不是随地捡到的，而是根据你发现的街道来获得的。我记得是每发现10条街奖励1颗、每发现30条街奖励1颗、60条街奖励2颗、100条街奖励2颗。走遍全城奖励4颗。</p>
]]></content:encoded>
			<wfw:commentRss>http://5.yupana.net/2011/09/07/douban-alpha-town-map.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在apache和nginx下设置wordpress的rewrite</title>
		<link>http://5.yupana.net/2011/03/23/wordpress-rewrite-for-apache-and-nginx.html</link>
		<comments>http://5.yupana.net/2011/03/23/wordpress-rewrite-for-apache-and-nginx.html#comments</comments>
		<pubDate>Wed, 23 Mar 2011 08:25:42 +0000</pubDate>
		<dc:creator>JeRemY</dc:creator>
				<category><![CDATA[分享]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://5.yupana.net/?p=2424</guid>
		<description><![CDATA[设置rewrite的伪静态主要是为了去除url路径里包含的index.php，让url看起来更为规范，也可以说是为了更好的SEO。现在的*nix主机基本都部署的apache和nginx，这里整理下常见的wordpress在两个服务器下的伪静态文件。 wordpress在apache服务器上rewrite的伪静态文件代码。 只有在apache加载了rewrite模块后才能使rewrite生效，并且设置allowoverride all才能使.htaccess文件生效。 wordpress在nginx服务器上rewrite的伪静态文件代码。 对于在dotcloud这种以nginx作为服务器的云平台上搭建wordpress尤其适用。]]></description>
			<content:encoded><![CDATA[<p>设置rewrite的伪静态主要是为了去除url路径里包含的index.php，让url看起来更为规范，也可以说是为了更好的SEO。现在的*nix主机基本都部署的apache和nginx，这里整理下常见的wordpress在两个服务器下的伪静态文件。</p>
<p>wordpress在apache服务器上rewrite的伪静态文件代码。<br />
只有在apache加载了rewrite模块后才能使rewrite生效，并且设置allowoverride all才能使.htaccess文件生效。</p>
<pre class="brush: plain; title: ; notranslate">

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</pre>
<p>wordpress在nginx服务器上rewrite的伪静态文件代码。</p>
<pre class="brush: plain; title: ; notranslate">
location / {
      index index.html index.php;
      if (-f $request_filename/index.html){
           rewrite (.*) $1/index.html break;
      }
     if (-f $request_filename/index.php){
           rewrite (.*) $1/index.php;
     }
     if (!-f $request_filename){
           rewrite (.*) /index.php;
     }
}
</pre>
<p>对于在dotcloud这种以nginx作为服务器的云平台上搭建wordpress尤其适用。</p>
<pre class="brush: plain; title: ; notranslate">
try_files $uri $uri/ /index.php;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://5.yupana.net/2011/03/23/wordpress-rewrite-for-apache-and-nginx.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>让wordpress在DotCloud上运行</title>
		<link>http://5.yupana.net/2011/03/05/wordpress-works-out-of-the-box-on-dotcloud.html</link>
		<comments>http://5.yupana.net/2011/03/05/wordpress-works-out-of-the-box-on-dotcloud.html#comments</comments>
		<pubDate>Fri, 04 Mar 2011 16:55:47 +0000</pubDate>
		<dc:creator>JeRemY</dc:creator>
				<category><![CDATA[分享]]></category>
		<category><![CDATA[DotCloud]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://5.yupana.net/?p=2251</guid>
		<description><![CDATA[在DotCloud搭建安装wordpress，将原有的wordpress的数据备份导入新的blog上，完成迁移到DotCloud的具体方法和步骤。]]></description>
			<content:encoded><![CDATA[<p>收到了DotCloud的邀请，于是将自己使用wordpress建立的blog迁移到DotCloud。记录一下整个的过程，同样的方法也可以用于在DotCloud上搭建一个新的wordpress，因为前半部分过程基本是一份中文版的DotCloud安装wordpress教程，若需要看原文请访问 <a href="http://docs.dotcloud.com/tutorials/wordpress/">http://docs.dotcloud.com/tutorials/wordpress/</a> </p>
<p>&nbsp;</p>
<h3>DotCloud介绍</h3>
<p><a href="http://www.dotcloud.com">DotCloud</a>是第二代平台服务商，与GAE只支持Python和Java不同，为客户提供多种语言支持与服务组建：PHP，Python，Java，Ruby，MySQL，PostgreSQL，Redis等等，连稀有的Node.js都在他们的组件支持范围内（详情请访问 <a href="http://docs.dotcloud.com/components/roadmap/">http://docs.dotcloud.com/components/roadmap/</a> ）。但是现在DotCloud处于Beta阶段，只有获得邀请的用户才能使用。<br />
DotCloud基本是通过命令行方式的客户端对项目进行管理。所以在了解DotCloud提供的基础命令之前，我们需要先在本地安装DotCloud的命令行客户端。</p>
<p>&nbsp;</p>
<h3>安装DotCloud客户端</h3>
<li>首先请确认你的python版本至少是2.6版的，如果不是2.6版本，请更新你的python。
<pre class="brush: bash; title: ; notranslate">
$ python -V
</pre>
<p>根据情况选择一下一种方式安装DotCloud客户端：</p>
<ul>
<li>安装有setuptools开发包的请使用easy_install安装DotCloud；
<pre class="brush: bash; title: ; notranslate">
$ sudo easy_install dotcloud //官方推荐方式
</pre>
</li>
<li>
如果没有setuptools开发包请使用下面的方式安装DotCloud客户端；</p>
<pre class="brush: bash; title: ; notranslate">
$ sudo apt-get install python-pip //基于Debian的系统，获取pip(原pyinstall)
$ sudo pip install dotcloud       //通过pip安装DotCloud
</pre>
</li>
</ul>
<p>确认DotCloud的命令行程序安装成功，提示你输入API Key。登陆DotCloud网站，你的账户下的<a href="https://www.dotcloud.com/account/settings">settings</a>里有你的API Key。</p>
<pre class="brush: bash; title: ; notranslate">
$ dotcloud   //这时会提醒你输入你的API Key
</pre>
<p>&nbsp;</p>
<h3>下载wordpress</h3>
<p>你可以选择下载最新的wordpress的中文版或者英文版，并解压至一文件夹。</p>
<pre class="brush: bash; title: ; notranslate">
$ wget -O wordpress.zip  http://wpcn.googlecode.com/files/WordPress.v3.1.Incl.Simp.Chinese.Pack.v1-wpcng.zip  //下载wordpress 3.1中文版
$ unzip wordpress.zip
</pre>
<p>&nbsp;</p>
<h3>在DotCloud上部署服务</h3>
<p>首先需要建立一个新项目的空间命名，在该空间命名下部署多个不同类型的服务，也可以部署多个相同类型的服务。空间命名的唯一性要求该项目的空间命名不能和DotCloud上其他用户建立的命名重复。</p>
<pre class="brush: bash; title: ; notranslate">
/***
建立一个新项目的空间命名foo(请将“foo”替换成你喜欢的名称，如果和其他户用项目名称重复会有提示)
***/
$ dotcloud create foo

/***
然后我们为foo项目下部署一些不同的类型的服务来支持我们的wordpress的运行
因为wordpress应用通常是基于PHP和MySQL，所以让DotCloud为我们的wordpress提供这两项服务支持
***/

$ dotcloud deploy -t php  foo.blog //提供PHP支持
/***
部署成功后，你可以通过http://blog.foo.dotcloud.com来访问，并看见phpinfo输出的信息
***/

$ dotcloud deploy -t mysql foo.mysql  //提供MySQL支持

$ dotcloud list  //察看DotCloud上我们的所有项目及服务

$ dotcloud info foo.mysql //服务具体信息，尤其是MySQL的具体信息，我们在配置wordpress会需要用到
cluster: wolverine
config:
    mysql_password: L2T3yuH}
deployment: sanfran
name: sanfran.db
ports:
-   name: mysql
    url: mysql://root:L2T3yuH}@mysql.foo.dotcloud.com:7255
-   name: ssh
    url: ssh://dotcloud@mysql.foo.dotcloud.com:7256
type: mysql
</pre>
<p>&nbsp;</p>
<h3>修改wordpress配置</h3>
<p>将wordpress文件夹里的wp-config-sample.php并另存为wp-config.php，并打开文件，根据上面提供的mysql的具体信息（注意：如果不愿意使用DotCloud生成默认数据库，请登录MySQL，新建一个数据库），修改以下内容：</p>
<pre class="brush: php; title: ; notranslate">
/** The name of the database for WordPress */
define('DB_NAME', 'mysql');  //若你新建一个数据库，这里填写你新建数据库名称，而非”mysql“，推荐方法是：新建一个数据库来供wordpress使用;

/** 该数据库的用户名 */
define('DB_USER', 'root');

/** 该用户的密码 */
define('DB_PASSWORD', 'L2T3yuH}');

/** 数据库的主机名（一般情况下不需要改动本项） */
define('DB_HOST', 'mysql.foo.dotcloud.com:7255');   //请注意这里填写你mysql服务的具体地址和端口，并非原文注释的不做修改。
</pre>
<p>打开 <a href="http://https://api.wordpress.org/secret-key/1.1/salt/">https://api.wordpress.org/secret-key/1.1/salt/</a> 将获取的值覆盖文件里的以下内容</p>
<pre class="brush: php; title: ; notranslate">
define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');
</pre>
<p>&nbsp;</p>
<h3>设置永久链接</h3>
<p>因为DotCloud是基于nginx，官方的资料上提供了让nginx支持wordpress的永久链接的配置文件。在wordpress文件夹下新建一个nginx.conf文件，输入以下内容：</p>
<pre class="brush: bash; title: ; notranslate">
try_files $uri $uri/ /index.php;
</pre>
<p>&nbsp;</p>
<h3>制作postinstall脚本</h3>
<p>使用DotCloud客户端push代码，会试本地的代码与服务器上的代码作比较，并完全覆盖已存在的代码，并删除服务器上多余的代码。可以看作似乎在DotaCloud上建立一个与本地完全一样的镜像。所以DotCloud提供了一种方法来防止覆盖通过wordpress安装的插件、主题及一些上传的文件（其实就是所有在wp-content里的文件）。<br />
在wordpress下新建一个postinstall文件并输入以下内容</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/sh
if [ -d ~/data/wp-content ]
then
      rm -rf ~/current/wp-content
else
      mkdir -p ~/data
      mv ~/current/wp-content ~/data/wp-content
fi
ln -s ~/data/wp-content ~/current/wp-content
</pre>
<p>让postinstall脚本可执行</p>
<pre class="brush: bash; title: ; notranslate">
$ chmod +a postinstall
</pre>
<p>&nbsp;</p>
<h3>将wordpress代码push到DotCloud</h3>
<pre class="brush: bash; title: ; notranslate">
$ cd wordpress
$ dotcloud push foo.blog . //将wordpress文件下的所有内容传送至DotCloud并覆盖原有的内容
</pre>
<p>&nbsp;<br />
至此基本的wordpress已经部署完毕了,打开http://blog.foo.dotcloud.com便可以开始设置你的wordpress并开始使用了。</p>
<p>而DotCloud建议用户通过下载新版本wordpress进行升级，解压后覆盖掉wp-config.php, postinstall and nginx.conf，将代码push到服务器上完成升级。</p>
<p>&nbsp;<br />
接下来开始数据迁移，需要对原有的blog数据进行备份，并向新的blog导入备份。</p>
<p>&nbsp;</p>
<h3>使用BackWPup备份wordpress</h3>
<p>BackWPup是一个优秀的wordpress插件，提供了较为全面的备份服务。<a href="http://5.yupana.net/2010/07/27/backwpup.html">BackWPup使用方法</a>。<br />
当然你也可以使用更为熟悉的插件或者其他方式备份wordpress。</p>
<p>&nbsp;</p>
<h3>导入wordpress数据库备份</h3>
<p>导入备份的方式有几种：</p>
<ul>
<li>推荐方式：通过phpMyAdmin导入sql文件；</li>
<li>通过mysql命令行导入sql文件；</li>
<li>通过wordpress自身的xml文件导入；</li>
</ul>
<h4>通过phpMyAdmin导入数据</h4>
<p>配置phpMyAdmin并将其运行在DotCloud，可以方便以后对数据库进行管理，推荐使用该方法导入数据，同时也因为可以突破DotCloud现在针对免费用户的2M上传限制。<br />
通过上面的方法在DotCloud上为phpMyAdmin建立一个PHP服务foo.phpmyadmin。</p>
<pre class="brush: bash; title: ; notranslate">
$ dotcloud deploy -t php foo.phpmyadmin
</pre>
<p>&nbsp;</p>
<h4>配置phpMyAdmin</h4>
<p>在 <a href="http://www.phpmyadmin.net/">phpMyAdmin网站</a> 下载最新的phpMyAdmin，解压后根据之前为wordpress建立的mysql服务修改配置。<br />
phpMyAdmin版本高于3.3.x可以直接找到phpmyadmin文件夹里的/libraries/config.default.php文件并进行编辑（如果是版本低于3.3.x请将config.default.php打开，以config.php命名另存在phpmyadmin文件里进行编辑），使其可以对在DotCloud建立的数据库进行管理：</p>
<pre class="brush: php; title: ; notranslate">
/**找到$cfg['Servers'][$i]['host']，$cfg['Servers'][$i]['user']，$cfg['Servers'][$i]['password']进行修改，并确认 $cfg['Servers'][$i]['auth_type'] = 'cookie';
**/
$cfg['Servers'][$i]['host'] = 'mysql.foo.dotcloud.com:7255'; //我们建立的mysql的地址及端口
$cfg['Servers'][$i]['user'] = 'root'; //登录数据库的用户名
$cfg['Servers'][$i]['password'] = 'L2T3yuH}'; //用户密码
$cfg['Servers'][$i]['auth_type'] = 'cookie'; //因为通过网络进行访问，请确认该值为cookie。
</pre>
<p>因为DotCloud的对通过PHP上传文件的大小限制为2M（可能收费用户没限制，我现在使用的是免费服务），所以为方便我们导入大于2M的备份文件，还需要继续修改phpMyAdmin的配置文件（具体原因请访问 <a href="http://5.yupana.net/2010/08/27/import-sql-into-the-mysql-by-phpmyadmin.html">让phpMyAdmin导入超过上传限制的备份文件</a> ）。在phpmyadmin下建立一个文件夹backup，继续修改phpmyadmin文件夹里的/libraries/config.default.php文件：</p>
<pre class="brush: php; title: ; notranslate">
$cfg['UploadDir'] = 'backup'; //赋值为phpmyadmin下刚才建立的文件夹
</pre>
<p>将phpMyAdmin代码push到DotCloud：</p>
<pre class="brush: bash; title: ; notranslate">
$ cd phpmyadmin
$ dotcloud push foo.phpmyadmin .
</pre>
<p>接下来我们可以访问http://phpmyadmin.foo.dotcloud.com登录phpMyAdmin对数据库进行管理，选中mysql数据库，导入我们的wordpress数据库备份文件。<br />
如果我们的备份文件大于2M，请将备份文件放至backup文件夹里，确认备份为sql文件而非压缩文件或者其他格式。<br />
再次将phpMyAdmin的代码push到DotCloud，打开phpMyAdmin的导入选项，会发现里面多了一个“网站服务器上传文件夹”选项，选中我们刚才导入的备份文件，导入文件，完成后我们便完成了数据导入过程。</p>
<p>&nbsp;</p>
<h4>通过mysql命令行导入sql文件</h4>
<pre class="brush: bash; title: ; notranslate">
$ mysql -h mysql.foo.dotcloud.com -P7255  -u root -p
 Enter password://数据密码

mysql&gt;use mysql //选择到mysql数据库

mysql&gt;source /home/jeremy/wordpress.sql  //导入sql文件，请根据你的备份文件修改文件路径及名字
</pre>
<h4>通过XML导入</h4>
<p>就是通过wordpress自带的工具栏里的导入进行导入，比较简单，不作详细介绍。</p>
<p>&nbsp;</p>
<h3>完成wordpress数据库升级</h3>
<p>完成数据导入以后，请重新登陆wordpress以便使其进行数据库数据升级。</p>
<p>&nbsp;</p>
<h3>其他</h3>
<p>以上便是整个将wordpress搬家到DotCloud云服务上的整个过程。当然或者你还有别的需要，比如你需要在DotCloud上绑定你现有的域名：</p>
<pre class="brush: bash; title: ; notranslate">
/**
将下面的地址换成你自己的域名，并根据提示修改你的CNAME记录。
**/
$ dotcloud alias add foo.blog http://5.yupana.net
</pre>
]]></content:encoded>
			<wfw:commentRss>http://5.yupana.net/2011/03/05/wordpress-works-out-of-the-box-on-dotcloud.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>让phpMyAdmin导入超过上传限制的备份文件</title>
		<link>http://5.yupana.net/2010/08/27/import-sql-into-the-mysql-by-phpmyadmin.html</link>
		<comments>http://5.yupana.net/2010/08/27/import-sql-into-the-mysql-by-phpmyadmin.html#comments</comments>
		<pubDate>Thu, 26 Aug 2010 16:42:08 +0000</pubDate>
		<dc:creator>JeRemY</dc:creator>
				<category><![CDATA[分享]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://5.yupana.net/?p=2317</guid>
		<description><![CDATA[通过修改phpMyAdmin配置，突破php上传限制，使其导入超过限制的备份文件。]]></description>
			<content:encoded><![CDATA[<p>主要记录一下，在不能修改php.ini或nginx配置的情况下，如何通过修改phpMyAdmin自身的配置，突破php或者nginx的上传限制，向MySQL数据库里导入大于配置限制（一般情况为2M）的备份。</p>
<p>既然是修改phpMyAdmin配置，所以你必须可以自行修改和配置phpMyAdmin。这对一些拥有限制性的虚拟空间，但是可以自己上传phpMyAdmin进行数据库管理的用户较为实用。</p>
<p>看完phpMyAdmin配置文件config.default.php（phpMyAdmin版本大于3.3.x可以直接编辑该文件并生效，小于该版本的，请修改后另存为phpmyadmin文件下的config.php）就会发现phpMyAdmin可以设置一个文件夹里，并执行里面的文件。</p>
<pre class="brush: php; title: ; notranslate">
/**
 * Directory for uploaded files that can be executed by phpMyAdmin.
 * For example './upload'. Leave empty for no upload directory support.
 * Use %u for username inclusion.
 *
 * @global string $cfg['UploadDir']
 */

$cfg['UploadDir'] = '' ;
</pre>
<p>于是我们可以在phpMyAdmin的文件夹下建立一个backup文件夹，并修改config.default.php文件：</p>
<pre class="brush: php; title: ; notranslate">
$cfg['UploadDir'] = 'backup';
</pre>
<p>将我们需要导入的备份文件放到backup里，然后上传该文件夹及修改后的配置文件，让phpMyAdmin可以执行其备份文件。<br />
当我们再次登陆phpMyAdmin管理数据库，打开导入选项，便会发现在“文本文件的位置”的下方多了一个选择“网站服务器上传文件夹”，这是你可以选择我们刚才上传的备份文件，进行数据导入。</p>
<p>需要注意：我们放到backup文件夹里的备份文件必须是.sql文件，其他.gz，.zip等格式的文件是phpMyAdmin不能执行的。</p>
<p>除了使用phpMyAdmin导入上传备份，还有另外一种备份导入方式，通过命令行导入:</p>
<pre class="brush: bash; title: ; notranslate">
mysql&gt;source backup.sql ;
</pre>
<p>但是这样的速度太慢了，不以推荐。</p>
]]></content:encoded>
			<wfw:commentRss>http://5.yupana.net/2010/08/27/import-sql-into-the-mysql-by-phpmyadmin.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>让codeigniter在Linux主机运行时忽略url大小写</title>
		<link>http://5.yupana.net/2010/08/09/codeigniter-linux-url-ignore.html</link>
		<comments>http://5.yupana.net/2010/08/09/codeigniter-linux-url-ignore.html#comments</comments>
		<pubDate>Mon, 09 Aug 2010 08:06:50 +0000</pubDate>
		<dc:creator>JeRemY</dc:creator>
				<category><![CDATA[分享]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://5.yupana.net/?p=2192</guid>
		<description><![CDATA[codeigniter框架(CI框架)的web应用在Linux主机里运行，会发现其对url的大小写很敏感。尤其是针对控制器的路由上。其实其他的一些web应用程序及框架可能也有这样的问题。 基本原因是CI框架在路由的时候，其实是通过地址判断文件是否存在，从而决定加载。同时Linux系统对文件名有大小写区分。 于是在地址栏里输入http://yoursite.com/Hello/hell的时候，打开的是一个名叫Hello的控制器，而同时加载的是controller下的Hello.php这个文件，如果你的文件名是hello.php，那么肯定就有404的错误。同样的如果你的控制器文件名字是hello.php，而你的地址是http://yoursite.com/Hello/hell，其要寻找的控制器文件Hello.php的时候自然就会判定不存在。 解决方法很简单，就是在system/libraries里的Router文件里加一条强制将控制器转化为小写的语句。然后将所有的控制器文件名改为小写（注意是文件名，不是类的名字）。 因为是修改框架本身的源文件，所以请备份好原文件。 1. 具体如下，找到system/libraries里的Router文件，修改源文件： 2. 将controllers文件夹下的文件都用小写的文件名，这也是codeigniter推荐的命名方式。 其实很多时候codeigniter并不推荐修改源文件，但是个人觉得这个方法最直接最有效，若有其他的方法，请留言告知，谢谢。]]></description>
			<content:encoded><![CDATA[<p>codeigniter框架(CI框架)的web应用在Linux主机里运行，会发现其对url的大小写很敏感。尤其是针对控制器的路由上。其实其他的一些web应用程序及框架可能也有这样的问题。</p>
<p>基本原因是CI框架在路由的时候，其实是通过地址判断文件是否存在，从而决定加载。同时Linux系统对文件名有大小写区分。</p>
<p>于是在地址栏里输入http://yoursite.com/Hello/hell的时候，打开的是一个名叫Hello的控制器，而同时加载的是controller下的Hello.php这个文件，如果你的文件名是hello.php，那么肯定就有404的错误。同样的如果你的控制器文件名字是hello.php，而你的地址是http://yoursite.com/Hello/hell，其要寻找的控制器文件Hello.php的时候自然就会判定不存在。</p>
<p>解决方法很简单，就是在system/libraries里的Router文件里加一条强制将控制器转化为小写的语句。然后将所有的控制器文件名改为小写（注意是文件名，不是类的名字）。</p>
<p>因为是修改框架本身的源文件，所以请备份好原文件。</p>
<p>1. 具体如下，找到system/libraries里的Router文件，修改源文件：</p>
<pre class="brush: php; title: ; notranslate">
//找到 function _validate_request

	function _validate_request($segments)
	{
		//增加下面这一句，其实就是强制将控制器名字转化为小写
                $segments[0] = strtolower($segments[0]);

		// Does the requested controller exist in the root folder?
		if (file_exists(APPPATH.'controllers/'.$segments[0].EXT))
		{
			return $segments;
		}
</pre>
<p>2. 将controllers文件夹下的文件都用小写的文件名，这也是codeigniter推荐的命名方式。</p>
<p>其实很多时候codeigniter并不推荐修改源文件，但是个人觉得这个方法最直接最有效，若有其他的方法，请留言告知，谢谢。</p>
]]></content:encoded>
			<wfw:commentRss>http://5.yupana.net/2010/08/09/codeigniter-linux-url-ignore.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BackWPup使用教程</title>
		<link>http://5.yupana.net/2010/07/27/backwpup.html</link>
		<comments>http://5.yupana.net/2010/07/27/backwpup.html#comments</comments>
		<pubDate>Mon, 26 Jul 2010 18:25:40 +0000</pubDate>
		<dc:creator>JeRemY</dc:creator>
				<category><![CDATA[分享]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://5.yupana.net/?p=2336</guid>
		<description><![CDATA[BackWPup，wordpress备份插件的中文使用教程，通过BackWPup备份wordpress，并发送到指定邮箱。]]></description>
			<content:encoded><![CDATA[<p>因为之前使用wp-db-backup插件，但是至从一次升级后就该插件无法发送备份到我邮箱。于是在另外寻找其他插件代替的时候发现了这款叫做BackWPup的wordpress备份插件。</p>
<h3>BackWPup介绍</h3>
<p><a href="http://wordpress.org/extend/plugins/backwpup/">BackWPup</a>是官方推荐插件。这款插件不仅仅能备份wordpress的数据库，而且还支持整体备份。可以将备份文件压缩为zip,tar.gz,tar.bz2等格式，而且计划任务表可以让你根据自己的需要定制你的备份任务，并通过多种方式将备份文件发送至邮箱，或者是Dropbox，Amazon S3等第三方进行存储。另外BackWPup还可以对数据库进行优化，检查及修复，提供了较其他插件更为全面的服务和选择。</p>
<h3>BackWPup的安装</h3>
<p>作为wordpress官方推荐插件，可以在插件面板里的添加选项搜索到该插件，并进行安装。<br />
安装完成以后可能会提示一些文件夹不存在，你可以在wordpress下建立这些文件夹，并给与这些文件夹可以读写权限。当然你也可以打开BackWPup面板里的setting选项，进行自定义配置，指定你需要的文件夹及路径。</p>
<h3>BackWPup的使用</h3>
<p>安装好BackWPup以后，从工具面板里选择“BackWPup”进行配置。这里简单说明如何使用BackWPup进行备份wordpress数据库，并将备份发送到指定邮箱。</p>
<p>点击“Add New”添加一个新的计划任务。</p>
<p>首先我们需要为该任务命名，比如“SQL_Backup”。</p>
<p>在最右边的设定选项：<br />
Job Type，选择任务的类型，因为我们进行数据库备份，所以勾选“Database Backup”，同时我还选择了”Optimize Database Tables“对数据表进行优化。<br />
Job Schedule，任务表，使其在你需要的时间执行你的定制任务。勾选”Activate scheduling“激活该表，然后根据你需要的时间对”分，时，日，月，周“进行选择。<br />
Backup File，是设置你备份文件名及格式。”File Prefix“设置文件名的前缀，比如”database_backup_“。而下面的是选择文件的格式，推荐zip。若使用压缩文件，请确保wordpress所在主机支持该压缩服务。<br />
Send Log，将日志文件发送到填写的邮件里。”Only send an e-mail if there are errors.“是让BackWPup只在发生错误时才发送日志。</p>
<p>在左边的“Database Jobs”栏里的“Database tables to exclude”选项是让我选择一些我们不要备份的数据表。</p>
<p>接下来看看下面的“Backup to Directory”这一栏。<br />
“Full Path to Folder for Backup Files”是设置我们备份在主机上保存的路径，这个可以根据你自己的需要进行修改，但是必须得保证对该文件夹有读写的权限。<br />
“Max. Backup Files in Folder”是让我们设置在主机上保存的备份文件数目，这个根据主机的空间大小而定，比如可以定为5。</p>
<p>在最下面的“Backup to Email”栏里“E-mail address”是填写用来接收备份的邮件地址。</p>
<p>以上信息填写完成后点击右上角的”Save Changes“保存所做的修改。<br />
返回BackWPup下的Jobs菜单，可以看见刚才定制的数据库备份任务”SQL_Backup“，BackWPup便可以按照设置进行数据库备份，并将备份文件发送到指定邮箱。我们也可以立即点击”Run Now“执行该备份任务。</p>
<h3>BackWPup设置</h3>
<p>打开BackWPup的设置页面，在”Send Mail“栏里有一些配置信息需要设定。<br />
Sender Email与Sender Name都比较好理解。可以根据自己需要填写。<br />
而最后的Send mail method选项体现了BackWPup更为全面的定制功能。一般wordpress是采用PHP的mail()函数进行邮件发送，比如wp-db-backup插件就是默认采用该方式。如果wordpress所在主机不支持该函数就得另外安装SMTP插件来实现邮件发送，而BackWPup插件在这里就提供了SMTP方式来实现邮件发送。除此之外还可以通过sendmail命令来发送邮件。</p>
<p>通过以上的方式便能使用BackWPup实现数据库备份。</p>
]]></content:encoded>
			<wfw:commentRss>http://5.yupana.net/2010/07/27/backwpup.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>让nvidia显卡在Linux下正常驱动</title>
		<link>http://5.yupana.net/2010/05/05/nvidia-for-linux.html</link>
		<comments>http://5.yupana.net/2010/05/05/nvidia-for-linux.html#comments</comments>
		<pubDate>Wed, 05 May 2010 08:16:59 +0000</pubDate>
		<dc:creator>JeRemY</dc:creator>
				<category><![CDATA[分享]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://5.yupana.net/?p=2155</guid>
		<description><![CDATA[ubuntu从9.10升级到10.04后不能开启特效。 nvidia-settings的面板里能看到显卡和具体配置，却无法开启特效。 提示的错误是:no device 完全卸载了驱动并重新安装了闭源驱动，并执行sudo nvidia-xconfig依旧如此无效。 估计是xorg.conf的原因，后来对比了几次nvidia-xconfig生成的xorg.conf，发现原来这个文件并没被重写，新生成的文件和之前的完全一样（新文件和备份文件没区别）。 想了下，之前nvidia-settings里的可以读取到xorg.conf的文件，而nvidia-xconfig就是将nvidia-settings里读取的配置直接保存为当前的xorg.conf。那么不管是升级还是什么情况造成xorg.conf出错，只要nvidia-settings可以读取文件，最后nvidia-xconfig都将错误的配置生成错误的xorg.conf。 索性删除xorg.conf文件，重新生成。 成功开启特效。 不知道这个算不算是nvidia-xconfig的bug。至少我觉得这个命令应该是直接重置复写吧，不然备份的意义何在。 也不知道这个方法算不算解决nvidia显卡在ubuntu等Linux下无法驱动的一个方法。 反正记录下，备查。]]></description>
			<content:encoded><![CDATA[<p>ubuntu从9.10升级到10.04后不能开启特效。<br />
nvidia-settings的面板里能看到显卡和具体配置，却无法开启特效。<br />
提示的错误是:no device<br />
完全卸载了驱动并重新安装了闭源驱动，并执行sudo nvidia-xconfig依旧如此无效。</p>
<p>估计是xorg.conf的原因，后来对比了几次nvidia-xconfig生成的xorg.conf，发现原来这个文件并没被重写，新生成的文件和之前的完全一样（新文件和备份文件没区别）。<br />
想了下，之前nvidia-settings里的可以读取到xorg.conf的文件，而nvidia-xconfig就是将nvidia-settings里读取的配置直接保存为当前的xorg.conf。那么不管是升级还是什么情况造成xorg.conf出错，只要nvidia-settings可以读取文件，最后nvidia-xconfig都将错误的配置生成错误的xorg.conf。</p>
<p>索性删除xorg.conf文件，重新生成。<br />
成功开启特效。</p>
<p>不知道这个算不算是nvidia-xconfig的bug。至少我觉得这个命令应该是直接重置复写吧，不然备份的意义何在。<br />
也不知道这个方法算不算解决nvidia显卡在ubuntu等Linux下无法驱动的一个方法。<br />
反正记录下，备查。</p>
]]></content:encoded>
			<wfw:commentRss>http://5.yupana.net/2010/05/05/nvidia-for-linux.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决mplayer中文字幕显示乱码与ibus不能输入中文</title>
		<link>http://5.yupana.net/2009/12/30/mplayer-ibus-lc_ctype.html</link>
		<comments>http://5.yupana.net/2009/12/30/mplayer-ibus-lc_ctype.html#comments</comments>
		<pubDate>Tue, 29 Dec 2009 17:41:49 +0000</pubDate>
		<dc:creator>JeRemY</dc:creator>
				<category><![CDATA[分享]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://5.yupana.net/?p=2088</guid>
		<description><![CDATA[解决mplayer中文字幕乱码，解决ibus不能输入中文，LC_CTYPE具体的设置对mplayer和ibus的影响]]></description>
			<content:encoded><![CDATA[<h3>解决mplayer中文字幕显示乱码</h3>
<p>忘记啥时候开始，我的mplayer显示中文字幕是乱码，其实也不完全叫做乱码就是所有字幕只显示一根横线偶尔能显示正确的数字，而我的mplayer的配置文件很久都没改动过了，配置文件的内容也是这种网上能找到的：<br />
在mplayer得gui界面点击右键打开配置，字幕选项卡下设置Encoding为cp936；在字体选项卡下设置中文字体，并使用Encoding为Unicode。<br />
当上面的方法无效时，请输入</p>
<pre class="brush: bash; title: ; notranslate">locale</pre>
<p>查看下LC_CTYPE是否为zh_CN.*，如果不是请打开&#8221;/etc/environment&#8221;，修改或添加</p>
<pre class="brush: bash; title: ; notranslate">LC_CTYPE=&quot;zh_CN.UTF-8&quot;</pre>
<p>我也是在前段时间更换系统字体的时候，发现很多字体在全英文界面下表现很不错，这时我才反应过来，我使用的英文操作系统，虽然有中文语言包，但是locale的设置应该全是en_US.UTF-8，估计是LC_CTYPE的原因造成的，于是在/etc/environment里加了一段LC_CTYPE=&#8221;zh_CN.UTF-8&#8243;便解决中文字幕乱码（其实该说是横码）问题。</p>
<p>另外还有种解决方法：<br />
在字体选择处输入字体名字，而非直接选择字体文件。</p>
<h3>解决ibus不能输入中文</h3>
<p>同时得以解决的是ibus拼音输入法有时不能输入中文的问题。之前ibus拼音输入法动不动就会“失灵”，没法输入中文，状态条直接消失不见。<br />
我估计的原因是，ibus只是一个输入法框架，它会为各种语言输入提供一个基础，其中包括英文，所以LC_CTYPE为en_US.UTF-8的时候能启动ibus，但是在具体负责中文输入的还是ibus-pinyin这个模块，就是说最后中文输入法还是得和LC_CTYPE挂上勾，还是要设置为zh_CN.*。</p>
]]></content:encoded>
			<wfw:commentRss>http://5.yupana.net/2009/12/30/mplayer-ibus-lc_ctype.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>为gtk程序实现国际化和本地化</title>
		<link>http://5.yupana.net/2009/12/22/gtk-i18n-l10n.html</link>
		<comments>http://5.yupana.net/2009/12/22/gtk-i18n-l10n.html#comments</comments>
		<pubDate>Mon, 21 Dec 2009 16:32:00 +0000</pubDate>
		<dc:creator>JeRemY</dc:creator>
				<category><![CDATA[分享]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://5.yupana.net/?p=1848</guid>
		<description><![CDATA[为gtk提供国际化(i18n)和本地化(l10n)支持]]></description>
			<content:encoded><![CDATA[<p>这是一个学习笔记，内容是在Linux系统下以一个简单的gtk程序为基础，为其添加对i18n和l10n的支持。从而了解怎么实现gtk程序的国际化和本地化。</p>
<h3>基本的概念</h3>
<ul>
<li>什么是i18n，i18n是internationalization的简称，指程序能提供不同语言显示的国际化支持。</li>
<li>什么是l10n，l10n是localization的简称，指程序的能拥有某一特定语言支持的本地化。</li>
</ul>
<p>更多的信息可以自行google或者参看一下这里 <a href="http://www.linuxforum.net/doc/i18n-new.html" target="_blank">http://www.linuxforum.net/doc/i18n-new.html</a></p>
<ul>
<li>基本原则：标记代码中用户在程序使用过程可见的字符串。</li>
<li>基本原理：整个过程是代码中使用 _()和N_()的方式来标记你需要翻译的字符串(即用户在使用过程可见的字符串)，提取并翻译这些字符串后，将其单独格式化，存放到语言文件夹。</li>
</ul>
<h3>国际化</h3>
<ol>
<li>首先寻找你要翻译的字符串</li>
<li>然后gettext()函数将需要翻译的字符串进行标记</li>
<li>进行编译</li>
</ol>
<h3>本地化</h3>
<ol>
<li>提取被比较的字符串</li>
<li>进行翻译</li>
<li>格式化</li>
<li>将文件存放到本地文件夹</li>
</ol>
<h3>国际化具体过程</h3>
<p>我们先来看看gtk程序的国际化。<br />
首先是在需要提供国际化的程序代码里增加一些我们将要用到的库和申明。</p>
<pre class="brush: cpp; title: ; notranslate">//要包含一个头文件。
#include    &lt;glib/gi18n.h&gt;    //versions 2.4及更高版本使用

//同时需要一些基本的申明。
#define  GETTEXT_PACKAGE    &quot;Hello_I18n&quot; // 可以换成你需要的名字
#define  LOCALEDIR    &quot;mo&quot;        //定义本地语言文件存放路径

//以及对gettext()进行初始化
bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, &quot;UTF-8&quot;);
textdomain(GETTEXT_PACKAGE);
</pre>
<p>现在可以对我们代码中需要翻译的字符串进行标记了。<br />
例：<br />
原代码如下</p>
<pre class="brush: cpp; title: ; notranslate">gtk_window_set_title(GTK_WINDOW(window),  &quot;Hello I18n!&quot;);</pre>
<p>需要标记的字符串为“Hello I18n!”，上面的语句说明了在程序的标题栏里要显示的字符串为“Hello I18n!”，那么需要将上面的语句改为下面这样：</p>
<pre class="brush: cpp; title: ; notranslate">gtk_window_set_title(GTK_WINDOW(window),  _(&quot;Hello I18n!&quot;));</pre>
<p>但是如果我们要对静态字符串进行标记的话，就要使用另一种方式N_().<br />
例：</p>
<pre class="brush: cpp; title: ; notranslate">const char *warning = &quot;The alien is behind you! \n&quot;;</pre>
<p>我们需要将其改为：</p>
<pre class="brush: bash; title: ; notranslate">const char *warning = N_(&quot;The alien is behind you! \n&quot;);</pre>
<p>就这样我们完成了程序的国际化，你可以编译你的程序。</p>
<h3>本地化具体过程</h3>
<p>而做完国际化后，我们需要做的是本地化。<br />
在终端下面通过xgettext命令，我们可以将我们代码test.c中标记的字符串提取出来并保存在test.po里：</p>
<pre class="brush: bash; title: ; notranslate">xgettext -a -o test.po test.c</pre>
<p>我们打开test.po可以看见一些信息<br />
例如：</p>
<pre class="brush: plain; title: ; notranslate">msgid &quot;test.\n&quot;
msgstr &quot;&quot;</pre>
<p>那么我们本地化就是对这样的字符串根据不同的地区语言进行翻译，例如我们的中文：</p>
<pre class="brush: plain; title: ; notranslate">msgid &quot;test.\n&quot;
msgstr &quot;测试。\n&quot;</pre>
<p>并且修改</p>
<pre class="brush: plain; title: ; notranslate">charset=CHARSET\n</pre>
<p>为</p>
<pre class="brush: plain; title: ; notranslate">charset=utf-8\n</pre>
<p>然后保存。<br />
接下来格式化文件：</p>
<pre class="brush: bash; title: ; notranslate">msgfmt -o test.mo test.po</pre>
<p>然后将test.mo文件复制到LOCALEDIR下面对应的文件夹里。例如，我们在前面的例子里定义LOCALEDIR为mo。</p>
<pre class="brush: bash; title: ; notranslate">cp test.mo mo/zh_CN/LC_MESSAGES</pre>
<p>现在如果我们的LC_ALL为zh_CN，那么我们如果执行这个程序，就可以看见中文了。而不是原来的英文或者其他语言。</p>
<p>一个国际化以后的简单例子：</p>
<pre class="brush: cpp; title: ; notranslate">#include    &lt;gtk/gtk.h&gt;
#include    &lt;glib/gi18n.h&gt;

#define GETTEXT_PACKAGE    &quot;Test&quot;
#define LOCALEDIR    &quot;mo&quot;

int main ( int   argc,
 char *argv[] )
{
 GtkWidget *frame;
 GtkWidget *label;

 bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
 bind_textdomain_codeset(GETTEXT_PACKAGE, &quot;UTF-8&quot;);
 textdomain(GETTEXT_PACKAGE);

 window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
 gtk_window_set_title(GTK_WINDOW(window),  _(&quot;Hello I18n!&quot;));
 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
 g_signal_connect(G_OBJECT(window), &quot;destroy&quot;,
 G_CALLBACK(gtk_main_quit),
 NULL);
 gtk_container_set_border_width(GTK_CONTAINER(window), 10);
 frame = gtk_frame_new(_(&quot;WARNING&quot;));
 label = gtk_label_new(_(&quot;\n  The alien is behind you!\n&quot;));
 gtk_container_add(GTK_CONTAINER(frame), label);
 gtk_container_add(window, frame);
 gtk_widget_show_all(window);
}
</pre>
<p>清理电脑里的文件时发现的笔记，写了有些年头了，而现在，似乎大家都用python在写gtk的程序了。<br />
P.S 有时做一些贡献很简单，比如为自己喜欢的软件实现本地化。</p>
]]></content:encoded>
			<wfw:commentRss>http://5.yupana.net/2009/12/22/gtk-i18n-l10n.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>我的Firefox配置</title>
		<link>http://5.yupana.net/2009/10/08/my-firefox-conf.html</link>
		<comments>http://5.yupana.net/2009/10/08/my-firefox-conf.html#comments</comments>
		<pubDate>Thu, 08 Oct 2009 08:57:46 +0000</pubDate>
		<dc:creator>JeRemY</dc:creator>
				<category><![CDATA[分享]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://5.yupana.net/?p=1759</guid>
		<description><![CDATA[我的Firefox优化设置和扩展配置]]></description>
			<content:encoded><![CDATA[<p>记录下优化Firefox时修改过的配置，方便以后查找。<br />
Firefox版本为3.5.*</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/5972" target="_blank">RAMBack</a>一个减少Friefox内存消耗的扩展。<br />
&#8220;about:config&#8221;里的设置：</p>
<ul>
<li> 减少地址栏的提示数量，修改browser.urlbar.maxRichResults的值改为3；</li>
<li> 最小化时释放内存，新建config.trim_on_minimize，布尔值为True；</li>
<li> 禁用IPv6，修改network.dns.disableIPv6的值为False；</li>
<li> 使用TraceMonkey JS引擎，修改javascript.options.jit.chrome的值为True，javascript.options.jit.content的值为True。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://5.yupana.net/2009/10/08/my-firefox-conf.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

