Linux > 备忘.GIT hook设置。推送后stash。

2017-07-21
GIT_DIR=.git

cd ../
git stash


一开始没发现git_dir属性不对,坑了半天

Linux > linux软件清单 2017-07-11

2017-07-10

上一份清单要在4年前列的了。

对比了下,主要软件变化不大


  • 桌面环境:kde5
  • 浏览器:chrome+firefox
  • 视频播放:vlc,现在主要放自己录的娃娃视频了。
  • 编辑器:vs code 这个是最主要的变化
  • 音乐:网易云音乐
  • 办公软件:libre office
  • FTP:filezilla
  • 邮件:雷鸟。算是相对不渣得了
  • 游戏:Steam
  • 脑图:mindmup。对那一票java脑图软件绝望了。
  • 截图:shutter
  • 录像/直播:obs studio.这是个好软件
  • 照片后期:rawtherapee
  • 图片设计:gimp(位图).inkscape(矢量),krita(手绘)
  • 代码版本控制:github+gitlab
  • IM:手机

杂言碎语 > 考虑配一台ryzen7的homelab

2017-04-05

最近amd是180度翻身还是360度翻身的主题炒得火热。

看了下,感觉很不错

8核16线程,2000+的价格,支持ecc。

等有支持ecc支持的主板后,搞一台家用服务器应该很不错。

8核,16线程,搞个几十Gecc内存,ssd系统盘+N块磁盘raid6。

想想就带感。

至少公司里i7的文件服务器跑一堆服务就很溜了。

唯一的问题是,这么高性能,只当nas是不是太浪费了点……

代码 > 出色的golang sql操作库sqlx

2017-03-31

在用标准去的sql库裸写了博客和某个新浪爬虫后,还是使用了sqlx做新的内部项目。

总的来说,非常好用。

https://github.com/jmoiron/sqlx

总体来说,它最重要的特性包括:

1.NamedExec,用一个struct来储存所有的参数。最关键的,不需要每个参数都用到

2.get和select,可获得一个或者多个数据结构。不需要在一个一个写赋值了。

3.Named。可以对象和命名的查询字符串转为传统的查询字符串和args。为复杂的查询拼接提供了极大的帮助。

总体来说在性能影响尽可能小的情况下,大幅度的提高了开发的效率

Linux > 用docker运行golang写的程序

2017-03-15

之前一直想着用supervised在docker中跑golang的程序。

后来想到,直接docker run --entrypoint 指定程序的入口就行了。

一开始用alpine跑,结果libc库的位置不对,报not found错误。也不高兴折腾了。直接用debian跑了。

docker run --network=jarln.com --ip=10.1.1.100 --name blog -v /dockers/blog.jarlyyn.com/data:/goapp --entrypoint=/goapp/bin/blog --restart always debian 


跑跑看看效果

代码 > 慎用golang中的append操作

2017-02-28

golang的slice是一个极好用的东西。

用slice自然少不得会使用append。

我自己做的midderware组块核心就是一个Func的slice

不知不觉就踩了一个坑。

具体来说,在加入csrf模块后,发现了奇怪的现象。

本来访问正常的页面,在路由加入2个middleware后报404,一个Middleware时不报。

为了解决这个问题,差不多把所有有关无关的代码都看了遍。无数的断点和测试,一步一步f11调试。

最后,锁定问题为:

在加入的middleware数量达到两个后,只有随后一个设置的路由起效。

调整代码顺序可以证实。

实在没办法后,脑洞大开。

觉得分明就是golang做了优化么,把相同的仅包含相同内容slice的struct当成了同一个。

把Use函数做了下修改

target.SetHandlers(funcs...)


改为

f:=make(funcxx,len(funcs))

copy(f,funcs)

target.SetHandlers(f)

问题解决

一瞬间我感觉到了地鼠对我有深深的恶意


代码 > 推荐Golang序列化库vmihailenco/msgpack

2017-02-27

之前用golang标准库的gob做2进制序列化,缓存页面。

用下来很难用,没法直接interface{}用自定义结构,使用前要先注册。

这次换了https://github.com/vmihailenco/msgpack这个库。十分好用。

和json库一样可以直接传入interface{}序列化/反序列化。

速度比gob快很多。

之前我Blog缓存过得页面,在我的rmbp13上速度大概是2x,xxxns

换为msgpack后直接提升为10,xxxns

去掉5,xxx必要的处理和middle之类

效率在我这个场景下高了3倍左右。

代码 > 不错的rest后台框架ng-admin

2017-02-27

重建网站后台时决定了用rest api做接口。

本来这也是驾轻就熟的事情,突然想到之后会做一个展示型网站的骨架/demo代码,用比较通用的代码比较好。

比较了一番相应的代码,选择了这个。

能很快的通过一系列的js配置搭建出常用的后台,ng 1.x也不需要各种编译。

有清晰的文档,和不少的讨论,解决问题非常方便。

还需要什么更多的要求呢?

项目地址:https://github.com/marmelab/ng-admin/

截图:


工地 > 后台简易版本制作完成

2017-02-26

总的来说,blog的整个骨架都出来了。

用msgpack代替了gob做序列话。gob无论效率和使用方法实在有些蛋疼。

用ngadmin做了后台的前端部分。不得不说,还是个很好用的组件。

还有很多架构要调整,细节要处理。

但勉强一个网站还是可以用了

总比在mysql中直接更新靠谱多了

工地 > 用golang重做了blog

2017-02-21

在熟悉golang的时候,练手做了一套middleware

链接:herb-go

顺手把网站重做了一下,作为测试。

总体来说,golang的模板系统在熟悉后还是很棒的,很容易就把php模板转了过来。一开始准备用mustache做模板倒显得有些无聊了

数据库这块没用orm,用sql模块还是有些手累新累的

序列化比较蛋疼,gob的序列化不能包裹在函数里,只能传writer,让人无语。相对而言JSON的序列化就好用很多了。可惜我要做页面的缓存,直接缓存[]byte,不适合JSON

http模块的responsewriter的包装也有点麻烦

但看Header里2xxxxx ns的执行时间,还是很爽的

尽管基本都用freecache缓存在内存了

下一步要把后台做出来。现在这样直接更新数据库太恶搞了些