duangsuse::Echo
412 subscribers
3.85K photos
105 videos
574 files
5.15K links
duangsuse技术相干订阅
这是 @duangsuse 与技术有关的发布频道
duangsuse 的另外有 throws 闲杂频道
@dsuset
转载频道 @dsusep
duangsuse 有coding,github,gitlab帐号和bilibili帐号

极小可能会有批评zf的消息 如有不适可以退出

suse的小站:https://piped.stream
ps 另有别名 popf.rip
ʕ•̀ω•́ʔ✧ 🐶🍎🏠生死🐜
(>ω<)岂因祸福避趋之 一鿕
Download Telegram
#Web #frontend #HTML 欸,这不是抄原来 DIr 的么... 🤔
duangsuse::Echo
在 Ruby 里,要把它解析成 List & Object 的形式,只需要利用 Nokogiri: require 'nokogiri' plain = File.read('test.xml') doc = Nokogiri.parse(plain) root = doc.children[0] def collect_real_tags(xml) i = 1; ret = [] while i < xml.size ret << xml[i] i += 2 end …
可惜没有绘制成图表 plot 好看一些 🤔

r.size #=> 187

一共统计了 187 条消息。

r.sort_by { |it| it['published'] }.first['published']
=> 2019-03-24 11:22:00 +0800

第一条消息是
2019-03-24 11:22
发送的

r.sort_by { |it| it['published'] }.last['published']
=> 2019-04-05 20:06:00 +0800

最后一条消息是
2019-04-05 20:06
发送的


🔗 有 XXX 的消息条数

r.find_all { |it| it['body_type'] == 'HAS_HASHTAGS' }.size
=> 42
#Telegram Hashtag 的消息,一共有 42 条,约有 20% 的消息被打上了标签

r.find_all { |it| it['body_type'] == 'HAS_LINKS' }.size
=> 37
含链接的消息,一共有 37 条,约有 19% 的消息被打上了标签

r.find_all { |it| it['body_type'] == 'HAS_LINKS_AND_HASTAGS' }.size
=> 17
都有的消息有 17 条,占总消息的 9%

众所总周知,这种消息一般是很优秀的消息(跑),值得大家观摩,它们分别是:

r.sort_by { |it| it['debug']['no'] }

我们看到,第一条消息是 2019-03-24 11:22:00 的 AXMLParser 广播

https://t.me/dsuse/9512

它的总编号是 9512, 不过,因为零基数组微妙的差异(解析的时候用了两次零基数组),得加上 1 才可以

puts r.find_all { |it| it['body_type'] == 'HAS_LINKS_AND_HASTAGS' }.map { |m| "https://t.me/dsuse/#{m['debug']['no'] + 9511 +1}" }.sort.join("\n")

::
https://t.me/dsuse/9527
https://t.me/dsuse/9541
https://t.me/dsuse/9576
https://t.me/dsuse/9580
https://t.me/dsuse/9585
...

或者详细一点:
puts r.find_all { |it| it['body_type'] == 'HAS_LINKS_AND_HASTAGS' }.map { |m| "https://t.me/dsuse/#{m['debug']['no'] + 9511 +1}\n#{m['body'][0..50]}...\n" }.sort.join("\n")

https://t.me/dsuse/9527
#Ruby #Project 一个失败的尝试,但是我也了解了二进制 IO 的一些信息

https:/...

https://t.me/dsuse/9541
https://zhuanlan.zhihu.com/p/60171538

#dotNet

...

https://t.me/dsuse/9576
#Mozilla #ES6 #JavaScript #frontend #backend 啊,的确,不...

https://t.me/dsuse/9580
#tech #CS 来科普一打有趣的信息技术相关知识: 🤗

1. Windows 里的 A: B: ...

https://t.me/dsuse/9585
5. 手机和磁卡放在一起,会不会『消磁』?

== 对于磁卡来说,『消磁』是什么?
以磁性介质存储...

https://t.me/dsuse/9586
6. 世界上第一个网站是什么?

惊闻刘国梁荣当乒协主席,深感高兴。虽然我们未曾有过交集,但乒乓球运动...

https://t.me/dsuse/9605
https://github.com/duangsuse/RandomPicture 我必须得感谢自己...

https://t.me/dsuse/9621
我待会把坑填完... #Android #blogPOst

https://blog.yuuta.m...

https://t.me/dsuse/9637
效率.... 🤐

那既然已经花了很多时间就再多花一点(皮)

演示一下这个功能:

