请求接口类的封装
简述最开始知道这个方法是在公司一位大佬的代码里看到的,语言是TypeScript,当时感觉这个写法逻辑非常清晰,阅读极度舒适 后来又根据自己的需要加了参数类型约束,用在了一个浏览器插件项目中:Btools-vue(但在后来的一次重构中删掉了) 并且也在目前在做的Unity游戏中,用C#写了一个类似的,用起来也是非常舒适 使用先演示一下使用方式 TypeScriptUrl 类 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798import Vue from 'vue'import { default as qs, ParsedUrlQueryInput } from...
PicGo 插件开发入门
PicGoPicGo是一个用于快速上传图片并获取图片 URL 链接的工具,可以把本地图片上传到图床并返回各种格式的链接 插件PicGo支持插件开发,但官方教程并没有从零到安装成功的具体细节演示,只说了插件开发相关的一些东西 所以对新手的我来说还是碰到很多坑的,在此记录分享一下 入门教程下面我会用PicGo给我们提供的插件开发模板进行插件从零到安装成功的开发过程演示 全局安装 PicGo123yarn global add picgo# ornpm install picgo -g 下载模板1picgo init plugin <your-project-name> 根据提示进行配置 123456789101112131415161718192021222324[PicGo INFO]: Template files are downloading...[PicGo SUCCESS]: Template files are downloaded!# 插件名称? Plugin name: test# 插件简介? Plugin description:...
Typescript 浏览器插件开发 chrome/browser 代码提示
chrome/browser这两个是浏览器为插件开发提供的API,Chrome浏览器的变量名叫chrome,火狐浏览器的变量名叫browser 代码提示我用的编辑器是vscode,之前一直不明白怎么给这两个变量添加代码提示 最早尝试最开始我想的是加一个全局变量,搜到可以在.eslintrc配置中添加一个globals,把变量名加进去,但后来发现这个东西跟代码提示没半毛钱关系。这是ESLint的配置文件,它的功能只是代码检查。 问过插件开发的大佬,大佬只说导入Library啥的,当时的我亿脸懵逼。 typings看了github上的各种插件,发现有一个@types/chrome,typings是TypeScript的定义管理器,描述命名空间、接口、变量等各种东西,@types/chrome呢也就是别人写好的一个描述文件,去告诉编辑器我这里有个chrome变量,它下面有哪些方法之类的。 使用npm安装 1npm install --save-dev...
魔幻的2020
一年过得真快,2020年,我依然是延续去年的状态 间歇性踌躇满志,持续性混吃等死。 这次写篇小文章总结吧 工作过完春节,因为疫情的关系一直在家办公,我也非常喜欢这种办公模式,老宅男了。种种原因,公司的情况一直不是很好,年后没几个月,我从全职变成了兼职。兼职工资刚好够吃,再加上当时住的地方附近没有合适的工作,我就没急着找工作,自己做了做自媒体,于是就有了《每天一个JS程序》。其实从很早之前开始我也一直在做视频,只是当做一个兴趣,把做视频当正事干了之后,涨粉也算挺快(对我来说)。 但做视频的收入并不能养活我,公司的兼职到8月会最后一次发工资。这之后最现实的选择有两个,一是找工作,但因为我附近没有合适的,我又想在家附近找,所以只能搬家。二是先随便找个餐饮店、便利店之类的兼职,等合适的全职工作。当时挺佛系的,也没啥危机感,不紧不慢两边都在找。 也就在8月,出现了转机,发小突然问我要不要一起做独立游戏,经过各种探讨,最后我决定:入坑!于是我在 if(typeof dateMaker !== 'undefined') dateMaker('game');...
WordPress 迁移至 Hexo
记录一下本站从WordPress迁移至Hexo的过程 Hexo之前也接触过,不过只是看看,没摸 三个原因让我决定使用Hexo 原因服务器出大问题第一个原因是服务器的systemd被我亿不小心覆盖了(当时提示是否覆盖,没仔细看直接回车了) 当时我就感觉,我的服务器不完整了,毕竟像开机启动的程序,都配置在里面 本来以为会开不了机,后来发现并不会 但我还是感觉,我的服务器被玷污了(草) 想试试纯静态化第二个原因是偶然看到别的大佬的博客有篇文章,说的是把博客纯静态化的过程 Markdown...
树莓派 Cloudreve Aria2 离线下载
Aria2aria2是一个轻量级下载工具,支持HTTP、FTP、磁力链接等 cloudreve的离线下载功能会使用它进行下载 下载1sudo apt install -y aria2 配置Aria2网上找到的一份配置模板 需要修改的 rpc-secret 需要你自己定义 ,cloudreve的配置中会用到 dir下载文件夹,这个可以在cloudreve后台配置 save-session和input-file 会话文件的位置,这个文件也需要自己创建 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960# 后台运行daemon=true# 用户名# rpc-user=user# 密码# rpc-passwd=passwd# 设置加密的密钥rpc-secret=token# 允许rpcenable-rpc=true# 允许所有来源, web界面跨域权限需要rpc-allow-origin-all=true#...
树莓派 Cloudreve 自建局域网网盘
CloudreveCloudreve 是个网盘系统,包含前后端,解压即用,贼吉尔方便 下载在 Github 找到对应的压缩包,树莓派下载arm的 复制链接,使用wget下载到树莓派 1wget https://github.com/cloudreve/Cloudreve/releases/download/x.x.x/cloudreve_x.x.x_linux_arm.tar.gz 解压1tar -zxvf cloudreve.tar.gz 解压出来之后是个可执行文件cloudreve 首先先执行一次,会自动在当前目录创建一个配置文件conf.ini,并显示默认帐号和随机生成的密码 Cluedreve 默认存储是SQLite本地存储,所以会在当前目录创建一个.db的文件 Mysql不过它支持mysql,这里我选用mysql 安装1sudo apt install mysql-server 如果因为软件源的问题提示未找到mysql-server,你可以试试安装另一个,这两个是一样的 1sudo apt install...
Unity UI管理模块
前言本教程是在B站UP“一唐老狮一”的视频教程 《Unity的程序基础框架》 中,UI管理模块的改进。 因为UP这个教程变成了付费课程,如果想看代码是怎么写的,可以去支持付费课程 或者这篇文章,是别人的笔记: 《Unity3D程序基础框架(下)》 中的“UI管理模块”部分 主要功能 统一管理当前面板下的控件(按钮、图片、文本框等) UI分层 反射型事件监听 其中对原版的改进部分主要是反射型事件监听(我瞎起的名,不知道有没有专业名词),我不太确定这么做会不会有性能问题,还请大佬指教(在视频评论) 这个东西的作用是你在使用按钮等控件时,可以直接在对应的面板类里写方法 比如我有一个面板,上面有几个控件,分别是名叫btnTest和btn2的两个按钮和名叫Test的复选框 我只需要写一个类,继承BasePanel类,其他任何复杂的东西都不需要 就可以直接在这个面板类里写控件名+OnClick和控件名+OnValueChanged即可分别监听对应名称的按钮点击事件和复选框切换事件 代码: 12345678910111213141516171819202122using...
Unity 网格建造
网格建造游戏中常见的建造方式,目前在做的游戏中需要。 但搜出来的教程比较少,我又是个英文盲,没找到合适的方法,于是瞎研究了一个,说实话也挺简单的。 整体感觉还行,演示: 教程变量先定义几个变量 12345678910111213141516171819202122// 建筑的大小public Vector2 buildSize;// 建造区域起始点public Vector2 startPoint;// 可建造区域大小public Vector2 buildArea;// 建造指示器(变红变绿的那个东西,这个是左上角的那一个方块)private GameObject buildObj;// 当前建造指示器的位置private Vector3 curPosition;// 允许建造区域,外层字典是 X 内层是 Y// 这里之前我用的是 Vector2 当作字典的 Key// 但效率会不会有问题,不太懂,索性改成两层字典private Dictionary<float, Dictionary<float, bool>> allowBuildArea =...