前头的话

目前为止,从刚开始搭建本地博客,部署至github以及coding,到绑定自己的个人域名,再到现在,使用coding的私有仓库同步博客源代码,以及构建了一个基于docker的hexo镜像,用来以后迁移环境,再到现在使用daocloud进行持续自动集成,博客上的东西基本搞的还是比较差不多了。

其实我还是挺喜欢瞎折腾的,说实话,主要也是为了装逼,毕竟我不懂前端,搞一些更个性化的东西还是比较不会,但能折腾的尽量折腾(可惜github pages不支持https,不然也搞一个https的。哈哈)。当然,为了好玩之余,还是想认认真真的做一件事,记录自己的成长,记录每段时间的收获。

本篇记录下使用coding私有仓库,同步博客源代码,方便多台PC迁移。

动机

我的博客系统搭建在一台我只有使用权的笔记本电脑上,也就是公司的电脑上,如果碰到离职或者电脑出了问题的情况,那么博客系统岂不是要全部挂掉,所以要执行异地灾备策略,首先备份博客源代码,那么迁移到新的PC上,只需要安装好相应的博客环境hexo,node等,就可以接着进行编写博客了。

通常,博客源代码的备份可以考虑两种方式,一是各种云盘,二是使用git进行管理。

使用云盘

推荐百度云。过程略。大家应该都会懂,设置一个自动备份目录。

使用coding私有仓库

使用git仓库管理是一个比较好的方式,可以选择github,coding,gitcafe等,我使用的是coding。因为github的私有仓库好像是要收费,coding的私有仓库是免费的,博客源代码涉及到一些敏感个人信息,推荐放到私有仓库。当然啦,有没有用再说,我的意思是现在这个世界,个人隐私真的有吗?【手动抠鼻】

SSH配置

阅读全文 »

TEST

使用daocloud结合docker进行自动化持续集成,测试!
Success!

TEST

利用docker构建了hexo的镜像,迁移到另外的PC上构建博客。
success!!

许下的承诺

前两篇博客Hessian通信案例(java)Hessian源码分析(java)介绍了Java版的hessian的使用以及源码分析。当时也说过打算写一下C++版的hessian的使用和源码分析,现在就是兑现承诺的时候了。其实我项目中实际用到的是C++版的hessian,java版的hessian是我最初接触用来理解hessian,并进行联调测试的部分。

hessian的官网上也提供了C++版的hessian的实现。只不过当时在网上找到的说法是hessiancpp的活跃度比较低,而且编译出问题很多,但是还是决定自己亲自一试,毕竟”绝知此事要躬行”嘛,嘿嘿!当然也有其他版本的C++实现,比如hessianorb项目

Hessiancpp编译

现在是回过头来写,故早先编译碰到的问题我已经没办法复现,此处就只记录正确的编译步骤和方法。

下载hessiancpp

到官网下载源码包:https://sourceforge.net/projects/hessiancpp/,我自己当时的版本是hessiancpp-hessaincpp-1.1.0.tar.gz。

解压编译

解压上面下载的tar.gz压缩包

1
tar  zxvf  hessiancpp-hessaincpp-1.1.0.tar.gz

然后进入顶层目录hessiancpp:

1
cd hessaincpp

你可以先查看此目录下的Makefile文件,然后试着执行:

1
make all

结果,不出所料,编译出错,错误如下:

In file included from hessian_proxy.cpp:19:0:
hessian_proxy.h:31:19: 致命错误:ssl++.h:没有那个文件或目录
编译中断。
make: *** [hessian_proxy.o] 错误 1

可见缺少了一个叫做ssl++.h的头文件,我们再仔细查看Makefile文件,可以看到第一行代码是:

1
SSLPP=../sslpp

显然需要另外一个库。这个库就是提供http代理的功能。网上有人碰到这个问题后,选择了libcurl重写一个http代理,据说还可行。

言归正传,我们需要一个叫做sslpp的库。

下载hessian-sslpp

阅读全文 »

先扯一扯

前一篇博文Hessian通信案例(java)简单实现了Java版的Hessian客户端和服务端的通信,总体看来,实现起来比较简单,整个基于Hessian的远程调用过程也显得很方便。但是知其然还要知其所以然,Hessian的底层是怎么实现远程调用的?是怎么序列化的?又是怎么反序列化的?又是如何通信的?

