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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
duangsuse::Echo
#statement 《如何成为优秀的编程者》 试想你「最开始」接触编程时是为了软件设计?是为了mod闭源的程序? 编程都有目的,但忽视代码的结构 就会失去发展的可能。 代码怎样对大家都是一样的,但当你慢慢入行,必须通过更多的工具与语言,重新认识「编程」二字 入门时,要么是照着示例分析作用、拆拼,要么是强记空泛的体系理论和单项;其实这些不完全适合「编程」 理论需和实例配合着用,实例若缺乏更大视角与归类,也很难将功能点建立联系 「编程」是从脱离编程语言开始的,精炼自己的语言来取代C,Java 函数的语义…
“我记得有听好友吐槽过教科书的不伦不类。它们既想激发学生对学科的兴趣,又想保持自身的绝对严谨,其结果就是往往写了很多复杂的公式和推理,却并没有带来什么实际意义,甚至都没能告诉学生这些理论知识能用来干什么。

我很小很小的时候,所有人都在学乐器学书画;我读初中了,所有人都在学机器人;我上大学了,大人们疯狂往计算机里挤,小朋友们也开始学少儿 Python 了。

……比常人多懂一些的人应该做的,不是摆架子摆身段昭告天下这门学科有多科学、多严谨、多复杂,学习它能带来多少好处,能帮助人在什么竞争中又出人头地一分。恰恰相反,是要让大部分人感受到这门学科有多诱人”

(大意)当我花好几个小时首次编译出自己的小系统,随便抓起个 U盘写入后成功启动一台小电脑;或者更早点,在sl 命令看见一辆停不下来的火车从屏幕这边开到了屏幕那边时,内心涌起的兴奋和成就感,用多少本 Linux 史书都压不下去。
(后来)面对各样的 bug 而不泄气,花一整个下午,只是为了稳定很简单的特性,不是因为我用的语言有多先进,不是因为我写出来的代码性能有多优异,只是因为我满足了自己或者身边人的某个微不足道的需求。

……我们还要设置门槛,劝退那些稍稍感兴趣的、还在犹豫的人吗?

至少我拒绝。如果我有机会,我会毫不犹疑地扔掉那些初步接触时根本不重要的死板而繁杂的理论。

……每条正确的命令带来的正反馈、命令行带来的强掌控感让人欲罢不能。在学习的过程中必然会碰到很多艰难险阻,而且会发现自己还有太多太多不了解,那都不重要。重要的是,兴趣被调动起来,一切都好说了。

https://blog.rachelt.one/articles/education-interest-linux-and-programming/ #rblog

……借着 ModPE 的机会,我逐渐跟着各种现在看来很稚嫩的教程开始访问 Java Android 的诸多功能,直到我成功绕过游戏 创建了第一个现在看来也很稚嫩的悬浮窗。很稚嫩,但作为刺激已经够了。以此为契机,我开始接触开发。

我还是很怀念第一行代码带给我的最初的感动。那是几乎改变了我整个人生轨迹的力量。……

频道主也基本是从改C#游戏开始,那时foreach都很迷糊,后来用AIDE写了第一个minbase64... 现在我连basenc 系列算法和RSA都有所了解了🌚 但是我觉得只要教学顺序合适,难度是差不多的-只是没必要每个人都会;针对那些所见即所得的编程,科普是很有必要的 #recommend

站在编程语言爱好者的角度,我觉得他说得很对。 或许靠难度证明自己很好、对研究很有意义,但是呀,好玩的东西当然是不嫌多的。研究也可以是降低理解其它研究的开销,我所理解『编程语言』的职责正是如此
其实元编程和编译原理,说到底就是理解分层次结构、树深先重写、调用栈本质的普通程序,这些都没有超过『语言』能表达的范围
因此,『文科』语感的那一套东西,对这些仍然起效

或许文科是不敌理科的,但这么想的人搞错了一个根本:语言与思想都是人的基础智慧,基础是负责强化应用的,不是用来较高下的🌚
duangsuse::Echo
#plt 回复 @幻の上帝 :原来你认识冰封和LH_Mouse[doge] 显然是做编译器喽, 我也做(kamet-dse),但只会前端。或许你应该试试讲科普,对概念理解得就会更具体。科普的语言简洁、顺序分明最重要,或许能遇到新东西[doge] 我这不就是遇到了吗​ 我对var的理解是 int i=1 这样显而易见的不必多打字,语言规范更多是种导向而非阻碍,如果类型足够含糊(如val x=a[i])大家是会标明的,规范不该太绝对;而且J11好像引入局部量推导了 抽象不该有什么目的,它是为实现目-易读易配置/扩展/移植的用的。…
类型和命名符号本来就不能分先后,硬要说,那有类型就是notype.checked,无类型就是多态的有类型,其实就是思想和汇编谁重要这种问题,公说公有理,我觉得都不如解法途径重要,所以我不讲理论的

