yatsenix - 週一, 2015-12-07 04:29
gRPC对PHP的支持情况说明
gRPC设计能够支持大多数常用编程语言,PHP也不例外。
不过由于gRPC对不同语言的支持力度不一样,有些语言支持的非常完善,
而有些语言支持的不够完善,甚至达不到能够使用程度。
很不幸的是PHP语言正是支持力度非常靠后的一种语言。
gRPC包括客户端部分和服务端部分,对不同的语言也同时分为这两个部分。
以前从这两个部分说明gRPC的 PHP支持情况,软件包使用的是各包最新的有版本号的beta状态的包。
(也许还可以完全部使用仓库的HEAD版本进行测试,结果也许有所不同,后续有测试之后补上。)
基础依赖包
- gRPC C实现包和运行库
- protobuf实现包和运行库
- PHP-5.5+
对PHP客户端的支持
客户端的支持,需要几个模块的配合使用,
yatsenix - 週五, 2015-12-04 05:05
Go调用gRPC服务两例
先上两段Go语言客户端调用gRPC服务的示例代码:
yatsenix - 二, 2015-12-01 09:52
GO运行时环境变量
介绍
Go运行时,是除了普通用途的垃圾回收,goroutine调度,计时器,网络poll功能外,开启额外的调试输出,
或者改变运行时本身行为的工具。
这些工具是通过传递给go程序的环境变量控制的。本篇文档描述了运行时支持的4个主要环境变量的功能。
这4个主要环境变量是,GOGC,GOTRACEBACK,GOMAXPROCS, GODEBUG。
GOGC
GOGC是Go运行时支持的最老的环境变量之一。它甚至比GOROOT还老,但却不广为人知。
GOGC控制垃圾回收的不良影响。其默认值为100,表达的含义是垃圾收集器直到达到上次收集的100%时才会被触发。
简单来说,默认情况下垃圾回收会在每次堆使用翻倍执行。
如果设置为更大的值,如GOGC=200,将会推迟垃圾回收直到堆增涨到前一次的200%。
如果设置为更小的值,如GOGC=20,意味着垃圾回收会更频繁的执行,并且在每次触发回收前能够分配的数据越来越少。
设置GOGC=off将会完全关闭垃圾回收。
yatsenix - 週六, 2015-10-10 03:03
首先是使用ExQuilla这个插件,步骤如下:
1、Tools => Add-ons => 搜索 “exchange”
2、安装 “ExQuilla”
3、Tools => 启动”ExQuilla for Microsoft Exchange” => “Add Microsoft Exchange account”
4、填写邮箱地址和密码, 其他默认, 然后下一步
5、直接点 “do auto discover”, 出现两个绿色的小原点就代表一切OK, 然后下一步,直到完成。
从头到尾只需要填写邮箱和密码即可,其他默认
关于exquilla的破解,下面几步,应该就可以了。
为什么是用下面的格式,可以参照这个连接:http://blog.ssfighter.com/2015/01/exquilla-31-0-crack/
yatsenix - 三, 2015-10-07 04:13
cargo的依赖处理,
三种依赖配置方式:
[dependencies]
depend-pkg-name="pkg-version or *"
depend-pkg-name={git = "git repo", rev = "bfabc843ef2"}
depend-pkg-name={path = "./helloutils"} #支持绝对路径,相对路径。
一些释疑
在编译时,cargo首先从https://github.com/rust-lang/crates.io-index下载官方所有crate的索引列表。
crate索引crates.io-index大小达到31M,估计以后还会变得更大。
下载依赖包的过程是递归的。
索引列表放在什么位置呢?~/.cargo。
如何指定本地某一目录下的crate呢?$CARGO_HOME,设置该变量后,~/.cargo位置被覆盖了。
本地搜索一个crate的机制,从该项目目录开始,逐级向上查找带.cargo目录的位置。
上否支持多个$CARGO_HOME路径呢?
yatsenix - 三, 2015-09-30 07:59
python字符串与hex转换,还挺麻烦的,而且发现不同版本还处理方式不一样。
找了段适用python 2.6-3.5的转换代码,可以容易在任何项目中使用了,
yatsenix - 三, 2015-09-30 04:07
开用spacemacs
大概试用spacemacs一个月了,试用感受是,对我来说spacemacs是一个高度整合的emacs配置优化与管理项目。
除此之外,spacemacs还有简单整合vim操作的操作功能。
spacemacs中,配置一个emacs扩展非常容易,只需要加一行配置,加入扩展的名字即可。
在spacemacs中,扩展叫做layer,以实现与扩之间的整合封装。
每个layer管理并使用一个或者多个emacs扩展,并提供适当的接口实现统一配置。
这样当然有一个缺点,有些没有进spacemacs layer的扩展,还需要手动做一些定制化配置。
在定制化方面,spacemacs实际上仍然做的比较好,提供了丰富的接口与详细的说明。
另外,spacemacs还提供了统一的theme支持与theme管理功能,
并且最新v0.104.1版本默认的theme已经比较好看了,一直用着的。
yatsenix - 週六, 2015-09-05 02:51
python-spidermonkey
目前只支持python2
停止开发的起始项目:https://github.com/garywiz/python-spidermonkey
相对新的clone项目:https://github.com/smurfix/python-spidermonkey/
PyExecJS
比较新的一个项目,以插件的方式,支持不同的JS引擎,
像v8,nodejs,spidermonkey等。
并且该项目支持python3。
主项目停止更新有一段时间,但clone项目今年最近还有更新,
官方项目仓库: https://github.com/doloopwhile/PyExecJS
相对新的clone项目:https://github.com/Timtam/PyExecJS
附注
这两个项目使用的方式,其他语言中也可以采用,不过要做许多的封装。
从测试来看,PyExecJS安装简单,使用也非常方便,在项目中可以用这个了。
yatsenix - 四, 2015-08-27 03:27
在docker中安装运行gitlab要点记录
存储卷
repositories
gitlab-satellites
.ssh
uploads
Binds和Volume有什么关系与区别呢
首先对于存储目录务必使用Volume指令,否则容器停止,数据丢失。
然后,在指定Binds时,则Volume中的数据写入到Binds存储中。
如果没有指定Binds,则Volume中的数据写入到默认创建的Volume中。
认证问题,ssh_port问题
由于ssh方式git服务执行在docker容器中,所以要在docker容器中启动sshd服务。
并且还有要辅助的参数,
-p 2222:22 把宿主机上的2222 端口映射到容器的22端口。
gitlab.yml中,设置ssh_port=2222
Dockerfile中,EXPOSE 添加22端口
yatsenix - 三, 2015-08-26 07:21
微信登陆代理:wxagent
微信桌面版做的很弱,并且没有Linux版。
虽然在Linux上可以使用微信web版,有时很难在一堆浏览器标签中找到。
像这样的应用,应该有属于自己的程序窗口与桌面空间。
微信登陆代理实现目标
提供后台服务,管理微信登陆会话,负责与服务器通信。
以后台服务的方式运行,占用资源少,并且能够长时间运行,避免了需要经常手机扫描登陆的麻烦。
不过,由于这个代理提供的消息服务不再有认证等安全功能,登陆代理最好安装在安全的机器上,像本机上,或者是内网的私有服务器上。
微信登陆代理原理
提到实现,不免要涉及到微信通信协议,好在已经有人对微信web版协议做了分析,虽然还有不完善的地方,基本上可以实现简单登陆与消息收发功能了。
微信登陆代理根据现有资料,使用PyQt5实现了微信web版协议,通过测试,把相关API更新到了最新的微信的wx2版本。
并且把二维码以dbus服务方式提供出来,这样该服务就不需要有UI的支持了,这也是与现有几个Linux版微信不同的地方。
除了以DBus方式提供API,还可以使用socket方式,可以更灵活了。
頁面