19-07-12 -> 19-08-15

Hell world

开始 & 安装

curl https://sh.rustup.rs -sSf | sh

网络真的是僵硬,下载下一年, 我用远端服务器就很快下了 真是艹了,我在远端 都跟着教程看了两章+尝试demo了,本地的build下载还没下好

国内的话 配置~/.cargo/config如下会稍微快一些,吐槽

1
2
3
4
5
6
7
[registry]
index = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index/"
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'
[source.sjtug]
registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index/"

更新 上面不能用的话看这里 https://lug.ustc.edu.cn/wiki/mirrors/help/rust-crates

IDE/vim配置

我是用的vim + spf13-vim上加自己配置的 ~/.vimrc.local

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function CompileByFileType()
if &filetype == "cpp"
"!clang++ -o "%<" "%" -std=gnu++17 -O2 -g -Wall -Wcomma
!clang++ -o "%<" "%" -std=gnu++17 -g -Wall -Wcomma
"!g++ -o "%<" "%" -std=gnu++14 -O2 -g -Wall
elseif &filetype == "c"
!gcc -o "%<" "%" -O2 -g
elseif &filetype == "python"
!python3 "%"
elseif &filetype == "go"
!go run "%"
+ elseif &filetype == "rust"
+ !cargo run
else
echo "UNKNOWN FILETYPE : &filetype"
endif
endfunction

nnoremap <F9> :call CompileByFileType() <CR>

其它的话 据说Clion + rust插件 不错

入门命令

rustup docs --book

66666 题外话,我觉得现代的游戏 除了游戏本身还需要 背景,目标玩家定位,目标游戏类型定位,以及自身完备性和营销。自身完备性比如观战,历史记录等,去年出的 刀牌 从6万峰值到现在上线就是世界前100,我认为其中缺少的就是完备性。而rust 带一个 这个文档66666

有了教程,那我yyp一点 教程里的总结吧

  • 单个rs:rustc main.rs
  • build project using cargo build or cargo check.
  • build + run a project cargo run.
  • Instead of saving the result of the build in the same directory as our code, Cargo stores it in the target/debug directory.
  • cargo build –release

依赖相关

如果玩过npm可以感觉到和package.json 和对应的lock相似

首先Cargo.toml 中加入需要依赖的库和版本描述,如rand = "0.3.14",会匹配能匹配的某个版本

然后cargo build

Cargo.lock会保存首次build的各个库的版本

如果希望升级cargo update

基本语法+写一个猜测数游戏

猜数

依赖

閱讀全文 »

Why

作为被factorio洗脑的人 看到 自动化 自动化 自动化 就会激动

Steps

首先你需要 java 8(jre/jdk),docker

这两个我之前都安装过了

然后下载jenkins: https://jenkins.io/zh/download/

运行命令java -jar jenkins.war --httpPort=8080

打开网页http://localhost:8080

