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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
不愧是大公司联合浙大高校出品!居然做了这么多图表,那群个人维护的都要被逼死了... emmm....
Qt 的 datavisual 模块也没有这么多组件,这哪里还是项目,分明是大型技术产品
#Algorithm https://github.com/aappleby/smhasher/
Hash 算法碰撞测试套件

== 不知道什么是 Hash 算法?

Hash 算法一般把某种数据『比如,一群二进制位,或者一群字节』映射到(或者根据...而生成)更短的数据(比如,把字符串映射到 32 位无符号整形)

基于 Hash 算法,我们可以实现 HashMap — 这是基本数据结构 List, Map, Set 三大里的一种,在即使是应用编程领域的重要性不言而喻(当然对一些计算机图形学和数学之类的可能 hashCode 用处少一些)。

你可以这么理解

hash("a") => 0xa8908f4ff
hash(1) => 0xfda23402
hash("b") => 0x5afd6a37

这样,如果要对比两个字符串,就不必比较所有字符 — 可以只比较散列值

衡量一个 hash 算法优劣的标准是:碰撞的概率有多大?
好的 hash 算法让输入均衡分配在目标散列空间里,而坏的 hash 算法会让散列到处冲突(不同的输入得到相同的函数值)

Kotlin 里面,对象是这么定义的:

package kotlin

open class Any {
open operator fun equals(other: Any?): Boolean
open fun toString(): String
open fun hashCode(): Int
}

虽然这种设计也被一些观点认为是无必要的,但 hashCode 的重要性这里可见一斑
这啥数据都有了... 不只是浮点? 还有网状图
树状图(就是数据结构里的树, tree. 有向无环图的一种)可以被展示成这样?
Image to Bar3D... 😵???
#CG 真好看,某些大型平台比如 OMP、AVX、SSE、MMX、OpenGL、CUDA 什么的必须学学了... 🤔

啥时候学某学长写个 SSE 优化的 Java CriticalNative 矩阵处理呢?

啥?居然是学姐?这么说我开始还记得是对的? 🌚
duangsuse::Echo
https://github.com/rdp/ruby_gnuplot 使用这个画 X axis: 时间点 Y axis: 消息条数
#Coolapk #stat 顺便推荐隔壁老酷安统计的(两年前了),unnamed 大佬好像把自己的统计删了... 🤔

不过我是拿 Ruby 内建的列表处理方法算了自己频道的小数据,他是用 SQL 建模查询的(
可以画出 plot
笑死我了 🤣 #Ruby #Haha
duangsuse::Echo
#Ruby 弄了半天我才知道 Ruby 里 Enumerator 还可以 with_index... 😂 还可以 map(Enumerator).with_index { |a, i| }...
require 'gnuplot'

xs = []; ys = []

_dataset = r.map { |it| it['published'] }
ps = _dataset.sort_by { |d| d.day }.reverse.each { |k| xs << k.day; ys << _dataset.count { |it| it.day == k.day } }

Gnuplot.open do |p|
Gnuplot::Plot.new(p) do |plot|

plot.title "duangsuse::Echo message publish time (all #{ys.size}, day from #{xs.min} to #{xs.max})"
plot.xlabel "day (1-31)"
plot.ylabel "messages count"

plot.data << Gnuplot::DataSet.new([xs, ys]) do |ds|
ds.with = "points"
ds.notitle
end
end
end

然后就可以画出类似下面的统计折线图: 🤔 #Ruby #Gnu #stat #Learn

需要注意的是,gnuplot 比较底层和原始,它不会自动帮你处理好数据集合排序(如果需要的话,比如这里就需要)
弄不好会生成瞎* 🐔 折线图,会包含『反折』的线条角度...

Ruby 的 gnuplot Gem 很简单,之需了解 DataSet 和 Plot、GnuPlot 程序命令行接口的抽象即可

Plot 是图座标系的抽象,包含 title(图表名)、xlabelylabel,也可以设置初始 xrange,它包含的折线们就是 data 数组

DataSet 就是要往 Plot 上画的点集合,每个新画上去的点都有一个 x value 和 y value(可以作为一个 xvalue, yvalue 数组传入 new),并且如果要连线就会和上一个点连接。
DataSet 可以指定是 with 'lines' 'points' 还是 'linespoints'
可以指定 linewidthtitle(这条折线的 title)也可以 notitle
然后就是熬夜情况报告(跑路
telegramscanner_with_rb.zip
186.9 KB
好了,那么这周这个工程就这些。( 😃
🤔 所以,我们可以用 echarts 来完成更好的可视化需求(
依然是折线图,还是 187 个数据,我们看看使用 echarts 怎么样,待会发 html.
差点忘了发 #share 结果图,gnuplot 完成度比较... 呃,或者说 GUI 功能有点限制,不好用,只能导出成这样,待会会有好的。
days.pdf
8.5 KB
hours.pdf
8.5 KB
published_day.svg
130.5 KB