初始化我的第二个笔记仓库

main
Yogi 2023-10-08 14:41:14 +08:00
parent cb8824c668
commit 33459ce5ba
20 changed files with 701 additions and 0 deletions

5
.obsidian/app.json Normal file
View File

@ -0,0 +1,5 @@
{
"promptDelete": false,
"attachmentFolderPath": "Aseets",
"alwaysUpdateLinks": true
}

View File

@ -0,0 +1,4 @@
{
"accentColor": "",
"baseFontSize": 15
}

View File

@ -0,0 +1,30 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"properties": false,
"page-preview": true,
"daily-notes": true,
"templates": true,
"note-composer": true,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"bookmarks": true,
"markdown-importer": false,
"zk-prefixer": false,
"random-note": true,
"outline": true,
"word-count": true,
"slides": true,
"audio-recorder": false,
"workspaces": true,
"file-recovery": true,
"publish": false,
"sync": false
}

View File

@ -0,0 +1,23 @@
[
"file-explorer",
"global-search",
"switcher",
"graph",
"backlink",
"canvas",
"outgoing-link",
"tag-pane",
"page-preview",
"daily-notes",
"templates",
"note-composer",
"command-palette",
"editor-status",
"bookmarks",
"random-note",
"outline",
"word-count",
"slides",
"workspaces",
"file-recovery"
]

22
.obsidian/graph.json Normal file
View File

@ -0,0 +1,22 @@
{
"collapse-filter": true,
"search": "",
"showTags": false,
"showAttachments": false,
"hideUnresolved": false,
"showOrphans": true,
"collapse-color-groups": true,
"colorGroups": [],
"collapse-display": true,
"showArrow": false,
"textFadeMultiplier": 0,
"nodeSizeMultiplier": 1,
"lineSizeMultiplier": 1,
"collapse-forces": true,
"centerStrength": 0.518713248970312,
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 1,
"close": false
}

1
.obsidian/hotkeys.json Normal file
View File

@ -0,0 +1 @@
{}

168
.obsidian/workspace.json Normal file
View File

@ -0,0 +1,168 @@
{
"main": {
"id": "d457fda6cf1b5c22",
"type": "split",
"children": [
{
"id": "19312355a28b9d05",
"type": "tabs",
"children": [
{
"id": "daf761d0297d992f",
"type": "leaf",
"state": {
"type": "empty",
"state": {}
}
}
]
}
],
"direction": "vertical"
},
"left": {
"id": "adb9ff5fd6a39af6",
"type": "split",
"children": [
{
"id": "3795c01518dea149",
"type": "tabs",
"children": [
{
"id": "396326139fe57e3d",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical"
}
}
},
{
"id": "98c70ab9a31a6e9d",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
}
}
},
{
"id": "41e09e8f2b3abccc",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {}
}
}
]
}
],
"direction": "horizontal",
"width": 300
},
"right": {
"id": "008332ab0f5949de",
"type": "split",
"children": [
{
"id": "35484acf1a42a40b",
"type": "tabs",
"children": [
{
"id": "8c626ec87463284e",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
}
}
},
{
"id": "549247d476a44622",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"linksCollapsed": false,
"unlinkedCollapsed": true
}
}
},
{
"id": "9cbb93406c68f747",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true
}
}
},
{
"id": "30292489daefa915",
"type": "leaf",
"state": {
"type": "outline",
"state": {}
}
}
],
"currentTab": 3
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
},
"left-ribbon": {
"hiddenItems": {
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"canvas:Create new canvas": false,
"daily-notes:Open today's daily note": false,
"templates:Insert template": false,
"command-palette:Open command palette": false,
"workspaces:Manage workspace layouts": false,
"random-note:Open random note": false
}
},
"active": "396326139fe57e3d",
"lastOpenFiles": [
"README.md",
"ObsidianNotes/README.md",
"ObsidianNotes",
"Git.md",
"TODO模板.md",
"Think in UML.canvas",
"Godot GDScript Trick.md",
"Aseets/dev2.png",
"Awesome window manager.md",
"Aseets/Dev.png",
"破解享乐的欲望牢笼.md",
"Linux Setup.md",
"Vim Superpower.md",
"局域网共享文件方法.md",
"软件工程.md",
"Aseets/Procedure.jpeg",
"Ability.md",
"平铺式窗口管理软件.md",
"Aseets/85dbdd074d403555e95e832745425c43.jpeg",
"Aseets",
"202309201542.md"
]
}

BIN
Aseets/Dev.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
Aseets/Procedure.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

