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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
duangsuse::Echo
#learn #android #code 以下kt代码里 (o: 缩进) 等于 o.apply{} Looper 是按时间点排序的Channel<T>(阻塞add,回调pop) 触发“消息T”为Event(what,a1,a2,obj, when)时这叫send-handle,为函数时叫post-dispatch Handler(main).post{} 实现 (休眠函数值).withContext{} 切换线程 又如 setTimeout 靠 h.postDelayed(ms){} 或监听 sen…
#android #dev 面试题。上条则是简化版的答案 🧐

仅供参考,可能我解释的太抽象了,涉及一些淘汰的远古技术, 不符合标准答案。

- Handler 基础,Looper 怎么和 Thread 绑定,怎样提高 MessageQueue 优先级
- 进程间通讯的方法,对 AIDL 的了解,对 ContentProvider 的了解
- (根据项目) 自定义 View 的方法和注意事项、事件分发、View 复用
- 写过 demo 吗,什么时候会写 demo
- 对 MVVM 的了解,对 Jetpack 的认识,除了 data binding 还知道哪些 Jetpack 的东西
- 对 HTTP 的了解,HTTP 协议是什么
- 对 Kotlin 的了解,如何使用协程,什么是高阶函数、内联函数、扩展函数
- 写一个将数组里所有 0 移动到末尾的算法(简单粗暴选排)
duangsuse::Echo
#statement #PLT 编程造成问题 vs 解答造成编程 现况带来问题 vs 审美带来现况 软件的价值很有限,思想的复杂很空虚;不以自己的价值观拉黑人,是最大的尊重 我们有时难相理解🧐 “那你的 IDE 做的怎么样了,带类型的补全有么,还是笔记本没高亮?” (“IDE支持? parser写完了当然会自带高亮和变量寻址/空缺提示啊? 什么叫能解析,但没高亮?”) 这是因为我草稿的PRR 里,输入流就是用高亮-区间嵌套来实现增量解析;没有高亮你连 unparse(ast) 都做不到 —诶,就…
#statement #Java 本来就已经和 C 一样了, sendMessage(Message message) 这种该重载为 send(Message msg)
UserInfo PicInfo (class Info .User .Pic ) 的,一大堆

更不要说 x.a=1; x.b=2 (x.apply{a=1;b=2} ) 和 Builder 了,尤其是 build(): Builder.Immutable ,那种玩意是人手写的吗? (运行期不可变 往往会降低性能)

再比如 Adapter(it:T1): TDelegate(it:T) T by it,如果支持as隐转 fun T.as=object: T1 {} 和subclasshook (继承时生成代码) 就不是“class”和 “by语法”了, ktx.serialization 那些魔法也大可丢掉

tcp 填“文件收发”消息不写文件长度, 却想着 1024byte 一块,全\0或isEnd属性结尾, 黏包 拆包 ……

就像 #androidbody.animate({color:'red'}) transition:color 1s; @animation { to { color: red; .. } } 写成 ValueAnimator 😅


设计模式往往是解决语法的缺失,但我相信许多class就是程序员硬加上去的

这不定义式。但就连 Haskell, React 的设计者他也不是为了「软件功能」服务,都有自己的“宏大叙事” ,100个框架有100个术语和写法,功能却完全一样,唯独没有100%好用的

我想要的代码,是“只用写一遍”,也 ”只能写一遍” 的;无论在任何年代,对接上任何app的需求, 都想不出更普遍的用词和接口即便需求复杂到“不普遍”的程度。
问题和解法,都只有唯一一种,描述问题就是解法,这才叫程序设计🙏

py或许够规范,但性能和OOP 上的(生态?)缺陷让它受限于脚本和计算,不方便做前后端的模块 ;所以我现在很少操心android这些框架

static 成员是非常落后、非常不OOP的设计, ruby,py,js 里 class 都是“类对象”;虽然 kt 没有用元类实现反射,认识到 companion 和 fun 处于不同的执行周期是很必要的
Rust就把struct成员和静态 ::new 隔离的很好
Forwarded from 小熊猫的交易之路
Leveraged + influential, 鉴定为outlier
#py 周刊
python -m nntplib , calendar, asyncio, http.server ,. 命令行工具 'gmane.comp.python.general has 757285 articles,'
dinov2_retrieval -q img.png -d ./all_images/
以图搜图
ShortGPT #bilibili 短视频裁缝, Pixels, Bing Image

