duangsuse::Echo
715 subscribers
4.24K photos
127 videos
583 files
6.46K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
#parsing #Python #regex #dontknow 感觉有一定价值,但一般 Kotlin,Py,JS 里都有 raw string 能解决转义符冲突
https://t.me/py_zh_real/13697
Forwarded from eW91dHUuYmUvZFF3NHc5V2dYY1EK
\.换成[.]可读性更高
#tech #ali #windows #meme #zhihu shiro:
前有古人电话线刻Win98
后有阿里云运维手打驱动

FENGberd #:
这个么 🌚
https://www.zhihu.com/question/20034686/answer/14248182
Forwarded from Manuel
Forwarded from dnaugsuz
既然楼上把自己立场和建议都说明白了,我也说下我的:😂

有水平的人多不代表你能从他们那学的多
这也要看群内博客比率和实操代码讨论频率的吧,我在别群听到有人说这就是“娱乐群”(当然不娱乐裙最后往往都死了)

我推荐几个博客你看看吧(离产业近的先,但不代表后面的就不能追求):
coolshell.cn
ruanyifeng.com
williamlong.info 月光博客
https://roriri.one/page/3
mouto.org, diygod.moe, i-meto.com
iovxw.net
ifxor.com
https://xuanxuanblingbling.github.io
mivik.gitee.io
xecades.xyz 前端不妨碍大佬
编程随想也挺好,但你要自己搜
搜索引擎推荐 duck.com 或 Google
语言入门可以考虑 Rust-lang.orgkotlinlang.org ,中文社区和文档教程都齐全。
#ce #cplusplus #LLVM https://github.com/Mivik/rin/blob/main/blueprint.rin

Mivik 大佬又开了新坑……(突然发现好像自己并不是要学编译原理一样了😢) 有点像 Rust ,目前
编程风格和 kamet 差不多,手写分词/解析,不过更 C++ 化还用了atomics(jit.cpp),ast 和 gc 什么的没看,估计是智能指针

就语言设计看好像类型推导的少一些,支持 namespace,这个语言可能比 kamet 更正式

