自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

asmc51的专栏

这个,俺不专业啊

  • 博客(37)
  • 收藏
  • 关注

原创 python 编码 问题 UTF-8 unicode

<br /><br />每次遇到python处理含有中文的字符串时,utf-8, unicode, gb2312这些名词总是跳出来捣乱,然后经过网上一番搜索和烦恼的测试之后,才能最终解决问题。<br />可是,但是,可但是,这个问题在再一次遇到的时候,又是一番重复,烦不胜烦之下,记在案,常常来温习一下。(难道是我脑子不好了,没记性了,疲了???)<br /> <br />一些名词<br />ASCII - 一种编码方式<br />UNICODE - 又一种编码方式<br />UTF-8 - 又一种编码方式<

2010-06-12 15:49:00 5516

翻译 Boost.Interprocess翻译-一些基本概念

为了实现每个月发几篇的目的,这眼见着已是下半个月了,还一个没有呢。没有原创,就拿翻译顶数,力争将Boost.Interprocess部分都翻译出来。 翻译起因,我在boost的目录上飘荡了几个来回,拣感兴趣的看了看,发现这个Boost.Interprocess,这不是俺梦里想要实现的东西吗(现实中没这个能力),学习学习它,争取在造车的时候用上这个轮子。 Some basic

2010-04-17 23:37:00 5762

翻译 Boost.Interprocess翻译-快速入门

Quick Guide for the Impatient入门指南Using shared memory as a pool of unnamed memory blocksCreating named shared memory objectsUsing an offset smart pointer for shared memo

2010-04-17 21:54:00 5485

翻译 Boost.Interprocess翻译-简介

IntroductionBoost.Interprocess simplifies the use of common interprocess communication and synchronization mechanisms and offers a wide range of them:Boost.Interprocess简化了

2010-04-17 21:30:00 6075

原创 用python编写脚本从wireshark导出的数据文件中提取数据

上篇文章搭建了一个UDP多播程序的基础,所谓基础,就是看着它,我可以写简单的多播程序了,可以在这个基础上面开始工作了。  会多播了,多播的内容从哪里来,播出什么内容呢?呵呵,有个设备,没有通讯协议,用wireshark抓包,分析协议,编程实现之,这就是此次多播的任务。 启动wireshark,抓取数据包,导出为文本文件,三五十兆的文件,ultraedit搜索,观察,眼睛都看直了,有

2010-03-04 10:48:00 23187 11

原创 多播收发程序multicast

最近工作中编写UDP多播程序,要求能收能发。要求是非常简单了,但是从来没有这方面的经验,于是开始到网上翻,先看看基本的概念,再下载能用的代码,然后改成自己需要的,凡事都是三段论,三步走。 概念:多播:加入了同一个多播组的主机可以接受到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。主机可以向路由器请求加入或退出某个组,网络中的路由器和交换机有选择的复制并传输数

2010-03-02 15:47:00 5242 2

翻译 翻译:Boost.Asio基础剖析

 Basic Boost.Asio AnatomyBoost.Asio基础剖析Boost.Asio may be used toperform both synchronous and asynchronous operations on I/O objects such assockets. Before using Boost.Asio it may be useful t

2009-09-09 17:09:00 5509 1

原创 boost编译,vc8和vc9的问题

Boost 编译第一步:编译bjam 进入boost的tools/jam/src文件夹,执行build.bat批处理文件 编译完成后,拷贝编译出来的boost/tools/jam/src/bin.ntx86路径下的bjam.exe到boost根路径下。 第二步:编译boost在boost根路径下执行bjam,则编译全部boost库 我同样用的vc2005

2009-08-29 21:41:00 4935

原创 将C++对象导出到lua,C++和lua的相互调用

此例演示了如何将C++对象导出到lua,并且可以在lua脚本中给这个导出对象添加新方法。C++所编写的对象方法和lua脚本所编写的对象的方法在两种语言中都可以互相调用。此例演示了如下特征:导出方法写在Lunar::RegType Account::methods[]数组中Register函数将导出对象的方法存储在lua的全局表中,key为对象的类名称。push函数在lua栈上创建一个userd

2009-02-09 15:24:00 15123 2

原创 lua和C++相互交换数据

