TOML

深入对比TOML,JSON和YAML

萝らか妹 提交于 2020-05-08 10:33:17
坦率地说,在我开始与Hugo TOML合作之前,我感到羞耻是一个需要发现的新领域,但我对YAML和JSON非常熟悉。 本文将帮助您了解如何通过不同的数据格式构建数据。 在Hugo中,您可以将所有这三种数据格式用于配置,前置事项和自定义数据,但TOML是用于整个项目的推荐格式。 首先我想简单介绍一下每种数据格式,然后再进入规范和比较。 TOML(Tom's Obvious,Minimal Language) TOML 显然是由Tom - Tom Preston-Werner编写的 - 确切地说。 这是一个在麻省理工学院授权的开源项目,目前 在Github上 有超过5k星 。 2013年3月发布的第一个TOML版本,使TOML成为三个标准的年轻人。 TOML的目标是成为最小的配置文件格式,由于精确的语义,这种格式易于阅读。 TOML被设计为无歧义地映射到散列表。 TOML应该很容易用各种语言来解析数据结构。 关于TOML语法的简短事实 TOML区分大小写。 TOML文件只能包含UTF-8编码的Unicode字符。 空格表示制表符(0x09)或空格(0x20)。 换行符表示LF(0x0A)或CRLF(0x0D0A)。 要在前面的问题中使用TOML,你需要将它封装在 +++ 如下 之间 : +++ date = "2016-12-14T21:27:05.454Z" publishdate

TiDB数据库 使用syncer工具同步实时数据

陌路散爱 提交于 2020-05-06 09:30:09
mysql> select campaign_id ,count(id) from creative_output group by campaign_id; 602843 rows in set ( 4 min 44.23 sec) mysql> select is_cr_own ,count(id) from creative_output group by is_cr_own; 597684 rows in set ( 44.55 sec) 首先是查看tidb数据库的syncer工具的介绍 使用syncer工具的场景一般是:   全量导入历史数据后,通过增量的方式同步新的数据 (需要 checker + mydumper + loader + syncer)。该场景需要提前开启 binlog 且格式必须为 ROW。 主要的步骤我们可以看官网链接: https://pingcap.com/docs-cn/op-guide/migration-overview/ 注意:mysql必须开启几项服务才行,主要是bin-log功能,Binlog格式等等,详细请查看:https://pingcap.com/docs-cn/tools/syncer/ 的后半部分内容。 有一个文件syncer.mata需要注意: 我创建并编辑好这个文件后放在了/usr/local/tidb

Python3操作YAML文件

 ̄綄美尐妖づ 提交于 2020-04-29 14:10:07
数据及配置文件之争 数据及文件通常有三种类型: 配置文件型:如ini,conf,properties文件,适合存储简单变量和配置项,最多支持两层,不适合存储多层嵌套数据 表格矩阵型:如csv,excel等,适合于存储大量同类数据,不适合存储层级结构的数据 多层嵌套型:如XML,HTMl,JSON、YAML,TOML等,适合存储单条或少数多层嵌套数据,不适合存储大量数据 YAML兼容JSON格式,简洁,强大,灵活,可以很方便的构造层级数据并快速转为Python中的字典。 YAML简介 YAML(YAML Ain't Markup Language)即一种反标记(XML)语言。强调数据为中心,而非标记。YAML大小写敏感,使用缩进代表层级关系。 YAML中支持对象Object(对应Python中的字典), 数组Array(对应Python中的列表)以及常量(字符串、数字(int/float),true/false/null)。 相比于JSON格式,YAML免除了双引号,逗号,大括号,中括号等,(当然也支持原始的JSON格式),并且支持注释,类型转换,跨行,锚点,引用及插入等等。 基本格式 对象:使用 key: value 表示, 冒号后面有一个空格 ,也可以是使用 {key: value} (flow流格式)或 {"key": "value"} 表示 数组:使用 - value 表示,

Yearning MYSQL SQL语句审核平台(2.2.0版本)

元气小坏坏 提交于 2020-04-24 16:44:48
注意事项:Yearning 仅依赖Mysql数据库 ,mysql版本必须 5.7 及以上版本, 创建Yearning库 , 字符集应为UTF8mb4 一、Yearning-go提供二进制下载包 下载地址 https://github.com/cookieY/Yearning/releases 目录结构如下: 修改配置文件conf.toml,修改数据库地址和密钥 关于SecretKey SecretKey是token/数据库密码加密/解密的salt。 建议所有用户在初次安装Yearning之前将SecretKey更改(不更改将存在安全风险) 格式: 大小写字母均可, 长度必须为16位 特别注意: 此key仅可在初次安装时更改!之后不可再次更改!如再次更改会导致之前已存放的数据源密码无法解密,最终导致无法获取相关数据源信息 二、初始化数据库和启动 1、初始化数据库: ./Yearning -m 2、默认启动: ./Yearning -s 参数启动: ./Yearning -s -b "192.168.xx.xxx" -p "8000" 3、 打开浏览器 ,访问: http://192.168.xx.xxx:8000 ,页面如下 默认密码:admin/Yearning_admin ,登录成功页面如下: 具体使用,请参考手册 https://guide.yearning.io/ 来源:

pyinstaller Hidden import not found

 ̄綄美尐妖づ 提交于 2020-04-16 05:51:30
问题 I'm using pyinstaller. In my script there is: import toml config = toml.load('config.toml') I compiled my script with: pyinstaller main.py --onefile --clean --name myApp but when I run the executable it gave me: ModuleNotFoundError: No module named 'toml' So I tried this: pyinstaller main.py --hidden-import toml --onefile --clean --name myApp and now pyinstaller says: ERROR: Hidden import 'toml' not found 回答1: Found the answer. If you are using a virtual environment (Like Pipenv, pyenv, venv)

有关 tom-toml 的一些事儿

不羁岁月 提交于 2020-04-15 20:33:26
【推荐阅读】微服务还能火多久?>>> 为什么要再写一个TOML解析器 学习写解析器 支持注释 支持格式化输出并保持次序 学习写解析器 一直认为编写解析器是非常有挑战性的任务. TOML 本身已经很简洁. 为 TOML 写个解析器很有吸引力. 我们知道已经有了 YACC 这样工具可以完成此类工作. 事实上 Go 提供了这样的工具, TOML 上也有关于 EBNF 的讨论, 已经出现出几个版本. 但是要让这些 EBNF 定义转换成特定语言的代码, 还有很多辅助工作. 作为学习目的, 我采取先手工写一个解析器, 可以对完整使用 EBNF 有更深刻的理解. 鉴于 TOML 的简洁. 手工写出所有的 First 集和 Follow 集是可行的. parser.go 中 stateEmpty/tokensEmpty 就是 First 集, 按照编译原理所阐述的, 解析完整结束也会回到 First 集. 解析开始的时候至少要匹配到 First 集合中的一项(TOML 没有二义性, 只匹配一个). 解析结束的时候会回到 First 集合, 由于我写的 First 集合中没有 EOF 匹配, 所以当匹配不了 First 集合时, 解析结束, 相反如果在 First 集合中写下 stateEof/tokensEof 那最终会以匹配 EOF 而结束. 其他的 Follow 集合也是必须要有匹配,

利用hugo +github pages搭建个人博客

余生颓废 提交于 2020-04-14 01:41:13
【今日推荐】:为什么一到面试就懵逼!>>> ## 安装hugo 1. 首先安装hugo brew install hugo 2. 查看hugo version hugo version 3. 进入到workspace,然后创建一个hugo 的workspace hugo new site quickstart # quickstart 为你的自定义workspace的name 4. 然后给hugo选择主题 cd quickstart cd themes #进入到hugo的themes目录下 git clone https://github.com/liuzc/LeaveIt.git #下载某一主题,当然也可以选择你喜欢的其他主题 然后修改 cofig.toml 中的 theme字段为LeaveIt。 theme = "LeaveIt" 5. 配置主题 cofig.toml [menu] [[menu.main]] name = "Blog" url = "/posts/" weight = 1 [[menu.main]] name = "Categories" url = "/categories/" weight = 2 [[menu.main]] name = "Tags" url = "/tags/" weight = 3 [[menu.main]] name =

将基于hugo搭建的个人博客部署到github上,供外网访问

旧城冷巷雨未停 提交于 2020-03-24 19:44:28
3 月,跳不动了?>>> 搭建本地的hugo个人博客: https://my.oschina.net/u/4284277/blog/3207783 搭建好的博客地址示例: https://zhang-550.github.io/post/ 1. 配置config.toml文件 改成自己的github地址 1.2 怕你不会创建,带你创建一下自己的github仓库 1.2.1 首先登录你的github账号 github 地址 https://github.com 1.2.2 步骤1:创建仓库 点击new进行创建 1.2.3 步骤2:填写配置内容,完成创建 1.2.4 步骤3:查看github 创建完成后这里即可看到刚刚创建的仓库 1.2.5 步骤4:查看ssh路径,后面要用 点进去刚刚创建的仓库 2. 部署到github供外网访问你的博客 2.1 步骤1: 启动本地hugo: 本地启动需要执行如下命令: hugo server 访问该路径即可看到自己的博客了: localhost:1313 如果不行,看下之前搭建本地hugo博客中的3.2.2步骤中是否删掉了draft:true或者讲draft改为了false 搭建本地hugo个人博客地址: https://my.oschina.net/u/4284277/blog/3207783#h3_20 启动成功 2.2 步骤2:

hugo搭建个人博客

本秂侑毒 提交于 2020-03-21 16:35:30
3 月,跳不动了?>>> 额,折腾起来,搭建一个个人博客玩一下 1. 下载安装hugo 官网下载地址 https://github.com/gohugoio/hugo/releases 我们根据自身情况选择下载 我是win64位的,所以就用win64进行演示了 1.1 将安装包解压到指定目录 2. 配置环境变量 为什么要配置环境变量呢? 因为我们把hugo.exe解压到了D:\dev\hugo下面。hugo命令只能在该目录下才能识别。 如果我们想把博客目录建到其它目录下,就要配置环境变量。 2.1 步骤1:鼠标右键->属性 2.2 步骤2:点击高级系统设置 2.3 步骤3:点击环境变量 2.4 步骤4:选中path,点击编辑 2.5 步骤5:点击新建 2.6 步骤6:Hugo.exe目录,配置ok后点击确定,一路确定 3.hugo新建博客 3.1 打开cmd命令行 方式一: 快捷键:win+R键 win就是你的键盘上的那个四个格格 方式二: 通过电脑搜索cmd 3.2 输入如下命令 命令: hugo new site /path/to/site 比如 hugo new site E:/hugo/myBlogger 就会在E盘的hugo文件夹下新建一个叫myBlogger的hugo站点 3.2 hugo新建页面和文章 3.2.1 新建一个links页面 命令: hugo new

Go 每日一库之 viper

回眸只為那壹抹淺笑 提交于 2020-02-27 04:47:37
简介 上一篇文章介绍 cobra 的时候提到了 viper ,今天我们就来介绍一下这个库。 viper 是一个配置解决方案,拥有丰富的特性: 支持 JSON/TOML/YAML/HCL/envfile/Java properties 等多种格式的配置文件; 可以设置监听配置文件的修改,修改时自动加载新的配置; 从环境变量、命令行选项和 io.Reader 中读取配置; 从远程配置系统中读取和监听修改,如 etcd/Consul; 代码逻辑中显示设置键值。 快速使用 安装: $ go get github.com/spf13/viper 使用: package main import ( "fmt" "log" "github.com/spf13/viper" ) func main() { viper.SetConfigName("config") viper.SetConfigType("toml") viper.AddConfigPath(".") viper.SetDefault("redis.port", 6381) err := viper.ReadInConfig() if err != nil { log.Fatal("read config failed: %v", err) } fmt.Println(viper.Get("app_name")) fmt