适用于由git安装的扩展,把这个bat文件放在stable-diffusion-webui的目录下,然后执行即可更新所有扩展。(需要电脑上安装有git)
和webui本身自带的更新功能相比,这个脚本的优点是所有扩展是并行更新的,比webui那种一个个的更新快到不知道哪去了。
注1:更新扩展前请先关闭webui。
注2:并不建议没事去更新插件和webui本体,因为这些项目的更新和合并都很随便,并没有严格的兼容性测试和问题测试,所以有一定的概率更新完就不能正常启动了。
适用于由git安装的扩展,把这个bat文件放在stable-diffusion-webui的目录下,然后执行即可更新所有扩展。(需要电脑上安装有git)
和webui本身自带的更新功能相比,这个脚本的优点是所有扩展是并行更新的,比webui那种一个个的更新快到不知道哪去了。
注1:更新扩展前请先关闭webui。
注2:并不建议没事去更新插件和webui本体,因为这些项目的更新和合并都很随便,并没有严格的兼容性测试和问题测试,所以有一定的概率更新完就不能正常启动了。
express本身可以写async函数作为路由或者中间件(以下简称路由)使用,但如果在其中直接抛出异步错误的话则不会被捕获并传递给错误处理路由,需要在每一个async路由中手动写try/catch来捕获并处理错误,这显然对于拥有统一错误处理逻辑的框架是不友好的。
我不知道为什么express始终没有在4.x版本添加这个支持,看起来这应该并不会导致什么兼容性问题,即使不默认全局开启这个功能,也可以添加一个选项或开关函数来允许使用者开启异步错误捕获,但它始终没有这么做。
在这之前npm上也已经有一些可以实现这个功能的补丁包,不过它们几乎都是给创建出的app实例的所有相关路由方法套了一层壳在里面try/catch错误,导致如果是自己用一些特殊方法创建的路由对象,就失效了。
我原本用了一个直接修改express源码中相关原型方法的包,叫做
asyncPatch
函数需要传入一个创建出来的app实例, 为的是能获取到app所属的express包里的构造函数,不是为了在实例上包装方法。该函数在任何阶段调用都可以,只要在处理请求前调用即可。
Alt+鼠标左键点击视频所在区域截图,按下Alt与左键后不松开滚动滚轮可微调时间
用于在浏览器中下载文件,特性是支持断点续传(符合CORS规则时)、阻塞重连和失败重试,使用fetch流作为下载方式。
NPM: https://www.npmjs.com/package/@luojia/browser-filedownloader
GitHub: https://github.com/JiaJiaJiang/browser-FileDownloader
用于在页面上通过js附加样式表文本
用于在页面上的小图旁边显示一个大的浮动预览图
NPM: https://www.npmjs.com/package/floatingpreviewimg
GitHub: https://github.com/JiaJiaJiang/html-FloatingPreviewImg
此包封装了使用<datalist>标签为input提供输入建议的功能,仅需要提供一个获取建议数据的方法即可。
NPM: https://www.npmjs.com/package/inputadviser
GitHub: https://github.com/JiaJiaJiang/html-InputAdviser
地址:https://gist.github.com/JiaJiaJiang/c54abe1227917af3d3825dfa098b9473
安装:在浏览器有tampermonkey插件的情况下,点上面链接里的RAW按钮安装
功能:
写了个用于修改http、https请求和响应的node服务,它会启动一个socks5服务端,然后把你的代理设置成这个服务端口,在代码里写上你的修改逻辑即可。
名字取自Man-In-The-Middle,把人改成了socks。
NPM : https://www.npmjs.com/package/socksinthemiddle
Github : https://github.com/JiaJiaJiang/node-socksInTheMiddle
node.js 做的socks5服务端,支持socks5/4/4a,支持无验证和用户名密码验证模式,支持tcp和udp模式,bind模式暂时还没做
花几天用three.js糊了一个用于在网页上加载模型并查看的小东西,名字随便起的,用于以后显示一些物体的扫描建模和3D打印做的模型。
地址:https://github.com/JiaJiaJiang/itisModelViewer
目前代码没高兴整理,反正本来写的也不乱,就是对象的方法排序不太讲究。加载器只写了gltf一家和fbx的,虽然加载器都是现成的,不过因为我把js打包了,现在已经有1M多了(没压缩),所以我不用的加载器我都没写进去。
现在也还没写UI,只支持拖动查看,有生之年应该会加入从场景中的相机视角查看以及控制灯光之类的。
在前面那个win hello摄像头的文章里我已经把模型插进去了,这里再放几个演示,如果本页有模型没有加载出来就刷新一下,我的土豆服务器可能不太愿意把文件吐出来
现在博客几乎变成了记录看番进度的专用工具,久违地动了动代码写了个小工具都忘了发出来了
那么这边是演示,内含仓库链接: http://pages.luojia.me/IPFS_tool/
工具介绍:检查列表里的ipfs网关并可以选择用来打开下面内容预览的ipfs路径,地址hash里带上path参数时打开后会自动检测并用响应最快的网关打开资源。也可以带上gateway参数指定使用的网关
目前只有以上功能,以后没事做的时候可能还会支持ipfs目录浏览 直接显示网关返回的目录页面就行了
如果你看到有人发出一个以Qm开头的神秘代码,那么就可以用这个工具来加载它。
下面提供几个ipfs资源hash供测试
图片
视频
音乐
其它
昨晚写了个重命名工具,使用正则表达式匹配并替换文件名。
现在给npm包起个合适的名字是真难
GitHub: https://github.com/JiaJiaJiang/node-namer
效果
$ namer -f "/.+(?=\.txt$)/" -r "#COUNTERpoi$&" match: /.+(?=\.txt$)/ find: /.+(?=\.txt$)/ replacement: #COUNTERpoi$& Match list: 1.txt > 1poi1.txt 2.txt > 2poi2.txt 3.txt > 3poi3.txt 4.txt > 4poi4.txt 5.txt > 5poi5.txt 6.txt > 6poi6.txt 7.txt > 7poi7.txt 8.txt > 8poi8.txt 9.txt > 9poi9.txt 10.txt > 10poi10.txt 11.txt > 11poi11.txt 12.txt > 12poi12.txt 13.txt > 13poi13.txt 14.txt > 14poi14.txt 15.txt > 15poi15.txt 16.txt > 16poi16.txt 17.txt > 17poi17.txt 18.txt > 18poi18.txt 19.txt > 19poi19.txt 20.txt > 20poi20.txt 21.txt > 21poi21.txt 22.txt > 22poi22.txt 23.txt > 23poi23.txt 24.txt > 24poi24.txt 25.txt > 25poi25.txt 26.txt > 26poi26.txt 27.txt > 27poi27.txt 28.txt > 28poi28.txt 29.txt > 29poi29.txt 30.txt > 30poi30.txt 31.txt > 31poi31.txt 32.txt > 32poi32.txt 33.txt > 33poi33.txt 34.txt > 34poi34.txt 35.txt > 35poi35.txt 36.txt > 36poi36.txt 36matches found. Confirm? (control+c to exit) Finished. 36succeeded,0failed
为了完成java的作业,先拿js写了一个。暂时只完成了一些简单的运算
今天写了个小工具,用来显示声音的波形和频谱。音源可以是麦或者音乐文件音乐文件可以直接拖入。
在线演示:https://jiajiajiang.github.io/listen/ 或 https://pages.luojia.me/listen/
项目地址:https://github.com/JiaJiaJiang/listen
默认会进入麦克风模式,如果想要显示本地音乐的频谱的话可以直接把音乐拖入。
由于coding gists即将关闭,所以把此代码片搬到博客
js的Number支持直接使用toString转换到最多36进制(0-9a-z),而此函数支持转换到由传入进制表定义的任何进制。
默认进制表为0-9a-zA-Z的62进制
/* COPYRIGHT luojia@luojia.me MIT LICENSE */ function conv(n,o,t,olist,tlist){//数,原进制,目标进制[,原数所用字符表,目标字符表] var dlist='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', tnum=[],m,negative=((n+='').trim()[0]=='-'),decnum=0; olist||(olist=dlist); tlist||(tlist=dlist); if(negative)n=n.slice(1); for(var i=n.length;i--;) decnum+=olist.indexOf(n[i])*Math.pow(o,n.length-i-1); for(;decnum!=0;tnum.unshift(tlist[m])){ m=decnum%t; decnum=Math.floor(decnum/t); } decnum&&tnum.unshift(tlist[decnum]); if(tnum.length===0)tnum.unshift(tlist[0]); return (negative?'-':'')+tnum.join(''); } conv(1234,10,2) //"10011010010" conv(15,10,16) //"f" conv('ABC',16,10) //"9846" conv(3245670,10,10,null,'零一二三四五六七八九') //"三二四五六七零" conv('①②③',10,2,'〇①②③④⑤⑥⑦⑧⑨') //"1111011"