最新 | 最热门 | 最高评价

+0  Go flag/kingpin 命令行解析多个同名参数

smallfish 发于 2015年01月17日 08:00 | 点击: 3044 | 展开摘要
想了半天标题应该怎么写,都不太好表达,要的效果如下:

xx --name=aa --name=bb

需要解析出 name 参数,默认 flag 解析后返回的是最后一个值,即:bb

放出 Google 大法,搜出一篇早期文字:Issue 842041: Flags: add user-defined flag types

代码示例已经久远,直接拷贝代码运行会报错,原因是 Set() 应该返回 error 类型,而不是 bool 啦。

需要注意的是,如果想实现解析数组,

查看全文: http://www.udpwork.com/item/13773.html

+0  Docker Volume 属主设置

smallfish 发于 2014年12月26日 08:00 | 点击: 1684 | 展开摘要
最近在测试 Volume 挂载时候有点问题,描述如下:

Docker 启动时候,设置挂载目录用户为 foo

宿主机源目录属主为 smallfish

尝试了几种办法,比如:

container 启动后执行 chown

构建镜像时候加入 RUN chown foo /data,这里不仅仅是这种尝试

不管是在 container 或者宿主机里进行设置,都会发现要么里面属主成数字或者宿主机的属主成数字。

原因无非是两个系统里用户 uid/gid 不一样,也可以很

查看全文: http://www.udpwork.com/item/13676.html

+0  翻译-如何组织Go代码

smallfish 发于 2014年11月06日 08:00 | 点击: 1769 | 展开摘要
原文地址:http://talks.golang.org/2014/organizeio.slide,译文尽量贴近原文,会适当的增删,勿拍。



Go 程序都是由包构成,每个文件都以 package 开头,程序主体执行从 main 包开始:

package main

import "fmt"

func main() {
fmt.Println("Hello, world!")
}

最简单的一个 Go 程序,只

查看全文: http://www.udpwork.com/item/13482.html

+0  PostgreSQL JSON 数据类型

smallfish 发于 2014年07月25日 08:00 | 点击: 1819 | 展开摘要
从PostgreSQL 9.3版本开始,JSON已经成为内置数据类型,“一等公民”啦。

还在羡慕什么文档数据库或者BSON么,赶紧玩玩吧。另外9.4版本,提供JSONB(Binary),提供更多JSON函数和索引支持。

刚好手头有一个需求,是涉及到数组类型的,懒的插入多条数据库记录,想起了ARRAY数据类型。

常用的读取操作符目前大概有三类:->、->>和#>。还是直接看SQL查询的例子吧。

先看->类:

postgres=# sele

查看全文: http://www.udpwork.com/item/12802.html

+0  Test::Nginx 模块介绍

smallfish 发于 2013年12月04日 08:00 | 点击: 3517 | 展开摘要
先说句题外话,Perl的测试模块那真是相当的爽,不仅可以爽到无与伦比的正则,还可以对测试用例自由组合、乱序运行等等。

Perl测试模块大概有如下:

Test::Simple

Test::More

Test::Base 及衍生(这个我还没搞透)

一般Perl的测试用例,会在一个叫t/的目录下,一堆叫*.t的文件,其实就是普通的Perl脚本。

来段最简单的测试代码:

