Python发送钉钉消息

使用程序给钉钉发消息,目前看起来只能通过群机器人的方式,先获取机器人的token,然后在程序里调用。

如果想给个人发送消息,就先拉个人建一个钉钉群,然后将别人踢掉,就剩自己了,就可以只有自己接收消息了。
如果用的Mac,先切换到root用户

1
sudo su -

输入密码后,使用如下命令安装钉钉的Python依赖。

1
pip install DingtalkChatbot

以下是使用python进行钉钉消息的代码示例:

1
2
3
4
5
6
7
8
9
from dingtalkchatbot.chatbot import DingtalkChatbot
# WebHook地址
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=sdfs1c5711212e62ada4b25b88b17966d65'
# 初始化机器人小丁
xiaoding = DingtalkChatbot(webhook)
# Text消息@所有人
at_mobiles=['18655398189']
to = '0289806f09dc2baaaf098555790a492e11c5711212e62ada4b25b88b17966d65'
xiaoding.send_text(msg='我就是小丁,小丁就是我!', is_at_all=False,at_mobiles=at_mobiles)

使用shell的方式发送钉钉消息

钉钉提供了Webhook协议的自定义接入。使用命令行方式发送钉钉消息的代码示例如下:

1
2
3
4
5
6
7
8
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \
-H 'Content-Type: application/json' \
-d '
{"msgtype": "text",
"text": {
"content": "欢迎访问 hohode.com"
}
}'

参考 http://zhangchuzhao.site/2018/01/23/dingtalk-chatbot/

Spark将数据写入mysql

使用shell,添加mysql jar

1
/data/work/spark-2.2/bin/spark-shell --master yarn --executor-memory 5G --num-executors 5 --jars  /jars/mysql-connector-java-5.1.35.jar

Spark向mysql写入数据的具体代码

1
2
3
4
5
6
7
8
9
10
11
val df = spark.read.json("/data/log/log2018070319_0001.snappy")
val prop = new java.util.Properties
prop.setProperty("driver", "com.mysql.jdbc.Driver")
prop.setProperty("user", "root")
prop.setProperty("password", "123456")
//jdbc mysql url - destination database is named "data"
val url = "jdbc:mysql://hohode.com:13306/sp"
//destination database table
val table = "sample_test"
//write data from spark dataframe to database
df.limit(10).write.mode("append").jdbc(url, table, prop)

reference

Git比较两个分支的文件的差异

Git diff branch1 branch2 –stat //显示出所有有差异的文件列表

Git diff branch1 branch2 文件名(带路径) //显示指定文件的详细差异

Git diff branch1 branch2 //显示出所有有差异的文件的详细差异

Hexo如何为侧边widgets加上微信公众号图片

这篇文章中,我们来在 landscape 主题的侧边栏中添加微信公众号的二维码。

1 找到 themes/landscape 下的配置文件 _config.yml,添加 weixin 变量配置为二维码地址。

1
2
# 配置关注微信公众号
weixin: http://www.hohode.com/css/images/qrcode_for_gh_0360e257312d_258.jpg

2 在 themes/landscape/layout/_widget 目录下新建 weixin.ejs 文件,添加如下代码

1
2
3
4
5
<% if (theme.weixin){ %>
<div class="widget-wrap">
<img src="<%= theme.weixin %>" width="100%" height="100%"/>
</div>
<% } %>

这里根据是否存在1中的微信二维码链接来控制这个模块的显示。可以根据实际需要设置样式。

3 修改 themes/landscape/_config.yml , 在 widgets 添加 weixin。

1
2
3
4
5
6
7
8
widgets:
- weixin
- recent_posts
- tagcloud
- category
- archive
- tag
- links

总结:
本节中通过将微信公众账号的二维码作为一个组件( weixin.ejs ),利用 hueman 主题已有的侧边栏配置,非常方便的实现了微信公众号二维码的添加。

Python日期的加减

https://segmentfault.com/q/1010000012025203

对于天,小时,分钟和秒的加减使用timedelta就可以做到

1
2
from datetime import datetime,timedelta
yesterday = datetime.now() + timedelta(days=-1,hours=-1,minutes=-1,seconds=-1)

但是对于月的加减就需要用到下边的方式

1
2
from dateutil.relativedelta import relativedelta
last_month = datetime.now() + relativedelta(months=-1)

通过Linux脚本将日志文件定时备份

脚本如下,将如下代码命名为roll_log.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
source_file=$1
keep_days=5
if [ -n "$2" ] ;then
keep_days=$2
fi
log_dir=`dirname $source_file`
cd `dirname "$0"`
pwd
d=$(date "+%Y%m%d%H%M%S" -d '-1 hour')
filename=${source_file}_${d}.log
echo $filename

# file size should bigger than 1M
size=`ls -l $source_file | awk '{print $5}'`
if [ $size -gt 1048576 ]; then
echo "size is bigger than 1048576"
cp -f $source_file $filename
else
echo "size is less than 1048576"
fi

echo a >$source_file
d1=$(date "+%Y%m%d" -d "-${keep_days} day")
oldfile=${log_dir}/*${d1}*.log
echo $oldfile
rm -f $oldfile

将roll.log放到/root/目录下,然后通过crontab -e将其加入定时任务

1
* * * * * sh /root/roll_log.sh /path/to/filename.log 1

roll_log.sh接收两个参数1.文件名,2.天数,即日志保留多长时间