BIN
Aseets/dev2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 747 KiB

130
Awesome window manager.md Normal file
View File

@ -0,0 +1,130 @@
超级爽的tilling window manager, 而且配置好了, 用起来无敌爽
https://www.youtube.com/watch?v=1QQps1qTgG4
Github Info:
https://github.com/ChrisTitusTech/titus-awesome
### Step by step
> 配置基础环境
```
sudo apt install awesome fonts-roboto rofi compton i3lock xclip qt5-style-plugins materia-gtk-theme lxappearance xbacklight flameshot nautilus xfce4-power-manager pnmixer network-manager-gnome policykit-1-gnome -y
wget -qO- https://git.io/papirus-icon-theme-install | sh
```
```
sudo apt install terminator
```
视频内又输入了一次上面的指令, 这里我猜测是填错了,但是先填上
```
wget -qO- https://git.io/papirus-icon-theme-install | sh
```
> 克隆他的配置文件到指定目录 (这里我使用自己的库)
> 他的库:
```
git clone --branch debian https://github.com/ChrisTitusTech/titus-awesome ~/.config/awesome
```
> 我的库:
```
git clone --branch debian http://47.100.81.115/Yogi/awesome.git ~/.config/awesome
```
> 切换虚拟桌面
>
> 登出当前桌面(最好重启)
> 在输入密码的界面中, 选择页面上的图标(Ubuntu的右下角有个齿轮)
> 选择 Awesome 后 登陆即可
> Tips
> win键(Super键)+F1 可以弹出快捷键的提示窗口
> 打开终端(Super+x), 然后 设置 themes
```
mkdir -p ~/.config/rofi
cp $HOME/.config/awesome/theme/config.rasi ~/.config/rofi/config.rasi
sed -i '/@import/c\@import "'$HOME'/.config/awesome/theme/sidebar.rasi"' ~/.config/rofi/config.rasi
```
> Tips: 这里会修改 Super+r 的themes
> 下载鼠标 Icon 图集
进下面的网站, 然后点击Files 下载你喜欢的 (我这里选第一个)
https://www.pling.com/p/1148692
或者去这里去搞 https://github.com/keeferrourke/capitaine-cursors
> 解压到 地址栏输入下面的东西 (Ctrl+ L)
```
.icons/
```
> 切换 窗口,文件图标,鼠标 Theme
运行程序(Alt+Space) lxa (也就是 Customize Look and Feel)
切换为 `Widget/Material-dark``Icon Theme/Papirus-Dark``Mouse Cursor/Capitaine Cursors Light`
> 设置虚拟桌面启动默认项 (不用每次都在登陆界面点了)
> 打开配置文件
```
sudo gedit /etc/environment
```
> 增加到末尾新行
```
XDG_CURRENT_DESKTOP=Unity
QT_QPA_PLATFORMTHEME=gtk2
```
> vscode编辑器安装
```
sudo apt-get install code
```
> ide 打开配置目录 **重要** : 所有配置基本上都在这里修改了
```
code .config/awesome
```
> 比如 apps.lua 是控制开机启动(开机启动项需要输入目录,具体参考代码)和默认browser
> 比如 keys内有一些热键的配置
> 如果是在bin内部, 那么直接输入bin文件夹内部的文件名即可
> reload(Super+Ctrl+r)
> 墙纸
```
sudo apt install variety feh
```
> 允许Variety 软件(动态下载墙纸)
> 进去后 把所有的下载渠道都关了 用 bing 和 unsplash
> 下面的目录改了 改成 `/home/.wallpapers` 注意,这里需要新建文件夹,而且命名基于开机启动的脚本的后缀的 改完后 下面应该显示的是 `~/wallpapers`
> Menual downloading 中的目录也改一下 同上的目录
> 修改 Variety 配置背景拉伸的脚本
```
sudo gedit .config/variety/scripts/set_wallpaper
```
> 移到最下面 有个 `echo "local gears = require(\"gears\") gear`......... 的一行
> 用`feh --bg-fill`... 这一行复制然后替换他
> 这时候在任务栏用 Variety 切换图片就不会导致拉伸图片了
> 如果在 Variety 中添加到 最喜欢的 时,就会自动下载到 .wallpapers
### Over! Enjoy!

15
Git.md Normal file
View File