估计 mivik 大佬以后要走上自写语言打 OI 的不归路了(
duangsuse::Echo
image_2021-01-15_01-12-25.png
今天还是继续写这个……
Forwarded from RWTG9Y4's STDOUT
最近看到不少地方在讨论 incaseformat
就是个写出 Bug 的古董蠕虫而已... 没必要传的神乎其神
很多杀软都可以搞定,比如火绒 🤔
而且格盘并没有做数据覆写,所以是有数据恢复的可能性的,不像某些弱智自媒体说的一样不能恢复...

强烈反对照着某些弱智视频给的 “解决方案” 去操作,如果真的怀疑自己中毒了建议安装正规杀软进行查杀
#java #cli #linux 嗯我也去拿 C++ OpenCV 写一个
Forwarded from See you at @fishing_daily ! | (Archived) YuutaW 的版聊频道 (台长)
Media is too big
VIEW IN TELEGRAM
完成了!

使用纯 Java 实现(视频解码和音频不是自己写的)
视频由于性能原因进行了压缩
视频由于性能原因会稍有一秒左右落后
音频是程序放的,不是后期加的
手持手机拍摄,质量不佳见谅
别骂了,我知道这很简单。

源码 https://gist.github.com/Trumeet/fd4e93d69d78dc4ac14d5cac42dfff7e
duangsuse::Echo
#Cplusplus #CV 🤔 讲真,我真的不喜欢 OpenCV 的动态属性,它把本来可以轻易自动补齐的东西变成了还要查会文档、本来可以更强类型的东西做成了一堆 int 不仅使用动态属性,还不对常见 prop (比如 fps, position) 做些辅助属性…… In [1]: from cv2 import CAP_PROP_POS_MSEC CAP_PROP_POS_AVI_RATIO CAP_PROP_POS_FRAMES CAP_PROP_POS_MSEC OpenCV…
之前记下的 API 都是什么情况…… 要完成这些,我必须得到按 行/字 迭代每帧像素的方法
https://docs.opencv.org/4.5.0/d8/dfe/classcv_1_1VideoCapture.html 找到官方文档了(话说一般 CV 都是 #Python 写应用……
https://docs.opencv.org/4.5.0/d3/d63/classcv_1_1Mat.html 还有这个,单帧图像接口

看了半天找到 opencv2/videoio.hpp, highgui/highgui.hpp 和 imread/imwrite, empty, cvNamedWindow,waitKey, CV_WINDOW_AUTOSIZE, imshow, VideoCapture, read, operator>>, Mat ,channels, at, Scalar,uchar,Vec3b,val[] 这样的符号 #cplusplus #api #doc 🤔
Mat img(/*.rows*/1920, /*.cols*/1080, CV_8UC3);
typedef cv::Point3_<uint8_t> Pixel;
for (int i=0; i<img.rows; i++) { // raw access
Pixel *p = image.ptr<Pixel>(i, 0), *p1 = p + image.cols;
for (; p!=p1; p++) { *p.x = 255; }
}
for (Pixel &p : cv::Mat_<Pixel>(img)) { p.x = 255; } // mat iter
img.forEach<Pixel>([](Pixel &pixel, const int* position) { p.x = 255; }); // parallel forEach
//C++11 lambda, old:
struct Operator { operator()/*^above*/ }
好了,找到了 Video 的 nextImage 和 Image 的 n[row/col], pixelAt 操作我就可以写了……

相关链接:
[Linux Terminal has the capability of displaying 8-bit colour, so why not play something on it?](https://gist.github.com/Trumeet/fd4e93d69d78dc4ac14d5cac42dfff7e)
[OpenCV - Colored Images to GrayScale - Tutorialspoint](https://www.tutorialspoint.com/opencv/opencv_colored_images_to_grayscale.htm)
[OpenCV: cv::VideoCapture Class Reference](https://docs.opencv.org/4.5.0/d8/dfe/classcv_1_1VideoCapture.html)
[Tutorial 6 - Assessing the pixel values of an image OpenCv C++ | ProgTpoint](https://progtpoint.blogspot.com/2017/02/tutorial-6-assessing-pixel-values-of.html)
[duangsuse-valid-projects/Essay-DIP-BMP-SIMD-Operation: C11 BMP Image Reading / Writing, SIMD using GCC xmminstric.h operations like AND / XOR / Dense](https://github.com/duangsuse-valid-projects/Essay-DIP-BMP-SIMD-Operation#my-machine)
[duangsuse-valid-projects/Essay-CSharp-DIP.Performance.Parallel: 🐔 versus 👨🏻‍🎓: WHO is faster? Is CSharp &quot;slow&quot;?](https://github.com/duangsuse-valid-projects/Essay-CSharp-DIP.Performance.Parallel/)
asciiv.cpp
2.1 KB
#cplusplus #code #linux #cli #cv #cg 支持自动缩放(cv::resize),不过看以前写的自动缩小也简单,算下 1 pixel 代表原img 的 pix step ,average 就可以了 (就这我居然还开了个非gist项目...)
Screenshot_20210116_153204.png
283.5 KB
./a.out '[file]'
Geo: [379 x 104]
[ INFO:0] VIDEOIO: Enabled backends(6, sorted by priority): GSTREAMER(1000); V4L2(990); OPENNI(980); CV_IMAGES(970); CV_MJPEG(960); FIREWIRE(950)
[ INFO:0] OpenCV | GStreamer: /home/DuangSUSE/下载/Telegram Desktop/video_2021-01-16_14-23-05.mp4
[ INFO:0] OpenCV | GStreamer: mode - FILE
[ WARN:0] OpenCV | GStreamer warning: unable to query duration of stream
[ WARN:0] OpenCV | GStreamer warning: Cannot query video position: status=1, value=0, duration=-1
mvn.py
1.1 KB
#Python #tools #cli #code #Java #Maven from lxml import builder, etree
def gavTo(e, g,a,v): [e.append(builder.E(t, s)) for t,s in {"groupId":g, "artifactId":a, "version":v}]
root = builder.E("project", builder.E("modelVersion", "4.0.0"))
root.append(builder.E("build", listE("plugin", gavTo, [("org.apache.maven.plugins", "maven-compiler-plugin", "3.1")] ) ))
root.append(listE("dependency", gavTo, [f"org.jcodec:{s}:0.2.3" for s in "jcodec", "jcodec-javase"]))
gavTo(root, "trumeet","asciiart","1.0-SNAPSHOT")
print(etree.tostring(root))
...https://paste.ubuntu.com/p/K29vXcjY87/
开发过程中处理 org.jcodec:-,--javase:0.2.3 这种转换时我咧嘴了——在 gavTo 发现要展开简写时,listE 无法提供重新 add 的方法,因为它是面向 ops.forEach { it(data) } 的映射!
为了解决这个问题,我尝试用函数式 cps (编程风格,就是不 return 而带 callback)结果发现很难提供——首先 callsite 也必须提供 [op() for ...] 的上下文,Py 里这个改动是侵入式的,不能隐式传参,其次那必须要 def 里另起一行
后来提出先 gavSplitflatten (Py 不能 flatMap 但有对 map(f,xs) 参数的 starmap... 兼容不到我这面),包括结构的类型都很完美。