你不觉得 C 的 int i,*p 类型记法,以及更难看的函数指针某种意义上是没有 __auto_type 导致的,初学者#define往往引起问题

%和<N 确实不该算一类,只是边界情况一样,Lua这样我也是很醉的,i=(0..<N)或(1..N) 其实不影响 N-1 这些修改的(若i!=N) ,考虑到它的table=ary|hashbucket 类JS混淆数组表,我觉得从1数反倒合理了-Lua只是为 a[i]这类元组引用的情况优化,反正其前身Sol是面向record的

因为区域取值不是集合类型论能检查的问题(甚至非负性都得看常量折叠),而且对暴露API的lib而言不动态检查无意义;程序和物理纸面是有区别的,程序会扩张和重复,故没法直观地严谨

N=随选数 的确很脏,Linus对这么选硬件地址的提交者严词批评,但oi算法比问题区间重要;不也有树状数组(堆排序,.)和kv状数组(状态机转移表),计算机毕竟是工程学科,AC就牛逼

至于位置,知乎上也没见啥有价值的讨论,C#CLR也是支持1起始,我觉得 iter-累计i=0 这可以说明时序和内存上0起始都更好,但现在有了函数协程,iter的出现也会越来越少,如 first(n) for(x of xs)if(n--)yield x else break
总之严谨点肯定是好,但也要看是为了什么,Lua牺牲严谨是为了石油采矿的统计,excel性质的,那1始数组也就有缘由了
duangsuse::Echo
我觉得这件事说明中国人并不是不知道某组管理的习惯,只是不想关心而已🌚 但是因为暴力强迫拆迁这样的严重事件 还是有不少人站出来,包括一些不太自媒体的写手 可惜呢,墙是系统性的,现在许多社媒都封杀了 如果只是批评其实意义不大,我觉得就事论事吧 这个.. 总之我不知道这是否能算一个风向标, 今天一个威逼签订、老赖拒不履行的合同,能搞得两老一小家破人亡,而法律睁一只眼闭一只眼,甚至有人说“法律上没法给他 公道” “已经很照顾了”,就不担心未来稍微穷苦小众一点的人被某些人“含泪抄家”? 在中国涉及地皮的东西…
#china #net #freedom 《有法可依、有法必依、违法必纠》🌚
https://t.me/vvb2060Channel/569

咱不藏着掖着了,融入被ban公司的外国社区服务就是反华🧐
发表不利于某组的言论就是违法,不管是不是事实

《家大业大》
#kotlin 《progressive》
啊,之前被各路公众号吹爆的 databind 变成 viewbind 了啊,kapt直接变语法树改写ksp了,比我的编程观换代得更快🌚
暴露AST细节乃至sealed dataclass很难吗,哦对javaapt只暴露了定义结构部分的interface processing.Element来允许@Override之类的检查和运行时属性参数值注入

原来databind就是堆@findView.val=o.xxVal 再同步更新吗,因为xml,还真是非常值得起一个名词呢🌚 毕竟html前端都是搞不懂DOM form只会拼字符串的水货

那么viewbind应该是 Angular和Vue 这样的东西了,现在抛弃widget.val的概念,拥抱model/view ,啊不,任意data.val及列表都可以同步到view

我就不明白,根本不是一个世代的东西为啥名字很像
哦对,xml就是一群不懂元编程的人吓唬人的,还什么可配置,所以viewbind反而是回到过去回到最初的做法,那么之前那么多应用都是在干什么?

哦不对啊,View DSL 才是最新的,winform designer.xml 才是最初的,UI都需要设计器,我在说啥啊我🤣

一个小萌新:可为什么 builder.io 就没有专门的设计器呢
因为html是种xml啊
可这不一样啊,你能用webkit设计单页效果,能用View开发View吗,可以啊(Androlua设计器),但是大家都在学“了不起”的“绑定技术”啊🤣
Cancel Culture(下台文化)是美国metoo等维权运动中类似“战狼”的作风,RMS受到了这种抵制 #gnu fsf故事
或许你觉得今天fsf没有影响力,但今天自由软件、开源概念却始终贯穿软件工程,在上个世纪它不是唯一的选择——甚至是小众的,因为针对“PC”基础件被商业和共享软件垄断,此外一些人并不乐意开源研究。

