真的猛男敢于直面惨淡的人生

flyzhang 发表于 3000-01-05 09:10:20

fly = 苍蝇  

收藏: QQ书签 del.icio.us 订阅: Google 抓虾

使用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";
收藏: 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的功能
关键词(Tag): postgresql 外部表
收藏: 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 主要需要面对下面两种情况:
  1. 为了编码方便,大家可以把下面的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
  1. 调用C++的函数,这个时候简单些,基本上是不需要再写个wrapper的,所需要的只是:
    1. Pg.cc 中你写的函数前面加一个 extern "C" 就可以了,当然为了严谨写 最好写上 \#ifdef __cplusplus \#endif 的宏
    2. pg.c中用extern申明一下pg.cc中的需要调用的函数就可以了
    3. 链接的时候加上 –lstdc++就可以了
  2. 初始化C++中的对象,并调用C++中的对象的成员函数,这时候你需要写一堆wrapper函数了:
    1. 参见例子:
wrapper.cc
 
  1. #include"exttabbuffer.h"
  2. #ifdef __cplusplus
  3. extern "C" {
  4. #endif
  5.     LineBuffer* call_C_getBuffer(){
  6.         return new LineBuffer();
  7.     };
  8.  
  9.     bool call_C_initBuffer(LineBuffer* p, int cap, const char *file){
  10.  
  11.         return p->initBuffer(cap, file);
  12.     };
  13.  
  14.     bool call_C_putLineIntoBuffer(LineBuffer* p){
  15.         return p->putLineIntoBuffer();
  16.     };
  17.  
  18.     const char * call_C_getLineFromBuffer(LineBuffer *p){
  19.         return p->getLineFromBuffer();
  20.     }
  21. #ifdef __cplusplus
  22. };
  23. #endif
exttabbuffer.h
 
  1. #ifndef EXTTABBUFFER_H_
  2. #define EXTTABBUFFER_H_
  3. #include<fstream>
  4. #include<vector>
  5. #include<string>
  6.  
  7. using namespace std;
  8. class LineBuffer{
  9.     public:
  10.         LineBuffer();
  11.         ~LineBuffer();
  12.         bool initBuffer(int cap, const char * file);
  13.         const char * getLineFromBuffer();
  14.         bool putLineIntoBuffer();
  15.     private:
  16.         vector<string> strBuffer;
  17.         ifstream file;
  18.         unsigned top;
  19.         int capacity;
  20. };
  21. #endif
main.c
 
  1. #include<stdbool.h>
  2. extern struct LineBuffer* call_C_getBuffer();
  3. extern bool call_C_initBuffer(struct LineBuffer* p, int cap, const char *file);
  4. extern bool call_C_putLineIntoBuffer(struct LineBuffer* p);
  5. extern const char * call_C_getLineFromBuffer(struct LineBuffer *p);
  6.  
  7. int main(int argc, char **argv)
  8. {
  9.     struct LineBuffer *lb;
  10.     const char *i;
  11.     bool ret;
  12.  
  13.     lb = call_C_getBuffer();
  14.     call_C_initBuffer(lb, 10, "main.c");
  15.     ret = call_C_putLineIntoBuffer(lb);
  16.     //const char * str =
  17.     i = call_C_getLineFromBuffer(lb);
  18.  
  19. }
关键词(Tag): c++ postgresql 扩展函数
收藏: 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更新了。安装的方法如下:
  1. 系统->系统管理->新立得软件包管理器->设置->软件库->软件源->添加->Restricted copyright
  2. sudo apt-get install nvidia-glx-legaxy nvidia-glx-legaxy-dev
  3. sudo apt-get install linux-restricted-modules-2.6.24-20-generic (注: 根据 uname -a 返回的内核版本选择)
  4. sudo apt-get install freeglut3 freeglut3-dev
  5. 修改 /etc/xorg.conf文件:
    1. 添加:
      Section "Device"
          Identifier     "Device0"
          Driver         "nvidia"
          VendorName     "NVIDIA Corporation"
      EndSection
      Section "Extensions"
          Option  "Composite" "Disable"
      EndSection
      Section "Module"
          Load           "glx"
      EndSection
  6. 重启
  7. 屏幕会显示Nvidia的logo,恭喜你已经基本安装成功了
  8. 测试:
    1. 运行glxdemo glxgears 观察能否正常显示
    2. 运行glxinfo观察结果
  9. 备注
    如果发现错误,请看/var/log/Xorg.0.log|grep EE的结果 尝试修改
收藏: QQ书签 del.icio.us 订阅: Google 抓虾

德国战车已经成了T-72

flyzhang 发表于 2008-06-17 09:34:12

    应该说从马特乌斯、布雷默、克林斯曼退役后的德国队已经不再是传统意义上的德国战车了,相反现在的德国队越看越像T-72:
  1. 脆弱的“装甲”:奥地利人拿着长矛短剑都能把德国队的后防线搅和的一塌糊涂、忙乱不堪,而且德国队还同样的拥有了T-72独特的“殉爆”特性,一处出问题处处出问题。
  2. Made in 东欧:巴拉克、博罗夫斯基、克洛泽、波多尔斯基
  3. 强大的火力,糟糕的火控:克洛泽(世界杯最佳射手)戈麦斯(德甲最佳射手) 进球=0
  4. 高时速,劣操控:巴拉克一个人支撑不起德国人的中场,看看和克罗地亚的比赛就清楚了
关键词(Tag): 德国战车 t-72
收藏: QQ书签 del.icio.us 订阅: Google 抓虾

一堆“女人”在踢球

flyzhang 发表于 2008-06-13 08:55:48

     今天的德国队是德国国家男子足球队吗?怎么看起来是德国国家女子篮球队的样子。完全他妈的不是男人。没有血性的防守,没有凶狠的逼抢,只有拖着软塔塔的腿的篮球运动员在被皮球逗的乱转。比起上届世界杯和阿根廷的比赛,nnd这帮人真是被骟了一般,巴拉克只会如泼妇般大吼大叫,克洛泽如软脚蟹般在场上扭性感的屁股,那个奥东科简直就是个“奥跑跑”,还有那个杨森,ntmd是从幼儿园来的吧!唉气死我了。
     还好奥地利人在随后的比赛给德国人送了个小礼物,逼平了波兰,让德国人下场比赛的压力小了很多。德国要走的更远,必须拿出男人的气概,如雄狮般用整体的力量将对手碾在履带下!
关键词(Tag): 德国 巴拉克 奥跑跑
收藏: QQ书签 del.icio.us 订阅: Google 抓虾