duangsuse::Echo
https://www.mohu.club/question/2605 其实我就是为了让这个 URL 能自动重定向……
https://github.com/duangsuse-valid-projects/WebExt-URLReplace/commit/6fc30563975b4a1116a7a084575a4b9e86f8db4d
支持了
默认情况下为了减少开销以及(象征性)尊重用户的隐私,利用了
在设置里添加一项 source 为
支持了
<all_urls> pattern 的使用(不过由于 browser.storage API 相当难用以及我自己很在意是 ES6 还是 ES7 compat 的问题,实现代码很烂)默认情况下为了减少开销以及(象征性)尊重用户的隐私,利用了
onBeforeRequest 的 RequestFilter 功能。在设置里添加一项 source 为
<use_all_urls> 并且 destination 不为空("true")的项目后,就会转而开启面向所有域名的替换,比如可以把 (.*).com -> \1.orgGitHub
Add <use_all_urls>, improve code reuse · duangsuse-valid-projects/WebExt-URLReplace@6fc3056
Replace URL by regex pattern mapping. Contribute to duangsuse-valid-projects/WebExt-URLReplace development by creating an account on GitHub.
duangsuse::Echo
https://www.zhihu.com/question/22081653
🤔数学不好的我看到第一个 P=NP (自己证明容易还是证明别人的证明正确容易)的时候还想了想为什么 P=NP 就 P=0 or N=1 了
后来我发现 P=NP 不就是 P*N==P 嘛…… 于是 N 可以为1 (*1 是fixed point) 或者干脆为 0 (照样是 fixed point)
然后乘法有交换律于是就…… 总之也很头疼是了。
后来我发现 P=NP 不就是 P*N==P 嘛…… 于是 N 可以为1 (*1 是
然后乘法有交换律于是就…… 总之也很头疼是了。
duangsuse::Echo
🤔数学不好的我看到第一个 P=NP (自己证明容易还是证明别人的证明正确容易)的时候还想了想为什么 P=NP 就 P=0 or N=1 了 后来我发现 P=NP 不就是 P*N==P 嘛…… 于是 N 可以为1 (*1 是 fixed point) 或者干脆为 0 (照样是 fixed point) 然后乘法有交换律于是就…… 总之也很头疼是了。
fun onEntryMessage(msg: Message) {
val newbie = msg.sender
group.restrictWriting(newbie)
timer.scheduleFor(newbie, cfg.kickoutDelay) { group.kick(newbie) }
val (problem, decisions, truth) = randomProblem()
msg.replyWith(Photo(problem)
.withBoard(createRows(decisions)) {
if (it.index == truth) onEntryApproved(msg)
else onEntryFailed(msg)
})
//nothing
}
fun onEntryApproved(msg: Message) {
timer.cancalFor(msg.sender)
//congratulations
}
fun onEntryFailed(msg: Message) {
//so bad
}
fun Group.restrictWriting(user: User) = TODO()
//……N abstraction = TODO
🤔 可以不必 fixed index,每次 random 也好关键在于问题的答案正确判定,可以用之前的
shuffleMerge() :fun <T> Collection<T>.shuffleMerge(value: T): Pair<Int, List<T>> {
val newRange = 0..lastIndex+1
val mergedIndex = Random.nextInt(range)
val iterator = iterator()
val newList = newRange.shuffled().map { if (it == mergedIndex) value else iterator.next() }
return mergedIndex to newList
} 题库建模为许多(问题和唯一正确答案,以及一些混淆答案)
编号直接 listOf("A","B", "C", "D").zipWith 或者 associateTo 之类的
API 结果只有编号就 find 一下出 index 即可对比相等了……感觉还是有点 complicated
不对…… 有一个 from 和一个 back(to) 不就万事大吉了
那一刻整个程序似乎都在我眼前变清晰了,只在某个处理逻辑里注册一下事件监听然后立刻返回,
我看到那些被创建出来的闭包带着一个个 user 参数曾经的值,在适合的时候依照着合适的 UpValue 继续进行余下的工作。
我仿佛看到了 GC 里一个个对象的依赖图,等待着整件事情结束才可以被销毁
我看到那些被创建出来的闭包带着一个个 user 参数曾经的值,在适合的时候依照着合适的 UpValue 继续进行余下的工作。
我仿佛看到了 GC 里一个个对象的依赖图,等待着整件事情结束才可以被销毁
Forwarded from dnaugsuz
So, did you kept backup of your old blog (CN) somewhere?
Forwarded from dnaugsuz
I can't find its link at https://ice1000.org/ :(
Forwarded from Teslarend Zhang
Yes, they're cleaned up. Low quality posts don't deserve a place in my blog
为什么冰封的博客没人去备份啊…… 我早该去备份的
至少,它们还是能让人看懂的,而且我看了其中一篇博文才写的 ParserKt…… 应该说还是有不少参考价值的
至少,它们还是能让人看懂的,而且我看了其中一篇博文才写的 ParserKt…… 应该说还是有不少参考价值的
“想用 Java 重写原 Python+OpenCV+Tesseract 的 extract-subtitles ,并且还要弄一个支持处理视频的 Montage 图处理 Python 脚本”
“是不是在逃避要写的关系式求解器啊……”
“既然这次显然完成不了,不如放 TODO List 里吧。”
“放了又有啥意义啊,都鸽子了,还不如简化一下, Java 重写的那个取其纲要,弄个手写 OpenCV 的 JNI 绑定好了。Montage 处理不用 CV,用 PIL 先做单帧的,也好重新熟悉设计。”
“OpenCV 里 imread, imwrite, imshow 应该怎么重新设计啊, imread 变成 Image 的 constructor overload,imwrite 变成 Image.write ?”
“那样的话也不一定好啊, Image("01.png").write("01.png") 看起来是比 imwrite(imread("01.png"), "01.png") 好,可是 img.write("x.png") 真的能比 imwrite(img, "x.png") 突出重点么?现在一个是构造器一个是实例方法就没问题?那 imshow 呢? 给弄成
“你们知道怎么把 delete operator 绑定给脚本解释器吗? Lua 有 userdata 和 lightuserdata 啊……说错重点了”
…… #Python #Java #CV duangsuse 的日常自我争论
“是不是在逃避要写的关系式求解器啊……”
“既然这次显然完成不了,不如放 TODO List 里吧。”
“放了又有啥意义啊,都鸽子了,还不如简化一下, Java 重写的那个取其纲要,弄个手写 OpenCV 的 JNI 绑定好了。Montage 处理不用 CV,用 PIL 先做单帧的,也好重新熟悉设计。”
“OpenCV 里 imread, imwrite, imshow 应该怎么重新设计啊, imread 变成 Image 的 constructor overload,imwrite 变成 Image.write ?”
“那样的话也不一定好啊, Image("01.png").write("01.png") 看起来是比 imwrite(imread("01.png"), "01.png") 好,可是 img.write("x.png") 真的能比 imwrite(img, "x.png") 突出重点么?现在一个是构造器一个是实例方法就没问题?那 imshow 呢? 给弄成
Window.show 还是 Image.show(String title) 呢?”“你们知道怎么把 delete operator 绑定给脚本解释器吗? Lua 有 userdata 和 lightuserdata 啊……说错重点了”
…… #Python #Java #CV duangsuse 的日常自我争论
duangsuse::Echo
#China #Low #weibo
https://github.com/FirefoxBar/HeaderEditor/blob/master/src/background.js HeaderEditor 的 response body 修改 #Learn #JavaScript
解码用到了新的 ArrayBuffer / TypedArray API
传统的 Message 化控制流扩展
WebExtensions ContextMenus API
常见的 BrowserAction
还有许多不能直接发上来了,只有简化版,待会还有一个 time limited cache,看看。
解码用到了新的 ArrayBuffer / TypedArray API
browser.runtime.onMessage.addListener(function(request, sender, sendResponse) 传统的 Message 化控制流扩展
if (browser.contextMenus != undefined)
browser.contextMenus.onClicked.addListener((info, tab) => { WebExtensions ContextMenus API
browser.browserAction.setIcon({ path: "" }) 常见的 BrowserAction
_textEncode(encoding, text) {
let encoder = this._textEncoder.get(encoding); //cache
if (!encoder) {
// UTF-8使用原生API,性能更好
if (encoding === "UTF-8" && window.TextEncoder) {
encoder = new window.TextEncoder();
} else {
encoder = new TextEncoder(encoding, { NONSTANDARD_allowLegacyEncoding: true });
}
this._textEncoder.set(encoding, encoder);
}
// 防止解码失败导致整体错误
try {
return encoder.encode(text);
} catch (e) {
console.log(e);
return new Uint8Array();
}
} 还有许多不能直接发上来了,只有简化版,待会还有一个 time limited cache,看看。
GitHub
FirefoxBar/HeaderEditor
Manage browser's requests, include modify the request headers and response headers, redirect requests, cancel requests - FirefoxBar/HeaderEditor