json生成html表格

demo

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
27
28
data = {"column_name":["name", "age", "sex"],
"column": [["Jack", "25", "male"],
["Rebot","18", "male"]]}

col_ks = data.get("column_name")
col_vs = data.get("column")

def dict_to_table(ks, vs):
"""
desc: dict2html_table
"""
th = ''
for name in ks:
th = th + '<th>' + name + '</th>'
trth = '<tr>' + th + '</tr>'

trtd = ''
for tds in vs:
tdss = ''
for td in tds:
tdss = tdss + '<td>' + str(td) + '</td>'
tdss = '<tr>' + tdss + '</tr>'
trtd = trtd + tdss

return '<table>' + trth + trtd + '</table>'

print(dict_to_table(col_ks, col_vs))
# <table><tr><th>name</th><th>age</th><th>sex</th></tr><tr><td>Jack</td><td>25</td><td>male</td></tr><tr><td>Rebot</td><td>18</td><td>male</td></tr></table>

preview

nameagesex
Jack25male
Rebot18male

使用MAT元数据匿名工具包
  • MAT:Metadata Anonymisation Toolkit

    什么是元数据Metadata?

    元数据是描述其它数据的数据(data about other data), 比如一张图片是图像数据,那么图片的拍摄时间拍摄地点等就是它的元数据。

为什么要清除元数据?

因为元数据包含时间,地点等个人敏感隐私数据。网上不乏有黑客通过社交照片的元数据信息追踪到用户地址,从而进行骚扰勒索等危险行动。包括此文中的博客, 上传图床前已经过脱敏处理.

安装

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
27
28
29
# 安装
apt install mat
# 启动图形界面
mat-gui
# 查看帮助信息
mat -h
usage: mat [-h] [-a] [-b] [-L] [-c] [-d] [-l] [-v] [files [files ...]]

Metadata anonymisation toolkit

positional arguments:
files

optional arguments:
-h, --help show this help message and exit

Options:
-a, --add2archive add to output archive non-supported filetypes (Off by
default)
-b, --backup, -b keep a backup copy
-L, --low-pdf-quality
produces a lighter, but lower quality PDF

Information:
-c, --check check if a file is free of harmful metadatas
-d, --display list all the harmful metadata of a file without
removing them
-l, --list list all supported fileformats
-v, --version show program's version number and exit

使用

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
27
#  参数 -c  检查是否含有元数据
mat -c metadata.jpg

[+] metadata.jpg is not clean

# 参数 -d 显示元数据
mat -d metadata.jpg

[+] File metadata.jpg :
Harmful metadata found:
Orientation: Horizontal (normal)
XMP Toolkit: XMP Core 4.4.0-Exiv2
Exif Image Width: 1147
Exif Image Height: 859
Exif Byte Order: Little-endian (Intel, II)
Software: Shotwell 0.28.4

# 删除元数据
mat metadata.jpg

[*] Cleaning metadata.jpg
[+] metadata.jpg cleaned!

# 再次检查
mat -c metadata.jpg

[+] metadata.jpg is clean

图形界面

添加, 清除两步操作很简单

支持格式:

Portable Network Graphics (.png)
JPEG (.jpg, .jpeg, …)
TIFF (.tif, tiff, …)
Open Documents (.odt, .odx, .ods, …)
Office OpenXml (.docx, .pptx, .xlsx, …)
Portable Document Fileformat (.pdf)
Tape ARchives (.tar, .tar.bz2, …)
MPEG AUdio (.mp3, .mp2, .mp1, …)
Ogg Vorbis (.ogg, …)
Free Lossless Audio Codec (.flac)
Torrent (.torrent)

备注

  1. 依赖Python2解释器
  2. 谨慎使用,不一定能清除所有的元数据, 尤其是深度自定义,水印或隐写数据。

使用Hexo构建静态博客站

Blog经历

从2014年起,我的博客先后经历了博客第三方平台博客园WordpressDjango 框架自建, Tornado框架自建,Pelican 静态博客框架及现在使用的Hexo静态博客框架。 可谓是第三方,动静结合,都经历过了, 但最终还是被爆表的颜值主题和易用性强大的Hexo所深深折服 ,Hexo真香ヾ(o◕∀◕)ノヾ!

博客框架特点:

框架 开发语言 类型 特点
Wordpress PHP 动态博客 功能插件完备,拿来就用
Django Python 动态博客 模块完备,开发速度快
Tornado Python 动态博客 小巧玲珑,支持系统级异步并发
Pelican Python 静态博客 简洁,纯粹
Hexo Node.js 静态博客 美,易用

Hero安装简述

首先安装Node.js, 然后安装hexo-cli:

1
2
3
4
5
npm install hexo-cli -g
hexo init myblog
cd myblog
# 预览
hexo server

默认主题模板是landscape, 这里推荐国人设计开发的melody, 文档完备,通俗易懂,非常棒!


