配置环境

环境配置

难绷,论坛上给的虚拟机是ubuntu18 并且是virtual box的版本.
想用vmware虚拟机跑.将vdi格式转化为vmdk,并创建对应的虚拟机.
问题在于VMware tools安装失败.每次安装完成之后,再reboot,就会变成没有VMware tools…搞不懂.
还是在windows上配置环境算了…

看了下windows配置eigen和opencv有点麻烦,选择换成虚拟机ubuntu20.04LTS自己配置


更新
breaking news!
官方给的虚拟机,转换为vmware之后,vmwaretools安装成功了…
直接用就行了.配置环境结束.

ubuntu具体设置

参考

遇上vscode编译时候报错

1
/usr/bin/gcc -fdiagnostics-color=always -g /home/l4rk/games101/pa0.c -o /home/l4rk/games101/pa0 /usr/bin/ld: /tmp/ccjPHxdQ.o: in function `main': /home/l4rk/games101/pa0.c:6: undefined reference to `sin' collect2: error: ld returned 1 exit status

阅读更多

101

Lec1 overview of Computer Graphic

判断游戏画面水平如何
可以去看画面的明暗.亮的,一般都是采用了全局光照技术.从技术层面来看更加优秀

特效是最简单的图形学技术应用
特效是特殊的效果.在平常生活中见得很少,即使特效出错,观众不一定看得出来.而对日常东西的渲染更为困难

Visualization
Virtual Reality
Digital Illustration数字图像处理
Simulation
Graphic User Interface
Typography矢量字体?

  • course topic
    • Rasterazation
    • Curves and Meshes
    • Ray Tracing
    • Animation / Simulation

CG与CV
一切需要理解,猜测的都是计算机视觉的内容.
no clear boundaries

Lec2 Review of Linear Algebra

A Swift and Brutal Introduction to Linear Algebra

Vectors

$\vec {a}$ 或者$\boldsymbol {a}$

阅读更多

软路由

软路由的性能由cpu决定,r2s以上都可以跑满1000m
虚拟机内存需求极大
物理机1-2g足够了

硬件

硬盘

不存在大量的读写

  • nvme协议
  • u盘协议

网口

  • WAN接口是用来连接外网的,也被称之为广域网接口(Wide Area Network)
  • LAN接口用来连接内网中的设备(Local Area Network)
    一个路由器通常有一个WAN口,多个LAN口。

    网卡

    intel更加友好,尤其是对虚拟机
    2.5g内网
    性能足够的软路由>交换机+弱软路由

总结

  • 网卡上限
  • cpu下限
  • nas最好x86,尽可能cpu足够好

虚拟机

阅读更多

自建图床

  • [x] 域名好像不用也行. 无所谓现在有自己的域名
  • [x] 服务器,跑在自己的j4125上
    晚点再搞

备选方案

就选minio了

Minio介绍

MinIO是一个用Golang开发的基于Apache License v2.0开源协议的对象存储服务
它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
Minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和数据损坏。
因此,即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。

安装

ubuntu下MinIO安装
Minio + PicGo自建图床
配合obsidian

有一点很好,minio支持通过本机ip生成访问地址.
这样我在pc上就能够访问到管理地址http://dn11.l4rk.cn:52501

