快乐的猪头
使用perl进行utf-8编码的全角半角字符转换
flyzhang 发表于 2009-02-27 12:04:17
#!/usr/local/bin/perl
my $str = '019AaBbYyZz\",.?<>{}[]*&^%#@!~()+-|:;“';
print "$str\n";
$str =~ s/\xEF\xBC(.)/chr(ord()-96)/eg;
print "$str\n";
my $str = '019AaBbYyZz\",.?<>{}[]*&^%#@!~()+-|:;“';
print "$str\n";
$str =~ s/\xEF\xBC(.)/chr(ord()-96)/eg;
print "$str\n";
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
雅虎口碑上线了”一推广“,后台结算是我们用postgresql做得
flyzhang 发表于 2008-11-17 16:29:38
没有用Oracle,自己感觉挺牛的。呵呵
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
我的第二个开源项目基于PostgreSQL的外部表扩展release
flyzhang 发表于 2008-11-11 10:30:42
http://pgfoundry.org/projects/pgexternaltable/
目前实现了类似于oracle的外部表功能
下阶段:
1. 提高性能
2. 实现部分streamdb的功能
目前实现了类似于oracle的外部表功能
下阶段:
1. 提高性能
2. 实现部分streamdb的功能
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
中国人在食品中完成了化学扫盲
flyzhang 发表于 2008-09-18 21:12:14
从大米里我们认识了石蜡
从火腿里我们认识了敌敌畏
从咸鸭蛋、辣椒酱里我们认识了苏丹红
从火锅里我们认识了福尔马林
从银耳、蜜枣里我们认识了硫磺
从木耳中认识了硫酸铜
今天三鹿又让同胞知道了三聚氰胺的化学作用
外国人喝牛奶结实了
中国人喝牛奶结石了
------------------摘自某sina blog的评论
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
使用C++开发postgresql 扩展函数
flyzhang 发表于 2008-09-18 11:31:52
其实归根到底就是C和C++的混合编程。 我想的办法是写C++的Wrapper 假设pg的扩展c代码叫做pg.c C++代码叫做pg.cc 主要需要面对下面两种情况:
- 为了编码方便,大家可以把下面的CXXWRAPP.mk include到Makefile文件中,方便编译
CXXWRAPP.mk
ifdef MODULES
#ifdef CXXWRAPP
override LIBS :=-lstdc++
cxxfiles := $(wildcard ./*.cc)
cxxobjs := $(addsuffix .o, $(basename $(cxxfiles)))
override CPPFLAGS+=$(CPPFLAGS) -fpic -g -O0
override CFLAGS+=-g
moduleso := $(addsuffix $(DLSUFFIX), $(MODULES))
moduleobj := $(addsuffix .o, $(MODULES))
all: $(moduleso)
$(moduleso): $(cxxobjs)
$(moduleso): $(moduleobj)
$(CC) -shared -o $@ $(moduleobj) $(cxxobjs) $(LIBS)
endif
- 调用C++的函数,这个时候简单些,基本上是不需要再写个wrapper的,所需要的只是:
- Pg.cc 中你写的函数前面加一个 extern "C" 就可以了,当然为了严谨写 最好写上 \#ifdef __cplusplus \#endif 的宏
- 在pg.c中用extern申明一下pg.cc中的需要调用的函数就可以了
- 链接的时候加上 –lstdc++就可以了
- 初始化C++中的对象,并调用C++中的对象的成员函数,这时候你需要写一堆wrapper函数了:
- 参见例子:
wrapper.cc
- #include"exttabbuffer.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- LineBuffer* call_C_getBuffer(){
- return new LineBuffer();
- };
- bool call_C_initBuffer(LineBuffer* p, int cap, const char *file){
- return p->initBuffer(cap, file);
- };
- bool call_C_putLineIntoBuffer(LineBuffer* p){
- return p->putLineIntoBuffer();
- };
- const char * call_C_getLineFromBuffer(LineBuffer *p){
- return p->getLineFromBuffer();
- }
- #ifdef __cplusplus
- };
- #endif
exttabbuffer.h
- #ifndef EXTTABBUFFER_H_
- #define EXTTABBUFFER_H_
- #include<fstream>
- #include<vector>
- #include<string>
- using namespace std;
- class LineBuffer{
- public:
- LineBuffer();
- ~LineBuffer();
- bool initBuffer(int cap, const char * file);
- const char * getLineFromBuffer();
- bool putLineIntoBuffer();
- private:
- vector<string> strBuffer;
- ifstream file;
- unsigned top;
- int capacity;
- };
- #endif
main.c
- #include<stdbool.h>
- extern struct LineBuffer* call_C_getBuffer();
- extern bool call_C_initBuffer(struct LineBuffer* p, int cap, const char *file);
- extern bool call_C_putLineIntoBuffer(struct LineBuffer* p);
- extern const char * call_C_getLineFromBuffer(struct LineBuffer *p);
- int main(int argc, char **argv)
- {
- struct LineBuffer *lb;
- const char *i;
- bool ret;
- lb = call_C_getBuffer();
- call_C_initBuffer(lb, 10, "main.c");
- ret = call_C_putLineIntoBuffer(lb);
- //const char * str =
- i = call_C_getLineFromBuffer(lb);
- }
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
开幕式=2008个人在空麻将桌上搓麻但最后还是都”和“了
flyzhang 发表于 2008-08-09 18:12:48
如题
只有中国足球和张艺谋的表现如此”正常“
只有中国足球和张艺谋的表现如此”正常“
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
联想V80 Ubuntu 8.04安装nvidia 驱动和配置opengl开发环境
flyzhang 发表于 2008-07-28 19:05:30
联想的V80是6年前的老本子了,他的显卡NV17的Geforce4 420 GO 32M已经不再被Nvidia更新了。安装的方法如下:
- 系统->系统管理->新立得软件包管理器->设置->软件库->软件源->添加->Restricted copyright
- sudo apt-get install nvidia-glx-legaxy nvidia-glx-legaxy-dev
- sudo apt-get install linux-restricted-modules-2.6.24-20-generic (注: 根据 uname -a 返回的内核版本选择)
- sudo apt-get install freeglut3 freeglut3-dev
- 修改 /etc/xorg.conf文件:
- 添加:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
EndSection
Section "Extensions"
Option "Composite" "Disable"
EndSection
Section "Module"
Load "glx"
EndSection
- 添加:
- 重启
- 屏幕会显示Nvidia的logo,恭喜你已经基本安装成功了
- 测试:
- 运行glxdemo glxgears 观察能否正常显示
- 运行glxinfo观察结果
- 备注
如果发现错误,请看/var/log/Xorg.0.log|grep EE的结果 尝试修改
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
德国战车已经成了T-72
flyzhang 发表于 2008-06-17 09:34:12
应该说从马特乌斯、布雷默、克林斯曼退役后的德国队已经不再是传统意义上的德国战车了,相反现在的德国队越看越像T-72:
- 脆弱的“装甲”:奥地利人拿着长矛短剑都能把德国队的后防线搅和的一塌糊涂、忙乱不堪,而且德国队还同样的拥有了T-72独特的“殉爆”特性,一处出问题处处出问题。
- Made in 东欧:巴拉克、博罗夫斯基、克洛泽、波多尔斯基
- 强大的火力,糟糕的火控:克洛泽(世界杯最佳射手)戈麦斯(德甲最佳射手) 进球=0
- 高时速,劣操控:巴拉克一个人支撑不起德国人的中场,看看和克罗地亚的比赛就清楚了
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
一堆“女人”在踢球
flyzhang 发表于 2008-06-13 08:55:48
今天的德国队是德国国家男子足球队吗?怎么看起来是德国国家女子篮球队的样子。完全他妈的不是男人。没有血性的防守,没有凶狠的逼抢,只有拖着软塔塔的腿的篮球运动员在被皮球逗的乱转。比起上届世界杯和阿根廷的比赛,nnd这帮人真是被骟了一般,巴拉克只会如泼妇般大吼大叫,克洛泽如软脚蟹般在场上扭性感的屁股,那个奥东科简直就是个“奥跑跑”,还有那个杨森,ntmd是从幼儿园来的吧!唉气死我了。
还好奥地利人在随后的比赛给德国人送了个小礼物,逼平了波兰,让德国人下场比赛的压力小了很多。德国要走的更远,必须拿出男人的气概,如雄狮般用整体的力量将对手碾在履带下!
还好奥地利人在随后的比赛给德国人送了个小礼物,逼平了波兰,让德国人下场比赛的压力小了很多。德国要走的更远,必须拿出男人的气概,如雄狮般用整体的力量将对手碾在履带下!
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
