“叫你们给境外势力递刀子” “中国人没那么重视隐私,愿意用隐私获取便利” “腾讯是知名企业,可以信赖的,你们凭什么造谣抹黑污蔑它?” #China 🌚
duangsuse::Echo
其实可以对屏幕整体进行缓冲,或者堆积像素更新,关键是可以做到预先渲染吧(虽然好像 buffering 也是,但没有效果)🤔 但是 stdout 的速度就不知道了 其实如果不 sleep 是可以达到更高刷新速度不会卡顿的,但是只要一停下就容易部分撕裂,不知道为什么
我写了一个拿无损视频存下终端色号的…… 估计虽然修改版性能有改善,还是要把整帧 buffer 下来才不会抹布…… 要考虑是不是做一个 buffer , chunked 化 stdout 呢
https://stackoverflow.com/questions/15728939/lossless-compression-for-video-in-opencv
https://docs.opencv.org/4.5.0/dd/d9e/classcv_1_1VideoWriter.html#ad59c61d8881ba2b2da22cff5487465b5
还有这个 at(i,j) 的 operator= 及性能比较的 https://learnopencv.com/parallel-pixel-access-in-opencv-using-foreach/
https://www.pyimagesearch.com/2017/08/28/fast-optimized-for-pixel-loops-with-opencv-and-python/
https://stackoverflow.com/questions/9841900/whats-the-fastest-way-to-iterate-over-a-cvmat-in-python-using-opencv 这个“入门教程”(迫真...感觉讨论的人少)
https://stackoverflow.com/questions/15728939/lossless-compression-for-video-in-opencv
https://docs.opencv.org/4.5.0/dd/d9e/classcv_1_1VideoWriter.html#ad59c61d8881ba2b2da22cff5487465b5
还有这个 at(i,j) 的 operator= 及性能比较的 https://learnopencv.com/parallel-pixel-access-in-opencv-using-foreach/
https://www.pyimagesearch.com/2017/08/28/fast-optimized-for-pixel-loops-with-opencv-and-python/
https://stackoverflow.com/questions/9841900/whats-the-fastest-way-to-iterate-over-a-cvmat-in-python-using-opencv 这个“入门教程”(迫真...感觉讨论的人少)
Stack Overflow
Lossless compression for video in opencv
I am working on a video processing project that involves some sort of encryption using simple XOR operation of a given frame from camera with a key image and finally store the video file.
And for
And for
duangsuse::Echo
我写了一个拿无损视频存下终端色号的…… 估计虽然修改版性能有改善,还是要把整帧 buffer 下来才不会抹布…… 要考虑是不是做一个 buffer , chunked 化 stdout 呢 https://stackoverflow.com/questions/15728939/lossless-compression-for-video-in-opencv https://docs.opencv.org/4.5.0/dd/d9e/classcv_1_1VideoWriter.html#ad59c61d8…
不追求优化性能了,也懒得用函数指针替换静态 if 判断了,思量着解决了个返回变量关系搞好的 bug ,最后重构下发了吧
实在熬不下去了吧 🌚 再说有很多事情可做 为什么要烂苹果啊
C++ 和 Java 的 IO stream 都可以有很多 tweak 啊,数据流各种 buf, chunk, cache 的处理也屡见不鲜,都不知道
实在熬不下去了吧 🌚 再说有很多事情可做 为什么要烂苹果啊
C++ 和 Java 的 IO stream 都可以有很多 tweak 啊,数据流各种 buf, chunk, cache 的处理也屡见不鲜,都不知道
setvbuf(); sync_with_stdio(); cout.tie(0); 这些有什么用,但最终还是明白了 termios 怎么写贪吃蛇吧,还是多开坑少硬杠比较健康
duangsuse::Echo
https://gist.github.com/duangsuse/64c9ac7a278da48f4b3de3dafd70e9df 🥳遇到困难,就老熬夜;后来我就提了一个,年轻人早点睡,做到12点就不做了睡大觉,长大了有福报。
🌚简单说一下技术细节吧。
这次新增两个py脚本,一个是对 mvn.py 继续缩行的复用性测试,一个是 C++ 版更新(支持 mech=0 ,1,2 变量) 后能播放其录制无损动画的脚本
C++ 这次修复了一个 unstop=vid.read(/*to*/frame) 生命周期关系 使用旧值的 bug(导致视频结束时出错)
性能方面是没什么好说的(我都懒得优化,它毕竟是 C++🌝
mech0 是既有的直接生成 ANSI 控制台转义/换行符序列
1则是带录制到文件效果(编码器参数 FOURCC)的 goto-line 无换行符序列, 2 可以回放生成的 cache.avi (render窗 p键敲字可设置色码偏移)
Java 早就有 b,p,s,sr 四种 MECH
buffered 是用 framebuffer 每帧部分生成色值(渲染)并刷新屏幕,这个很重要,性能往往是最好的(C++: 🌚就是霸道)
posited 就是全屏重绘的 buffered
seq 是用换行符到, seqrst 是用 [y H 转义跳至行的,性能好一点
这次新增两个py脚本,一个是对 mvn.py 继续缩行的复用性测试,一个是 C++ 版更新(支持 mech=0 ,1,2 变量) 后能播放其录制无损动画的脚本
C++ 这次修复了一个 unstop=vid.read(/*to*/frame) 生命周期关系 使用旧值的 bug(导致视频结束时出错)
性能方面是没什么好说的(我都懒得优化,它毕竟是 C++🌝
mech0 是既有的直接生成 ANSI 控制台转义/换行符序列
1则是带录制到文件效果(编码器参数 FOURCC)的 goto-line 无换行符序列, 2 可以回放生成的 cache.avi (render窗 p键敲字可设置色码偏移)
Java 早就有 b,p,s,sr 四种 MECH
buffered 是用 framebuffer 每帧部分生成色值(渲染)并刷新屏幕,这个很重要,性能往往是最好的(C++: 🌚就是霸道)
posited 就是全屏重绘的 buffered
seq 是用换行符到, seqrst 是用 [y H 转义跳至行的,性能好一点
Forwarded from mivik::channels::tech
*Mivik 发觉自己完全不会出题:瞎想两道题一道题不会
毕生出题水平巅峰:
https://www.luogu.com.cn/problem/P7121 | 根据 mt19937 随机数引擎初始化后给出的 N 个随机数反推初始化种子
https://www.luogu.com.cn/problem/U135806 | 求字符串所有子串的本质不同子串个数之和
https://www.luogu.com.cn/problem/P1316 | 一个长度为 n,字符集为 m 的随机字符串的期望本质不同子串个数
毕生出题水平巅峰:
https://www.luogu.com.cn/problem/P7121 | 根据 mt19937 随机数引擎初始化后给出的 N 个随机数反推初始化种子
https://www.luogu.com.cn/problem/U135806 | 求字符串所有子串的本质不同子串个数之和
https://www.luogu.com.cn/problem/P1316 | 一个长度为 n,字符集为 m 的随机字符串的期望本质不同子串个数
https://i.redd.it/ttltg0p0jnb61.jpg #Security IncaseFormat 写出 bug (DAY_MS 过大) 导致的设计发作日期拖延问题
https://segmentfault.com/a/1190000012641345 #Java #DontKnow #Stream
其实 ParserKt 里出现过的 Reducer 在 Java stream 里叫 Consumer, 动词都一样
这是个 Java8
简单说下, builder() 出一个 Consumer 然后会被拿去 sequential().forEach()
其中 m1.entries.reduce(new Map 的是 ... 啊不对,
这实际相当于
其中 queues:List<BlockingQueue<T>>
m1=forks as Map<Object, Function<Stream<T>, ?>>
waitOperationTo 把 StreamSupport.stream(newSpliterator(addQueue()) ) 在 CompletableFuture.supplyAsync 里 apply 给 op
它返回
其实 ParserKt 里出现过的 Reducer 在 Java stream 里叫 Consumer, 动词都一样
这是个 Java8
StreamForker 实现,可以流一遍出多个结果,实质上和我的版本功能一致简单说下, builder() 出一个 Consumer 然后会被拿去 sequential().forEach()
其中 m1.entries.reduce(new Map 的是 ... 啊不对,
reduce(initial, op, op_finish={ m1.putAll(m2); m1 }) 这实际相当于
forEach { (k,v) -> m1[k]=waitOperationTo(queues, v) } 其中 queues:List<BlockingQueue<T>>
m1=forks as Map<Object, Function<Stream<T>, ?>>
waitOperationTo 把 StreamSupport.stream(newSpliterator(addQueue()) ) 在 CompletableFuture.supplyAsync 里 apply 给 op
它返回
ForkingStreamConsumer(queues,actions=m1) , 这个里面定义一个 EndOf S(tream) 对象是“帮助”被 queue 的子 stream 鉴别的, finish() 时使用accept() = queues.forEach(q -> q.add(item));
get(i) = ((Future<R>) actions[i]).get();Segmentfault
java - Java8流的复制_个人文章
此处重写了tryAdvance接口,只是简单的从BlockingQueue中取出数据,执行action。业务逻辑中复制流是为了做什么事情,action就是这件事情。ForkingStreamConsumer.END_OF_STREAM是Queue中数据结束的标示
Forwarded from duangsuse::Echo (duangsuse)
fold.kt
1.1 KB
Forwarded from dnaugsuz
Reducer 这个设计是我之前写那啥的时候搞出来的,有一段时间了但设计没变
想必工程界也有框架有类似的功能吧,但是语言自带的库一般都写得很垃圾,不能过一遍生成多个值……
想必工程界也有框架有类似的功能吧,但是语言自带的库一般都写得很垃圾,不能过一遍生成多个值……
GitHub
ParserKt/ParserKt
Naive one-pass recursive descent, scannerless parser framework for Kotlin - ParserKt/ParserKt
Forwarded from PollutedHeck
看了下 Java8 实战,附录有提到用
有兴趣可以自己去看看,相当于一个
StreamForker 并行用一个流出多个结果有兴趣可以自己去看看,相当于一个
fork 的操作
duangsuse::Echo
https://segmentfault.com/a/1190000012641345 #Java #DontKnow #Stream 其实 ParserKt 里出现过的 Reducer 在 Java stream 里叫 Consumer, 动词都一样 这是个 Java8 StreamForker 实现,可以流一遍出多个结果,实质上和我的版本功能一致 简单说下, builder() 出一个 Consumer 然后会被拿去 sequential().forEach() 其中 m1.entries.reduce(new…
This media is not supported in your browser
VIEW IN TELEGRAM
看了以后我算是了解了下 Java 的流,和 Kotlin 的 Iterable/Collection operators ext funs 完全不是一个概念,这个流是 queue,async 的
但是上面实现的人明显不重视简洁性(甚至在
我感觉不是很优雅。(M<V>=Map<Object,V>) 理论上 forks: M<Function<Stream<T>, ?>>不能说难看,应该说是错的,完全滥用了流窗口大小 (不对,本身没有窗口,应该说传参方式太奇怪了
forks: M<String, Consumer<T>> 才算正常,或者说这根本就应该实现为组合些许 Consumer 的 Consumer 才对
在 build() 里它把函数们默认参
get(i)=actions[i].await() ?
实际上就是
🌚?? 这么麻烦
但是上面实现的人明显不重视简洁性(甚至在
map.assignEach {v->op(a,v)} 时有拽技巧的嫌疑)我感觉不是很优雅。(M<V>=Map<Object,V>) 理论上 forks: M<Function<Stream<T>, ?>>
forks: M<String, Consumer<T>> 才算正常,或者说这根本就应该实现为组合些许 Consumer 的 Consumer 才对
在 build() 里它把函数们默认参
()->op.apply(queueStream) 再套了一层 future (supplyAsync) ,然后再在 consumer 里 apply(x) = queues.forEach { it.add(x) } ?get(i)=actions[i].await() ?
实际上就是
workers: M<Pair<Queue<T>, /*supplyAsync(op.bind(queueStream))*/Future<R>>> 🌚?? 这么麻烦
Forwarded from Epics of Anti-Censorship
Telegraph
也论腾讯拿你的历史记录做了点啥
拿到历史记录之后干了什么?应该是读取了淘宝、天猫和京东的搜索记录,并且通过统一接口上传了特定的搜索关键词吧。 根据有关灵媒的说法,内部算法具体 URL 检查步骤如下: 确保 URL 是 UTF-16LE 编码的宽字符串 把整条 URL 转换成大写 寻找长度为 size 的,MD5(4个整数)哈希为 A B C D的子字符串。 MD5 是一种将任意长度内容转换为四个整数的单向函数。由于它找的是一小段字符串的 MD5,所以我们没法恢复出它想要找的真正原文是什么。 总共有四对这样的 (size, A, B, C…
Forwarded from dnaugsuz
https://t.me/dsuse/15727
总结了下,最后得出三行:
queues 也可以不放在
原版的其它函数:
Forker 类的 fork() 和 build() 感觉不至于用设计模式、命名失败,不作评。
Forker 可以用于归纳流至结果(如 1,2,3 => 6),但是默认带 async ,而且你的
看了我真的觉得一些 JavaEE 者必须学习一个,净搞些花里胡哨的,功能都没做好。
总结了下,最后得出三行:
workers: Map<Object, Pair<Queue<T>, Future<R>>> = forks.entries.associate { (k,op) -> val q=BlockingQueue(); k to (q to Complet_Future.supplyAsync(op.bind(SSupport.stream(BQSpilterator(q)) ))) }
apply(x) = workers.forEach { it.first.add(x) }
get(k) = workers[k].second.get()/*await*/ queues 也可以不放在
Pair.first ,而独立成 List 或 Set 。原版的其它函数:
finish() = apply((T)(Object)END_OF_STREAM) //unchecked cast
getResults() = sequential().forEach { accept(it) }.let { finish(); this }Forker 类的 fork() 和 build() 感觉不至于用设计模式、命名失败,不作评。
Forker 可以用于归纳流至结果(如 1,2,3 => 6),但是默认带 async ,而且你的
op: Function<Stream<T>,?> 必须处理一个 (Object)END_OF_STREAM ,返回类型无泛型参数,需强转看了我真的觉得一些 JavaEE 者必须学习一个,净搞些花里胡哨的,功能都没做好。
Telegram
duangsuse::Echo
https://segmentfault.com/a/1190000012641345 #Java #DontKnow #Stream
其实 ParserKt 里出现过的 Reducer 在 Java stream 里叫 Consumer, 动词都一样
这是个 Java8 StreamForker 实现,可以流一遍出多个结果,实质上和我的版本功能一致
简单说下, builder() 出一个 Consumer 然后会被拿去 sequential().forEach()
其中 m1.entries.reduce(new…
其实 ParserKt 里出现过的 Reducer 在 Java stream 里叫 Consumer, 动词都一样
这是个 Java8 StreamForker 实现,可以流一遍出多个结果,实质上和我的版本功能一致
简单说下, builder() 出一个 Consumer 然后会被拿去 sequential().forEach()
其中 m1.entries.reduce(new…