ubuntu18.04编译安装python3.8

下载

1
2
3
4
5
# 下载源码包至`opt`目录
wget -c -P /opt https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz
# 解压解包
tar - xvf Python-3.8.0.tar.xz
cd Python-3.8.0

编译安装

1
2
3
4
5
6
7
8
9
10
# 更新系统
apt-get update
apt-get upgrade
apt-get dist-upgrade
# 安装依赖库
apt-get install libbz2-dev libncurses5-dev libgdbm-dev libgdbm-compat-dev liblzma-dev libsqlite3-dev libssl-dev openssl tk-dev uuid-dev libreadline-dev python-dev

./configure --enable-optimizations --enable-shared
make -j8
make altinstall

运行测试

1
2
python3.8
# python3.8: error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory

配置动态链接库路径

1
2
3
4
5
6
7
vim ~/.profile
# 追加
export LD_LIBRARY_PATH="/usr/local/lib"
alias python="/usr/local/bin/python3.8"
alias python3.8="/usr/local/bin/python3.8"
# 更新
source ~/.profile

再次测试成功!


第一次攒机记录-1-基本配置

配置明细:

组件 选型 选型分析 价格
CPU 盒装AMD Ryzen 7 3700X 4.4GHz Max Boost, 3.6GGz Base 7nm 8核16线程65w,性能强劲,性价比高 2660.15(含主板)
主板 MSI B450M PRO-VDH MAX 集成声卡/网卡,最大内存容量64GB, 有较大扩展性
内存 金士顿HX430C5PB3/16 SP 549
显卡 盈通 RX550 2G 369
SSD Samsung SSD 970 EVO Plus 250G 用做系统盘,秒启的秘密 422.82
硬盘 WD 蓝盘 20EZAZ RZ 2T 数据盘 340.03
电源 先马金牌500W全模组 338
机箱 爱国者YOGO M2 白色机箱很好看ヾ(o◕∀◕)ノヾ 165.62
4844.62

CPU参数

lscpu

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
架构:           x86_64
CPU 运行模式: 32-bit, 64-bit
字节序: Little Endian
CPU: 16
在线 CPU 列表: 0-15
每个核的线程数: 2
每个座的核数: 8
座: 1
NUMA 节点: 1
厂商 ID: AuthenticAMD
CPU 系列: 23
型号: 113
型号名称: AMD Ryzen 7 3700X 8-Core Processor
步进: 0
CPU MHz: 2199.572
CPU 最大 MHz: 3600.0000
CPU 最小 MHz: 2200.0000
BogoMIPS: 7200.06
虚拟化: AMD-V
L1d 缓存: 32K
L1i 缓存: 32K
L2 缓存: 512K
L3 缓存: 16384K
NUMA 节点0 CPU: 0-15
标记: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate sme ssbd mba sev ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip rdpid overflow_recov succor smca

内存

主板

SSD

术语解析:

  • NVM Express (Non-Volatile Memory express, NVMe)非易失性内存主机控制器接口规范是一个逻辑设备接口规范, 用于访问通过PCI-Express(PCIe)总线附加的非易失性内存介质。

    此规范目的在于充分利用PCI-E通道的低延时以及并行性,还有当代处理器、平台与应用的并行性,在可控制的存储成本下,极大的提升固态硬盘的读写性能,降低由于AHCI接口带来的高延时,彻底解放SATA时代固态硬盘的极致性能。

    • PCIe: PCI-Express, 高速串行计算机扩展总线标准。

使用hdparm初步测试硬盘性能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
apt-get install hdparm  
// 使用 fdisk -l 查看设备信息
/dev/nvme0n1p2
/dev/sda2

// 测试SSD读取效率
hdparm -tT /dev/nvme0n1p2
Timing cached reads: 23364 MB in 2.00 seconds = 11693.62 MB/sec
Timing buffered disk reads: 8170 MB in 3.00 seconds = 2723.12 MB/sec

// 测试机械硬盘读取效率
hdparm -tT /dev/sda2
Timing cached reads: 23728 MB in 2.00 seconds = 11875.69 MB/sec
Timing buffered disk reads: 462 MB in 3.01 seconds = 153.42 MB/sec


显卡


电源



牵着你的手
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
牵起你的手,
我们十指相扣。
看着你涨红的脸庞,
我没有言由。

牵着你的手,
我们在林荫道下漫游。
望着你忽闪波动的目光,
我的灵在颤抖。

牵着你的手,
我知道你在我的身后。
突然一个转身,
去吻着你的双眸。

丸子,
在未来的二百个年头,
请让我牵着你的手,
给你我的温柔。

春语
1
2
3
4
四月的风,撩乱倒映水中白云的心。
迁徙的鸟,勾起岸旁垂杨柳的思恋。
迷乱的花,怎能敌四季长青的松乔。
暮霭晨雾,是否也是春姑娘的话语。

