易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
cat 将内容写入文件

cat 将内容写入文件

利用cat将内容写入文件其实很方便:

echo 10 | cat > /var/www/test.txt
两个函数一个管道,就这样完成了。
在这里我不多介绍cat的操作用法,毕竟很多时候用cat只是为了看一个文件 ,真要学了,网上有大把的资料
事实上,想这样调整的时候是因为我在做一个处理,即PHP的函数:msg_send和shm_*系列
1、用shm_*写程序。在命令行接收,动不动就挂掉。。。我人也崩溃了,太不稳定了
2、用msg_send和msg_receive发,用msg_queue_stat统计的时候,发现即使我的内容很短,也只能qmax为40,这时候我就在想是不是有其他原因,有人说可以调整/proc/sys/fs/mqueue/msg_max,因为来自proc,所以我想到了用cat写入。于是就有了本文
---EOF---
最后,由于msg_send其实他能够接受的最大字节数就是16384,所以,如果你的内容过大。比如我一条信息就是500字节,明显qmax最多只有32.而且最大字节还不能调整。。。或者说调整无效。。。
于是我现在msg_send发送的时候,其实message的内容是文件名。receive后,读取文件内容处理完毕后删除文件 。如果处理失败,扔到failed目录里
最后再有一个程序glob("/xxxx/*")进行按批处理。
蛋疼就是这样产生的
golang将时间戳转为字符串

golang将时间戳转为字符串

在golang里面获取时间戳并不难。只要加载time包。然后time.Now().Unix(),就可以了,但接下来转成string就麻烦了

本来,加载strconv的话,用strconv.Itoa也可以解决,但unixtime的时间戳是int64, itoa只能转32位的。这时候就只有一个恶心的办法了。

fmt.Sprintf("%d",int64),这个是肯定可以转,。。。。我现在就是用这种办法的

做个笔记

--EOF--

后记,在群里问了一下,结果asta谢就说了。明明有strconv.FormatInt,用godoc看了一下,居然没看到。可能我的版本旧了。

strconv.Format(int64 , 10) ,后面的参数是2~36,简单就是php的base_convert的go版本。看来,go做tinyurl也是用这个函数了。哈哈

感谢群友们。

---next

自此,go语言的int转换成string有3种方法

1、int32位,strconv.Itoa
2、大于32位,strconv.FormatInt()
3、万恶的fmt.Sprintf...好吧,这个我在php里是经常用来做格式化

golang的md5用法

golang的md5用法

越来越怀念PHP的一些函数,比如md5("123456")

多方便的函数啊。但在golang就不行了。。。
1、import (
"crypo/md5"
"encoding/hex"
)
2、代码:
m := md5.New();
m.Write([]byte("123456"))
println(hex.EncodingToString(m.Sum(nil)))
是不是很麻烦??
mac 接多显示器失败

mac 接多显示器失败

本来觉得有一个24的显示器可以用来码代码,看H片会很爽,结果用了N个办法也连接不上。。

detect的时候好象有,但VGA就是不亮。我的线是VGA的,但破显示器只支持D-SUB(还是HDMI?),只支持那个数字线。一直说我的VGA没有信号进去,好失败啊。。
但确实能够detect这个显示器。型号什么也有的,就是屏幕一片黑暗。以前连接普通的显示器也都OK。可是,这个dell的不行。纠结
如果不会设置,可以参考这个pdf:7d12ead3d63a6d5c46f1a1635606306d
go语言的json

go语言的json

在写一段代码测试的时候,用上了json类,因为json还算是比较常用的,所以这个的转换什么的要先掌握好。

