荒岛 - 技术栈
type: channel
link: https://blog.yangfei.site/tech/
items: Padavan安装Clash代理服务
items: 基于KOA实现简单MVC架构
items: AHP层次分析法的应用场景及代码实现
items: Docker安装Syncthing实现跨平台文件同步
items: 使用jsx实现React基础原理
items: 探究VUE响应式原理，使用Object.defineproperty实现观察模式
items: PHP入门之MVC架构的实现方案
items: Centos安装SMB文件共享服务

Padavan安装Clash代理服务
type: item
date: 2023-11-11T11:37:00+08:00
description: Clash是一款用Go开发的多平台的代理工具，支持Windows/Linux/IOS客户端，使用规则判定来决定代理流量改走节点还是直连访问。Clash的魅力还在于可以自动选择节点，不同的网站在同一时间，可以使用不同的节点去访问。Clash是最适合机场用户的代理软件之一。本篇所有文件可到此下载。https://www.123pan.com/s/sWpxjv-nFi4h.html 提取码:xh35安装Clash本人的Padavan是纯净版，所以Clash是自行编译安装的（下载二进制文件），自行编译请到Clash项目仓库获取相关资源和帮助。将下载好的二进制文件使用modify解包/打包至Padavan的/usr/bin/目录。设置clash相应权限，chmod 0755 /usr/bin/clash安装WebUI(可选)访问Clash-dashboard下载clash-dashboard.tar.gz文件。将clash-dashboard.tar.gz解压至/etc/storage/clash/dashboard配置Clash订阅下载Geoip数据库，解压至/etc/storage/clash/Country.mmdb。下载第三方提供的Clash机场服务配置文件，解压至/etc/storage/clash/config.yaml配置文件说明。allow-lan: true #允许来自局域网的连接 bind-address: 10.0.0.1 #代理服务地址（本机IP） dns: fake-ip-range: 198.18.0.1/16 default-nameserver: #默认的DNS服务器 - 114.114.114.114 - 119.29.29.29 - 223.5.5.5 enable: true #启用该DNS配置，使其生效。 listen: 0.0.0.0:5353 #DNS服务端口 enhanced-mode: fake-ip fallback-filter: #配置备用DNS服务器的过滤规则，提高网络安全性。 geoip: true #根据地理位置进行过滤 ipcidr: #定义不被解析的IP地址范围 - 240.0.0.0/4 ipv6: false #禁用IPv6 nameserver: #指定其他可信赖的DNS服务器，增强解析能力和稳定性。 - 114.114.114.114 - 119.29.29.29 - 223.5.5.5 - https://223.5.5.5/dns-query - https://223.6.6.6/dns-query - https://doh.pub/dns-query use-hosts: true mixed-port: 10080 #混合代理端口 port: 10081 #HTTP代理端口 socks-port: 10082 #socks代理端口 redir-port: 10083 #透明代理端口 mode: Rule #代理模式 log-level: silent #日志模式 external-controller: 0.0.0.0:9090 #webui地址及端口 external-ui: /etc/storage/clash/ui #webui文件路径 secret: 123456789 #访问密码新建/etc/storage/clash/clash.sh脚本，方便Clash的启动、停止、更新。# 配置文件路径 config_file=/etc/storage/clash/config.yaml # 代理订阅地址 feed_url=https://feed.xxx.com/clash/xxxx.yaml # 日志输出 func_log(){ logger -t "Clash" "$1" echo "Clash $1" } # 停止服务 func_stop(){ if pidof clash >/dev/null; then killall -9 clash func_log "服务已停止！" fi } # 启动服务 func_start(){ clash -d /etc/storage/clash >/dev/null 2>&1 & sleep 3 if pidof clash >/dev/null; then func_log "服务启动成功！" else func_log "服务启动失败！" fi } # 重启服务 func_restart(){ func_stop func_start } # 修改配置 func_config(){ # 开启局域网访问 sed -i 's/allow-lan: false/allow-lan: true/g' $config…

基于KOA实现简单MVC架构
type: item
date: 2022-06-18T23:26:00+08:00
description: 基于KOA实现MVC架构的内容管理

