David Wang

David Wang

Beijing, China
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的一些扩展支持 /usr/pgsql-9.3/bin/postgresql93-setup initdb
4 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 推荐使用fonts.useso.com 替换掉 fonts.googleapis.com 具体替换方法,可以在WP代码根目录下搜索 fonts.googleapi.com,然后逐一替换为 fonts.useso.com > 例如 wp-includes/script-loader.
1 min read
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/jso
2 min read
Mysql

MySQL 常用命令集合

1. 用户相关 创建一个本地用户,密码为 pwd CREATE USER username@localhost IDENTIFIED BY ‘pwd'; 给用户是授权, 可以授权具体的操作、或者所有权限,以及对应的密码 GRANT SELECT,INSERT,UPDATE,DELETE ON .to user@”%” IDENTIFIED BY “pwd”; GRANT ALL PRIVILEGES ON u_database.* TO user@localhost; 删除一个用户 DELTE FROM  user WHERE user=’username’ AND host=’localhost'; 2. 表相关 增加列 ALTER
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).css('color', 'red'); e.preventDefault(); }); preventDefault() 会阻止控件的默认响应行为,例如阻止链接的跳转。这样就不会和我们定义的事件响应处理产生冲突。这里我们用 return false 替换 preventDefault 也可以达同样的目的,但这样会阻止事件的冒泡传播(他的父级控件将无法收到该
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_collection_name.find('uid' : { $type : 2 }).forEach( function(x) { x.uid = parseInt(x.uid) ;//将String转为Int db.you_collection_nam
1 min read
Geek

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

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

sublime text2 如何配置FTP/SFTP

sublime text2 据说是一个不错的编辑器,最近因为要写一些涉及HTML/JS方面的东西,所以想尝试用一下。因为要远程编辑文件,所以需要用到FTP/SFTP,刚开始胡乱的找了一通,还真没发现 怎么设置,这一点比起EditPlus,PhPStorm什么的IDE要查一些了。不过还是在网上找到了设置方法,于是我将方法记录在此: 1.按 Ctrl+` 调出 console 界面 将以下代码粘贴到窗口,并回车确认。 import urllib2,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();os.makedirs(ipp) if not os.path.exists(ipp) else None;open(os.path.
2 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.log  main; #以下是对静态资源访问的配置, 例如 css img 神马的 location ~ ^/css|img|js|tpl/ { root   /data/www/xxxxx/; #expires
1 min read
译文

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

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

为什么选择GO语言?

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

最近很忙~发发牢骚~

最近很忙~各种产品改版,各种改版。。。貌似真的除了改版,也没别的事情可以做了。换汤不换药,做个新页面喜兴个几天,也就罢了。不考虑成本(的变更)永远也成不了大器,缺乏核动力的产品在江湖上也不会存活太久。 产品和人一样,如果都是只为了钱活着,也就迷失了最初的本性。没有钱不成,但人生的精彩一定是和钱无关的。在积累物质资本的路上投入了过多的时间,自然会失去很多原本自我的梦想。 另外~ 最近Lindoe用户数据被泄露事件,如若不是东京机房的速度还不错,我还真想尝试一下其他的VPS, digitalocean 貌似最近很火,到处广告营销,价格比lindoe便宜一半,而且用的是SSD的硬盘,但只有阿姆斯特丹和纽约有机房,速度可能不会太好。 因为HackerNews上传说有Lindoe用户的信用卡出现了异常,稍后Linode官方也发布了消息证实了用户数据库的被盗,但尚未发现信用卡相关数据被破解的证据。最后我也申请了更换信用卡,省得点儿背中签~呵呵,就到这里,继续忙去鸟~
1 min read
Geek

i9100的USB小板更换

前不久,我的i9100在一次较长时间的充电后(大概在酒店充了10多个小时),留下了后遗症,一直源源不断的提示“充电已暂停,电压过高”,当然无论你是真的在充电,还是拔下充电器,都一个样子的不断提示。最初怀疑是电池挂了,可是和同事交换了一下,发现不是电池的问题,看来是要出去找人维修一下了,不过好奇心还是趋势我百度了一下,竟然发现类似的问题也还不少,一般更换一下USB充电的小主板就可以解决,而且看起来不是很复杂,于是我在taobao上花了30多买了一个相同的USB小板尝试自行更换一下~ 最开始,就是这样不断不断的弹提示框,如果点了“确定”,过不了5分钟还会继续 从淘宝上买的配件,以及一把试用的螺丝刀,加上运费一共花了我50大洋 来张配件特写,线路上还是带有背胶的,看起来是像新货的样子,而且淘宝店上这货出货量很大,看来i9100的这个问题是个通病啊。 准备拆机~先把电池和sim卡拿下~打开背壳后能看到一共7颗螺丝,用匹配的螺丝刀很容易的卸掉~ 卸掉螺丝后,建议从手机的某个拐角,开始拆解,如果有手指甲的话,会很容易,可以尝试用指甲小心挤入缝隙,感觉到卡口的位置,稍稍用力往里挤压
4 min read
闲聊

淘宝盗号的新把戏之短信轰炸瞒天过海

今天早上我遭到了短信炸弹的袭击,是的,就在今天早上,9:15左右,我还在准备出门上班,手里握着电动剃须刀的时候,我的手机开始响起不停,各种短信声音此起彼伏,持续不断着来了。因为是短信所以我并没有着急去看,等我收拾妥当准备出门的时候,拿起手机一看,我的个天啊几十条各种注册短信,充斥在我的手机里,我的第一个念头就是难道运营商那边出问题了???把别人的短信都发到我这里来了?不应该啊,我的手机号没这么点儿背吧。。。我走出家门在上去上班的路上,我拨打了运营商的投诉电话,和电话那边的姑娘唠叨了一通,说实在的向联通的客服投诉实在是鸡肋的行为,除了增加用户愤怒值外,似乎没一点儿帮助。。。。。此时各种短信已经达到100多条了~~~但貌似新增的势头已经止住了。没有新的垃圾短信再进来了。 到了公司又翻看了一下这些短信,突然发现在垃圾短信开始时刻的前几分钟,也就是我早上收到的第一条短信,竟然是淘宝发给我的一条关于商品交易付费的验证码短信!!!然后登录淘宝,发现提示我的手机已经和支付宝解除了绑定,支付宝账户上的手机号已然不是我的了。。。我想我真是点儿背到家了。。。大早上的真么多奇怪的事情发生。。。于是按照页面
7 min read
Code

关于互联网研发管理的追忆

> 无意之中,突然发现了早些年间一个培训课程后的一篇作业,但貌似没有完结,不知道还能找到最终版否。现在对互联网软件研发管理的认知和之前肯定有了不一样的体会,看看之前写的东西也很有意思的,贴出来缅怀一下,那个年代很流行 “救火英雄” 啊!呵呵~ 听完上周末的研发管理讲座后,引发了我对互联网研发管理的一些思考,互联网的研发管理与传统的软件行业研发似乎有许多相似的地方,但也有许多不同的地方。比较明显的一点就是:互联网行业产品研发周期相对比较短,版本迭代发布速度较快,往往几周就会发布一个“新“的产品。 关于迭代速度快的问题,在本次的培训讲座中,老师对该问题有不同的看法:认为我们所说的版本迭代发布速度快,是由于该产品初期设计就存在先天不足的因素,而造成后期维护成本高,也就是传说中的先纵火,再救火,然后再纵火,再救火的恶性循环。造成这种局面的根源主要在于产品初期的需求分析以及概要设计没有预留充分的时间,如果在需求分析以及概要设计阶段上花费更多的时间(占整个项目10%以上),将会大大缩短编码以及测试/上线的时间,用样也会减轻后期维护的成本。 我认为,互联网行业这种快速迭代的开发方式,也有他存
10 min read
闲聊

蛇年的祝福

今天是蛇年的大年初一,爆竹声声除旧岁,在此祝福家人、爱人身体健康,祝福宝宝茁壮成长。在新的一年里写下一些期望留给自己: 1. 既然是蛇年,咱也要应景一下,学习一下Python吧!!! 2. 读书、旅游、模型、摄影、Arduino 我想是要好好花些时间去打理一下了!!! 3. 希望自己的微图收入能够补贴摄影器材的投资,哈哈。 4. 多多把自己的感受,认知记录在此。 5. 也祝自己的身体健康 :-)
1 min read
兵人

不能遗忘的历史-纪念对越自卫反击战-SS070开盒初感

对越自卫反击战,又称中越战争,狭义上是指1979年2月17日-1979年3月16日中国、越南两国在中越边境爆发的战争。在即将34周年到来的时刻,在2013年春节前夕,收到了SoldierStory出品的SS070,对越自卫反击战的兵人,迫不及待的开盒后,给了我满满的感动~。SS的PLA题材不是很多,相信这次的产品一定很抢手~很幸运我预订到了一套 ! 本次的盒子运输工程中没有任何损坏,四角尖尖,对于我这个盒子控来说是个不错的礼物。不知本次产品的原型是谁,不过小伙子看上去很周正。红色的“对越自卫反击战”看上去有种让人热血沸腾的感觉。 盒子的侧面 盒子背面,“谨以此献给 祖国最可爱的人“的题字让人看了也为之动容,仅仅看表面,就已经很期待里面的干货了!!! 打开盒子,第一页是本次侦察兵的特写,看到木有~很有料哦~ 把简介拿掉后,看到一张唱片。。。恩,确实是一张。。。第一次开启的时候,介货是不小心滑落出来的,然后歌声响起。。。顿时让我惊讶一番,这个创意实在是不错!很值得赞一下啊!!! 也许我告别将不再回来,你是否理解?你是否明白?也许我倒下将不再起来,你是否还要永
5 min read