随遇而安

Make it simple & Make it different.

Code

如何保持SSH客户端的链接不被关闭

SSH客户端链接服务器的时候,会有因客户端不活跃而被服务器主动关闭链接的情况。这种情况我们一般可以修改服务器端SSHD的配置文来解决。 1.修改服务器端SSHD的配置文件 sudo vim /etc/ssh/sshd_config 2.修改ClientAlive相关配置 ClientAliveInterval 60 ClientAliveCountMax 3 一般默认ClientAlive的两行配置是被关闭(默认会被#注释掉的) ClientAliveInterval 多久(秒)检测一次客户端是否存活,默认是0不检测,一般修改为60(s)即可 ClientAliveCountMax 最多检测多少次,默认3次即可,如上设置,如果3x60s=180秒内如果客户端无存活应答,服务器端会主动关闭链接 按如上设置,可以防止客户端在不活跃的时候被服务器主动关闭链接 3.修改完配置后,需要重新加载SSHD配置生效 sudo service sshd reload

如何通过招行香港一卡通支付友邦保险保费

本文描述如何通过招商银行香港一卡通通过银行电汇的方式缴纳友邦香港的个人保费 1. 登陆招商银行香港个人专业版 2. 选择 一卡通 -> 转账汇款 -> 香港本地汇款 3. 填写汇款信息 香港友邦,接收电汇的银行为花旗银行,具体银行和账号信息可以参见官网: 【AIA 銀行電匯付款】 https://www.aia.com.hk/en/help-and-support/individuals/premium-payment-channels/bank-transfer.html 页面右上角可以切换语言,以便获得相应语言的账号信息 【AIA 个人保单档案、保单信息查询】 https://www6.aia.com.hk/customer/welcome.do 3.

Code

《奔跑吧,程序员:从零开始打造产品、技术和团队》- 读书笔记

推荐给所有程序员都应该看的一本书 产品 为何创业 你可能不会变得富有 你也不要设想因为自己是早期员工,就可以获得晋升而进入高层(例如 CTO、副总裁), 从而弥补之前的损失。这是因为在早期,你面对的是长时间的工作、快速变化的需求和紧张的最后期限,这一切使得你几乎不可能做出非常高质量的软件。随着公司不断发展,这个赶工拼凑出来的遗留系统已经开始无法胜任工作,所以公司需要招聘更多“经验丰富”的员工去“收拾乱摊子”。如果这个系统是靠你个人英雄式的努力才做出来的,那这正会成为招聘新员工的理由,对于你获得高层职位并没有强大的说服力。 简而言之,想通过加入创业公司而致富并不是明智之举。这不仅是不可能的事情,而且 也是一种不好的导向。对金钱的渴望并不足以让人忍受在建立公司的过程中所经受的那 种残酷的艰难工作。实际上,它甚至还可能会降低你的积极性。 是的,早期的工作尤其是编码开发的投入,这些经历对你成为高管没有任何帮助。 一个投资人这样说过:我们都是在投资这家公司,我们用的是资本,而你们用的是青春 如果想从一个早期的创业公司获得收益,最好的方式是投资这家公司,通过资本换取股份。年轻和热情对于你自己来说是巨大的财富,但对于公司来讲,

Geek

Mac下树莓派3安装ubuntu-mate系统以及VNC服务

本人使用的是Mac系统,故以下内容均以Mac系统的环境为准 ubuntu-mate系统的安装 下载ubuntu-mate的树莓派版的安装镜像文件,目前官网支持树莓派ARM系统的最新版本是: 16.04 插入一张空的micro sd卡,然后确认此卡的设备编号 diskutil list 我的系统上 /dev/disk2 是新插入的SD卡,确认设备号后,我们要先unmount掉此设备,然后再将镜像文件dd到SD卡中,需要注意的是设备编号的命名规则:/dev/disk2s1 是分区,/dev/disk2 是块设备, /dev/rdisk2 是原始字符设备,我们dd的时候的目标对象要选择原始字符设备 diskutil unmountDisk /dev/disk2 sudo dd bs=4m if=ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img of=

Ghost

Ghost上安装Disqus插件

以下内容以 Ghost-3.21.0, Casper-3.0.12 为例,其他版本可能会略有差异,请自行调整。 1. 从disqus上找到你自己站点的代码 可以从这里找到你自己主站的代码: Home => Settings => Installation => Universal Code 或者访问下面的链接:disqus.com/admin/universalcode/ 2. 添加评论框 2.1 打开post.hbs模版文件,找到相关代码段 post.hbs 模版文件的路径:content/themes/casper/post.hbs 然后找到如下代码段落 {{!-- <

Code

REST接口设计规范

URI格式规范 URI(Uniform Resource Identifiers) 统一资源标示符 URL(Uniform Resource Locator) 统一资源定位符 URI的格式定义如下: URI = scheme "://" authority "/" path [ "?" query ] [ "#" fragment ] URL是URI的一个子集(一种具体实现),对于REST API来说一个资源一般对应一个唯一的URI(URL)。在URI的设计中,我们会遵循一些规则,使接口看起透明易读,方便使用者调用。 关于分隔符“/”的使用 "/"分隔符一般用来对资源层级的划分,例如 http://api.canvas.

Ghost

Ghost中让Markdown通过PrismJS实现语法高亮

最近把WordPress换成了GHost,感觉GHost更加简洁专一,虽然本人文章没写多少,但没少倒腾系统,呵呵。之前WordPress是有一个语法高亮插件的,转到Ghost后是默认没有语法高亮的,后来在网上搜索了一下,认识了PrismJS,感觉还不错。 下载PrismJS PrismJS的官网上http://prismjs.com/提供了定制化下载的功能,可以根据自己实际的需求,可以定制化选择主题、语言支持、扩展插件。然后系统会根据你的选择,提供个性化的JS/CSS文件下载链接。一共需要下载两个文件:prism.js & prism.css 配置PrismJS prism.js和prism.css一般会放到如下的路径中: /ghost/content/themes/casper/assets/js /ghost/content/themes/casper/assets/css

PostgreSQL

CentOS下升级PostgreSQL

之前系统是PostgreSQL9.3,看到最近发布的9.4功能还不错,据说对JSONB的支持要强过MongoDB,于是想升级尝一下鲜。 1. 升级前的准备 备份数据这个就不多说了,任何版本升级还是有风险的,所以建议先备份一下数据。 另外对于大型数据库的升级还需要额外的谨慎,对于一个百G级别以上数据库升级的话,可能会耗费较长的时间以及需要足够多的额外存储空间(升级过程中可能会触及数据的copying操作)。本人测试的数据库目前也就700MB的级别。 2.  安装新的PG版本 我们需要下载安装系统对应版本的Repository,具体可以参见官网:http://yum.postgresql.org/ ,目前最新的版本是 9.4.1 wget http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm rpm -ivh

NodeJS

NodeJS异步调用的顺序化处理

NodeJS本身一个重要的特性就是异步处理,但异步处理多了,会把一个完整的“业务”逻辑拆分的支离破碎,让人看到头大,或许这就是所谓的异步陷阱?!最近看NodeJS项目代码时,发现了一个Step的模块,就是专门将一系列执行有先后关系的异步调用做序列化调用处理的,使之在代码层面上尽量看起来更清晰。Step详情可参见 https://github.com/creationix/step 1. 简单的将异步处理顺序化 step本身定义了一个 Step 的方法, Step可以接收任意多的方法,并按顺序执行这些方法,其中this代表下一个方法的回调。 var fs = require('fs'); var Step = require('step'); Step( function readSelf() { fs.readFile(__filename, 'utf-8', this); }, function capitalize(err,

OSMGIS

使用osm2pgsql导入OSM数据

osm2pgsql 是openstreetmap提供的一个数据导入工具,之前我们也用过imposm导入过地理数据,但在某些未知情况下,imposm会出现进程挂死的状态,所以有时候可能我们还是使用传统的方式导入数据比较安全! 首先安装必要的依赖 yum install gcc-c++ libxml2-devel postgresql-devel bzip2-devel proj-devel protobuf-compiler postgresql-devel automake libtool geos-devel boost-devel 为了能读取PBF格式的文件,我们还需要安装以下两个扩展 yum install protobuf-devel protobuf-c-devel 下载源代码 git clone https://github.com/openstreetmap/osm2pgsql.git cd osm2pgsql mkdir build && cd build cmake

Code

CentOS7下Mapnik编译安装笔记

下载mapnik,我选用的是Master的版本,Master版本需要glibc2.14+的支持,这个需要注意一下。 git clone https://github.com/mapnik/mapnik.git 安装必要的依赖 yum install boost-devel postgresql-devel proj-devel proj-epsg 扩展需要的依赖 yum install sqlite-devel libpng-devel libtiff-devel libjpeg-devel libicu-devel 编译的时候,官方需求最少要有5GB(for g++)的内存,对于小内存的用户(我当时只有2G)可能会出现内存不够而异常退出的情况,如果出现以下状况而退出的话: g++: internal compiler error: Killed (program

OSMGIS

搭建开源地图服务(三)-使用OpenLayers呈现地图

按之前的设想,现在应该用MapProxy或TileStache来搭建WMS服务了,但TileMill本身就提供了一个看起来还不错的地图瓦片服务(XYZ模式的),而且OpenLayers本身也支持这种模式,于是打算直接用OpenLayers访问TileMill的瓦片服务接口,先看看效果再说。 OpenLayers是一个开源的为WEB GIS客户端提供的JS库,可以方便的对地图做各种处理。目前已发布3.0版本了,官网:http://openlayers.org/, 上面的文档也算丰富,其中还包含了各种Example, 对初学者帮助很大!另外再推荐一下 Leaflet 相对来说算是轻量级的,但也非常的好用! 1. 简单的地图呈现 本次,我们只是简单的展现一下地图,通过官方的Example稍作修改,代码很简单,示例如下: 其中,ol.source.XYZ.url 中的IP请替换成你自己的即可。 ol.View.center/zoom 指定地图的中心点以及默认缩放级别,我们把焦点移到之前的台湾宝岛上看看! <!doctype

OSMGIS

搭建开源地图服务(二) -TileMill的安装配置

TileMill是MapBox推出的一款地图样式编辑器,同时自身还提供地图瓦片服务,上一章我们已经成功的导入了OSM的地图数据,接下来我们尝试用TileMill对地图数据进行预览和编辑。 1. 安装NodeJS 因为TileMile是NodeJS的项目,所以我们要先安装NodeJS以及NPM包管理工具 yum install nodejs npm 2. 安装TileMill 从githup上下载TileMill项目,然后执行安装 git clone https://github.com/mapbox/tilemill.git cd tilemill npm install TileMill默认情况下,只能本机访问服务(127.0.0.1),如果作为服务器端应用,需要指定一些启动参数才可正常访问。默认情况下端口20008提供瓦片服务,20009为前端应用服务。这个也可以自行修改决定。 cd tilemill ./index.js --server=

OSMGIS

搭建开源地图服务(一) - OSMGIS数据导入

最近在研究开源地图服务的组建,故将一些点滴记录下来。本次构建所涉及到的方案可能具有个人喜好色彩(例如本人有一点点抵触Java,呵呵),因某些环节还需进一步认证,所以且行且记录。 本次服务搭建,初步方案为(根据实际组建过程,可能会调整): 服务器操作系统:CentOS7 (请注意此处的版本,否则之后会遇到问题) GIS数据库支持:PostgreSQL9.x + PostGIS 地图数据:OSM 地图瓦片渲染:Mapnik + CartoCSS WMS服务:MapProxy TileStache WEB前端:OpenLayers 地图底图样式编辑:TilleMill 下面我们就从OSMGIS地图数据的导入开始。 1. PostGIS的创建和初始化 我们选PostgreSQL作为我们的GIS数据库,关于PostgreSQL的安装,之前已经有文章介绍过(centOS7下同样适用)。PostGIS需要额外的安装和配置。PostGIS的安装我们同样使用Yum的方式。 1.1 安装PostGIS PostGIS

美食

青岛美食

青岛是一座美丽的城市,2012年9月份第一次去了青岛,今年8月份又去了一次,青岛的美食、啤酒一直让人念念不忘。记录下来以便回忆。 劈柴院美食一条街 劈柴院,是青岛市的一个著名“旅游景点”,所以按照国内旅游景点的惯例,在旅游景点内享用美食绝对不是一件正确的事情,对于劈柴院,我们还是看看就可以了,当然也有一些小吃还是可以尝试一下的。之前由于要赶下午的火车,一些老字号下午是不营业的,不得已大的胆子在劈柴院吃了一次,感觉非常不好,店铺外面的海鲜虽然是活的,但也只是为了吸引游客的观赏产品而已,实际上来的海鲜不仅贵而且还不新鲜。 高家锅贴,算是劈柴院比较著名的小吃了,味道中规中矩,可以品尝一下。 高家锅贴的卤煮。。。恩,看起来和北京的卤煮差距很大,好像是10元一小碗,这个尝一下也无所谓了,劈柴院满大街上都有这货。 开海红岛 目前一共开了两家店,但无论哪家想要不排号尽量早去,否则等个1个小时是不算长的,店家也很贴心,在等候区会提供一些免费的茶点,另外还可以折纸星星,三个1元,不限数量,最后结账的时候可以直接抵现金折扣。 虾仁水饺,是开海的特色,

Code

PhpStorm 语法检查失效的问题

一直在用PhpStorm,但突然有一天(可能是某个版本升级后?),发现语法错误检查和自动补全提示等功能都消失不见了!一开始在设置里琢磨了半天,各种尝试也没见效,后来还以为是因为我的License过期了(确实过期了,当初赶上感恩节活动买了一年),License过期了就没有语法提示了??!!虽然心里很诧异,但也就这么凑活的用到现在。。。。。直到今天才发现了如下解决方案。 1. 可以先尝试 Invalid Caches,重建项目索引 File -> Invalid Caches / Restart 2. 如果方案1无法解决,则可以考虑重置配置文件的方法 2.1 File -> Export Settings , 首先先备份当前的配置 2.2 退出PhpStorm, 删除应用配置数据 mac下:rm -r ~/Library/Preferences/

PostgreSQL

CentOS6.x下安装PostgreSQL9.3笔记

1. 安装 1.1 首先确认我们的操作系统版本: cat /etc/redhat-release 1.2 然后安装与系统版本匹配的PG源: yum install http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm 当然我们也可以根据需要在 http://yum.postgresql.org/repopackages.php下寻找与系统匹配的源。 1.3 成功安装PG源以后,我们就可以通过yum直接安装PG相关的服务了 yum install postgresql93-server yum install postgresql93-contrib #PG的一些扩展支持

Code

GoogleFonts造成天朝内访问WP小站慢的问题

通常WordPress的后台,以及一些默认主题,或者是老外制作的主题,都会涉及到对GoogleFonts (fonts.googleapis.com) 的访问,墙内用户一般都是很难打开的,以至于造成了WP小站打开缓慢。 解决方法如下: 1. 使用相关插件禁止GoogleFonts的使用: 可以安装 Disable Google Fonts 或者 Remove Open Sans font Link from WP core 等插件。 2. 使用相关镜像替换 fonts.googleapis.com 推荐使用 fonts.useso.com 替换掉 fonts.googleapis.com 具体替换方法,可以在WP代码根目录下搜索 fonts.googleapi.

Go

GO语言中的StructTag类型

StructTag是什么?在Go语言里,StructTag是一个标记字符串,此字符串可跟随在Struct中字段定义的后面。StructTag就是一系列的 key:”value” 形式的组合,其中key是一个不可为空的字符串,key-value组合可以有多个,空格分隔。 StructTag有什么用?!StructTag主要解决了不同类型数据集合间(Struct,Json,Table等)转换中键值Key定义不一样的问题。StructTag可以理解为一个不用数据类型键值Key的映射表Map, 在StructTag中可以定义不用数据集合键值和Struct中Key值的映射关系,这样方便了Struct数据转为其他类型数据的过程。例如我们可以把Struct数据映射成为一个Json格式的数据,或者把Struct数据映射成为一个数据表Table。当然我们也可以依据StructTag的定义,把一个Json数据转为一个Struct结构数据。 下面,我们可以看一下,Struct和Json数据间的互相转换的例子: package main import ( "fmt" "encoding/json" ) type Person struct { FirstName string `json:"

Jquery

JQuery学习笔记: preventDefault

最近在学习一些WEB前端的东西,例如JS/CSS神马的,我会把学习后的一些要点记录下来,对于JS/CSS的兼容问题,我只关注现代浏览器所支持的,对于IE6/7/8的问题会直接忽视,毕竟当下的浏览器基本上都支持HTML5了,对于那些古董丑陋的浏览器就让他成为历史吧。另外说一下当下我看的是 Callum Macrae 写的《Learming from jQuery》 。 关于preventDefault方法 单从字面含义上可以看,是组织默认行为的发生,我们可以用一个例子加以说明: 将一个id=foo的A链接,点击后,将文字颜色改为红色: $('a#foo').click(function (e) { $(this).css('color', 'red'); e.preventDefault(); }); preventDefault() 会阻止控件的默认响应行为,例如阻止链接的跳转。这样就不会和我们定义的事件响应处理产生冲突。这里我们用 return