• IndentationError: unindent does not match any outer indentation level

    果然是缩进的问题
    参见[http://www.cnblogs.com/dczsf/archive/2009/03/06/1404515.html]
    郁闷了一会儿,我本来想定义一个类对象的成员变量,结果出现了这样的问题,我还以为是语法错误呢

    Python中分类的成员变量和对象的成员变量
    类的成员变量和C++中的静态成员变量相同,由该类的所有对象(实例)共享。
    对象的成员变量和C++中的普通成员变量相同,由对象(实例)独享
    阅读全文 »

    2010-03-24 | 分类目录:开发技术 | 标签:
    阅读(2,503) 评论(0)
  • 输入法编程学习笔记

    启程输入法的作者有一篇文章,介绍了输入法编程编码的入门知识,并提供了一个输入法程序框架源代码,强烈推荐[http://www.setoutsoft.cn/Html/?256.html]

    IME是什么?IME是在Windows平台上使用的标准的输入法接口规范。
    编写输入法程序(非外挂式)就是实现指定的接口并在DLL中到处这些接口函数供系统调用。
    以下为接口函数名称及描述,原型及实现请参照启程输入法作者提供的源代码
    阅读全文 »

    2010-03-24 | 分类目录:开发技术 | 标签:
    阅读(1,140) 评论(0)
  • GCC参数-D的使用

    在编译程序的时候可以使用-D来定义一个宏开关-Dmacro,等同于C中的#define macro
    或者定义一个变量,-Dmacro=1,等同于C中的#define macro 1,不过请注意,变量的值只能是数字,不能是字符串

    不过对我来说数字就够用了,哈哈

    因为最近我重新设计以前的系统,不同的模块连接不同的数据库,我不想在代码中硬编码指定一个数据库连接,总之需求比较特殊,因为是维护以前的系统,也不能全部重新编码,哈哈,有了这个发现我就可以省下很多力气了

    2010-03-22 | 分类目录:C/C++开发技术 | 标签:
    阅读(1,383) 评论(1)
  • 写注释的宏,vs6.0和vs2003两个版本的

    以前发表在CSDN Blog中的,今天用到转发此地。

    http://blog.csdn.net/wuhuiran/archive/2008/05/10/2427419.aspx

     

    一,vc6.0版本
    ‘——————————————————————————
    ‘FILE DESCRIPTION: New Macro File
    ‘——————————————————————————
    Sub filedescmacros()
    ‘DESCRIPTION: A description was not provided.

    ‘Begin Recording
    ActiveDocument.Selection = "/"
    ActiveDocument.Selection = "******************************************************************"
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "*"
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "* Copyright (c) 2008, xxxxx有限公司"
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "* All rights reserved."
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "*"
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "* 文件名称:" + ActiveDocument.Name
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "* 摘   要: "
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "*"
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "* 当前版本:1.0"
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "* 作    者:吴会然"
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "* 完成日期:" + CStr(Date())
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "*"
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "* 取代版本:"
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "* 原  作者:"
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "* 完成日期:"
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "*"
    ActiveDocument.Selection.NewLine
    ActiveDocument.Selection = "*"
    ActiveDocument.Selection = "*****************************************************************/"
    ActiveDocument.Selection.LineUp dsMove, 10
    ‘End Recording
    End Sub

    阅读全文 »

    2010-03-14 | 分类目录:开发技术 | 标签:
    阅读(879) 评论(0)
  • 进程Bin1加载So1、So2,同时So2也加载So1,会有什么样的表现呢?

    我的初衷是这样的,有一个so1模块实现数据库连接池的管理,其他业务实现so2中需要用到连接池so1,又因为连接池只能有一个,所以连接池在进程Bin1中创建并管理,在so2中获取连接池,实际上就是Bin1中调用so1创建的连接池,哈哈,我的问题解决了。

    我的想法是,因为在进程Bin1的一个业务中,会用到多个数据库的连接(多个不同的数据库呃),那么Bin1中创建一个session(session的代码中so1中),用当前线程id作为session的标识,在so2中的业务代码中根据线程id获取到session信息,需要获取什么类型的数据库连接由so2的具体业务确定,获取到连接之后注册到当前session,这样当业务取消或失败的时候,可以统一的abort数据库操作。

    测试代码很简单,在dll1.so中是一个单例模式的类

    在bin1中创建单例对象,并执行一个增加int的函数

    dll2.so中只有一个函数,获取单例并返回一个int值

    从结果我们可以发现,实际上dll2.so中使用的单例对象就是bin1中创建的单例对象

    测试代码:下载

    2010-03-14 | 分类目录:C/C++ | 标签:
    阅读(611) 评论(0)
  • Python列出目录树并实现排序

    指定目录排序列出目录树并写入文件中

    #! /usr/bin/env python
     
    import os
    import sys
     
    def list_and_sort( path ):
        dirs = sorted([d for d in os.listdir(path) if os.path.isdir(path + os.path.sep + d)])
        dirs.extend(sorted([f for f in os.listdir(path) if os.path.isfile(path + os.path.sep + f)]))
        return dirs;
     
    def listdir(space, dir,file):
        if space == '':
            file.write(dir + '\n' )
        prev = space
    #list = os.listdir(dir)
        list = list_and_sort( dir )
        for line in list:
            filepath = os.path.join(dir,line)
            if os.path.isdir(filepath):
                if line.find( '.svn' ) >= 0:
                    continue
                space = prev + '--'
                file.write( space + line + '\n' )
                listdir( space, filepath, myfile )
            elif os.path:
                ext = os.path.splitext(os.path.join(line) )[1].lower()
                if ext == '.o':
                    continue
                space = prev + '--'
                myfile.write( space + line + '\n' )
     
    dir = raw_input('please input the path:')
    myfile = open('filelist.txt','w')
    listdir( '', dir, myfile )
    2010-03-11 | 分类目录:开发技术 | 标签:
    阅读(1,215) 评论(0)
  • 【转】查看oracle当前连接数

    【转自】http://www.blogjava.net/temper/archive/2009/03/24/261657.html

    怎样查看oracle当前的连接数呢?只需要用下面的SQL语句查询一下就可以了。
    select * from v$session where username is not null

    select username,count(username) from v$session where username is not null group by username #查看不同用户的连接数

    阅读全文 »

    2010-03-10 | 分类目录:数据库 | 标签:
    阅读(712) 评论(0)
  • Oracle创建同义词(synonym)

    建立一个同义词可以排除一个对象名字的限制
    如果你的数据库有多个用户,USER_A要访问USER_B的TABLE1,只能使用USER_B.TABLE1
    建一个同义词abc指向USER_B.TABLE1,那你就可以select * from abc了,而且public的同义词会直接出现在所有用户的面前,开发不就方便多了~

    create synonym table1 for schema1.table1

    grant select on table1 to use1;为一个用户指定对目标的权限

    2010-03-04 | 分类目录:开发技术 | 标签:
    阅读(1,197) 评论(0)
  • Linux动态库(.so)搜索路径(目录)设置方法

    在Linux 中,动态库的搜索路径除了默认的搜索路径外,还可通过三种方法来指定:方法一:在配置文件/etc/ld.so.conf中指定动态库搜索路径;方法二:通过环境变量LD_LIBRARY_PATH指定动态库搜索路径;方法三:在编译目标代码时指定该程序的动态库搜索路径。
    众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动 态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函数,以及该动态库的其它资源了。在Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三种方法来指定。

    阅读全文 »

    2010-03-02 | 分类目录:开发技术 | 标签:
    阅读(2,353) 评论(0)
  • linux下查找并删除

    find ./ -name *~ | xargs rm -f

    删除当前目录及子目录下的所有文件名以~结尾的文件

    xargs – build and execute command lines from standard input

    在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是”参数列太长”或”参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。

    find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

    在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;

    而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。

    阅读全文 »

    2010-02-08 | 分类目录:开发技术 | 标签:
    阅读(1,478) 评论(0)