疫情后实在憋得太久了,7月的重庆也实在太热了,于是找个周末说走就走。好在我现在是在电脑上面工作,所以周四晚上就能出发。
行程
Day1: 贵阳
第一天是周五我也没请假,于是我一个人在酒店,老婆带着孩子出去玩儿的。下班后我们再一起在贵阳城区逛逛。
黔灵山森林公园、贵阳的几条好吃街、甲秀楼、贵阳白宫
1 | sudo apt remove iptables-persistent -y && sudo ufw disable && sudo iptables -F # 关闭机器内部的防火墙 |
在Instance详情页的Virtual Cloud Agent
中打开Bastion
,然后在Bastion
的管理面板中创建session
,(注意,bastion的private ip需要加入到机器的network中添加一条路由,允许22端口),最后复制登录命令即可,例如:
1 | ssh -i <privateKey> -o ProxyCommand="ssh -i <privateKey> -W %h:%p -p 22 ocid1.bastionsession.oc1.us-sanjose-1.xxxxxx@host.bastion.us-sanjose-1.oci.oraclecloud.com" -p 22 ubuntu@10.0.8.89 |
如果登录报错(sign_and_send_pubkey: no mutual signature supported)可以尝试在~/.ssh/config
中添加配置:
1 | Host * |
1 | oci setup config |
/home/ubuntu/.oci/oci_api_key_public.pem
)到API Keys(My Profile -> API keys -> Paste a public key
)中,上传后可能需要等几分钟才生效1 | # 用户管理iam |
可以使用React脚手架来初始化electron-react-boilerplate
mobx-persist-store
1 | npm run start # 运行APP |
添加依赖
1 | ./package.json # 非native的module,或者类型依赖@types/* |
package.json配置
1 | { |
redux
好用多了,就凭这一点我就放弃redux
了mobx-react-lite
,很多东西就不用写了,比如Provider,observable props(不需要在组件外部包裹observer了,默认store变化的时候会自动重新渲染),并且observer自动使用的就是React.memo,不需要单独为了优化性能去useMemo1 | npm install --save mobx |
每年的认知小结
结婚大事已交卷,生娃任务已完成,只要不生病,家人平安健康,慢慢赚钱,其余都是锦上添花。——网络
家总要成,钱总要挣,奔走红尘,勿忘曾经是书生——网络
做人要有责任和担当,应该把钱都拿出来买房,拯救国家经济——网络
努力的意义就是:当好运降临在自己身上时,你会觉得我配,而不是眼看着好事落在别人身上,然后愤愤地说 我呸。——网络
我上了那么多年学,熬了那么多夜,做那么多习题,顶着各种各样的压力,参加各种残酷的考试,谈恋爱,分手,工作,加班。
我这么辛苦,竟然是为了成为一个普通人——网络
礼物不重要,重要的是礼物背后的心意:我依旧被你重视,被你放在心上。最好的婚姻,不是乍见之欢,而是久处不厌。最好的夫妻,是一起享受生活的平淡,却也喜欢带给对方的惊喜和温暖。
当爱情开花结果,就是另一场冒险的开始。
和你在一起的目的很简单,生个孩子,看你小时候的样子。——老君书屋
即使老婆在自己医院产检我也要陪她去,这样好的消息可以第一时间分享,坏的消息也能第一时间承担。
I/O -> Keyboard -> Toggle Software Keyboard
Edit Scheme
,然后选择Build的Pre-actions
,即可输入script,另外如果要获取当前的工程目录,可以使用${PROJECT_DIR}
,但是Provide build settings from需要选择当前的Target首先在XCode中的TARGETS选择当前的TARGET,右键Duplicate
点击顶部中间的Scheme,编辑新的Scheme,可以在新的Scheme的Build Pre-action中通过脚本来自动修改环境变量
选择当前Target,在Signing & Capabilities
,修改Bundle Identifier
,这样才能生成不同的APP
修改Info中的Bundle display name,即APP的名称
为了防止pod install的时候仅更新默认的target,其他的target的build phrases被破坏,需要在podfile里面添加配置
1 | # 下面配置仅针对 flutter,其他的项目,可以根据当前的podfile内容,复制出多个target |
要运行不同的APP的时候只需要切换顶部中间的schemes即可
App需要提供图标的规格为40/588/60/80/87/120/160/180/1024
,另外,如果最好是将png图片转换为jpg,因为默认会把png不存在的地方背景设置为黑色。准备好图标素材以后,直接在xcode
里面的Images.xcassets
将图标拖入即可。
private key
,修改Access Control
,需要修改配置Allow all applications to access this item
,否则下面在上传的时候会提示missing private key
或者让你无限输入电脑用户名密码的问题Product->Archive
,完成后会自动弹出一个对话框(当然,这个对话框也可以通过Window->Organizer
打开,要选择对应的APP)Distribute App
,然后选择App Store Connect
,再Upload
,一直下一步应该就可以了。(如果打包能成功,但是上传却说认证失败,可能是网络问题)App Store Connect
后台的TestFlight
看到刚才的build了,这时候可以去添加测试用户,点击左侧菜单App Store Connect User
进行添加,添加方式见页面提示即可,很简单,添加完成后会发送邮件给用户,里面有个兑换码,在ios的testflightapp上点击redeem输入兑换码即可下载,如果下载时提示the app couldn't be installed because testflight isn't available
,那就等大概五分钟试试react-native
平台对native
支持最好的表格组件了1 | npm install --save victory |
1 | <VictoryArea |
1 | npm i @tanstack/react-query |
配置就是将其作为一个provider注入到app中
1 | const queryClient = new QueryClient() |
enabled=false
的请求,如果之前已经缓存过数据了,那么会直接使用缓存的数据,并且status === 'success', isSuccess=true
query data cannot be undefined
开发IDE: 我一般就直接用idea了,有solidity插件,但是以太坊有一个官方的IDE: remix
如果是使用hardhat
,那么就不用单独安装了,它会安装指定的版本的solc
的
1 | brew update |
可见性修饰符(只能其中一种)
函数修饰符
函数入参修饰符
变量分类,注意每个变量在声明时都会有一个对应其类型的默认值(address -> address(0), boolean -> false, enum -> 第一个元素),没有空值null的概念
内置全局变量
1 | pragma solidity ^0.8.4; |