一直以来都是Emacs的粉,试过在不同的系统下用Emacs来工作,最早是用的FreeBSD,后来在windows下也用Emacs,然后是Ubuntu下的Emacs,直到现在的Mac OS,比较习惯字符模式下工作。XEmacs虽然强大,但总也上一了手,不舒服。 前些日子看到CSDN上有一篇文章,讲如果学习使用Emacs,其中有一段讲到直接抄 Steve Purcell 的Emacs配置,说是大师级的人物,配置非常地有用。于是今天抽空研究了一下Steve Purcell的Emacs。 先说怎么安装Purcell的Emacs配置,很简单用git把配置文件下到本地的.emacs.d目录。 git clone https://github.com/purcell/emacs.d.git ~/.emacs.d 这条命令会把一些配置文件下载下来,为什么这么说,是因为在运行emacs之前还需要额外的附加软件和配置,如何获得,Purcell已经帮我们做好了。 git执行完,还需要到~/.emacs.d目录里执行一条命令: git submodule update –init 脚本会自动去下载那些额外的内容配置。 不要以为下载完成就可以使用Emacs了,在第一次启动Emacs时,脚本还会去下载一些东西,具体是什么还没来得有研究,总之,等Emacs提示完成了,那才是真的完成,可以使用了。 我的Emacs在第一次启动是提示了一个错误,需要我去site-lisp/html5-el目录执行 make relaxng 于是照做。 等一切都结束。Emacs变了一个样。
Category Archives: 随笔
配置我的Emacs
22-二-12Taobao API应用开发
17-二-12首先说一句,TaoBao API的文档,真是够烂的。一个问题要翻上好几遍文档,再搜索来搜索去,才能找到稍微符合的解释内容。实在不知道这么大一公司为什么文档整这么烂,是不是成心要用户去买他们的有偿服务的。恶心。 做了一个星期的应用,除了查文档之外,都还顺利。先说说授权,根据应用的类型不同,授权方式也不同。 web类型的应用,需要有一个回调地址,怎么个意思呢。就是说web程序向taobao发起授权申请,那么taobao不是直接返回授权结果,而是访问你留给他的加调地址,并加上结果参数。你的回调地址可以通过附加的结果参数来得到session key。 这东西厉害了,所有有关隐私的API调用都得加上这个session key。 C\S类的应用,怎么办呢,没有回调址,他就直接用localhost代替了。原理都是一样的。通过附加参数来取得session key。 关于session key的有效期,也就是授权的有效期,根据应用类型来确定,基本上不需要发布的应用,也就是你不指望卖你的应用来发财的,有效期都很长,像卖家后台服务就有一年的有效期。当初建应用的时候就选错了类型,搞得有效期才一天,心想总不能让我一天授一次权吧,这不麻烦死。后来改成卖家后台服务就行了。 再说说API调用。把官方的SDK下下来一看,亲娘来,怎么还带了一个PHP框架,你让我自己的框架怎么处理。妈的。TaoBao真不是一般人能理解的。研究了一下这个SDK,也就是用到了这个附带框架的自动加载功能,其它的没什么特别。 API调用总的说来,就是向TaoBao服务器发起http请求。只要URL参数拼对了,一般是没什么问题的。API的参数有很多,大致分两类,一类是系统级的,一类是应用级的。系统级的参数是必须传的;应用级的,根据需要自己决定。 调用的时候有一个签名的过程,说明一下:把所有参数都准备好,按照文档要求拼接好字符串,记着要把sign这个参数去掉,拼接的顺序有讲究,一定要对参数进行排序,就是从a到z这种正序排好,这个在程序里用数组做就行。具体怎么做就不用多说了。PHP有现成的函数ksort(); 如果不排序,签出来的肯定是错的。然后把签名结果赋给sign。接着,再用这个完整的参数(添加了sign的)来拼装url。 http请求用curl也行。用file_get_contents也行。Taobao都会返回数据的。数据格式有XML和json之分。我选了json。 先这么多,以后再慢慢说。
OpenCart开发支付宝插件
11-一-12OpenCart用了很久了,渐渐发现它越来越不适合自己的需要。想要达到国人的使用习惯,必须进行大的改动。包括核心框架的改动。例如各种插件模块的文件放置位置,太分散,想写个模块要在目录里来回倒腾好几次,有时候时间一长就根本不记得文件在哪个目录里。当然,这些都得等有时间了才能去弄。 这回要给OpenCart加个支付宝的插件,本来官网上有免费的支付宝插件可以下的,不知什么时候开始,OpenCart的铜臭味越来越重了,只要是附加的东西都想赚点零花用用。只好自己来写。 文件放置的位置前面已经说过了,比较分散,支付模块的文件都在catalog/controller/payment/下,新建个alipay的子目录,和alipay.php的文件。 模块怎么写就不重复讲解了,写这个下来也就是为了给自己一个提醒。主要说下疑难问题。 支付宝模块需要三个文件, alipay.php 给OpenCart用的,当用户确认订单后,用来生成支付宝支付链接用的。这个文件只要能获得生成的订单号,并将订单数据,按照支付宝的要求,拼接成URL链接,让用户能跳转到支付页面就行了。本来是件挺简单的事,而且支付宝的接口说明也有例子,照抄都行。 这里有几点要注意,因为我没有照抄接口的例子,而是自己重头写的,在对URL进行签名时出了问题,签名本身并不复杂,只要对拼接的URL进行MD5运算就行。我在写的时候忽略了例子中的一个操作,即对要提交的数据进行排序。问题就出在这里,我估计是支付宝收到数据后,也是先将变量们进行排序后,再验证签名的,所以这里必须做一步排序的工作 。这个问题影响了进度。这里特别注明一下,以免以后忘了。 alipay_notify.php, 这个文件是用在支付宝完成付款后的异步通知,支付宝在完成支付后会做两个通知,一个是异步的,用户看不到,在后台通知网站,支付成功了,另外,还会将完成后的页面重定向回网站指定的页面。这两次通知都会带有返回数据,供网站使用。 那么为什么会做两次通知呢?主要是因为跳转通知(即alipay_return.php要做的工作),在执行时,跳转页面会被用户给关掉,这样网站就不能通过这个方式来获知付款是否成功,异步通知不会因为用户的操作而终止,所以两种方式起码能保证有一种途径能正常通知网站。 alipay_return.php 这个文件是在支付完成 后从支付宝跳转 回来的页面。 上面两个问题明白了,那么程序就不难写了。 另外一点接口里的return_url和notify_url这两个URL里不能有?flag=abc&open=true这样的东西。虽然不知道支付宝是怎么想的,既然这是规定就必须遵守,不然网站付不了钱就不好玩了。 所以,OpenCart里如果去掉url里的“route=”就必须写成“http://www.xxoo.com/catalog/controller/payment/alipay_callback.php” 最后吐个槽,支付宝这么大的公司,这么大的支付量,现金流量,有这么大的用户群,竟然不支持沙箱测试。非得搞个1分钱的东西去测试,妈的,1分钱也是钱啊,测试10次就是1块钱了。全进支付宝口袋了。
IE呀IE万恶的IE!
21-十二-11Skyline的程序写到加载fly文件的时候,先要去本地目录选择一个fly文件,其它加载到程序里,那么就需要得到这个文件的本地地址。好。页面上放个fileField,再写段js。运行,提示加载文件失败,文件找不到。怎么会找不到,把fileField里的数据alert出来一看,所有的开头都变成了“C:\fakepath\”,搞什么东西,一看就知道IE又二了。去网上一搜,果然,IE8里要想上传文件,得把安全级别调一下。如下: 工具 -> Internet选项 -> 安全 -> 自定义级别 -> 找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”。 再试,可以了。 万恶的IE!
华为C8650如何实现USB调试
05-十二-11话说折腾这个USB调试有段时间了。怎么整都不行。这里是指Mac OS平台。windows平台可以略过不看。 那么这个Mac OS平台为什么不行呢?主要是因为华为的USB模式搞了个光盘加USB双模式,也就是你在windows下插上手机到USB口,系统会自动加载一个光盘镜像,里面是天翼的什么宽带连接程序,这个就是光盘模式,再加上USB功能,就变成双模式了。 这模式不敢说不好,反正对我来说没什么用,尤其到了Mac OS上,这种方式简直就是SB模式,我的Mac根本认不到光盘模式,认到也没用,都是windows的可执行程序。自然的,adb也就认不出android设备,当时还以为是手机太垃圾了。还去论坛问来着。 也就是在论坛逛的时候偶然间解决了我这问题。当时是想看看别人是怎么解决C8650GPS定位不行的问题,找到一篇文章,说要关掉手机的基于CDMA网络的快速定位功能,于是按照文章所说,进入工程模式。 在手机上拨号: *#*#2846579#*#* 进入工程模式后,选择ProjectMenu,然后是“3.后台设置”,接着“4.USB端口配置”,会看到一长串的列表,只要选中“google模式”就行。然后退出工程模式,重启下机器。再连到Mac上试试,手机上会出现已经连接usb调试的提示。在系统里用”adb devices”也能查看到C8650设备了。 写个程序试试,一切正常。