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

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

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

  • David Wang
    David Wang
4 min read
树莓派

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/

  • David Wang
    David Wang
3 min read
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/

  • David Wang
    David Wang
1 min read
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/

  • David Wang
    David Wang
4 min read
NodeJS

NodeJS异步调用的顺序化处理

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

  • David Wang
    David Wang
3 min read
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/

  • David Wang
    David Wang
1 min read
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.

  • David Wang
    David Wang
5 min read
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.

  • David Wang
    David Wang
4 min read
OSMGIS

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

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

  • David Wang
    David Wang
5 min read
Code

PhpStorm 语法检查失效的问题

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

  • David Wang
    David Wang
1 min read
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 推荐使用

  • David Wang
    David Wang
1 min read
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)

  • David Wang
    David Wang
2 min read
Code

mongoDB字段类型的转换

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

  • David Wang
    David Wang
1 min read
Go

nginx下Go如何配置成fastCGI工作模式

最初是因为笔者的服务器上已经有了nginx + php(fastcgi)的项目,所以在引入Go的项目时,自然的就想到了通过nginx的虚拟主机+fastCGI的方式支持Go的项目。其实很简单,以下就是简单的示例,照此方法就可以让Go以FastCGI的方式Hello word了 ! 1. Nginx 需要做的配置 server { listen 80; server_name  www.xxxxxxx.xxx; #这里可以配置域名,如果需要支持多个网站的话 #如果需要可以配置访问日志 #access_log  /var/log/nginx/log/host.access.

  • David Wang
    David Wang
1 min read
译文

如何成为一名远程软件开发者【译文】

在家工作会给你自由的空间做更多的事情,远离来自办公室环境的干扰。另一方面,他也会给予整天偷懒的自由! 我和8个同事通过Wave和Nathan Bertram在ArrangeMySeat上远程工作超过了1年,甚至会更久。下面是我从这次远程工作中收集到的一些经验。 Workspace (工作空间) 远程工作可以让你自由的挑选自己的办公室。这是有多好呢?关键是要选择一个适当的空间。这里有几件事情是会有帮助的: 找一个可以不被他人打扰的地方,而不是让你抓狂的地方 安静或适度的噪声水平 一个指定的工作地点 (不是你的床) 有一个工作空间并且不会被人打扰,这是完成工作的关键。经常被和你居住在一起或者其他的人打断,这会扼杀你的生产力。 在咖啡馆工作是一个不错的选择,可以加入到我们的免打扰指引手册里。人们不会理你,你会和咖啡因一起渡过,而且你周边也不会太吵。 如果你在家工作,你要找一个工作专用的房间或者书桌,并一直保持下去。如果你在你的床上工作,很快你就会把你的工作和睡觉联系到一起,

  • David Wang
    David Wang
9 min read
Go

为什么选择GO语言?

Go是2009年11月10日推出的一个新的系统编程语言并保持快速的更新。Go是一个优秀的工具,优雅的并发模型和独特的面向对象的方法,深深的吸引了来自编译和脚本语言开发者的关注。 “Go在未来将成为服务器的语言。” – Tobias Lütke, via Twitter 是否真的像Tobi断言的一样么?我们可以评估之前,如果Go是现代网络发展的灵丹妙药,让我们来看一下现在网络开发的发展趋势,并考虑一下什么是“未来服务器语言“应该提供的。 Real-Time Web (实时WEB服务) Ajax开始于2005年。 现代网络应用程序提供了实时协作,Trello 和 Asana 是两个典型的例子。 有些应用程序采用bolt-on解决方案,像推销员一样。他们的工作一直都是在紧要关头,感觉类似于用3D技术拍摄的3D影片与影片后期追加3D效果的对比。 “人们期望他们使用的任何产品都有好的体验。” – Gene Smith Go语言需要解决C10K的问题,

  • David Wang
    David Wang
9 min read