随遇而安

Make it simple & Make it different.

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

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

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

树莓派

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-0.10,Casper-1.3.1 为例,其他版本可能会略有差异,请自行调整。 1. 找到 post.hbs 模版文件所在 例如:yourghostdir/content/themes/casper/post.hbs 2. 从disqus上找到你自己站点的代码 可以从这里找到你自己主站的代码: Home => Settings => Installation => Universal Code 3. 添加评论框 编辑 post.hbs, 将评论框的代码插入到 </footer> 和 </article>

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

Code

mongoDB字段类型的转换

最近在使用mongoDB, 发现mongo对字段类型的定义并不是很严格,完全依赖传入数据的类型,在加上PHP是弱类型的语言,所以难免会出现一些错误。如果预想的类型是Int型,但数据存储的是String,那数据在根据Int型检索的时候,就完全失效了。如果发现某个字段在存储的时候出现了分歧怎么办?当然首先要修正程序在数据传入时候的错误,对于Int型一定要保证其类型的正确性。 example: $user_arr = array ( 'uid' => intval ($_SESSION["user"]["id"]),  //对于Int类型的数据,一定要保证其类型的正确性! ); 那如何修正当前已存在数据类型的不同呢?! 查询所有字段类型是String的数据,然后将String转为Int: db.you_collection_name.find('uid' : { $type : 2 }).forEach( function(x) { x.uid

闲聊

如果你的手机频繁重启或者关机,那可能是电池的问题。

最近我的i9100不断的重启,关机,尤其是发生在电量过半的时候。我用的是第三方的电池,而且也使用了10个月了,我越发怀疑是电池的问题,我想可能是电池电压输出不稳造成的。于是从淘宝上我又花了75大洋购得了一块原装电池。。。。话说怎么识别是原装电池,我也只能看评论了,价格从几十到上百的都有,我也只好碰碰运气了。不过还好,自从换上以后,之前频繁重启关机的症状没有了 😀