<?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>Copy S. Liu 的部落格</title>
	<atom:link href="http://copyliu.org/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://copyliu.org/blog</link>
	<description>不奢吞食天地，只求浪漫人间！</description>
	<lastBuildDate>Fri, 02 Sep 2011 09:36:48 +0000</lastBuildDate>
	<language>zh-tw</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>最近爭論得比較兇的一個問題</title>
		<link>http://copyliu.org/blog/%e9%ba%bb%e9%9b%80%e5%b0%8f%e8%ae%b0/%e6%9c%80%e8%bf%91%e7%88%ad%e8%ab%96%e5%be%97%e6%af%94%e8%bc%83%e5%85%87%e7%9a%84%e4%b8%80%e5%80%8b%e5%95%8f%e9%a1%8c/</link>
		<comments>http://copyliu.org/blog/%e9%ba%bb%e9%9b%80%e5%b0%8f%e8%ae%b0/%e6%9c%80%e8%bf%91%e7%88%ad%e8%ab%96%e5%be%97%e6%af%94%e8%bc%83%e5%85%87%e7%9a%84%e4%b8%80%e5%80%8b%e5%95%8f%e9%a1%8c/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 09:36:48 +0000</pubDate>
		<dc:creator>Copy Liu</dc:creator>
				<category><![CDATA[麻雀小记]]></category>

		<guid isPermaLink="false">http://copyliu.org/blog/?p=443</guid>
		<description><![CDATA[&#160; &#160; 比較典型的新手切法是看起來沒用的5s切出去. 事實上在tenhou.net/2/上可知, 數學上的最優解也是切5s, 但是我在貼吧上看到很多特上和鳳凰都不建議切5s, 更建議切9p &#160; http://tieba.baidu.com/p/1197110420?pn=1 &#160; 這個帖子上有更多討論]]></description>
			<content:encoded><![CDATA[<p><a href="http://copyliu.org/blog/wp-content/uploads/2011/09/mmj.jpg"><img class="alignnone size-full wp-image-444" title=" " src="http://copyliu.org/blog/wp-content/uploads/2011/09/mmj.jpg" alt="" width="599" height="463" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>比較典型的新手切法是看起來沒用的5s切出去.</p>
<p>事實上在tenhou.net/2/上可知, 數學上的最優解也是切5s,</p>
<p>但是我在貼吧上看到很多特上和鳳凰都不建議切5s, 更建議切9p</p>
<p>&nbsp;</p>
<p>http://tieba.baidu.com/p/1197110420?pn=1</p>
<p>&nbsp;</p>
<p>這個帖子上有更多討論</p>
]]></content:encoded>
			<wfw:commentRss>http://copyliu.org/blog/%e9%ba%bb%e9%9b%80%e5%b0%8f%e8%ae%b0/%e6%9c%80%e8%bf%91%e7%88%ad%e8%ab%96%e5%be%97%e6%af%94%e8%bc%83%e5%85%87%e7%9a%84%e4%b8%80%e5%80%8b%e5%95%8f%e9%a1%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>恩 近况  久违的更新</title>
		<link>http://copyliu.org/blog/uncategorized/%e6%81%a9-%e8%bf%91%e5%86%b5-%e4%b9%85%e8%bf%9d%e7%9a%84%e6%9b%b4%e6%96%b0/</link>
		<comments>http://copyliu.org/blog/uncategorized/%e6%81%a9-%e8%bf%91%e5%86%b5-%e4%b9%85%e8%bf%9d%e7%9a%84%e6%9b%b4%e6%96%b0/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 17:38:08 +0000</pubDate>
		<dc:creator>Copy Liu</dc:creator>
				<category><![CDATA[杂七杂八]]></category>

		<guid isPermaLink="false">http://copyliu.org/blog/uncategorized/%e6%81%a9-%e8%bf%91%e5%86%b5-%e4%b9%85%e8%bf%9d%e7%9a%84%e6%9b%b4%e6%96%b0/</guid>
		<description><![CDATA[最近两个月在研究一样从来没接触过的玩意，淫光娘(silverlight程序开发)，不得不说微软的蓝泽光计划把我们几个死程同事完全击坠啊… 公司一个新项目下来，我们以使用新技术来做借口着手开发银光程序。 我自己从来没有真正写过c#，一下子从没有.net基础直接开发sl4的程序果然很难起步，不过一个月使用下来已经有很好的掌握了。接着下来就是深入www sl4这玩意想法真心不错，可惜网页上的动画交互已经被flash完全垄断。不过flash很难在网页上做出可以和winform相匹配的玩意，sl可以说是补足了。(java？那玩意能吃么) 长期上来看flash和sl都会被html5和新的js库所代替，不过sl要在大家一起死之前还是很难获得一个可观的占有率。微软把sl作为wp7的画面控件可谓是省了微软和开发人员不少事情。]]></description>
			<content:encoded><![CDATA[<p>最近两个月在研究一样从来没接触过的玩意，淫光娘(silverlight程序开发)，不得不说微软的蓝泽光计划把我们几个死程同事完全击坠啊…</p>
<p>公司一个新项目下来，我们以使用新技术来做借口着手开发银光程序。</p>
<p>我自己从来没有真正写过c#，一下子从没有.net基础直接开发sl4的程序果然很难起步，不过一个月使用下来已经有很好的掌握了。接着下来就是深入www</p>
<p>sl4这玩意想法真心不错，可惜网页上的动画交互已经被flash完全垄断。不过flash很难在网页上做出可以和winform相匹配的玩意，sl可以说是补足了。(java？那玩意能吃么)</p>
<p>长期上来看flash和sl都会被html5和新的js库所代替，不过sl要在大家一起死之前还是很难获得一个可观的占有率。微软把sl作为wp7的画面控件可谓是省了微软和开发人员不少事情。</p>
]]></content:encoded>
			<wfw:commentRss>http://copyliu.org/blog/uncategorized/%e6%81%a9-%e8%bf%91%e5%86%b5-%e4%b9%85%e8%bf%9d%e7%9a%84%e6%9b%b4%e6%96%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>然后我决定开始在这里记录一些关于日麻的事情</title>
		<link>http://copyliu.org/blog/%e9%ba%bb%e9%9b%80%e5%b0%8f%e8%ae%b0/%e7%84%b6%e5%90%8e%e6%88%91%e5%86%b3%e5%ae%9a%e5%bc%80%e5%a7%8b%e5%9c%a8%e8%bf%99%e9%87%8c%e8%ae%b0%e5%bd%95%e4%b8%80%e4%ba%9b%e5%85%b3%e4%ba%8e%e6%97%a5%e9%ba%bb%e7%9a%84%e4%ba%8b%e6%83%85/</link>
		<comments>http://copyliu.org/blog/%e9%ba%bb%e9%9b%80%e5%b0%8f%e8%ae%b0/%e7%84%b6%e5%90%8e%e6%88%91%e5%86%b3%e5%ae%9a%e5%bc%80%e5%a7%8b%e5%9c%a8%e8%bf%99%e9%87%8c%e8%ae%b0%e5%bd%95%e4%b8%80%e4%ba%9b%e5%85%b3%e4%ba%8e%e6%97%a5%e9%ba%bb%e7%9a%84%e4%ba%8b%e6%83%85/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 07:43:32 +0000</pubDate>
		<dc:creator>Copy Liu</dc:creator>
				<category><![CDATA[麻雀小记]]></category>

		<guid isPermaLink="false">http://copyliu.org/blog/%e9%ba%bb%e9%9b%80%e5%b0%8f%e8%ae%b0/%e7%84%b6%e5%90%8e%e6%88%91%e5%86%b3%e5%ae%9a%e5%bc%80%e5%a7%8b%e5%9c%a8%e8%bf%99%e9%87%8c%e8%ae%b0%e5%bd%95%e4%b8%80%e4%ba%9b%e5%85%b3%e4%ba%8e%e6%97%a5%e9%ba%bb%e7%9a%84%e4%ba%8b%e6%83%85/</guid>
		<description><![CDATA[如题，总觉得现在如果需要雀力向上的话就必须慢慢记录各种日麻点滴，总结经验，可能会频繁更新。见证自己雀力向上！]]></description>
			<content:encoded><![CDATA[<p>如题，总觉得现在如果需要雀力向上的话就必须慢慢记录各种日麻点滴，总结经验，可能会频繁更新。见证自己雀力向上！</p>
]]></content:encoded>
			<wfw:commentRss>http://copyliu.org/blog/%e9%ba%bb%e9%9b%80%e5%b0%8f%e8%ae%b0/%e7%84%b6%e5%90%8e%e6%88%91%e5%86%b3%e5%ae%9a%e5%bc%80%e5%a7%8b%e5%9c%a8%e8%bf%99%e9%87%8c%e8%ae%b0%e5%bd%95%e4%b8%80%e4%ba%9b%e5%85%b3%e4%ba%8e%e6%97%a5%e9%ba%bb%e7%9a%84%e4%ba%8b%e6%83%85/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>在Windows使用pymssql 開發版的注意事項</title>
		<link>http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e5%9c%a8windows%e4%bd%bf%e7%94%a8pymssql-%e9%96%8b%e7%99%bc%e7%89%88%e7%9a%84%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a0%85/</link>
		<comments>http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e5%9c%a8windows%e4%bd%bf%e7%94%a8pymssql-%e9%96%8b%e7%99%bc%e7%89%88%e7%9a%84%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a0%85/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 09:09:18 +0000</pubDate>
		<dc:creator>Copy Liu</dc:creator>
				<category><![CDATA[開發日誌]]></category>
		<category><![CDATA[freetds]]></category>
		<category><![CDATA[mssql]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://copyliu.org/blog/?p=424</guid>
		<description><![CDATA[pymssql是一個比較通用的在python中連接MS SQL數據庫的玩意, 不過他的開發版(2.0)版比正式版更加穩定, 功能也豐富一些. 項目地址 https://code.google.com/p/pymssql 源碼地址 hg clone https://pymssql.googlecode.com/hg/ pymssql 編譯之前你需要幾樣東西 首先是Cython (Cython的安裝需求是需要VS2008 (py2.6以上) 或mingw32編譯環境 然後是Mingw32編譯環境, 編譯pymssql需要 &#160; 獲得源碼之後就setup.py build -c mingw32吧 然後install 一切都是輕車熟路 &#160; 問題來了 你會驚訝的發現他連不上任何數據庫 在新版本中, pymssql依賴freetds連接, 因此即使在windows, 他也需要freetds的配置文件 [global] port = 1433 [myserver] host = 192.168.0.16 port = 1433 然後你還需要名字改成freetds.conf, 然後添加系統變量 set FREETDSCONF=c:/path/to/freetds.conf 或 set FREETDS=/path/to/freetds.conf路徑 &#160; &#160; 然後就可以connect到host=myserver即可到達192.168.0.16了 &#160; &#160;]]></description>
			<content:encoded><![CDATA[<p>pymssql是一個比較通用的在python中連接MS SQL數據庫的玩意, 不過他的開發版(2.0)版比正式版更加穩定, 功能也豐富一些.</p>
<p>項目地址 https://code.google.com/p/pymssql</p>
<p>源碼地址</p>
<pre class="brush:shell">hg clone https://pymssql.googlecode.com/hg/ pymssql</pre>
<p>編譯之前你需要幾樣東西</p>
<p>首先是Cython (Cython的安裝需求是需要VS2008 (py2.6以上) 或mingw32編譯環境</p>
<p>然後是Mingw32編譯環境, 編譯pymssql需要</p>
<p>&nbsp;</p>
<p>獲得源碼之後就setup.py build -c mingw32吧 然後install</p>
<p>一切都是輕車熟路</p>
<p>&nbsp;</p>
<p>問題來了</p>
<p>你會驚訝的發現他連不上任何數據庫</p>
<p>在新版本中, pymssql依賴freetds連接, 因此即使在windows, 他也需要freetds的配置文件</p>
<pre class="brush:plain">[global]
    port = 1433

[myserver]
	host = 192.168.0.16
	port = 1433</pre>
<p>然後你還需要名字改成freetds.conf, 然後添加系統變量</p>
<p>set FREETDSCONF=c:/path/to/freetds.conf</p>
<p>或</p>
<p>set FREETDS=/path/to/freetds.conf路徑</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>然後就可以connect到host=myserver即可到達192.168.0.16了</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e5%9c%a8windows%e4%bd%bf%e7%94%a8pymssql-%e9%96%8b%e7%99%bc%e7%89%88%e7%9a%84%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a0%85/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>關於pymssql&#8230;的編碼問題</title>
		<link>http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e9%97%9c%e6%96%bcpymssql-%e7%9a%84%e7%b7%a8%e7%a2%bc%e5%95%8f%e9%a1%8c/</link>
		<comments>http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e9%97%9c%e6%96%bcpymssql-%e7%9a%84%e7%b7%a8%e7%a2%bc%e5%95%8f%e9%a1%8c/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 10:32:41 +0000</pubDate>
		<dc:creator>Copy Liu</dc:creator>
				<category><![CDATA[開發日誌]]></category>
		<category><![CDATA[pymssql]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://copyliu.org/blog/?p=418</guid>
		<description><![CDATA[有這麼一個數據表, 某字段用的varchar() &#160; 有那麼一個pymssql 這尼瑪connect的時候只能用utf8 &#160; 然後select 出來的居然是 unicode 類型的 gbk編碼過的字符串 然後就有了這麼一個東西 將unicode類型的字符串轉換成普通的字符串 用來decode啥的 def fuckmssqlencode(s): return ''.join(map(chr, map(ord, s)))]]></description>
			<content:encoded><![CDATA[<p>有這麼一個數據表, 某字段用的varchar()</p>
<p>&nbsp;</p>
<p>有那麼一個pymssql 這尼瑪connect的時候只能用utf8</p>
<p>&nbsp;</p>
<p>然後select 出來的居然是 unicode 類型的 gbk編碼過的字符串</p>
<p>然後就有了這麼一個東西 將unicode類型的字符串轉換成普通的字符串 用來decode啥的</p>
<pre class="brush:py">def fuckmssqlencode(s):
    return ''.join(map(chr, map(ord, s)))</pre>
]]></content:encoded>
			<wfw:commentRss>http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e9%97%9c%e6%96%bcpymssql-%e7%9a%84%e7%b7%a8%e7%a2%bc%e5%95%8f%e9%a1%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于jQuery 和一些兼容性问题</title>
		<link>http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e5%85%b3%e4%ba%8ejquery-%e5%92%8c%e4%b8%80%e4%ba%9b%e5%85%bc%e5%ae%b9%e6%80%a7%e9%97%ae%e9%a2%98/</link>
		<comments>http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e5%85%b3%e4%ba%8ejquery-%e5%92%8c%e4%b8%80%e4%ba%9b%e5%85%bc%e5%ae%b9%e6%80%a7%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 10:16:38 +0000</pubDate>
		<dc:creator>Copy Liu</dc:creator>
				<category><![CDATA[開發日誌]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://copyliu.org/blog/?p=412</guid>
		<description><![CDATA[最近学了一些关于jQuery的玩意, 不得不说这东西实在好强力, 连我这个看javascript不爽的人都觉得这简直是神器.

这里说一下一个关于防止页面表单重复提交的事情.]]></description>
			<content:encoded><![CDATA[<p>最近学了一些关于jQuery的玩意, 不得不说这东西实在好强力, 连我这个看javascript不爽的人都觉得这简直是神器.</p>
<p>这里说一下一个关于防止页面表单重复提交的事情.<br />
<span id="more-412"></span><br />
最开始的想法是猛拍按钮之后就把按钮禁掉变灰, 这样就不能提交多次了, 这在Firefox中运行得很好, 到了IE就杯具, 原因估计是IE在猛拍按钮之后还会检测一次按钮的状态, 如果在猛拍的同时disable掉按钮的话就杯具. 表单不会提交,</p>
<p>解决方法如下</p>
<pre class="brush:js">setTimeout(function()
				{$("#sub").attr("disabled","true");}
                    ,100)</pre>
<p>定义100毫秒后才禁用按钮, 这样既能让IE检测出按钮状态, 又可以达到防止提交的目的</p>
]]></content:encoded>
			<wfw:commentRss>http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e5%85%b3%e4%ba%8ejquery-%e5%92%8c%e4%b8%80%e4%ba%9b%e5%85%bc%e5%ae%b9%e6%80%a7%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>手癢把手機升級到2.2</title>
		<link>http://copyliu.org/blog/uncategorized/%e6%89%8b%e7%99%a2%e6%8a%8a%e6%89%8b%e6%a9%9f%e5%8d%87%e7%b4%9a%e5%88%b02-2/</link>
		<comments>http://copyliu.org/blog/uncategorized/%e6%89%8b%e7%99%a2%e6%8a%8a%e6%89%8b%e6%a9%9f%e5%8d%87%e7%b4%9a%e5%88%b02-2/#comments</comments>
		<pubDate>Sun, 16 Jan 2011 09:48:19 +0000</pubDate>
		<dc:creator>Copy Liu</dc:creator>
				<category><![CDATA[杂七杂八]]></category>

		<guid isPermaLink="false">http://copyliu.org/blog/?p=408</guid>
		<description><![CDATA[現在還沒有完美的ext2的模組, 暫時先這麼用著,]]></description>
			<content:encoded><![CDATA[<p><a href="http://copyliu.org/blog/wp-content/uploads/2011/01/device1.png"><img class="alignnone size-medium wp-image-409" title="device" src="http://copyliu.org/blog/wp-content/uploads/2011/01/device1-168x300.png" alt="" width="168" height="300" /></a></p>
<p>現在還沒有完美的ext2的模組, 暫時先這麼用著,</p>
]]></content:encoded>
			<wfw:commentRss>http://copyliu.org/blog/uncategorized/%e6%89%8b%e7%99%a2%e6%8a%8a%e6%89%8b%e6%a9%9f%e5%8d%87%e7%b4%9a%e5%88%b02-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>來了! Android使用感受</title>
		<link>http://copyliu.org/blog/android/%e4%be%86%e4%ba%86-android%e4%bd%bf%e7%94%a8%e6%84%9f%e5%8f%97/</link>
		<comments>http://copyliu.org/blog/android/%e4%be%86%e4%ba%86-android%e4%bd%bf%e7%94%a8%e6%84%9f%e5%8f%97/#comments</comments>
		<pubDate>Sat, 08 Jan 2011 15:32:50 +0000</pubDate>
		<dc:creator>Copy Liu</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Minestone]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[手机]]></category>
		<category><![CDATA[手機]]></category>

		<guid isPermaLink="false">http://copyliu.org/blog/android/%e4%be%86%e4%ba%86-android%e4%bd%bf%e7%94%a8%e6%84%9f%e5%8f%97/</guid>
		<description><![CDATA[爪機是Milestone, 之前的文章有說過一下, 現在聊聊使用感受. 機子本身就不說了, 這也不是我所看重的地方, 據說最近一陣子最高性價比的Android機器就是MS, 於是就買下來而已. 我看中的是Android這個平臺. Android有一個Linux的核心, 刷了OpenRecovery且root過之後, 整台機器的折騰性就提高了不止一個檔次, 特別是Recovery模式下的console配合實體鍵盤加ADB數據線console, 可以說只要能進Recovery機器就是不死的. busybox很強大, 基本的shell命令和語法都齊全了, 系統的文件系統也支持symbol link鏈接, 要玩app2sd之類的非常輕易. 談一下一些高級的設置=w= 首先是字體, 對於我來講, 替換DroidSansFallback是一個非常不明智的決定, 考慮到存在DroidSans和DroidSans-Bold兩個字體科, 我決定把他們分別替換成微軟正黑和微軟正黑粗體, 來實現粗細分明的中文字. DroidSansFallback保留原版. 替換過程中遇到了/system分區空間不足的問題. 是的, /system文件系統只有20M左右的剩餘空間, 不足放入正黑和正黑粗體, 我的解決辦法是在/data文件系統建立fonts文件夾, 然後把/system/fonts/整個目錄內容複製進去, 刪除/system/fonts目錄, 然後做一個軟連接到/data/fonts., 下面是一張使用正黑體的效果圖, 可以清楚看出一些部份系統調用了粗體, 非常好看. 做了app2sd之後如何更換內存卡? 關手機拔卡 首先使用讀卡器, 使用Ghost將每一個分區單獨Ghost出來(你喜歡用Disk to Image也行), 然後換新卡分好區之後馬上把卡內容還原進去. 期間切勿不要開機, 如果你需要開機的, 請看下面 如果 你希望在買卡的時候把新卡放進手機測試一下再導數據怎麼辦? 首先在Recovery模式(推薦), 進入/data目錄 建立/data/app2,/data/app-private2,/data/dalvik-cache2 三個目錄, 然後將這個腳本丟進去, 用root執行一次, <a href='http://copyliu.org/blog/android/%e4%be%86%e4%ba%86-android%e4%bd%bf%e7%94%a8%e6%84%9f%e5%8f%97/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>爪機是Milestone, <a href="http://copyliu.org/blog/my_home/%e6%96%b0%e6%89%8b%e6%9c%ba%e5%88%b0%e6%89%8b%ef%bc%8c%e7%ae%97%e6%98%af%e5%9c%a3%e8%af%9e%e7%a4%bc%e7%89%a9%e5%90%a7/">之前的文章</a>有說過一下, 現在聊聊使用感受.</p>
<p>機子本身就不說了, 這也不是我所看重的地方, 據說最近一陣子最高性價比的Android機器就是MS, 於是就買下來而已. 我看中的是Android這個平臺.</p>
<p>Android有一個Linux的核心, 刷了OpenRecovery且root過之後, 整台機器的折騰性就提高了不止一個檔次, 特別是Recovery模式下的console配合實體鍵盤加ADB數據線console, 可以說只要能進Recovery機器就是不死的. busybox很強大, 基本的shell命令和語法都齊全了, 系統的文件系統也支持symbol link鏈接, 要玩app2sd之類的非常輕易.</p>
<p>談一下一些高級的設置=w=</p>
<p>首先是字體, 對於我來講, 替換DroidSansFallback是一個非常不明智的決定, 考慮到存在DroidSans和DroidSans-Bold兩個字體科, 我決定把他們分別替換成微軟正黑和微軟正黑粗體, 來實現粗細分明的中文字. DroidSansFallback保留原版.</p>
<p>替換過程中遇到了/system分區空間不足的問題. 是的, /system文件系統只有20M左右的剩餘空間, 不足放入正黑和正黑粗體, 我的解決辦法是在/data文件系統建立fonts文件夾, 然後把/system/fonts/整個目錄內容複製進去, 刪除/system/fonts目錄, 然後做一個軟連接到/data/fonts.,</p>
<p>下面是一張使用正黑體的效果圖, 可以清楚看出一些部份系統調用了粗體, 非常好看.</p>
<p><a href="http://copyliu.org/blog/wp-content/uploads/2011/01/device.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="device" src="http://copyliu.org/blog/wp-content/uploads/2011/01/device_thumb.png" border="0" alt="device" width="480" height="854" /></a></p>
<p>做了app2sd之後如何更換內存卡?</p>
<p>關手機拔卡</p>
<p>首先使用讀卡器, 使用Ghost將每一個分區單獨Ghost出來(你喜歡用Disk to Image也行), 然後換新卡分好區之後馬上把卡內容還原進去. <strong>期間切勿不要開機, </strong>如果你需要開機的, 請看下面</p>
<p>如果 你希望在買卡的時候把新卡放進手機測試一下再導數據怎麼辦?</p>
<p>首先在Recovery模式(推薦), 進入/data目錄 建立/data/app2,/data/app-private2,/data/dalvik-cache2 三個目錄, 然後將這個腳本丟進去, 用root執行一次, 臨時撤銷app2sd, 然後換新卡開機, <strong>切記不要安裝任何軟件</strong>, 該測試的測試完, 趕緊關機分區ghost數據, 然後再執行一次剛才那個腳本切換回app2sd模式, 開機即可.</p>
<pre class="brush:shell">#!/system/bin/sh

mv /data/app /data/app1
mv /data/app-private /data/app-private1
mv /data/dalvik-cache /data/dalvik-cache1
mv /data/app2 /data/app
mv /data/app-private2 /data/app-private
mv /data/dalvik-cache2 /data/dalvik-cache
mv /data/app1 /data/app2
mv /data/app-private1 /data/app-private2
mv /data/dalvik-cache1 /data/dalvik-cache2</pre>
<p>如果, 我在用新卡的時候不小心裝了軟件, 用回來舊卡數據和app的時候發現所有程序都運行不了了怎麼辦,</p>
<p>恩 我就是遇到這種問題, 這個時候, 你應該進入/data/app目錄, 將所有的apk重新安裝一次 或使用usb調試模式  adb shell 下 pm install –r yourapp.apk, 或把所有的apk取出來(把剛才的ghost鏡像用ghostexp取出文件)后adb install –r yourapp.apk. 或在/data/app下使用這個腳本&#8230;</p>
<pre class="brush:shell">#!/system/bin/sh
LINE=`ls *.apk|wc -l`
THIS=1

for FILE in `ls  *.apk`; do
  if [ -f "$FILE" ]; then
  echo $LINE "/" $THIS "          " $FILE
  pm install -r $FILE
  THIS=$(($THIS+1))
  fi
done</pre>
<p>另外 重新安裝所有程序的話 根據機體體質差異會死機好幾次, 所以最好還是使用手工或半自動方式來安裝.</p>
]]></content:encoded>
			<wfw:commentRss>http://copyliu.org/blog/android/%e4%be%86%e4%ba%86-android%e4%bd%bf%e7%94%a8%e6%84%9f%e5%8f%97/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>关于使用Python捣鼓短信猫</title>
		<link>http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e5%85%b3%e4%ba%8e%e4%bd%bf%e7%94%a8python%e6%8d%a3%e9%bc%93%e7%9f%ad%e4%bf%a1%e7%8c%ab/</link>
		<comments>http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e5%85%b3%e4%ba%8e%e4%bd%bf%e7%94%a8python%e6%8d%a3%e9%bc%93%e7%9f%ad%e4%bf%a1%e7%8c%ab/#comments</comments>
		<pubDate>Sat, 08 Jan 2011 06:49:34 +0000</pubDate>
		<dc:creator>Copy Liu</dc:creator>
				<category><![CDATA[開發日誌]]></category>
		<category><![CDATA[短信猫]]></category>
		<category><![CDATA[程序猿]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://copyliu.org/blog/?p=393</guid>
		<description><![CDATA[首先你需要有 python-messaging, 除非你想自己写一大堆的pdu解码编码吧, 当然还需要pySerial...用来和串口通讯,]]></description>
			<content:encoded><![CDATA[<p>首先你需要有 python-messaging, 除非你想自己写一大堆的pdu解码编码吧</p>
<p><a class="linkification-ext" title="Linkification: https://github.com/pmarti/python-messaging" href="https://github.com/pmarti/python-messaging">https://github.com/pmarti/python-messaging</a><br />
安装依赖是setup-tools, 因为安装脚本依赖他来解决其他依赖=_=.</p>
<p>当然还需要pySerial&#8230;用来和串口通讯,</p>
<p>这里假设ser是你的串口对象, 带timeout的设定(否则你就华丽丽等卡死吧23333)</p>
<p>发短信</p>
<pre class="brush:py">from messaging.sms import SmsSubmit
from messaging.sms.deliver import SmsDeliver

pdu = SmsSubmit(number, text).to_pdu()[0]
ser.write('AT+CMGS=%d\r' % pdu.length)
ser.readlines()
ser.write('%s\x1a' % pdu.pdu)
for i in range(100):
	a = self.ser.readlines()
	for line in a :
		#print line
		if "OK" in line:
		    print "SUCC"
		    break
		if "ERROR" in line:
		    print "ERROR"
		    break</pre>
<p>收短信</p>
<pre class="brush:py">from messaging.sms import SmsSubmit
from messaging.sms.deliver import SmsDeliver

ser.write('AT+CMGL=0\r')
time.sleep(0.5)
recv_once = ser.read(1000)
recv = ''
while recv_once:
	recv = recv + recv_once
	recv_once = self.ser.read(1000)
	time.sleep(0.1)

for line in recv.split():
	try:
		sms = SmsDeliver(line.strip())
		print sms.number, sms.text
	except:
		pass</pre>
<p>这里收的是所谓的未读短信, 执行过AT+CMGL=0之后就算已读了, 要AT+CMGL=4才能找到了&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e5%85%b3%e4%ba%8e%e4%bd%bf%e7%94%a8python%e6%8d%a3%e9%bc%93%e7%9f%ad%e4%bf%a1%e7%8c%ab/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>关于PyQt4连接数据库的一些内容</title>
		<link>http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e5%85%b3%e4%ba%8epyqt4%e8%bf%9e%e6%8e%a5%e6%95%b0%e6%8d%ae%e5%ba%93%e7%9a%84%e4%b8%80%e4%ba%9b%e5%86%85%e5%ae%b9/</link>
		<comments>http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e5%85%b3%e4%ba%8epyqt4%e8%bf%9e%e6%8e%a5%e6%95%b0%e6%8d%ae%e5%ba%93%e7%9a%84%e4%b8%80%e4%ba%9b%e5%86%85%e5%ae%b9/#comments</comments>
		<pubDate>Sat, 08 Jan 2011 06:39:10 +0000</pubDate>
		<dc:creator>Copy Liu</dc:creator>
				<category><![CDATA[開發日誌]]></category>
		<category><![CDATA[程序猿]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[pyqt]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[数据库]]></category>

		<guid isPermaLink="false">http://copyliu.org/blog/?p=391</guid>
		<description><![CDATA[def connectdb(): name = "db" + hashlib.md5(str(time.time())).hexdigest()[0:4] db = QtSql.QSqlDatabase.addDatabase("QMYSQL", name) db.setHostName(dbcfg['server']); db.setPort(dbcfg['port']) db.setDatabaseName(dbcfg['dbname']) db.setUserName(dbcfg['dbuser']) db.setPassword(dbcfg['dbpw']) db.setConnectOptions("CLIENT_COMPRESS=1;MYSQL_OPT_RECONNECT=1;") dbstatus = db1.open() if not dbstatus: return None else: return db 这是一段连接到MYSQL数据库的函数 这里要指出的是 db.setConnectOptions("CLIENT_COMPRESS=1;MYSQL_OPT_RECONNECT=1;") 这行, 设定自动重连接恩 至于如何判断数据库断开, class dbthread(QtCore.QThread): def __init__(self, parent=None): QtCore.QThread.__init__(self) def go (self): self.start() disconn = 0 def run(self): query=QtSql.QSqlQuery(db=db) query.exec_(QtCore.QString('''SHOW STATUS LIKE 'Uptime';''')) print <a href='http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e5%85%b3%e4%ba%8epyqt4%e8%bf%9e%e6%8e%a5%e6%95%b0%e6%8d%ae%e5%ba%93%e7%9a%84%e4%b8%80%e4%ba%9b%e5%86%85%e5%ae%b9/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<pre class="brush:py">def connectdb():
    name = "db" + hashlib.md5(str(time.time())).hexdigest()[0:4]
    db = QtSql.QSqlDatabase.addDatabase("QMYSQL", name)
    db.setHostName(dbcfg['server']);
    db.setPort(dbcfg['port'])
    db.setDatabaseName(dbcfg['dbname'])
    db.setUserName(dbcfg['dbuser'])
    db.setPassword(dbcfg['dbpw'])
    db.setConnectOptions("CLIENT_COMPRESS=1;MYSQL_OPT_RECONNECT=1;")
    dbstatus = db1.open()
    if not dbstatus:
        return None
    else:
        return db</pre>
<p>这是一段连接到MYSQL数据库的函数</p>
<p>这里要指出的是</p>
<pre>db.setConnectOptions("CLIENT_COMPRESS=1;MYSQL_OPT_RECONNECT=1;")
这行, 设定自动重连接恩

至于如何判断数据库断开,
<pre class="brush:py">class dbthread(QtCore.QThread):
    def __init__(self, parent=None):
        QtCore.QThread.__init__(self)
    def go (self):
        self.start()
    disconn = 0
    def run(self):
        query=QtSql.QSqlQuery(db=db)
        query.exec_(QtCore.QString('''SHOW STATUS LIKE 'Uptime';'''))
        print "db.isOpen()",db.isOpen()
        status=query.next()
        if not  status:
            self.emit(QtCore.SIGNAL("debug(QString)"), u"数据库断开, 正在重连...")
            self.disconn = 1
        elif self.disconn:
            self.emit(QtCore.SIGNAL("debug(QString)"), u"重连接成功")
            self.disconn = 0</pre>
<p>写个定时器去运行吧</p>
<p>原来使用的是可怕到死的硬替换, 非常容易崩溃, 换成这样去做就基本不崩溃了</pre>
]]></content:encoded>
			<wfw:commentRss>http://copyliu.org/blog/%e9%96%8b%e7%99%bc%e6%97%a5%e8%aa%8c/%e5%85%b3%e4%ba%8epyqt4%e8%bf%9e%e6%8e%a5%e6%95%b0%e6%8d%ae%e5%ba%93%e7%9a%84%e4%b8%80%e4%ba%9b%e5%86%85%e5%ae%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

