自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 资源 (21)
  • 收藏
  • 关注

原创 Scientific Linux下安装ibus的极点五笔词库

特殊字符的输入方法:zzbd 标点符号 zzpy 拼音符号 zzts 特殊符号zzsx 数学符号 zzdx 单位符号 zzjt 箭头符号zzys 圆圈数字 zzpp 偏旁 zzds 带点数字下载由vissible转换的极点五笔词库文件(网址:http://forum.ubuntu.org.cn/viewtopic.php?t=262266),解压然后执行如下命令:cp

2011-10-27 23:07:13 1071

原创 Scientific Linux安装要诀(同时适用于centos)

这一段时间为了我的2003的旧机能够灵活的运行起来供我编程用,我试了好几个发行版的Linux系统(Ubuntu11.10、Puppy、Fedora15.0、SL6.1),发觉还是SL6.1适合我的机器使用,经过几个晚上的血泪捱夜,基本上都是在凌晨2:00睡觉,终于较为完美的安装好我的ScientificLinux 6.1。现将基本的安装过程简述如下:1、下载Scientific Linux 6

2011-10-26 10:29:55 2986 1

转载 Scientific Linux中安装声卡驱动

IntroductionThis guide will help update your version of the ALSA modules under Scientific Linux 6.1. This is useful for people who's sound is not currently working with their current version of AL

2011-10-19 23:41:09 971 1

转载 Linux英文版显示中文

Linux英文版显示中文:local详解关于locale的设定,为什么要设定locale 关于locale的设定 locale是国际化与本土化过程中的一个非常重要的概念,个人认为,对于中文用户来说,通常会涉及到的国际化或者本土化,大致包含三个方面:看中

2011-10-18 18:00:40 1894

转载 简明 Vim 练级攻略

简明 Vim 练级攻略(原文网址:http://www.linux265.com/blog/index.php/archives/652)vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴

2011-10-17 16:31:23 524 1

转载 iphone 3 gs

在iphone页面点 设置 点 通用 点 网络 点 蜂窝数据网在第一个apn里打上“cmnet”第二个apn打上“cmwap”mmsc打上“mmsc.monternet.com”彩信代理“10.0.0.172”

2011-10-05 17:55:00 432

mpfr-4.0.2.tar.xz

这个包是安装GCC 9.2.0的依赖包,我直接上传至我的资源中供大家下载,不用到国外服务器下载,那个龟速可以让到白头。 这个包是其中的mpfr包,版本为4.0.2。直接下载然后按我的博客中的说明安装即可安装完成最新版的GCC。

2020-02-25

gmp-6.2.0.tar.xz

安装GCC所需的依赖包,这个是第一个:gmp 6.2.0。可以在我的资源中下载。 安装过程可以参考我的博客里面的相关内容。我已经建立了一个安装脚本文件,按博客提示就可以完成所有的安装任务。

2020-02-25

golang开发web应用示例(v0.03)

利用go语言开发web应用的示例。相关说明见我的博客: http://blog.csdn.net/yavobo/article/details/9380011

2013-07-20

golang开发web应用示例

利用go语言开发web应用的示例。详细说明见我的博客: http://blog.csdn.net/yavobo/article/details/9380011

2013-07-19

Linux命令大全

Linux最常用的命令汇集,按系统管理等分类分标签,非常实用。 文档大小为1M左右,按功能划分为12个章节。文档格式为PDF,标签非常详细!

2012-04-09

windows下的nginx+php

网上很多的,请看清了再下,纯粹自用!!! 使用方法: 直接解压到D:\下,并且已经安装好postgresql。 然后运行start_nginx_php.bat即可。 在windows 2003下,应该将nginx.conf中的端口改为8080或其它端口,相应的 start_nginx_php.bat中的端口也应改为相同的端口。否则不能启动php-cgi

2010-12-02

Windows 7 硬盘安装Ubuntu10.10的相关grub4dos文件

如果原来C:盘下有boot.ini文件,请务必先备份 Windows 7 硬盘安装Ubuntu10.10的相关grub4dos文件: 1、将所有文件解压到C:\根目录下,然后将Ubuntu的ISO文件拷贝到C:\根目录下,并改名为ubuntu.iso再重启选择Ubuntu,然后再选择Install Ubuntu即可进入Ubuntu Live界面。在里面点击“安装Ubuntu ”按提示执行即可。 2、修复 Windows 7 启动项 重新启动ubuntu之后,你会发现丢失了windows 7的启动项。下面来说明如何修复。 进人Ubuntu系统,打开终端,命令如下: sudo gedit /etc/default/grub 修改GRUB_TIMEOUT="10" ,然后在终端中输入: sudo update-grub update 命令会自动找到 windows 7 启动项。并且自动更新 /boot/grub/grub.cfg 文件。 3、重启系统 进人Win7系统,删除安装Ubuntu系统时复制到C盘的那些文件(vmlinuz,initrd.lz,grldr,grldr.mbr,grub.exe,menu.lst,boot.ini,ubuntu.iso)。 再将原先的boot.ini恢复。一切OK!

2010-10-11

MinGW完全包-01

在windows下的GNU编译系统,包含gcc、g++等编译软件及autoconf、automake等自动生成makefile文件的应用。

2010-05-20

MinGW完全包-02

在windows下的GNU编译系统,包含gcc、g++等编译软件及autoconf、automake等自动生成makefile文件的应用。

2010-05-20

PHP扩展编程巨献:Extending And Embedding PHP

PHP扩展编程巨献:Extending And Embedding PHP。 有了本书,你就不会再为PHP扩展编程头疼了。这个是英文版。

2010-04-24

MinGW 4.4.3

MinGW 4.4.3包含了GCC 4.4.3的gnu在win32中的编译系统。 解压到C:\MinGW即可使用。

2010-03-11

关于AUI、wxPropertyGrid及wxGrid的用法示例

关于AUI、wxPropertyGrid及wxGrid的用法示例

2010-02-20

用wxWidgets编写的访问PostgreSQL的例子

用wxWidgets编写的访问PostgreSQL的例子,其中要注意字符编码的转换。

2010-02-12

wxWidgets编程全套手册

包含了《wxWidgets跨平台GUI编程》的中、英文两个版本。另外还有wxWidgets的类库参考指南。

2010-02-08

开发PHP扩展详细教程

如果用PHP不能再满足你的需求,最好的办法就是开发PHP扩展。这有一些好处: 1、增加自己的特殊功能。 2、保护自己的专利代码。 这是几年前的一篇英文文章,现在已被翻译成中文版的。 作者应该是hshq_cn。 链接是:http://bbs3.chinaunix.net/thread-1028798-1-1.html。 现我将此转变为PDF文件,仅有兴趣者参阅。同时非常感谢 原作者及hshq_cn,给我们带来的这么好的资料。里面还有一个幻灯片的,也是很有帮助的文档。另外,再提供一篇相关的文章(http://www.programbbs.com/doc/4083.htm): 编写php的extension实例的方法 所属类别:JSP 推荐指数:★★☆ 文档人气:161 本周人气:1 发布日期:2008-7-3 一、说明 前端时间因为客户的原因折腾了一下asp的扩展,在ATL的帮助下写一个asp的模块还是很容易的。不巧的时刚刚折腾完asp的COM就碰到另一个客户的问题。客户想给系统集成ICBC的接口,但是用ICBC的接口需要用他们的提供的库函数去 1. sign对发送的数据进行签名 2. getcertid获取用户证书的版本 3. verifySign对签名后的数据进行验证 问题是ICBC只给了现成的COM组件,意味在只能在Win的主机上使用。俺们公司只有linux的主机,在*nix上就要自己想办法调用ICBC给的静态库了。对此我们有两个想法 1.用ICBC的静态库做一个独立的执行文件,用PHP的系统调用函数来执行这个独立的执行文件 2.将ICBC的静态库做出一个PHP的扩展 方法一应该比较简单,但是远不如方法二的灵活。搞成PHP的扩展,只要服务器编译一次,服务器上的所有客户都可以用的。 有ASP的前科,俺觉得搞个PHP的也不是什么难事。操起google搜了一通,结果发现Zend已经写了一个如何编写php extension的教程: http://devzone.zend.com/article/1021-Extension-Writing-Part-I-Introduction-to-PHP-and-Zend 浏览完牛人的大作,更是信心十足,php的扩展其实很简单,分七步走: 1. 制作编译配置文件:config.m4 2. 执行phpize生成扩展的框架 3. 在生成的php_xxx.h中声明自己写的函数 4. 在xxx.c中实现自己的函数 5. 编译自己的扩展 6. 将生成的xxx.so拷贝到php.ini中指定的extensions_dir 7. 在php.ini中打开xxx.so的调用 此问题问题唯一搞的地方就是在config.m4中折腾出正确的Makefile,因为Zend的教程中没有提到,俺自己也折腾了好久,才搞出来。 二、实际操作 1.建立工作环境 将php源码包解开,我的版本的php-4.4.4,转到源码包中的ext目录建立一个新的目录叫icbc,然后在icbc目录下touch三个文件config.m4、php_icbc.h、icbc.c 2.建立config.m4 内容如下: PHP_ARG_ENABLE(icbc, whether to enable ICBC support, [ --enable-icbc Enable ICBC support]) if test \"$PHP_ICBC\" = \"yes\"; then AC_DEFINE(HAVE_ICBC, 1, [Whether you have ICBC]) if test -f ./libicbcapi.a; then PHP_ADD_LIBRARY_WITH_PATH(icbcapi, ./, ICBCAPI_SHARED_LIBADD) PHP_SUBST(ICBCAPI_SHARED_LIBADD) AC_MSG_RESULT(checking for libicbcapi.a is OK) else AC_MSG_RESULT(libicbcapi.a not found) AC_MSG_ERROR(Please make sure the libicbcapi.a is in current directory) [Page] fi PHP_NEW_EXTENSION(icbc, icbc.c, $ext_shared) fi 第三行判断是否要启用icbc扩展, 第五行判断ICBC的静态库是否在当前目录(phpdir/ext/icbc)下 第六、七行将ICBC的静态库加入到编译环境中 3.在php_icbc.h中声明我们要导出的函数icbc_sign、icbc_vsign、icbc_getCertID #ifndef PHP_ICBC_H #define PHP_ICBC_H extern zend_module_entry icbc_module_entry; #define phpext_icbc_ptr &icbc_module_entry #ifdef PHP_WIN32 #define PHP_ICBC_API __declspec(dllexport) #else #define PHP_ICBC_API #endif #ifdef ZTS #include \"TSRM.h\" #endif PHP_MINIT_FUNCTION(icbc); PHP_MSHUTDOWN_FUNCTION(icbc); PHP_RINIT_FUNCTION(icbc); PHP_RSHUTDOWN_FUNCTION(icbc); PHP_MINFO_FUNCTION(icbc); /*Modify youself here*/ PHP_FUNCTION(icbc_sign); PHP_FUNCTION(icbc_vsign); PHP_FUNCTION(icbc_getCertID); /****End of Self control section***/ #ifdef ZTS #define ICBC_G(v) TSRMG(icbc_globals_id, zend_icbc_globals *, v) #else #define ICBC_G(v) (icbc_globals.v) #endif #endif /* PHP_ICBC_H */ 涉及到我们也就 PHP_FUNCTION(icbc_sign); PHP_FUNCTION(icbc_vsign); PHP_FUNCTION(icbc_getCertID); 其他的都是PHP各个状态的入口函数声明 4.编写这三个函数的实现: #ifdef HAVE_CONFIG_H #include \"config.h\" #endif #include \"php.h\" #include \"php_ini.h\" #include \"ext/standard/info.h\" #include \"php_icbc.h\" #include \"icbcapi.h\" static int le_icbc; zend_function_entry icbc_functions[] = { PHP_FE(icbc_sign,NULL) PHP_FE(icbc_vsign,NULL) PHP_FE(icbc_getCertID,NULL) {NULL, NULL, NULL} /* Must be the last line in icbc_functions[] */ }; zend_module_entry icbc_module_entry = { #if ZEND_MODULE_API_NO >= 20010901 STANDARD_MODULE_HEADER, #endif \"icbc\", icbc_functions, PHP_MINIT(icbc), PHP_MSHUTDOWN(icbc), PHP_RINIT(icbc), /* Replace with NULL if there’s nothing to do at request start */ PHP_RSHUTDOWN(icbc), /* Replace with NULL if there’s nothing to do at request end */ [Page] PHP_MINFO(icbc), #if ZEND_MODULE_API_NO >= 20010901 \"0.1\", /* Replace with version number for your extension */ #endif STANDARD_MODULE_PROPERTIES }; #ifdef COMPILE_DL_ICBC ZEND_GET_MODULE(icbc) #endif PHP_MINIT_FUNCTION(icbc) { return SUCCESS; } PHP_MSHUTDOWN_FUNCTION(icbc) { return SUCCESS; } PHP_RINIT_FUNCTION(icbc) { return SUCCESS; } PHP_RSHUTDOWN_FUNCTION(icbc) { return SUCCESS; } PHP_MINFO_FUNCTION(icbc) { php_info_print_table_start(); php_info_print_table_header(2, \"icbc support\", \"enabled\"); php_info_print_table_end(); } PHP_FUNCTION(icbc_sign) { char* src; int srclen; char* pkey; int keylen; char* keypass; int keypasslen; char* signedbuf; int signedbuflen; FILE* fp; char key[2000]; int rcc; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,\"sss\",&src,&srclen,&pkey,&keylen,&keypass,&keypasslen) == FAILURE){ return; } fp = fopen(pkey,\"rb\"); if(fp == NULL) { return; } fseek(fp,2,SEEK_SET); fread((void*)key,609,1,fp); fclose(fp); if(rcc = sign(src,srclen,key,607,keypass,&signedbuf,&signedbuflen) >= 0){ base64enc(signedbuf,signedbuflen,&signedbuf,&signedbuflen); src = estrndup(signedbuf,signedbuflen); if(signedbuf != NULL) infosec_free(signedbuf); RETURN_STRING(src,1); [Page] }else{ RETURN_LONG(rcc); } }PHP_FUNCTION(icbc_vsign) { char* src; int srclen; char* cert; int certlen; char* vsignedbuf; int vsignedbuflen; FILE* fp; char vcert[2000]; int rcc; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,\"sss\",&src,&srclen,&cert,&certlen,&vsignedbuf,&vsignedbuflen) == FAILURE){ return; } fp = fopen(cert,\"rb\"); if(fp == NULL) { return; } fread((void*)vcert,1525,1,fp); fclose(fp); base64dec(vsignedbuf,vsignedbuflen,&vsignedbuf,&vsignedbuflen); if(rcc = verifySign(src,srclen,vcert,1525,vsignedbuf,vsignedbuflen) >= 0){ if(vsignedbuf != NULL) infosec_free(vsignedbuf); RETURN_TRUE; }else{ if(vsignedbuf != NULL) infosec_free(vsignedbuf); RETURN_LONG(rcc); } } PHP_FUNCTION(icbc_getCertID) { char* arg; char* certid; int arg_len,certidlen; FILE* fp; char cert[2000]; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,\"s\", &arg,&arg_len) == FAILURE){ return; } fp = fopen(arg,\"rb\"); if(fp == NULL) { return; } fread((void*)cert,1525,1,fp); fclose(fp); [Page] if(!getCertID(cert,1525,&certid,&certidlen)) { arg = estrndup(certid,certidlen); if(certid != NULL) infosec_free(certid); RETURN_STRING(arg,1); }else{ return; } } 先在zend_function_entry icbc_functions[]数组中放入我们的要实现的函数名,然后是一堆php各个状态入口函数,详情请看Zend的教程。最后是在PHP_FUNCTION宏定义中放我们声明函数的具体实现。具体实现时难点也就是参数的传入和结果传出,还好PHP已经为我们做了很好的抽象。在Zend的教程中也有详尽的说明,俺就不啰嗦了。关键代码照搬icbc的test.c就行了。 5.编译安装我们的库 先将ICBC的头文件考到当前目录,重命名为icbcapi.php,将静态库也cp过来,重命名为*nix的标准形式libicbcapi.a,然后运行 phpize 生成configure,运行 ./configure --enable-icbc 生成Makefile,这里有一个很搞的地方,在生成的Makefile中最后一句中指定ICBC静态库的地方错了,正确的应该是(红色标记地方): $(LIBTOOL) --mode=link $(CC) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $(shared_objects_icbc) $(ICBCAPI_SHARED_LIBADD) 改好Makefile后就可以执行 make 如果一切顺利的话会在modules中得到我们的icbc.so,将我们的icbc.so拷贝到/usr/local/lib/php/extensions目录下,然后在php.ini中确认extensions_dir的值是/usr/local/lib/php/extensions,然后加入这句话 extension=icbc.so 重启apache后,就可以在php中直接调用这三个函数了 6.测试程序,要将测试的证书和key文件放到php测试文件的当前目录 <?php $realpath = dirname(__FILE__); $key = $realpath.\"/user.key\"; $cert = $realpath.\"/user.crt\"; $src = \"zzz\"; $passwd = \"12345678\"; echo \"The Cert file information is \"; echo icbc_getCertID($cert); echo \"<br>\"; $b64sdata = icbc_sign($src,$key,$passwd); echo \"The string \".$src.\" encrypt by icbc api is \".$b64sdata.\"(base64 encoded)<br>\"; echo \"Now we check it weather is correct....<br>\"; if(icbc_vsign(\"zzz\",$cert,$b64sdata)){ echo \"The signtrue to \".$src.\" is right!!<br>\"; [Page] }else{ echo \"The signtrue to \".$src.\" is wrong!!<br>\"; exit(); } ?>

2009-10-29

PostgreSQL开发手册

PostgreSQL开发手册(英文版) 原名:SamsPostgreSQLDevelopersHandbook.chm

2009-07-31

CentOS Step by Step

CentOS 操作指南。 红帽公司出品!其实是RHEL人指南。但CentOS同样适用。

2009-07-31

黑客札记:Linux与unix安全手册

书名:黑客札记:Linux与unix安全手册 简介:介绍Linux中的攻与防!

2009-07-30

PHP环境下动态生成表格

当你在显示二维表时,试试这个“PHP环境下动态生成表格”,很简单的。

2009-05-17

PHP_PostgreSQL_访问类

PHP_PostgreSQL_访问类:一个简单而实用的在PHP中访问PostgreSQL的类,有使用实例。

2009-05-17

Beginning PHP and PostgreSQL 8 从入门到精通

Beginning PHP and PostgreSQL 8 从入门到精通: 《Beginning PHP and PostgreSQL 8 From Novice to Professional》(英文版)

2009-05-17

空空如也

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

TA关注的人

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