1 首先安装wkhtmltopdf
安装不能使用apt-get安装。否则出错。
wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.trusty_amd64.deb
dpkg -i wkhtmltox-0.12.2_linux-trusty-amd64.deb
测试一下:
```
wkhtmltopdf http://www.google.com test.pdf
如果不行试试 xvfb-run wkhtmltopdf
```
是不是能正常的生成PDF。
2 在leanote后台配置wkhtmltopdf路径
具体上后台一看就知道了。其实大部分都不用配置。
3 上传中文字体
这是一个坑,如果不上传,就会导致中文全部变成方框。
首先网上搜一个宋体(simsun.ttc)
https://github.com/sonatype/maven-guide-zh/raw/master/content-zh/src/main/resources/fonts/simsun.ttc
然后上传到:
/usr/share/fonts/truetype/dejavu/simsun.ttc
现在,导出pdf就做好啦。
顺带一说,时区也是要改滴。
[查看更多...]

来自 大脸猪 发送于 2017-04-18 08:56 - 0 条评论

在go web中,定位内存/cpu问题(内存泄漏,内存优化)可以这么做。
添加监听
import _ "net/http/pprof"
func main() {
go func() {
log.Println(http.ListenAndServe(":6060", nil))
}()
...
网页查看数据
此时,可以在web浏览器中输入http://localhost:6060/debug/pprof/,并点击进入 heap,查看信息。
重要的数据在下面:
```
runtime.MemStats
Alloc = 1950440
TotalAlloc = 6346404496
Sys = 27572472
```
Alloc 指当前分配的内存,Sys指向系统申请的内存。正常情况下,Alloc的数值应该呈波动状(因为GC)。
这样,就能比较容易的发现内存泄漏的情况。
查看内存详情日志
但是,上面的信息还不足以优化代码,进入命令行,输入命令如下:
go tool pprof -alloc_space http://localhost:6060/debug/pprof/heap
此时进入交互界面,输入 top -cum。
举例:
top -cum
...
28MB 0.44% 29.40% 1532. [查看更多...]

来自 大脸猫 发送于 2018-05-11 19:23 - 0 条评论

直接上代码:
```
package utils
import (
"io"
"io/ioutil"
"net/http"
"strings"
"time"
"git.code.oa.com/bigdata/gobase/logging"
)
var trans *http.Transport
func init() {
trans = &http.Transport{
MaxIdleConns: 1000,
MaxIdleConnsPerHost: 500,
IdleConnTimeout: 90 * time.Second,
}
}
// Request 发起一个请求,会将body的数据返回成string。如果错误,则返回emptyStr
// method: POST GET DELETE PUT
// body:可传空,或者你想要的,比如 {"text":"hello"}
// timeout:你懂的
func Request(method string, url string, body string, timeout int64) string {
var bodyIO io.R [查看更多...]

来自 大脸猫 发送于 2017-09-05 19:46 - 0 条评论

调试工具操作
```console
1、启动
nohup ./kafka-server-start.sh ../config/server.properties &
2、列出topicc
./kafka-topics.sh --zookeeper 9.43.186.132:2181,9.43.186.152:2181,9.43.186.176:2181 --list
3、创建topic
./kafka-topics.sh --zookeeper 9.43.186.132:2181,9.43.186.152:2181,9.43.186.176:2181 --topic jouislu_test_topic --replication-factor 1 --partitions 1 --create
4、消费者 读数据
./kafka-console-consumer.sh --zookeeper 9.43.186.132:2181,9.43.186.152:2181,9.43.186.176:2181 --topic PedesInvadeJobResult --from-beginning
./kafka-console-consumer.sh --zookeeper 10.0.8.23:2181 --topic jouislu_test_topic --from-beginning
./kafka-console-consumer.sh [查看更多...]

来自 大脸猫 发送于 2019-04-13 10:49 - 0 条评论

2-1 A private conversation
Last week I went to the theatre. 去某一场所的特定活动。
go to the cinema/show/bank/post office
I did not enjoy it (the play/meal/book).
I got very angry. got 是联系动词,和BE动词用法一样,渐渐的
The food is getting cold.
I could not hear the actors. hear 听见, listen 听。
He's not listening for me. could 一般过去时
I looked at the young man and the young woman angrily.
look 看(动作) see 看见 watch 观看
They did not pay any attention (to me). pay attention to
In the end, I could not bear it. 忍受 bear stand
He thought the writer was eavesdroping.
eavesdrop 偷听
一般过去时
I had a very good seat.
The play was very [查看更多...]

来自 大脸猫 发送于 2018-09-19 09:09 - 0 条评论

git 配置
配置用户名等
git config user.name "xxxxx"
克隆所有子项目
git clone --recursive
查看源
git remote -v
设置新源
git remote add network git@rnd-isourceb.huawei.com:RTOS/network-agent.git
下载代码
git fetch network
新建分支
想要新建一个分支并同时切换到那个分支上,你可以运行一个带有 -b 参数的 git checkout 命令:
$ git checkout -b iss53
Switched to a new branch "iss53"
or
$ git branch iss53
$ git checkout iss53
删除分支
由于这些分支中还包含着尚未合并进来的工作成果,所以简单地用 git branch -d 删除该分支会提示错误,因为那样做会丢失数据:
$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.
不过,如果你确实想要删除 [查看更多...]

来自 大脸猪 发送于 2017-01-22 17:08 - 0 条评论

简单处理
json的本质就是数组和字典的组合,但系统的数组和字典都是确定类型的,所以,go的interface{}就能大显身手了。
下面的代码描述了自定义类型 List和Dict。有了这两个工具,处理json就非常的方便。
```
package main
import (
"encoding/json"
"fmt"
)
type List []interface{}
func ToList(obj interface{}) List {
switch obj := obj.(type) {
case []interface{}:
return obj
case string:
var f interface{}
err := json.Unmarshal([]byte(obj), &f)
if err != nil {
panic("ToList err" + err.Error())
}
return f.([]interface{})
}
panic("ToList failed, input type not in ([]interface{}, string)")
[查看更多...]

来自 大脸猪 发送于 2016-10-24 17:08 - 0 条评论

哈哈。终于把之前公司那个玩意重写了。
效果
配置
console
vim ~/.bashrc
alias ghis="python2 /workspace/git_history/git_history.py"
注意,代码中可以配置显示详细信息:
python
class CommitInfo():
def __init__(self):
...
self.is_simple = True
源码
```python
coding:utf-8
import os
import subprocess
import sys
filename = sys.argv[1]
find_text = sys.argv[2]
try:
is_blame = sys.argv[3]
except:
is_blame = False
def cmd(cmdstr):
return subprocess.check_output(cmdstr, shell=True)
dir_path = os.getcwd()
filename = dir_path + "/" + filename
打印查询结果前后的行
n [查看更多...]

来自 大脸猫 发送于 2019-03-26 17:33 - 0 条评论

centos 中使用systemctl是会报错滴:
Failed to get D-Bus connection xxx
解决方案:
docker run --privileged -tid -e "container=docker" -v /sys/fs/cgroup:/sys/fs/cgroup centos /usr/sbin/init
[查看更多...]

来自 大脸猫 发送于 2019-03-26 10:30 - 0 条评论

三件套:influxdb telegraf grafana
infuluxdb
下载安装
console
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.2.2.x86_64.rpm
yum localinstall influxdb-1.2.2.x86_64.rpm
修改配置:
```console
vim /etc/influxdb/influxdb.conf
reporting-disabled = true
bind-address = ":8086"
[admin]
  # Determines whether the admin service is enabled.
  enabled = true (web管理界面)
  bind-address = ":8083"    (web服务界面的端口)
开机启动
systemctl start influxdb
systemctl enable influxdb
```
进入db
```console
influx
进入控制台,创建个db试试
create database test_db
show databases;
name: databases
name
_inter [查看更多...]

来自 大脸猫 发送于 2019-03-22 14:20 - 0 条评论