@ -0,0 +1,15 @@
## 配置
每次都需要输入帐号密码的解决方案, 这个类似记住密码的功能吧
全局配置:
`git config --global credential.helper store`
当前仓库:
`git config credential.helper store
优先找当前, 然后找全局.
`git config --global user.name yogi
`git config --global user.email 1273750265@qq.com
也有生成ssh 公 私钥的, 然后把公钥发到服务器的 .ssh 目录的对应文件内的... 但是我测试下来发现是失败的, 原因是因为我是一个类似 github 的仓库, 填入后没生效, 不确定是什么原因

38
Godot GDScript Trick.md Normal file
View File

@ -0,0 +1,38 @@
### 类似 C# 的 `Linq` 语句
``` python
static func square(x):
return x * x
static func is_even(x):
return x%2 == 0
static func sum(accum, y):
return accum + y
static func test():
var arr : Array
var boolean : bool
var item : int
var obj;
var number = [1,2,3,4,5,6]
arr = number.map(square) # 映射
arr = number.filter(is_even) # 过滤
obj = number.reduce(sum,0) # 合并/合并/组合 元素 初始值为0
number.sort()#排序
number.sort_custom(func(a,b):return a>b) #自定义排序
item = number.find(func(item): return item == 5, 0)#获得 其中一个==5 的值, 从 0 开始查询
boolean = number.all(func(item):return item == 5)#所有==5
boolean = number.any(func(item):return item == 5)#任何一个==5
number.shuffle()#乱序
```
### 单线程异步
这里的异步本质是等待信号, 完全可以等待一帧的信号来实现逐帧的异步方法, 或者等待Timer实现逐秒的异步操作
``` python
func asyns_tween_property(scene_tree : SceneTree, object:Object, tween_property:String, value:Variant, move_time:float):
var tween = scene_tree.create_tween()
tween.tween_property(object,tween_property, value, move_time)
await tween.finished
```

73
Linux Setup.md Normal file
View File

@ -0,0 +1,73 @@
#Linux
## 装机过程中遇到的问题合集
1. 装机盘不知道为啥总是出问题
1. 装机的时候直接无法进入,安装界面, 后来我在把iso写入盘的时候同时使用了校验, 比较久
2. 买的u盘有问题, 是一个惠普的u盘 比较坑, 传输速度及其的慢. 有人向我推荐西部数据
3. 反复装了非常多次
2. 系统选择有问题
1. 我最早选了22版本的ubuntu, 然后有人说不是很稳定. 不过我还是硬装上去了
3. 启动的时候使用不同的启动盘是通过F12 然后单独选择的, 我之前一直都去bios修改顺序 非常低效
4. 装机的时候需要选 NTFS 的启动项 而不是正常启动项, 这里我不知道是为啥, 正常启动项无法打开
5. 安装的时候, 需要分盘.
1. efi盘500m 也就是启动盘.
2. swap盘需要1600m 也就是虚拟内存
3. 其他空间都可以给 / 目录, 这个也需要注意输入一个 '/' 目录 不知道为啥...
6. 装好后, 我发现我的显卡有点问题, 卡在进入的时候了
1. 必须按住shift 启动
2. 然后进入 Advanced option for ubuntu => recovery mode => 一路回车
3. 然后安装显卡驱动
1. sudo apt update 更新
2. sudo apt install nvidia-driver-525
3. 完了就可以重启了
7. 装好了
8. 然后我后续装了个搜狗输入法 (我想用双拼), 然后无法启动系统了....
9. 又重装一次.... 所以在22版本的ubuntu不要用搜狗......
### 下载加速
https://www.bilibili.com/video/BV1DB4y147DL/?spm_id_from=333.788.recommend_more_video.3&vd_source=ba468568caebc92479698e83c28be8b0
### 任务栏表现修改
Setting=>Appearance
### 隐藏顶部bar
1.安装插件
sudo apt-get install gnome-shell-extension-manager
2.打开 extension manager 应用
3.搜索hide top bar 并且按照下载量排序
4.安装即可
### 双拼输入法
1.安装fcitx
sudo apt-get install fcitx
2.安装fcitx-pinyin
sudo apt-get install fcitx-pinyin
3.配置输入法
im-configr
4.重启
sudo reboot
4.点击top task bar 中输入法的 configure菜单
添加 Shuangpin 即可(自动自然码双拼) 如果想要其他的,下面有个齿轮可以设置
-硬盘识别
1. 打开Disks 程序
2. 选择没有识别的硬盘
3. 齿轮设置
4. Edit Mount Options..
5. 基于自己的需求配置即可
- 点击任务栏图标最小化功能
gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize'
### 梯子
https://www.youtube.com/watch?v=VOlWdNZAq_o
主要是把Clash for windows 安装完毕之后 需要在 Setting=>Network=>Network Proxy中设置127.0.0.1和7890(这里是Clash内的端口)
如果是fire fox 需要在浏览器内部也修改一下即可
### 必备软件
https://zhuanlan.zhihu.com/p/537783323?utm_id=0
[[Awesome window manager]]

19
TODO模板.md Normal file
View File

@ -0,0 +1,19 @@
## 需求表现效果
> 这个需求大体来说是什么样的(通常描述)
## 溯源求本(本质需求)
> 这个需求本质上是为了解决什么问题的
## 分析解决方案
> 寻找为了解决这个问题的解决方案ABCD..
## 实现细节
> 我选定的解决方案需要如何实现, 每一个步骤应该怎么做
## 思考与反思
> 做完后, 反思下次遇到这个问题, 如何能更快的提升工作效率, 减少工作时间

59
Think in UML.canvas Normal file
View File

@ -0,0 +1,59 @@
{
"nodes":[
{"id":"295515b74130b4c1","type":"group","x":60,"y":-360,"width":940,"height":1440,"label":"基于需求开发(面向对象开发)"},
{"id":"f7a5a05e3b3adbee","type":"group","x":-880,"y":-360,"width":907,"height":1440,"label":"基于顺序流程开发 (面向流程开发)"},
{"id":"01381dfb0d849945","type":"group","x":177,"y":120,"width":707,"height":180,"label":"节点(对象)"},
{"id":"5598149665daee13","type":"group","x":-96,"y":-840,"width":246,"height":380,"label":"现实因果"},
{"id":"3dd7047c8798b5be","type":"text","text":"因","x":98,"y":-320,"width":67,"height":60},
{"id":"02979079622fc748","type":"text","text":"节点D","x":731,"y":-100,"width":111,"height":60},
{"id":"baeb4b1fe957ac3e","type":"text","text":"节点C","x":550,"y":-175,"width":111,"height":60},
{"id":"7aab729a19843255","type":"text","text":"节点B","x":358,"y":-175,"width":111,"height":60},
{"id":"e55941a9e3bc5761","type":"text","text":"节点A","x":218,"y":-100,"width":111,"height":60},
{"id":"c33ab99b87004926","type":"text","text":"果","x":898,"y":-320,"width":67,"height":60},
{"id":"b78f0a5a2d476e66","type":"text","text":"``` python\nfunc main(i)\n\ta = nodeA.do(i)\n\tb = nodeB.do(a)\n\te = nodeE.do(a)\n\tf = nodeF.do(b,a,e)\n\tc = nodeC.do(b)\n\to = nodeD.do(c,f)\n\treturn o\n```","x":233,"y":360,"width":583,"height":280},
{"id":"67cc784857841adc","type":"text","text":"特性","x":320,"y":220,"width":160,"height":50},
{"id":"1e71eae3e8ab4dd7","type":"text","text":"果","x":44,"y":-540,"width":67,"height":60},
{"id":"20e8d9b9baff4d3d","type":"text","text":"因","x":-76,"y":-540,"width":67,"height":60},
{"id":"a1a7be26d20eaca1","type":"text","text":"抽象","x":-19,"y":-660,"width":96,"height":29},
{"id":"3749392e088d5fa1","type":"text","text":"现实","x":-19,"y":-820,"width":96,"height":29},
{"id":"4ae0834068c8c432","type":"text","text":"封装/特性/继承/聚合/多态","x":584,"y":220,"width":280,"height":50},
{"id":"6cd0aa5fd7e08b73","type":"text","text":"数据","x":197,"y":140,"width":131,"height":50},
{"id":"be3e0105f3877ef9","type":"text","text":"- 对象眼界狭窄, 只关心和自己相关的几个对象, 不关心和自己无关的\n- 没有特性的可以称之为类, 被赋予特性后, 可以被称之为实例\n- 需求发生改变时, 一般是直接新增类. 不会大幅度的影响其他对象.\n- 举例\n\t- 面向对象就像是把建造一辆车这个目标, 分解成建造每一个零部件后组装\n\t- 当车辆更新换代的时候, 用于组装的类会发生变更(可以重载或是继承), 也会新增一些新的对象类型(同样可以是继承和承载)","x":233,"y":660,"width":583,"height":260},
{"id":"ccc50c45875e8121","type":"text","text":"节点F","x":550,"y":-45,"width":111,"height":60},
{"id":"2f08f916dda4c384","type":"file","file":"Aseets/Procedure.jpeg","x":-731,"y":470,"width":586,"height":550},
{"id":"a58cc0223dab5c53","type":"text","text":"- 依赖关系\n- 固定流程\n- 需求变更时, 不容易修改\n- 随着需求发生变化, 节点的复杂度和因果关系也会大幅度变化\n- 举例\n\t- 面向流程就像一次性把建造一辆车设定成目标, 然后分析整个流产的线路, 使得这个产线能一次性就把车生产出来\n\t- 而车辆会随时更新换代, 所以车的管线也会经常大改, 每次大改都会伤筋动骨","x":-731,"y":95,"width":583,"height":285},
{"id":"6ecc964c9042cafe","type":"text","text":"结果","x":744,"y":140,"width":120,"height":50},
{"id":"6e4257fdd05e9ae8","type":"text","text":"功能计算","x":444,"y":140,"width":160,"height":50},
{"id":"301c14f628e0d44e","type":"text","text":"节点E","x":390,"y":15,"width":111,"height":60},
{"id":"56c4798c604b529d","type":"text","text":"## Route Map\n- 游戏框架分析\n- 代码架构分析\n- 游戏模块分析\n- 游戏模块 UML 图制作\n- 代码实现\n\t- 大地图解决方案\n\t- 战斗模块\n\t\t- 战斗模块配置功能(能力与效果)\n\t- 存档初始化模块\n\t- 大地图模块\n","x":1203,"y":-352,"width":517,"height":732},
{"id":"7dc171478dd606af","type":"text","text":"战斗角色是使用的回合计数\n大地图角色使用时间计数\n\n是否可以\n战斗时 时间暂停\n一个回合结束时, 增加对应游戏时间\n(这样会有一些意想不到的效果, 比如当前回合结束后, 刚好经过了一天, 一天一时间一过, 角色某个效果会触发, 比如回复满血)","x":1308,"y":420,"width":412,"height":300},
{"id":"43c25dad51fed755","type":"text","text":"## 流程划分\n- 进入游戏\n- 新建存档\n- 配置角色存档\n- 读取存档\n- 进入主场景\n- 打开战斗场景\n- 关闭战斗场景\n- 退出主场景\n- 写入存档\n- 游戏结束","x":1760,"y":-352,"width":192,"height":363},
{"id":"c202cf6940c88b13","type":"text","text":"## 模块划分\n- 流程模块(状态机)\n\t- 游戏初始化\n\t- 存档配置流程\n\t- 游戏时间流程\n- 资源模块(读写模块)\n\t- 读取指定路径下的场景文件\n\t- 保存到执行路径下的对应文件位置\n- 存档模块(对存档进行 增删改查)\n\t- 游戏设置存档结构 (分辨率,画质,特效等级 etc...)\n\t- 游戏存档结构\n\t\t- 角色信息\n\t\t- 任务信息\n\t\t- 时间信息\n\t\t- 大地图信息\n\t- 读取存档后, 对存档进行处理\n\t- 写入存档时, 对存档进行处理\n- 场景模块(对场景进行切换)\n\t- 加载场景\n\t- 删除场景\n\t- 切换场景(删除与加载同时进行)\n\t- 场景分级 (对场景树进行管理)\n- 标签模块\n\t- 角色标签,技能标签,效果标签等标签 (主要是字符串)\n\t- 标签需要可以进行检测判断(包含,不包含,必须包含,必须不包含)\n\t- 标签需要方便配置(标签的配置工具)\n\t- 标签需要方便在脚本中使用 (标签配置导出标签常量类 方便调用)\n- 游戏时间模块\n\t- 现实 总时间 统计\n\t- 现实 战斗时间 统计\n\t- 游戏 时间 累加\n\t- 游戏 战斗回合 累加\n- 任务模块\n\t- 接任务\n\t- 交任务\n\t- 任务链(任务依赖)\n\t- 任务监听\n- 大地图模块\n\t- 配置模块(这里我打算使用 Godot 中的 Tilemap 进行配置), 后期可以把配置表导出成文本方便调试与修改\n\t- 角色与摄像机大地图移动功能(碰撞与层级与检测)\n\t- 大地图动态(增删改查)\n\t- 基于游戏时间进行动态变更\n- 战斗模块\n\t- 角色\n\t\t- 属性\n\t\t- 常用方法\n\t- 能力\n\t\t- 能力的脚本继承, 能力功能实现 (触发特效 或 特殊判断条件)\n\t\t- 配置能力属性(CD, 消耗等)\n\t\t- 对指定角色添加与删除效果 (添加灼伤buff等)\n\t- 效果\n\t\t- 效果的脚本继承,状态功能实现 (修改属性或触发特效)\n\t\t- 配置效果属性(持续时间, 间隔时间等)\n\t\t- 对角色产生效果的常用方法(添加血量上限等)\n\t- 战斗数据\n\t\t- 战斗网格\n\t\t- 战斗角色\n\t- 战斗回合切换\n\t\t- 回合匹配\n- AI模块(敌人AI)\n\t- blackboard数据\n\t- AI行为树\n\t- 行为树配置功能\n- 角色配置模块 (配置基础属性, 能力, 掉落ID)\n\t- NPC\n\t- 敌人\n\t- 自身\n- 掉落模块(ID 关联, 有嵌套)\n- 常量配置表\n\t- 资源路径配置(UI路径, 场景路径, 角色路径, 技能路径, 效果路径)\n- 全局事件模块\n\t- 全局的各种事件触发 (玩家选择角色, 玩家选择地面, 进入战斗事件等)\n- UI模块\n\t- 监听游戏中不同数据的变化\n\t- 打开与关闭UI\n\t- 触发不同特效\n- 本地化模块\n\t- 翻译功能(表)\n","x":2080,"y":-352,"width":1120,"height":2132},
{"id":"c38d1a12d50745c6","type":"text","text":"## 大地图解决方案\n\n## 必做方案\n- 从美术那里获得`大地图`(比如一个种族的地图)\n- 程序切图变成`小地图`且批量命名\n\n### 普通 2D 方案\n- 详情参考`2DPathFindExample'\n- 配置流产\n\t- 一张`小地图` 可以作为一个 `场景` 使用\n\t- 每个场景中, 配置 `物理碰撞` `AI寻路` `城池` `副本` 等等\n- 此做法类似我们早期使用Unity实现的方法思路, 但是他有更方便的 2D 功能\n#### 优劣分析\n- 优: 自定义能力极强\n- 劣: 相比较其他方案, 批量修改处理不易\n- 劣: 相比较其他方案, 需要实现大地图编辑器, 从而实现游戏内配置, 方便进行直观的配置 (运行增删查改, 动态加载等等)\n\n### Tile Map方案\n- 详情参考 `TileMapExample`\n- 配置流程\n\t- (笔刷) 先配置 每个网格资源 本身的属性 (比如 可以AI导航区域, 碰撞区域, 颜色, 材质, 高度 等等)\n\t- (底色) 用`小地图`做背景\n\t- (画图) 再在把网格刷在地图上\n- 网格中的物体: 1. 可交互 2.可挡路 3.可以动态消失和增加\n\n### 优劣分析\n- 优: 性能不错, 我测试下来性能可以接受\n- 劣: Godot在编辑时, 有可能会闪退 具体原因不明\n- 劣: 因为是基于网格的, 所以具体的网格都是以格子为基准的, 比如 \"材质\" \"高度\" \"导航区域\" \"碰撞区域\". 没有其他方式的那种自定义的方式自由 (必须是格子图)\n","x":3280,"y":-352,"width":960,"height":1090},
{"id":"4d32b080f139a489","type":"text","text":"因","x":-728,"y":-338,"width":67,"height":60},
{"id":"150aa8c33533e9d6","type":"text","text":"果","x":-215,"y":-335,"width":67,"height":60},
{"id":"a86a7ac36ae3f4f0","type":"text","text":"``` python\nfunc main(i)\n\ta = get(i)\n\tb = ClacA(a)\n\te = ClacE(a)\n\tf = CalcF(b,a,e)\n\tc = CalcC(b)\n\to = CalcO(c,f)\n\treturn o\n\n# 需求变更时, 新写方法, 插入/删除流程\n```","x":-728,"y":-245,"width":583,"height":285},
{"id":"a5b1c2cce5f1efbb","type":"text","text":"功能计算","x":-519,"y":-333,"width":160,"height":50}
],
"edges":[
{"id":"c0b4be46a6f0aeb1","fromNode":"3749392e088d5fa1","fromSide":"bottom","toNode":"a1a7be26d20eaca1","toSide":"top"},
{"id":"a0fb7166022afbf4","fromNode":"20e8d9b9baff4d3d","fromSide":"right","toNode":"1e71eae3e8ab4dd7","toSide":"left"},
{"id":"8bcca951694d2031","fromNode":"a1a7be26d20eaca1","fromSide":"bottom","toNode":"20e8d9b9baff4d3d","toSide":"top"},
{"id":"518a0eb4016f2b99","fromNode":"a1a7be26d20eaca1","fromSide":"bottom","toNode":"1e71eae3e8ab4dd7","toSide":"top"},
{"id":"7f7568e86335e241","fromNode":"6cd0aa5fd7e08b73","fromSide":"right","toNode":"6e4257fdd05e9ae8","toSide":"left","label":"输入"},
{"id":"93d6bb1d290a4ca1","fromNode":"6e4257fdd05e9ae8","fromSide":"right","toNode":"6ecc964c9042cafe","toSide":"left","label":"输出"},
{"id":"926309bc253b349a","fromNode":"3dd7047c8798b5be","fromSide":"right","toNode":"c33ab99b87004926","toSide":"left"},
{"id":"f26bfc9ceae7483f","fromNode":"3dd7047c8798b5be","fromSide":"bottom","toNode":"e55941a9e3bc5761","toSide":"left","label":"1...n"},
{"id":"2646a987f686e659","fromNode":"02979079622fc748","fromSide":"right","toNode":"c33ab99b87004926","toSide":"bottom","label":"1...1"},
{"id":"9374435f243a0eeb","fromNode":"baeb4b1fe957ac3e","fromSide":"right","toNode":"02979079622fc748","toSide":"left"},
{"id":"34478a4ca072f870","fromNode":"7aab729a19843255","fromSide":"right","toNode":"baeb4b1fe957ac3e","toSide":"left"},
{"id":"43e31e2bcb261203","fromNode":"e55941a9e3bc5761","fromSide":"right","toNode":"7aab729a19843255","toSide":"left"},
{"id":"5cc96990e8207977","fromNode":"ccc50c45875e8121","fromSide":"right","toNode":"02979079622fc748","toSide":"left"},
{"id":"667a975a009bc4d5","fromNode":"301c14f628e0d44e","fromSide":"right","toNode":"ccc50c45875e8121","toSide":"left"},
{"id":"f058d8c47b545381","fromNode":"e55941a9e3bc5761","fromSide":"right","toNode":"301c14f628e0d44e","toSide":"left"},
{"id":"820ff7f42357890f","fromNode":"7aab729a19843255","fromSide":"bottom","toNode":"ccc50c45875e8121","toSide":"top"},
{"id":"72d1a65096efda72","fromNode":"e55941a9e3bc5761","fromSide":"right","toNode":"ccc50c45875e8121","toSide":"left"},
{"id":"09bf87c6eacc8557","fromNode":"a5b1c2cce5f1efbb","fromSide":"right","toNode":"150aa8c33533e9d6","toSide":"left"},
{"id":"bfd72f2560152d23","fromNode":"4d32b080f139a489","fromSide":"right","toNode":"a5b1c2cce5f1efbb","toSide":"left"}
]
}

