DigestedSet

There's nothing actually digested.

0%

光猫配置

参考这篇移动光猫之桥接教程
用超级管理员账号登录
用户名CMCCAdmin
超级密码aDm8H%MdA

我的配置

解决openwrt与ip地址冲突

光猫侧

打开网络-宽带设置-Internet连接,可以看到已经有3个连接配置,分别是

1
2
3
TR069_R_VID_4034
INTERNET_R_VID_4031
IPTV_R_VID_4033

对应3个不同的VLAN,连接网络需要用到的只有第二个vlan为4031的标着internet的连接。
注意这个VLAN可能有不同,记住这个vlan号,后面新建的连接还需要用到。
关闭原先的pppoe拨号连接INTERNET_R_VID_4031,只需要在连接里把勾去掉并保存即可!不需要删除,如果后续出现问题,回到这一步把INTERNET_R_VID_4031重新打开就行了。
接下来新建一个完全一样的PPPoe连接,这是为了确认pppoe拨号的账号密码,以免后续登录不上。
杭州地区的移动宽带,

宽带默认密码是123456或者宽带账号的后6位,以前老账号也有身份证后6位,后8位,联系电话前8位。
如果都不是,拨打10086或者问宽带装机小哥~
确认完成后,将刚才的那个新的可用的PPPoe连接改为桥接,其他选项不动:
cmcc-settings

路由器侧

先修改LAN口ip地址由于LAN口ip地址
这里将原先的WAN口PPPoe处输入宽带账号密码
openWrt side settings

Netgear R8000刷Openwrt

本来是配置好了openwrt的,结果这次一不小心改错了配置,刷成砖了,又找不到靠谱的救砖教程,只好淘宝找了一个专业救砖师傅帮我远程搞,然后发现其实有个很好的工具可以救砖:https://github.com/jclehner/nmrpflash,具体流程见另一篇。
恢复原厂ROM之后按照官方指导上的刷:https://openwrt.org/toh/netgear/r8000
把chk文件上传,并等一会儿:https://downloads.openwrt.org/releases/22.03.3/targets/bcm53xx/generic/openwrt-22.03.3-bcm53xx-generic-netgear_r8000-squashfs.chk
我是等了一会儿以后毫无反应,并直接重启了路由器,然后就直接进入了OpenWrt系统,看起来中间可能报错了或者写入停止了,但不影响使用。

Wifi配置问题

初始配置看起来只有1个可连接wifi,2.4G的直接需要手动开启另外两个。
第一步先给wifi配置密码

将overlay分区改到U盘

直接参考OpenWrt官方的文档ExtRoot Configureation执行命令,可以完美扩展/overlay分区到64G的U盘上面,彻底解决空间不够用的问题。

关于ipv6配置

NAS等服务需要获取独立ipv6地址,并开放端口到公网。其中ipv6的网段是动态分配给NAS等主机的,前缀可能会发生变化,因此需要以ipv6网段的形式来配置Openwrt firewall的规则:具体在ip destination处填写::a1b2:c3d4:0/::ffff:ffff:0即可,这里找了好久也没找到中文资料,简单描述一下规则:

/前面的是ipv6地址,/后的是掩码。ipv6地址一共128位,分为8组16位的16进制表示,:分隔的字符。其中,双:是一种简写,表示该位置所有位都是0,一般只出现一次。掩码也是一样的表示方式。
掩码也可以用数字简写,例如/32相当于/ffff:ffff::,在openwrt中,掩码还可以用负数例如/-64这样的格式表示,相当于/::ffff:ffff:ffff:ffff
之所以需要把掩码放在中间,是因为这32位在ipv6地址的分配中,无论前缀怎么变,这32位都不会变。具体原因可能是由于SLAAC协议中,ipv6地址的后64位通过EUI-64的方法生成,相当于MAC地址扩展后会对应到唯一的ipv6子网。

配置下面这个规则即可暴露NAS的ipv6地址和高位端口到外网
expose-nas-ipv6

配置科学上网

目前最好用的插件是OpenClash,上传ClashX的配置文件到OpenClash即可直接使用。
其中需要注意第一次启动之前,因为是在大内网环境,需要在Overwrite Settings-General Settings-Github Address Modify选项中,把Github地址修改为https://testingcf.jsdelivr.net/,否则github地址污染,会导致openclash检查版本或者下载clash内核等步骤报错:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2022-11-07 10:12:13【/tmp/clash_last_version】下载失败:【how to fix it, please visit the web page mentioned above.】
2022-11-07 10:12:13【/tmp/clash_last_version】下载失败:【establish a secure connection to it. To learn more about this situation and】
2022-11-07 10:12:13【/tmp/clash_last_version】下载失败:【curl failed to verify the legitimacy of the server and therefore could not】
2022-11-07 10:12:13【/tmp/clash_last_version】下载失败:【】
2022-11-07 10:12:13【/tmp/clash_last_version】下载失败:【More details here: https://curl.se/docs/sslcerts.html】
2022-11-07 10:12:13【/tmp/clash_last_version】下载失败:【curl: (60) Cert verify failed: BADCERT_CN_MISMATCH】
2022-11-07 10:10:57【/tmp/openclash_last_version】下载失败:【how to fix it, please visit the web page mentioned above.】
2022-11-07 10:10:57【/tmp/openclash_last_version】下载失败:【establish a secure connection to it. To learn more about this situation and】
2022-11-07 10:10:57【/tmp/openclash_last_version】下载失败:【curl failed to verify the legitimacy of the server and therefore could not】
2022-11-07 10:10:57【/tmp/openclash_last_version】下载失败:【】
2022-11-07 10:10:57【/tmp/openclash_last_version】下载失败:【More details here: https://curl.se/docs/sslcerts.html】
2022-11-07 10:10:57【/tmp/openclash_last_version】下载失败:【curl: (60) Cert verify failed: BADCERT_CN_MISMATCH】
2022-11-07 09:26:43【/tmp/clash_last_version】下载失败:【how to fix it, please visit the web page mentioned above.】
2022-11-07 09:26:43【/tmp/clash_last_version】下载失败:【establish a secure connection to it. To learn more about this situation and】
2022-11-07 09:26:43【/tmp/clash_last_version】下载失败:【curl failed to verify the legitimacy of the server and therefore could not】
2022-11-07 09:26:43【/tmp/clash_last_version】下载失败:【】
2022-11-07 09:26:43【/tmp/clash_last_version】下载失败:【More details here: https://curl.se/docs/sslcerts.html】
2022-11-07 09:26:43【/tmp/clash_last_version】下载失败:【curl: (60) Cert verify failed: BADCERT_CN_MISMATCH】