还记得吗

下面这段代码你还记得吗?

1
2
3
4
String url = "http://localhost:8080/hessian_server/ServerMachineTest";   
HessianProxyFactory factory = new HessianProxyFactory();
IBasic basic = (IBasic) factory.create(IBasic.class, url);
String helloreturn = basic.hello();

上面这段代码就是前一篇博文中实现的客户端的代码,实现远程过程调用就短短的四行代码,如此简单。但是new HessianProxyFactory()是做什么的?factory.create()又是怎么实现的?

一层层的剥去外衣

项目姿势微调

为了探究new HessianProyFactory()具体实现了什么,需要对之前博文中实现的案例进行一点调整。案例中是直接导入了hessian-4.0.7.jar作为lib库的方式,为了在Eclipse中进行单步调试,需要用源码(hessian-4.0.7-src.jar)来替代这个jar包。这里需要注意的是版本,可能会出现兼容性的问题,具体情况可以试错。

导入源码包替换了jar包之后的效果:

client包主要是client端使用的功能,里面就是动态代理和http连接等操作,io包则是处理序列化。
这里需要注意的是,可能会出现一些错误,可能需要添加commons-io-2.4.jar这个包以及Tomcat的runtime环境。具体的话自行解决。

调整成这样后,启动Tomcat,启动Hessian服务端就可以对客户端进行单步调试了!O(∩_∩)O哈哈~

启动Hessian服务端

阅读全文 »

前言

由于工作的原因,接触到了hessain,项目需要做hessain和xml之间的报文转换。但是对于hessian是个什么东西一头雾水。于是接下来的时间了解了hessain协议的序列化规则以及hessian协议进行通信的方式。这篇文章是在完成了这个模块之后很长一段时间(大概3个月)才记录的。一来这个时候没什么事,二来当时就一直打算记录下学习的过程,后来搁置了。故本文对hessain协议做一个简单介绍,然后搭建了一个Java版的hessian客户端和服务端,实现了hessian通信。

什么是Hessian

什么是rpc?

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RMI是J2EE中标准的RPC服务,RPC的完美封装是的将业务逻辑可以进行分布式部署,将运算密集型的工作进行分流(但请求还是同步的),在使用过程中间封装起实现可以实现在客户端调用的时候完全透明(需要在RMI客户端调用方式进行封装)。

什么是hessian?

Hessian是一个轻量级的,自定义描述的二进制RPC协议。Hessian主要用作面向对象的消息通信。

hessian序列化规则

hessian序列化方式目前有两个版本1.0和2.0,具体可以查看官网http://hessian.caucho.com/doc/hessian-serialization.html。另外我在我的七牛空间上传了hessian协议2.0中文版,有需要的话可以下载,防止官网全英文看不懂。另外hessian官网上提供了各种版本的hessian协议的实现,包括java,c++,c#,Python,.NET,Ruby等,上面其实有比较详细的demo。可以参考,当时我也是参考过的。

Hessian通信案列(java)

环境准备

阅读全文 »

最近几天搭建了基于github+hexo的个人独立博客,然后趁着这个劲头,就折腾了关于托管博客到国内的coding(gitcafe已经被coding收购了,网上关于此类的博客大部分是基于gitcafe,其实步骤大同小异吧)的方法步骤。

故本文的内容是关于同时托管静态博客到github和coding,并设置DNS,绑定到域名,同时修改了之前的博客我的个人博客搭建记录中关于博客被百度收录和谷歌收录的部分内容。

折腾的原因

原因很简单,github的服务器在国外,虽然GWF没有把它墙了(之前好像是被墙过),但是访问速度比较慢而且据说百度爬虫不抓取github pages,故为了提高访问速度,同时也能让百度收录咱的博客,就打算同时托管博客到coding上,毕竟是国内,访问速度怎么着也比github快。同时还可以设置国内国外不同的ip分别访问到github pages和coding pages。

上图中reboot_cat.coding.me 和linxi4linux.github.io分别是我托管在coding上和github上的博客地址。

托管博客到coding

注册coding,新建仓库

阅读全文 »

偶然发现

工作中使用外接键盘,在浏览器里操作的时候每次输完字都需要把手移动好长一段距离才到鼠标的位置,很浪费时间,很浪费体力。所以一直想着在浏览器里操作能不用到鼠标,提高工作的效率的同时,看上去也还可以装X.