" javascript包管理工具lerna成为了第一个行动者,他们修改了自己的开源协议,把包括微软、亚马逊在内的一堆公司列入了“因协助ICE而禁止使用”范围。

Stallman was right变成了互联网meme,但谁来继承他?下一代年轻人还会对这些有兴趣吗?在今天还有人能忍受他这种简朴而单调的拒绝几乎所有科技公司产品的生活,还有人愿意花几十年创造伟大而重要的产品,同时放弃巨大的商业价值当作自由软件让所有人都能使用吗?

RMS经常得罪人,很多人讨厌他,但是他以接近流浪汉的方式生活了一辈子,把大部分时间都投入到软件开发和社区管理中,早年他以一人之力提供了编辑器,编译器,调试器等一系列用来创造软件的软件。在当时,80年代末90年代初,这些技术都是价值连城的商业机密,几乎每一项都可以撑得起一家上市公司,RMS完成了这些东西,以GPL许可证开放开源给人们自由使用(按:当时gcc对程序员的改革性不假,但说是商业机密有点过了。微软当时也有卖basic解释器,但仅靠这个应该不够价值连城,gcc开发是用的 free as 0price的amsterdam cc ,在之前没有通用的c实现开源)

软件相关行业并不是一直都如今天这么光鲜,早年是被认为nerd之类奇怪的人从事的行业,很多人自述来到这个行业,是因为愿意和机器打交道而不愿意接触人。早年工作环境也远没有今天完备,
没有IDE,没有搜索引擎,
没有问答社区,没有github可以抄代码。写程序是孤独面对手册和屏幕,
每一行指令都要节省,每一字节内存都要计算,调试程序和bug需要极强的耐心、技巧和固定操作的无数次重复,而且
计算机运行速度极慢,只有今天主流cpu速度的几千分之一。这类工作对大部分人是难以忍受的,但是对阿斯伯格综合征人士,这倒是一个难得的友好工作环境。
#net #sysadmin 🧐原版socks吗
Forwarded from Rachel 碎碎念 (IFTTT)
Clash 恐成最佳 socks5 server
— Rachel 呱 (@Rachel030219) April 19, 2021
Forwarded from Al Pt
写得可读性再差也不会提升什么执行效率的(笑
# 噪声消除 # 监听麦克风 # 分别控制不同程序的输出 # (同一程序)输出到多个设备 # 蓝牙 #dalao #linux pipewire-pulse 兼容和gui处理图工具 patchbay
strace -n ls
#reveng 👆
用Lua这种语言的沙箱不就行了.. yaml怎么了?怕是不懂schema ,要知道+* 表达式的解析是没有易写统一的方法的,根本就是伪命题,这样无疑是要所有软件配置不可统一编辑!
" conditional logic or description of transformations or something else. Both the logic of what can be expressed and done and the terms and elements of the domain are specific and custom to the program. This is what you see in firewall rules, whether OpenBSD PF...
https://utcc.utoronto.ca/~cks/space/blog/programming/ConfigurationIsNotGeneric #configuration #programming
Chris's Wiki :: Configuration (and configuration files) is not and cannot be generic
#py #code
attrs是一种定义dataclass,/社区库的方法,它和库D都支持 validate和convert ,为啥说D不好呢? 首先,attrs生成的构造器和手写的一样,也没有 json: 这样不必要的预占位

from attrs import define
from pydantic import BaseModel
#json.dumps(cattr.preconf.json conv unstruct()) / as_dict(aobj)

@define
class AttrsDatetime:
a: datetime = field(validator=instance_of(datetime))

class T(BaseModel):
a:pendulum.DateTime
T('2021-..').a#wrong type!


" it allows automatic de/serialization to formats that don't support datetimes natively
I disagree with this. Un/structuring should be handled independently of the model...

D的序列化不可能同时允许两种格式,如 ISO/UNIX 时间
timeit约慢3倍
from cattr import Converter
D里需要 override the json_encoder field in the model config. 且只支持了json (so no msgpack, bson, yaml, toml...), 甚至没 ujson 外的库

D支持的显然是实用外的东西,比如
PydanticOuter(a={"a": 1}) PydanticOuter(a=PydanticInner(a=1)) 和悲观错误检查
从 ls --color=atwhat 谈到 rust, ioctl/TTY? 与syscall

这个博主的风格我很喜欢,是好的科普博主🌝 #dalao #blog
在二进制/posix段 可能是我见过最厉害的对话文了 #recommend