Nitro's

Aug 19, 2013 - Comments - dev tech

HttpClient 4.3中Https的使用方法

开发Android版Do+新浪微博客户端时使用到了HTTPClient库,当时刚刚接触API接口开发很多都不懂,直接调用HTTPS时直接报证书错误,后来查找资料发现,HTTPClient在请求HTTPS时也需要证书认证。通过自定义HTTPClient顺利实现了接口调用。最近在做另外一个项目,也会通过HTTPClient来调用第三方的API,所以又查看了一下HTTPClient的源码,把HTTPS的请求方式重新梳理一下。 注意:Android项目中内嵌的HTTPClient库版本为4.2.3,详见此处。下面介绍中使用的库为4.3,两者之间有些差异。4.3当前为开发版,谨慎使用。 以新浪微博API为例, 1、通过浏览器下载https://api.weibo.com的证书 Chrome浏览器,地址栏中键入“https://api.weibo.com/oauth2/authorize”,点击左侧绿色锁状图标,选择"连接"选项卡,点击"证书信息" IE浏览器,地址栏中键入“https://api.weibo.com/oauth2/authorize”,点击右侧橙色锁状图标,点击"查看证书信息" 弹出对话框,选择“详细信息”选项卡,右侧点击“复制到文件”,进入证书导出向导,点击”下一步”,选择”Base64 编码 X.509(.CER)(S)“,点击”下一步”,选择证书保存位置。证书导出成功。 2、加载证书信息,构造KeyStore。默认将证书****.cer放在src下 // 从InputStream加载CA证书 CertificateFactory cf = CertificateFactory.getInstance("X.509"); InputStream caInput = this.getClass().getClassLoader().getResourceAsStream("doubanapi.cer"); Certificate ca; try { ca = cf.generateCertificate(caInput); // System.out.println("ca=" + ((X509Certificate)ca).getSubjectDN()); } finally { caInput.close(); } //构造含有信任CA证书的KeyStore KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); trustStore.load(null, null); trustStore.setCertificateEntry("ca", ca); 3、构造SSLContext // SSLContext SSLContextBuilder sslContextbuilder = new SSLContextBuilder(); sslContextbuilder.useTLS(); sslContextbuilder.loadTrustMaterial(trustStore); 4、创建可用Scheme Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder .<ConnectionSocketFactory> create() .register("http", PlainSocketFactory.INSTANCE) .register("https",new SSLSocketFactory(sslContextbuilder.build(),SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)).build(); 5、创建ConnectionManager,添加Connection配置信息

Aug 10, 2013 - Comments - dev tech

Windows 8安装Nexus4 USB驱动

Google Nexus4 USB Driver下载 由于Window8强制启用驱动签名认证,导致Nexus 4的USB驱动无法安装,即便是通过查找本地计算机的驱动文件,Windows8也无法识别当前驱动文件。 为此我们需要现将ADB设备类型添加入Windows设备列表中,在浏览计算机上的驱动文件那一步选择,从计算机的驱动程序列表中选取。 Next,选择“显示所有设备” Next,选择“从磁盘安装” Next,在对话框中选择“浏览”,找到刚刚下载的Nexus USB Drvier文件夹中的“android_winusb.inf”,点击“确定” 此时Windows会根据inf配置信息列出可安装的驱动列表 选择“Android ADB Interface”,Next,弹出警告对话框,选择“是”,这样Nexus 4的USB驱动就安装成功了。 之前有文章说可以通过重启计算机,在启动项中选择禁用强制驱动签名认证的方式来安装,但这样实在是麻烦,不再赘述。

Aug 9, 2013 - Comments - travel life

川藏印象-6月21日

休息一周,出差一周,川藏印象继续开播。 昨晚在左贡吃饭时真心总结出一句话,陌生妹子千万不要用男人的情怀来搭讪她,她和你套近乎你最好敷衍了事,因为她的目的不单纯!她对你的“热情”,对你的“无私帮助”最后换来15元一份的面条时,你却发现没吃饱,这是最惨的现状,因为她纯粹就是一个饭托!可恶的印度面!具体事情经过就略过了,不愉快。 从左贡出发后没有拍太多照片,因为一早出发时就下起了小雨,只能穿着雨衣继续走,没机会拿出相机来拍照,而且昨天打听到昨天沿途有被打劫的,大家也就搭伙一块快速通过为妙。路边很多的青稞架也没有机会拍,那大概是晒青稞时用的。 直到达到目的地邦达镇小雨都还淋淋漓漓的下着。在邦达住宿的大叔家还显摆了一下自己的专业知识,给大叔家修复路由器网络问题,惊讶于他们那个地方竟然采用的是静态IP地址,哇靠,顿时感觉自己家的宽带很苦逼,远程连接还要时时监控路由器上的IP是否变了,还好有TeamViewer。 流水帐了,无图无印象,囧。 玉曲河,胡主席拍 邦达镇,住宿房间后面的麦田。其实那里有一群狗狗在打群架,没拍下来

Jul 31, 2013 - Comments - dev

proxy方式连接httpd与tomcat