https://github.com/gto76/python-cheatsheet#curses
TTS, Mario Brothers, TUI文件浏览器, COVID图表的示例❤️
- 代码命名红黑榜

uvicorn vs #rust单/多线程跑分: 差异 10%
from blacksheep import Application
import asyncio
app = Application()
@app.route("/async")
async def test_async():
await asyncio.sleep(.002)
return "OK"

import logging; 对象支持 Formatter('%(name).%(asctime)s: %(message)s'), RotatingFileHandler('my_log.log', maxBytes=2000, backupCount=10) 的参数配置, 默认print WARN以上的记录, logger.exception() 默认 ERROR

pip install pystack pytest-pystack; pystack remote `pidof python` #ffi (仅限 linux, docker)
git clone https://github.com/BiteStreams/fastapi-template PetStore #dev 使用 poetry poly 和 FastAPI session 创建微服务

data diff
#china #news 黑龙江塌方事后,基层官僚的冷漠监视,让我想到小胡在校失踪的评论,记者发言稿都是事先过审,“提高播出质量”。
中国人唯独在「不能说」上语言技术突破
一些聪明人吃着外贸 买着自由,却放着民主法制 议法普选的现代道路不信,一边求神拜佛,盼明主,求洋人盼“通知”给自己做「主」;又去说「日本是美国的狗」这些“普世的真理”

美日的文化“输出”,都能和“肥水不流外人甜”平分秋色。谁才是剥皮吃肉文化里的那群狗狗?

就像 CREAM #recommend short #film 里说的那样,自由和智慧”终结了劳累和痛苦,让权力失去价值“。
蠢的精利者们,就附和坏的食利阶层,宁愿赚大钱,去吃地沟油、喝毒奶,也要把集权导致的灾难,酸在不存在的选票上

“咱们的群众”,很清楚什么「人」应该被轻轻放下,什么人代表伟大光荣;正确的梦话都记住了,唯独忘了物业 本就是拿钱该听业主话的,政教合一、三位一体、我即大国是什么东西

为了恐惧连“说”甚至“看”都做不到的人,未来,总会一起过上 有钱 有官 也看《样板戏》娱乐的红日子的

那些说“悼念汶川”的钢琴家莫须有的原谅侠们。

死了区区11个人嘛,碍国人都知道,女排精神必须“为国”,最后是“为国民” “为个人理想” ,凭什么指责豆腐渣,是想暗戳戳危害矿产大园的安全?
1
Forwarded from 螺莉莉的黑板报
https://item.taobao.com/item.htm?id=727615838798

最近一直动想要自己造一个 MP3 的念头,搜了一下网上的各种板子,发现 ESP 干这事情大概率是不行的,可能 Orange Pi 上面配一个显示器 电池是比较可行的方案,至少它是个 ARM,上面跑一个 Musikcube + 一个 GUI 事情就做完了,3.5mm 耳机接口可以用 USB 外挂一个,你的 MP3 还自带了高端的网口用来传输数据,真的是太神奇啦!
duangsuse::Echo
#android #dev 面试题。上条则是简化版的答案 🧐 仅供参考,可能我解释的太抽象了,涉及一些淘汰的远古技术, 不符合标准答案。 - Handler 基础,Looper 怎么和 Thread 绑定,怎样提高 MessageQueue 优先级 - 进程间通讯的方法,对 AIDL 的了解,对 ContentProvider 的了解 - (根据项目) 自定义 View 的方法和注意事项、事件分发、View 复用 - 写过 demo 吗,什么时候会写 demo - 对 MVVM 的了解,对 Jetpack…
#android #hack #aop 继续,加上奇怪.. 的知识

Magisk 是 Android 版的 Docker (overlayfs),能管理root、去广告加皮肤、安装字体、模拟位置、利用权限骗过 SafetyNet DRM
它让 /boot/initrd 挂载(--bind) /sbin/.magisk tmpfs 来遮住 /mirror/system vendor 树,因此需要TWRP刷zip(和root时一样) 或fastboot刷入kitchen过的原机boot.img