2
Vim Superpower.md Normal file
View File

@ -0,0 +1,2 @@
Vim 从入门到精通
https://www.cnblogs.com/lijia0511/p/5644566.html

View File

@ -0,0 +1,16 @@
1. 用 python 运行本地的文件服务器
语法: ```python -m http.server <port>```
```python -m http.server 8000```
2. 可以访问了
语法: ```http://localhost:8000```
```http://localhost:8000```
3. 查找自己的ip地址
```ip addr show```
4. 其他平台可以直接输入
语法: ```http://<ipaddress>:<port>```
## Reference
https://zhuanlan.zhihu.com/p/477026441

View File

@ -0,0 +1,32 @@
破解享乐的欲望牢笼并采取积极行动需要一些自我控制、心理学和哲学原则的应用。以下是一些方法,可以帮助你摆脱享乐的欲望,以便更有目的地追求更有意义的生活目标:
1. 自我意识和反思:
- 意识到你的享乐欲望以及它们如何影响你的生活是第一步。反思你的价值观和目标,思考你是否在寻求瞬间的满足,还是更长期的满足感和成就感。
- 要反复思考这里, 不断提醒自己为什么要这么做, 从而使得这件事情可以长久的做下去, 增加自己额外的动力.
2. 制定明确的目标:
- 确定你的长期目标和价值观,以便更容易拒绝那些短暂的享乐。设立明确的目标可以帮助你专注于更有意义的事情。
3. 制定计划和时间管理(制定明确的时间限制, 确定什么时间能做什么不能做什么事情)
- 制定日程安排和计划,确保你的时间被用在更有价值的活动上。避免浪费时间在短期享乐上,而忽视了更重要的事情。
4. 建立自我控制 与 奖励措施:
- 学会延迟满足感,这是抵抗享乐欲望的关键。你可以通过锻炼自己的自我控制力,逐渐减少对瞬间享乐的依赖。
- 为自己设置一些有价值的奖励, 并且追踪奖励, 从让自己愉悦满足, 让自己觉得自己做的长期事情是有短期价值的.
5. 寻求支持和社交连接:
- 与支持你的朋友、家人或专业心理医生建立联系,分享你的目标和挑战。他们可以提供鼓励和支持,帮助你走出享乐欲望的牢笼。
6. 学习冥想和正念:
- 冥想和正念练习可以帮助你更好地了解自己的欲望和情感,从而更好地应对它们。通过冥想和正念,你可以培养更强大的自我觉察和情绪调控能力。
7. 培养健康的生活方式:
- 良好的饮食、运动和足够的睡眠可以提高你的身体和心理健康,减少对享乐的依赖。身体健康可以增强自我控制和决策能力。
8. 接受挑战和舒适区之外的体验:
- 尝试新的事物,接受挑战,走出舒适区,这可以帮助你寻找更多有意义和满足的体验,而不仅仅是追求享乐。
9. 减少触发的钩子(在物理层面减少容易接触到的浪费时间的入口, 比如手机上的App 等):
- 尝试把手机上的, 电脑上的, 容易获得的浪费时间的入口给移除, 从而让自己不那么容易立即满足
最重要的是,要明白破解享乐的欲望牢笼是一个长期的过程,需要耐心和坚定的决心。不要期望立刻就能彻底改变,但通过逐步采取这些方法,你可以渐渐减少享乐欲望的影响,更有目的地追求更有意义的生活。如果觉得无法自行控制享乐欲望,不妨寻求专业心理咨询的帮助。