这几天一直在微信公众平台的开发,由于服务器验证现在仅支持80端口,本博客又架设在Httpd服务器,80端口占用无法再分配给Tomcat使用,所以就开始考虑Tomcat与Httpd的连接问题。 目前主要有三种方式,1、JK;2、http_proxy;3、ajp_proxy JK方式是通过mod_jk来完成服务器端代码解析的一种方式,也是当前主流的连接方式,鉴于mod_jk已经停止开发,而且配置较为繁琐,遂没有使用它。 http_proxy是通过端口映射将某虚拟主机域下的部分网页解析交给监听8080端口的tomcat来处理,配置起来简单,方便使用,故采用这种方式。 请确保proxy、http_proxy的开启,键入以下命令确认 a2enmod proxy a2enmod proxy_http service apache2 reload 在site-available中添加额外的虚拟主机文件mysite.com,内容如下 <VirtualHost *:80> ServerAdmin XXX@XXXX.com ServerName xxxxx.example.com DocumentRoot /srv/www/xxxxx.examle.com/ ErrorLog /var/log/xxxxx.example.com/error.log CustomLog /var/log/xxxxx.example.com/access.log combined ProxyPass / http://114.114.114.114:8080/xxxx/ <Directory /srv/www/xxxxx.example.com/> Options FollowSymLinks AllowOverride All Options -MultiViews </Directory> </VirtualHost> 键入以下命令让虚拟主机生效 a2ensite mysite.com service apache2 restart 这样在地址栏中键入 xxxxx.example.com就可以直接映射到http://114.114.114.114:8080/xxxx/上面。 参考链接

Jul 26, 2013 - Comments - tech

MongoDB Windows安装指南

注意:如果要安装的操作系统为Windows Server 2008 R2或者Windows 7,请先安装补丁来修复清理内存映射文件的问题。 下载Windows版MongoDB 下载地址 针对Windows系统有三个版本: * MongoDB for Windows Server 2008 R2 edition,可以在Windows Server 2008 R2、Windows 7 x64以及更新的Windows系统上运行。它使用了最新Windows平台的相关特性,因此无法在老版本的Windows上运行; * MongoDB for Windows 64-bit, 可以在所有高于Windows XP版本的64位Windows系统上运行,这包括WIndows 7 x64和Windows 2008 R2; * MongoDB for Windows 32-bit,可以在高于Windows XP的系统上运行。这个版本只是为了支持老版本操作系统的开发与测试。 从MongoDB 2.2之后将不再支持Windows XP,请使用最新版本的Windows来安装体验MongoDB。 注意: * 64位的MongoDB将无法运行在32位Windows上,请下载对应你系统版本的MongoDB。 * 32位的MongoDB只是为了测试与体验,仅支持小于2GB的数据库。 * 你可以通过CMD键入以下命令来查看你的操作系统版本 wmic os get osarchitecture 下载完成的压缩文件名为mongodb-win32-i386-[version] 或者 mongodb-win32-x86_64-[version],其中version表示版本号。 配置MongoDB 默认解压至D盘,修改文件夹名为MongoDB,即D:MongoDB。 在当前目录下新建文件夹data、log,即D:MongoDBdata、D:MongoDBlog 命令行下键入 echo logpath=C:mongodblogmongo.log >> C:mongodbmongod.cfg echo dbpath=C:mongodbdata >> C:mongodbmongod.

Jul 25, 2013 - Comments - travel life

川藏印象-6月20日

昨晚在藏家住,有幸喝到了酥油茶,还有青稞面做的馒头,亲身尝试了一下如何做糌粑,但是做得比较丑,味道还可以。晚饭估计吃了10个小馒头,自从踏上川藏线饭量大增,米饭吃四五碗、小馒头吃10个不在话下,每次大家一块吃饭,我们都会偷偷地笑,1元米饭管饱店家会不会赔钱啊,哈哈。 早饭吃得青稞面做得小馒头,由于高原海拔高,蒸出来的馒头都有点不熟的样子,但是吃起来也就没什么感觉了,只要管饱怎么都行,饿死鬼系列啊。吃完饭出发的时候大概8点多了。从登巴村出发又是一路的上坡,直到5008米的东达山。从3000米爬升到5000米已经毫无压力了,慢慢骑就能到达终点,还是那个原则:8点之前到就行。东达山是川藏线遇到的第一座5000米的高山,但高山面前无阻碍,无高反,伤口早已忘得一干二净(其实伤口已经完全愈合,只等长出新皮肤了,哈哈)。 山谷一处平地上的藏式民居 应该是青稞苗 高山云彩一 高山云彩二 高山云彩三 东达山5008米 右边你又抢镜头

Jul 23, 2013 - Comments - travel life

川藏印象-6月19日

