Closed xioxin closed 5 years ago
github 的 markdown 引擎纠错能力太强了
显示原文没用了
我觉得你的脚本还没算正式发布,就我们几个在测试,所以配置升级那段代码可以不需要的。
另外数据库分析,末尾是h的解析应该也不用吧,目前没人用这个吧,等下次重新整理的时候把wiki里那段话也删了。
有个问题想咨询一下,就是如果旧的设置是
{
a:1,
b:2,
c:3,
}
然后我新增了功能
{
a:1,
b:2,
c:3,
d:4,
e:5,
}
又需要保留原有设置的时候,你会怎么处理这个。
简单啊
var defaultConfig = {...};
var etbConfig = GM_getValue('config');
for(var i in defaultConfig){
if(typeof etbConfig[i] === "undefined"){
etbConfig[i] = defaultConfig[i];
}
}
这个想法不错,我现在一直用的 Object.assign ,你觉得哪种更好?
另外这种对于
{
a:1,
b:2,
c:{
d:1,
e:[
"aa",
"bb",
],
},
}
这种的就有些问题了。 我其实不是单独的一个设置对象,而是每个对象有一些方法,所以希望只把配置文件读入进来,但是不要覆盖掉子对象内的方法。
保存这个对象的时候,那些方法不会保存成字符串,重新加载用Object.assign就会把本来有方法的子对象用没有方法的对象给替换掉,于是我现在是一个一个配置的读的,超麻烦。
没看明白
那么首先Object.assign代码要简化一些,有没有什么缺点?
问题是 Object.assign 是浅拷贝 多层对象的时候
怎么是深拷贝?
我的代码目前是这样
其实我是想写成这样,就像那些官方的Array函数一样,最好还是mask[0]直接调用的就是mask.masklist[0],但是搞不来。
mask: {
add: function(name, logic, content) {
var mask = {
name: name,
logic: logic,
content: content,
};
this.masklist.push(mask);
return mask;
},
remove: function(index) {
this.masklist.splice(index, 1);
},
masklist: [
mask1,
mask2,
...
],
},
后来因为储存到本地字符串对象变成只剩下masklist,没有了add与remove方法,所以我就只好改到了外面,好像还是有问题,所以我最后变成了每项设置都写一句读取。
不考虑兼容的话 可以创建一个类 基于Array
class maskHelper extends Array {
constructor(...array) {
super(...array);
}
add (name, logic, content) {
var mask = {
name: name,
logic: logic,
content: content,
};
this.push(mask);
return mask;
}
remove(index) {
return this.splice(index, 1);
}
}
var mask = new maskHelper();
mask.add('name','logic','content');
console.log(mask[0]);
//{name: "name", logic: "logic", content: "content"}
//快速将一个数据 还原为maskHelper类
var oldData = [
{name: "name1", logic: "logic", content: "content"},
{name: "name2", logic: "logic", content: "content"},
{name: "name3", logic: "logic", content: "content"}
];
//注意oldData前的三个点 意思是将数组拆分开 每个数组项 对应每个参数项传递
// new Array(1,2,3,4) 等于 new Array(...[1,2,3,4])
var mask2 = new maskHelper(...oldData);
mask2.add('name4','logic','content');
console.log(mask2);
/* [
{
"name": "name1",
"logic": "logic",
"content": "content"
},
{
"name": "name2",
"logic": "logic",
"content": "content"
},
{
"name": "name3",
"logic": "logic",
"content": "content"
},
{
"name": "name4",
"logic": "logic",
"content": "content"
}
]*/
如果考虑兼容的话 可以直接给array添加方法
你用的这是ES6的?看不懂啊😂我还一直在研究Object.create()呢,没有原型这一块的入门教程,太难理解了。
一般火狐不支持的都是用的webkit前缀,Chrome上很多W3C代码必须加webkit前缀才能用
问题出在过渡效果插件上 被沙盒影响 导致一些事件可能绑定不上 导致过渡不执行 框框也就不显示了
原本打算用 https://material.angularjs.org/latest/demo/menu 组建做的 是不是很炫酷
开车,实用才是最重要的啦。你的代码全部用JS加载,本来就会卡一些,还搞些炫酷的东西,我家里的笔记本上就是幻灯片。那个框架那么多文件,比你自身的代码多多了,每个页面都加载完全没必要。 而且你还可以限制一下启用页面,比如查看大图的页面我有时会点开很多,所有页面都加载ETS没必要。
我觉得最好的体验是融入,虽然效果很棒,但是如果不是功能的需要而UI差太多的话,会破坏和谐感。
你的那个Tag介绍的UI就做的很和谐
我最开始做PUBD的时候也是尽量使用的网站原生CSS,UI很有融入感。
后来重新写的模拟视窗UI,拖动起来就是卡卡的,不过颜色我还是贴近网站原生的。这个是因为以前在动漫东东做主题对视窗有很深的感情。
这个AngularJS Material的特效,完全可以做APP了,到时候WEB APP API出来了,完全可以直接JS开发APP了。现在也可以做一些不怎么需要本地内容的东西。不过手机上火狐比较卡。
对了,你的ETS代码的协议还没说是什么,GPL?Mozilla?
项目现在是GPL 就GPL就可以 油猴子脚本本身不存在闭源的情况 我一般是使用 MIT
GPL仅限于我的ETB,Wiki应该用Wiki那种协议吧我不是很懂就没写。MIT也太开放了,现在国内的环境用MIT就是把自己放在了舆论的下风,别人可以随便盗用标榜原创。 https://www.ithome.com/html/it/324505.htm 这个事件的作者开始是Apache协议,发现被盗用后才临时改的协议(在微博上看到的)。
我的FastCopy-M就被无知之人说是盗用别人的呀,加了后门呀什么什么的,他还为了怼我自己跑去进行标准资源汉化,这种可烦了。
你有没有用过IndexedDB,用来储存大量的数据如何?TAG这么多有没有必要用这个? https://developer.mozilla.org/zh-CN/docs/Web/API/IndexedDB_API
问题是跨域数据存储 你那里读取数据存在性能问题吗?
EhTagSyringe Load Tags: 19.779052734375ms EhTagSyringe Infusion: 0.25390625ms 20ms 速度很快
LocalStorange没有遇到性能问题,我只是在想可不可以把TAG图片用数据库缓存下来,节省流量。LocalStorange有容量限制
其实最终目的是做一个osu!风格的网站主页,需要缓存大量歌曲。
一般情况只需要将http头的缓存时间设置很长 实际缓存交给浏览器来管理 就行 自己管理更容易出岔子
玩没玩过eratoho这种纯文本的小黄油 我有计划将这个软件的剧本文件 编译成js文件 让代码跑到浏览器里
没有,所以完全不知道你说的是什么
我说的那个歌曲播放器的话,是想做成用户可以自己上传歌曲这种类型的,所以需要本地储存。
JSON输出加了个统计
哦那确实
https://www.bilibili.com/video/av8767076/ 我之前探究那个节拍到底是怎么做到的,一直不成功。
后来找到了原理后,又懒得进一步研究下去了
不会算法,不知道怎么算对数
网页端的频谱分析我写过
我研究了游戏的原理,不仅仅是频谱,还有地图文件本身自带的BPM数。是这两个叠加的。但是怎么让这两个叠加的变动保持在某个范围,让饼的跳动变得很带感,就是需要研究的了。
一个无声的曲子,有BPM,饼也会规律的跳,一个曲子BPM超大(让其BPM相关的变化很慢),就是按照频谱来跳的,但是就是不知道怎么让频谱那种变化显示出来。有的时候频谱跳动很大,如果用这个作为变化分母,就会减小大部分中间段的差异。
你打算上传osu的地图文件吗 那样还需要js解压zip
zip的库也有的,不过那个暂时不用考虑,最优先的肯定只是曲子mp3、背景jpg、BPM和高潮数据的地图,这三个文件就够了,先把这个完善了才行吧。
毕竟能不能看到带感的动画最是最关键的。
弄个 GitHub badge 把统计显示在 readme 上如何
不知道那是啥,你会搞的话可以搞
新功能! 种子下载列表直接复制磁力链
这样生成的magnet真的能用吗
可以啊 我以前一直都是这么用的 以前是 写的脚本读取我剪切板里的链接 获取40位16进制字符 拼接磁力链头 发送到远程下载器 用了一年了吧 当时偶然发现种子文件名就是磁力链的hash
问题magnet依赖DHT,对于这种近PT的东西效果会很差的吧
反正我用FDM是死活找不到tracker的
磁力本来就是种子的hash 值,但是只是文件名的hash值吗?不应该是种子文件本身的hash吗?
我觉得试验性功能最好另开一个脚本或者放在开发分支,不然出错后就会让整个脚本失效。
你新添加的功能都跟翻译tag几乎没有代码上的重合,让他们互相影响,其实是不明智的。 如果是我,我会选择开发成不同的脚本。这样需要关闭某个功能也更加方便。
用的html5原生提示组件 chrome 支持中英文搜索 但是如果搜到的结果很多会比较卡 https://user-images.githubusercontent.com/5716100/30069114-65786c42-9225-11e7-8632-8b4eb53e04e0.png
firefox 只支持中文搜索 确定后英文进入搜素框 https://user-images.githubusercontent.com/5716100/30069288-f4dff2f6-9225-11e7-9786-488ba499e4af.png
你们可以体验一下
链接控制功能
开启注射器 #/ets-set-config?syringe=true 禁用注射器 #/ets-set-config?syringe=false
打开菜单 #/ets-open-menu 打开配置菜单 #/ets-open-option 重置设置 有提示 #/ets-reset-config 开始更新并保存(有UI) #/ets-auto-update
直接在控制台里执行
wikiUpdate()
可以直接执行更新 无UI新功能V2 种子直接复制磁力链![image](https://user-images.githubusercontent.com/5716100/30336487-ebfb8ad0-97aa-11e7-8601-7cea414dcc08.png)