leedstyh

第 1321 号会员 /

回复了 keepeye 创建的主题: 项目构建是怎么处理静态文件的?手动复制吗?

go install不一定会编译到$GOPATH/bin目录啊,你可以自己指定$GOBIN

我也不知道哪个方法好,我自己的办法是:

设定个$GOBIN,作为程序运行目录。静态文件直接放$GOBIN里,写个脚本:

  1. go install main.go
  2. cd $GOBIN
  3. ./main

回复了 nokesasi 创建的主题: 请问在pongo2中如何调用其他包的方法?

macaron是无闻写的啊,那你直接问他好了。

另外,我看了下,macaron的pongo2,也是使用的我上面提到的那个pkg,所以应该有办法注册一个自定义的filter

回复了 nokesasi 创建的主题: 请问在pongo2中如何调用其他包的方法?

我写的一个例子,你参考下:

//自定义模板filter

func RenderTime(in *pongo2.Value, param *pongo2.Value) (*pongo2.Value, *pongo2.Error) {
    t, isTime := in.Interface().(time.Time)
    if !isTime {
        return nil, &pongo2.Error{
            Sender:   "filter:myrendertime",
            ErrorMsg: "Filter input argument must be of type 'time.Time'.",
        }
    }

    loc := u.GetTZ(param.String())//这句细节你可以忽略,就是获取时区

    return pongo2.AsValue(t.In(loc).Format("15:04")), nil
}


func init() {
    pongo2.RegisterFilter("myrendertime", RenderTime)
}

然后在模板里这么使用:{{economy.PubTime | myrendertime:Settings.Timezone}}

效果就是,对于一个time.Time类型(economy.PubTime),按传入的时区(Settings.Timezone,对应到函数里就是param.String()),格式化一下,由于时间格式是固定的,我就写在函数里了,param这个参数,可以有多个值,具体用法,你可以参考 https://github.com/flosch/pongo2/blob/master/filters_builtin.go ,pongo2包里内置的filter的写法。

回复了 leedstyh 创建的主题: 请问有用PostgreSQL的吗,哪个package好用一些?

@jimmykuu 你删除错啦,1楼(@baoyalv)不是重复发了两遍,第二次发的是pq,不是pg,我估计第一次发错了,当时我手机看的,没来得及回复

另外xormgorp支持ARRAY类型吗,我怎么没有看到有介绍的

@fire988 你这个在哪了,我在github上没有找到啊

回复了 kjfcpua 创建的主题: 用go写了个简单的循环,1000次,每次sleep5秒打印id,在linux下面pmap这个go进程,发现内存占用了700多m。什么原因。是不是即使只有1-2行代码的go程序在linux下面使用的内存也是几百m起。。。

什么原因不清楚,不过

是不是即使只有1-2行代码的go程序在linux下面使用的内存也是几百m起

这句显然不对啊,我写的网站,运行了很久了,内存占用(系统+nginx+mysql+go算一起)也不超过120M。

回复了 leedstyh 创建的主题: markdown文本,在数据库里如何存储,是存成html,还是存储原始内容

@kzzhr 不会换富文本,如果只保存md,不知道阅读的时候再转化成html,效率怎么样(对系统资源的浪费)?

@jimmykuu 两个都存,会浪费很多数据库空间吧,我不打算提供修改的功能,所以保存两份,应该是没什么太大意义。

其实事情是这样的:

我对文本除了做markdown解析,还会自己解析一些格式(类似于at,或者解析出股票代码,twitter那样以$开头的作为股票代码解析),这样有两方面问题:

  1. 保存md,每次阅读的时候现解析,会浪费cpu时间和资源

  2. 保存html,由于我有文本字数限制,本来用户输入的字数符合要求,一解析成html,就超出数据库的长度设置了。

回复了 leedstyh 创建的主题: 关于中文字符串的长度

@luckymouse

假如有个全是汉字的字符串sRuneCountInString的计算结果是140,js里s.length的结果也是140.

但是这个s能存到varchar(140)的MySQL里吗,s的ascii字节数不是420么?

回复了 leedstyh 创建的主题: 关于中文字符串的长度

嗯,看了各位的解释,又继续搜索了下,大概知道怎么做了:

  1. MySql里设置(utf8)为varchar(420)3 * 140保证可以输入140个汉字,420个ascii。
  2. go里直接用len(s),求出占用几个ascii,保证存入MySQL的时候不溢出(420个ascii)。
  3. js端,参考这个页面(http://www.blogjava.net/yoda/archive/2008/05/29/203893.html),也是求出ascii,然后在页面上提示出140 - Math.floor(mbStringLength(s) / 3),提示还可以输入几个汉字。

这样可以保证客户端验证/服务器端验证,输入的内容不溢出MySQL的设置,最大输入的汉字为140个,但是如果有其他字符,则可以超过140,好像weibo也是这样的。

请问,我这个思路对吗?