March 2009 Archives

搬家小记

| No Comments

 终于搬到住处了,杭州滨江还是比较荒凉,小区的住户比较少,而且房子大都闲置状态,估计再没有人住,也慢慢变成了旧小区了。


本来想弄个大卡车把物品用具等的一股脑儿的搬过去的,但是托同屋的福,先弄过去了大部分的衣物杂物,后来的搬家就打了一个出租车,基本上搞定了。


原来的房东很小心眼,什么东西都婆婆妈妈的算,最后还扣押了我们300元,不喜欢。 现在的房东显然大方的多,不知道是我们刚住进去还是......其中原因估计还得等以后再了解了。



基础平台的重要性

| No Comments

从雅虎转到阿里巴巴,仍然做开发,做开发免不了与各种各样的基础库打交道。
开发了一个系统,准备上线了,sa给了一些机器,看系统版本,一般为rhel4或者rhel5。
准备安装系统,结果发现,没有数据库、没有openssl,没有boost库,没有适合gcc3的版本,还有大量需要依赖的perl模块,看样子给的是名副其实的“裸机”,
开始怀念雅虎yinst的日子,哎,没有yinst,但是还有yum,但是整个公司竟然连个线上的yum源都没有,每次下载n个包竟然去n个官方网站跑跑,跑了还需要make,make通不过还

需要看看有啥没有安装,有啥需要依赖,日子都没法活了,用rpm? rpm去哪找,线上机器不是测试机,随便到rpmfind网站找个包就可以安装,到时候出了问题还是自己的问题。

问sa,sa说这种包不是他们管,即使管也是给机器一顿make,幸好还没有实力申请1、2个集群,否则也没有实力去make。
在雅虎,有专一的团队维护这开发平台的可移植、可扩展以及可依赖性,这样使的开发和发布变得非常之简单,我觉得阿里巴巴应该像雅虎学习一下。
人微言轻,将就着吧!

轻松的一天

| 1 Comment

好不容易有了轻松的机会------去桐庐县采草莓。
桐庐县,浙江省杭州市属县,全国著名旅游县。位于杭州市西南,富春江斜贯县境。

奇怪的JNI的问题

| No Comments

在项目中遇到一个奇怪的现象,在java中使用jni调用c++的库时,总是会出现崩溃现象,java的堆栈一直显示错误在jni调用中,具体错误在strlen+0x10,看样子是strlen计算指

针所指的内容导致的一个错误,但是仔细查了一下,并不存在这种情况,一直找原因,看内存是否释放?看c++客户端是否存在指针为空指针,数组是否越界等等,结果都找不出原

因来,于是只好将java端传递的字符打印出来,并将C++库刚刚接收以及所有可能出现错误的日志打印出来,发现在java传递这种字串时:

String javastr = "abcde^@12345";

注意^@表示ascii字符为0的字符,此字串的长度为11;传递到客户端后,变成了:

char *key = "abcde<00>12345";

注意<00>表示null字符,此时用了一个指针,但是获得的字串长度为10了,这样到strlen处计算肯定会发生错误。

在c/c++语言中,数组字串中肯定不存在这样的字符串abcde^@12345,因为^@会截断12345,而java中允许出现^@,这样就导致了上述的这个问题。在jni调用c/c++库的时候,如果

用数组或指针获取,肯定会发生问题,这可能是jni的一个bug。jni部分调试代码如下:

    const char *key = env->GetStringUTFChars(string, 0);
    /* 
    int i, l = strlen(key);
    for (i = 0; i < l; i++) {
        printf("c[%d]: %u\n", i, (unsigned char)key[i]);
    }
    */
    unsigned short exists = jsClient->exists(key);
    env->ReleaseStringUTFChars(string, key);

那么在c++当中,如果用string来接收java的传递呢?有兴趣的读者不妨做做试验哟!

关于编译的几点须知

| No Comments

无论是C的编译还是C++编译,以及Perl或者Java的编译都可以通过make来完成。

 

rpm的一点学问

| No Comments
一般在linux下开发,在对源码进行二进制打包时,要用到spec文件,这个是rpmbuild的一个输入文件,暂且相当于配置文件吧。

进行打包时会出现:
Installed (but unpackaged) file(s) found:
/usr/bin/xxx
/usr/lib/xxx
/usr/share/xxx
这种现象一般属于文件files中未完全包含$RPM_BUILD_ROOT下的文件,检查一下看什么问题,可以使用:
rpmbuild -bl xxx.spec
调试时rpm会自动帮你检查文件是否包含完整,并且不需要进行编译;

另外,上述的环境确保$RPM_BUILD_ROOT的工程文件存在,否则会报错:
File not found: xxx/xxx.debuglist

老版本的linux下,rpmbuild可能替代的命令是rpm,老版本的$RPM_BUILD_ROOT路径一般是/var/tmp,很难通过$HOME/.rpmmacros来进行指定,所以一般需要使用sudo权限;
但如果一般用户编译,可以在spec文件中指定$_topdir和$_tmpdir,来确定你拥有权限的目录路径。

针对rpm一些疑难问题,大家不妨发表评论,相互交流一下。

好怀念leohacks

| No Comments

leohacks原来是LB插件与功能发布非常棒的一个非官方站点,站点的性质有些特殊,即非官方承认,又是官方采用最多的功能和发布官方补丁最多的一个站点。

leohacks的倡导人是花无缺,后来一直由路杨、Anthony、hztz、simonfamily和我维护,这里是以前的一个备份:http://opensource.huhoo.net/cgi-bin/leobbs.cgi

leohacks后来成为一些perl爱好者的天堂”,不过备份回退了2年,很多的修改都没有啦,遗憾中。

Archives

Recent Comments

  • rao.chenlin: const-c.inc和const-xs.inc这两个的写法能不能详细说说啊。perlxs的中文资料不好找~~多谢多谢 read more
  • rao.chenlin: 我是openSUSE12.1的i686,QQ群获取的群友昵称(包括自己)是乱码~其他一切OK read more
  • cnangel: 已经证明在fedora、ubuntu的i686以及x86_64平台都可以使用。 read more
  • fdcwqmst: 总算找到一点靠谱的博文了 read more
  • Cnangel: 所以说嘛,无奈~ read more
  • 贝贝: 提示你了他们怎么赚钱阿?就是要让你在不知不觉中就花了好多钱 read more
  • Cnangel: please say chinese read more
  • david: hello , i need you help , but i dont read more
  • Cnangel: 问题出错在: /root/phpdev/php-5.3.3/ext/php5cpp/php5cpp.cpp:65: error: invalid conversion from ‘const zend_function_entry*’ to ‘_zend_function_entry*’ read more
  • craboy1: 我make出现了下边的错误: g++ -I. -I/root/phpdev/php-5.3.3/ext/php5cpp -DPHP_ATOM_INC -I/root/phpdev/php-5.3.3/ext/php5cpp/include -I/root/phpdev/php-5.3.3/ext/php5cpp/main -I/root/phpdev/php-5.3.3/ext/php5cpp -I/usr/include/php5 -I/usr/include/php5/main read more

Pages

Powered by Movable Type 5.2.2

December 2012

Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
Creative Commons License
This blog is licensed under a Creative Commons License.

About this Archive

This page is an archive of entries from March 2009 listed from newest to oldest.

February 2009 is the previous archive.

April 2009 is the next archive.

Find recent content on the main index or look in the archives to find all content.