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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
#gfw #freedom #net #emmm #tech #sysadmin

又暂时使用了 SS(一直 MTProto Proxy 的)上 P 站什么的

[DuangSUSE@duangsuse]~% ssurl -d "ss://xxxxxxxxx/#Mercury" | sslocal -c /dev/stdin
INFO: loading config from /dev/stdin
2018-12-01 15:56:41 INFO loading libcrypto from libcrypto.so.10
2018-12-01 15:56:41 INFO starting local at 127.0.0.1:1080
This media is not supported in your browser
VIEW IN TELEGRAM
duangsuse::Echo
好像是代理服务器有问题,一直超时
#recommended #frontend #website MD 设计的 Pixiv 客户端

https://pixiv.moe/ 开源的噢,因为 Pixiv 主站被中国的 GFW 系统凄惨屏蔽了,可以用这个
Forwarded from duangsuse Throws
#ACG #comic 原作国内某漫画平台上有

快看漫画 :: Topic :: 昨日青空 © 口袋巧克力

全篇免费貌似,不过我觉得其实收费也没什么关系,只要是认为足够好的东西,即使没有实体,也是值得付钱支持的 🐱
Forwarded from duangsuse Throws
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from duangsuse Throws
Forwarded from 神奇的笔记 (神楽坂 立音)
openSuSE Tumbleweed 解决小毛病的办法……

zypper remove packagekit discover

因为这俩家伙会在后台执行 zypper up 但风滚草版本要求 zypper dup
Forwarded from duangsuse Throws
#life #statement #school

中午去了学校,可惜关门了。辗转坐公交去了几个地方又回来了。

路上顺便想了下青春是什么,发现可能比较文艺,简单来说看法

青春就是我们认为(更抽象地)身体机能达到增进顶峰的时期,这时候身体和皮肤往往是最饱满而坚韧的,其他参考植物生长过程。
和心理关系不太大,有些人的看法就是三十岁后没有青春了,所谓心态在一直青春只是酸得要命的自我安慰。以后身体机能下降又要回忆青春了…

用韩寒的话就是(直白地):
青春就是年轻的人发春