[DuangSU...

https://t.me/dsuse/9638
最后,快速了解一下 #Android 系统服务 (https://blog.yuuta.moe/201...

https://t.me/dsuse/9643
https://github.com/LineageOS/android_frameworks_bas...

https://t.me/dsuse/9645
#blog #recommended https://bindog.github.io/

...

https://t.me/dsuse/9654
#CS #fix 下面我来给大家解释一下停机问题和 NP 困难到底是什么,和我这里提到的 NP-har...

https://t.me/dsuse/9663
现在开始讲解方才 @drakeet 的排序问题

5 没有被手动排序过,5 排在 1 前面,4 被手动...

https://t.me/dsuse/9676
#Android 类似的设计详询 Android Input Methods (https://dev...

https://t.me/dsuse/9684
感谢 @haoyet @eGluZl 等热心用户的建议,YuutaW 主要参照 https://www...

https://t.me/dsuse/9689
#通知

我们的MTProxy已经上线,欢迎使用
点击这里设置代理 (https://t.me/pro...
duangsuse::Echo
可惜没有绘制成图表 plot 好看一些 🤔 r.size #=> 187 一共统计了 187 条消息。 r.sort_by { |it| it['published'] }.first['published'] => 2019-03-24 11:22:00 +0800 第一条消息是 2019-03-24 11:22 发送的 r.sort_by { |it| it['published'] }.last['published'] => 2019-04-05 20:06:00 +0800 最后一条消息是…
😃 那么,简而言之,我觉得有价值的信息:

def get_link(h); "https://t.me/dsuse/#{h['debug']['no'] + 9511 + 20}"; end

+ 一共统计了 187 条消息。

2019-03-24 11:22 - 2019-04-05 20:06,一共两个星期的时间里,本频道 @dsuse

+ 有 #Telegram Hashtag 的消息,一共有 42 条,约有 20% 的消息被打上了标签
+ 含链接的消息,一共有 37 条,约有 19% 的消息被打上了标签
+ 链接和 Tag 都有的消息有 17 条,占总消息的 9%

map { |h| [h['body'].size, h] }.sort_by { |it| it.first }.reverse
map { |h| [h['body'].size, h] }.sort_by { |it| it.first }.reverse.first[1]['links'].size

+ 187 条消息里,最长的消息是这条,它有 4475 个字 — 连链接都有 25 条! 🤪
+ 187 条消息里,折行最多的消息是这条,它有 4232 个字和 7 条链接。

sum { |it| it['body'].size } / size
+ duangsuse 的平均字数:359 字 / 消息

sum { |it| it['body'].lines.size } / size
+ duangsuse 的平均行数:11 行 / 消息

find_all { |it| it['header_type'] == 'REPLY' }.size
+ 过去的 187 条消息里,有 70 条都是回复,占总量 37%

find_all { |it| it['header_type'] == 'FORWARDED' }.size
+ 过去的 187 条消息里,有 45 是转发自其他频道或个人的,占总量 24%
当然,这 70 条都是回复本频道消息的。

a.uniq.map { |u| [u, a.count(u)] }.sort_by { |it| it.last }.reverse.to_h.each { |e| puts "#{e.first}: #{e.last}" }
+ 转发者和条数表如下:

IT 那点事 (YuutaW 鱼塔): 10
羽毛的小白板: 10
duangsuse Throws: 6
Rachel 碎碎念 (IFTTT): 5
Rachel 的消息发布站点 (Rachel Miracle.) via @like: 3
YSC 的频道: 2
duangsuse ¯\_(ツ)_/¯ |学渣 | 我爱学习 | ∈ [E²PROM, 范畴论]: 2
Doge: 2
YuutaW 鱼塔: 2
Rachel 碎碎念 (湘江一桥): 2
DogeSpeed广播: 1

😄 @haneko_daily 被转发的次数最多,继续努力!

sort_by { |it| it['hashtags'].size }.reverse
+ 具有最多标签的消息是这条,它有足足 8 条标签!

sort_by { |it| it['links'].size }.reverse.first
+ 具有最多链接的消息是这条,它有 25 条链接!同时也是字数最多的消息!

find_all { |it| it['header_type'] == 'A_PHOTO' }.size
过去 187 条消息里,一共有 29 条广播是单纯的一个照片 🖼
find_all { |it| it['header_type'] == 'A_ALBUM' }.size
过去 187 条消息里,一共有 5 条广播是照片集 📸
find_all { |it| it['header_type'] == 'IS_STICKER' }.size
可爱 🐱 的 duangsuse 在过去 187 条消息里使用了 28 个 sticker 抒发自己的感情,使用的表情这么多:
find_all { |it| it['header_type'] == 'IS_STICKER' }.collect { |it| it['ext'] }.yield_self { |r| r.uniq.map { |u| [u, r.count(u)] }.sort_by { |it| it.last }.reverse.to_h.each { |e| puts "#{e.first}: #{e.last}" } }

😔: 7
😳: 4
😲: 3
😡: 2
😑: 2
🙄: 2
😋: 2
😀: 2
😥: 2
🍹: 1
😐: 1

find_all { |it| it['header_type'] == 'HAS_FILE' }.size
duangsuse 在过去 187 条消息里发了 8 个文件,它们是:
find_all { |it| it['header_type'] == 'HAS_FILE' }.collect { |it| it['ext'] }
["axml.rb", "AndroidManifest.xml", "AndroidManifest.xml", "TextSort.kt", "RandomPicture.kt", "Vibrator.svg", "Vibrator.png", "Vibrator.svg"]

最火的
hashtags 组合:

collect { |it| it['hashtags'] }.yield_self { |r| r.uniq.map { |u| [u, r.count(u)] }.sort_by { |it| it.last }.reverse.to_h.each { |e| puts "#{e.first}: #{e.last}" } }

结果太长,在这里查看

所有 Hashtags:
hs = s.flatten.find_all { |it| it.is_a? Array }.flatten.map { |s| s.tr(" ", "") }
"#" + hs.uniq.join(' #')

#Android #zhihu #KDE #Low #Haha #life #tech #tencent #WeChat #weibo #share #tools #dev #Markups #Telegram #Hack #aop #Huawei #通知 #Freedom #sysadmin #GitHub #travis #CI #Sysadmin #Linux #Coolapk #Web #frontend #HTML #China #school #Microsoft #Life #VisualStudio #-} #OOP #web #geekapk #doge #CS #fix #CSharp #School #blog #recommended #bin #backend #Kotlin #Java #Share #svg #blogPOst #PL #JVM #Moha #code #ALgotithm #DuangsuseSB #GeekApk #SQL #Learn #wiki #Mozilla #ES6 #JavaScript #MoHa #Paper #haha #dotnet #bad #OOP_Delegates #Parallelism #dotNet #Csharp #Windows #performance #Channel #weekly #linux #Ruby #Project

以及他们的消息覆盖个数:
hs.yield_self { |r| r.uniq.map { |u| [u, r.count(u)] }.sort_by { |it| it.last }.reverse.to_h.each { |e| puts "#{e.first}: #{e.last}" } }

太长,这里看

== 非线性查询(当然和算法上那个没有关系啦,就是复杂一点的查询)

// 收集所有单 / 双数索引

ar = []; ar2 = []

i = 0 // 0 2 4 6
while i < self.size; ar << self[i]; i += 2; end
i = 1 // 1 3 5 7
while i < self.size; ar << self[i]; i += 2; end


aa = ar.zip(ar2)

我们将比较相邻两消息之间的关系。

aa.zip(aa.map { |ms| ms.last['published'] - ms.first['published'] }).sort_by { |p| p.last }.reverse

间隔最长的两条消息是这条这条,间隔 44880 秒(12 小时)

b.map { |h| [h.last, h.first.first['body'].size ] }.map { |a| a.last / a.first }.select { |it| not it.nan? and not it.infinite? }.sort.reverse

平均打字速度:7 字 / 秒 🤔

受到解析度(只到分钟)和浮点运算准确度的影响,有很多消息都是在间隔一分钟内发完的,统计结果可能不正确。

好啦,还有什么别的信息,请大家自己来发掘呗( 😝 比如说,我熬夜发过多少消息。
#life #dev duangsuse 落实 10:30 准时睡觉『政策』。 🐱

考虑到健康原因(不让自己的努力白费),每晚 10:30(h:m) 必须立即睡觉

== duangsuse::Echo 参考 #Telegram hashtags

duangsuse::Echo 常年利用 hastags 标记消息所含知识领域,并且,这也会为未来 Echo 频道进行简单准确的数据统计带来可能(不然,我也有其他手段,比如 NLP、统计预测)

以下是新的标签实例(不区分大小写、不能保证消息只含这些标签):

== 消息平台部分
#Telegram #zhihu #Github #so #Coolapk #book #wiki

== 注释部分
#life #China #School #Statement #lib #recommended #low #fix
#project #blog #share #Learn #paper
#dev #tech #art #meetUp #conference
#Moha #Haha
#gnu
#Microsoft #Mozilla #WeChat #QQ #Weibo #Tencent #Baidu #Ali #Qihoo
#tools #code

== 程序设计语言部分
#Kotlin #Java #JavaScript #JavaScript_ES6 #TypeScript
#Rust #Go #Swift #Dart #Crystal
#Ruby #Python #Perl #Tcl #Lua #PHP
#C #D #Cplusplus #CSharp #Objc
#Pascal #Fortran #Delphi #Ada #Basic #VisualBasic
#Scheme #Haskell #Scala #Clojure
#TeX #Graphviz
#Octave #Matlab
#Shell
(有些写出来是为了鼓励我去写,其实不一定真的写过)

== 软件平台部分
#Android #Windows #Win32 #MacOS #Java #Java_JVM #CLR #Qt #GTK #Tk #WxWidgets
#CSS #XML #JSON #KDE #Postgres #dotnet

== 软件技术领域部分

#backend #sysadmin #frontend #sysadmin_net

#OI #CS #IT #Informatics

#stat #ann #ann_dnn #machl
#math #math_linearAlgebra #math_discrete
#se #se_dia #se_ci #se_ee
#comm #net #www #web #http #html #mail #wireless
#circuit #embedded #os #db #db_relAlgebra #SQL
#bin #encoding #encoding_audio #encoding_image #encoding_video #encoding_text
#hpc #parallelism #distributed #simd #gpgpu #crypto
#pl #pl_plt #ce_vee #ce #ce_optimize #fp_monad #fp_proof #fp #oop #oop_arch #sp #parser
#algorithm #struct #lists #maps #sets
#security #security_lowlevel
#signalProc #nlp #phonetic
#cg #cg_dip #cg_3d #cg_2d #cg_lowlevel
#gui #gui_animation #gui_layouts #cli #visualization
改天可以做一个 CoolApk 的 HTML 客户端...
duangsuse 也该去学学前端了 #web #frontend
duangsuse::Echo
具有自主知识产权的 .meto 域名上线 目前还在筹集 (piàn) 资金 (qián),开放了一个 demo 页以便公众进行体验(疯狂狗头 https://tld.i-meto.com/help.html https://t.me/metooooo/1727
#html #frontend duangsuse 想顺便学习一下 HTML/CSS 🤔

<html>
<head>
<meta charset="utf8" />
<title>Title</title>
<link rel="stylesheet" href="main.css" />
<style src=""></style>
</head>
<body>
<div class="container">
<h1>Title 1</h1>
<h1><pre>Code</pre></h1>
<h2 class="green" onclick="document.location=....">» Enter «</h1>
<a style="color: green" href="...">» Enter «</a>
</div>
</body>
</html>

刚才居然连 charset 都忘记指定了...


然后 CSS:

selector {, selector} '{' { rules } '}'

其中使用了 .class CSS 类 selector 和 tagName selector, 以及 nesting selector

Rules 就是 rule 们

key: value ['!' important];

value 可能是 string 或者 enum 或者 array 或者 int 或者 percentage 或者 color 或者 dimen

使用了这些 CSS property:

width: percentage
height: percentage
padding: dimen
margin: dimen

这是盒模型布局基础,padding 和 margin 也可以加 '-' start | end | top | bottom

display: enum

在 body {...} 里取值 table,这是盒模型渲染模式

color: color

然后是 font 调整

font-weight: int
font-size: dimen
font-family: array

font-family 是正序排列可选的 fallback font name array

然后是 align

text-align: enum
vertical-align: enum

对齐

text-decoration: enum
white-space: enum

border

border-radius: dimen
background: drawable


看几个有意义的 rule

pre, code {
border-radius: 15px;
background: rgba(0,0,0, 0.05);
color: #FFFFFFAF;
padding: 15px;
white-space: pre-wrap;
}

.content a { text-decoration: none; }

body { display: table; }
.container { display: table-cell; vertical-align: center; text-align: center; }
.content { display: inline-block; text-align: center; font-size: 18px; }

padding 就是 content 和 border 之间的距离,是 dimen。
🤔 #web #frontend #css uilang.com 虽然挺菜(而且我觉得无意义,直接 EDSL 有何不可

但我突然感觉 CSS 很不错啊,居然只是它就能定义出开关、下拉、收缩栏的动画效果

看到我就想到了『东北语』和『文言文』,基本上都是一类前端应用,感觉是偏创意性的,没有真的结合其领域的哲学
这个人他到底会不会写 JS ,为什么明明不会写还能做那么漂亮的网站 #web #frontend #js

当我看到 split delimiter 和 s+=a 的时候略微头抬起, new InstructionParsing 和 EventHandler(a,b,c)/getEventListener():String 的这种设计就完全上头了,吐血了吐血了……😵

这个人他是不是抄别人的设计模式(而且为什么要抄这种基本无关数据结构变换的模式),连名字都不改,我嘞个去,怎么可能有这种……无法用语言形容我现在的卧槽
#zhihu 已经受到影响了,真是智障 #web #frontend #aop