Recently in 电脑技巧 Category

今天遇到了一个奇怪的事情,git 在一台机器上的克隆出现了问题,提示:

[cnangel@r101073010 tmp]$git clone git@xxxx.com:openad/otserver.git

Cloning into 'otserver'...
fatal: protocol error: bad line length character: Welc

发现ssh加入了-X会导致此现象,但其他机器即使加入了-X也没有此问题,怀疑是ssh配置的问题,然后查找/etc/ssh/ssh_config文件,发现多了一行:

ForwardX11 yes

去掉即可。

[ZT]最牛B的编码套路

| No Comments

忙中看一下。。。

libqq for pidgin发布

| 2 Comments
google项目上的libqq好久没有更新了,最近QQ更新了协议,对以往2010的协议不再支持,故在github上建立一个关于QQ2011的pidgin-libqq的支持:
https://github.com/cnangel/pidgin-libqq
感兴趣的可下载。
fedora17 i686可直接在下面下载安装。
pidgin-libqq-0.72-1.fc17.i686.rpm

针对google项目上的libqq的patch补丁下载(r202):
0001-fixed-for-cnangel.patch






log4cpp 1.1.0 patch

| No Comments
改进特征:
1,可扩展的队列接口;
2,可根据时间分卷的Appender;
另外,log4cpp 1.1rc1修复了以前可变参数的问题(会产生coredump)
[cnangel@localhost SOURCES]$md5sum log4cpp-1.1rc1.tar.gz
d79d8b20d429aa799ead24254ba68d5a  log4cpp-1.1rc1.tar.gz
patch补丁:
0001-update-for-cnangel.patch

rpm script can not execute

| No Comments
公司的sa安装机器很奇怪,rpm和screen在普通用户下都不能正常使用,看了一下screen,可以执行:
script /dev/null
来解决;但是rpm安装不会执行post以及postun段,让人匪夷所思,这里发现一种办法可解决此问题(需要root权限):
创建rpm的db信息库:
rpm --dbpath /home/cnangel/rpm_ilike/rpm -qa
安装软件
rpm --dbpath /home/cnangel/rpm_ilike/rpm -ivh /disk1/cnangel/rpmbuild/RPMS/x86_64/kfc-*.rpm --prefix /home/cnangel/kfc --nodeps
发现post段没有执行,检查脚本目录:
rpm --eval %{_tmppath}
修改该目录(假设该目录是/var/tmp)权限即可:
chmod 1777 /var/tmp
参考文档:http://www.logiqwest.com/TechnicalPapers/rpmScriptInstall.html

TWiki5.1.1的左侧栏修复

| No Comments
安装上TWiki5.1以上的版本,发现默认的左侧栏没有了,习惯了左侧栏的用户会感觉非常不习惯,查遍了TWiki官方网站和google了相关资料,也没有很好的中文资料,这里根据官方的说明简单处理了一下:

打开templates/view.topmenu.tmpl文件:
找到:
%TMPL:DEF{"leftbar"}%%TMPL:END%
%TMPL:DEF{"leftbardimensions"}%%TMPL:END%
去除最底下模板代码即可。
   fedora16安装以来,一直gnome-shell占用CPU比较高,以前以为是evolution数据量过大导致的问题,后来删除了evolution,重新导入小数据量的evolution,发现CPU仍然偶尔飙高,搜索google无果,于是自行研究了一下发现,把$HOME目录下的.gconf目录删除之后,gnome-shell占用的CPU最多飙到40%,不过要重新设置一下evolution的帐号,希望给fedora的爱好者一些帮助。
   通过现象分析,很可能是导入evolution导入了以前fedora15不兼容的配置信息,导致gnome-shell发挥特效的时候过多的cpu的消耗。


使用Discuz7.2之后,发现财付通支付并不好使,并提示:


支付失败,您的资金未被扣除,原因可能是:您所下单网站链接有更新或者存在风险,请您稍后尝试或者与该网站客服联系。

于是去财付通的接口技术文档上看了一下,说为了安全,防止欺诈,财付通的接口新增加了一个参数spbill_create_ip,不能为空,于是
修改了api/trade/tenpay.api.php文件,注意,Discuz7.2的api/trade/tenpay.api.php文件是使用Zend加密的,可以使用黑刀(DeZend)解密一下,
找到
$reqHandler->setparameter( "ver", "3" );

后面加上一句:
$reqHandler->setparameter( "spbill_create_ip", $_SERVER['REMOTE_ADDR'] );

及时加上了,当时在linux系统上,由于是firefox,测试的时候,发现很正常,但在ie下死活不正常,看接口文档,估计是REFER信息不对导致,于是修改
$reqHandler->setgateurl( "https://www.tenpay.com/cgi-bin/v1.0/pay_gate.cgi" );


$reqHandler->setgateurl( "http://www.xxx.com/tmp.php" );

tmp.php是笔者写的一个测试程序,主要显示环境变量,其内容如下:

<?php
phpinfo();
?>

发现在firefox浏览器下有HTTP_REFERER这个变量,但是ie浏览器下没有HTTP_REFERER这个变量,找到原因了,那么看一下程序,为什么会出现这个现象呢?找到memcp.php文件,找到如下地方:

