从wordpress项目弄了一个.po文件直接生成.mo文件 如果是英文是正常的,为了减少一套语言包 打算直接用中文做msgid 结果发现怎么都不行

各种搜索

> http://stackoverflow.com/questions/31804791/gettext-not-translating-every-string
> https://www.gnu.org/software/gettext/manual/html_node/msgfmt-Invocation.html

按说是可以解决的,继续各种折腾

> 找到一个中文的文章 http://blog.csdn.net/williamwanglei/article/details/8568926
> 这个参数是关键 –from-code=utf-8

### 步骤

> xgettext –keyword=e –from-code=utf-8 app/controllers/IndexController.php –output=fool.pot 扫描源代码生成pot文件
> msginit –locale=zh_CN –output=zh_CN.po –input fool.pot 得到.po文件
> msgfmt zh_CN.po –no-hash –o=zh_CN.mo 得到.mo文件

“`
echo $this->e(‘中文’);//得到结果 chinese
“`
完整的po文件
“`
# Chinese translations for PACKAGE package
# PACKAGE 软件包的简体中文翻译.
# Copyright (C) 2016 THE PACKAGE’S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Logiz , 2016.
#
msgid “”
msgstr “”
“Project-Id-Version: \n”
“Report-Msgid-Bugs-To: \n”
“POT-Creation-Date: 2016-03-25 17:55+0800\n”
“PO-Revision-Date: 2016-03-25 17:59+0800\n”
“Last-Translator: Logiz \n”
“Language-Team: Chinese (simplified)\n”
“Language: zh_CN\n”
“MIME-Version: 1.0\n”
“Content-Type: text/plain; charset=UTF-8\n”
“Content-Transfer-Encoding: 8bit\n”
“X-Generator: Poedit 1.8.6\n”

#: app/controllers/IndexController.php:36
msgid “Hello”
msgstr “test”

#: app/controllers/IndexController.php:37
msgid “中文”
msgstr “chinese”
“`

### phlacon 新版有个BUG

setlocale(LC_ALL, ‘zh_CN’);

要自己设置下才行

原始代码

for {
	select {
	case poll := <-connPool:
		print("pool")
	case <-time.After(20 * time.Second):
		break //希望在这里退出循环
	}
}

结果是一直在循环,搜索了下发现这样写是不对的,改进代码

OK:
for {
	select {
	case poll := <-connPool:
		print("pool")
	case <-time.After(20 * time.Second):
		break OK //这样就可以退出了
	}
}

初步确认是phalcon框架在升级到2.0后没有向下兼容 出现的BUG

现象:

在ini里面配置了数组

[dn]

status.1 = “start”

status.2=”stop”

通过phalcon 2.0.4 的ini方法解析后得到一个数组var_dump的结果是

array(2) {
[“1”]=>
string(1) “start”
[“2”]=>
string(1) “stop”
}

自己写的数组和phalcon 1.3版本是这样的

array(2) {
[1]=>
string(5) “start”
[2]=>
string(4) “stop”
}

 

升级GITLAB折腾了几次备注下过程

1:清除缓存  gitlab-rake cache:clear RAILS_ENV=production

2:修改头像的URL成cn.gravatar.com

编辑这个文件 /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml   修改这个 plain_url: 默认是空值

3:升级前配置了邮件服务是手工加的 smtp_settings.rb 的文件,升级的时候会因为删除不了这个文件而失败,删除掉这个文件重新reconfigure就可以了。

4:不懂ror 折腾起来有点累

使用SSH包写了一个SCP文件到远程服务器的东东

func sendFile(client *ssh.Client, src string, dest string) error {
    session, err := client.NewSession()
    if err != nil {
        return err
    }
    defer session.Close()
    go func() error {
        w, errs := session.StdinPipe()
        if errs != nil {
            return errs
        }
        defer w.Close()
        fileSrc, srcErr := os.Open(src)
        if srcErr != nil {
            return srcErr
        }
        srcStat, fileErr := fileSrc.Stat()
        if fileErr != nil {
            return fileErr
        }
        fmt.Fprintln(w, &quot;C0644&quot;, srcStat.Size(), filepath.Base(dest))
        io.Copy(w, fileSrc)
        fmt.Fprint(w, &quot;x00&quot;) // 传输以x00结束
        return nil
    }()
    if err := session.Run(&quot;/usr/bin/scp -qrt &quot; + filepath.Dir(dest)); err != nil {
        return err
    }
    return nil
}

