比較典型的新手切法是看起來沒用的5s切出去.

事實上在tenhou.net/2/上可知, 數學上的最優解也是切5s,

但是我在貼吧上看到很多特上和鳳凰都不建議切5s, 更建議切9p

 

http://tieba.baidu.com/p/1197110420?pn=1

 

這個帖子上有更多討論

 

最近两个月在研究一样从来没接触过的玩意,淫光娘(silverlight程序开发),不得不说微软的蓝泽光计划把我们几个死程同事完全击坠啊…

公司一个新项目下来,我们以使用新技术来做借口着手开发银光程序。

我自己从来没有真正写过c#,一下子从没有.net基础直接开发sl4的程序果然很难起步,不过一个月使用下来已经有很好的掌握了。接着下来就是深入www

sl4这玩意想法真心不错,可惜网页上的动画交互已经被flash完全垄断。不过flash很难在网页上做出可以和winform相匹配的玩意,sl可以说是补足了。(java?那玩意能吃么)

长期上来看flash和sl都会被html5和新的js库所代替,不过sl要在大家一起死之前还是很难获得一个可观的占有率。微软把sl作为wp7的画面控件可谓是省了微软和开发人员不少事情。

 

如题,总觉得现在如果需要雀力向上的话就必须慢慢记录各种日麻点滴,总结经验,可能会频繁更新。见证自己雀力向上!

 

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需要

 

獲得源碼之後就setup.py build -c mingw32吧 然後install

一切都是輕車熟路

 

問題來了

你會驚訝的發現他連不上任何數據庫

在新版本中, 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路徑

 

 

然後就可以connect到host=myserver即可到達192.168.0.16了

 

 

 

有這麼一個數據表, 某字段用的varchar()

 

有那麼一個pymssql 這尼瑪connect的時候只能用utf8

 

然後select 出來的居然是 unicode 類型的 gbk編碼過的字符串

然後就有了這麼一個東西 將unicode類型的字符串轉換成普通的字符串 用來decode啥的

def fuckmssqlencode(s):
    return ''.join(map(chr, map(ord, s)))
 

最近学了一些关于jQuery的玩意, 不得不说这东西实在好强力, 连我这个看javascript不爽的人都觉得这简直是神器.

这里说一下一个关于防止页面表单重复提交的事情.
Continue reading »

 

現在還沒有完美的ext2的模組, 暫時先這麼用著,

 

爪機是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.,

下面是一張使用正黑體的效果圖, 可以清楚看出一些部份系統調用了粗體, 非常好看.

device

做了app2sd之後如何更換內存卡?

關手機拔卡

首先使用讀卡器, 使用Ghost將每一個分區單獨Ghost出來(你喜歡用Disk to Image也行), 然後換新卡分好區之後馬上把卡內容還原進去. 期間切勿不要開機, 如果你需要開機的, 請看下面

如果 你希望在買卡的時候把新卡放進手機測試一下再導數據怎麼辦?

首先在Recovery模式(推薦), 進入/data目錄 建立/data/app2,/data/app-private2,/data/dalvik-cache2 三個目錄, 然後將這個腳本丟進去, 用root執行一次, 臨時撤銷app2sd, 然後換新卡開機, 切記不要安裝任何軟件, 該測試的測試完, 趕緊關機分區ghost數據, 然後再執行一次剛才那個腳本切換回app2sd模式, 開機即可.

#!/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

如果, 我在用新卡的時候不小心裝了軟件, 用回來舊卡數據和app的時候發現所有程序都運行不了了怎麼辦,

恩 我就是遇到這種問題, 這個時候, 你應該進入/data/app目錄, 將所有的apk重新安裝一次 或使用usb調試模式  adb shell 下 pm install –r yourapp.apk, 或把所有的apk取出來(把剛才的ghost鏡像用ghostexp取出文件)后adb install –r yourapp.apk. 或在/data/app下使用這個腳本…

#!/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

另外 重新安裝所有程序的話 根據機體體質差異會死機好幾次, 所以最好還是使用手工或半自動方式來安裝.

 

首先你需要有 python-messaging, 除非你想自己写一大堆的pdu解码编码吧

https://github.com/pmarti/python-messaging
安装依赖是setup-tools, 因为安装脚本依赖他来解决其他依赖=_=.

当然还需要pySerial…用来和串口通讯,

这里假设ser是你的串口对象, 带timeout的设定(否则你就华丽丽等卡死吧23333)

发短信

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

收短信

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

这里收的是所谓的未读短信, 执行过AT+CMGL=0之后就算已读了, 要AT+CMGL=4才能找到了…

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

写个定时器去运行吧

原来使用的是可怕到死的硬替换, 非常容易崩溃, 换成这样去做就基本不崩溃了

© 2012 Copy S. Liu 的部落格 Suffusion theme by Sayontan Sinha