吭嗞吭嗞写完代码,发现输出都是空,想想不科学啊,struct还是struct,为什么都输出空呢。
想着astaxie说过为了给大家写文档,特地写了一个项目gopkg,于是上去看了看:https://github.com/astaxie/gopkg/blob/master/encoding/json/Marshal.md
咦,代码结构和程序都是几乎一样的,那为什么会出错呢?
去群里问了一下,原来就是因为首字母小写的问题。
一直以为只有func的首字母大小写代表了 公有方法和私有方法,原来,变量这玩意也是这个含义。。。纠结,做个笔记备份一下:
贴出错误代码:
type ColorGroup struct {
id int
name string
color []string
}
colorgroups := ColorGroup{
id: 1,
name: "reds",
color: []string{"a", "b", "c"},
}
b, _ := json.Marshal(colorgroups)
os.Stdout.Write(b)
----
struct中的变量要注意大小写。。。。。
小写的话,在转换的时候就会隐藏掉,可以根据情况进行设置
当然,如果确实 需要小写,又需要输出,怎么办呢??
可以写tag ,参考:
type ColorGroup struct {
Id int`json:"id"`
name string `json:"name"`
color []string `json:"color"`
}
反正。。。struct输出json,一定要大写,但是如果要变成输出小写,就得用tag
如果原来就是小写,再怎么写TAG,也不会输出。。。
将网页生成pdf的快速方法

将网页生成pdf的快速方法

在网上看到一篇好文章 ,以前都是加入收藏夹,以后可以打开来看。

后来,开始用:readitlater(现在改名叫pocket了),确实都比较方便,毕竟pocket也是全平台支持的。
但即使这样,也会遇到不少的问题,即pocket中的网页已经无效了。晶啊,这太让人纠结了,我存下来可不是只要一个网址的
当然在windows下面,以前还用cyberarticle(网文快捕),现在叫wiz了,但不能存在自己的服务器上,总是不太舒服。
于是就想着把内容copy出来存为word,方便以后查,但现在,发现有快速生成pdf的方式,轻松将网页生成pdf了,以后查询起来就方便了:
818a04065a245c943d374ccabcf406ba
上图怎么样?可以选择指定内容,可以指定背景。而且,不需要额外装软件。
它是谁?它是chrome。
嗯,直接按打印就能看到上述菜单了。还不赶紧试试?
对着谢大的教程写代码(一)

对着谢大的教程写代码(一)

谢大的教程在:https://github.com/astaxie/build-web-application-with-golang

