﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-socketref-随笔分类-perl/python/php/lua/tcl</title><link>http://www.cppblog.com/socketref/category/6607.html</link><description>opensource in my life!
Technical Engineer</description><language>zh-cn</language><lastBuildDate>Thu, 03 Jul 2008 20:55:16 GMT</lastBuildDate><pubDate>Thu, 03 Jul 2008 20:55:16 GMT</pubDate><ttl>60</ttl><item><title>python连接DB2</title><link>http://www.cppblog.com/socketref/archive/2008/07/04/55281.html</link><dc:creator>放屁啊狗</dc:creator><author>放屁啊狗</author><pubDate>Thu, 03 Jul 2008 17:28:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2008/07/04/55281.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/55281.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2008/07/04/55281.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/55281.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/55281.html</trackback:ping><description><![CDATA[公司的项目中有访问DB2数据的需求，我以前也只是听说DB2有这么个咚咚，据说也是个恐龙级的数据库。以前也没有用过DB2 在c语言的接口(访问oracle我一直用oci),网上一兜，才发现DB2有JDBC的访问接口，c方面的很少。<br>项目的工期比较紧，同时我也不想花太多的时间研究数据库访问接口，所以在项目中许多模块都是用python编写，开发周期短，调试，跨平台也是很吸引人，所以就用python拉。在python.org一搜索，便找到了pydb2,OK! 马上下载pydb1.2，一解开压缩包，原来是原代码，只能编译拉。还好有编译脚本:), 运行setup.py install<br>出现以下异常:<br>Compiling under Visual Studio .NET v7 recieves the<br>following error: <br><br>_db2_module.c(1855) : error C2036: 'SQLPOINTER' :<br>unknown size<br><br>This can be resolved by casting to (SQLCHAR *) instead<br>of a (void *): <br><br>&lt; SQLPOINTER buf = (SQLPOINTER)((SQLCHAR<br>*)bs-&gt;buf + (bs-&gt;bufLen * idx));<br><br>发现原来SQLCHAR类型没有找到，没问题，找到_db2_module.c:1855行修改为：<br>SQLPOINTER buf = (SQLPOINTER)((void *)bs-&gt;buf +<br>(bs-&gt;bufLen * idx)); <br>再次 setup.py install<br>ok，编译成功，db2.py的模块也被拷贝得到 $PYTHONHOME/lib/site_pakages/下去了<br>然后安装db2 client runtime<br>这样就完成了pydb2的运行配置。然后就在odbc中配置一个dsn<br>测试以下代码：<br><br>import DB2<br>conn = DB2.connect(dsn='sample', uid='db2inst1', pwd='secret')<br>无异常表示成功连接上DB2<br>之后访问数据库只要遵循python DBI2.0的规范就可以拉！<br>生活在python世界是很快乐的事情！<br><br>*注意: python2.4的话必须用vc7.1编译pydb2的扩展模块，因为python2.4(win32)也是用vc7.1编译的<br><br><br><br><img src ="http://www.cppblog.com/socketref/aggbug/55281.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁啊狗</a> 2008-07-04 01:28 <a href="http://www.cppblog.com/socketref/archive/2008/07/04/55281.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>lua-快速阅读</title><link>http://www.cppblog.com/socketref/archive/2008/05/13/49689.html</link><dc:creator>放屁啊狗</dc:creator><author>放屁啊狗</author><pubDate>Mon, 12 May 2008 19:13:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2008/05/13/49689.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/49689.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2008/05/13/49689.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/49689.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/49689.html</trackback:ping><description><![CDATA[<br>table 是个怪物，有很多facets,类似array,map,struct,整个是个混合物，用起来也比较怪异。<br>t={1,2,3,a="gen",b=100}<br>t={[0]=1;["name"]="ultra"}<br>t.a, t.b , t[0] , t["name"]<br><br>表操作函数: <br>ipairs,pairs迭代函数<br>table.getn(t)&nbsp;&nbsp;  len of table<br><br>================================================================<br>function() 可以接受任意多的参数，如果实参数过多将丢弃，过少将默认设置为nil<br>同样可以返回多个参数<br>a,b=foo()<br><br>表作为参数传递到function<br>function rename( arg ) os.rename(arg.old,arg.new) end<br>rename{old="";new=""}<br><br>匿名函数(lambda in python )<br>foo = function(x) return x*2 end<br>局部函数 local f=function(x) ... end<br>================================================================<br>for n=start,end,step do ... end<br>while b do&nbsp;&nbsp; ... end<br>repeat do .... until<br><br>if then .. elseif then ...&nbsp; end;<br><br>有意思的语法表达式: <br>&nbsp;&nbsp;&nbsp; print a or b or c&nbsp;&nbsp; 如果a=false,尝试b...<br><br>注释: --&nbsp;&nbsp;&nbsp;&nbsp; --{ --}&nbsp; <br><br><br>字符串操作:&nbsp;&nbsp;&nbsp; .. 连接<br><br>==================================================<br>io 函数: <br>loadfile('test.lua')()&nbsp;&nbsp;&nbsp; execute external lua script<br>loadstring('print 100')()<br><br><br>代码测试: <br>=======================<br><span style="color: red;">c程序调用lua函数</span><br>c 程序:<br>void call_lua_func(){<br>&nbsp;&nbsp;&nbsp; lua_State *s = lua_open();<br>&nbsp;&nbsp;&nbsp; luaL_openlibs(s);<br>&nbsp;&nbsp;&nbsp; int c = lua_gettop(s);<br>&nbsp;&nbsp;&nbsp; luaL_dofile(s,"/nandflashpartition/test1.lua");<br>&nbsp;&nbsp;&nbsp; lua_getglobal(s,"add");<br>&nbsp;&nbsp;&nbsp; lua_pushnumber(s,0.25);<br>&nbsp;&nbsp;&nbsp; lua_pushnumber(s,8);<br>&nbsp;&nbsp;&nbsp; if( lua_pcall(s,2,1,0)){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::cout&lt;&lt; lua_tostring(s,-1)&lt;&lt;std::endl;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; double r;<br>&nbsp;&nbsp;&nbsp; r = lua_tonumber(s,-1);<br>&nbsp;&nbsp;&nbsp; lua_close(s);<br>}<br>lua程序:<br>function add(x,y)<br>&nbsp;&nbsp;&nbsp; return x*y<br>end<br>--------------------------------<br><span style="color: red;">lua访问c程序空间变量</span><br><br>1.定义变量student.h<br>extern char * gender;<br>extern int class_count;<br><br>2.创建pkg文件 student.pkg<br>$#include "student.h"<br>extern char * gender;<br>extern int class_count;<br><br>3.产生tolua++存根框架<br>tolua++ -o student.pkg<br><br>4.创建lua测试代码 call_c.lua<br>print(gender)<br>print(class_count)&nbsp; 访问c 空间的变量<br><br>5.c测试代码<br>char * gender;<br>int class_count;<br>void lua_call_c(){<br>&nbsp;&nbsp;&nbsp; int&nbsp; tolua_student_open (lua_State* tolua_S);<br>&nbsp;&nbsp;&nbsp; lua_State * s = lua_open();<br>&nbsp;&nbsp;&nbsp; luaopen_base(s);<br><br>&nbsp;&nbsp;&nbsp; gender ="my gender is male!";<br>&nbsp;&nbsp;&nbsp; class_count = 100;<br>&nbsp;&nbsp;&nbsp; tolua_student_open(s);<br>&nbsp;&nbsp;&nbsp; luaL_dofile(s,"/nandflashpartition/call_c.lua");<br>&nbsp;&nbsp;&nbsp; lua_close(s);<br>}<br><br>6.build &amp;&amp; test it!<br><br><br><br>   <img src ="http://www.cppblog.com/socketref/aggbug/49689.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁啊狗</a> 2008-05-13 03:13 <a href="http://www.cppblog.com/socketref/archive/2008/05/13/49689.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>