新设备可能不区分boot分区(A/B 切换来OTA),修改内核强制使用 initrd(boot.img) 里的 init(PID0) 程序

简单说,#Linux 启动的传统是kernel解压启动 initrd 内存盘(recovery,Magisk)去寻找真'/',然后 chroot /sysroot /init (systemd,各类run-command,.)

Zygisk 和 Xposed 都是AOP框架,分别拦截和修改 Java android.*/JNI 函数的调用,从而实现对系统和应用程序的功能修改。Zygisk 是基于 Riru 的一个模块,使用 Zygote 注入技术来加载自定义代码。Xposed 是通过替换 /system/bin/app_process 程序来控制 Zygote 进程,使其在系统启动时加载 XposedBridge.jar 文件,从而完成对 Zygote 进程和 Dalvik 虚拟机的劫持。

Zygisk 是 Riru(#cpp .so 函数替换,靠魔改某项linker_PRELOAD) 的免安装续作,开启后不能规避检测,但支持文件/JNI重定向、实现了模块黑名单。 LSP和Ed-Xposed分别支持二者(不能共存)

.internal.os.Zygoteapp_process 的起点,它负责注册JNI、创建 SystemServer(PM,WM,AMS处理的Intent),之后便执行Xp模块
LSP 用 env->RegisterNatives(动态注册版Java_), jni_method_map[T][id][sig].fnPtr 来JNI替换,Zygisk 提供了 {pre(包名),post}AppSpecialize(args)
PRELOAD=libxposed.so 利用 env->FromReflectedMethod(由java查找).{access_flags|=ACC_NATIVE, (Dalvik|ART inlined jmp)nativeFunc=callHooked} 做函数替换

RegisterNatives 本身就能让JNI函数基于jobject clazz 派发,所以比ART hook 简单
FakeXposed 作者的博文

#kt #code
import de.robv.android.xposed.*
import de.robv.android.xposed.XposedHelpers.*

val reg={
val NoPrint={
setStaticObjectField("java.lang.System", "out", PrintStream(OutputStream()) )
}
findAndHookMethod("java.lang.System", cl, "<clinit>", object: XC_MethodHook() {
override fun MethodHookParam.afterHookedMethod() {NoPrint()}
})
}
//assets/xposed_init 写下类名
class My: IXposedHookLoadPackage {
fun LoadPackageParam.handleLoadPackage() {
if(packageName.equals("com.example.app"))reg()
cl=classLoader
}
}
#android #tool 安卓逆向常见步骤:

使用 APKTool 来反编译 aapt,解出明文xml-资源和dex;重新打包并用 apksigner debug 签名
使用 {JD,jadx}-GUI 来反编译 javac,kotlinc,dx ,观察(混淆函数名的) Java 源代码
尝试 RetDec,Snowman(x86),r2 以反编译 gcc
- #reveng 一般是做不到 dnSpy 那种局部重编译的,只能用来琢磨 frida.re 等函数替换,andbug 等调试断点
- 但手动的 enjarify/dex2jar; smali 能重编译, 就像 hex editors 能修改 C strings 常量

对 UI 了解多少?
UI 的设计需要考虑美观性、易用性、功能性:
- 布局颜色整洁、平衡、一致,图标要易识别。
- 动效流畅、不做作、有趣。
- 指示文字简明、准确、友好等原则。

#net TCP 了解多少?
TCP 是传输控制协议,与UDP的乱序丢包不同
- 序列号和确认号来标识和确认数据段。
- 重传机制来处理丢失或者校验失败的数据段。
- 三次握手建立连接,四次挥手断开连接。
- 窗口机制来实现(利他的)流量拥塞控制。

利用 socket 通讯的过程如何?
- socket(AF_INET, SOCK_STRM) 文件 利用了tcp传输层
- unix 服务器把它 bind(('0.0.0.0',80)端口) ,开始 s,addr=accept() 新文件
- 客户端 connect(dial host,port) 后,用send写入,recv(N)读取,
HTTP/1 在请求响应后就close()掉管道
你还可以用 (AF_BLUETOOTH, , BTPROTO_RFCOMM) 让设备可发现(类似 mDNS); 也可用 bluetooth-agent 1234; 指定配对码
duangsuse::Echo
#android #hack #aop 继续,加上奇怪.. 的知识 Magisk 是 Android 版的 Docker (overlayfs),能管理root、去广告加皮肤、安装字体、模拟位置、利用权限骗过 SafetyNet DRM 它让 /boot/initrd 挂载(--bind) /sbin/.magisk tmpfs 来遮住 /mirror/system vendor 树,因此需要TWRP刷zip(和root时一样) 或fastboot刷入kitchen过的原机boot.img 新设备可能不区分boot分区(A/B…
#algorithm #code
题 2:取出数组中第 K 大的元素(排序 / 暴力)
直接用 a.sort();a[-k] 好了,如果是 iter:

fun Iterable<Int>.topK(k: Int) = PriorityQueue<Int>().run {
forEach@Iterable {
offer(it); if(size>k)poll() // bail out the smallest
}
return peek()
}

也可以修改快排:右先浅先,那么 左指针涨到>k 时,a[-k:] 一定是有序的
很多题目就是在原算法递归前,加优化性的断言

有序队本质上和 iter.minMax 都是逐个比较,但利用了小顶堆(二叉树数组化) 决定顺序
N叉数组化 则被用来实现 Set<A-B配对>, unionFind ,原理是 union(A,挂到B), (C,A) 后,CA的共同祖先是B, AC也该一样

题 1:实现三个线程轮流访问一个变量(加锁 / 原子)
use! java.util.concurrent atomic locks
use kotlin.concurrent

- useAtomic
at:
x AtomicInteger(0) //回合数
job:[i]
if x.get%n == i:
say("Thread $i: x = ${x.get}")
x.incrementAndGet
Thread.sleep(1000)

- useLocks
at now:
x 0
go ReentrantLock()
job:[i]
go.withLock: if x%n == i:
say("Thread $i: x = $x")
x=: +1
Thread.sleep(1000)

- job(n=3, :Fn1<Int>)
(1~n): thread {
loop $Y: fn(it)
}.join


因为x+1 只由一个核计算,不会出现赋值前x已经改变的情况

#ai #hard https://t.me/NewlearnerChannel/11418
感觉反正也看不懂。。GPT 训练流程
duangsuse::Echo
#android #dev 面试题。上条则是简化版的答案 🧐 仅供参考,可能我解释的太抽象了,涉及一些淘汰的远古技术, 不符合标准答案。 - Handler 基础,Looper 怎么和 Thread 绑定,怎样提高 MessageQueue 优先级 - 进程间通讯的方法,对 AIDL 的了解,对 ContentProvider 的了解 - (根据项目) 自定义 View 的方法和注意事项、事件分发、View 复用 - 写过 demo 吗,什么时候会写 demo - 对 MVVM 的了解,对 Jetpack…
感觉虽然有些收获,也都是没啥意思的问题……
面试呢,或许对我这种数学渣就都做不到的吧?

#statement
我讨厌这种AI都能写的问题,这些”深刻思考“有什么价值呢? 总是一些算法,让编程变成一种不快乐的任务、变成帮出题人自问自答的”寻宝“

这些出题人又有多聪明呢? 大众都在润色70年前,世上还没电脑时就有的问题, 而小众又能成什么气候,又如何让他们的沧海遗珠给时兴编程带来价值呢?

如果用《算法图解》那种小说口吻去讲,做一些有弹性的科普视频,倒是有娱乐价值;如果写代码只是为了复制粘贴「能用的东西」,那只是白象的社会价值。真的无聊透顶
我应该是「不受任何领域条框」的软件创作者,而非程序员或者 CS Math Nerd 🤓

一个优秀的程序员,不学习语言,只挑选概念; 因为要思考和创作,一定是用”内心的语言“做推敲,最终才桥接到调查过的API ;
因为是自己理解的语言,就不会受到整个计算机领域一些空洞术语和写法的误导
因为不在纸上,所以根本无法进行堆砌,绝对是有核心思想、自顶向下的。
不为一些”看起来高性能“的语言就乱加结构(比如NLP vs GPT)、粘贴算法 ,搞出一些非常可配置的抽象话、垃圾话

我认为,编程的价值是创造普适的「用法」,这就和游戏玩家和职人分享攻略一样。IT本来就是服务问题的,以人为本才有价值
至于 i++,++i 那种自我内耗的事,只是在为自己的刻板印象和表现欲付出熬夜的苦难。 本来可以有无数种变通,来更好的消灭它们,只是你要先学会质疑。
duangsuse::Echo
感觉虽然有些收获,也都是没啥意思的问题…… 面试呢,或许对我这种数学渣就都做不到的吧? #statement 我讨厌这种AI都能写的问题,这些”深刻思考“有什么价值呢? 总是一些算法,让编程变成一种不快乐的任务、变成帮出题人自问自答的”寻宝“ 这些出题人又有多聪明呢? 大众都在润色70年前,世上还没电脑时就有的问题, 而小众又能成什么气候,又如何让他们的沧海遗珠给时兴编程带来价值呢? 如果用《算法图解》那种小说口吻去讲,做一些有弹性的科普视频,倒是有娱乐价值;如果写代码只是为了复制粘贴「能用的东西…
举例, #ts 上有”交并集类型“ (有人认为 hs, Rust 没有子类型所以不存在集合论的,确实如此但 in-out 形变是Racket子语言里也有的,我找不到原文但TRack 是有)
(我一点也不羡慕没有重载和this模块等多态技术的圆括号 😅, 模型的缺失是拿宏手动兼容 a.b.c 所弥补不了的, 就像 F# 的 |> 比不上 xx.let{}, kt 的元组 destruct 比不上 ES6 let[x,y]=P, ES6的解构又不如 Prolog 的 unify [x,1]=[2,y]...

观摩王垠《别再欺负我们读书少》:
- int -> int | bool ->bool 表示的确实是一个intersection type(^),而不是union type(|)
- id(itself) “同时”是int->int和bool->bool,而不是表示它“有时”是int->int,而另外的时候是bool->bool。
- 所以,id(1)一定是int。如果你输入id(True),它推导出的一定是bool。
- 否则,调用id(1)会报错,因为id的类型有可能是bool->bool,不能接受int的输入。调用id(True)也会报错,左右不是人。


但我习惯拿 成员交=union ,成员并=insect ,绝口不提“同时”“有时” 这种抽象说法乃至术语
- int -> int | bool ->bool 表示的确实是一个重载,而不是Either
- id “必须”是int->int, bool->bool ,而不是“可为” int->int | bool->bool。 when(x) { is Int, is Str } 这种情况才是“x可为二者”
- 否则,调用id(1),id(True)都会报错,因为id的类型有可能是bool->bool,不能接受int的输入,或者反之。

严谨性绝对是次于创造力的,况且,含糊的说法对同时使用和实现不利
虽然这些都是小小的细节,但每个细节都注重可读性,随着设计的步进,最终会形成巨大的差异。即便都是用AI,我的实现也会有很多不同
duangsuse::Echo pinned «感觉虽然有些收获,也都是没啥意思的问题…… 面试呢,或许对我这种数学渣就都做不到的吧? #statement 我讨厌这种AI都能写的问题,这些”深刻思考“有什么价值呢? 总是一些算法,让编程变成一种不快乐的任务、变成帮出题人自问自答的”寻宝“ 这些出题人又有多聪明呢? 大众都在润色70年前,世上还没电脑时就有的问题, 而小众又能成什么气候,又如何让他们的沧海遗珠给时兴编程带来价值呢? 如果用《算法图解》那种小说口吻去讲,做一些有弹性的科普视频,倒是有娱乐价值;如果写代码只是为了复制粘贴「能用的东西…»
#science #news 🤯 BV1cP411k7aU
“ 简单看了一下原文,用几种极其常见的材料(铅氧化物、硫酸铅、铜、磷)固相合成得到了常温常压下的超导材料。要是真的,倒立洗头10遍也不为过。
不过,主要作者的通讯单位是商业公司,报道的材料“LK-99”是注册商标,不排除(甚至有很大可能)是商业公司在吹牛,只为搞个大新闻​

https://t.me/rynif/31199
Forwarded from Solidot
马斯克的 Twitter 零补偿接管@X 账号

2023-07-27 11:47 by 月缘

马斯克(Elon Mus)已经将 Twitter 的蓝鸟标志改为 X,但 Twitter 上的 @X 账号并不控制在自己手中,它早在 16 年前就被用户使用了。如果 Twitter 的官方账号没有改为 @X,那么马斯克此番重塑商标的动作显然是不完整的。所以他们直接接管了 @X 账号。该账号的原拥有者、旧金山摄影师 Gene X Hwang 称他们发了封邮件,说该账号是 X 的财产。Hwang 确认 Twitter 没有提供任何经济补偿,只是让他创建一个新账号,将原 @X 账号的历史记录以及跟随者等信息转移到新账号,以及提供一些纪念品和与管理团队见面等机会。Hwang 表示他不是法律专家,也没什么兴趣对抗 Twitter,他目前使用了一个 Twitter 临时分配的账号 @x12345678998765。Hwang 称在改名为 X 前,Twitter 没有人联络过他。Twitter 声称其服务条款允许它接管任何用户名。

https://arstechnica.com/tech-policy/2023/07/twitter-took-x-handle-from-longtime-user-and-only-offered-him-some-merch/

#Twitter
duangsuse::Echo
#algorithm #FP 版的 list 累加法杨辉三角 ps. 也可以用DP和代数式推算 P2:垃圾 itertools #py #code from itertools import accumulate,islice,chain fib=iself(2,lambda x0,x1: chain([1,1], (x+y for x,y in zip(x0,x1)) )) def 杨辉(): #pascal_triangle row = [1] while True: yield…
#sql #ts Prolog 牛逼! 正确的关系式搜索+ 同时实现 parse 和 toStr 😱

#zhihu 灵感来源

e(E) -->{E = [I,Ea,Eb]}, %重写规则, 'eX'为优先级

%利用 链|e1(E) 括住内"*/"
e1(Ea), op(I,"+-"), e(Eb); e1(E).
e1(E) -->{E = [I,Ea,Eb]},
e2(Ea), op(I," */"), e1(Eb); e2(E).

e2(X) --> number(X); ("(", e(X), ")"), !. % 单项值/字面
op(I,W) --> [C], { nth0(I0,W,C),nth0(I0,"加减乘除",I) }.


5行就能实现一个str”模板“,写法相对匮乏但功能丰富,吊打 Haskell 的 TextCombinator 🥺

❤️ https://eu.swi-prolog.org/pldoc/man?section=basics
这里还有个Lisp实现
duangsuse::Echo
举例, #ts 上有”交并集类型“ (有人认为 hs, Rust 没有子类型所以不存在集合论的,确实如此但 in-out 形变是Racket子语言里也有的,我找不到原文但TRack 是有) (我一点也不羡慕没有重载和this模块等多态技术的圆括号 😅, 模型的缺失是拿宏手动兼容 a.b.c 所弥补不了的, 就像 F# 的 |> 比不上 xx.let{}, kt 的元组 destruct 比不上 ES6 let[x,y]=P, ES6的解构又不如 Prolog 的 unify [x,1]=[2,y]...…
#FP Prolog 和 Racket 一样都有严重的语法缺陷:没有真正的等号,语法一致性也很差;也就比 #SQL 好了
或许 Lisp 的嵌套链表很”统一“,但统一并不等于简单而一致

number(X) 就是 X=num() 的意思,很多算式本该有”一个值“,而不是为了”X=1 返回 [{X:1}]“ 就放弃简化
Res 变量应该被掩盖掉,就像Go等所有现代语言都抛弃了 struct*, char**

那样👆e(X) 就可以不用”宏“ 或 Monad 来实现隐式参数,化简3参数的 S=X+R, "2x"==2+'x' , 直接 num=[S,X,R] 就能被 repeat() 修饰了, num=["12a",X] 优于 phrase(num(X), "12","a")

(话说 hs 也真是垃圾🙉 连伪递归纯函数 都强制化了,却仍然不能求解出 x+[2,3]=[1,2,3] ?? 递归再回溯,不就是为了方便DFS吗?

确实 inc1(x)=2 可能需要闭包和重载,所以我说圆括号很垃圾,因为不够”广义“的等号,和那些扭来扭去的数学希腊字或者VB,PHP一样

🥰我最爱的方向是:
- 定义式/py,rb,元编程,跨平台接口
- 关系式/模式匹配,读写转化,typing知识
- 响应式/Vue ,await和协程, 编程时所见即所得
- 跨领域/基于物理,OS,libc 等根源问题的搜索习惯
duangsuse::Echo
#china #news 黑龙江塌方事后,基层官僚的冷漠监视,让我想到小胡在校失踪的评论,记者发言稿都是事先过审,“提高播出质量”。 中国人唯独在「不能说」上语言技术突破 一些聪明人吃着外贸 买着自由,却放着民主法制 议法普选的现代道路不信,一边求神拜佛,盼明主,求洋人盼“通知”给自己做「主」;又去说「日本是美国的狗」这些“普世的真理” 美日的文化“输出”,都能和“肥水不流外人甜”平分秋色。谁才是剥皮吃肉文化里的那群狗狗? 就像 CREAM #recommend short #film 里说的那样,自…
#china #school 校舍豆腐渣事故

就像那些土地被火箭碎片砸,拿到200块补偿还要“开心一下”的农民
不仅各色劳动者不值钱,中产和人命也很卑微。这片土地日日祥和:每人心中的党支部都在替“大环境”摆脱冷气,向上走

😶果然,会歧视祥林嫂的社会,终究要变成这样抽象的繁华、恐怖的沉默, 因为动力的来源等于压力
#statement
在沉默中,无数次点燃文革仇智、非典、疫情、储蓄挪用、毒奶粉、地沟油、沙尘暴、隧道地铁漏水、矿难无声、校舍坍塌 、帝国法西斯主义……

财富是自由的附属品,为了捡钱弯腰的人们,往往直不起腰,便无处花钱了。
--
7.23 暑假发生了11学生死亡的违规施工案件,从停工到事发有8个月好几次检查,不是什么『自然灾害』

在这个梦之国度,灾害是按人数计算的。它们才不管你怎么死的、不思考未来自己会面临同样, 只懂用私家权力贯彻皇帝和新装,

就像欲加之罪里的秦桧,理由莫须有。 国事莫须有,社会和国民待遇,自然没有。

“民主不能当饭吃,但绿化带可以
逃生通道不能走,但铁丝网可以
大坝墙不能洗脑,但脱口秀可以
洋人洋货都辱华,西装红领可以
日是军国主义,留岛不留人可以
农民工商不劳动,但执政党养你
duangsuse::Echo
#sql DFS搜索 像素图填色 in Prolog btw. fill(_,X) 是 “从任意一点探索区域X , 一共能收集到多少X” v(P,0) : 查询颜色是0的P=[X,Y] conn([2,1], P1) : (2,1)=0 四邻里 0值格的座标们 不知为何很慢 看起来好像简短了,实际只是省掉 if 和解构的代码量 😒 有趣的是,conn(四邻) 是基于 |X-x|+|Y-y|=1 的参数方程(GL常用),而非 x+1,y+1 直接迭代,所以 dfs :- C=conn(A),dfs(C)…
#math #algorithm Gauss消元 可以用来解鸡兔同笼、化学分子式等方程组😅

(#bing 第一遍就能用了,但还是有5小时“确认” 算法,最后大体没改

# 对系数组A,进行高斯消元求 Ax '=b'
def elim(A, b):
M = np.hstack((A, b.reshape(-1, 1))) # M=(A|常数项b)
n, m = A.shape; assert n==m, "没有唯一解"

# 向下找j格最强的行,换为本行
for j in range(n):
i=np.argmax(abs(M[j:, j]))+j; assert M[i,j]!=0, "主元为零"
if i!=j: #; ij=(行ji)
M[[i,j]] = M[[j,i]]
# j归一,将下行的j格消为 0
M[j] /= M[j, j]
for i in range(j + 1, n):
M[i] -= M[i,j]* M[j]

就只添加了「逆序代入」、确认了「向下归一」化简了😅 M[i] -=m[j]*M[i,j] / M[j,j]

(没错,”大无语事件“,数 学 家 们的代码太乱了,bing都不知道谁是正确…… 我甚至无法证明 逆序带入“不就是” M[:, -1]

也倒了很多苦水,包括在kt讨论组

无语了,你看不懂的信息能不能不要过滤掉? 广度和深度都挺重要 OK?
如果我致力于用100行描述好本质10行的一些组件流程,我也能很有信息量

但是也要去写实质上值得100行的算法和思想的, 不能因为“没功能” 就耽搁掉

不要把设计的创作者和 CS Math 毕业生混为一谈,实现功能算法和设计做法是意义不同的
ice1k 的中文博客都删了,而且看我你至少能复制到base64,fft, 缩进解析, parse(x).toString 这些罕见功能模板……

(不过有时觉得自己很像 GPT ,写的许多代码根本没有运行过,都只是看起来正确

我想锐评几个数学文档:
- wikiZH 除了注释🙉都看不懂,自然语言噪声的极限。 所以矩阵是否有要求 n==m 啊?
- wiki 伪代码的VB式循环。 A[i, k] = 0 是啥?不该用 -= 吗
- OI wiki 根本看不懂公式和 C++ 有啥联系. L7-L13 是一段查k=max() 的面条代码🤮, EPS 是浮点误差,这和消元有个?关系
- bing 一会说 n<=m 也行,一会把 A,b 分开操作,突然又用单参数, 最后才发现 A|b = 单增广矩阵,A必须是正方
duangsuse::Echo
#math #algorithm Gauss消元 可以用来解鸡兔同笼、化学分子式等方程组😅 (#bing 第一遍就能用了,但还是有5小时“确认” 算法,最后大体没改 # 对系数组A,进行高斯消元求 Ax '=b' def elim(A, b): M = np.hstack((A, b.reshape(-1, 1))) # M=(A|常数项b) n, m = A.shape; assert n==m, "没有唯一解" # 向下找j格最强的行,换为本行 for j in range(n):…
#math 🥰我只能说 GPT3 的代码可读性是 math/OI wiki 的3倍以上,默认就会使用 numpy 和函数移植
#bing 就蠢一些了(被不标准做法迷惑, 1个小片段3种写法..)

那些人,连手动推导的示例都不会举,喜欢手推一些算法可视化级的复杂、无边界情况的用例,把AI的工作都给抢了

摆出没有心智模型的公式,浪费读者理解算法的时间;多废的人才会在「不知道想干嘛」的情况下列公式啊??

#py #code 鸡兔的解为: [23. 12.]
# 进行高斯消元求 Ax=b, Ax互为系数
def elim(A, b):
M = np.hstack((A, b.reshape(-1, 1))) # M=(A|常数b)
n, m = A.shape; assert n==m, "没有唯一解"

# 向下找j格最强的行,换为'j'行(即阶梯格式)
for j in range(m):
i=np.argmax(abs(M[j:, j]))+j
if i!=j: M[[i,j]] = M[[j,i]] #ij=(行ji)
if (x:=M[j,j])==0: continue
# j行的主元’x'归一,所以此后的行消x
M[j] /= x
for i in range(j+1, n):
M[i] -= M[j]* M[i,j]#x的数量

# 重新代入
x = np.zeros(m)
for j in reversed(range(m)): # x=(解m - 右:数量y*解y的和)/x的数量'1'
y = np.dot(M[j, j+1:m], x[j+1:])
x[j] = (M[j,m] - y) / M[j, j]
return x

#x + y = 35, 2x + 4y = 94
print("鸡兔的解为:", elim(
np.array([[1.]*2, [2.,4]]), np.array([35,94]) ))

若有一项 M[j,j]=0: M[j,-1] 非0则无解,否则为无穷解;

可以解析,或随机测试 quickCheck(elim, lp.solve, lambda n: (rand(n, n) , rand(n) ) )
# 一般都是用Sympy当Matlab的
import numpy as np
import numpy.linalg as lp, sympy as sp
x, y = symbols('x, y')
eq = [
x + y - 35,
2*x + 4*y - 94] #linear_eq_to_matrix;hstack 就是
[[ 1., 1., 35.],
[ 2., 4., 94.]]