一直也很羡慕黑客们在电脑前一阵噼里啪啦狂敲,分分钟解决一个难题。那他们怎么上网的呢?于是就这么偶然的发现了Vimium.

安装Vimium

使用linux的人都知道vim,Vimium跟vim名字这么像,必然是有联系的。vimium是chrome的一个插件,配置了一系列类似于vim使用的快捷键,可以极大效率的提高上网操作速度。
安装Vimium很简单,直接在chrome的扩展程序搜索该插件:

上图显示,我的已经是安装了。

使用Vimium

安装好后在浏览器里试着像vim的操作那样随便来几个按键,是不是发现神奇的事了?对的,好神奇,h,j,k,l这基本的键ok了。
快捷键的使用是一个慢慢熟练的过程,所以刚开始如果不太熟没关系,试着多使用几次就没问题了。

记得我前面的博客有提到过碰到问题看官方手册或者官方文档的建议,那么对于Vimium,在normal模式输入?就可以看到vimium基本的操作提示

基本常用的90%以上的快捷键都在这里了,仔细阅读多次使用,就能快速熟练。记住我的那句话,记得看官方的文档或者帮助。

# The End

Blog:

email: linuxcode2niki@gmail.com

2016-6-12 于杭州

第一次听说Android-X86

以前玩唱吧的时候接触过PC上的安卓模拟器,不过这个只是一个软件,效果毕竟不好,想要把电脑变成安卓手机,还差远了。

然后,前段时间一直纠结要不要换个手机,我现在的华为小6已经跟我差不多3年时间了,虽然中间换了好几次系统,但是感觉依然不太流畅了,可能毕竟硬件条件限制。但是又用不起苹果啊,遂想电脑能不能变成安卓手机呢?果然,首先发现了android-x86 download | SourceForge.net,后来又发现了Remix OS PC版,还有其他的。

Vmware 安装android-X86

选了一个最新的版本,没有安装成功。后来重新下载了一个低版本的系统,能成功安装,进去之后是字符界面,没有进入桌面系统。按照linux的做法,折腾了几下,没有成功,遂放弃。

安卓x86中文站

Remix Live USB

带着比较激动的心情,进入技德科技官网,准备试用Remix.

阅读全文 »

前言

本篇博客旨在备忘,并记录了自己折腾了3,4天后顺利搭建自己的个人博客过程中碰到的一部分问题。

搭建个人独立博客有很多种方法,我暂时采用的是基于github Pages的免费博客,博客框架采用hexo静态博客框架。采用此方案的原因,是因为基于github+hexo的博客很多,碰到了什么问题也有很多解决办法。当对一个事情或事物不太熟悉的时候,尽量采用受众比较多的,无关乎随大流,无关乎跟风。这让我想起了自己当时刚刚接触linux的时候,完全陌生的情况下真是无法选择到底以那个系统进行学习,所以当时采取的办法是使用社区活跃度较高,用户群比较多的系统,比如centos和ubuntu,最终我选择了ubuntu,毕竟刚从windows转过来,当然我现在使用的是centos,当然这是题外话了。

一点建议:
我不知道大家跟我是否一样,当我新接触一个事情或事物的时候,我不太习惯去看他的使用手册或者官方文档,而是去google,baidu别人的教程,我觉得这是一个很不好的习惯,以后尽量优先考虑官方手册。对于搭建这个博客来说,就让我深深的体会到了这样的好处。关于hexo的官方手册,关于next(下文会介绍)主题的官方手册,仔细阅读,如果不笨的话,是不需要再看别人的教程从而也能顺利搭建自己的博客。

搭建准备

我的环境:win10 x64

要使用hexo,需要node.js和git.

Node.js下载安装


这里推荐大家采用安装包.msi的方式,不要下载绿色版的.exe,不然后续设置的环境变量可能不对,还有提示npm找不到的问题。可以看到标题Current Version:v4.4..5(includes npm 2.15.5),故为了正确性起见,推荐大家采用.msi的方式,按照上面地址的安装配置教程就可以顺利安装。

如果后面安装hexo的时候出现npm找不到的话,也可以手动自己安装npm。

Git安装

阅读全文 »