502 $requesturl = credit_payurl($price, $orderid);
503
504 $query = $db->query("SELECT orderid FROM {$tablepre}orders WHERE orderid='$orderid'");
505 if($db->num_rows($query)) {
506 showmessage('credits_addfunds_order_invalid');
507 }
508
509 $db->query("INSERT INTO {$tablepre}orders (orderid, status, uid, amount, price, submitdate)
510 VALUES ('$orderid', '1', '$discuz_uid', '$amount', '$price', '$timestamp')");
511
512 showmessage('credits_addfunds_succeed', $requesturl);

在跳转时,程序使用了showmessage函数,而查看include/global.func.php文件里面showmessage函数定义,找到:

1099 if($url_forward) {
1100 $show_message = "<script type=\"text/javascript\" reload=\"1\">\nif($('return_$handlekey')) $('return_$handlekey').className = 'onright';\nif(typeof submithandle_$handlekey =='function') {submithandle_$handlekey('$url_forward', '$show_message');} else {location.href='$url_forward'}\n</script>";
1101 } else {
1102 $show_message .= "<script type=\"text/javascript\" reload=\"1\">\nif(typeof messagehandle_$handlekey =='function') {messagehandle_$handlekey('$messagehandle', '$show_message');}\n</script>";
1103 }

发现跳转使用的是location.href,而一般写前端界面的人都知道location.href在ie下是取不到refer信息的,那么现在问题就变成用什么方法代替location.href的跳转呢?问题也很简单,拷贝一份showmessage函数的内容,命名函数showmessage为函数trade_showmessage,然后找到上述的地方,修改成:

1105 if($url_forward) {
1106 $show_message = "<script type=\"text/javascript\" reload=\"1\">\nif($('return_$handlekey')) $('return_$handlekey').className = 'onright';\nif(typeof submithandle_$handlekey =='function') {submithandle_$handlekey('$url_forward', '$show_message');} else { if (document.all){ var gotoLink = document.createElement('a');gotoLink.href='$url_forward';document.body.appendChild(gotoLink);gotoLink.click();}\nelse window.location.href='$url_forward';}\n</script>";
1107 } else {
1108 $show_message .= "<script type=\"text/javascript\" reload=\"1\">\nif(typeof messagehandle_$handlekey =='function') {messagehandle_$handlekey('$messagehandle', '$show_message');}\n</script>";
1109 }

即创建一个DOM节点,并添加click事件,从而memcp.php文件调用trade_showmessage函数解决问题。

关于高版本的libtool v2.4的问题

| No Comments
因为生成so的问题,发现libtool v2.4生成代码时:
libtool --debug --tag=CXX --mode=link g++ -fPIC -g -O2 -g -Wall -D_DEBUG -shared -fpic -o libsotest.so libsotest_so-testso.o -lpthread -ldl -lcppunit
结果为:
g++ -fPIC -g -O2 -g -Wall -D_DEBUG -fpic -o libsotest.so libsotest_so-testso.o  -lpthread -ldl -lcppunit
而期望的结果应该是:
g++ -fPIC -g -O2 -g -Wall -D_DEBUG -shared -fpic -o libsotest.so libsotest_so-testso.o  -lpthread -ldl -lcppunit
低版本的libtool v1.5.22则没有这个问题,于是查找原因,经过分析,发现新版本的libtool对-shared选项有二处地方的变动,一处为func_mode_compile函数,主要是针对-shared的优化,
 2429     -shared | -static | -prefer-pic | -prefer-non-pic)
 2430       later+=" $arg"
 2431       continue
 2432       ;;
另外,在函数func_mode_link中
 6171       -shared)
 6172     # The effects of -shared are defined in a previous loop.
 6173     continue
 6174     ;;
如果得到上面的期望结果,则注释这条语句即可。

详细的问题描述见:http://my.huhoo.net/archives/2011/08/libtool.html

libtool的一个问题

| No Comments
    libtools生成so的时候,发现在rhel5.3和fedora15下,结果竟然不一样,Makefile.am这样写道:
dydir    = $(bindir)/pwd
dy_PROGRAMS    = libdy.so
libdy_so_SOURCES = dy.cpp dy.h
libdy_so_CXXFLAGS = -fPIC
libdy_so_LDFLAGS = -shared -fpic

在fedora15下,这里面dy.cpp里面必须包括main函数,否则编译不过,而rhel5.3则没有这个问题,查了过程发现fedora15和rhel5.3的编译过程分别如下所示:
fedora15:
/bin/sh ../../../libtool --tag=CXX   --mode=link g++ -fPIC -g -O2 -shared -fpic  -o libdy.so libdy_so-dy.o 
libtool: link: g++ -fPIC -g -O2 -fpic -o libdy.so libdy_so-dy.o
/usr/lib/gcc/i686-redhat-linux/4.6.0/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status

rhel5.3
/bin/sh ../../../libtool --tag=CXX --mode=link g++  -g -O2   -o libdy.so -shared -fpic libdy_so-dy.o 

g++ -g -O2 -o libdy.so -shared -fpic libdy_so-dy.o
应该是libtool在fedora15上丢失了-shared参数所致,fedora15的libtool版本为2.4,而rhel5.3的libtool版本为1.5.22。

Archives

Recent Comments

  • 路杨: 这个功能的确没有用过。 read more
  • Cnangel: https://github.com/movabletype/movabletype.git read more
  • Cnangel: 升级到了6.0.3,貌似好了一些 read more
  • Cnangel: Windows下还可以使用: ipconfig -flushdns ipconfig -registerdns ipconfig -renew read more
  • 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

Pages

Powered by Movable Type 6.2.4

January 2017

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        

Recent Assets

  • 2016-07-06 09-13-22 的屏幕截图.png
  • 2016-07-06 09-13-56 的屏幕截图.png
  • 2016-07-06 09-12-39 的屏幕截图.png
  • ClusterNodeAndManager.jpg
  • SampleNode.jpg
  • ClusterNode.jpg
  • SM.jpg
  • SKIPLIST.PNG
  • bitcask.jpg
  • bitcask-2.jpg
Creative Commons License
This blog is licensed under a Creative Commons License.

About this Archive

This page is an archive of recent entries in the 电脑技巧 category.

杂苑笔记 is the previous category.

精彩美食 is the next category.

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