VimGo 安装

由于众所周知的原因, “go get” & “:GoInstallBinaries” 无法正常使用,经过多方查询.找到当下能用的方法

  1. set proxy
  • 通过 export GO111MODULE=on 开启 MODULE
  • export GOPROXY=https://goproxy.io
    七牛也出了个国内代理 goproxy.cn 方便国内用户更快的访问不能访问的包
  1. 在VIM下运行 GoInstallBinaries

  2. 弹出来的错误列表中挨个复制,并使用 go install 安装.

参考资料:
https://shockerli.net/post/go-get-golang-org-x-solution/

JavaScript高级编程

什么是JavaScript

1.2 JavaScript实现

$$
完整的JavaScript实现 \left { \begin{matrix} ECMAScript(核心) \DOM(文档对象模型) \BOM(浏览器对象模型) \end{matrix} \right.

$$

  • ECMAScript: 由ECMA-262定义并提供核心功能
  • DOM:提供与网页内容 交互的方法和接口
  • BOM:提供与浏览器 交互的方法和接口.

1.2.2 DOM

Document Object Model 是一个API,用于在HTML中使用扩展的XML.DOM将整个页面抽象为一组分层节点,HTML或者XML页面的每个组成部分都是一种节点,包含不同的数据.

1
2
3
4
5
6
7
8
<html>
<head>
<title>Sample Page</title>
</head>
<body>
<p> Hello World! </p>
</body>
</html>
1
2
3
4
5
6
7
graph LR
A[html] --> B[head]
B --> C[title]
C --> D[Sample Page]
A --> E[body]
E --> G[p]
G --> H[Hello World!]

DOM 通过创建表示文档的树,让开发者可以随心所欲地控制网页的内容和结构.使用DOM API,可以轻松地删除、添加、替换、修改节点.

HTML中的JavaScript

2.1 < script >元素

八个属性:

  • asyn

    可选,表示应该立即开始下载脚本,但不能阻止其他页面动作.只针对外部脚本文件有效.

  • charset
  • crossorigin

    可选,配置相关请求的CORS(跨资源共享)设置,默认不使用CORS. =“anonymous”请求不必设置凭据标志. =“use-credentials”设置凭据标志.

  • defer

    可选.表示脚本可以延迟到文档完全被解析和现实之后再执行.只针对外部脚本文件有效.

  • integrity

    可选.允许比对接收到的资源和指定的加密签名以验证子资源完整性(SRI, Subresource Intergrity).如果接收到的资源的资源的签名与这个属性指定的签名不匹配,则页面会报错,脚本不会执行.可以用于确保CDN不会提供恶意内容.

  • language (废弃)
  • src

    可选,表示包含要执行的代码的外部文件.

  • type

    可选,代替language,表示代码块中脚本语言的内容类型.

项目重构

数据结构设计

摒弃原来的多层结构,只用一层数据结构设计,并且使用relationships 关系

account设计(兼顾账户和第二类型)

  1. accountID

  2. balance(余额)

  3. counted

  4. icon

  5. name

  6. note

  7. type

    1. 支出
    2. 收入
    3. 普通账户
    4. 信用账户
    5. 投资账户
    6. 借贷账户
  8. billingData: 账单日 credit

  9. creditLimit: 额度 credit

  10. repaymentDate: 还款日 credit

  11. rate: 百分比:利息什么的 installment , loan

  12. autoCalculate installment, loan

  13. installmentType : installment, loan

  14. destinationAccount : loan

  15. installmentTimes: 期数 loan

  16. installmentType: 年月日 loan

  17. isDEBJ: 等额本金 loan

  18. isMoneyIn: 进、出 loan

  19. person: 借贷对象 loan

  20. state: 是否结清 loan

  21. timesInterest: 单次利息 loan

  22. timesLeft: 剩余期数 loan

ios 读取csv文件

最终代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
      
.fileImporter(isPresented: $imported, allowedContentTypes: [.delimitedText], allowsMultipleSelection: false){ result in
do {

guard let fileUrl: URL = try result.get().first else {return}

if (CFURLStartAccessingSecurityScopedResource(fileUrl as CFURL)) { //不在这个if里就出错,唉
//理由:iOS的沙盒机制保护需要我们申请临时调用url的权限

guard let data = String(data: try Data(contentsOf: fileUrl), encoding: .utf8) else { return }


handleSSJdataCSV(data: data)
//done accessing the url
CFURLStopAccessingSecurityScopedResource(fileUrl as CFURL)
}
else {
print("Permission error!")
}
} catch {
// Handle failure.
print ("error reading: \(error.localizedDescription)")
}
}

//数据格式处理代码
func handleSSJdataCSV(data : String){
var csvToStruct = [SSJdata]()

//split the long string into an array of "rows " of sata. each row is a string
//detect "/n" carriage return , then split
var rows = data.components(separatedBy: "\n")

let columnCount = rows.first?.components(separatedBy: ",").count
//remove the header rows
rows.removeFirst()

//loop around each row and split into columns
for row in rows{
let csvColumes = row.components(separatedBy: ",")
if csvColumes.count == columnCount{
let genericStruct = SSJdata.init( raw: csvColumes)
csvToStruct.append(genericStruct!)
}

}
print(csvToStruct)

for singleRecord in csvToStruct{
print(singleRecord.recordType)
}
//done accessing the url
}

参考文献:
https://stackoverflow.com/questions/67731694/how-do-i-save-an-imported-file-name-as-string-after-importing-file-in-swiftui

1
2
3
4
5
//不太管用
let fileUrl = try res.get()
self.fileName = fileUrl.lastPathComponent // <--- the file name you want

let fileData = try Data(contentsOf: fileUrl)

https://betterprogramming.pub/importing-and-exporting-files-in-swiftui-719086ec712
有大用
https://github.com/acwright/ImportExport
上面那个链接内容的示范工程

PT站点升级相关要求

Power User Elite User Crazy User Insane User Veteran User Extreme User Ultimate User Nexus User
学校 50G
4周
2.0
4w做种积分
100G
8周
2.5
8w做种积分
300G
15周
3.0
15w做种积分
500G
25周
3.5
25w做种积分
1TB
40周
4.0
40w做种积分
2TB
60周
4.5
60w做种积分
5TB
80周
5.0
80做种积分
10TB
100周
5.5
100w做种积分
阿童木
海带
葡萄

u2
50G
4周
0.95
120G
8周
1.55
300G
15周
2.05
500G
25周
2.55
750G
40周
3.05
1TB
60周
3.55
1.5TB
80周
4.05
3TB
100周
4.55
备胎(除分享率外同上)
欧神
1pt吧(类似)
老师
1.05 1.55 2.05 2.55 3.05 3.55 4.05 4.55
猫站(周数有所不同) 5 10 15 25 30 35 40 45
Area 50G
4周
1.05
120G
8周
3
300G
10周
3.5
750G
12周
4
1TB
20周
4.5
2TB
25周
5
5TB
30周
5.5
10TB
40周
6
铂金家 200G
4周
1.0
2w分
350G
8周
1.1
5w分
500G
15周
1.2
20w分
1TB
25周
1.3
40w分
2TB
40周
1.5
60w分
3TB
60周
1.5
80w分
4TB
80周
1.7
100w分
6TB
100周
1.8
120w分
馒头 200G
4周
2
400G
8周
3
500G
12周
4
800G
16周
5
1TB
20周
6
2TB
24周
7
2.5TB
28周
8
3TB
32周
9
52pt 50G
4周
1.05
120G
8周
1.55
300G
15周
2.05
1.5TB
25周
2.55
2.5TB
40周
3.05
3.0TB
60周
3.55
4.5TB
80周
4.05
5TB
100周
4.55
我堡
柠檬
100G
5周
2
350G
10周
2.5
500G
15周
3
1TB
20周
3.5
2TB
25周
4
4TB
30周
4.5
6TB
40周
5
8TB
52周
5.5
天空 200G
5周
2
500G
10周
2.5
1TB
15周
3
2TB
20周
3.5
4TB
25周
4
6TB
30周
4.5
8TB
45周
5
10TB
65周
5.5
杜比 120G
2周
2.0
256G
4周
2.5
512G
8周
3.0
768G
12周
3.5
1TB
16周
4.0
2TB
20周
4.5
4TB
24周
5.0
8TB
48周
5.5
ttg 50G
5周
1.1
150G
8周
2.0
250G
8周
2.0
500G
8周
2.5
750G
16周
2.5
1TB
24周
3.0
1.5TB
24周
3.5
2.5TB
24周
4.0
3.5TB
32周
5.0
家园 128G
5周
1.6
4w分
256G
5周
1.9
10w分
512G
10周
2.3
18w分
768G
10周
2.7
28w分
1TB
20周
3.2
40w分
2TB
20周
3.7
54w分
4TB
30周
3.6
70w分
8TB
30周
4.1
100w分
50G
5周
1.0
3200
150G
10周
1.5
19200
300G
15周
2.0
76800
500G
30周
2.5
256000
1TB
60周
3.5
64w
2TB
90周
4.0
128w
3TB
120周
4.5
192w
4TB
150周
5.0
256w

摘录-关于工作、欲望、生活、健康

我觉得我最大的极简,就是少受累,保养身体,珍爱自己的生命。

挑一个性价比最高的工作,每天八小时,双休,时薪约70元。我知道我同学有选择了996的,他们挣得很多,时薪大约是我的一半。

挑一个人际关系冷漠很少团建聚餐的工作。这样不是因为我不喜欢热闹,我只是不喜欢攀比。别人炫耀名牌首饰包包名车名表的时候,我就当看不见。别人抱怨自己月光欠花呗,那都与我无关。

我和我老公都是低欲望的人,能靠家长出首付,我们就是要理直气壮的啃老,也不会996去伤身体挣那几个臭钱。既然有的选,那我们就是不肯996。毕竟我爸妈当年也是靠姥姥姥爷买的房,我们将来有钱了也会接济孩子,这样想来可不就是理直气壮吗。

脱离世俗,想想自己的理想。想想自己真正喜欢做什么。同事有贷款买豪车充门面的,我俩工薪阶层工程师,上班又不远不用车,要门面干嘛,买个十几万的车,到处去玩就足够了。

人家梦龙雪糕都不要脸的不用牛奶了,什么玩意,那些外头买的东西,又贵又舍不得用好材料还好意思说为了环保。我就自己冻酸奶雪糕吃,自己拿纯牛奶做冰淇淋。还有自己蒸馒头,烤肉,打豆浆,做果冻,奶茶,柠檬红茶。真特么的香。反正下班有的是时间。

我们还要互相捏肩捶腿,好好保养。天热喝绿豆汤,天冷喝姜汤,周末自己磨个咖啡,香飘整屋。

我每天晚上都能看着老公送我的一架古筝,弹几个曲子,总觉得好幸福啊,这可比买首饰好听多了,还要啥自行车。

我们晚上常坐在阳台上,喝点小酒,看星星看月亮。周末我喜欢玩手机,听音乐,看看闲书。

我家的老人,都是五十多就不用务农或上班了,要么半退休。能够身体健康的直到90岁,天天晨练逛公园,自己做饭,还能领几十年退休金。身体好是真的好。

作者:鸿飞满西洲

链接:https://www.zhihu.com/question/313020218/answer/2077887482

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

黑群晖安装QB

  1. 打开docker, 输入qbittorrent, 找到 linuxserver/qbittorrent
  2. 下载
  3. 创建qb文件夹,改everyone权限,内建两个新子文件夹,config和downloads
  4. docker映像设置中添加卷来映射文件夹
  5. 改端口,第三个tcp是webui端口,其他的也要改,默认的6881被大多数站点屏蔽。
  6. 配置环境变量
  7. 下一步。确认,运行。
  8. 登录qb界面,默认账户admin,默认密码 adminadmin
  9. 修改qb的连接中的监听端口为修改过的端口

意外情况:QB无法打开,提示错误:/usr/bin/qbittorrent-nox: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory
解决方法:

  1. ssh 到 群晖,然后
    docker exec -it qbittorrent4.3.3 /bin/sh
    qbittorrent4.3.3 是我容器名,参照自已的改

  2. apt update

  3. apt install binutils

  4. strip –remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5

  5. 重启容器

参考文献:
http://www.360doc.com/content/19/0601/19/27498460_839666036.shtml
https://post.smzdm.com/p/a7do76vd/
https://github.com/linuxserver/docker-qbittorrent/issues/103

SwiftUI页面跳转

  1. TabView

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    struct ContentView: View {
    @State private var selection : Tab = .home
    enum Tab {
    case home
    case journal
    case statistics
    case settings
    // case test
    case test2
    }
    var body: some View {
    TabView(selection: $selection){
    HomeView()
    .tabItem {
    Label("主页", systemImage : "house")
    }
    .tag(Tab.home)
    ViewJournal()
    .tabItem {
    Label("流水", systemImage:"newspaper")
    }
    .tag(Tab.journal)

    ViewStatistics()
    .tabItem {
    Label("统计", systemImage:"waveform.path.ecg")
    }
    .tag(Tab.statistics)

    ViewSettings()
    .tabItem {
    Label("设置", systemImage:"seal")
    }
    .tag(Tab.settings)
    }
    }
    }
  2. NavigationLink

    1
    2
    3
    4
    5
    6
    7
    8
    NavigationView {
    VStack {
    NavigationLink(destination: Text("点击后显示的视图内容")) {
    Text("可点击内容")
    }
    }
    .navigationBarTitle("这是顶部标题")
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    NavigationView {
    List(0..<3) { i in
    NavigationLink(
    destination: Text("点击列表页后进入的页面 (i)")) {
    Text("列表序号 (i)")
    }
    }
    .navigationBarTitle("标题")
    }
  3. sheet向上拉起

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    import SwiftUI
    struct ContentView:View {
    var body: some View{
    TestSheet()
    }
    }
    struct TestSheet: View {
    @State private var popoverIsShown = false
    var body: some View {
    Button("显示 Sheet") {
    self.popoverIsShown = true
    }
    .sheet(isPresented: self.$popoverIsShown) {
    RandomSheet(popoverIsShown: self.$popoverIsShown)
    }
    }
    }

    struct RandomSheet: View {
    @Binding var popoverIsShown: Bool
    var body: some View {
    Button("关闭") { self.popoverIsShown = false }
    }
    }
  4. ActionSheet

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Button("显示Sheet页") {
    showingSheet = true//点击后改显示
    }
    .actionSheet(isPresented: $showingSheet) {
    ActionSheet(
    title: Text("你想在这个页面放点啥?弹出一个提示,还可以修改信息等操作"),
    message: Text("如果要关闭此页只需要向下滑动或者点击下面的按钮..."),
    buttons: [.default(Text("关闭此面"))]
    )
    }
  5. popover

popover是一个专用的修改器来显示弹出窗口,在iPadOS上它显示为浮动气球,而在iOS上则像一张纸一样滑到屏幕上。

要显示弹出窗口,您需要某种状态来确定该弹出窗口当前是否可见,但仅此而已–与警报和操作表不同,弹出窗口可以包含所需的任何视图。因此,只要将您需要的任何东西放在弹出窗口中,SwiftUI就会处理其余的工作。

例如,当点击一个按钮时,将显示一个弹出视图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct ContentView: View {
@State private var showingPopover = false
var body: some View {
Button("显示菜单") {
showingPopover = true
}
.popover(isPresented: $showingPopover) {
Text("你要的内容在这里!")
.font(.headline)
.padding()
}
}
}

  1. alert
    1
    Alert(title: Text("弹出的标题!"), message: Text("这是消息的内容"), dismissButton: .default(Text("OK")))

参考资料:
http://www.neter8.com/ios/127.html

MacOS_VIM+LaTeX

  1. 下载MacTex
    http://tug.org/mactex/

  2. 下载skim
    https://sourceforge.net/projects/skim-app/files/latest/download

  3. 在VIM中安装插件

    1
    2
    Plug 'lervag/vimtex'
    Plug 'neoclide/coc.nvim', {'branch': 'release'}

    在 Neovim 中执行 :CocInstall coc-vimtex 即可。 自动补全

  4. 基础配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    let g:tex\_flavor = 'latex'
    let g:vimtex\_quickfix\_mode = 0


    #自动同步
    let g:vimtex_view_general_viewer
    \ = '/Applications/Skim.app/Contents/SharedSupport/displayline'
    let g:vimtex_view_general_options = '-r @line @pdf @tex'

    " This adds a callback hook that updates Skim after compilation
    let g:vimtex_compiler_callback_hooks = ['UpdateSkim']

    function! UpdateSkim(status)
    if !a:status | return | endif

    let l:out = b:vimtex.out()
    let l:tex = expand('%:p')
    let l:cmd = [g:vimtex_view_general_viewer, '-r']

    if !empty(system('pgrep Skim'))
    call extend(l:cmd, ['-g'])
    endif

    if has('nvim')
    call jobstart(l:cmd + [line('.'), l:out, l:tex])
    elseif has('job')
    call job_start(l:cmd + [line('.'), l:out, l:tex])
    else
    call system(join(l:cmd + [line('.'), shellescape(l:out), shellescape(l:tex)], ' '))
    endif
    endfunction

这样配置后,我们就可以通过 vimtex 默认的 \lv 快捷键(在按住 \ 的时候,连续点击 lv)来正向同步当前 Neovim 光标位置到 PDF 预览位置,也可以通过「Ctrl + 点击 PDF 预览相应位置」来反向同步 Neovim 光标位置了。

  1. 快捷键说明
  • \ll:使用默认编译器(latexmk)开始监听 .tex 文件的变化,编译 LaTeX 项目并打开 PDF 预览界面;

  • \lk 或第二次 \ll:停止编译器监听文件变动,停止编译;

  • \lv:正向从 Neovim 光标位置同步 PDF 显示区域;

  • \lc:清理编译生成的中间文件;

  • 快速跳转至下一个或上一个 section 章节:[[]]][[]

  • 删除包含当前内容的环境标签:dse (Delete surrounding environment);

  • 更换包含当前内容的环境标签:cse (Change surrounding environment);

  • 更换有 * 和无 * 的环境标签(比如将 equation* 更换为 equation、将 figure* 更换为 figure 等)tse (Toggle starred environment):

  • ……

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
中文模板

\\documentclass\[12pt\]{article}

\\usepackage{CJK}

\\usepackage{geometry}

\\geometry{a4paper,left=1cm,right=1cm,top=1cm,bottom=1cm}

\\begin{CJK}{UTF8}{gkai}

%设定新的字体快捷命令

\\title{题目}

\\author{作者}

\\begin{document}

\\maketitle

\\section{小标题}

\\subsection{小小标题}

内容

参考文献~\\cite{lecun2015deep}

\\bibliographystyle{plain}

\\bibliography{refer}

\\end{CJK}

\\end{document}

参考文献:
https://sspai.com/post/64080
https://zhuanlan.zhihu.com/p/35498361
https://github.com/limberc/MacTeX-zh-support-template/blob/master/main.tex

崽崽

纪念一下我的小兔几,你在那边和其他小伙伴玩好。

这一张是坠吼滴!!!!

嘿!干啥呢?

吾家少女初长成

贵妃躺