$ cat 1.t
use Test::Simple tests=>2;
ok(1 +

查看全文: http://www.udpwork.com/item/11285.html

+0  PostgreSQL ARRAY 数据类型

smallfish 发于 2013年11月28日 08:00 | 点击: 2184 | 展开摘要
刚好手头有一个需求,是涉及到数组类型的,懒的插入多条数据库记录,想起了ARRAY数据类型。

官方文档参考:

8.14. Arrays

9.17. Array Functions and Operators

这里简单的介绍下和一些示例,完整的还是推荐参考官方吧。测试版本为:PostgreSQL 9.3

比如声明integer/varchar数组:

x integer[5]
y varchar[]
z varchar ARRAY

后两个声明等价,懒人的话就别指明

查看全文: http://www.udpwork.com/item/11238.html

+0  我的第一次马拉松(近期跑步总结)

smallfish 发于 2013年11月03日 08:00 | 点击: 1419 | 展开摘要
今年博客写的相当少,今天再来一篇非技术内容吧,源于今天刚好跑完了杭州马拉松(半马)。今年7月份开始计划跑步,从最初的4圈就气喘吁吁快跪的样子,一步一步的熬到现在可以轻松跑完10公里,当然仅仅是慢跑的水平。

凭着一时冲动报名了半马(21km),虽然在规定的时间(3小时)内跑完,还是觉得跟自己最初的目标有点差距来着,原计划2小时跑完,结果跑完已经超过20多分钟。不过也是有原因的,简单总结一下吧。

首先,说到准备。今天算起来今天准备阶段做的太差了,浪费了太多时间和体力。

应该

查看全文: http://www.udpwork.com/item/11061.html

+0  Python Testing

smallfish 发于 2013年09月12日 08:00 | 点击: 1552 | 展开摘要
代码写多了越发觉得测试的重要性,之前一直喜欢“目测”的做法已经不值得推荐了。当然,这只是一个玩笑。

在Python代码里测试大概有这么几种:doctest、unittest和nose(第三方工具)。

个人推荐nose,简单的话doctest也已经足够了。

首先:

代码要易于测试,代码写完对应的测试应该配套跟上。

测试要简单,轻便。

先说最简单的doctest吧,顾名思义,doctest就是在文档(docstring)里完成测试。看以下例子(/tmp/1.py)

查看全文: http://www.udpwork.com/item/10637.html

+0  Python Profile 工具性能分析

smallfish 发于 2013年08月28日 08:00 | 点击: 1566 | 展开摘要
最近碰到“程序速度大大降低”的说法,还是直接用数据说明比较有信服力,以及可以找出真正问题所在。

Python自带了几个性能分析的模块:profile、cProfile和hotshot,使用方法基本都差不多,无非模块是纯Python还是用C写的。

官网文档参考:http://docs.python.org/2/library/profile.html

本文示例基于cProfile模块,先写点测试代码(test1.py):

import time

def func1()

查看全文: http://www.udpwork.com/item/10538.html

+0  RabbitMQ REST API

smallfish 发于 2013年03月28日 08:00 | 点击: 1556 | 展开摘要
最近造了一个轮子:rabbitmq-http,源于内部项目的一个翻版。基于 Go 语言实现。

先说说为什么要写 HTTP API,在使用 RabbitMQ 过程中碰到了以下几个问题:

多语言,这样就要求每个语言都需要安装对应的 amqp 库。

版本,“历史遗留”原因,对应的 amqp 库比较古老,升级不易。

协议实现不全,这个也是跟版本有点关系。

切分和扩展,想自己逻辑里按照用户或 vhost 等来做 hash 切分有点麻烦。

TCP,调试和跟踪不

查看全文: http://www.udpwork.com/item/9539.html

+0  RabbitMQ trace 日志调试

smallfish 发于 2012年12月19日 08:00 | 点击: 1675 | 展开摘要
RabbitMQ 默认日志里只有类似客户端“accpet/close”等信息,对于有异常或者跟踪消息内部结构就比较麻烦了。

翻阅官方教程意外发现了 rabbitmq_tracing 插件和 firehose。

注意:打开 trace 会影响消息写入功能,适当打开后请关闭。

自己顺手写了一个封装脚本,参考:https://github.com/smallfish/rabbitmq-trace

安装上面的插件并开启 trace_on 之后,会发现多了两个 exchange

查看全文: http://www.udpwork.com/item/8886.html

+0  Go 模块测试

smallfish 发于 2012年12月07日 08:00 | 点击: 1484 | 展开摘要
Go 很多地方都透露着“约定大于配置”的理论,比如测试、可见性、语法等等。

本文示例模块为:foo.go,则对应的测试模块为:foo_test.go,测试版本为:go v1.0.3。

先写好示例代码: foo.go

package foo

func Add(a, b int) int {
return a + b
}

对应的测试代码:foo_test.go

package foo

import "testing"

func Test

查看全文: http://www.udpwork.com/item/8804.html
|<<<1234567>>>| 一共12页, 135条记录