我学Rust_3_连cockroach数据库和代码美化rustfmt的安装使用

2018/03/15
做好了爬取 591mov 的基本功能,
还用了 git-flow 的feature的基本功能,昨天做到半夜4点半,集中精力干活挺好的,
哇哈哈。接下来时做数据库,
决定选用分布式的cockroachDB 或 开源的Postgres DB,
刚好cockroachDB 官方指南有Rust的开发指引,这就开始咯。


1,下载了最新的cockroachDB,记住Windows版本的不能互联,貌似是500毫秒的bug;
   linux的版本才能互联成集群,所以windows版本拿来开发就行,
   我文件夹里面有一个了,查看版本,命令行下: .\cockroach.exe version ,
   显示时v1.1.2,下载最新的1.1.6,或许已经解决了刚才说的问题呢。

2,在cargo.toml 里面添加新一行依赖: postgres = "",idea自行下载,解压出来放在一个目录里,


3,以管理员运行power shell,cd去到这个目录,启动之: 

.\cockroach.exe start --insecure --http-port=9099 --host=localhost 
默认端口是26257 改端口是 --http-port=9099
默认保存位置是同一目录下的cockroach-data目录,改目录--store=xx_store,
还有更详细的如--store=path=/mnt/ssd01,size=20% 或 --store=path=/mnt/ssd01,size=20GB  或 10000000(单位是bytes), 或20GiB , 0.02TiB 或百分比 0.2, .2 , 20%

4,用浏览器打开: http:\\localhost:9099\ ,哇擦嘞,专业的数据库界面,如果有集群,还能选择集群里其它机器上的数据库信息,一级棒。


5,新开一个终端,以管理员身份运行,创建新用户,.\cockroach.exe user set oiken --insecure

6,创建数据库: .\cockroach.exe sql --insecure -e 'CREATE DATABASE xx_db'
7,赋予用户权限: .\cockroach.exe sql --insecure -e 'GRANT ALL ON DATABASE xx_db TO oiken'
8,开始在idea上编码写数据库部分,先不用那个orm工具,手写sql熟练比较好,
   有参考价值的是这个网页里的类型对应:https://crates.io/crates/postgres/
9,一开始连数据库就出错了,Connection::connect("postgres://oiken@localhost:9099", TlsMode::None)
   上面启动数据库时不是用了那个9099做端口吗?我以为就用9099就能连上去了,原来是给网页浏览时候使用的,
   一直停留着,连不上去,端口9099改为26257就顺利连上去了。
10,连上数据库,创建表不成功,因为端口后面没有指定数据库,这样就ok了
let database_connection = match Connection::connect("postgres://oiken@localhost:26257/xx_db", TlsMode::None, ) {}

2018-03-21
昨天调整了整个lib.rs的函数结构,除了数据库的保存没做好,其它都通过运行了
有900行代码了,感觉太乱,太杂,想分开文件来做,查看了一下别人的rust文件的mod和文件系统
想模仿一下,分开管理。
http://wiki.jikexueyuan.com/project/rust/creates-and-modules.html 箱和模块
https://photino.gitbooks.io/rust-notes/module-system.html 模块系统


idea的rust默认不是等宽字体,所以对得不准,不好看
例如
id:         Option<u32>,//这个值来自数据库自增id,如果是从网页来的可能id就是空的
pub path:   String,
嗯,好的,再Notepad++上是等宽的哈。
google了一下,idea的字体设置: File -> settings -> Editor -> Font -> Font选择 Source Code Pro,
是adobe的等宽字体,大小选择20,刚好


2018-04-02
分模块后,因为一时没有调用到定义,不用 #[allow(dead_code)] 的话,会出现警告 variant is never constructed
虽然编译通过,但有warning总是不好看,google后的解决方法
来自 https://stackoverflow.com/questions/25877285/how-to-disable-unused-code-warnings-in-rust
#[allow(dead_code)] 或 #![allow(dead_code)]带感叹号是整个rs文件都允许dead_code


手贱,又用命令行 rustup update,
更新到了1.25.0 2018-03-25的版本,原来版本1.24.1是2018-02-27,
希望不会出问题。


本想安装rustfmt这个代码美化插件,要求是1.24版本以上,
安装命令: rustup component add rustfmt-preview
使用命令: cargo fmt
结果:因为要安装gnu版本,有点想放弃
再google一下: 
rustup component --help
rustup component list 查看已经安装的
rustup default nightly-x86_64-pc-windows-msvc
rustup show
rustup component add --toolchain nightly rustfmt-preview
cd到项目下(src文件夹所在的文件夹),执行 cargo fmt -v
发觉前面安装的nightly gnu 版本没有作用,卸载掉,不用浪费空间
rustup uninstall nightly-x86_64-pc-windows-gnu
rustup uninstall stable-x86_64-pc-windows-gnu

总结一下:
1,windows系统下安装nightly版本的msvc,并且默认使用nightly版本,只需执行一句:
rustup default nightly-x86_64-pc-windows-msvc
2,rustup show查看一下是否默认是 nightly-x86_64-pc-windows-msvc 版本,
3,去到项目根目录,就是有cargo.toml 文件的目录,执行 cargo fmt -v 可以看到fmt了几个文件,
就说明执行成功了。
4,如果对于nightly版本有芥蒂,那使用完fmt命令后可以恢复回stable版本
rustup default stable-x86_64-pc-windows-msvc



TODO: 因为数据库一旦生成,会更改数据结构,就会升级数据库,这里是个需要积累的过程;
      必须每次都需要在数据库里先做升级表的操作,再运行程序,失败是不能影响到原有数据库内容的。
      不单升级,降级也需要写,降级不能保证数据迁移后的完美,
升降级的策略有逐次迭代和一次到位,我选择一次到位,毕竟升级的时间不要拉得太长,用户体验会好
 
https://kaisery.github.io/trpl-zh-cn/ch11-02-running-tests.html   Rust 编程
http://wondertwo.me/2017/10/10/android-sqlite-update/   数据库升级填坑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值