输入终端里展示的密码 –> 下一步 –> 等待安装git等一系列工具 –> 创建管理员用户`–> 实例配置(我发现有不少网页开发工具都有意无意的避开了8080端口 这里我直接默认) –>开始使用

我这边最后一步以后白屏了,但是从Network看似乎没有资源卡着,于是我把服务先杀掉再启动一遍,可以进入jenkins了23333

Hell world

单击 New Item

閱讀全文 »

开始 & 安装

文档

https://code.visualstudio.com/api/get-started/your-first-extension

https://github.com/microsoft/vscode-extension-samples

install & Run

1
2
npm install -g yo generator-code
yo code

选择你希望的选项

code ./新建目录

F5启动

Ctrl+Shift+P输入Hello world回车

当你修改了代码后,在新打开的窗口Ctrl+Shift+P再输入Reload Window就重新加载了代码

解剖

package.json

  • 注册 onCommand Activation Event:onCommand:extension.helloWorld ,so the extension becomes activated when user runs the Hello World command.
  • 使用contributes.commands Contribution Point 来让Hello World命令 在Command Palette 可用,并且绑定到命令idextension.helloWorld
  • 使用commands.registerCommand的VS Code API绑定到已注册的命令ID extension.helloWorld

  • Activation Events: events upon which your extension becomes active.

  • Contribution Points: static declarations that you make in the package.json Extension Manifest to extend VS Code.
  • VS Code API: 代码中API,可以在你的extension代码中调起

其它配置文件

  • launch.json used to configure VS Code Debugging
  • tasks.json for defining VS Code Tasks
  • tsconfig.json consult the TypeScript Handbook

package.json

vsc使用 <publisher>.<name>作为一个插件的unique ID

tree-view

emmmmmm 看了一会代码 发现有文档 https://code.visualstudio.com/api/extension-guides/tree-view

直接看文档吧…

Why

可以在私有环境下使用。如果想用非私有,现成的,可以考虑https://github.comhttps://gitlab.com

手工安装 docker-ce

安装依赖

1
sudo apt install ca-certificates curl openssh-server postfix

安装 gitlab-ce

1
2
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt install gitlab-ce

注: 国内有不少镜像源 例如https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/,国内镜像会快很多,可以替换上面生成的/etc/apt/sources.list.d/gitlab_gitlab-ce.list中的路径

sudo gitlab-ctl reconfigure

按理说这里就可以用了

你需要设置root的密码,和新建一个用户以及(设置该用户的密码)

配置

然而 因为我本地apache服务和原来开启的nginx服务,有80冲突和原来nginx服务冲突(?),导致我找问题找了很久很久[我似乎也没看到报错

修改 sudo vim /etc/gitlab/gitlab.rb

中的external_url 为你的domain名称+port,如http://192.168.1.51:8081

最后我停掉两个服务再重启 gitlab就好了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* 未使用了 如果本身还有nginx据说可以配一下
# nginx listen_port 配置

修改

`/etc/gitlab/gitlab.rb`

找到`nginx['listen_port']`修改为

nginx['listen_port'] = 8081

再执行`sudo gitlab-ctl reconfigure`

访问`你的domain:8081`即可
*/

gitlab on docker

1
2
3
4
5
6
sudo docker run --detach --name gitlab \
--hostname gitlab.example.com \
--publish 30080:30080 \
--publish 30022:22 \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com:30080'; gitlab_rails['gitlab_shell_ssh_port']=30022;" \
gitlab/gitlab-ce:latest

好了 ssh 30022和http 30080都ok,docker真香了

https://developer.ibm.com/code/2017/07/13/step-step-guide-running-gitlab-ce-docker/

https://docs.gitlab.com/omnibus/docker/README.html

问题:仓库通过ssh的git clone报错

httpclone可用

sshclone报错: fatal: protocol error: bad line length character: Welc

gihub上很多说sed -i 's/session\s\+required\s\+pam_loginuid.so/# \0/' /etc/pam.d/sshd 就是注释掉 也没用(也restart 过)

问题排查

网上有很多 pam的 校验关闭都没有用

然后 通过ssh -vvv git@<ip>得到Exit status 254,对应也是没有搜到可行方案,但感觉距离问题近了些

查看/var/log/auth.log发现

1
2
3
4
5
6
Aug 20 14:24:03 RBEST systemd: pam_unix(systemd-user:session): session opened for user git by (uid=0)
Aug 20 14:24:03 RBEST systemd-logind[941]: New session 170 of user git.
Aug 20 14:24:03 RBEST sshd[16070]: error: PAM: pam_open_session(): Module is unknown
Aug 20 14:24:03 RBEST sshd[16148]: Received disconnect from 192.168.1.51 port 48618:11: disconnected by user
Aug 20 14:24:03 RBEST sshd[16148]: Disconnected from user git 192.168.1.51 port 48618
Aug 20 14:24:03 RBEST systemd-logind[941]: Removed session 170.

这个error也搜不到对应的

鸽了! 用 docker来搞

docker的方法测试

ssh -vvv git@gitlab.example.com -p 30022的exit code 是0 所以感觉还是 本地的ssh相关的东西配置有问题

修复(重装试试)

上面我得到的信息是

  1. ssh git@应该是成功登录了 但是没有和gitlab联系上
  2. docker里看 只用简单配置 就应该能用
  3. 我尝试新开了个空白虚拟机,装一遍gitlab是能用的

于是按照https://askubuntu.com/a/824723/653605把 gitlab完全删除 再重装就好了?喵喵喵,虽然现在能用了,可是之前究竟是什么问题。

TODO email

https://docs.gitlab.com/omnibus/settings/nginx.html

权限管理

权限管理 https://docs.gitlab.com/ee/administration/#user-settings-and-permissions

用root权限用户登陆

<你的地址>/admin/application_settings

可见和可访问性

的Restricted visibility levelsx限制为 内部和私有

关闭了为所有项目默认 runner和默认CI/CD

HTTPS

/etc/gitlab/gitlab.rb 设置

external_url 'https://gitlab.xxx.com'

以及

1
2
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['你的email']

gitlab-ctl reconfigure就可以自动生成证书并且 启用https了

内存占用过大

1
2
unicorn['worker_timeout'] = 60
unicorn['worker_processes'] = 2

也有其它git server :https://gogs.io/

参考

https://about.gitlab.com/

https://hub.docker.com/r/gitlab/gitlab-ce/

https://gitlab.com/gitlab-org/gitlab-foss/-/issues/25840

https://docs.gitlab.com/omnibus/settings/unicorn.html