node服务器部署https
这个是16年年末时做的一项工作。随着苹果公司宣布在2017年后上架其商店的App,内部不得含有不安全的协议调用,换句话说,提供给app的接口调用,如http这样的,都必须使用安全的https协议。
https具体的概念,可以通过维基百科自行查询。本文主要介绍如何在node.js服务器上部署免费的https证书。关于本文用到的Let’s Encrypt证书签发服务,具体介绍可以在其官网上看。
Thrift实战两则
TECHNIQUE | THRIFT, JAVA, NODEJS, JAVASCRIPT
我在一年前开始使用Thrift,契机是当时要开发一个后台内部数据查看工具。公司内部大多数系统都是使用Java作为主要语言,而我在毕业设计是对Java产生了厌恶,决心在未来应该尽可能远离Java开发(可惜事与愿违,现在已经成为职业Java开发)。那时我还是一个爱写小程序的测试工程师,比较偏向类似于Python、Javascript等等的“小语种”,这时,我遇到了Thrift。
D3路径动画
转自Path Transitions,感谢
当我们要实现一个以时间划分的实时演变动画,我们经常会使用时间标记x轴:随着时间演进,新的数据会从右侧进入,老的数据会从左侧退出。如果我们直接使用D3内置的路径插值器,我们可能会看到一个奇怪的抖动动画:
D3转变器详解
D3使用selection.transition可以在改变DOM时简单实现动画的效果。举个简单的例子,实现一个改变页面字体颜色的代码为:
1
d3.select("body").style("color", "red");
如果加上变换及变化的时长,一个简单的字体变颜色的动画就有了(默认为黑色):
1
d3.select("body").transition().duration(2000).style("color", "red");
以下开始了解转变的细节。
D3对象连贯性教程里的知识点
转自Object Constancy,感谢
对象连贯性(Object Constancy),在教程中的解释为:呈现某种特定数据的图形元素可以通过变换的方式捕捉可视化的轨迹,也就是变换之间的显示是连贯的。
D3内嵌选择器
转自Nested Selections,感谢
D3支持d3.selectAll("A B")
的方式内嵌选择器,这个跟d3.select("A").selectAll("td")
的效果一致。
D3选择器原理及数据绑定练习
转自How Selections Work,感谢
元素分组
选择器是一个分组(groups)数组,每个分组是元素(elements)数组。
使用selectAll方法,会使旧选择器变成新选择器中的一个分组。此分组中会多出一个母节点属性,会存储组中元素的母元素信息。
大多数使用,可以通过内置api自动遍历分组内每个元素。函数的第二参数可以指定处理某个索引的元素。
非分组操作
只有selectAll有针对分组的特定行为。select操作会保留现有的分组。
select与selectAll不同之处,在于对旧选择器中每个元素,在新选择器中必须拥有一个元素。而且数据也会由母节点传递到子节点。
append和insert方法是select的顶层封装,所以他们也会保留分组和传递数据
OMPTestingHelper介绍
入口(index.js)
包含服务、路由初始化,路由映射等
http服务(server.js)
建立http服务,按照路由映射发送请求
路由(route.js)
按照请求内容分配
Three Little Circles教程缺陷
笔者最近对开源数据图形化库d3产生兴趣,开始学习相关教程。 教程来自Three Little Circles,感谢
就原因来说,可能是由于新版本的d3与教程不同步导致的。首先我们来看结果,按照教程出来的结果是:
而我们教程的目标却是:
很明显,前三个圆出问题了。原因是教程中的circleEnter对象并没有包含原始的三个circle。我在这并不分析为什么没有包含,想借此介绍发现问题的经验。
在nodejs上用d3
笔者最近对开源数据图形化库d3产生兴趣,开始学习相关教程。
nodejs拥有异步I/O、事件驱动等优点。不过笔者对以上两个特点理解得不太深入,喜欢使用的原因是看到可以把javascript搬到后台去,而且使用的是谷歌V8,如此高大上怎么应该试一下。
今天的话题是如何把d3搬到nodejs上,进而把牛X的数据图形化库应用在后台,动态生成静态页面。其实呢,nodejs与javascript的库兼容性都是很好的。基本思想是,在node内部模拟一个dom对象,d3对这个dom对象处理完后必会对这个dom对象做出修改,最后node输出这个静态dom对象到浏览器即可。
Storm学习笔记(一)
感谢xumingming提供的中文翻译《Twitter Storm的一些关键概念》 感谢官方wiki提供的原文
一些概念
计算拓扑:Topologies
- Topology对象里包含实时计算程序
- 一个Storm的Topology会一直运行——除非显式杀死
- 一个Topology是Spouts和Bolts组成的图状结构,而连接Spouts和Bolts的则是Stream groupings
参考阅读:
- TopologyBuilder:使用这个类在Java中构造计算拓扑
- 在生产集群上运行计算拓扑
- 本地模式:通过这篇文章学习如何在本地模式开发和测试计算拓扑
笨办法学python笔记
一篇之前学习Python的笔记,感谢《笨办法学Python》的作者。本文是结合《笨办法学Python》和Python3.3的一些补充。
Ex01
print
后要加括号(python3.3)
Ex02
#
号起注释作用
Ex03
- 整型运算结果一般为整型,除法结果则为浮点型
Ex04
print
参数连接打印时,自动插入空格
eric5自定义光标样式
最近在使用eric-ide写Python,突然想把编辑器editor的界面样式改变一下。通过内置的配置项很容易就可以做出仿Linux的用户界面。连接是我使用的syntax_highlighting_Python3样式,直接导入可以看到效果。其余的配置需要自行修改editor style和user interface。
过程中有个比较郁闷的事情,就是光标的颜色问题。从白色背景换成黑色背景,我以为是只要改变编辑器的前景色为白色,光标会自动变更成白色,而实际上是不可以实现的。我通过google查询类似“eric cursor color”等等的关键字,均没有什么好结果。下面介绍一种简单修改eric5光标的方法:
进入Configure->Editor->Style,这里有个Caret选项,默认是关闭的。打开后的效果相当于网页中的hover效果,移上去时会加亮。我把caretline的背景改为黑色,前景改为白色,自定义光标的效果就出来了。
Written with StackEdit.
tesseract识别验证码
最近在折腾一个玩意:验证码识别。起因是部门推自动化测试,而公司软件统一登录入口有个验证码输入框。虽然可以让维护人员改成固定或屏蔽掉(现在还真屏蔽了-_-),不过我还是选择了折腾一下把它破解。
架构:
eric5+python3.3+pillow2.0.0+pyocr0.1.2+tesseract3.02+cowboxer1.02+windows
最近半年在接触python,一直使用eric,挺不错。当然不是很精通eric,譬如还不会debug功能怎么用。本次开发使用了流行的开源光学识别库tesseract,本人能力有限,不讨论底层的东西,只说说我对它的使用。Pyocr是连接python和tesseract的桥梁,其实有更好的python-tesseract项目,待会讲到pyocr时再说理由。