我为什么喜爱尊巴
  • 不全身心投入地跳一次, 永无法理解Zumba的魅力.

第一次来到健身房的我,对桑巴尊巴POP普拉提阿斯汤加等课程的新鲜名词一丝概念也没有,仿佛发现了新大陆。按我以往对新事物的态度,必然会在网上检索一番。然后针对自己的特长喜好来做出选择。但我这次想要把所有的课程都亲身体验一遍。”实践是检验真理的唯一标准”,亲自体验才能真正了解自己想要的。也考虑到了,即使自己没有任何基础,跟不上节奏,我也要坚持完一节课。我很庆幸自己做出了这样的选择,假使我只是隔窗相望, 看到的必然是一副”群魔乱舞”的景象而心存芥蒂。

当伴随音乐响起扭动的那一刻,我知道我爱上她啦。当那节奏强烈的音乐响起,便足以使人兴奋!在这里的快速运动不仅仅是消耗身体中多余的脂肪,更多的还有精神上的愉悦。沉浸其中,可以忘却”生活”,”情感”,”工作”中的种种烦恼,酣畅淋漓地恣意挥洒着舞姿是多么畅快!不用在意任何人的看法。在这里没有对舞姿,舞感的任何要求,入门门槛极低,更没有性别,年龄,肤色的任何限制,甚至不在乎是不是一个’人’,只要它能伴随着音乐尽情扭动,脸上洋溢着快乐,这就够了!

上遍所有课的第二个好处就是可以体验每个教师的授课特点。情绪是可以传染的,假使我”意外”步入尊巴教室是一件幸事,那么第二件便是遇到一个能够把快乐与激情带给我的孙洁老师。孙老师不但有很强的舞感。那一颦一簇,举手投足,几声呐喊,便足以把快乐的情感传到到人间。这我可学不来。 (~ ̄▽ ̄)~

这是音乐与运动美的结合,随着音乐领略南美舞动的文化。我喜欢的Zumba音乐有zum72的MakosaInternacionales等。歌词都是西班牙语,其中Makosa的歌词大意便是“挥动舞步前后左右摇摆”。Internacionales译为“国际化”?大意是“舞蹈不需要语言,来自各个国家的人同在一个舞台舞动”。它的MV也很有意思,讲的是:一个南美的旅游社的社员因没去过中国长城受到旅客嘲讽,随即萌发访问东方世界的想法。买了双旱冰鞋便开启了一场说走就走的旅行。 ~( ̄▽ ̄~)

不过遗憾的是我感到Zumba在中国仍属小众运动,我在这次‘偶遇’之前从没听过这个词。这大抵是东方内敛中庸的文化与南美激情奔放文化巨大差异导致的。不过好在今年看到优酷独家推出《这!就是街舞》,会对尊巴街舞*类文化知识的普及,流行起到巨大的推动作用吧!(最近新开了街舞课,我要再尝试一下!φ(≧ω≦)♪)

最后介绍下我对Zumba的亲身了解吧。

  • 1.没学过舞步动作,没有舞蹈基础都不打紧,模仿领舞的动作直接开跳就是。
  • 2.开始不要在意自己的舞姿是否好看。但一定要用力大幅度挥动舞姿。让自己沉浸其中,想着自己是最快乐的人,做到忘我。(PS:我舞感就很差,跳的就很尴尬,但这里的人都沉浸在自己的世界中。不必害羞或放不开步伐,达到健康快乐的目的就好)
  • 3.虽然不要求舞姿,但做任何事都要有些专业精神不是么?所以应尽量模仿做到一板一眼。
  • 4.服装方面没有特定要求,尽量穿宽松,鲜艳的服装(鲜艳的衣服扭动起来多带劲啊!)
  • 5.体液消耗巨大,随身带个小水瓶补充体液。

玩转midi:使用vmpk在Gnu/Linux下弹钢琴

安装

1
2
sudo apt-get install vmpk
sudo apt-get install timidity

配置

  • 依次打开 QjackCTL,Qsynth(打开后其它音乐软件会禁声), VMPK,

    配置Qsynth:

    • Soundfonts → Open 加载sf2文件,(一般路径为/usr/share/sounds/sf2/FluidR3_GM.sf2)

配置QjackCTL:

  • 1.Start
  • 2.Connect
    • Audio: qsynth match system
    • ALSA: VMPK Output match FLUID Synth(21225)

配置VMPK

  • Edit → Connections → Output MIDI Connection: FLUID Synth → OK
  • 尽情在键盘上挥洒音符吧:)

  • 软件禁声恢复: quit Qsynth, STOP QjackCTL

ubuntu中文论坛VMPK 配置


美妙的生活
  • 生活如此美妙
  • 穿过万丈乌云
  • 有温暖的阳光照耀
  • 还有你的微笑