坑爹的微信支付官方文档

微信支付的官方文档里的代码,原样复制过来,所有参数用官方的库生成好,传递到页面上,进入支付页面以后,没有任何反应。就是这个文档:

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6

搜索了一下有不少提这个问题,还有人说iOS里没反应,安卓可以。也有人说这个支付接口是第一代接口,实际已经不起作用了,现在都要使用第二代接口,也就是这个文档:

http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

于是费了老半天劲把代码改成了这个方式,支付过程中多调了两个接口,多生成了一套加密参数,终于成功了。

今天同事用微信开发工具调试了一下原来那个代码,发现坑爹的事情是,官方示例代码里面所有的冒号都是全角的,于是直接脚本错误了……

一个一个改成半角冒号,支付对话框就弹出来了……

微信,你还能再坑一点吗?

CentOS 7.2 Yum安装部署Nginx+PHP+Mysql/MariaDB+Nodejs+Django生产环境

内容取自网络,根据自己的实践总结整理。

1、更新系统应用。

yum update

2、安装开发工具包。

yum groupinstall "Development Tools"

3、安装MariaDB,启动,并设为开机自启动服务。

yum -y install mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb

4、初始化数据库。

mysql_secure_installation

根据命令提示完成Mysql数据库和root用户的初始化操作。
继续阅读“CentOS 7.2 Yum安装部署Nginx+PHP+Mysql/MariaDB+Nodejs+Django生产环境”

.Net网站程序疑难杂症Dump内存分析

有些时候.Net的站点在测试时没问题,上到正式环境出现CPU 突然占用100%的问题,或者突然进程崩溃的问题,当代码量比较大的时候,基本上完全无法下手找到问题,在系统的日志里你也找不到任何有用的信息。这时候几乎只能依赖于Dump内存进行分析,查看当时情况下的进程中正在执行的过程,来查找可能出现问题的原因。
对CPU占用100%的问题处理:
ProcDump 8.0下载,只有一个400K主程序,不需要其它附加内容。
当指定进程的CPU占用超过30%连续3秒的时候抓取完整dump,抓取2次后退出。
另外在进程执行过程中抓取之前,程序中触发的异常信息也会直接显示在命令行窗口中。

procdump -ma -c 30 -s 3 -n 2 -e 1 -f “” 5960(Process Name or PID) -o E:\Procdump\Log

    -ma 生成full dump, 即包括进程的所有内存. 默认的dump格式包括线程和句柄信息.
    -c 在CPU使用率到达这个阀值的时候, 生成dump文件.
    -s CPU阀值必须持续多少秒才抓取dump文件.
    -n 在该工具退出之前要抓取多少个dump文件.
-o dump文件保存目录.
其它可用参数:
-t
Write a dump when the process terminates.
-m
Memory commit threshold in MB at which to create a dump.
-e Write a dump when the process encounters an unhandled exception. Include the 1 to create dump on first chance exceptions.
分析Dump还是需要用windbg(安装WindowsDevelopKit):
打开windbg,将对应的Dump文件拖进来,先加载.Net符号文件:
.load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.dll
然后:
!threadpool,查看线程池的CPU使用量
!runaway,查看线程占用CPU时间
~28s,切换到28这个线程(占用CPU前几名的程序,可能都需要切换过去看一下)
!clrstack,到具体某个线程后,查看当前线程中正在执行的托管代码,到这一步基本就可以看出问题
其它命令:
!analyze -v 自动分析异常信息
输出信息中的关键信息:
然后进入43这个进程,查看托管代码:
基本可以锁定是由于Senparc这个库里面的LocalCacheLock中的RetryLock方法导致的死锁。
另外!dumpstack -ee也可以用来查找异常信息
对进程自动崩溃的问题处理(系统事件查看器中显示StackoverflowException,此异常用try catch无法捕获):
除上面的procdump -t方法之外,还可以用windbg中包含的adplus工具来生成dump:
adplus -Crash -pn w3wp.exe -FullOnFirst -o d:\output
对生成的Dump文件的分析方式同上。

Yosemite DP3+iOS8 Beta3 Handoff打电话功能测试

8号一大早就把手机和Mac都升级到了最新的测试版,DP3+Beta3,出现了Handoff开关,但是电话和短信进来的时候Mac上死活就是没反应,在网页上选中电话号码或者在Mac的通讯录里查看电话,也不会出现打电话的图标。查看了很多次,iCloud都已经使用同一个账号登录了,而且在DP2的时候Mac上就提示过你的iPhone已经可以使用Continues功能了。

今天才偶然在威锋论坛上看到一个帖子,原来是需要用同一个账号登录Facetime,恍然大悟。打开Facetime一看,以前用的是另外一个AppleId登录的。重新登录之后打开Facetime的偏好设置,允许联系的方式里面确保手机号已经被选中,下面的iPhone(蜂窝通话)功能选中,就OK了。

再回到通讯录里,每个号码的旁边就会直接出现了拨号的电话图标,在网页上双击选中一个手机或固话,就会出现下拉箭头,里面就有呼叫的菜单了。尝试着通过Mac直接发起呼叫一个号码,不知道是不是因为公司WIFI的问题,反应有点迟钝,接近半分钟以后,手机上出现了通话的信息(就是通话中按Home键回到桌面的那个状态),然后对方接起来之后就可以在Mac上直接通话了,通过过程也有延迟,但是没有那么明显,基本可以接受。用带耳麦的耳机直接插在Mac里打电话也可以,不过对方听到的噪音会比较厉害,缺少了iPhone上的降噪功能。