参见GitHub Issue

找了一波资料

当我真正下决心去学的时候,才发现前端的学习路径简单枯燥到可怕:看MDN就完事了。
所以从现在开始每日打卡吧~

阅读全文 »

背景

刚把blog重新弄起来,这次挂到了自己的server上而不是GitHub Pages,所以弄CI弄了比较久,尝试了Github Actions,有点难用,但是总算是搞定了。搞完以后看了下上一篇写完的markdown文件,已经是一年前。

一点想法

实际上还有三篇没有写完的,当时刚开始学前端的时候试图写的,webpack配置入门、前端技术认知、萌新的js工程和开发环境构建。
现在看来,这三个部分还是非常有必要梳理的技术之一。

也许长歪了的技能树

初学的时候试图去学的这些玩意,现在已经是工作中较为熟悉的部分,把这些复习一波并且补齐自然不难。问题在于,我终究是开始反思自己究竟有没有足够的成长。
上面这些明明在工作中非常紧密地在使用,但是我却对他们一无所知。
另一方面,对于正常的前端环境,我又毫无认识。
这里存在着一大片需要恶补的知识。

简单规划

首先是转技术栈,接下来react是必须要学的。
其次是补充前端基础,但这块其实短时间内需求不大。
还有则是是补全blog,巩固工具链。

2023-03-25补充

规划失败,blog长期搁浅,前端也准备完全放弃了

webpack是构建js工程的基础,然而webpack的配置相当复杂,并不是仅掌握原理就能够很好地应用的,其中最复杂的就在于各种loader和plugin。

首先从vue工程开始

在学习了一堆demo以后,有两个核心问题一直没解决,而且查了资料以后发现学习难度并不低。
两个难点,
第一个就是js工程如何构建,另一个则是npm在整个工程中扮演了什么样的角色,为什么npm install xxx以后后续就能require和import。

一年前买的CLR via C#还没看完,趁现在还有心,赶紧看起来,这块影响还是非常大的。

第一章 CLR的执行模型

第二遍看这一章了,收获一般,书中很多东西只是抽象的介绍,一提到具体内容就“见某章”,翻过去又觉得一下要看的太多,总的来看,CLR提供了一系列执行机制,刨除历史因素,托管模块在CLR下运行主要利用了几个机制:

IL和元数据(metadata)

一般来说CLR运行的程序以Assembly的形式存在,而Assembly中最重要的组成部分就是IL和MetaData。

JITCompiler机制

IL代码在第一次运行时才会被即时地编译为机器语言,编译器被称为JIT编译器,技术也就是JIT技术,正是由于这种机制深刻地了解了IL代码的执行环境,最终编译出来的代码反而能够取得更高的效率(存疑,未验证)。

.NET Framwork类库

目前还不是很理解为什么会把类库放在这一块,我的理解是,类库这种第三方代码集成方式,并不是一个理所当然的存在,不同语言提供了不同的程序包引用方式,而CLR提供的这种方式虽然没有细讲,但是可以认为,只需要把DLL交给CLR,由于该DLL即其他周边的文件通常被视为是一个完整的Assembly,且可以自描述,所以完全不需要担心CLR内部如何组织,在.NET平台上,程序员只需要关心命名空间、类型兼容这些问题就行了。

通用类型系统CTS

公共语言规范是互操作技术,或者说COM的一个延申,COM的实践在事实上失败以后,微软试图再一次在CLR上提供语言的整合,但是这种整合看起来非常优秀,实际上实现起来也许更加糟糕了,或者说,没有公司会下力气去基于CLR重新编译其他语言的代码?以至于文档缺失,缺乏广泛的使用者。
这个技术在刘佳亮的CurlWrapper工程中应用了,正是这个工程,激发了我对互操作这一块的兴趣,他还写了篇文章吐槽(C++/CLI——想说爱你不容易)[https://zhuanlan.zhihu.com/p/33450706],然而两年过去了,情况似乎并没啥改善……

互操作性

也许互操作性有一部分是基于上面的通用类型系统CTS的,后面的互操作性介绍写了三种典型的互操作方式:托管代码调用DLL中的非托管函数(DLL由非托管语言实现),托管代码使用现有的COM组件(COM组件的实现应该是没啥限制的),非托管代码可以使用托管类型(服务器)。
这部分存在很大问题,需要仔细研究一下。

在.NET平台上,C#可以用的互操作技术主要就是P/Invoke和COM,本文基于MSDN进行了一些理解和说明。

Platform Invoke

Platform invoke是一种可以让托管代码调用DLL中的非托管函数的服务,比如Windows API,