下面的代码演示了在C++和lua脚本之间传递数据。首先在C++中创建一个table,添加元素,然后放置到lua的全局表中。在lua脚本中可以使用C++创建的这个表。然后在脚本中创建一个表,以脚本返回值的方式返回给C++,在C++中可以读取表中的值。 例子代码需要一个args.lua的lua文件,要手工创建,我把它放到了C盘根目录下。// cpplua.cpp : Defines

2009-01-21 14:23:00 14750

原创 lua的数据结构

lua的数据结构table是Lua中唯一的数据结构,其他语言所提供的其他数据结构比如:arrays、records、lists、queues、sets等,Lua都是通过table来实现。 数组:a = {} -- new arrayfor i=1, 1000 do    a[i] = 0end  下标可以从任意数值开始比如:arr = {}for a=0.1,1

2009-01-12 16:44:00 7549 1

原创 python的时间格式化函数的参数

自己挑着用strftime使时间格式化。python的strftime格式是C库支持的时间格式的真子集。  %a 星期几的简写 Weekday name, abbr.  %A 星期几的全称 Weekday name, full  %b 月分的简写 Month name, abbr.  %B 月份的全称 Month name, full  %c 标准的日期的时间串 Complete date

2009-01-07 09:32:00 4916

转载 Lua使用者

