作者: admin

  • 一个内部局域网投票程序的初步设计

    最近准备学习dotnet,要有一些代码练练手。看好了sliverlight或者wpf,毕竟是下一代显示技术。

    基本设想如下,客户端运行程序,读取数据,动态生成投票(或者是survey)界面,运行,保存,然后将数据传回服务器端。

    技术问题不算多,也有,比如sliverlight其实是没法直接连接数据库的,这个从安全角度也说得通。所以就要引入WCF或者RIAService技术,又多了一层曲线要学。

    如何让读取保存数据过程更简单,容易实现?我想到了ironpython。

    下载了最新版本的ironpython,搜索一下xmlrpc就能找到这篇文章:

    http://www.ibm.com/developerworks/library/ws-pyth10.html

    其中服务器代码如下:

    import calendar, SimpleXMLRPCServer

    #The server object
    class Calendar:
        def getMonth(self, year, month):
            return calendar.month(year, month)

        def getYear(self, year):
            return calendar.calendar(year)

    calendar_object = Calendar()
    server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8888))
    server.register_instance(calendar_object)

    #Go into the main listener loop
    print "Listening on port 8888"
    server.serve_forever()

    客户端代码如下

    import xmlrpclib

    server = xmlrpclib.ServerProxy("http://localhost:8888")

    month = server.getMonth(2002, 8)
    print month

    主要是python的标准库实现了xmlrpc机制,而WCF技术说白了,也就是类似XMLRPC这样的remote process calling技术,换个马甲我就不认识你了么?

    应该也可以通过dotnet framework,没那兴趣继续研究,就到这里吧。

    ironpython应用于WPF的文章也很多,有机会试验了以后写出来。

    image

  • 使用Lua编写Utility的一些小贴士

    string trim功能

     1: function string_trim(s)

     2: if s == nil then

     3: return

     4: end

     5:  

     6: return (string.gsub(s, "^%s*(.-)%s*$", "%1"))

     7: end

    检查某个字符串是不是指向合法目录。

     1: function check_directory(s)

     2: s = string_trim(s)

     3: if not s or s == "" then

     4: return false

     5: end

     6:  

     7: if string.sub(s, -1, -1) == [[\]]then

     8: s = string.sub(s, 1, -2)

     9: end

     10:  

     11: local attr = lfs.attributes (s)

     12: if (attr and attr.mode == "directory") then

     13: return true

     14: end

     15:  

     16: return false

     17: end

    对于文件操作,最好先备份一下原来文件:

     1: local str = "copy \"" .. Folder .. '\\log.db' .. "\" \"" .. Folder .. '\\log.db' .. "." .. os.time() .. "\" /v /y"

     2:  

     3: os.execute(str)

    对于sqlite的操作,注意使用了一个自增myid作为key。

     1: Db1 = sqlitelua.open(upFolder .. '\\mainlog.db')

     2:  

     3: Db1:exec('CREATE TABLE newfiles(myid INTEGER PRIMARY KEY AUTOINCREMENT, myname, myfolder)')

     4:  

     5: local stmt1 = Db1:prepare[[ INSERT INTO newfiles VALUES (:myid, :myname, :myfolded) ]]

     6:  

     7: stmt1:bind_names{myname = new_name, myfolder = currentFolder}

     8:  

     9: stmt1:step()

     10: stmt1:reset()

     11: stmt1:finalize()

  • 《犯罪心理第五季》16 观后感

    1,当你外出的时候,时时抓住孩子的手。

    2,生在美国很幸福。如果这事情发生在中国,自求多福吧。

    3,要有信念。要有枪。

    4,斯德哥尔摩综合症是一种非常可怕的症状。实际上,你我现在都有这种症状。病人忘记了自己也有力量,也可以反抗。

    这一集没有什么血腥的场面,但是却让我毛骨悚然,比看前面剧集要印象深刻的多。因为看完了真的感觉害怕。

    Hope is the thing with feathers that perches in the soul

    and sings the tune without words and never stops at all.

    想看《犯罪心理》的朋友可以在pps或者风行上找到,很好看,强烈推荐。

  • 最近一些照片

    陆陆续续拍了两个卷,终于洗出来了,show出来看看。

    28950014 

    28950022

    这张不怎么清晰,但是感觉很温馨。

    28950023

    28950024

    28950030

    28950034

    28950036

    姐妹花。

         28930013

    28930014

    小姐妹。

    28930020

    28930023

    28930032

    最近的小辫子都是萌萌自己扎的。

    28930033