64
软件工程.md Normal file
View File

@ -0,0 +1,64 @@
## 图灵
- 图灵机= 卡片条 + 读写头
- 卡片内的东西: 数据or指令
- 数据与指令可以分开储存, 也可以合在一起储存, 但是他们是不同类型的东西
- 分开能让人更容易理解
## Lambda 演算法
- Lambda 演算法是把 函数 作为了元数据, 通过函数直接的关系代表数据和指令
## 元细胞自动机
- 元细胞自动机是把 元细胞 作为了元数据, 设定了默认的四种基于周围网格的变化规则, 实现的一种计算机范式, 可以主要是实现了非图灵非Lambda演算的新做法, 主要可以应用在深度学习和流体模拟这种上面, 卷积的算法原理, 但是无法编程主打的是一种炼丹的方式实现
## 软件工程解耦合
- 模块化 (功能之间解耦合)(菜鸟负责简单模块, 高手负责复杂模块)
- 高内聚
- 低耦合
- 单一职责
- 分层化(需求与实现解耦合) (无论高手和菜鸟, 都是负责一整层, 或者把一整层拆小再划分, 对能力要求不高. 比如前后端开发)
- 底层功能接口需要保证完备, 方便上层调用实现
- 举例
- 底层: 操作系统
- 中高层: 计算机软件
- 用户输入=>操作系统回调=>软件=>操作系统API=>硬件
- 模式化(历史与未来解耦合)(按照这些范式去做, 能为未来可能的需求变更做准备)
- 设计模式
- 指令式编程+面向对象式编程+函数式编程
- 编程原则
- 面向对象S.O.L.I.D 原则
- S 单一功能原则
- O 开放封闭原则
- L 里式替换原则
- I 接口隔离原则
- D 依赖反转原则
- 数据库设计 CRUD 原则
- 增删改查
## 软件开发瀑布流程(开发过程过长)
![[Dev.png]]
### 软件开发三层模型
- V 表现层 (前端, 用户直观看到的)
- A 控制层/应用层 (后端, 业务操作,逻辑判断)
- D 数据层 (数据库, 增删改查)
### 领域驱动设计
以不变的业务领域作为核心(中台), 进行上下的领域设计
### 敏捷开发
![[dev2.png]]
小步快跑, 及时反馈, 快速进步
敏捷开发, 早点投入市场, 测试
市场反响不错时, 重构
><敏捷革命> <精益创业> <凤凰项目>
>scrum , 精益, DevOps
### 开源
开源举例: Linux
追求性能高效, 放弃解耦合
开放多人合作, 多人调试优化
## Reference
https://www.bilibili.com/video/BV1h3411G741/?spm_id_from=333.788