buckets命名为picture-bucket 存放位置为:~/miniodata/picture-host/`

阅读更多

公网ipv4访问内网

环境:
学校电信提供公网ipv4:60.176.40.164
ikuai检测到的外网地址,只要拨号没有掉,ip地址就是确定的
使用ikuai的端口映射功能

内网ip有其对应的远程访问端口
例如openwrt,内网端口要设置为80才能访问,外网端口随意
image.png

ikuai的外网访问直接在系统设置-登陆管理修改

还要找到Ubuntu,pve端口
pve:8006
ubuntu ssh端口:22
虽然获得了公网IP地址,但是,这个IP地址是动态发放的,不是一直保持不变的,每次我们重启光猫或者重新拨号后,电信会重新给我们一个公网IP,每次的IP地址都是不一样的。也就是说每次我们外网访问的时候都要重新查询到这个新的公网IP地址,加上端口号才能进行访问,就比较麻烦了,要么在家的时候查看,要么让家里人查看。要解决这个问题就需要DDNS 动态域名服务了,可以把变化的 IP 自动动态地映射到域名上,通过不变的域名访问变化 IP 的主机。
不想依靠外网ip,靠ip地址做解析 已依靠ddns解决.

参考:
https://www.youtube.com/watch?v=KWHZhcbOOYI

阅读更多

域名备案

如果域名已备案,域名却过期了,一定要续费,因为域名过期了,但备案不会过期,怕别人注册了你的域名做不良网站。
所以,要么一直续费到底,要么把备案号吊销,这是很重要的事情。

如果域名不走国内环境就不一定需要备案

先不搞这个,等暑假学了前端,自己搭建了博客再说


24.2.14 更新
依赖github page服务实现博客搭建.[[07archive/tech/博客搭建|博客搭建]]
域名买了腾讯的,现在还不需要备案.
备案的对象是实体的云服务器,而不是域名.自己的机器是不能备案的,只能是云服务商家的机器.
太贵了云服务器…

阅读更多

博客搭建

原理

用hexo+github page搭建.
hexo生成静态网页HTML,GitHub page展示HTML

github page

每个仓库都有一个pages服务,可用来展示项目,通过简单的设置项目的index.html,并以此做为入口供用户参观访问.
当然也可以用来跑博客. ^dca042

hexo

  1. hexo g:生成静态文件。将我们的数据和主题相结合生成静态文件的过程。
  2. hexo d:部署文件。部署主要是根据在 _config.yml 中配置的 git 仓库或者 coding 的地址,将 public 文件上传至 github 或者 coding 中。然后再根据上面的 github 提供的 pages 服务呈现出页面。
    source储存md
    themes储存主题
    md+主题 生成静态HTML
    hexo_repo文件下还有一个public的文件夹.执行hexo clean,会清除public,执行hexo d会生成public.还会生成.deploy_git文件夹,这个文件夹就是我们部署到github或者gitee上面的文件.
    只有public的文件才会上传到github.如果github page的结果不对,可能是hexo没有执行好 hexo deploy命令.
    hexo server执行,依赖的不是public文件内容.可能会导致localhost展示结果与github page不同.
    source -> public -> .deploy_git
    执行hexo generate,根据source,更新public
    执行hexo deploy,根据public,更新.deploy_git
    1
    2
    hexo clean
    hexo g -d
    是最优解
    详解Hexo搭建博客的底层原理

    搭建reference:

    ubuntu 安装hexo
    已经放弃,转windows hexo
    由于是在git bash里面操作,没区别…可以直接参考ubuntu系统下的安装

    域名绑定:

    https://blog.csdn.net/weixin_45961774/article/details/108402406
    cpolar + PHP study
    本地配置网站,再内网穿透到公网

不需要
我有ipv4

icarus修改

live2d

使用的是张书樵的live2d-widget
live2d模型添加
live2d模型库,超多色色
依赖cdn服务,直接从别人的服务器上拉取的live2d.所以hexo库里面并没有原生的live2d文件
好像要自己部署cdn服务,再调用api添加新的live2d模型
有点难度,暂时放弃,以后有机会接触到cdn,本地api部署再说

阅读更多

前端

前段语言串讲

  1. HT

ML
骨架

  1. CSS
    表现
    1. JavaScript
      行为
      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
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      122
      123
      124
      125
      126
      127
      128
      129
      130
      131
      132
      133
      134
      135
      136
      137
      138
      139
      140
      141
      142
      143
      144
      145
      146
      147
      148
      149
      150
      151
      152
      153
      154
      155
      156
      157
      158
      159
      160
      161
      162
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>My first web</title>
      </head>
      <body>
          my article
          <hr>
          <!-- 标题标签 -->
          <h1>head 1</h1>
          <h2>head 2</h2>
          <!-- 换行标签 -->
          this is (强制换行) <br> body <br>
          <!-- crtl + / 注释快捷键 -->
          分割线
          <hr>
          test
          <p>段落标签p1</p>
          <p>段落标签p2</p>
          <!-- 段落之间会有一个段落间距的空白 -->
      <b>加粗</b> <strong>强调加粗</strong>
      <u>下划线</u> <ins>强调下划线</ins>
      <i>斜线</i> <em>强调斜线</em>
      <s>删除线</s> <del>强调删除线</del>
      <hr>
      <h1>image tags</h1>
      <!-- width 与 height 会自适应 -->
      <img src="https://p.sda1.dev/12/bab6341cd5c384fbf70077b146d29da9/image.png" alt="load failed" title="it's a note and it appears when you put the cursor on the img" width="1920" height="800">
      <h1>audio tags</h1>
      <audio src="C:\Users\28763\Videos\Captures\这是27岁的老将枪法?绝境美队一滴血极限四杀1v4!_哔哩哔哩bilibili_精彩集锦 - Google Chrome 2023-03-19 00-11-16.mp4" controls >  </audio>
      <!-- autoplay 自动播放 loop 循环播放  仅仅支持MP3.Wav.Ogg-->
      <h1>video tags</h1>
      <video src="C:\Users\28763\Videos\Captures\这是27岁的老将枪法?绝境美队一滴血极限四杀1v4!_哔哩哔哩bilibili_精彩集锦 - Google Chrome 2023-03-19 00-11-16.mp4" controls autoplay muted></video>
      <!-- autoplay 自动播放(在chrome中要配合muted) loop 循环播放 MP4,WebM,Ogg-->
      <br>
      <h1>超链接</h1>
      <!-- a anchor -->
      <b><a href="https://www.bilibili.com" target="_blank">霹雳霹雳</a> </b>
      <br>
      <a href="./balnk.html" target="_self">跳转到blank.html</a>
      <br>
      <a href="#">空链接</a>
      <h1>列表</h1>
      <h2>有序</h2>
      <ol>
          <li>有序1</li>
          <li>有序2</li>
      </ol>
      <h2>无序</h2>
      <ul>
          <li>无序1</li>
          <li>无序2</li>
      </ul>
      <h2>自定义列表 definition list</h2>
      <dl>
          <dt>主题</dt>
          <dd>part1</dd>
          <dd>part2</dd>
      </dl>
      <h1>表格标签</h1>
      <table border="1">
          <caption>test</caption>
          <tr>
              <th>x\y</td>
              <td>y=1</td>
              <td>y=2</td>
          </tr>
          <tr>
              <td>x=1</td>
              <td>1,1</td>
              <td>1,2</td>
          </tr>
          <tr>
              <td>x=2</td>
              <td>2,1</td>
              <td>2,2</td>
          </tr>
      </table>
      <table border="1">
          <caption>test</caption>
          <thead>
              <td>x\y</td>
              <td>y=1</td>
              <td>y=2</td>
          </thead>
          <tbody>
          <tr>
              <td>x=1</td>
              <td>1,1</td>
              <td>1,2</td>
          </tr>
          <tr>
              <td>x=2</td>
              <td>2,1</td>
              <td>2,2</td>
          </tr>
      </tbody>
      <tfoot>
          <tr>
          <td>last line</td>
          <td>last line</td>
          <td>last line</td>
          </tr>
      </tfoot>
      </table>
      <br>
      <h1>input </h1>
      <h2>常规</h2>
      <p><input placeholder="请输入"> </p>
      <p><input type="text"> </p>
      <p><input type="date" min="2023-1-1"> </p>
      <p><textarea name="hello" id="world" cols="30" rows="10" >hello world </textarea> </p>
      <h2>多选</h2>
      <label ><input type="checkbox">option1</label>
      <label ><input type="checkbox">option2</label>
      <h2>单选</h2>
      <!-- 是通过name相同实现的 -->
       <input type="radio" name="sport">option1
       <input type="radio" name="sport">option2
       <!-- 无提示选择 -->
       <p>
          <select name="" id="">
              <option value="">op1</option>
              <option value="">op2</option>
          </select>
      </p>
      <p>
          <!-- 有提示选择 -->
          <input list="countries">
          <datalist> id="countries"
              <option value="">UK</option>
              <option value="">USA</option>
              <option value="">CN</option>
          </datalist>
      </p>
      <h1>引用</h1>
      <!-- 有 block ,cite , q ,code-->
      <!-- block 长引用 -->
      <!-- cite 章节 作品名称 -->
      <!-- q 具体的话 会有引号-->
      <!-- code 代码引用 -->
      <blockquote cite="https://www.huxley.net/bnw/four.html">    
          <p>
              Words can be like X-rays, if you use them properly—they’ll go through anything. You read and you’re pierced.
              <p>
                  <q>
                      test
                  </q>
              </p>
              <p>
                  <code lang="C">
                      i=10;
                      i=i++;
                  </code>
              </p>
          </p>
          <footer>—Aldous Huxley, <cite>Brave New World</cite></footer>
      </blockquote>
      </body>
      </html>s

      前端入门 - 基础语言篇

      HTML

      hyper text markup language hyper text 指的是图片标题链接表格 markup language指的是标记语言
      语义化的html语言
  • html中的元素,属性以及属性值都有某些含义

    CSS

    cascading style sheets 层叠样式

    引入方式

  1. 嵌入式 写在head标签的style标签中
  2. 外链式 写在单独的css中,用 link标签引入
  3. 内联式 经常配合div使用,直接在标签里面写
    同时存在内联与外联的情况下,还是能够同时生效。谁在后面,谁决定结果

    选择器

    渲染规则


    种类

  • 标签选择器/类型选择器
    1
    2
    3
    4
    5
    6
    7
     p{
                color: red;
                font-size: 30px;
                background-color: aqua;
                width: 100px;
                height: 300px;
            }
  • id选择器
    1
    2
    3
    4
    5
    6
    7
    8
    #first {
                color: black;
            }
    <body>
        <p id="first">
            test
        </p>
    </body>
  • 类选择器(class)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <style>
        .done {
                text-decoration: line-through;
            }
    </style>
    <body>
    <ul>
            <li class="done">task1</li>
            <li class="done">task2</li>
        </ul>
    </body>
  • 属性选择器
    1
    2
    3
    4
    5
    6
    7
    8
    <style>
      a[href$=".jpg"]{
                color: blue;
            }
    </style>
    <body>
     <a href="a.jpg">this is a jpg</a>
    </body>
  • 状态伪类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /* 对于a不同的状态进行选择 */
    a:link{
                color: blue;
            }
            a:visited{
                color: cornflowerblue;
            }
            a:hover{
                color: bisque;
            }
            a:active{
                color: orange;
            }
  • 结构伪类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
            /* 结构伪类 */
            li{
                border-bottom: 1px solid;
            }
            li:first-child{
                color: antiquewhite;
            }
            li:last-child{
                padding: 0.5em;
                border-bottom: none;
            }
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
  • 组合选择器
    image.png
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<article>
<h1>拉森火山国家公园</h1>
<p>拉森火山国家公园是位于...</p>
<section>
<h2>气候</h2>
<p>因为拉森火山国家公园...</p>
<p>高于这个高度,气候非常寒冷...</p>
</section>
</article>
<style>
/*article 中的所有子p*/
article p {
color: black;
}
/*article直接的p标签*/
article > p {
color: blue;
}
/*h2紧跟的p标签*/
h2 + p {
color: red;
}
</style>
  • 选择器组
    1
    2
    3
    4
     /* 选择器组 */
            h1 , h2{
                font: 100;
            }

    特异度

  • 计算规则
    选择器生效的情况是看选择器的特异度(specificity),特异度高决定css样式
    (A,B,C)
    A:ID选择器 B:类选择器、属性选择器和伪类 C:类型选择器和伪元素
    优先级的计算,从A级开始到C级结束,如果到C级是两个选择器的优先级还是相等的那么有限选择靠后的选择器
选择器 优先级 (A, B, C)
.class.class (0, 2, 0)
.class (0, 1, 0)
阅读更多

YAML

refering
YAML 是一种较为人性化的数据序列化语言,可以配合目前大多数编程语言使用。

阅读更多

wechat bot部署

根据chatgpt-on-wechat项目部署,采用docker compose.
根据快速部署文档实操.
由于初次部署访问不上chatgpt,网络环境有问题.感觉可能是compose.yml>"proxy": "",没设置的问题.
最后发现,由于docker本身的特性,docker compose并不会直接访问宿主机网络,而是创建了一个虚拟网桥,与宿主机环境进行隔离.想要直接走宿主机网络,需要添加network_mode: host
最后该项目的配置为

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
version: '2.0'
services:
chatgpt-on-wechat:
image: zhayujie/chatgpt-on-wechat
container_name: chatgpt-on-wechat
security_opt:
- seccomp:unconfined
environment:
OPEN_AI_API_KEY: 'your api key'
MODEL: 'gpt-3.5-turbo'
PROXY: ''
SINGLE_CHAT_PREFIX: '["bot", "@bot"]'
SINGLE_CHAT_REPLY_PREFIX: '"[bot] "'
GROUP_CHAT_PREFIX: '["@bot"]'
GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "花开富贵"]'
IMAGE_CREATE_PREFIX: '["画", "看", "找"]'
CONVERSATION_MAX_TOKENS: 1000
SPEECH_RECOGNITION: 'False'
CHARACTER_DESC: '你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。'
EXPIRES_IN_SECONDS: 3600
USE_GLOBAL_PLUGIN_CONFIG: 'True'
USE_LINKAI: 'False'
LINKAI_API_KEY: ''
LINKAI_APP_CODE: ''
network_mode: host

报错:[CHATGPT] RateLimitError: You exceeded your current quota, please check your plan and billing details.
疑似要添加chatgpt api付费方式
最早的用户有12个月18美刀的api额度
之后注册的用户有3个月,5美刀的api额度
但都要添加payment method才能调用

要开一张虚拟银行卡…麻烦,懒得搞,试试别人的api先
问相🐏要了api,成功部署.接下来就是等azure的申请通

改换用aruze申请api
公司申请
学生申请

换用gemini api
AIzaSyDkPocgRTs_fEf_pI0hI7_FWTi7yeciDBs

gemini api只支持美国地区使用,并且没有改proxy的接口.
可以魔改proxy懒得搞

阅读更多