<?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>阿债的山寨实验室 &#187; WEB开发</title>
	<atom:link href="http://blog.declab.com/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.declab.com</link>
	<description></description>
	<lastBuildDate>Thu, 27 May 2010 03:45:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>地铁上想到的一个关于日期的问题</title>
		<link>http://blog.declab.com/web/2009/144/</link>
		<comments>http://blog.declab.com/web/2009/144/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 07:26:35 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>

		<guid isPermaLink="false">http://blog.declab.com/?p=144</guid>
		<description><![CDATA[昨天在地铁上，突然想到当天是21号，星期一。打开手机看了一下，2001年1月1号正好是星期一。 于是就有一个有趣的问题：那么21世纪中(2001-2100)，每个月的1号，同时又是星期一的日子大约有多少天： A. 50 B. 150 C. 350 D. 550 当然，答案是后来设计的。当时我考虑这个问题，估计约为180左右。 这是今天用Python写的代码，运算的结果是172。 from datetime import datetime def month1st_is_monday(start=2001, end=2100): num = 0 for year in range(start, end+1): for mon in (range(1,13)): d = datetime(year, mon, 1) if (1==d.weekday()): num += 1 return num if '__main__' == __name__: print month1st_is_monday() No related posts. 以上关联文章由 Yet Another [...]


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>昨天在地铁上，突然想到当天是21号，星期一。打开手机看了一下，2001年1月1号正好是星期一。<br />
于是就有一个有趣的问题：那么21世纪中(2001-2100)，每个月的1号，同时又是星期一的日子大约有多少天：<br />
A. 50      B. 150      C. 350      D. 550<br />
当然，答案是后来设计的。当时我考虑这个问题，估计约为180左右。</p>
<p>这是今天用Python写的代码，运算的结果是172。<br />
<span id="more-144"></span></p>
<pre lang="python" line="1">
from datetime import datetime

def month1st_is_monday(start=2001, end=2100):
	num = 0
	for year in range(start, end+1):
		for mon in (range(1,13)):
			d = datetime(year, mon, 1)
			if (1==d.weekday()):
				num += 1
	return num

if '__main__' == __name__:
	print month1st_is_monday()
</pre>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2009/144/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>推荐学习的函数式语言Ocaml</title>
		<link>http://blog.declab.com/web/2009/%e6%8e%a8%e8%8d%90%e5%ad%a6%e4%b9%a0%e7%9a%84%e5%87%bd%e6%95%b0%e5%bc%8f%e8%af%ad%e8%a8%80ocaml/</link>
		<comments>http://blog.declab.com/web/2009/%e6%8e%a8%e8%8d%90%e5%ad%a6%e4%b9%a0%e7%9a%84%e5%87%bd%e6%95%b0%e5%bc%8f%e8%af%ad%e8%a8%80ocaml/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 02:04:44 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>

		<guid isPermaLink="false">http://blog.declab.com/?p=139</guid>
		<description><![CDATA[函数式的语言比较热门的有微软的F#，Erlang，Ocaml，我推荐Ocaml。 据说编译成二进制代码，有和C一样的运行高效率。这是其他两个不能比的。 这是一篇入门基础，针对面向过程(如Ｃ语言)和面向对象(如Java)的读者。 （节选自 http://www.ocaml-tutorial.org/%E5%9F%BA%E7%A1%80） 注释 OCaml的单行多行注释是用(*和*)括起，且可以使用嵌套(* &#8230; *)块。 调用函数 假设你已经写好了一个函数repeated，它的参数是一个字符串s和一个数n，返回值是把s重复n遍形成的新字符串。 在大多数源于C的语言中，调用这一函数会象下面这样: repeated (&#8220;hello&#8221;, 3) /* this is C code */ 下面是OCaml中的函数调用： repeated &#8220;hello&#8221; 3 (* this is OCaml code *) 注意：这里没有括号, 参数中间没有逗号。 我们来看另一个函数get_string_from_user，它返回从键盘读入的一个字符串。我们想把这个返回的字符串输入repeated.下面是C和OCaml的两种版本: /* C code: */ repeated (get_string_from_user (&#8220;Please type in a string.&#8221;), 3) (* OCaml code: *) repeated (get_string_from_user &#8220;Please type in [...]


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>函数式的语言比较热门的有微软的F#，Erlang，Ocaml，我推荐Ocaml。<br />
据说编译成二进制代码，有和C一样的运行高效率。这是其他两个不能比的。</p>
<p>这是一篇入门基础，针对面向过程(如Ｃ语言)和面向对象(如Java)的读者。<br />
（节选自 http://www.ocaml-tutorial.org/%E5%9F%BA%E7%A1%80）<br />
<span id="more-139"></span><br />
注释<br />
OCaml的单行多行注释是用(*和*)括起，且可以使用嵌套(* &#8230; *)块。</p>
<p>调用函数<br />
假设你已经写好了一个函数repeated，它的参数是一个字符串s和一个数n，返回值是把s重复n遍形成的新字符串。</p>
<p>在大多数源于C的语言中，调用这一函数会象下面这样:<br />
repeated (&#8220;hello&#8221;, 3)  /* this is C code */</p>
<p>下面是OCaml中的函数调用：<br />
repeated &#8220;hello&#8221; 3  (* this is OCaml code *)<br />
注意：这里没有括号, 参数中间没有逗号。</p>
<p>我们来看另一个函数get_string_from_user，它返回从键盘读入的一个字符串。我们想把这个返回的字符串输入repeated.下面是C和OCaml的两种版本:<br />
/* C code: */<br />
repeated (get_string_from_user (&#8220;Please type in a string.&#8221;), 3)</p>
<p>(* OCaml code: *)<br />
repeated (get_string_from_user &#8220;Please type in a string.&#8221;) 3<br />
请注意括号的不同和逗号的有无。一般情况下，规则是：“括号只括起整个函数调用，不要括起函数调用的参数。</p>
<p>函数定义<br />
OCaml的语法很简洁。下面是一个函数输入两个浮点数后计算它们的平均值：<br />
let average a b =<br />
  (a +. b) /. 2.0;;</p>
<p>把它输入OCaml的“toplevel”（在Unix中，在shell中输入命令ocaml）中后你会看到：<br />
# let average a b =<br />
  (a +. b) /. 2.0;;<br />
val average : float -> float -> float = <fun></p>
<p>可能大家会问：<br />
    * 为什么在OCaml中无需定义a和b的类型？OCaml怎么知道它们的类型？或者OCaml是否知道它们的类型呢?难道OCaml是完全动态类型的语言吗？<br />
    * C中2隐式转换成double类型, 可OCaml为什么不这样做？<br />
    * OCaml中return的方式是怎样?</p>
<p>我们来看答案：<br />
    * OCaml是强静态类型的语言。（也就是说没有如perl中的动态类型）。<br />
    * OCaml用类型推导（type inference）来找出类型，所以大家无需注明类型。如果你用上述OCaml的toplevel，那么OCaml会显示出它认为的函数类型。<br />
    * OCaml不做任何的隐式转换。如果你需要浮点数，你必须写2.0因为2是一个整数。<br />
    * 因为OCaml不允许操作符重载，它用不同的运算符来表示“两个整数相加”（用+）和“两个浮点数相加”（用+.）。注意后者有一个点号。其他算术运算符也是这样。<br />
    * OCaml返回函数的最后的表达式值，因此我们没有必要如C中一样写return。</p>
<p>基本类型<br />
OCaml中的基本类型是:</p>
<p>OCaml 类型      范围<br />
int            在32位处理器上是31位有符号整数(约+/- 10亿），<br />
               在64位处理器上是63位有符号整数。<br />
float          IEEE双精度浮点数，相当于C中的double。<br />
bool           布尔变量，值为true或false<br />
char           8位字符<br />
string         字符串<br />
unit           写作()</p>
<p>OCaml内部使用int中的一位来自动管理内存（垃圾收集）。因此基本 int类型是31位而非32位（如果你用64位平台，那就是63位）。但如果你的应用一定需要处理32位类型（比如你要写一些加密程序或者网络协议栈），OCaml提供nativeint类型。<br />
OCaml基本类型中没有提供无符号整数类型。但是你可以使用nativeint来达到同样效果。另外就我所知，OCaml没有单精度浮点数。<br />
OCaml提供char类型来表示字符。但可惜的是char类型不支持Unicode或者UTF-8。这是一个需要改进的很严重的缺点。但是当前我们可以使用 comprehensive Unicode libraries来处理。<br />
unit类型有点象C中的void类型。</p>
<p>隐式转换和显式转换的比较<br />
OCaml从不执行隐式转换。在OCaml中，1 + 2.5犯了类型错误。操作符+要求两个整数作为参数，而我们这里给出了一个整数一个浮点数，因此它会报错如下：</p>
<p># 1 + 2.5;;<br />
      ^^^<br />
This expression has type float but is here used with type int</p>
<p>如果我们确实需要让一个整数与一个浮点数相加该怎么办呢？（假设它们存储于变量(i和f)。在OCaml中我们需要显式转换：<br />
float_of_int i +. f;;<br />
因为从int转换到float是个特别常用的操作，float_of_int函数有个简短的别名。上面的例子可以简单地写作：<br />
float i +. f;;<br />
（注意和C不一样的是，类型和函数同名在OCaml中是完全合法的。）</p>
<p>普通函数和递归函数</p>
<p>和源于C的语言不同的是，OCaml中的函数一般不是递归的，除非你用let rec代替let来定义递归函数。下面是一个递归函数的例子：</p>
<p>let rec range a b =<br />
  if a > b then []<br />
  else a :: range (a+1) b<br />
  ;;<br />
注意这里range调用它自身。</p>
<p>多态函数</p>
<p>现在我们来看一个比较奇怪的问题。如果一个函数的参数可以是任何类型怎么办？下面就是一个奇怪的函数，它接受任何参数但总是返回3。<br />
let give_me_a_three x = 3;;</p>
<p>那么这样的函数的类型是什么呢？OCaml使用一个特殊的占位符来表示“任意类型”，这就是一个单引号后加一个字母。 上述函数的类型可以写作：<br />
give_me_a_three : &#8216;a -> int</p>
<p>这里&#8217;a表示任意类型。我们可以如give_me_a_three &#8220;foo&#8221;这样也可以象give_me_a_three 2.0这样来调用这个函数。它们都是OCaml合法的表达式。</p>
<p>类型推导<br />
简单地说：你不需要声明函数和变量的类型，因为OCaml自己会知道。<br />
而且OCaml会一直检查所有的类型匹配（甚至在不同的文件之间）。</p>
<p>我们再次来看average函数，我们在OCaml的toplevel中输入它，</p>
<p># let average a b =<br />
  (a +. b) /. 2.0;;<br />
val average : float -> float -> float = <fun></p>
<p>神奇吧？OCaml自己判断出了这个函数需要两个浮点数参数和返回一个浮点数。<br />
它是如何做到的呢？首先它看a和b在哪里使用，这里是在表达式 (a +. b)中。这里+.本身是一个需要两个浮点数参数的函数，所以通过简单推导，a和b两个都是浮点数。</p>
<p>类型推导不仅适用于短程序，也适用于大规模的程序。它是一个主要的节省时间的特性，因为它消除了一系列在其他语言中常见的造成segfault，NullPointerException和ClassCastException的错误。</p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2009/%e6%8e%a8%e8%8d%90%e5%ad%a6%e4%b9%a0%e7%9a%84%e5%87%bd%e6%95%b0%e5%bc%8f%e8%af%ad%e8%a8%80ocaml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unicode编码知识</title>
		<link>http://blog.declab.com/web/2009/unicode%e7%bc%96%e7%a0%81%e7%9f%a5%e8%af%86/</link>
		<comments>http://blog.declab.com/web/2009/unicode%e7%bc%96%e7%a0%81%e7%9f%a5%e8%af%86/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 03:17:27 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>

		<guid isPermaLink="false">http://blog.declab.com/?p=100</guid>
		<description><![CDATA[转自 http://www.cndw.com/tech/network/2006021511561.asp UCS有两种格式：UCS-2和UCS-4。顾名思义，UCS-2就是用两个字节编码，UCS-4就是用4个字节（实际上只用了31位，最高位必须为0）编码。下面让我们做一些简单的数学游戏： UCS-2有2^16=65536个码位，UCS-4有2^31=2147483648个码位。 UCS- 4根据最高位为0的最高字节分成2^7=128个group。每个group再根据次高字节分为256个plane。每个plane根据第3个字节分为 256行 (rows)，每行包含256个cells。当然同一行的cells只是最后一个字节不同，其余都相同。 group 0的plane 0被称作Basic Multilingual Plane, 即BMP。或者说UCS-4中，高两个字节为0的码位被称作BMP。 将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节，就得到了UCS-4的BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外。 4、UTF编码 UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下： UCS-2编码(16进制) UTF-8 字节流(二进制) 0000 &#8211; 007F 0xxxxxxx 0080 &#8211; 07FF 110xxxxx 10xxxxxx 0800 &#8211; FFFF 1110xxxx 10xxxxxx 10xxxxxx 例如“汉”字的Unicode编码是6C49。6C49在0800-FFFF之间，所以肯定要用3字节模板了：1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是：0110 110001 001001， 用这个比特流依次代替模板中的x，得到：11100110 10110001 10001001，即E6 B1 89。 读者可以用记事本测试一下我们的编码是否正确。 UTF-16 以16位为单元对UCS进行编码。对于小于0&#215;10000的UCS码，UTF-16编码就等于UCS码对应的16位无符号整数。对于不小于0&#215;10000 的UCS码，定义了一个算法。不过由于实际使用的UCS2，或者UCS4的BMP必然小于0&#215;10000，所以就目前而言，可以认为UTF-16和 UCS-2基本相同。但UCS-2只是一个编码方案，UTF-16却要用于实际的传输，所以就不得不考虑字节序的问题。 5、UTF的字节序和BOM UTF- 8以字节为编码单元，没有字节序的问题。UTF-16以两个字节为编码单元，在解释一个UTF-16文本前，首先要弄清楚每个编码单元的字节序。例如收到一个“奎”的Unicode编码是594E，“乙”的Unicode编码是4E59。如果我们收到UTF-16字节流“594E”，那么这是“奎”还是 “乙”？ Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是“Bill [...]


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>转自 http://www.cndw.com/tech/network/2006021511561.asp<br />
<span id="more-100"></span><br />
UCS有两种格式：UCS-2和UCS-4。顾名思义，UCS-2就是用两个字节编码，UCS-4就是用4个字节（实际上只用了31位，最高位必须为0）编码。下面让我们做一些简单的数学游戏：</p>
<p>UCS-2有2^16=65536个码位，UCS-4有2^31=2147483648个码位。</p>
<p>UCS- 4根据最高位为0的最高字节分成2^7=128个group。每个group再根据次高字节分为256个plane。每个plane根据第3个字节分为 256行 (rows)，每行包含256个cells。当然同一行的cells只是最后一个字节不同，其余都相同。</p>
<p>group 0的plane 0被称作Basic Multilingual Plane, 即BMP。或者说UCS-4中，高两个字节为0的码位被称作BMP。</p>
<p>将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节，就得到了UCS-4的BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外。</p>
<p>4、UTF编码</p>
<p>UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下：</p>
<p>UCS-2编码(16进制) UTF-8 字节流(二进制)<br />
0000 &#8211; 007F 0xxxxxxx<br />
0080 &#8211; 07FF 110xxxxx 10xxxxxx<br />
0800 &#8211; FFFF 1110xxxx 10xxxxxx 10xxxxxx</p>
<p>例如“汉”字的Unicode编码是6C49。6C49在0800-FFFF之间，所以肯定要用3字节模板了：1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是：0110 110001 001001， 用这个比特流依次代替模板中的x，得到：11100110 10110001 10001001，即E6 B1 89。</p>
<p>读者可以用记事本测试一下我们的编码是否正确。</p>
<p>UTF-16 以16位为单元对UCS进行编码。对于小于0&#215;10000的UCS码，UTF-16编码就等于UCS码对应的16位无符号整数。对于不小于0&#215;10000 的UCS码，定义了一个算法。不过由于实际使用的UCS2，或者UCS4的BMP必然小于0&#215;10000，所以就目前而言，可以认为UTF-16和 UCS-2基本相同。但UCS-2只是一个编码方案，UTF-16却要用于实际的传输，所以就不得不考虑字节序的问题。</p>
<p>5、UTF的字节序和BOM<br />
UTF- 8以字节为编码单元，没有字节序的问题。UTF-16以两个字节为编码单元，在解释一个UTF-16文本前，首先要弄清楚每个编码单元的字节序。例如收到一个“奎”的Unicode编码是594E，“乙”的Unicode编码是4E59。如果我们收到UTF-16字节流“594E”，那么这是“奎”还是 “乙”？</p>
<p>Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是“Bill Of Material”的BOM表，而是Byte Order Mark。BOM是一个有点小聪明的想法：</p>
<p>在 UCS编码中有一个叫做&#8221;ZERO WIDTH NO-BREAK SPACE&#8221;的字符，它的编码是FEFF。而FFFE在UCS中是不存在的字符，所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前，先传输字符&#8221;ZERO WIDTH NO-BREAK SPACE&#8221;。</p>
<p>这样如果接收者收到FEFF，就表明这个字节流是Big-Endian的；如果收到FFFE，就表明这个字节流是Little-Endian的。因此字符&#8221;ZERO WIDTH NO-BREAK SPACE&#8221;又被称作BOM。</p>
<p>UTF- 8不需要BOM来表明字节顺序，但可以用BOM来表明编码方式。字符&#8221;ZERO WIDTH NO-BREAK SPACE&#8221;的UTF-8编码是EF BB BF（读者可以用我们前面介绍的编码方法验证一下）。所以如果接收者收到以EF BB BF开头的字节流，就知道这是UTF-8编码了。</p>
<p>Windows就是使用BOM来标记文本文件的编码方式的。</p>
<p>6、进一步的参考资料<br />
本文主要参考的资料是 &#8220;Short overview of ISO-IEC 10646 and Unicode&#8221; (http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html)。</p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2009/unicode%e7%bc%96%e7%a0%81%e7%9f%a5%e8%af%86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupal学习(1)——菜单</title>
		<link>http://blog.declab.com/web/2009/drupal%e5%ad%a6%e4%b9%a01%e2%80%94%e2%80%94%e8%8f%9c%e5%8d%95/</link>
		<comments>http://blog.declab.com/web/2009/drupal%e5%ad%a6%e4%b9%a01%e2%80%94%e2%80%94%e8%8f%9c%e5%8d%95/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 04:06:41 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[callback]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[menu]]></category>

		<guid isPermaLink="false">http://blog.declab.com/?p=91</guid>
		<description><![CDATA[我们打算在菜单中添加一项mymenu，我们使用的是Drupal 5.x版本。 首先，在sites/all/modules/下新建一个目录mymenu，然后在其中建两个文件mymenu.info和mymenu.module。 mymenu.info的内容比较简单，只是模块的信息，给后台管理员看的。例如： ; $Id $ name = "MyMenu Module" description = "Adds a menu to the navigation block." version = "0.01" 重点在mymenu.module文件，入口函数是mymenus_menu，相当于参数配置。 function mymenu_menu($may_cache) { // Create an array to hold the menu items we'll define. $items = array(); if ($may_cache) { // Define a static menu item. $items[] = array( //... ); [...]


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>我们打算在菜单中添加一项mymenu，我们使用的是Drupal 5.x版本。</p>
<p>首先，在sites/all/modules/下新建一个目录mymenu，然后在其中建两个文件mymenu.info和mymenu.module。<br />
<span id="more-91"></span><br />
mymenu.info的内容比较简单，只是模块的信息，给后台管理员看的。例如：<br />
<code>; $Id $<br />
name = "MyMenu Module"<br />
description = "Adds a menu to the navigation block."<br />
version = "0.01"</code></p>
<p>重点在mymenu.module文件，入口函数是mymenus_menu，相当于参数配置。</p>
<pre lang="php" line="1">
function mymenu_menu($may_cache) {
	// Create an array to hold the menu items we'll define.
	$items = array();
	if ($may_cache) {
		// Define a static menu item.
		$items[] = array(
                     //...
		);
		$items[] = array(
                     //...
		);
	}
	return $items;
}
</pre>
<p>其中菜单项$items[]的常用参数有<br />
title  (string)  标题<br />
path  (string)  URL路径，同时决定菜单的级别<br />
callback  (string)  点开URL页面时调用的函数名<br />
callback params (array)  调用函数使用的参数，可选<br />
access  (bool)  权限 一般使用 user_access(&#8216;some access tag&#8217;)的返回结果<br />
你可能需要在此文件写一个函数，类似下面，告诉权限系统用哪些tag来作为本菜单的权限标记。</p>
<pre lang="php" line="1">
function mymenu_perm() {
	return array('some access tag');
}
</pre>
<p>type  (int)  菜单的类型，有以下可选宏<br />
MENU_CUSTOM_ITEM  默认值，普通菜单<br />
MENU_CALLBACK  不显示在菜单中，但可以调用其URL<br />
MENU_LOCAL_TASK  一个页面Tab，不能是顶级菜单<br />
MENU_DEFAULT_LOCAL_TASK  默认页面Tab，不能是顶级菜单<br />
weight  (int)  同级菜单排序值</p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2009/drupal%e5%ad%a6%e4%b9%a01%e2%80%94%e2%80%94%e8%8f%9c%e5%8d%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>最近在JS和Jquery遇到的一些问题的解决方法</title>
		<link>http://blog.declab.com/web/2009/%e6%9c%80%e8%bf%91%e5%9c%a8js%e5%92%8cjquery%e9%81%87%e5%88%b0%e7%9a%84%e4%b8%80%e4%ba%9b%e9%97%ae%e9%a2%98%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/</link>
		<comments>http://blog.declab.com/web/2009/%e6%9c%80%e8%bf%91%e5%9c%a8js%e5%92%8cjquery%e9%81%87%e5%88%b0%e7%9a%84%e4%b8%80%e4%ba%9b%e9%97%ae%e9%a2%98%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 01:19:29 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2009/1/%e6%9c%80%e8%bf%91%e5%9c%a8js%e5%92%8cjquery%e9%81%87%e5%88%b0%e7%9a%84%e4%b8%80%e4%ba%9b%e9%97%ae%e9%a2%98%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/</guid>
		<description><![CDATA[1. JS中数值字符串相加
2. JS中浮点数的多余的精度
3. Jquery中什么时候用$(this)，什么时候不存在$(this)？


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p><span id="more-50"></span><br />
1. JS中数值字符串相加<br />
  var a=&#8217;2.1&#8242;; var b=&#8217;13&#8242;;<br />
  var c=a+b; 则c的值为 2.113，因为+在字符串间是连接符。<br />
  如果要求a与b的和，则先要把a、b用parseFloat()或parseInt()转化为浮点数、整数<br />
  黑客方法 [color=#DC143C]var c=a-0+b;[/color] 因为[color=#DC143C] &#8211; [/color]不管是在数值还是字符串间都是减法运算，对字符串JS会自动把它转化为数值。</p>
<p>2. JS中浮点数的多余的精度<br />
  var a= 2.6; var b=2.3;<br />
  var c = a-b;<br />
  那么c的值是多少？0.3？不对，它的值是 0.3000005 0.29999997之类，总之就是不等于0.3。汗！<br />
  产生这个情况的原因是浮点数在JS中的存储方式，不仅JS，严格符合ECAMScript规范的脚本语言都有相同的问题。<br />
  解决方法 [color=#DC143C]var c = Math.round((a-b)*10)/10;[/color] 产生一位小数的精度。<br />
  为什么不直接用 (a-b)*10/10？因为当 c=0.29999997时，计算结果变成了我们不想看到的0.2。</p>
<p>3. Jquery中什么时候用$(this)，什么时候不存在$(this)？<br />
  看看这个例子，点击切换图片。<br />
  [color=#8B0000]$(function(){<br />
    $(img).bind(&#8216;click&#8217;, function(e){<br />
       $.ajax({<br />
           &#8216;url&#8217;:'http://www.declab.com/?id=&#8217;+$(this).val(),<br />
           &#8216;success&#8217;:function(html){ $(img).attr(&#8216;src&#8217;,'http://www.declab.com/images&#8217;+html) },<br />
           &#8216;cache&#8217;:false<br />
       });<br />
    });<br />
  });[/color]<br />
  在这段代码中， &#8216;url&#8217;中的 $(this) 和 &#8216;success&#8217;函数中的$(img) 都是指代码开头被点击的$(img),<br />
  但你不可以把第二个$(img)也换成$(this)，它属于函数function(html){}的局部变量，已经出了function(e){}的作用域。</p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2009/%e6%9c%80%e8%bf%91%e5%9c%a8js%e5%92%8cjquery%e9%81%87%e5%88%b0%e7%9a%84%e4%b8%80%e4%ba%9b%e9%97%ae%e9%a2%98%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii 框架的中文语言文件</title>
		<link>http://blog.declab.com/web/2009/yii-%e6%a1%86%e6%9e%b6%e7%9a%84%e4%b8%ad%e6%96%87%e8%af%ad%e8%a8%80%e6%96%87%e4%bb%b6/</link>
		<comments>http://blog.declab.com/web/2009/yii-%e6%a1%86%e6%9e%b6%e7%9a%84%e4%b8%ad%e6%96%87%e8%af%ad%e8%a8%80%e6%96%87%e4%bb%b6/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 23:01:31 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[zh_cn]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2009/1/yii-%e6%a1%86%e6%9e%b6%e7%9a%84%e4%b8%ad%e6%96%87%e8%af%ad%e8%a8%80%e6%96%87%e4%bb%b6/</guid>
		<description><![CDATA[我用繁体中文的语言文件转化了一下，然后替换了大部分台湾计算机术语为大陆的术语。另外将德语多的前六条补充进来。提供朋友们下载和修正。请替换framework/messages/zh_cn下面对应的yii.php文件。 yii_messages_zh_cn.tar.gz 另外在你的项目配置文件中，通过下面的方法启用: return array( 'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..', [color=#FF4500]'language' => 'zh_cn',[/color] 'name'=>'My Yii App', 'layout'=>'main', 'defaultController'=>'site', 注意第三行是新加入的默认语言设置。 No related posts. 以上关联文章由 Yet Another Related Posts Plugin 提供支持。


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>我用繁体中文的语言文件转化了一下，然后替换了大部分台湾计算机术语为大陆的术语。另外将德语多的前六条补充进来。提供朋友们下载和修正。请替换framework/messages/zh_cn下面对应的yii.php文件。<br />
<a href='http://blog.declab.com/wp-content/uploads/2009/03/yii_messages_zh_cn.tar.gz'>yii_messages_zh_cn.tar.gz</a><br />
<span id="more-49"></span><br />
另外在你的项目配置文件中，通过下面的方法启用:</p>
<pre lang="bash" line="1">
return array(
    'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
    [color=#FF4500]'language' => 'zh_cn',[/color]
    'name'=>'My Yii App',
    'layout'=>'main',
    'defaultController'=>'site',
</pre>
<p>注意第三行是新加入的默认语言设置。</p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2009/yii-%e6%a1%86%e6%9e%b6%e7%9a%84%e4%b8%ad%e6%96%87%e8%af%ad%e8%a8%80%e6%96%87%e4%bb%b6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenLaszlo，用XML和JS生成FLASH</title>
		<link>http://blog.declab.com/web/2008/openlaszlo%ef%bc%8c%e7%94%a8xml%e5%92%8cjs%e7%94%9f%e6%88%90flash/</link>
		<comments>http://blog.declab.com/web/2008/openlaszlo%ef%bc%8c%e7%94%a8xml%e5%92%8cjs%e7%94%9f%e6%88%90flash/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 10:09:58 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[openlaszlo]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/openlaszlo%ef%bc%8c%e7%94%a8xml%e5%92%8cjs%e7%94%9f%e6%88%90flash/</guid>
		<description><![CDATA[这是我看到的最令人振奋的技术了，我一直想学Flash，可是总是没有机会，但现在连基本的东西都搞不定，更别说交互的功能了。 如今，有了OpenLaszlo，用简单的XML和JS，就可以生成swf文件，并且可以和你的代码交换数据。 本身OpenLaszlo是用Java写成的，如果用你用PHP开发，就得同时安装JSP和PHP，再装mod_jk。我觉得这样超麻烦，还好它提供SOLO方式，先把OpenLaszlo代码编译成swf，不过这样就不能用远程调用RPC的之类的，还好我只需要PHP为swf提供XML格式数据。 SOLO方式编译OpenLaszlo为swf http://fallenlord.blogbus.com/logs/16125648.html [quote]2. 用浏览器输入带参数地址编译 http:///?lzr=swf8&#038;lzproxied=false[/quote] No related posts. 以上关联文章由 Yet Another Related Posts Plugin 提供支持。


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>这是我看到的最令人振奋的技术了，我一直想学Flash，可是总是没有机会，但现在连基本的东西都搞不定，更别说交互的功能了。<br />
如今，有了OpenLaszlo，用简单的XML和JS，就可以生成swf文件，并且可以和你的代码交换数据。<br />
<span id="more-47"></span><br />
本身OpenLaszlo是用Java写成的，如果用你用PHP开发，就得同时安装JSP和PHP，再装mod_jk。我觉得这样超麻烦，还好它提供SOLO方式，先把OpenLaszlo代码编译成swf，不过这样就不能用远程调用RPC的之类的，还好我只需要PHP为swf提供XML格式数据。</p>
<p>SOLO方式编译OpenLaszlo为swf</p>
<p>http://fallenlord.blogbus.com/logs/16125648.html</p>
<p>[quote]2. 用浏览器输入带参数地址编译</p>
<p>http://<openLaszlo服务器路径>/<你的lzx文件>?lzr=swf8&#038;lzproxied=false[/quote]</p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2008/openlaszlo%ef%bc%8c%e7%94%a8xml%e5%92%8cjs%e7%94%9f%e6%88%90flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django发布1.0版，特贡献CHM手册一本</title>
		<link>http://blog.declab.com/web/2008/django%e5%8f%91%e5%b8%8310%e7%89%88%ef%bc%8c%e7%89%b9%e8%b4%a1%e7%8c%aechm%e6%89%8b%e5%86%8c%e4%b8%80%e6%9c%ac/</link>
		<comments>http://blog.declab.com/web/2008/django%e5%8f%91%e5%b8%8310%e7%89%88%ef%bc%8c%e7%89%b9%e8%b4%a1%e7%8c%aechm%e6%89%8b%e5%86%8c%e4%b8%80%e6%9c%ac/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 09:14:21 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[文档]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/django%e5%8f%91%e5%b8%8310%e7%89%88%ef%bc%8c%e7%89%b9%e8%b4%a1%e7%8c%aechm%e6%89%8b%e5%86%8c%e4%b8%80%e6%9c%ac/</guid>
		<description><![CDATA[昨天发现Django居然在几天前发布了1.0正式版，从0.95到现在，我们都等了两年多了。[emot]fear[/emot] 我于是去Django网站上，把它的文档下载下来了，并编译成CHM格式。 django_chm.tar.gz No related posts. 以上关联文章由 Yet Another Related Posts Plugin 提供支持。


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>昨天发现Django居然在几天前发布了1.0正式版，从0.95到现在，我们都等了两年多了。[emot]fear[/emot]</p>
<p>我于是去Django网站上，把它的文档下载下来了，并编译成CHM格式。<br />
<span id="more-46"></span><br />
<a href='http://blog.declab.com/wp-content/uploads/2008/09/django_chm.tar.gz'>django_chm.tar.gz</a></p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2008/django%e5%8f%91%e5%b8%8310%e7%89%88%ef%bc%8c%e7%89%b9%e8%b4%a1%e7%8c%aechm%e6%89%8b%e5%86%8c%e4%b8%80%e6%9c%ac/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Gae环境下第一个uliweb小程序开发</title>
		<link>http://blog.declab.com/web/2008/gae%e7%8e%af%e5%a2%83%e4%b8%8b%e7%ac%ac%e4%b8%80%e4%b8%aauliweb%e5%b0%8f%e7%a8%8b%e5%ba%8f%e5%bc%80%e5%8f%91/</link>
		<comments>http://blog.declab.com/web/2008/gae%e7%8e%af%e5%a2%83%e4%b8%8b%e7%ac%ac%e4%b8%80%e4%b8%aauliweb%e5%b0%8f%e7%a8%8b%e5%ba%8f%e5%bc%80%e5%8f%91/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 00:15:18 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[uliweb]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/gae%e7%8e%af%e5%a2%83%e4%b8%8b%e7%ac%ac%e4%b8%80%e4%b8%aauliweb%e5%b0%8f%e7%a8%8b%e5%ba%8f%e5%bc%80%e5%8f%91/</guid>
		<description><![CDATA[Google App Engine申请到了，我的一个GAE网站是[url=http://chirk.appspot.com]http://chirk.appspot.com[/url]。 但它没有默认的首页，于是打算放个“网站正在建设&#8230;”的说明页面上去。比较考究地选用limodou的uliweb框架。 下面就一步步来，我在Windows下开发的。首先你得装Python，我的Windows XP装有Python2.5.2。接着装GAE的SDK，假设装在某分区 /Gae下。 下载uliweb，解压到/Gae/下，将外面这个uliweb目录更名为您的GAE网站名，如我的是chirk，下同。进入刚更名的chirk目录，将app.yaml的第一行 application: uliweb 改为 [color=#2E8B57]application: chirk[/color] 在handlers:下面增加一个URL路由： [color=#2E8B57]- url: /static static_dir: apps/consume/static[/color] 在DOS下进入chirk目录，运行manage.py makeapp test，建立一个名叫test的应用。uliweb帮你生成了基本的代码，放在了chirk/apps/test下。将chirk/apps/settings.py中唯一的一行 INSTALLED_APPS = ['Example'] 改为 [color=#2E8B57]INSTALLED_APPS = ['test'][/color] 在chirk/apps/test/下建立一个目录static，再在static下建三个目录image css js，以后将静态文件分类放在这里。在chirk/apps/test/templates下建一个模板文件 index.html，内容如下： {{=title}} {{=regard}} 最后是重头戏，chirk/apps/test/views.py中的代码： #!/bin/python #-*- coding=utf-8 -*- from frameworks.SimpleFrame import expose @expose('/') def index(): title = "测试页面" regard = "欢迎来到我的网站，网站正在筹建中..." return locals() [...]


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>Google App Engine申请到了，我的一个GAE网站是[url=http://chirk.appspot.com]http://chirk.appspot.com[/url]。 但它没有默认的首页，于是打算放个“网站正在建设&#8230;”的说明页面上去。比较考究地选用limodou的uliweb框架。<br />
<span id="more-44"></span><br />
下面就一步步来，我在Windows下开发的。首先你得装Python，我的Windows XP装有Python2.5.2。接着装GAE的SDK，假设装在某分区 /Gae下。<br />
下载uliweb，解压到/Gae/下，将外面这个uliweb目录更名为您的GAE网站名，如我的是chirk，下同。进入刚更名的chirk目录，将app.yaml的第一行 application: uliweb 改为<br />
[color=#2E8B57]application: chirk[/color]<br />
在handlers:下面增加一个URL路由：<br />
[color=#2E8B57]- url: /static<br />
  static_dir: apps/consume/static[/color]<br />
在DOS下进入chirk目录，运行manage.py makeapp test，建立一个名叫test的应用。uliweb帮你生成了基本的代码，放在了chirk/apps/test下。将chirk/apps/settings.py中唯一的一行 INSTALLED_APPS = ['Example'] 改为<br />
[color=#2E8B57]INSTALLED_APPS = ['test'][/color]<br />
在chirk/apps/test/下建立一个目录static，再在static下建三个目录image css  js，以后将静态文件分类放在这里。在chirk/apps/test/templates下建一个模板文件 index.html，内容如下：</p>
<pre lang="bash" line="1"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="UTF-8">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" rev="stylesheet" href="static/css/styles.css" type="text/css" media="all" />

<script type="text/javascript" src="static/js/jquery.js"></script>
</head>
<body>
<h1>{{=title}}</h1>
<div>{{=regard}}</div>

</body>
</html>
</pre>
<p>最后是重头戏，chirk/apps/test/views.py中的代码：</p>
<pre lang="bash" line="1">#!/bin/python
#-*- coding=utf-8 -*-
from frameworks.SimpleFrame import expose

@expose('/')
def index():
    title = "测试页面"
    regard = "欢迎来到我的网站，网站正在筹建中..."
    return locals()
</pre>
<p>最后是运行和上传，如果用uliweb的服务器，在DOS下进入/Gae/chirk/，运行mangae.py runserver，请在浏览器中打开http://localhost:8000，默认端口8000。如果用Gae的服务器，在DOS下进入/Gae/，运行dev_appserver.py chirk，默认的端口却是8080。上传到你的Gae空间：appcfg.py update chirk，然后按提示输入Gmail邮箱和密码即可。</p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2008/gae%e7%8e%af%e5%a2%83%e4%b8%8b%e7%ac%ac%e4%b8%80%e4%b8%aauliweb%e5%b0%8f%e7%a8%8b%e5%ba%8f%e5%bc%80%e5%8f%91/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>替换SQL文件中的表结构</title>
		<link>http://blog.declab.com/web/2008/%e6%9b%bf%e6%8d%a2sql%e6%96%87%e4%bb%b6%e4%b8%ad%e7%9a%84%e8%a1%a8%e7%bb%93%e6%9e%84/</link>
		<comments>http://blog.declab.com/web/2008/%e6%9b%bf%e6%8d%a2sql%e6%96%87%e4%bb%b6%e4%b8%ad%e7%9a%84%e8%a1%a8%e7%bb%93%e6%9e%84/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 18:54:11 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/%e6%9b%bf%e6%8d%a2sql%e6%96%87%e4%bb%b6%e4%b8%ad%e7%9a%84%e8%a1%a8%e7%bb%93%e6%9e%84/</guid>
		<description><![CDATA[#!/bin/gawk -f # 替换SQL文件中的表结构 # RUN: # gawk -f sql.awk some_database.sql BEGIN{ RS = "--" FS = "\n" outf = "some_database.add.sql" print("\n") > outf } length($0)>0 &#124;&#124; match($0, "foo") &#124;&#124; match($0, "CREATE TABLE"){ print( rep_str($0) "\n") >> outf } function rep_str(row) { gsub("fooes", "bars", row); gsub("Fooes", "Bars", row); gsub("foo", "bar", row); gsub("Foo", "Bar", row); gsub("FOO", [...]


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<pre lang="bash" line="1">#!/bin/gawk -f
# 替换SQL文件中的表结构
# RUN:
# gawk -f sql.awk some_database.sql

BEGIN{
  RS = "--"
  FS = "\n"
  outf = "some_database.add.sql"
  print("\n") > outf
}
length($0)>0 || match($0, "foo") || match($0, "CREATE TABLE"){
    print( rep_str($0) "\n") >> outf
}

function rep_str(row) {
  gsub("fooes", "bars", row);
  gsub("Fooes", "Bars", row);
  gsub("foo", "bar", row);
  gsub("Foo", "Bar", row);
  gsub("FOO", "BAR", row);
  return row
}</pre>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2008/%e6%9b%bf%e6%8d%a2sql%e6%96%87%e4%bb%b6%e4%b8%ad%e7%9a%84%e8%a1%a8%e7%bb%93%e6%9e%84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