在复刻和学习的过程中,把问题记录下来的笔记
1、
// 声明一个数组
var array = [10]byte{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'}
// 声明两个slice
var aSlice, bSlice []byte

// 演示一些简便操作
aSlice = array[:3] // 等价于aSlice = array[0:3] aSlice包含元素: a,b,c
aSlice = array[5:] // 等价于aSlice = array[5:10] aSlice包含元素: f,g,h,i,j
aSlice = array[:] // 等价于aSlice = array[0:10] 这样aSlice包含了全部的元素

// 从slice中获取slice
aSlice = array[3:7] // aSlice包含元素: d,e,f,g,len=4,cap=7
bSlice = aSlice[1:3] // bSlice 包含aSlice[1], aSlice[2] 也就是含有: e,f
bSlice = aSlice[:3] // bSlice 包含 aSlice[0], aSlice[1], aSlice[2] 也就是含有: d,e,f
bSlice = aSlice[0:5] // 对slice的slice可以在cap范围内扩展,此时bSlice包含:d,e,f,g,h
bSlice = aSlice[:] // bSlice包含所有aSlice的元素: d,e,f,g
主要是加深颜色的那句。。。。
2、
type human struct {
name string
age string
height int
}
type student struct {
human
skills
int
age int
speciality string
}
func (h *human) sayhi() {
fmt.Printf("human say hello, i'm %s \n", h.name)
}
func (h *human) gogo() {
fmt.Println("gogogo");
}
type men interface{
sayhi()
gogo()
}

然后用的地方:
mike := student{human:human{name:"mike"}}
var i men;
i = mike;
i.sayhi();
因为这是早期的所见所得编辑器。对于代码高亮做的不好。忍忍吧。。。
上面的代码是会出错的。
cannot use mike (type student) as type men in assignment:
student does not implement men (gogo method requires pointer receiver)
需要:mike := &student{human:human{name:"mike"}}
看到没,在student前有个取址符。主要是因为方法指定的是:(h *human),如果是(h human),就不需要取址符了
*human 是指针,但是你mike不是指针,只是对象,所以没有实现这两个方法,才会报错
然后谢大给出了这个:http://segmentfault.com/q/1010000000198984#a-1020000000199002,说是里面有解释
假设T是struct,那么Go里面遵循下面几个原则:

T的方法集仅拥有 T Receiver 方法。
*T 方法集则包含全部方法 (T + *T)。

所以你上面的例子dept1应该是拥有方法:Name和SetName
而&dept1拥有方法:Name、SetName和Relocate
这个就是Go里面在设计方法的时候需要注意Receiver的类型
mongodb 的 geo near

mongodb 的 geo near

本来是想用mongo的geo功能来做查询,想着这个功能是它自带的,性能一定很牛叉吧?结果事实让我们非常失望。

我们做了一个简单的测试,插了1000万条数据,y=x的方式插入,即[0.00001,0.00001]~[99.99999,99.99999],在坐标上其实就是显示成一条实现。如果我们随便指定一个坐标值,求near。你会发现其实很卡。。。20多秒才能出数据,而且还不准。

要知道我的机器可是:i7 4核,16G内存,SSD的硬盘,都这么卡,而且出来的都这么慢。

当然,其实更重要的是不准。。。我坐标[20,90],查出来的点,居然是[55,55],这太让人伤心了。随便算了算,怎么着都应该是77左右啊。。。

估计,只能用mysql了。。。伤心。

Getting Started with PhpStorm as Google App Engine PHP IDE

Getting Started with PhpStorm as Google App Engine PHP IDE

其实我是在oschina看到的这个新闻,那天。。。正在爬长城呢,顺手打开oschina,就看到这个新闻了。本来以为这是个玩笑,以前的毕竟听说gae还是支持PHP的,不过是利用java来支持的。

当这个新闻一出来。然后就看到phpstorm的博客上就出了支持GAE for PHP的文章了。震惊。phpstorm这家公司还是真心不错,早年我说过:jetbrains这个公司越来越象当年的borland了,当年也是狂出IDE,希望它能够坚持下去吧。

废话说了很多,其实我主要是做为了备份,国内用了SAE,ACE,BAE(腾讯的还没有试过),所以GAE还是想试用一下的(python的那个只用了一个功能,你懂的)

这是一个目录:

本来官网上还写了有视频:In this tutorial we'll create a simple Google App Engine PHP application with PhpStorm IDE.Watch this video on Support for GAE PHP in PhpStorm.
可惜,这视频我们看不到,你懂的。。。
PS:介绍页左边的菜单里可是有很多好东西的哦。
北京游

北京游

这段时间博客一直没有更新。是因为这段时间 几乎一直在外面。。

5月的234在杭州玩。这两天,直到周末应该都是在北京。
昨天晚上出去走了走,发现北京城里,最多的玩意居然是办证,我晕,满地都是,天桥上。。。几乎每个台阶上都是:办证
今天在石头的带领下,走了一天,从早上9点走到8点。当然期间有在小酒吧和星巴客喝了点酒和咖啡。环境真TMD的爽
当然也有不爽的地方,那就是杨絮满天飞,还有就是估计PM2.5对我还是有影响的。总觉得嗓子干。
经过后海的时候,那些酒吧驻唱的歌声也感染了我,只是唯有一家。吐字也不清,曲调也不准,TNND,这也太不专业了。
总之,这两天,有点累,不过。。。也吃了点有特色的东西:涮羊肉,豆汁等。。(一哥们说,你居然吃豆汁。。。吃了大半碗,确实 还能入口,用石头的话来说,这家是相对还有点正宗的了。其他的味更淡)
过两天我集中把照片发上来,iphone拍的。就不用太纠结质量了。。关键是还有点好玩罢了