AHP层次分析法的应用场景及代码实现
type: item
date: 2022-06-18T22:35:00+08:00
description: 层次分析法，即Analytic Hierarchy Process(AHP) ，是美国运筹学家 Saaty 于20世纪 70 年代初期提出的一种主观赋值评价方法。层次分析法将与决策有关的元素分解成目标、准则、方案等多个层次，并在此基础上进行定性和定量分析，是一种系统、简便、灵活有效的决策方法。javascript代码实现function ahp(matrix) { const size = matrix.length if (!matrix.every(row => row.length === size)) { throw new Error('输入矩阵不是方阵!'); } // 矩阵列求和 const colSum = matrix.reduce((prev, cur) => prev.map((val, i) => cur[i] + val)) // 矩阵权重 const weights = matrix.map(row => { // 归一化矩阵行 const normalized = row.map((val, i) => val / colSum[i]) // 矩阵行平均数 return normalized.reduce((acc, val) => acc + val) / size }) // 特征向量 const eigs = matrix.map(item => weights.map((weight, i) => weight * item[i]).reduce((a, b) => a + b)) // 最大特征根 const lambdaMax = eigs.map((eig, i) => eig / weights[i]).reduce((a, b) => a + b) / size // 一致性指标 const CI = (lambdaMax - size) / (size - 1) // 初始化RI值，用于一致性检验 const RIs = [0, 0, 0.58, 0.9, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49] // 一致性RI值 const RI = RIs[size - 1] // 一致性比例 const CR = CI / RI // 一致性判断 const consistency = CR < 0.1 return { size, weights, eigs, lambdaMax, CI, RI, CR, consistency } }使用方法// 输入矩阵 const matrix = [ [ 1, 5, 3 ], [ 1/5, 1, 1/2 ], [ 1/3, 2, 1 ] ]; const weights = ahp(matrix); console.log(weights); // 输出 [0.485, 0.323, 0.192]

Docker安装Syncthing实现跨平台文件同步
type: item
date: 2022-05-18T22:35:00+08:00
description: Syncthing是一款开源免费跨平台的文件同步工具，是基于P2P技术实现设备间的文件同步，所以它的同步是去中心化的，即你并不需要一个服务器，故不需要担心这个中心的服务器给你带来的种种限制，而且类似于torrent协议，参与同步的设备越多，同步的速度越快。针对隐私问题，Syncthing软件只会将数据存储于个人信任的设备上，不会存储到服务器上。设备之间的通信均通过TLS进行，Syncthing还使用了完全正向保密技术来进一步保障你的数据安全。对于处于不同局域网之中的设备之间的文件同步，Syncthing也提供了支持。服务端 - 同步中继与发现服务https://hub.docker.com/r/johngong/syncthing-relay-discosrvdocker run \ --name=syncthing-relay-discosrv \ --restart unless-stopped \ -v /data/syncthing/relay-discosrv:/config \ -p 22067:22067 \ -p 22070:22070 \ -p 8443:8443 \ -d johngong/syncthing-relay-discosrv客户端docker run \ --name syncthing \ --restart=always \ -v /data/files:/files \ -v /data/syncthing:/var/syncthing \ -p 8384:8384 \ -p 22000:22000/tcp \ -p 22000:22000/udp \ -p 21027:21027/udp \ -d syncthing/syncthing

使用jsx实现React基础原理
type: item
date: 2021-12-27T23:05:00+08:00
description: 使用jsx实现React基础原理

探究VUE响应式原理，使用Object.defineproperty实现观察模式
type: item
date: 2021-10-18T23:34:00+08:00
description: 探究Object.defineproperty实现观察模式

PHP入门之MVC架构的实现方案
type: item
date: 2019-12-16T22:38:00+08:00
description: PHP入门，MVC架构的实现方案

Centos安装SMB文件共享服务
type: item
date: 2018-09-15T19:30:00+08:00
description: 1，进入centos系统，保证联网的状态，下载samba服务。yum install samba2，打开samba服务systemctl start smb3，查看smb状态systemctl status smb4，设置开机自启systemctl enable smb5，打开共享文件夹路径，到对应的路径下创建共享文件夹mkdir /share6，给共享文件夹权限，由于是测试，给的是最高读写权限，一般这种操作不安全，不建议最高chmod -R 777 /share7，创建用户，这时候的用户是centos系统的用户。可以创建多个用户，本次测试只创建一个用户。useradd username8，创建用户组。也可创建多个组。groupadd admin9，将用户加入到组中gpasswd -a username admin10，将用户转变为smb用户，输入密码。smbpasswd -a username11，配置smbvi /etc/samba/smb.conf[share] comment = share #备注 path = /share #共享文件夹路径 valid users = username #有效用户或者组名 @xiaoxue writable = yes #是否可以写入12，重启smb服务systemctl restart smb