昨天到达芒康还很早,吃过晚饭后和铨哥溜达着去农贸市场买水果。从成都出发到现在我们一路只买过三次水果而且都是在四川境内,进入西藏境内之后不仅是水果贵连蔬菜也是贵得要命,以至于水果都被列为奢侈品。不过今天破例买了四个西红柿和几个桃子,很不新鲜但没有的选择。一路上我们跟乞讨人员似的,在高尔寺山上“苹果妹”的苹果,在理塘旅馆老板娘的李子,在快到八一镇的时候拼车党的西红柿,我们一路上品味各种虽为吃货,但有了你们才会让吃货成为吃货,谢谢你们。 从芒康出发以后,去往西藏的队伍又壮大了一倍,因为芒康是川藏与滇藏的交界处,早上从芒康出发的检查点登记,一个个队伍浩浩荡荡就出发了。今天要爬的是拉乌山4338米,觉巴山3930米。从芒康出发的时候有段路比较烂,只有路基,旁边还有施工队在整修路垭,后面的路基本都是柏油路,压力不大,只是一开始的几个之字形上山略微费些力气,在那里一位大叔在慢慢地推车,问他年龄时才知道已经69岁了,已经是爷爷辈了,佩服他的勇气。爬上拉乌山,没有看到哑口的牌子,也就没有拍照,其间还碰到一走滇藏线的哥们,他说的一句话可以载入名人语录—我有病,我有神经病,我要去拉萨治病。以至于后来我们一直在重复这句话,直到拉萨。从拉乌山下来后各种之字缓下坡,沿着澜沧江一路向下走,到达如美镇后在那儿补充午饭能量。我们本来打算到觉登巴村后休整,第二天再出发翻过觉巴山到达左贡县,后来感觉到达如美这么早,索性吃过午饭后直接继续出发。在从如美镇出发不久后爬上一座高山后,前方出了意外事故,一辆大挂车与一辆面包车迎面擦车,停在了路中间,索性自行车可以顺利通过。下午翻觉巴山时体力又开始出现明显下降,翻山的时候感觉到很累,大概下午7点钟到达登巴村的藏民家庭旅馆住下。 从芒康出发时的路有点烂 远处看大之字形上坡,就在出芒康10+KM处,maybe 拉乌山垭口,后面胡主席在看啥 我们四个 很不乖的狗狗,不吃大饼 澜沧江支流的水,是不是和黄河有一拼 觉巴村,山谷中的小村,绕一圈一圈的山路它却一直在你眼前 出现事故时前方的多之字形,其实我特别爱爬这样的坡

Jul 19, 2013 - Comments - dev

Alicebot 无法解析中文 AIML

最近在研究关于智能机器人对话方面的文章,发现了AI界认可度最高的Alice,下载了Java版Alicebot的实现-ChatterBean。跑起来之后发现英文语义没有问题都可以做出答复,但是汉语词语提交给Alice引擎时一直返回*所匹配的template。起初怀疑是请求串String提取时转码问题但将所有编码均改为UTF-8时问题依旧存在,后来查阅文档才发现请求的字符串需要前后添加空格、AIML文档中的pattern标签也需要做同样的处理。经过这样之后就能成功返回匹配结果了 。 附中文字符串分拆加空格代码 // 汉字分拆 public static String normalizationChinese(String input) { Pattern pattern = Pattern.compile("[u4e00-u9fa5]"); Matcher mather = pattern.matcher(input); StringBuffer target = new StringBuffer(); while (!mather.hitEnd() && mather.find()) { mather.appendReplacement(target, " " + mather.group() + " "); } mather.appendTail(target); return target.toString(); }

Jul 19, 2013 - Comments - dev repost

人工智能标记语言 AIML Tag

v1.0.1 标签 含义 备注 <aiml> 3.2. AIML Element AIML block delimeter <topic name=”X”> 4. Topic X is AIML pattern <category> 5. Category AIML knowledge unit <pattern> 6. Pattern AIML input pattern <that> 6.1. Pattern-side That contains AIML pattern <template> 7. Template AIML response template <star index=”N”/> 7.1.1. Star binding of * <that index=”M,N”/> 7.

Jul 19, 2013 - Comments - travel life

川藏印象-6月18日

从温泉山庄吃过早饭大约9点钟,打理一下自行车继续出发,今天的目标是芒康县,中间翻越宗巴拉山。进入西藏之后的山有一个特点,不会有太多的之字形弯也不会是翻过一个山头后面还有望不见的山头,它会弯转一个几公里的弯缓缓上坡,只要有体力怎么样都能爬上去。从温泉山庄出发大约30公里会看到海通兵站还有高争水泥厂,这个厂子就是这么出名,一说海通就知道这儿有个水泥厂,我们在这里吃午饭-大饼,这里要感谢一路有大饼的陪伴才让我们午餐不会太奢侈。海通兵站对面有军嫂开的小卖部,可以买到3块钱一块的雪糕(真心说那是一个贵啊)。这地方的狗狗成群,而且都特别的馋,哈哈。宗巴拉山海拔4000+米,此时的我们对于4000多米的山已经是毫无感觉,继续走。在宗巴拉山上拍了几张照片就匆匆下来了,一路的大下坡而且路很好,很快就到了芒康县,这里是川藏线与滇藏线的交叉点,一进城巨大的宣传牌写着”感谢重庆人民对我们的无私援助”。 风景如画 难躲的云彩像朵棉花糖 宗巴拉山垭口,半条命 哈哈 好基友一辈子,哈哈 路一直在继续。胡主席拍