参考文章:
https://toutiao.io/posts/adjoci/preview
闲来无事,今天发现go居然有一个插件系统。
果然是宇宙级的语言。
配置文件
plugconf.yaml
plug:
lang: "./pluglib/en.so"
load.go 载入插件
```
package plug
import (
"github.com/ghodss/yaml"
"io/ioutil"
"plugin"
)
import "xxxxxxx/checkerr"
var GlobalGreeter func() string
type Plugconf struct {
Plug struct {
Lang string
}
}
var GlobalPlugconf *Plugconf
func Load() (err error) {
defer checkerr.MarkPanic(&err)
// 载入配置文件
modByte, err := ioutil.ReadFile("./conf/plugconf.yaml")
checkerr.CheckError(err, " [查看更多...]

来自 大脸猪 发送于 2020-07-10 15:22 - 0 条评论

部署
容器真是个好东西。一行代码创建容器。
bash
docker run -d -p 8090:80 --name nextcloud nextcloud:latest
此时,登录首页 127.0.0.1:8090,按页面流程操作。当一切完成之后。所有文件在容器内 /var/www/html。
建议生成之后,把它打包导出到硬盘。如 /home/nextcloud。
容器内:
mkdir /home/nextcloud
cp -r /var/www/html /home/nextcloud
容器外,将容器内的文件夹cp到本地硬盘:
docker cp nextcloud:/home/nextcloud /home
文件备份后,删除原来的容器
docker stop nextcloud; docker rm nextcloud
使用新的命令创建一个新的容器。方便后续升级:
docker run -d -p 8090:80 --name nextcloud -v /home/nextcloud/data:/var/www/html/data -v /home/nextcloud/custom_apps:/var/www/html/custom_apps -v /home/nextcloud/config:/var/www/html/config nextcloud
升级
备份原来的文件夹:
tar czf next [查看更多...]

来自 大脸猪 发送于 2020-02-20 17:44 - 0 条评论

sync.Map是我比较喜欢的一个库,用了非常久,今天突发奇想瞧瞧它的实现。又一次被宇宙中第二NB的语言--go 折服了。
这里准备写一篇文章,讨论下当使用sync.Map执行操作的时候,会发生什么。
map结构
代码很简单,sync/map.go中一百多行。总体讲一讲Load, Store, Delete三个接口发生了什么。
首先是sync.Map的结构:
sync.Map {
read ,一个真实的map ]
amended, bool变量;
dirty , 一个真实的map
misses , int 记录读取的时候,在read map中miss的次数
}
操作一下
Store key:1
此时会初始化dirty map,初始化read map,并把amended设为true,这个key存到dirty map中。这里加锁。
执行的代码如下:
if !read.amended {
// We're adding the first new key to the dirty map.
// Make sure it is allocated and mark the read-only map as incomplete.
m.dirtyLocked( [查看更多...]

来自 大脸猪 发送于 2020-07-03 16:55 - 0 条评论

在go中,对类型明确的对象,要判定它是不是nil简单
func test1(v *teststr) {
if v == nil {
fmt.Println("value is nil")
return
}
fmt.Println("value is not nil")
}
但是如果参数是一个interface,那情况就不同了。Interface包含类型还有值两个属性。比如:
```
type teststr struct {
}
func test(i interface{}) bool {
v, ok:= i.(*teststr)
fmt.Println("type is ok:", ok)
if i == nil {
fmt.Println("interface is nil")
return false
}
if v == nil {
fmt.Println("value is nil")
return false
}
fmt.Println("value and interface is not nil")
return true
}
当声明一个变量然后传入(值为nil)
var nil [查看更多...]

来自 大脸猪 发送于 2020-07-03 14:18 - 0 条评论

joplin怎么调整字体大小呢?我相信比较少有人听过joplin,joplin是一个小众的笔记软件(https://joplinapp.org/)。但小编已经用了很久了。joplin的字体有时有点小,那么joplin怎么调整字体大小呢,下面就让小编带大家一起了解吧。
joplin在设置界面没有看到调整markdown字体的选项,那joplin怎么调整字体大小呢?原来调整字体大小只需要改它,下面一起看小编的操作吧。
joplin改markdown字体大小,只需要在外观-编辑 custom stylesheet 的 css。
/* For styling the rendered Markdown */
body, th, td, .inline-code {
font-size: 15px;
}
h2 {
background-color: #46515c;
color:white;
}
改好了。大家可能会很惊讶,但事实就是这样,小编也感到非常惊讶。
这就是关于joplin怎么调整字体大小的事情了,大家有什么想法呢,欢迎在评论区告诉小编一起讨论哦!
-- 向国内新闻APP致敬。。。
[查看更多...]

来自 大脸猪 发送于 2020-07-02 10:17 - 0 条评论

tag: email, 邮件, office365
linux下强烈推荐 evolution,可以exchange:
sudo apt-get install evolution evolution-ews
因为,下面的坑坑软件,是要付费的。
so,建议现在就关闭页面。
下面的不推荐再使用。
首先添加源,安装最新版
sudo add-apt-repository ppa:ubuntu-mozilla-security/ppa
sudo apt-get install thunderbird
安装成功后,在thunderbird附加组件管理器中搜索exchange,安装ExQuilla for microsoft exchange插件。
此时,账户菜单下会出现exquilla选项
先配置一下公司的代理 (可选)
点击exquilla进入,输入密码账户。
然后一路下一步,按提示操作即可。
[查看更多...]

来自 大脸猪 发送于 2019-11-27 10:53 - 0 条评论

因为rc4在流加密中已经不再安全,chacha20异军突起,现在用go封装一个reader,它从其它的io.Reader中读取数据,并转换为一个chacha20加密的数据:
代码:
```go
package chacha20Reader
import (
"crypto/sha256"
"golang.org/x/crypto/chacha20"
"io"
)
type ChaCha20Reader struct {
baseReader io.Reader
passByte [32]byte
cipher *chacha20.Cipher
}
func NewChaCha20Reader(pass string, reader io.Reader) *ChaCha20Reader {
c := new(ChaCha20Reader)
c.baseReader = reader
c.passByte = sha256.Sum256([]byte(pass))
nonce := make([]byte, 24)
c.cipher, _ = chacha20.NewUnauthenticatedCipher(c.passByte[:32], nonce)
return c
}#b [查看更多...]

来自 大脸猪 发送于 2020-05-29 18:01 - 0 条评论

最近在用screen,后来发现,tmux更好用啊。这是一个笔记。
参考资料:
https://cloud.tencent.com/developer/article/1195836
安装
sudo apt-get install tmux
配置
配置快捷键
```
首先创建几个alias
vi ~/.zshrc
alias tls="tmux ls"
alias ta="tmux attach -t "
alias tk="tmux kill-session -t"
alias ts="tmux switch -t "
alias tn="tmux new -s"
```
编辑配置文件
touch ~/.tmux.conf
vi ~/.tmux.conf
内容:
```
set -g status-bg colour14
新版配置
setw -g window-status-current-style fg=red,bg=white
set -g window-status-format '#I:#{=-10:window_name}'
set -g window-status-current-format '#I:#{=-10:window_name}'
老配置
set -g window-status- [查看更多...]

来自 大脸猪 发送于 2020-03-16 18:24 - 0 条评论