- 能够非常方便地编写、测试并部署智能合约到以太坊
- 内置了Hardhat Network,不用部署到真是的以太坊网络也能进行测试
安装配置
1 | npm install -g hardhat |
1 | npm install -g hardhat |
1 | # macos |
data/keystore
下1 | geth --datadir ./data account list # 列出当前所有的account |
1 | apt install ffmpeg -y |
1 | # 转换视频格式 |
prefix
去防止覆盖,对于负数的属性,prefix
仍然需要写在最前面,例如tw--mt-10
1 | module.exports = { |
1 | yii serve 0.0.0.0 --port=8888 # 指定端口,指定host |
1 | # index.php |
可以来自系统中已定义好的第三方服务,也可以直接来自于文件上传、API接口、SQL查询、FTP上传、Email附件
可以自定义时间去刷新(1h - 24h),但是如果是文件上传这种是不能自动刷新的
可以支持参数,但是必须依赖于klip变量,例如,可以写成https://haofly.net/{props.pageName}
,这里的pageName
就是klip的变量,如果是第一次访问一个之前没有请求过的参数,那么可能会比较慢,后续的定时刷新也是可以起作用的,刷新的会把所有请求过的参数都请求一遍
由于数据源的接口请求超时时间是80s,对于数据量大的,我们可以创建email形式的数据源,定时往指定的邮箱发送附件即可
数据源的大小默认最大是10MB,通过付费计划可以升级到15MB,但是更大就不行了,并且modelled data也不能超过这个限制,所以要想join几张大表,可以在klip面板使用ARRAY(表1, 表2),或者LOOKUP来查找需要的mapping数据。明明是我自己研究出来的方法,发现官网有文档的: Managing your data source size
如果要在dashboard
上手动请求刷新data sources,可以直接data sources的请求刷新接口:
1 | // 使用html component做一个刷新按钮,然后手动POST接口 |
1 | // 基本请求方式 |
1 | axios.get('/user', { |
material-ui
更名为mui
了,网上搜到不要奇怪react-native
相关的UI插件,可以使用react-native-paper
来代替,它也是遵循material design的动态调用组件的方式
1 | const components = { |
我们可以用SvgIcon
来封装自己的图标,如果有自己的图标并且数量多且用的地方多,最好用这个来封装每一个svg,就能让他们统一起来
还有种借助webpack的svgr进行封装的方式可以让svg仍然以svg的形式存在,但是没有试过,先就不写了
封装只需要这样做即可:
1 | function HomeIcon(props) { |
实用起来就方便得多了
fill
属性中,可以直接在path
元素上面加上fill={props.color || "white"}
1 | <HomeIcon |
width: 100%;height:100%
的属性,我去1 | <Tooltip |
1 | <Typography |
1 | const [expanded, setExpanded] = useState(false) |
1 | <Link component="button" color="inherit" underline="always"> |
非常实用的一个组件,类似于bootstrap中的utilities,可以非常方便地通过props来设置样式
这就是material-ui
中的System 系统
,不过system系统包含一些非常实用的内联样式,不过这玩意儿不是每个元素上都可以直接加的,只有自带的Box
组件可以直接加,所以一般是直接在外面包围一层Box
,当然如果想要修改子元素的样式,可以用clone方法
1 | // 这样在实际生成的DOM元素中就不会有一个多的Box层了,而是直接将样式附加到了子元素上 |
支持的所有的属性(其中不包含的常用的属性包括background-image/background-position)
1 | <Box |
Cloud Tasks
队列,或者在时间快完的时候直接再调用一下url参数组织一下1 | req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.headers['fastly-client-ip'] // 可以通过这种方式获取客户端IP地址 |
任务队列,官方文档用起来非常简单实用,可用于多消费者,或者减少第三方接口的并发速率限制
速率控制(队列使用令牌桶来控制任务执行速率,每个命令的队列都有一个用于存储令牌的存储分区,应用每执行一个任务,就会从桶中移除一个令牌,会按照max_dispatches_per_second速率不断向令牌桶中补充填充新令牌)
重试控制:
一些限制
官方文档给的例子是发送一个字符串,但是如果要发送json格式的payload,可以这样做:
1 | const task = { |
The queue cannot be created because a queue with this name existed too recently: 队列删除7天后才能创建同名的队列