突然想学习一点Lua的知识,以下内容从《Programming in Lua》中文翻译文档中拷贝。《Programming in Lua》的翻译由www.luachina.net完成。贴在这里,当作笔记。Lua使用者分为三大类:使用Lua嵌入到其他应用中的、独立使用Lua的、将Lua和C混合使用的。第一:很多人使用Lua嵌入在应用程序,比如CGILua(搭建动态网页)、LuaOrb(访问C

2008-11-19 00:26:00 4283

转载 python 产生随机数,随机字符串

原文:http://hi.baidu.com/boorag/blog/item/42ca9f826a993ca70df4d250.html  import randomimport string#随机整数:print random.randint(1,50)#随机选取0到100间的偶数:print random.randrange(0, 101, 2)#随机浮点数:print rand

2008-10-16 17:45:00 28606

原创 使用python操作串口

使用python操作串口 一、为了使用python操作串口,首先需要下载相关模块:1. pyserial (http://pyserial.wiki.sourceforge.net/pySerial)2. pywin32 (http://sourceforge.net/projects/pywin32/) 二、google “python 串口 操作”关键字,找到相

2008-10-13 14:29:00 13969 1

原创 OPC开发介绍,OPC SERVER列举和连接

  OPC是OLE for Process Control的缩写,即应用于工业控制OLE。OLE是Object Linking and Embedding的缩写,即对象的链接和嵌入。OLE是一种软件技术,最初为了实现复合文档,以COM/DCOM技术为基础。一提到OPC开发,首先给人的感觉是比较高深的技术,既需要COM/DCOM知识又需要了解OPC的技术标准,让人有些望而却步。其实“事情

2008-04-19 19:14:00 10177

原创 关于《Cairo Tutorial for Python Programmers 》

关于上一篇《Cairo Tutorial for Python Programmers 》的翻译翻译了一部分,还有部分没有翻译,也没有整理,只能凑合看了,先。 

2007-08-09 22:51:00 4241

翻译 Cairo Tutorial for Python Programmers

Cairo Tutorial for Python ProgrammersPython Programmers Cairo 教程by Michael Urman Cairo is a powerful 2d graphics library. This document introduces you to how cairo works and many of the function

2007-07-23 23:42:00 7336 1

翻译 《扩展和嵌入python解释器》2. 定义新类型

2 定义新类型正如上一章提到的,Python允许扩展模块的作者定义可以使用Python代码操作的新类型,就象Python内核中的string和list。这不困难;所有扩展类型的代码遵从一个模式,但有一些细节,你在开始之前必须明白。注意:定义新类型在Python 2.2中有非常大的变化(目的是为了更好)。本文档描述了如何为Python 2.2及其以后的版本定义新类型。如果你需要支持以前的

2006-10-08 23:59:00 5443 1

翻译 《扩展和嵌入python解释器》1.12 为扩展模块提供C API

1.12 为扩展模块提供C API(Providing a C API for an Extension Module)许多扩展模块仅仅提供Python使用的新函数和类型,但有时扩展模块的代码对其他模块有用。例如,一个扩展模块实现了新类型’collection’,功能象没有顺序的list一样。就象标准的Python list类型有运行扩展模块创建操作list的C API一样,这个新collec

2006-07-26 22:56:00 4950

翻译 《扩展和嵌入python解释器》1.11 用C++写Python扩展(Writing Extensions in C++)

1.11 用C++写Python扩展(Writing Extensions in C++)在一些严格应用里,可能用C++写扩展模块。如果主程序(Python解释器)被用C编译器编译连接,带构造函数全局或静态对象不能被使用。如果主程序是用C++编译器连接的,不存在这个问题。被Python解释器调用的函数(特别是模块初始化函数)必须用extern "C"声明。不必使用extern "C" {…}把

2006-07-26 22:35:00 3003

翻译 《扩展和嵌入python解释器》1.10.4 NULL指针(NULL Pointers)

1.10.4 NULL指针(NULL Pointers)一般,带有对象引用参数的函数不希望你传递给它们NULL指针,如果你传递NULL指针,会产生内核转储(dump core)(或者导致后面发生转储)。返回对象引用的函数一般只在表示异常发生时返回NULL。不检查参数是否是NULL的原因是函数经常传递它们收到的对象给其他的函数-如果每个函数都去检查参数是否是NULL,那会有很多冗余检查,并且代码

2006-07-26 22:33:00 2926

翻译 《扩展和嵌入python解释器》1.10.3 危险情况(Thin Ice)

1.10.3 危险情况(Thin Ice)有几种使用借用引用的情况,看上去没有坏处,但可能导致一些问题。所有这些和隐含求助解释器有关,这会导致引用拥有者清除引用。 第一个也是最重要导致这个问题的是关于Py_DECREF()使用在不相关对象,上,而对象是对列表对象的借用引用,如:  voidbug(PyObject *list){ PyObject *item

2006-07-26 22:32:00 4539

翻译 《扩展和嵌入python解释器》1.10.2 所有关系原则(Ownership Rules)

1.10.2 所有关系原则(Ownership Rules)无论何时对象的引用被传入函数或从函数传出,它是函数接口规范的一部分,无论拥有关系是被随引用转移与否。 大多数返回对象引用的函数传递一个所有关系的引用。 特别地,所有创建新对象的函速,如:PyInt_FromLong() 和 Py_BuildValue(),传递所有关系给接收者。 即使对象实际不是新建的,你还是接受对象新引用的所有关

2006-07-12 23:58:00 4521

翻译 《扩展和嵌入python解释器》1.10.1 Python中的引用计数

1.10.1 Python中的引用计数 有两个宏,Py_INCREF(x) 和 Py_DECREF(x), 用来处理增加和减少引用计数。 Py_DECREF(x)也可以在引用计数为0时释放对象。为灵活起见,它却不直接调用free(),它通过对象中的type object函数指针调用。为此(也有其他目的),每个对象也都包含指向本身类型对象的指针。 现在,最大的问题是:什么时候使用Py_INC

2006-07-12 23:46:00 5132 1

翻译 《扩展和嵌入python解释器》10.1. 引用计数

1.10 引用计数在象C或C++这样的语言中,程序员负责动态地在堆中申请和释放内存。在C语言中,使用malloc() 和free()函数,在C++中,使用操作符new和delete,本质上是相同的,下面,我们仅就C语言的情况进行讨论。 由 malloc()分配的内存最终应通过明确调用free()返回到可用内存池中。在正确的时候调用free()很重要。如果内存块地址忘记了而没有调用free(

2006-07-11 00:30:00 5020

翻译 《扩展和嵌入python解释器》1.9 构造任意值

1.9 构造任意值Py_BuildValue()函数和PyArg_ParseTuple()相同,声明如下:  PyObject *Py_BuildValue(char *format, ...);Py_BuildValue()函数和PyArg_ParseTuple()函数类似,识别一系列格式化单元,但参数(作为输入参数,而不是输出参数)必须不能是指针,而是值。函数返回一

2006-06-29 21:04:00 4764

翻译 《扩展和嵌入python解释器》1.8 扩展函数的关键字参数

1.8 扩展函数的关键字参数PyArg_ParseTupleAndKeywords()函数声明如下:  int PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict, char *format, char *kwlist[], ...);

2006-06-29 21:03:00 4939

翻译 《扩展和嵌入python解释器》1.7 在扩展函数中提取参数

1.7 在扩展函数中提取参数PyArg_ParseTuple() 函数声明如下:  int PyArg_ParseTuple(PyObject *arg, char *format, ...);arg参数必须是元组对象,该元组包含从Python传递到C函数的参数列表。 format参数的格式必须是一个格式化的字符串, 格式化字符串的语法在"Parsing argume

2006-06-29 21:02:00 5187

翻译 《扩展和嵌入python解释器》1.6 从C中调用Python函数

1.6 从C中调用Python函数到目前为止,我们关注的是从Python中可调用C函数。相反,从C中调用Python函数也是有用的。特别是在库支持回调函数的情况下。如果C接口使用回调,相应的,Python经常需要为Python 程序员提供回调机制;实现这种机制,将需要从C回调中调用Python回调函数。其他用法也可想像(Other uses are also imaginable)。幸运的

2006-06-29 21:01:00 6397

翻译 《扩展和嵌入python解释器》1.5 编译和连接

1.5 编译和连接在你使用扩展之前,有两件事情需要做:编译和与Python系统连接。如果你使用动态加载,细节依赖于你的系统用户的动态加载风格。关于详细信息,构造扩展模块参见(chapter 3),至于仅在WINDOWS上构造的其他相关信息,参见(chapter 4). 如果你不使用动态加载,或者说,你想使你的模块永久成为Python解释器的一部分,必须改变安装设置,并重新编译解释器,这在U

2006-06-21 21:39:00 4624

翻译 《扩展和嵌入python解释器》1.4 模块方法表和初始化函数

1.4 模块方法表和初始化函数下面,我演示如何从Python程序调用spam_system().首先,我们需要在’方法表’列出名称和地址: static PyMethodDef SpamMethods[] = { ... {"system", spam_system, METH_VARARGS, "Execute a shell command."},

2006-06-21 21:26:00 6062

翻译 《扩展和嵌入python解释器》1.3 回到例子中

1.3 回到例子回到我们的例子函数中,现在,你应该能够理解下面这些语句: if (!PyArg_ParseTuple(args, "s", &command)) return NULL;根据是否由PyArg_ParseTuple()函数设置了异常,如果在参数列表中检测到错误(异常被设置), 则函数返回NULL(函数返回对象指针的错误标识)。否则,参数的字符串值已

2006-06-21 20:32:00 4677

翻译 《扩展和嵌入python解释器》1.2 Intermezzo: 错误和异常

1.2 Intermezzo: 错误和异常下面是整个Python解释器的一个重要惯例:当一个函数发生错误时,它应该设置一个异常状态并返回一个错误值(通常是NULL指针)。异常存储在解释器内部的一个静态的全局变量中;如果这个全局变量值为NULL,表示没有异常发生,第二个全局变量存储异常(raise的第二个参数)的’相关值’。第三个变量存储在Python代码中发生错误时堆栈反向跟踪数据。这三个变量

2006-06-19 23:03:00 3655

翻译 《扩展和嵌入python解释器》1.1 一个简单的例子

static PyObject *spam_system(PyObject *self, PyObject *args){ const char *command; int sts; if (!PyArg_ParseTuple(args, "s", &command)) return NULL; sts = system(command);

2006-06-17 00:07:00 5712

翻译 《扩展和嵌入python解释器》1. 用C或C++扩展Python

 1. 用C或C++扩展Python 如果你懂得如何用C编程,那么为Python添加新的内置模块是十分容易的。通过加入新的扩展模块 ,可以做两件用Python语言不能直接做的事: 实现新的内置对象类型 调用C语言库函数和执行系统调用 为支持扩展,Python API定义了一系列函数,宏和变量,可以通过这些访问大部分的Python运行时系统。通过包含头文件"Python.h" ,

2006-06-17 00:04:00 3793

翻译 扩展和嵌入python解释器 - 摘要

 摘要:Python是一种解释型,面向对象的编程语言。本文描述如何使用C或C++编写新模块来扩展Python解释器。扩展模块能够定义新的函数也可以定义新的对象类型及其方法。本文也描述了如何将Python解释器作为一种扩展语言嵌入到另一个应用程序中。最后,本文演示了如何编译和连接扩展模块,使扩展模块可以动态的(在运行时)加载到解释器中,如果操作系统支持动态加载特性。 本文需要你具有P

2006-06-15 22:30:00 5270 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除