<?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>(R &#34;think-of-lisper&#34; &#039;Albertlee)</title>
	<atom:link href="http://www.feime.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.feime.net</link>
	<description>R, Android, MIUI, Common Lisp, Data Mining, Arduino</description>
	<lastBuildDate>Mon, 26 Mar 2012 14:22:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>cl-gearman 开坑</title>
		<link>http://www.feime.net/2012/cl-gearman-%e5%bc%80%e5%9d%91/</link>
		<comments>http://www.feime.net/2012/cl-gearman-%e5%bc%80%e5%9d%91/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 14:22:28 +0000</pubDate>
		<dc:creator>Albert Lee</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.feime.net/?p=210</guid>
		<description><![CDATA[坑坐标： http://albertlee.github.com/cl-gearman/ 刚起了项目架子，还没有实质内容。今天翻译gearman的协议文档，完成了4成了： https://github.com/albertlee/cl-gearman/blob/master/doc/protocol_cn.txt]]></description>
			<content:encoded><![CDATA[<p>坑坐标： http://albertlee.github.com/cl-gearman/<br />
刚起了项目架子，还没有实质内容。今天翻译gearman的协议文档，完成了4成了： https://github.com/albertlee/cl-gearman/blob/master/doc/protocol_cn.txt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.feime.net/2012/cl-gearman-%e5%bc%80%e5%9d%91/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java与Clojure之间的互相调用</title>
		<link>http://www.feime.net/2012/java%e4%b8%8eclojure%e4%b9%8b%e9%97%b4%e7%9a%84%e4%ba%92%e7%9b%b8%e8%b0%83%e7%94%a8/</link>
		<comments>http://www.feime.net/2012/java%e4%b8%8eclojure%e4%b9%8b%e9%97%b4%e7%9a%84%e4%ba%92%e7%9b%b8%e8%b0%83%e7%94%a8/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 09:49:36 +0000</pubDate>
		<dc:creator>Albert Lee</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.feime.net/?p=205</guid>
		<description><![CDATA[目标：在Java中调用Clojure 程序，在clojure程序中再反过来Java的方法。 Clojure嵌入Java是相当简单的： 1. 把 clojure.jar 加入到Java工程的系统调用路径中。 2. 在java中使用 clojure.lang [RT, Compiler, Var] 调用clojure]]></description>
			<content:encoded><![CDATA[<p>目标：在Java中调用Clojure 程序，在clojure程序中再反过来Java的方法。</p>
<p>Clojure嵌入Java是相当简单的：</p>
<p>1. 把 clojure.jar 加入到Java工程的系统调用路径中。</p>
<p>2. 在java中使用 clojure.lang [RT, Compiler, Var] 调用clojure</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.feime.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://www.feime.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.feime.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.feime.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="java" style="font-family:monospace;"><span class="kw1">import</span> <span class="co2">clojure.lang.RT</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">clojure.lang.Compiler</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">import</span> <span class="co2">clojure.lang.Var</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">import</span> <span class="co2">java.io.IOException</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.io.StringReader</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">public</span> <span class="kw1">class</span> SampleClojure<span class="br0">&#123;</span>
	<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">void</span> main<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a><span class="br0">&#91;</span><span class="br0">&#93;</span> args<span class="br0">&#41;</span><span class="br0">&#123;</span>
		<span class="co1">// TODO Auto-generated method stub</span>
		<span class="co1">// Test embed clojure</span>
		<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;Sample: Clojure&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
		<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> code <span class="sy0">=</span> <span class="st0">&quot;(ns user) (defn foo [a b] (str a <span class="es0">\&quot;</span> -- <span class="es0">\&quot;</span> b))&quot;</span><span class="sy0">;</span>
		<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acompiler+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Compiler</span></a>.<span class="me1">load</span><span class="br0">&#40;</span><span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astringreader+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">StringReader</span></a><span class="br0">&#40;</span>code<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="co1">//System.out.println(System.getProperties());</span>
		<span class="kw1">try</span> <span class="br0">&#123;</span>
			<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acompiler+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Compiler</span></a>.<span class="me1">loadFile</span><span class="br0">&#40;</span><span class="st0">&quot;src/hello.clj&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
			Var foo <span class="sy0">=</span> RT.<span class="me1">var</span><span class="br0">&#40;</span><span class="st0">&quot;user&quot;</span>, <span class="st0">&quot;foo&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			Var koo <span class="sy0">=</span> RT.<span class="me1">var</span><span class="br0">&#40;</span><span class="st0">&quot;user&quot;</span>, <span class="st0">&quot;koo&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			Var change <span class="sy0">=</span> RT.<span class="me1">var</span><span class="br0">&#40;</span><span class="st0">&quot;user&quot;</span>, <span class="st0">&quot;change&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			Var qoo <span class="sy0">=</span> RT.<span class="me1">var</span><span class="br0">&#40;</span><span class="st0">&quot;user&quot;</span>, <span class="st0">&quot;qoo&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> 
&nbsp;
			<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Object</span></a> result <span class="sy0">=</span> foo.<span class="me1">invoke</span><span class="br0">&#40;</span><span class="st0">&quot;hi&quot;</span>, <span class="st0">&quot;Albert&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span>result<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
			<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Object</span></a> re <span class="sy0">=</span> koo.<span class="me1">invoke</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span>re<span class="br0">&#41;</span><span class="sy0">;</span>
			change.<span class="me1">invoke</span><span class="br0">&#40;</span><span class="st0">&quot;Michael&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
			<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Object</span></a> re2 <span class="sy0">=</span> koo.<span class="me1">invoke</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span>re2<span class="br0">&#41;</span><span class="sy0">;</span>
			qoo.<span class="me1">invoke</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">IOException</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
			e.<span class="me1">printStackTrace</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="br0">&#125;</span>
	<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.feime.net/2012/java%e4%b8%8eclojure%e4%b9%8b%e9%97%b4%e7%9a%84%e4%ba%92%e7%9b%b8%e8%b0%83%e7%94%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>赶个时髦，在Github上建一个repo 来收集 clojure的代码段</title>
		<link>http://www.feime.net/2012/%e8%b5%b6%e4%b8%aa%e6%97%b6%e9%ab%a6%ef%bc%8c%e5%9c%a8github%e4%b8%8a%e5%bb%ba%e4%b8%80%e4%b8%aarepo-%e6%9d%a5%e6%94%b6%e9%9b%86-clojure%e7%9a%84%e4%bb%a3%e7%a0%81%e6%ae%b5/</link>
		<comments>http://www.feime.net/2012/%e8%b5%b6%e4%b8%aa%e6%97%b6%e9%ab%a6%ef%bc%8c%e5%9c%a8github%e4%b8%8a%e5%bb%ba%e4%b8%80%e4%b8%aarepo-%e6%9d%a5%e6%94%b6%e9%9b%86-clojure%e7%9a%84%e4%bb%a3%e7%a0%81%e6%ae%b5/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 07:52:43 +0000</pubDate>
		<dc:creator>Albert Lee</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.feime.net/?p=203</guid>
		<description><![CDATA[地址： https://github.com/albertlee/clj-tips 主要收集自己写的一些Clojure代码段，留做备忘。]]></description>
			<content:encoded><![CDATA[<p>地址： <a href="https://github.com/albertlee/clj-tips" class="ext-link" rel="external nofollow" onclick="this.target='_blank';">https://github.com/albertlee/clj-tips</a></p>
<p>主要收集自己写的一些Clojure代码段，留做备忘。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.feime.net/2012/%e8%b5%b6%e4%b8%aa%e6%97%b6%e9%ab%a6%ef%bc%8c%e5%9c%a8github%e4%b8%8a%e5%bb%ba%e4%b8%80%e4%b8%aarepo-%e6%9d%a5%e6%94%b6%e9%9b%86-clojure%e7%9a%84%e4%bb%a3%e7%a0%81%e6%ae%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clojure 代码段：简单的模板替换</title>
		<link>http://www.feime.net/2012/clojure-%e4%bb%a3%e7%a0%81%e6%ae%b5%ef%bc%9a%e7%ae%80%e5%8d%95%e7%9a%84%e6%a8%a1%e6%9d%bf%e6%9b%bf%e6%8d%a2/</link>
		<comments>http://www.feime.net/2012/clojure-%e4%bb%a3%e7%a0%81%e6%ae%b5%ef%bc%9a%e7%ae%80%e5%8d%95%e7%9a%84%e6%a8%a1%e6%9d%bf%e6%9b%bf%e6%8d%a2/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 13:54:07 +0000</pubDate>
		<dc:creator>Albert Lee</dc:creator>
				<category><![CDATA[LISP]]></category>
		<category><![CDATA[clojure]]></category>

		<guid isPermaLink="false">http://www.feime.net/?p=199</guid>
		<description><![CDATA[一个小需求：一个SQL语句的字符串，需要替换其中几个变量，可以用模板模块来实现，不过我不想为了这点小功能劳师动众，因此自己造了个轮子，用一句reduce 搞定，代码如下： &#160;]]></description>
			<content:encoded><![CDATA[<p>一个小需求：一个SQL语句的字符串，需要替换其中几个变量，可以用模板模块来实现，不过我不想为了这点小功能劳师动众，因此自己造了个轮子，用一句reduce 搞定，代码如下：</p>
<p>&nbsp;</p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.feime.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://www.feime.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.feime.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.feime.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="lisp" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="br0">&#40;</span>ns clj_sample<span class="sy0">.</span>core</div></li><li class="li1"><div class="de1">  <span class="br0">&#40;</span><span class="sy0">:</span><span class="me1">gen-class</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">  <span class="br0">&#40;</span><span class="sy0">:</span><span class="me1">require</span> <span class="br0">&#91;</span>clojure<span class="sy0">.</span>string <span class="sy0">:</span><span class="me1">as</span> string<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2"><span class="br0">&#40;</span>def sql <span class="st0">&quot;AND add_time&gt;=unix_timestamp('$startTm')</span></div></li><li class="li1"><div class="de1"><span class="st0">          AND add_time&lt;unix_timestamp('$endTm')</span></div></li><li class="li1"><div class="de1"><span class="st0">          AND add_time&gt;=unix_timestamp('$startTm')</span></div></li><li class="li1"><div class="de1"><span class="st0">          AND add_time&lt;unix_timestamp('$endTm')&quot;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#40;</span>def params <span class="br0">&#91;</span><span class="br0">&#91;</span><span class="st0">&quot;$startTm&quot;</span> <span class="st0">&quot;2010-1-1&quot;</span><span class="br0">&#93;</span></div></li><li class="li2"><div class="de2">             <span class="br0">&#91;</span><span class="st0">&quot;$endTm&quot;</span> <span class="st0">&quot;2012-2-17&quot;</span><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#40;</span>defn -main <span class="br0">&#91;</span><span class="sy0">&amp;</span> args<span class="br0">&#93;</span></div></li><li class="li1"><div class="de1">  <span class="br0">&#40;</span>println <span class="br0">&#40;</span>reduce #<span class="br0">&#40;</span>clojure<span class="sy0">.</span>string/replace <span class="sy0">%</span>1 <span class="br0">&#40;</span>first <span class="sy0">%</span>2<span class="br0">&#41;</span> <span class="br0">&#40;</span>second <span class="sy0">%</span>2<span class="br0">&#41;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">                   <span class="br0">&#40;</span><span class="kw1">cons</span> sql params<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div></li></ol></pre></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.feime.net/2012/clojure-%e4%bb%a3%e7%a0%81%e6%ae%b5%ef%bc%9a%e7%ae%80%e5%8d%95%e7%9a%84%e6%a8%a1%e6%9d%bf%e6%9b%bf%e6%8d%a2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在Clojure中使用Quartz 定时任务</title>
		<link>http://www.feime.net/2012/%e5%9c%a8clojure%e4%b8%ad%e4%bd%bf%e7%94%a8quartz-%e5%ae%9a%e6%97%b6%e4%bb%bb%e5%8a%a1/</link>
		<comments>http://www.feime.net/2012/%e5%9c%a8clojure%e4%b8%ad%e4%bd%bf%e7%94%a8quartz-%e5%ae%9a%e6%97%b6%e4%bb%bb%e5%8a%a1/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 11:28:39 +0000</pubDate>
		<dc:creator>Albert Lee</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.feime.net/?p=194</guid>
		<description><![CDATA[废话不多说，直接上代码： (Update: 下面这段代码太丑了，后来又优化的比较优雅了，现在懒的贴了)]]></description>
			<content:encoded><![CDATA[<p>废话不多说，直接上代码：</p>
<p>(Update: 下面这段代码太丑了，后来又优化的比较优雅了，现在懒的贴了)</p>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.feime.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://www.feime.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.feime.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.feime.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="java5" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="br0">&#40;</span>ns sample.<span class="me1">core</span></div></li><li class="li1"><div class="de1">  <span class="br0">&#40;</span>:gen-<span class="kw2">class</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">  <span class="br0">&#40;</span>:<span class="kw2">import</span> <span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">           <span class="br0">&#40;</span>org.<span class="me1">quartz</span> CronTrigger JobDetail Scheduler SchedulerException Trigger<span class="br0">&#41;</span></div></li><li class="li2"><div class="de2">           <span class="br0">&#40;</span>org.<span class="me1">quartz</span>.<span class="me1">impl</span> StdSchedulerFactory<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">           <span class="br0">&#40;</span>org.<span class="me1">quartz</span> TriggerBuilder<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">           <span class="br0">&#40;</span>org.<span class="me1">quartz</span> JobBuilder<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">           <span class="br0">&#40;</span>org.<span class="me1">quartz</span> SimpleScheduleBuilder<span class="br0">&#41;</span></div></li><li class="li2"><div class="de2">           <span class="br0">&#40;</span>org.<span class="me1">quartz</span> CronScheduleBuilder<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">           <span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">  <span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="sy0">;;</span>  实际执行的任务</div></li><li class="li2"><div class="de2"><span class="br0">&#40;</span>defn run-import-process</div></li><li class="li1"><div class="de1">  <span class="br0">&#91;</span><span class="br0">&#93;</span></div></li><li class="li1"><div class="de1">  <span class="br0">&#40;</span>println <span class="st0">&quot;running import process...&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> </div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#40;</span>def scheduler<span class="sy0">*</span> <span class="br0">&#40;</span>atom nil<span class="br0">&#41;</span><span class="br0">&#41;</span> </div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#40;</span>deftype ImportJob <span class="br0">&#91;</span><span class="br0">&#93;</span></div></li><li class="li1"><div class="de1">  org.<span class="me1">quartz</span>.<span class="me1">Job</span></div></li><li class="li1"><div class="de1">  <span class="br0">&#40;</span>execute <span class="br0">&#91;</span><span class="kw2">this</span> context<span class="br0">&#93;</span> <span class="br0">&#40;</span>run-import-process<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> </div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2"><span class="br0">&#40;</span>defn start-import-manager</div></li><li class="li1"><div class="de1">  <span class="br0">&#91;</span><span class="br0">&#93;</span></div></li><li class="li1"><div class="de1">  <span class="br0">&#40;</span>let <span class="br0">&#91;</span>scheduler <span class="br0">&#40;</span>StdSchedulerFactory/getDefaultScheduler<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">        trigger <span class="br0">&#40;</span>TriggerBuilder/newTrigger<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">        job <span class="br0">&#40;</span>JobBuilder/newJob ImportJob<span class="br0">&#41;</span><span class="br0">&#93;</span> </div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="br0">&#40;</span>reset<span class="sy0">!</span> scheduler<span class="sy0">*</span> scheduler<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#40;</span>.<span class="me1">scheduleJob</span> scheduler</div></li><li class="li1"><div class="de1">                  <span class="br0">&#40;</span>.<span class="me1">build</span> <span class="br0">&#40;</span>.<span class="me1">withIdentity</span> job <span class="st0">&quot;job1&quot;</span> <span class="st0">&quot;import&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">                  <span class="br0">&#40;</span>.<span class="me1">build</span> <span class="br0">&#40;</span>.<span class="me1">withSchedule</span> <span class="br0">&#40;</span>.<span class="me1">startNow</span> <span class="br0">&#40;</span>.<span class="me1">withIdentity</span> trigger <span class="st0">&quot;trigger 1&quot;</span> <span class="st0">&quot;import&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#40;</span>CronScheduleBuilder/cronSchedule <span class="st0">&quot;*/3 * * * * ?&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="br0">&#40;</span>.<span class="me1">start</span> scheduler<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#40;</span>defn stop-import-manager</div></li><li class="li1"><div class="de1">  <span class="br0">&#91;</span><span class="sy0">&amp;</span> <span class="br0">&#91;</span>wait<span class="sy0">?</span><span class="br0">&#93;</span><span class="br0">&#93;</span></div></li><li class="li2"><div class="de2">  <span class="br0">&#40;</span><span class="kw1">if</span> wait<span class="sy0">?</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#40;</span>.<span class="me1">shutdown</span> @scheduler<span class="sy0">*</span> <span class="kw4">true</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#40;</span>.<span class="me1">shutdown</span> @scheduler<span class="sy0">*</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> </div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#40;</span>defn -main <span class="br0">&#91;</span><span class="sy0">&amp;</span> args<span class="br0">&#93;</span></div></li><li class="li2"><div class="de2">   <span class="br0">&#40;</span>start-import-manager<span class="br0">&#41;</span><span class="br0">&#41;</span></div></li></ol></pre></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.feime.net/2012/%e5%9c%a8clojure%e4%b8%ad%e4%bd%bf%e7%94%a8quartz-%e5%ae%9a%e6%97%b6%e4%bb%bb%e5%8a%a1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>老土了，原来在Mac上SBCL是支持多线程的</title>
		<link>http://www.feime.net/2011/%e8%80%81%e5%9c%9f%e4%ba%86%ef%bc%8c%e5%8e%9f%e6%9d%a5%e5%9c%a8mac%e4%b8%8asbcl%e6%98%af%e6%94%af%e6%8c%81%e5%a4%9a%e7%ba%bf%e7%a8%8b%e7%9a%84/</link>
		<comments>http://www.feime.net/2011/%e8%80%81%e5%9c%9f%e4%ba%86%ef%bc%8c%e5%8e%9f%e6%9d%a5%e5%9c%a8mac%e4%b8%8asbcl%e6%98%af%e6%94%af%e6%8c%81%e5%a4%9a%e7%ba%bf%e7%a8%8b%e7%9a%84/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 10:12:32 +0000</pubDate>
		<dc:creator>Albert Lee</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.feime.net/?p=185</guid>
		<description><![CDATA[一直以为SBCL在MacOSX上不支持多线程，导致自己痛苦了很久，这都是不读书惹得祸阿！ 昨天在上海LispMeetup上，经黄涧石同学一语点醒梦中人，才发现原来SBCL是支持多线程的，而且还有很多其他的编译选项！ 具体说来就是在SBCL源代码目录下，写一个 customize-target-features.lisp 文件，在其中将需要打开或关闭的特性写入，具体的特性列表在 base-target-features.lisp-expr 这个文件中有介绍。 &#160;]]></description>
			<content:encoded><![CDATA[<p>一直以为SBCL在MacOSX上不支持多线程，导致自己痛苦了很久，这都是不读书惹得祸阿！<br />
昨天在上海LispMeetup上，经黄涧石同学一语点醒梦中人，才发现原来SBCL是支持多线程的，而且还有很多其他的编译选项！<br />
具体说来就是在SBCL源代码目录下，写一个 customize-target-features.lisp 文件，在其中将需要打开或关闭的特性写入，具体的特性列表在 base-target-features.lisp-expr 这个文件中有介绍。</p>
<p>&nbsp;</p>
<div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.feime.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://www.feime.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.feime.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.feime.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="lisp" style="font-family:monospace;"><span class="br0">&#40;</span><span class="kw1">lambda</span> <span class="br0">&#40;</span>features<span class="br0">&#41;</span>
  <span class="br0">&#40;</span>flet <span class="br0">&#40;</span><span class="br0">&#40;</span>enable <span class="br0">&#40;</span>x<span class="br0">&#41;</span>
           <span class="br0">&#40;</span>pushnew x features<span class="br0">&#41;</span><span class="br0">&#41;</span>
         <span class="br0">&#40;</span>disable <span class="br0">&#40;</span>x<span class="br0">&#41;</span>
           <span class="br0">&#40;</span><span class="kw1">setf</span> features <span class="br0">&#40;</span><span class="kw1">remove</span> x features<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
    <span class="co1">;; Threading support.</span>
    <span class="br0">&#40;</span>enable <span class="sy0">:</span><span class="me1">sb-thread</span><span class="br0">&#41;</span>
    <span class="br0">&#40;</span>enable <span class="sy0">:</span><span class="me1">SB-XREF-FOR-INTERNALS</span><span class="br0">&#41;</span>
    <span class="br0">&#40;</span>enable <span class="sy0">:</span><span class="me1">sb-doc</span><span class="br0">&#41;</span>
    <span class="br0">&#40;</span>enable <span class="sy0">:</span><span class="me1">sb-test</span><span class="br0">&#41;</span>
    <span class="br0">&#40;</span>enable <span class="sy0">:</span><span class="me1">sb-unicode</span><span class="br0">&#41;</span>
    <span class="br0">&#40;</span>enable <span class="sy0">:</span><span class="me1">sb-</span><span class="kw1">eval</span><span class="br0">&#41;</span>
    <span class="br0">&#40;</span>enable <span class="sy0">:</span><span class="me1">sb-source-locations</span><span class="br0">&#41;</span>
    <span class="br0">&#40;</span>enable <span class="sy0">:</span><span class="me1">sb-xref-for-internals</span><span class="br0">&#41;</span>
    <span class="br0">&#40;</span>enable <span class="sy0">:</span><span class="me1">sb-core-compression</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></pre></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.feime.net/2011/%e8%80%81%e5%9c%9f%e4%ba%86%ef%bc%8c%e5%8e%9f%e6%9d%a5%e5%9c%a8mac%e4%b8%8asbcl%e6%98%af%e6%94%af%e6%8c%81%e5%a4%9a%e7%ba%bf%e7%a8%8b%e7%9a%84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Common Lisp Condition System手记</title>
		<link>http://www.feime.net/2011/common-lisp-condition-system%e6%89%8b%e8%ae%b0/</link>
		<comments>http://www.feime.net/2011/common-lisp-condition-system%e6%89%8b%e8%ae%b0/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 16:59:13 +0000</pubDate>
		<dc:creator>Albert Lee</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.feime.net/?p=180</guid>
		<description><![CDATA[Condition System 是Common Lisp中很独特的东西，不单单用来做异常处理，还可以用来实现一些函数控制传递。 Condition Sys 与通常的 try-catch 结构相比，更加的通用更加灵活。 Condition sys的组织与开发过程很相关，通常在开发时，首先写出一段工作代码，然后再考虑如何处理异常情况。 首先写出工作代码，在这段工作代码中可能会遇到各种各样的异常(condition)情况，我们只要抛出它们即可。先不去考虑如何处理它们。 之后，我们可以提供多种处理方式，既 restart ，它们可以让出现状况的代码原地满血复活。 有了多种处理方式后，应该选择哪一个呢？这就是恢复策略问题，可以在更靠后（更外层）代码中进行处理。]]></description>
			<content:encoded><![CDATA[<p>Condition System 是Common Lisp中很独特的东西，不单单用来做异常处理，还可以用来实现一些函数控制传递。<br />
Condition Sys 与通常的 try-catch 结构相比，更加的通用更加灵活。<br />
Condition sys的组织与开发过程很相关，通常在开发时，首先写出一段工作代码，然后再考虑如何处理异常情况。<br />
首先写出工作代码，在这段工作代码中可能会遇到各种各样的异常(condition)情况，我们只要抛出它们即可。先不去考虑如何处理它们。<br />
之后，我们可以提供多种处理方式，既 restart ，它们可以让出现状况的代码原地满血复活。<br />
有了多种处理方式后，应该选择哪一个呢？这就是恢复策略问题，可以在更靠后（更外层）代码中进行处理。</p>
<p><a href="http://www.feime.net/wp-content/uploads/2011/11/LISP_condition_sys_1.png" class="local-link"><img src="http://www.feime.net/wp-content/uploads/2011/11/LISP_condition_sys_1-1024x848.png" alt="" title="LISP_condition_sys_1" width="640" height="530" class="alignnone size-large wp-image-183" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.feime.net/2011/common-lisp-condition-system%e6%89%8b%e8%ae%b0/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>工具箱里又添了一样 PyClips</title>
		<link>http://www.feime.net/2011/%e5%b7%a5%e5%85%b7%e7%ae%b1%e9%87%8c%e5%8f%88%e6%b7%bb%e4%ba%86%e4%b8%80%e6%a0%b7-pyclips/</link>
		<comments>http://www.feime.net/2011/%e5%b7%a5%e5%85%b7%e7%ae%b1%e9%87%8c%e5%8f%88%e6%b7%bb%e4%ba%86%e4%b8%80%e6%a0%b7-pyclips/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 03:51:53 +0000</pubDate>
		<dc:creator>Albert Lee</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.feime.net/?p=177</guid>
		<description><![CDATA[PyClips 简单说就是把Clips的源代码包装了一层，方便在Python中进行交互调用，这里是文档： PyClips手册 使用非常简单，Clips独立于Python进程之外，在Python中通过clips库来交互： >>> import clips >>> clips.Reset() >>> clips.Assert("(duck)") >>> clips.BuildRule("duck-rule", "(duck)", "(assert (quack))", "the Duck Rule") >>> clips.PrintRules() MAIN: duck-rule >>> clips.PrintAgenda() MAIN: 0 duck-rule: f-1 For a total of 1 activation. >>> clips.PrintFacts() f-0 (initial-fact) f-1 &#8230; <a href="http://www.feime.net/2011/%e5%b7%a5%e5%85%b7%e7%ae%b1%e9%87%8c%e5%8f%88%e6%b7%bb%e4%ba%86%e4%b8%80%e6%a0%b7-pyclips/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>PyClips 简单说就是把Clips的源代码包装了一层，方便在Python中进行交互调用，这里是文档：<br />
<a href="http://pyclips.sourceforge.net/manual/pyclips-overview.html" class="ext-link" rel="external nofollow" onclick="this.target='_blank';">PyClips手册</a> </p>
<p>使用非常简单，Clips独立于Python进程之外，在Python中通过clips库来交互：</p>
<p><code><br />
>>> import clips<br />
>>> clips.Reset()<br />
>>> clips.Assert("(duck)")<br />
<Fact 'f-1': fact object at 0x00DE4AE0><br />
>>> clips.BuildRule("duck-rule", "(duck)", "(assert (quack))", "the Duck Rule")<br />
<Rule 'duck-rule': defrule object at 0x00DA7E00><br />
>>> clips.PrintRules()<br />
MAIN:<br />
duck-rule<br />
>>> clips.PrintAgenda()<br />
MAIN:<br />
   0      duck-rule: f-1<br />
For a total of 1 activation.<br />
>>> clips.PrintFacts()<br />
f-0     (initial-fact)<br />
f-1     (duck)<br />
For a total of 2 facts.<br />
>>> clips.Run()<br />
>>> clips.PrintFacts()<br />
f-0     (initial-fact)<br />
f-1     (duck)<br />
f-2     (quack)<br />
For a total of 3 facts.<br />
</code></p>
<p>也可以用 clips.Load 来调用一个外部Clips文件执行。<br />
如果你发现自己的代码中IF-ELSE 嵌套超过5层，就可以考虑结合Python和Clips了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.feime.net/2011/%e5%b7%a5%e5%85%b7%e7%ae%b1%e9%87%8c%e5%8f%88%e6%b7%bb%e4%ba%86%e4%b8%80%e6%a0%b7-pyclips/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>你该有多无聊～～</title>
		<link>http://www.feime.net/2011/%e4%bd%a0%e8%af%a5%e6%9c%89%e5%a4%9a%e6%97%a0%e8%81%8a%ef%bd%9e%ef%bd%9e/</link>
		<comments>http://www.feime.net/2011/%e4%bd%a0%e8%af%a5%e6%9c%89%e5%a4%9a%e6%97%a0%e8%81%8a%ef%bd%9e%ef%bd%9e/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 22:29:31 +0000</pubDate>
		<dc:creator>Albert Lee</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.feime.net/?p=175</guid>
		<description><![CDATA[通宵似乎开发效率不太高。不知不觉天亮了，无聊中。 刚刚搜erlang，结果在erlang-china上看到 Arduino 暗示的另一种可能 。想想自己手头上已经积累了四五块Arduino芯片，还有一堆的乱七八糟的元件。但一直没时间深入的去开始个项目。毕竟，最近小米手机实在是太火了⋯⋯ 这些电子元件都是小时候的梦想阿⋯⋯唉，少先队员的时代。 那么如果无聊起来，该搞些什么无聊的东西出来呢？ 1. 把家里那台电子体重秤接上网，自动发微博上～还要能生成曲线图，还要能自动@给那谁 （这种减肥方式不靠谱） 2. 对于整天见不到太阳的程序员来说，在电脑旁边接个三自由度机械手云台，实时指向太阳。 3. 搞一堆导线缠到管子上，做个倒计时的定时期，几个鲜红的数字跳阿跳 4. 把小车改造改造，到楼后面的公园里去追那些野猫 5. 拿那块三轴加速芯片绑头上，用摇头和点头来输入Yes/No 6. 接温度感应，自动控制usb风扇]]></description>
			<content:encoded><![CDATA[<p>通宵似乎开发效率不太高。不知不觉天亮了，无聊中。<br />
刚刚搜erlang，结果在erlang-china上看到 <a href="http://erlang-china.org/misc/arduino_another_future.html/comment-page-1" class="ext-link" rel="external nofollow" onclick="this.target='_blank';">Arduino 暗示的另一种可能</a> 。想想自己手头上已经积累了四五块Arduino芯片，还有一堆的乱七八糟的元件。但一直没时间深入的去开始个项目。毕竟，最近小米手机实在是太火了⋯⋯<br />
这些电子元件都是小时候的梦想阿⋯⋯唉，少先队员的时代。</p>
<p>那么如果无聊起来，该搞些什么无聊的东西出来呢？</p>
<p>1. 把家里那台电子体重秤接上网，自动发微博上～还要能生成曲线图，还要能自动@给那谁 （这种减肥方式不靠谱）<br />
2. 对于整天见不到太阳的程序员来说，在电脑旁边接个三自由度机械手云台，实时指向太阳。<br />
3. 搞一堆导线缠到管子上，做个倒计时的定时期，几个鲜红的数字跳阿跳<br />
4. 把小车改造改造，到楼后面的公园里去追那些野猫<br />
5. 拿那块三轴加速芯片绑头上，用摇头和点头来输入Yes/No<br />
6. 接温度感应，自动控制usb风扇</p>
]]></content:encoded>
			<wfw:commentRss>http://www.feime.net/2011/%e4%bd%a0%e8%af%a5%e6%9c%89%e5%a4%9a%e6%97%a0%e8%81%8a%ef%bd%9e%ef%bd%9e/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>市场帅哥的烦恼&#8211;暨Prolog的一个应用实例</title>
		<link>http://www.feime.net/2011/%e5%b8%82%e5%9c%ba%e5%b8%85%e5%93%a5%e7%9a%84%e7%83%a6%e6%81%bc-%e6%9a%a8prolog%e7%9a%84%e4%b8%80%e4%b8%aa%e5%ba%94%e7%94%a8%e5%ae%9e%e4%be%8b/</link>
		<comments>http://www.feime.net/2011/%e5%b8%82%e5%9c%ba%e5%b8%85%e5%93%a5%e7%9a%84%e7%83%a6%e6%81%bc-%e6%9a%a8prolog%e7%9a%84%e4%b8%80%e4%b8%aa%e5%ba%94%e7%94%a8%e5%ae%9e%e4%be%8b/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 14:42:34 +0000</pubDate>
		<dc:creator>Albert Lee</dc:creator>
				<category><![CDATA[Prolog]]></category>

		<guid isPermaLink="false">http://www.feime.net/?p=165</guid>
		<description><![CDATA[由于我一向乐于助人并总是可以解决些稀奇古怪的问题，因此在非技术人员眼中我就是神秘的攻城师。 刚才市场帅哥又带来了一个古怪的需求：他们要生成一堆“靓号”。 要说咱中国人似乎对号码有特别的偏好，啥8888、1688之类的。我们的一个产品，每个用户都有一个号码，我们的市场帅哥想看看有哪些“靓号”，而如何定义靓号呢？市场的同志们自有一套私企古怪的规则，我用程序员的眼光真的无法理解其中的道理。 他们给出了一个数字范围，并列出了多条规则，比如：有四个连续的相同数字、四个连续的递增或递减的数字等等。 需要根据每一种规则生成出所有的“靓号”。 收到这个需求后，我心中一动，Prolog兄，终于有你的用武之地了，我等这天很久了…… 这里拿其中一条规则举个例子： 长度为7位，首位为4，含2组3位连续顺数的号，例如：4123123 直接上源代码： &#160; 生成结果部分： 4012012 4123123 4210210 4234234 4321321 。。。。 其他各条变态的规则都是直觉的翻译，虽然看上去有点长，但实际上都是复制粘贴，对于这种一次性的需求，就没那么讲究了，几乎没动啥脑子，这个需求如果用其他的方式写还真有点头大的。我的原则就是合适的工具解决合适的问题，绝对不用锤子干锯子的活。]]></description>
			<content:encoded><![CDATA[<p>由于我一向乐于助人并总是可以解决些稀奇古怪的问题，因此在非技术人员眼中我就是神秘的攻城师。<br />
刚才市场帅哥又带来了一个古怪的需求：他们要生成一堆“靓号”。<br />
要说咱中国人似乎对号码有特别的偏好，啥8888、1688之类的。我们的一个产品，每个用户都有一个号码，我们的市场帅哥想看看有哪些“靓号”，而如何定义靓号呢？市场的同志们自有一套私企古怪的规则，我用程序员的眼光真的无法理解其中的道理。<br />
他们给出了一个数字范围，并列出了多条规则，比如：有四个连续的相同数字、四个连续的递增或递减的数字等等。<br />
需要根据每一种规则生成出所有的“靓号”。</p>
<p>收到这个需求后，我心中一动，Prolog兄，终于有你的用武之地了，我等这天很久了……</p>
<p>这里拿其中一条规则举个例子：<br />
长度为7位，首位为4，含2组3位连续顺数的号，例如：4123123</p>
<p>直接上源代码：</p>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.feime.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://www.feime.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.feime.net/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.feime.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;">dig<span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">.</span>
dig<span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">.</span>
dig<span class="br0">&#40;</span><span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">.</span>
dig<span class="br0">&#40;</span><span class="nu0">3</span><span class="br0">&#41;</span><span class="sy0">.</span>
dig<span class="br0">&#40;</span><span class="nu0">4</span><span class="br0">&#41;</span><span class="sy0">.</span>
dig<span class="br0">&#40;</span><span class="nu0">5</span><span class="br0">&#41;</span><span class="sy0">.</span>
dig<span class="br0">&#40;</span><span class="nu0">6</span><span class="br0">&#41;</span><span class="sy0">.</span>
dig<span class="br0">&#40;</span><span class="nu0">7</span><span class="br0">&#41;</span><span class="sy0">.</span>
dig<span class="br0">&#40;</span><span class="nu0">8</span><span class="br0">&#41;</span><span class="sy0">.</span>
dig<span class="br0">&#40;</span><span class="nu0">9</span><span class="br0">&#41;</span><span class="sy0">.</span>
&nbsp;
num_array<span class="br0">&#40;</span>A<span class="sy0">,</span> B<span class="sy0">,</span> C<span class="sy0">,</span> D<span class="sy0">,</span> E<span class="sy0">,</span> F<span class="sy0">,</span> G<span class="br0">&#41;</span><span class="sy0">:-</span>
    A <span class="sy0">=</span> <span class="nu0">4</span><span class="sy0">,</span> dig<span class="br0">&#40;</span>B<span class="br0">&#41;</span><span class="sy0">,</span> dig<span class="br0">&#40;</span>C<span class="br0">&#41;</span><span class="sy0">,</span> dig<span class="br0">&#40;</span>D<span class="br0">&#41;</span><span class="sy0">,</span> dig<span class="br0">&#40;</span>E<span class="br0">&#41;</span><span class="sy0">,</span> dig<span class="br0">&#40;</span>F<span class="br0">&#41;</span><span class="sy0">,</span> dig<span class="br0">&#40;</span>G<span class="br0">&#41;</span><span class="sy0">.</span>
&nbsp;
pretty<span class="br0">&#40;</span>A<span class="sy0">,</span> B<span class="sy0">,</span> C<span class="sy0">,</span> D<span class="sy0">,</span> E<span class="sy0">,</span> F<span class="sy0">,</span> G<span class="br0">&#41;</span><span class="sy0">:-</span>
    num_array<span class="br0">&#40;</span>A<span class="sy0">,</span> B<span class="sy0">,</span> C<span class="sy0">,</span> D<span class="sy0">,</span> E<span class="sy0">,</span> F<span class="sy0">,</span> G<span class="br0">&#41;</span><span class="sy0">,</span>
    B is A <span class="sy0">+</span> <span class="nu0">1</span><span class="sy0">,</span>
    C is B <span class="sy0">+</span> <span class="nu0">1</span><span class="sy0">,</span>
    A <span class="sy0">=</span> D<span class="sy0">,</span>
    B <span class="sy0">=</span> E<span class="sy0">,</span>
    C <span class="sy0">=</span> F<span class="sy0">.</span>
&nbsp;
pretty<span class="br0">&#40;</span>A<span class="sy0">,</span> B<span class="sy0">,</span> C<span class="sy0">,</span> D<span class="sy0">,</span> E<span class="sy0">,</span> F<span class="sy0">,</span> G<span class="br0">&#41;</span><span class="sy0">:-</span>
    num_array<span class="br0">&#40;</span>A<span class="sy0">,</span> B<span class="sy0">,</span> C<span class="sy0">,</span> D<span class="sy0">,</span> E<span class="sy0">,</span> F<span class="sy0">,</span> G<span class="br0">&#41;</span><span class="sy0">,</span>
    C is B <span class="sy0">+</span> <span class="nu0">1</span><span class="sy0">,</span>
    D is C <span class="sy0">+</span> <span class="nu0">1</span><span class="sy0">,</span>
    B <span class="sy0">=</span> E<span class="sy0">,</span>
    C <span class="sy0">=</span> F<span class="sy0">,</span>
    D <span class="sy0">=</span> G<span class="sy0">.</span>
pretty<span class="br0">&#40;</span>A<span class="sy0">,</span> B<span class="sy0">,</span> C<span class="sy0">,</span> D<span class="sy0">,</span> E<span class="sy0">,</span> F<span class="sy0">,</span> G<span class="br0">&#41;</span><span class="sy0">:-</span>
    num_array<span class="br0">&#40;</span>A<span class="sy0">,</span> B<span class="sy0">,</span> C<span class="sy0">,</span> D<span class="sy0">,</span> E<span class="sy0">,</span> F<span class="sy0">,</span> G<span class="br0">&#41;</span><span class="sy0">,</span>
    B is A <span class="sy0">-</span> <span class="nu0">1</span><span class="sy0">,</span>
    C is B <span class="sy0">-</span> <span class="nu0">1</span><span class="sy0">,</span>
    A <span class="sy0">=</span> D<span class="sy0">,</span>
    B <span class="sy0">=</span> E<span class="sy0">,</span>
    C <span class="sy0">=</span> F<span class="sy0">.</span>
&nbsp;
pretty<span class="br0">&#40;</span>A<span class="sy0">,</span> B<span class="sy0">,</span> C<span class="sy0">,</span> D<span class="sy0">,</span> E<span class="sy0">,</span> F<span class="sy0">,</span> G<span class="br0">&#41;</span><span class="sy0">:-</span>
    num_array<span class="br0">&#40;</span>A<span class="sy0">,</span> B<span class="sy0">,</span> C<span class="sy0">,</span> D<span class="sy0">,</span> E<span class="sy0">,</span> F<span class="sy0">,</span> G<span class="br0">&#41;</span><span class="sy0">,</span>
    C is B <span class="sy0">-</span> <span class="nu0">1</span><span class="sy0">,</span>
    D is C <span class="sy0">-</span> <span class="nu0">1</span><span class="sy0">,</span>
    B <span class="sy0">=</span> E<span class="sy0">,</span>
    C <span class="sy0">=</span> F<span class="sy0">,</span>
    D <span class="sy0">=</span> G<span class="sy0">.</span>
&nbsp;
main<span class="sy0">:-</span>
    pretty<span class="br0">&#40;</span>A<span class="sy0">,</span> B<span class="sy0">,</span> C<span class="sy0">,</span> D<span class="sy0">,</span> E<span class="sy0">,</span> F<span class="sy0">,</span> G<span class="br0">&#41;</span><span class="sy0">,</span>
    writef<span class="br0">&#40;</span><span class="st0">&quot;%t%t%t%t%t%t%t<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> <span class="br0">&#91;</span>A<span class="sy0">,</span> B<span class="sy0">,</span> C<span class="sy0">,</span> D<span class="sy0">,</span> E<span class="sy0">,</span> F<span class="sy0">,</span> G<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">,</span>fail<span class="sy0">.</span></pre></div></div>
<p>&nbsp;</p>
<p>生成结果部分：</p>
<p>4012012<br />
4123123<br />
4210210<br />
4234234<br />
4321321<br />
。。。。</p>
<p>其他各条变态的规则都是直觉的翻译，虽然看上去有点长，但实际上都是复制粘贴，对于这种一次性的需求，就没那么讲究了，几乎没动啥脑子，这个需求如果用其他的方式写还真有点头大的。我的原则就是合适的工具解决合适的问题，绝对不用锤子干锯子的活。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.feime.net/2011/%e5%b8%82%e5%9c%ba%e5%b8%85%e5%93%a5%e7%9a%84%e7%83%a6%e6%81%bc-%e6%9a%a8prolog%e7%9a%84%e4%b8%80%e4%b8%aa%e5%ba%94%e7%94%a8%e5%ae%9e%e4%be%8b/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

