<?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"
	>

<channel>
	<title>ELNODE * 电子节点</title>
	<atom:link href="http://www.elnode.com/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.elnode.com/blog</link>
	<description>Live in Electronic Node!</description>
	<pubDate>Sun, 28 Sep 2008 13:42:44 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>英文 WinXP 玩魔兽争霸冰封王座简体中文版</title>
		<link>http://www.elnode.com/blog/how-to-play-tft_cn-in-winxp_e.vn</link>
		<comments>http://www.elnode.com/blog/how-to-play-tft_cn-in-winxp_e.vn#comments</comments>
		<pubDate>Sun, 28 Sep 2008 13:42:44 +0000</pubDate>
		<dc:creator>Vayn</dc:creator>
		
		<category><![CDATA[设技志]]></category>

		<category><![CDATA[game]]></category>

		<category><![CDATA[howto]]></category>

		<category><![CDATA[warcraft]]></category>

		<guid isPermaLink="false">http://www.elnode.com/blog/?p=195</guid>
		<description><![CDATA[最近喜欢上玩DotA，于是从某地搞到简体中文版的冰封王座，没想到不能在英文版本的 WinXP 运行，在 Google 上搜索半天找到解决方案。注意，由于要修改游戏安装文件，请提前做好备份以防万一。
打开 WarCraft 安装目录，找到 game.dll 文件，用 UltraEdit 或者类似的编辑器打开此文件，搜索 16 进制字符串“3D 04 08 00 00 74 2A 3D 04”，将 74 修改为 EB，然后保存退出。
]]></description>
			<content:encoded><![CDATA[<p>最近喜欢上玩DotA，于是从某地搞到简体中文版的冰封王座，没想到不能在英文版本的 WinXP 运行，在 Google 上搜索半天找到解决方案。注意，由于要修改游戏安装文件，请提前做好备份以防万一。</p>
<p>打开 WarCraft 安装目录，找到 game.dll 文件，用 UltraEdit 或者类似的编辑器打开此文件，搜索 16 进制字符串“3D 04 08 00 00 74 2A 3D 04”，将 74 修改为 EB，然后保存退出。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elnode.com/blog/how-to-play-tft_cn-in-winxp_e.vn/feed</wfw:commentRss>
		</item>
		<item>
		<title>My Essential Firefox Extensions</title>
		<link>http://www.elnode.com/blog/my-essential-firefox-extensions.vn</link>
		<comments>http://www.elnode.com/blog/my-essential-firefox-extensions.vn#comments</comments>
		<pubDate>Tue, 19 Aug 2008 09:44:16 +0000</pubDate>
		<dc:creator>Vayn</dc:creator>
		
		<category><![CDATA[设技志]]></category>

		<category><![CDATA[DIY]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[share]]></category>

		<guid isPermaLink="false">http://www.elnode.com/blog/?p=194</guid>
		<description><![CDATA[Access Flickr!
Bypasses the flickr.com fliter in Iran &#038; &#8230;
Adblock Plus
Get grid of ads.
CacheViewer
This extenion is GUI Front-end of &#8220;about:cache&#8221;.
Allows searching and sorting memory and disk cache files.
CHM Reader
An extension make firefox support CHM file reading.
DownThemAll!
DownThemAll is all you can desire from a download manager: it features an advanced accelerator that increases speed up to 400% [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://addons.mozilla.org/en-US/firefox/addon/4286">Access Flickr!</a><br />
Bypasses the flickr.com fliter in Iran &#038; &#8230;</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/1865">Adblock Plus</a><br />
Get grid of ads.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/2489">CacheViewer</a><br />
This extenion is GUI Front-end of &#8220;about:cache&#8221;.<br />
Allows searching and sorting memory and disk cache files.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/3235">CHM Reader</a><br />
An extension make firefox support CHM file reading.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/201">DownThemAll!</a><br />
DownThemAll is all you can desire from a download manager: it features an advanced accelerator that increases speed up to 400% and it allows you to pause and resume downloads at any time.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug</a><br />
Web Development Evolved.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/2410">Foxmarks Bookmark Synchronizer</a><br />
If you use Firefox on more than one computer, you&#8217;ll want Foxmarks. Install Foxmarks on each computer, and it will work silently in the background to keep your bookmarks synchronized.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a><br />
Allows you to customize the way a webpage displays using small bits of JavaScript. </p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/8182">SingletonFox</a><br />
Use only one instance of Firefox to handle all the URL requests.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/125">SwitchProxy Tool</a><br />
A tool that allow you to manage and switch between multiple proxy configurations quickly and easily.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elnode.com/blog/my-essential-firefox-extensions.vn/feed</wfw:commentRss>
		</item>
		<item>
		<title>我的公钥</title>
		<link>http://www.elnode.com/blog/my-public-key.vn</link>
		<comments>http://www.elnode.com/blog/my-public-key.vn#comments</comments>
		<pubDate>Fri, 08 Aug 2008 02:39:26 +0000</pubDate>
		<dc:creator>Vayn</dc:creator>
		
		<category><![CDATA[设技志]]></category>

		<category><![CDATA[gpg]]></category>

		<category><![CDATA[safe]]></category>

		<guid isPermaLink="false">http://www.elnode.com/blog/?p=192</guid>
		<description><![CDATA[&#8212;&#8211;BEGIN PGP PUBLIC KEY BLOCK&#8212;&#8211;
Version: GnuPG v1.4.6 (GNU/Linux)
mQGiBEiaUa4RBACg8VXxnHN8vTyUpcqH9pPeUmY4xBqLXirqlSE++vDGmWPRFtGe
v+KU8TC1gH8Y7OO5j5oHrHZuJZOReTXpPfPG70T4psYW+jE3R6voiinYlt2/eEk1
CyKhuIC+W9jwKl4frKmvWo2cVhXJWriaF9MhwCv4oAs28IUwVFMx8DQRXwCg6Abn
8DRkqWINjSREL69ybAIUMuUD+wUM+rpKQUrAv4GK6TqXLSmjvVwPkAE+2CxS4He/
S/Tm84uhXqWWg26+oxLsPX4PY6nxeOg/oLCP8RdtbH/D1Vgb3YjFk/0X2/dUkEr8
dDHCNb3y9q36GfiHe8eVOKw6NVz4m09YaJKGREulxky0T5SeAsyI3yA5zT76hA/u
DGLOBACTx1fvbgRis4j6JSVFtnAWce9UZESCWrygHmqg0jOuTXjtD5RW7GAY3utl
8n493li9vNK9oQrwQeQJpKHi+jMIJ4SCEgyb5zr+y1hisvIScPUgb+LmeKEt179G
TlKV31uJljdJBeksZEXj23b6k5p/uVBVAmDghyVHwgp154FTILQfVmF5biBUc2Fp
IDxkZXJhbXgwMDdAZ21haWwuY29tPohgBBMRAgAgBQJImlGuAhsDBgsJCAcDAgQV
AggDBBYCAwECHgECF4AACgkQZOc0QlqRhmDFUwCeOWn0ScO9sOla1QzgcYkIq2k3
tCYAnRpLPxc1Ys6kvpOk4DGTro10/QR0uQENBEiaUa4QBAC+RKTwO9bG2C5Ij6+D
TdaUs+iE0JDp+TiDM2arayweB/UuRDn2aJen5WNgIgBh+I8xCEOB1bVLPFQvg2xc
3SmIAaJIw4DIfrHJywwOa0pYy0c4mXgV6IFLbGF1ID+HVavBvSeCVmoyx+Vw6fJz
YFUtF83pXaswFmMCKbXO5DyfUwADBgP8DeoydEj3ALSvCOeQV2+FnQmXDn9HIwgt
ILRUiRlBw0UHaFqVVWoubzmFg/hF7miSgETyOimStA4OEmAbjhowZ0FFdfG5g2ms
NOlJhOpw+RHOUSd5Cat0QvsPBilwVLx0FLkKT4HDrhFonTfDwiOgrq83+RfFkZxW
axrJRaEeORqISQQYEQIACQUCSJpRrgIbDAAKCRBk5zRCWpGGYEVsAKDKXCW7i0Ra
XrRhEGnPmMCGYr4ImQCeO3Y4NFwhB6JOLEHApj8kc/lK5Io=
=U0bF
&#8212;&#8211;END PGP PUBLIC KEY BLOCK&#8212;&#8211;
欢迎发送加密函件 
]]></description>
			<content:encoded><![CDATA[<p><strong><small>&#8212;&#8211;BEGIN PGP PUBLIC KEY BLOCK&#8212;&#8211;<br />
Version: GnuPG v1.4.6 (GNU/Linux)</p>
<p>mQGiBEiaUa4RBACg8VXxnHN8vTyUpcqH9pPeUmY4xBqLXirqlSE++vDGmWPRFtGe<br />
v+KU8TC1gH8Y7OO5j5oHrHZuJZOReTXpPfPG70T4psYW+jE3R6voiinYlt2/eEk1<br />
CyKhuIC+W9jwKl4frKmvWo2cVhXJWriaF9MhwCv4oAs28IUwVFMx8DQRXwCg6Abn<br />
8DRkqWINjSREL69ybAIUMuUD+wUM+rpKQUrAv4GK6TqXLSmjvVwPkAE+2CxS4He/<br />
S/Tm84uhXqWWg26+oxLsPX4PY6nxeOg/oLCP8RdtbH/D1Vgb3YjFk/0X2/dUkEr8<br />
dDHCNb3y9q36GfiHe8eVOKw6NVz4m09YaJKGREulxky0T5SeAsyI3yA5zT76hA/u<br />
DGLOBACTx1fvbgRis4j6JSVFtnAWce9UZESCWrygHmqg0jOuTXjtD5RW7GAY3utl<br />
8n493li9vNK9oQrwQeQJpKHi+jMIJ4SCEgyb5zr+y1hisvIScPUgb+LmeKEt179G<br />
TlKV31uJljdJBeksZEXj23b6k5p/uVBVAmDghyVHwgp154FTILQfVmF5biBUc2Fp<br />
IDxkZXJhbXgwMDdAZ21haWwuY29tPohgBBMRAgAgBQJImlGuAhsDBgsJCAcDAgQV<br />
AggDBBYCAwECHgECF4AACgkQZOc0QlqRhmDFUwCeOWn0ScO9sOla1QzgcYkIq2k3<br />
tCYAnRpLPxc1Ys6kvpOk4DGTro10/QR0uQENBEiaUa4QBAC+RKTwO9bG2C5Ij6+D<br />
TdaUs+iE0JDp+TiDM2arayweB/UuRDn2aJen5WNgIgBh+I8xCEOB1bVLPFQvg2xc<br />
3SmIAaJIw4DIfrHJywwOa0pYy0c4mXgV6IFLbGF1ID+HVavBvSeCVmoyx+Vw6fJz<br />
YFUtF83pXaswFmMCKbXO5DyfUwADBgP8DeoydEj3ALSvCOeQV2+FnQmXDn9HIwgt<br />
ILRUiRlBw0UHaFqVVWoubzmFg/hF7miSgETyOimStA4OEmAbjhowZ0FFdfG5g2ms<br />
NOlJhOpw+RHOUSd5Cat0QvsPBilwVLx0FLkKT4HDrhFonTfDwiOgrq83+RfFkZxW<br />
axrJRaEeORqISQQYEQIACQUCSJpRrgIbDAAKCRBk5zRCWpGGYEVsAKDKXCW7i0Ra<br />
XrRhEGnPmMCGYr4ImQCeO3Y4NFwhB6JOLEHApj8kc/lK5Io=<br />
=U0bF<br />
&#8212;&#8211;END PGP PUBLIC KEY BLOCK&#8212;&#8211;</small></strong></p>
<p>欢迎发送加密函件 <img src='http://www.elnode.com/blog/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.elnode.com/blog/my-public-key.vn/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP Day 9</title>
		<link>http://www.elnode.com/blog/php-day-9.vn</link>
		<comments>http://www.elnode.com/blog/php-day-9.vn#comments</comments>
		<pubDate>Fri, 01 Aug 2008 02:59:31 +0000</pubDate>
		<dc:creator>Vayn</dc:creator>
		
		<category><![CDATA[比特志]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.elnode.com/blog/?p=189</guid>
		<description><![CDATA[LOAD DATA INFILE
LOAD DATA INFILE &#8220;filename.txt&#8221; INTO TABLE tablename;
字段包括在单引号内，用 tab 键进行间隔，每行由 \n 换行，特殊字符用 \ 转义。
存储引擎
MyISAM(MySQL 默认)
ISAM
MEMORY
MERGE
BDB
InnoDB
用 ALTER TABLE 语句转换，比如：
alter table tablename type=innodb;
事务安全性的四个需求（ACID 原则）：Atomicity, Consistency, Isolation, Durability。
MySQL 默认为 autocommit 模式。
mysql>set autocommit=0;    ＃关闭 autocommit
在自动提交打开前提下开始事务：
mysql>start transaction;
完成后手动提交：
mysql>commit;
回滚：
mysql>rollback;
InnoDB 支持强制使用 foreign key。
创建存储过程 create procedure
设置分隔符 delimiter &#8230;
调用过程 call procedurename(@t);
查看该变量 select @t;
创建函数 create function
局部变量 declare variablename
游标（cursor）
控制结构
声明句柄

]]></description>
			<content:encoded><![CDATA[<p>LOAD DATA INFILE<br />
LOAD DATA INFILE &#8220;filename.txt&#8221; INTO TABLE tablename;<br />
字段包括在单引号内，用 tab 键进行间隔，每行由 \n 换行，特殊字符用 \ 转义。</p>
<p>存储引擎<br />
MyISAM(MySQL 默认)<br />
ISAM<br />
MEMORY<br />
MERGE<br />
BDB<br />
InnoDB</p>
<p>用 ALTER TABLE 语句转换，比如：<br />
alter table tablename type=innodb;</p>
<p>事务安全性的四个需求（ACID 原则）：Atomicity, Consistency, Isolation, Durability。</p>
<p>MySQL 默认为 autocommit 模式。<br />
mysql>set autocommit=0;    ＃关闭 autocommit<br />
在自动提交打开前提下开始事务：<br />
mysql>start transaction;<br />
完成后手动提交：<br />
mysql>commit;<br />
回滚：<br />
mysql>rollback;</p>
<p>InnoDB 支持强制使用 foreign key。</p>
<p>创建存储过程 create procedure<br />
设置分隔符 delimiter &#8230;<br />
调用过程 call procedurename(@t);<br />
查看该变量 select @t;</p>
<p>创建函数 create function</p>
<p>局部变量 declare variablename</p>
<p>游标（cursor）</p>
<p>控制结构</p>
<p>声明句柄</p>
<p><img src="http://photo1.bababian.com/upload12/20080801/02C7192859EA56CE6CFFBA0678755A2E_500.jpg" title="control_structures_cursor" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.elnode.com/blog/php-day-9.vn/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP Day 8</title>
		<link>http://www.elnode.com/blog/php-day-8.vn</link>
		<comments>http://www.elnode.com/blog/php-day-8.vn#comments</comments>
		<pubDate>Thu, 31 Jul 2008 12:30:50 +0000</pubDate>
		<dc:creator>Vayn</dc:creator>
		
		<category><![CDATA[比特志]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.elnode.com/blog/?p=187</guid>
		<description><![CDATA[EXPLAIN
id
select_type
table
type
possible_keys
key
key_len
ref
rows
Extra
关联优化器
$myisamchk &#8211;analyze pathtomysqldatabase/table
$myisamchk &#8211;analyze pathtomysqldatabase/*.MYI
$myisamchk &#8211;analyze pathtomysqldatabase/*/*.MYI
mysql>analyze table tablename1, tablename2, &#8230;;
将列创建为索引
ALTER TABLE table ADD INDEX (column);
表的优化
mysql>OPTIMIZE TABLE tablename;
$myisamchk -r table
$myisamchk &#8211;sort-index &#8211;sort-records=1 pathtomysqldatabase/*/*.MYI
备份数据库
1. LOCK TABLES table lock_type [, table lock_type ...]
锁定类型 READE ／ WRITE，备份之前必须执行 FLUSH TABLES。
＊＊＊＊＊＊＊没明白＊＊＊＊＊＊＊
以文件方式备份
2. $mysqldump &#8211;opt &#8211;all-databases > backup-file.sql
再，停止 mysqld 进程，通过 &#8211;log-bin[=logfile] 重新启动进程。日志将记录备份后数据库发生的变化。
＊＊＊＊＊＊＊还是没明白＊＊＊＊＊＊＊
3. $mysqlhotcopy database /path/for/backup
再，停止 mysqld 进程，通过 &#8211;log-bin[=logfile] 重新启动进程。日志将记录备份后数据库发生的变化。
＊＊＊＊＊＊＊模模糊糊＊＊＊＊＊＊＊
恢复 MySQL 数据库
使用了方法 1，可将数据文件重新复制到安装 [...]]]></description>
			<content:encoded><![CDATA[<p>EXPLAIN</p>
<p>id<br />
select_type<br />
table<br />
type<br />
possible_keys<br />
key<br />
key_len<br />
ref<br />
rows<br />
Extra</p>
<p>关联优化器<br />
$myisamchk &#8211;analyze <em>pathtomysqldatabase/table</em><br />
$myisamchk &#8211;analyze <em>pathtomysqldatabase/*.MYI</em><br />
$myisamchk &#8211;analyze <em>pathtomysqldatabase/*/*.MYI</em><br />
mysql>analyze table tablename1, tablename2, &#8230;;</p>
<p>将列创建为索引<br />
ALTER TABLE table ADD INDEX (column);</p>
<p>表的优化<br />
mysql>OPTIMIZE TABLE tablename;<br />
$myisamchk -r table<br />
$myisamchk &#8211;sort-index &#8211;sort-records=1 <em>pathtomysqldatabase/*/*.MYI</em></p>
<p>备份数据库<br />
1. LOCK TABLES table lock_type [, table lock_type ...]<br />
锁定类型 READE ／ WRITE，备份之前必须执行 FLUSH TABLES。<br />
<del datetime="2008-07-31T12:50:59+00:00">＊＊＊＊＊＊＊没明白＊＊＊＊＊＊＊</del><br />
<strong>以文件方式备份</strong></p>
<p>2. $mysqldump &#8211;opt &#8211;all-databases > backup-file.sql<br />
再，停止 mysqld 进程，通过 &#8211;log-bin[=logfile] 重新启动进程。日志将记录备份后数据库发生的变化。<br />
<del datetime="2008-07-31T12:50:59+00:00">＊＊＊＊＊＊＊还是没明白＊＊＊＊＊＊＊</del></p>
<p>3. $mysqlhotcopy database /path/for/backup<br />
再，停止 mysqld 进程，通过 &#8211;log-bin[=logfile] 重新启动进程。日志将记录备份后数据库发生的变化。<br />
<del datetime="2008-07-31T12:50:59+00:00">＊＊＊＊＊＊＊模模糊糊＊＊＊＊＊＊＊</del></p>
<p>恢复 MySQL 数据库<br />
使用了方法 1，可将数据文件重新复制到安装 MySQL 的相同位置。<br />
使用了方法 2，首先在导出文件中运行查询（？？？）从而将数据库重新构建至导出时的状态，接着将数据库更新至保存在二进制日志文件中的状态 —— $mysqlbinlog hostname-bin.[0-9]* | mysql<br />
<del datetime="2008-07-31T12:50:59+00:00">＊＊＊＊＊＊＊没明白＊＊＊＊＊＊＊</del><br />
先 $mysql db_name < backup-file.sql 将转储文件读回到服务器，然后再更新。</p>
<p>设置主服务器和从服务器，略过</p>
<p>--eof--</p>
<p>p.s. <del datetime="2008-07-31T13:06:29+00:00">这一章基本没怎么看懂 <img src='http://www.elnode.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':sad:' class='wp-smiley' /> </del><br />
<del datetime="2008-07-31T12:45:40+00:00">p.s.2 貌似小站被墙了 <img src='http://www.elnode.com/blog/wp-includes/images/smilies/icon_eek.gif' alt=':shock:' class='wp-smiley' /> </del><br />
意外发现 WordPress 彩蛋，已经有人发现了 http://www.youtube.com/watch?v=gkF4WLSkz-U</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elnode.com/blog/php-day-8.vn/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP Day 7</title>
		<link>http://www.elnode.com/blog/php-day-7.vn</link>
		<comments>http://www.elnode.com/blog/php-day-7.vn#comments</comments>
		<pubDate>Thu, 31 Jul 2008 01:04:39 +0000</pubDate>
		<dc:creator>Vayn</dc:creator>
		
		<category><![CDATA[比特志]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.elnode.com/blog/?p=186</guid>
		<description><![CDATA[抽象类(abstract class): 不能被实例化.
抽象方法(abstract operation): 只提供了一个方法的声明, 但是不提供方法的具体实现.
包含抽象方法的任何类自身必须是抽象的.
使用 PEAR::DB 抽象类与数据库进行交互
安装: $sudo apt-get install php-pear
检查最新版本: $pear list-upgrades
升级 DB: $sudo pear upgrade DB
require_once(&#8217;DB.php&#8217;);    # set for using PEAR DB
$dsn = &#8220;mysqli://$user:$pass@$host/$db_name&#8221;;     # set up DSN
$db = $DB::connect($dsn);    # connect to database
与实例化 mysqli 类连接数据库相比其实都差不多.
Prepared 语句向 MySQL 发送需要执行的查询模板, 再单独发送数据.
$query = &#8220;insert [...]]]></description>
			<content:encoded><![CDATA[<p>抽象类(abstract class): 不能被实例化.<br />
抽象方法(abstract operation): 只提供了一个方法的声明, 但是不提供方法的具体实现.<br />
包含抽象方法的任何类自身必须是抽象的.</p>
<p>使用 PEAR::DB 抽象类与数据库进行交互</p>
<p>安装: $sudo apt-get install php-pear<br />
检查最新版本: $pear list-upgrades<br />
升级 DB: $sudo pear upgrade DB</p>
<p>require_once(&#8217;DB.php&#8217;);    # set for using PEAR DB<br />
$dsn = &#8220;mysqli://$user:$pass@$host/$db_name&#8221;;     # set up DSN<br />
$db = $DB::connect($dsn);    # connect to database</p>
<p>与实例化 mysqli 类连接数据库相比其实都差不多.</p>
<p>Prepared 语句向 MySQL 发送需要执行的查询模板, 再单独发送数据.<br />
$query = &#8220;insert into table values(?, ?, &#8230;)&#8221;;<br />
$stmt = $db->prepare($query);<br />
$stmt->bind_param(&#8221;sssd&#8221;, $value1, $value2, &#8230;);<br />
$stmt->execute();<br />
$stmt->affected_rows;</p>
<p>除了 bind_param()[insert?] 还有 bind_result() [select?] 函数.</p>
<p>注意! 一定要细心! 下面使用上面的变量, 拼写要正确, 不要想当然 <img src='http://www.elnode.com/blog/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.elnode.com/blog/php-day-7.vn/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP Day 6</title>
		<link>http://www.elnode.com/blog/php-day-6.vn</link>
		<comments>http://www.elnode.com/blog/php-day-6.vn#comments</comments>
		<pubDate>Mon, 28 Jul 2008 15:04:11 +0000</pubDate>
		<dc:creator>Vayn</dc:creator>
		
		<category><![CDATA[比特志]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.elnode.com/blog/?p=185</guid>
		<description><![CDATA[设计 Web 数据库
列(Column), 又称域或属性.
行(row), 也称为记录.
表中的标志列称为键(key), 一个键可以由不止一列组成. 主键(primary key)和外键(foreign key). 考虑要建模的实际对象, 避免保存冗余数据(避免 3 种更新不规则: 修改, 插入, 删除). 使用原子列值, 每行的每个属性只储存一个数据. 确认所选择的键是唯一的, 要有意义, 事先考虑需要询问数据库的问题. 避免空属性的设计.
Web 数据库架构, 暂不讨论.
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
创建 Web 数据库(仅学习 MySQL 数据库)
登录 MySQL Monitor: $mysql -h hostname -u username -p
-h 希望连接的主机, 默认为本机(localhost)
-u 登录时的用户名(可以不是 root)
-p 提示需要密码
创建 root:
$mysql -u root
mysql> SET PASSWORD FOR &#8221;@&#8217;localhost&#8217; = PASSWORD(&#8217;newpwd&#8217;);
mysql> SET PASSWORD FOR &#8221;@&#8217;host_name&#8217; = [...]]]></description>
			<content:encoded><![CDATA[<p>设计 Web 数据库</p>
<p>列(Column), 又称域或属性.</p>
<p>行(row), 也称为记录.</p>
<p>表中的标志列称为键(key), 一个键可以由不止一列组成. 主键(primary key)和外键(foreign key). 考虑要建模的实际对象, 避免保存冗余数据(避免 3 种更新不规则: 修改, 插入, 删除). 使用原子列值, 每行的每个属性只储存一个数据. 确认所选择的键是唯一的, 要有意义, 事先考虑需要询问数据库的问题. 避免空属性的设计.</p>
<p>Web 数据库架构, 暂不讨论.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>创建 Web 数据库(仅学习 MySQL 数据库)</p>
<p>登录 MySQL Monitor: $mysql -h hostname -u username -p</p>
<p>-h 希望连接的主机, 默认为本机(localhost)<br />
-u 登录时的用户名(可以不是 root)<br />
-p 提示需要密码</p>
<p>创建 root:<br />
$mysql -u root<br />
mysql> SET PASSWORD FOR &#8221;@&#8217;localhost&#8217; = PASSWORD(&#8217;newpwd&#8217;);<br />
mysql> SET PASSWORD FOR &#8221;@&#8217;host_name&#8217; = PASSWORD(&#8217;newpwd&#8217;);</p>
<p>删除匿名用户:<br />
mysql> DELETE FROM mysql.user WHERE Host=&#8217;localhost&#8217; AND User=&#8221;;</p>
<p>创建数据库: mysql> create database dbname;<br />
(注意, 不能忘记分号!)</p>
<p>创建用户(最少权限原则):<br />
GRANT privileges [columns]<br />
ON item<br />
TO user_name [IDENTIFIED BY 'password']<br />
[REQUIRE ssl_options]<br />
[WITH [GRANT OPTION | limit_options] ]</p>
<p>用户权限(PMWD3rd P164), 管理员权限(PMWD3rd P164), 特别权限(ALL, USAGE).</p>
<p>收回权限:<br />
REVOKE privileges [columns]<br />
ON item<br />
FROM user_name</p>
<p>使用指定数据库:<br />
mysql> use dbname;<br />
或者<br />
$mysql -D dbname -h hostname -u username -p</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>创建数据库表, 略过. <img src='http://www.elnode.com/blog/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /> </p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>插入数据(INSERT):<br />
INSERT LOW_PRIORITY DELAYED IGNORE [INTO] table [(column1, ...)] VALUES (value1, &#8230;);</p>
<p>注意: 会按顺序插入数据.<br />
向指定列插入数据:<br />
insert into tablename (column1, column2, &#8230;) values (&#8217;value1&#8242;, &#8216;value2&#8242;, &#8230;);<br />
或者<br />
insert into tablename set column1=&#8217;value1&#8242;, column2=&#8217;value2&#8242;, &#8230;;</p>
<p>将脚本插入数据库:<br />
$mysql -h host -u username -p < name_insert.sql</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>获取数据(SELECT):<br />
略过. <img src='http://www.elnode.com/blog/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /> </p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>更新数据库记录:<br />
UPDATE</p>
<p>创建后修改表:<br />
ALTER TABLE</p>
<p>删除:<br />
DELETE<br />
DROP</p>
<p>&#8211;eof&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elnode.com/blog/php-day-6.vn/feed</wfw:commentRss>
		</item>
		<item>
		<title>Dict in Ubuntu</title>
		<link>http://www.elnode.com/blog/dict-in-ubuntu.vn</link>
		<comments>http://www.elnode.com/blog/dict-in-ubuntu.vn#comments</comments>
		<pubDate>Mon, 28 Jul 2008 01:18:56 +0000</pubDate>
		<dc:creator>Vayn</dc:creator>
		
		<category><![CDATA[设技志]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.elnode.com/blog/?p=183</guid>
		<description><![CDATA[最近经常上英文网站，本来一直使用 Baidu 内嵌的 Dr.eye，后来发现不太方便于是安装了 dict.cn 的网页划词。但这两天 dict.cn 的服务器似乎有问题，老是查不到词汇（而且使用在线划词会把 firefox 搞死……）。于是乎上网查了一下，发现在 Linux 上可以用 terminal 查单词，除了没发音该有的都有。
实际上用的是 dict 开放协议。
$sudo apt-get install dict #客户端 （在 /etc/dictd/dict.conf 注释掉服务器，让其只使用本地读字典）
$sudo apt-get install dictd #服务器端
$sudo apt-get dict-xdict dict-stardic dict-gcide #三个字典文件
最后使用 $dict word 就可以查单词了，退出按 Q 键。
参考：http://blog.cathayan.org/item/1715
p.s. 今早遇到件特不愉快的事
]]></description>
			<content:encoded><![CDATA[<p>最近经常上英文网站，本来一直使用 Baidu 内嵌的 Dr.eye，后来发现不太方便于是安装了 dict.cn 的网页划词。但这两天 dict.cn 的服务器似乎有问题，老是查不到词汇（而且使用在线划词会把 firefox 搞死……）。于是乎上网查了一下，发现在 Linux 上可以用 terminal 查单词，除了没发音该有的都有。</p>
<p>实际上用的是 dict 开放协议。</p>
<pre>$sudo apt-get install dict #客户端 （在 /etc/dictd/dict.conf 注释掉服务器，让其只使用本地读字典）
$sudo apt-get install dictd #服务器端
$sudo apt-get dict-xdict dict-stardic dict-gcide #三个字典文件</pre>
<p>最后使用 $dict word 就可以查单词了，退出按 Q 键。</p>
<p>参考：<a href="http://blog.cathayan.org/item/1715">http://blog.cathayan.org/item/1715</a></p>
<p>p.s. <a href="http://www.vayn.cn/archives/211.html">今早遇到件特不愉快的事</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.elnode.com/blog/dict-in-ubuntu.vn/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP Day 5</title>
		<link>http://www.elnode.com/blog/php-day-5.vn</link>
		<comments>http://www.elnode.com/blog/php-day-5.vn#comments</comments>
		<pubDate>Sat, 26 Jul 2008 14:41:32 +0000</pubDate>
		<dc:creator>Vayn</dc:creator>
		
		<category><![CDATA[比特志]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[query]]></category>

		<guid isPermaLink="false">http://www.elnode.com/blog/?p=181</guid>
		<description><![CDATA[就着教程和 PHP Manual 磕磕绊绊把 PHP 的基础知识了解了一遍（只能算是了解）。
没想到在最后又被卡了一下——Object Iteration。我始终没明白 Iterator 的处理机制，也没理解 IteratorAggregate 和 Iterator 的区别。在 Google 上大概查了下，貌似都是 Manual 的拷贝，所以只能先把这块儿放下。
教程和 Manual 相比各有千秋吧，Manual 的实效性当然是最棒的，上面的例子也比教程的简单一些。不过 Manual 说到底还是有些干巴。另外语言也是一道不宽不窄的障碍，如果英语再好一些也许就可以放下教程，User Contributed Notes 更有人情味  
接下来还是打算跟着教程走（PHP Manual 上不会有 MySQL 手册吧  ），学习有关数据库的知识。
就先这么计划了，也不知道这个速度快不快，我是觉得自己有点心急，嗯欲速则不达，心态平和。
update：迭代器好像是把 foreach 的实现方法一步一步展示出来，只是不知道迭代器的流程怎么这么怪。
]]></description>
			<content:encoded><![CDATA[<p>就着教程和 PHP Manual 磕磕绊绊把 PHP 的基础知识了解了一遍（只能算是了解）。</p>
<p>没想到在最后又被卡了一下——Object Iteration。我始终没明白 Iterator 的处理机制，也没理解 IteratorAggregate 和 Iterator 的区别。在 Google 上大概查了下，貌似都是 Manual 的拷贝，所以只能先把这块儿放下。</p>
<p>教程和 Manual 相比各有千秋吧，Manual 的实效性当然是最棒的，上面的例子也比教程的简单一些。不过 Manual 说到底还是有些干巴。另外语言也是一道不宽不窄的障碍，如果英语再好一些也许就可以放下教程，User Contributed Notes 更有人情味 <img src='http://www.elnode.com/blog/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /> </p>
<p>接下来还是打算跟着教程走（PHP Manual 上不会有 MySQL 手册吧 <img src='http://www.elnode.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':grin:' class='wp-smiley' /> ），学习有关数据库的知识。</p>
<p>就先这么计划了，也不知道这个速度快不快，我是觉得自己有点心急，嗯欲速则不达，心态平和。</p>
<p>update：迭代器好像是把 foreach 的实现方法一步一步展示出来，只是不知道迭代器的流程怎么这么怪。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elnode.com/blog/php-day-5.vn/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP Day 4</title>
		<link>http://www.elnode.com/blog/php-day-4.vn</link>
		<comments>http://www.elnode.com/blog/php-day-4.vn#comments</comments>
		<pubDate>Fri, 25 Jul 2008 14:58:02 +0000</pubDate>
		<dc:creator>Vayn</dc:creator>
		
		<category><![CDATA[比特志]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[query]]></category>

		<guid isPermaLink="false">http://www.elnode.com/blog/?p=180</guid>
		<description><![CDATA[从下篇起不再使用首字下沉（first-letter 伪类应该不被 IE6 支持吧  ）。
$c = new myClass;
在以前的 PHP 版本中可以这样创建一个新类并将该类的实例复制给 $c？这样做的坏处是“假设对象是按引用传递对象的，尤其是在向函数传递对象时，这种行为可能会导致问题”，会导致什么问题？这句话貌似在逻辑上有问题，例子明明是按值传递对象的么。
select_object()->display();
“select_object()方法返回了一个具有display()方法的对象”——“属性可以与成员变量和特性这些词交替使用，操作也可以与方法交替使用”——我恨交替使用。
类的设计——看代码能明白，自己写又忘了 
]]></description>
			<content:encoded><![CDATA[<p class="fp">从下篇起不再使用首字下沉（first-letter 伪类应该不被 IE6 支持吧 <img src='http://www.elnode.com/blog/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /> ）。</p>
<p>$c = new myClass;</p>
<p>在以前的 PHP 版本中可以这样创建一个新类并将该类的实例复制给 $c？这样做的坏处是“<em>假设对象是按引用传递对象的，尤其是在向函数传递对象时，这种行为可能会导致问题</em>”，会导致什么问题？这句话貌似在逻辑上有问题，例子明明是按值传递对象的么。</p>
<p>select_object()->display();</p>
<p>“select_object()方法返回了一个具有display()方法的对象”——“<em>属性可以与成员变量和特性这些词交替使用，操作也可以与方法交替使用</em>”——我恨<strong>交替使用</strong>。</p>
<p>类的设计——看代码能明白，自己写又忘了 <img src='http://www.elnode.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':sad:' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.elnode.com/blog/php-day-4.vn/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