不过啊,其实反过来看,本身年轻人年少老气又是一回事了,正如现在健康的判定包含社会适应一样,所以心态很重要(

最后就是一个简单的道理,有得必有失。有得到幸运的人并不一定有足够的勇气和智慧失去,即使是在程序猿里面我觉得这也是有足够智慧的一句话 -- 现在一些人喜欢滥用编程技巧,比如我,循环控制结构能解决的在 Ruby 语言里我偏偏要上元编程,好像不用就让别人笑话一样

或许等经历了生离死别才能发现其实失去青春也不那么糟糕,比较其与生命比起来实在是太小了。

当然游戏是公平的,正如你出生有人死亡 -- 把生的位置让给你一样,没人永远 17 岁但永远有人 17 岁

资源有限,当有人需要经历青春的时候,有人也成年离开,才能保持基本稳态 -- 一切系统正常运行要遵循的规律

学会失去是漫长而艰辛的旅途。

不过我相信所有人都有足够的智商学会,需要的只是和自己软磨硬泡的时间而已(

所谓老唔老以及人之老,能够把别人家的老人看成是自己家父家慈以后样子的是最高境界,幼唔幼以及人之幼,能把幼儿们看作是曾经的自己的是最高境界 -- 你可以改变自己曾经的遗憾

当然在扒完谱之前我还是得不断听《昨日青空》这首歌的 btw. 水团 Aqours 的《青空 Jumping Heart》有没有人扒(

想说一下其实原来的剧情和现在改编电影的剧情差别比较大,包括主线也是有区别的,包括不限于各种顺序和因果关系、删减变更(咱一起奔向社会主义和谐)(其实就是搞基 hhh)(从某种意义看上面说的到对,因为宣传片剪辑得没啥 puppy love 相关的只剩下齐屠二人 cp 了…),总的给人感觉就是更青春了(是的,show 画风啊,广电十有八九又是未满 22 岁不让待一起太久,只好多画点齐屠二人二人转卖颜值,不过说实话,我觉得男主有时候是反过来衬托男二的 hhhhh)(e.g. 很多之前 implicit 的东西更多次强调害怕你们看不懂、齐屠二人认识从比较深刻的 <del>深♂入</del>人生观交流(指画乌龟那件事)到比较 trivial 的篮球赛(不过这个倒是比原来的乌龟更受青年男女欢迎,因为看起来更加火爆一些,纸片人+劲爆篮球赛的话妹子们看到可能要尖叫了(<del>这里就体现了对基因的一个选择</del>)),其实这个鸽子一直不是只用来咕咕咕的,它原作里画明了是一种有象征意义的东西,代表自我思想解放(而且相信大家对鸽子这种鸟类一直是持正面态度的))
(比起之前的总结性回忆),不过大体上意思没变,并且是积极向上的。整个主要就是六个字,成长告白分开,简介都看得出来。

btw. 为什么我看一点周边的东西都能谈这么多,是因为我真的没多少时间看电影,所以我看的每一部电影都值得我铭记。我觉得这其实不错,成天看电影太喜剧化了有点为娱乐而娱乐的意思,实在浪费(

(10% 的点子 + 90% 的实施确信
细心打磨可以带来成功
粗糙地追求效率无人看
这就是所谓的工匠精神
真正把自己的作品看作
宝物并做到最好的能力

手机打字累死(

顺便推荐 #music Sinsy.net 有个《复刻回忆》可以听

真的好羡慕这些弄合成器的啊… 哪怕不用机器学习提升质量也好 要是自己也能做出这种应用就好了…
看到那个 Base64 加密的消息(没错,又忍不住熬夜)

本频道我一贯的风格就是深♂入了解 nontrivial 和教(念 "笑")学半(所以很喜欢教别人...)
下面我给大家科普一下啥是 Base64,顺推我以前写的入门 Android 应用 MinBase64,我一直觉得是同类应用里最有创新的一个,也是界面最真正为使用者考虑的一个(真好看)。<del>世界先进</del>

Base64 是 Internet 信息交换里一个 MIME 编码的概念,主要是往各种只支持文字的电子邮件如 SMTP 里放各种裸二进制文件的做法
它可以把二进制转化为可以打印的 ASCII 字符 [A-Za-z0-9+/=] (正则表达式),其中 = 是 padding 填充字符

它根据一个数值到 ASCII 可打印字符(只需 6 位即可储存)的表辅助译码(Radix-64 表)(二进制位长度计算表大小公式是 2ⁿ = r,反过来就是对数 n = log2 (r)

log2(64) = 6

因为三个字节的二进制数字是 24 位 ,又有 64 个可打印字符(log2(64) = 6 个二元状态也即二进制数 24 位)可以供编码转换

三个字节的数据可以编码成四个 ASCII 可打印字符(一个字符 6 位,共 24 二进制位,而三字节 3 * 8 也是 24 位,取他们的最小公倍数)

而序列长度最后不足三字节的则用 '=' 填充
比三的整数倍多一字节填两个 '='
多两字节填一个 '='
e.g.

encode("ABC") = "QUJD"
encode("ABCD") = "QUJDRA=="
encode("ABCDE") = "QUJDRU="

我们把 ASCII 'Hhh' 编码成 Base64 的形式:(方便考虑正好是三字节整数倍数据)

Radix 表: https://en.m.wikipedia.org/wiki/Base64

ASCII 里,大写的 'A' 为 0x41
小写的 'a' 需要加上 0x20 的 margin 偏移量,A-Za-z 依此续数递增类推

H 是 '\u0048'
h 我就不说了

所以 bytes 是 [48, 68, 68]
即 [0b00011000, 0b00100100, 0b00100100 ]
转换技巧汲取以下模式学习


0b00000001 = 1
0b00000010 = 2
0b00000100 = 4
0b00001000 = 8

18 = 0b00010000(=16) + 0b00000010(=2)
= 0b00010000 binaryOr 0b00000010

把二进制数 000110 000010 01000 0100100 作为四个 6 位无符号二进制数来解释,大端高位优先表示原则(我们经常用的),高位自动填 0
转换后是 [0b000110, 0b000010 , 0b010000, 0b100100 ] = [6,2,16,36]
使用 Radix 表编码后是 GCQk
很喜感(逃
好吧,错了,其实是 SGho,原因可能是计算有误,btw. 是没有把十六进制 41 数换算成十进制…
rt. 给你们科普了,其实我说得蛮开心的
Forwarded from 科技圈的日常 (Jimmy Tian)
「我不是针对 Base64,我是说在座的各位,你们都是加密算法」
恶意钓鱼,举报了(大雾

via https://twitter.com/coxxs/status/1069091057046966272?s=21
This media is not supported in your browser
VIEW IN TELEGRAM
科技圈的日常
「我不是针对 Base64,我是说在座的各位,你们都是加密算法」 恶意钓鱼,举报了(大雾 via https://twitter.com/coxxs/status/1069091057046966272?s=21
顺手给可能不知道的大家科普一下我的答案(比较 trivial 的选择连线):
首先顺口告诉你们我只是略微看了下钦蛤大学的 Internet 原理技术教程上面有讲这些就略微看了下,我不是学无线电或者计算机网络的,目前高二还不讲这些

MD5 是 Message Digest 家族的,是一种消息摘要算法(Hash 算法)

Base64 是一种完全的信息 Transform 或者说 Legalize 算法,属于纯编码算法,和 Unicode UTF* 系编码方式差不多,区别在于 Base64 编码函数 E_{base64}(bstm) 输入是字节序列输出是 Radix-64 有效的数值(都是 ASCII 里可打印字符)
而 UTF* 系的 E_{Utf*}(unicharstm) 输入是 Unicode 有效字符流,输出是字节流

AES 是加密算法,当然 DES 系也是,米国发明的不用说。

HMAC( Hash-based Message Authentication Code ) 是认证算法,我是猜的,人品好所以对了

DH(Diffie-Hellman) 是密钥交换算法,排除法选出

不过那是因为我不清楚缩写含义弄得,我知道有 DiffieHellman 系的非对称密钥交换类算法
而且我一直把它归为一种算法的派系使用,比如 RSA 就是 DH 系的
duangsuse::Echo
看到那个 Base64 加密的消息(没错,又忍不住熬夜) 本频道我一贯的风格就是深♂入了解 nontrivial 和教(念 "笑")学半(所以很喜欢教别人...) 下面我给大家科普一下啥是 Base64,顺推我以前写的入门 Android 应用 MinBase64,我一直觉得是同类应用里最有创新的一个,也是界面最真正为使用者考虑的一个(真好看)。<del>世界先进</del> Base64 是 Internet 信息交换里一个 MIME 编码的概念,主要是往各种只支持文字的电子邮件如 SMTP 里放各种裸二进制文件的做法…
懂了么?那么我们再来手动编码一下 ASCII 字符串 "HelloWorld",使用 Kotlin REPL 辅助

$ kotlinc 打开 REPL

= Predicate =
Radix-64 表

1. 获得此字符串的字节形式表示

"HelloWorld".fold(StringBuilder(), { ac , i -> ac.append(i.toInt()).append(",") }).let { it.deleteCharAt(it.lastIndex) }

好耶!是 72,101,108,108,111,87,111,114,108,100

2. 转化为二进制格式,并且知道要补充几个 padding

[72,101,108,108,111,87,111,114,108,100],它的长度 10 再 MOD(%) 3 为 1,就是说少了两个字节才补满,要填充两个 padding =

为了演示方便起见,因为我们已经知道这些数字大端二进制表示高位为 0 了,所以就在前面补充一个 '0' 凑满 8 位(原来的只有 7 位,因为 Java 的 toBinaryString 自动舍弃为 0 的高位)

listOf(72,101,108,108,111,87,111,114,108,100).forEach { print(Integer.toBinaryString(it)) }.run { println() }


坏耶!是 1001000110010111011001101100110111110101111101111111001011011001100100

listOf(72,101,108,108,111,87,111,114,108,100).forEach { print("0b0"); print(Integer.toBinaryString(it)); print(' ') }.run { println() }

OK!是 0b01001000, 0b01100101, 0b01101100, 0b01101100, 0b01101111, 0b01010111, 0b01101111, 0b01110010, 0b01101100, 0b01100100

3. 以六位一个 Int 的方式解释它,我们手工弄算了

01001000011001010110110001101100011011110101011101101111011100100110110001100100

010010 000110 010101 101100 011011 000110 111101 010111 011011 110111 001001 101100 011001 00

我们注意到后面还有一个不满 6 位的可怜的孩子,我们不管它,因为之前已经算过了该填充几个 padding 了
当然,如果多一个字符那个可怜的孩子就少了一个等号填充(11 * 8 % 3 = 1),多两个字符就不需要等号 padding 了,如果多三个字符就正好又是这次的情况
结果是

"010010 000110 010101 101100 011011 000110 111101 010111 011011 110111 001001 101100 011001 00".split(' ').map { Integer.parseInt(it, 2) }
//=> [18, 6, 21, 44, 27, 6, 61, 23, 27, 55, 9, 44, 25, 0]

然后手工拿 Radix-64 表译码,至于怎么译码你们自己动手,首先验证一下 18, 6, 21, 44 是不是 SGVs
Assertion OK
然后译码就可以了,译码完是这个样子

SGVsbG9Xb3JsZA==

Zsh 上打印出来

[DuangSUSE@duangsuse]~% echo SGVsbG9Xb3JsZA== | base64 -d
HelloWorld%

OK, 2 test(s) passed

注*:echo HelloWorld | base64 的结果多了一个 000a LineFeed 换行符
这里的这个没有换行符所以不一样,详情 echo ZAo= | base64 -d
Forwarded from AlPlank (Rime RainSlide)
现在,Telegram 「Apple 端」禁黄,Tumblr 全局禁黄。

那么… 我就突然想起来…

Tumblr 宣布禁黄之前,是不是有不少人还拿 Tumblr 说 Telegram 的不好?

😐
AlPlank
现在,Telegram 「Apple 端」禁黄,Tumblr 全局禁黄。 那么… 我就突然想起来… Tumblr 宣布禁黄之前,是不是有不少人还拿 Tumblr 说 Telegram 的不好? 😐
唉总算是除了我以外有人说话了,
话说,你们是觉得本频道的内容太高大上了不敢说话么?
可我喜欢热闹啊... 😶 所以以后还是多发点什么吧