在服务器上执行一个PY脚本

func execCmd(client *ssh.Client, cmd string) (error, string) {
    sessions, err := client.NewSession()
    if err != nil {
        return err, &quot;&quot;
    }
    defer sessions.Close()
    str, errc := sessions.CombinedOutput(cmd)
    return errc, string(str)
}

结果

SCP文件是正常的,在执行PY脚本的时候代码也全部执行了,不过输出的结果不一致
和在服务器上直接执行python xxx.py par1 par2 不一样
xxx.py

os.system(‘tar zxvf xxx.tar.gz’)//这个会显示解压文件的路径
ptint(“start”)
os.system(cp xxx.class)
print(“stelp 2”)
os.system(‘tar zcvf xxx.tar.gz ./’)//这个会显示路径

GO得到的结果

显示tar zxvf 的结果
显示tar zcvf 的结果
print(start)
print(step 2)

没闹明白为啥这样的 是不是和PY调用系统命令有关系.

编译libgit2

$ mkdir build &amp;&amp; cd build
$ cmake ..
$ cmake --build .

给的是这个,不过编译了会找不到,根据后面的提示

$ cmake .. -DCMAKE_INSTALL_PREFIX=/install/prefix
$ cmake --build . --target install
安装到/usr/local目录下

编译git2go

git submodule update --init # get libgit2 就开始下载了
make install

在用PHP输出图片的时候果断想到了用304来进行缓存,记录下折腾的过程


$catchTime = 3600*24;//无脑缓存
$modifiedTime = $_SERVER['HTTP_IF_MODIFIED_SINCE'];
if( strtotime($modifiedTime) + $catchTime > time() ){
header("HTTP/1.1 304");
header('Cache-Control: max-age=' . $catchTime);//不加这行会出现一会200 一会304的情况
exit;
}
header("content-type:image/png");
header("Last-Modified:".gmdate("D, d M Y H:i:s", time()+864000)." GMT");
header("Expires: " .gmdate('D, d M Y H:i:s', time()+864000).'GMT');
header('Cache-Control: max-age=' . $catchTime);
//必须要有这行才行,测试环境 CHROME 不然后面的请求浏览器不会发送HTTP_IF_MODIFIED_SINCE

不过还需要优化,目前是无脑缓存的,还需要接合文件的最后修改时间来缓存,不然更新是个问题

最近各种折腾GO的证书 JSK,KEY,CRT,CAROOT 的折腾

这个软件不错:http://keystore-explorer.sourceforge.net/index.php

jks

可以导出:CAROOT,KEY,CRT,P12文件。

 pfx转换cer,crt,key

       openssl pkcs12 -in test.wosign.pfx -nodes -out test.pem
openssl rsa -in test.pem -out test.key
openssl x509 -in test.pem -out test.crt(cer)

这个命令也可以转换出来

参考:https://support.wosign.com/index.php?/Knowledgebase/Article/View/36/0/

在同一台服务器上装了redmine和gitlab 配置redmine + nginx的时候各种折腾

启动方法1:ruby script/rails server webrick -e production -d  默认的测试程序配置好了没的方法 人多了就不行了

启动方法2:ruby script/rails server mongrel -e production -d -p3000 稍微强点 不过人民大众还是说慢

逐研究NGINX方法

1:准备用mongrel + nginx的方法 没折腾成功放弃

参考:http://wiki.nginx.org/ChsRubyonRailsMongrel

出现的错误:em_plugin.rb:109:in `load’: uninitialized constant Gem::SourceIndex (NameError)

继续阅读

string 转JSON

mapJson := map[string]string{“ip”: localIp, “log”: str}
mapJsonStr, err := json.Marshal(mapJson)

json to map/struct

content := `{“ip”:”192.168.200.53″,”log”:”fsadfasdfaf”}`
var nl map[string]interface{}
errs := json.Unmarshal([]byte(content), &amp;amp;amp;amp;nl)
if errs != nil {
fmt.Println(errs)
}
fmt.Println(nl[“ip”])

数组 和 字符串转换

int to str :strconv.Itoa(count)
str to int :strconv.Atoi(count)

时间转换

str :=”04/Sep/2014:16:18:08″
t, err := time.Parse(“02/Jan/2006:15:04:05”, str)
if err != nil {
fmt.Println(err)
}
fmt.Println(t)
fmt.Println(t.Format(“2006-01-02 15:04:05”))//得到年-月-日 时:分:秒 格式

这文章不错https://gobyexample.com/json