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 移动到末尾的算法(简单粗暴选排)
仅供参考,可能我解释的太抽象了,涉及一些淘汰的远古技术, 不符合标准答案。
- 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 一样了,
更不要说
再比如
tcp 填“文件收发”消息不写文件长度, 却想着 1024byte 一块,全\0或isEnd属性结尾, 黏包 拆包 ……
就像 #android 把
设计模式往往是解决语法的缺失,但我相信许多class就是程序员硬加上去的
这不定义式。但就连 Haskell, React 的设计者他也不是为了「软件功能」服务,都有自己的“宏大叙事” ,100个框架有100个术语和写法,功能却完全一样,唯独没有100%好用的
我想要的代码,是“只用写一遍”,也 ”只能写一遍” 的;无论在任何年代,对接上任何app的需求, 都想不出更普遍的用词和接口,即便需求复杂到“不普遍”的程度。
问题和解法,都只有唯一一种,描述问题就是解法,这才叫程序设计🙏
py或许够规范,但性能和OOP 上的(生态?)缺陷让它受限于脚本和计算,不方便做前后端的模块 ;所以我现在很少操心android这些框架
static 成员是非常落后、非常不OOP的设计, ruby,py,js 里 class 都是“类对象”;虽然 kt 没有用元类实现反射,认识到 companion 和 fun 处于不同的执行周期是很必要的
Rust就把struct成员和静态 ::new 隔离的很好
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): T 和 Delegate(it:T) T by it,如果支持as隐转 fun T.as=object: T1 {} 和subclasshook (继承时生成代码) 就不是“class”和 “by语法”了, ktx.serialization 那些魔法也大可丢掉tcp 填“文件收发”消息不写文件长度, 却想着 1024byte 一块,全\0或isEnd属性结尾, 黏包 拆包 ……
就像 #android 把
body.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 Hacker News (yahnc_bot)
The Fall of Stack Overflow https://observablehq.com/@ayhanfuat/the-fall-of-stack-overflow
Observable
The Fall of Stack Overflow
Over the past one and a half years, Stack Overflow has lost around ~~50%~~ 35% of its traffic (Update: Around 15% of the observed loss seems to be related to the recategorization of the Google Analytics Cookie around May 2022. The chart was updated to only…
#py 周刊
ShortGPT #bilibili 短视频裁缝, Pixels, Bing Image
https://github.com/gto76/python-cheatsheet#curses
TTS, Mario Brothers, TUI文件浏览器, COVID图表的示例❤️
- 代码命名红黑榜
uvicorn vs #rust 的单/多线程跑分: 差异 10%
data diff
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 Applicationimport logging; 对象支持
import asyncio
app = Application()
@app.route("/async")
async def test_async():
await asyncio.sleep(.002)
return "OK"
Formatter('%(name).%(asctime)s: %(message)s'), RotatingFileHandler('my_log.log', maxBytes=2000, backupCount=10) 的参数配置, 默认print WARN以上的记录, logger.exception() 默认 ERRORpip 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
Telegram
Newlearnerの自留地
#Python潮流周刊 #Newsletter
Python 潮流周刊#12:Python 中如何调试死锁问题?
🦄文章&教程
1 、使用 PyStack 调试 Python 中的崩溃和死锁 (英)
2 、介绍一个 FastAPI 项目模板 (英)
3 、Python FastAPI 微服务与 Polylith 架构 (英)
4 、Python 日志模块:实战应用与最佳实践
5 、测量 Python 和 Rust 异步 Web 服务的性能 (英)
6 、dinov2_retrieval:一个基于 DINOv2…
Python 潮流周刊#12:Python 中如何调试死锁问题?
🦄文章&教程
1 、使用 PyStack 调试 Python 中的崩溃和死锁 (英)
2 、介绍一个 FastAPI 项目模板 (英)
3 、Python FastAPI 微服务与 Polylith 架构 (英)
4 、Python 日志模块:实战应用与最佳实践
5 、测量 Python 和 Rust 异步 Web 服务的性能 (英)
6 、dinov2_retrieval:一个基于 DINOv2…
#china #news 黑龙江塌方事后,基层官僚的冷漠监视,让我想到小胡在校失踪的评论,记者发言稿都是事先过审,“提高播出质量”。
中国人唯独在「不能说」上语言技术突破
一些聪明人吃着外贸 买着自由,却放着民主法制 议法普选的现代道路不信,一边求神拜佛,盼明主,求洋人盼“通知”给自己做「主」;又去说「日本是美国的狗」这些“普世的真理”
美日的文化“输出”,都能和“肥水不流外人甜”平分秋色。谁才是剥皮吃肉文化里的那群狗狗?
就像 CREAM #recommend short #film 里说的那样,自由和智慧”终结了劳累和痛苦,让权力失去价值“。
蠢的精利者们,就附和坏的食利阶层,宁愿赚大钱,去吃地沟油、喝毒奶,也要把集权导致的灾难,酸在不存在的选票上
“咱们的群众”,很清楚什么「人」应该被轻轻放下,什么人代表伟大光荣;正确的梦话都记住了,唯独忘了物业 本就是拿钱该听业主话的,政教合一、三位一体、我即大国是什么东西
为了恐惧连“说”甚至“看”都做不到的人,未来,总会一起过上 有钱 有官 也看《样板戏》娱乐的红日子的
那些说“悼念汶川”的钢琴家莫须有的原谅侠们。
死了区区11个人嘛,碍国人都知道,女排精神必须“为国”,最后是“为国民” “为个人理想” ,凭什么指责豆腐渣,是想暗戳戳危害矿产大园的安全?
中国人唯独在「不能说」上语言技术突破
一些聪明人吃着外贸 买着自由,却放着民主法制 议法普选的现代道路不信,一边求神拜佛,盼明主,求洋人盼“通知”给自己做「主」;又去说「日本是美国的狗」这些“普世的真理”
美日的文化“输出”,都能和“肥水不流外人甜”平分秋色。谁才是剥皮吃肉文化里的那群狗狗?
就像 CREAM #recommend short #film 里说的那样,自由和智慧”终结了劳累和痛苦,让权力失去价值“。
蠢的精利者们,就附和坏的食利阶层,宁愿赚大钱,去吃地沟油、喝毒奶,也要把集权导致的灾难,酸在不存在的选票上
“咱们的群众”,很清楚什么「人」应该被轻轻放下,什么人代表伟大光荣;正确的梦话都记住了,唯独忘了物业 本就是拿钱该听业主话的,政教合一、三位一体、我即大国是什么东西
为了恐惧连“说”甚至“看”都做不到的人,未来,总会一起过上 有钱 有官 也看《样板戏》娱乐的红日子的
那些说“悼念汶川”的钢琴家莫须有的原谅侠们。
死了区区11个人嘛,碍国人都知道,女排精神必须“为国”,最后是“为国民” “为个人理想” ,凭什么指责豆腐渣,是想暗戳戳危害矿产大园的安全?
Telegram
duangsuse Throws
#news #life 黑龙江校舍倒塌,死亡11人,含女排校队队员
端传媒 🙏唉
端传媒 🙏唉
❤1
Forwarded from 螺莉莉的黑板报
https://item.taobao.com/item.htm?id=727615838798
最近一直动想要自己造一个 MP3 的念头,搜了一下网上的各种板子,发现 ESP 干这事情大概率是不行的,可能 Orange Pi 上面配一个显示器 电池是比较可行的方案,至少它是个 ARM,上面跑一个 Musikcube + 一个 GUI 事情就做完了,3.5mm 耳机接口可以用 USB 外挂一个,你的 MP3 还自带了高端的网口用来传输数据,真的是太神奇啦!
最近一直动想要自己造一个 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分别支持二者(不能共存)
LSP 用 env->RegisterNatives(动态注册版Java_), jni_method_map
PRELOAD=libxposed.so 利用
RegisterNatives 本身就能让JNI函数基于jobject clazz 派发,所以比ART hook 简单
FakeXposed 作者的博文
#kt #code
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.Zygote 是 app_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
}
}
Gist
Zygisk 源码分析 #Magisk #Zygisk
Zygisk 源码分析 #Magisk #Zygisk. GitHub Gist: instantly share code, notes, and snippets.
#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 通讯的过程如何?
-
- unix 服务器把它
- 客户端
HTTP/1 在请求响应后就close()掉管道
你还可以用
使用 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; 指定配对码GitHub
GitHub - weixinbao/ReverseTool: 逆向工具集合
逆向工具集合. Contribute to weixinbao/ReverseTool development by creating an account on GitHub.
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:
很多题目就是在原算法递归前,加优化性的断言
有序队本质上和 iter.minMax 都是逐个比较,但利用了小顶堆(二叉树数组化) 决定顺序
N叉数组化 则被用来实现
题 1:实现三个线程轮流访问一个变量(加锁 / 原子)
因为x+1 只由一个核计算,不会出现赋值前x已经改变的情况
#ai #hard https://t.me/NewlearnerChannel/11418
感觉反正也看不懂。。GPT 训练流程
题 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 训练流程
Telegram
duangsuse::Echo
#algorithm UnionFind、三角分形(精简版)
如果要实现 Set 你会怎么做?每次 add(x) 时去重遍历 uniq() 吗?
现在按数组Array(N).fill(0).map((x,i)=>i) 实现 Set<Int> 。每位与一个索引关联,初始是和自己
当加一对 a-b ,把它们的位置赋上彼此,就能知道在不在同集合内——不行,如果还有a-b-c 咋赋值?
答案是 a->b 关联 b->c 再关联,因此 find() 变成链表遍历后最终同一。然后 add(a,c) 先找这个"b",把它…
如果要实现 Set 你会怎么做?每次 add(x) 时去重遍历 uniq() 吗?
现在按数组Array(N).fill(0).map((x,i)=>i) 实现 Set<Int> 。每位与一个索引关联,初始是和自己
当加一对 a-b ,把它们的位置赋上彼此,就能知道在不在同集合内——不行,如果还有a-b-c 咋赋值?
答案是 a->b 关联 b->c 再关联,因此 find() 变成链表遍历后最终同一。然后 add(a,c) 先找这个"b",把它…
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 那种自我内耗的事,只是在为自己的刻板印象和表现欲付出熬夜的苦难。 本来可以有无数种变通,来更好的消灭它们,只是你要先学会质疑。
面试呢,或许对我这种数学渣就都做不到的吧?
#statement
我讨厌这种AI都能写的问题,这些”深刻思考“有什么价值呢? 总是一些算法,让编程变成一种不快乐的任务、变成帮出题人自问自答的”寻宝“
这些出题人又有多聪明呢? 大众都在润色70年前,世上还没电脑时就有的问题, 而小众又能成什么气候,又如何让他们的沧海遗珠给时兴编程带来价值呢?
如果用《算法图解》那种小说口吻去讲,做一些有弹性的科普视频,倒是有娱乐价值;如果写代码只是为了复制粘贴「能用的东西」,那只是白象的社会价值。真的无聊透顶
我应该是「不受任何领域条框」的软件创作者,而非程序员或者 CS Math Nerd 🤓
一个优秀的程序员,不学习语言,只挑选概念; 因为要思考和创作,一定是用”内心的语言“做推敲,最终才桥接到调查过的API ;
因为是自己理解的语言,就不会受到整个计算机领域一些空洞术语和写法的误导
因为不在纸上,所以根本无法进行堆砌,绝对是有核心思想、自顶向下的。
不为一些”看起来高性能“的语言就乱加结构(比如NLP vs GPT)、粘贴算法 ,搞出一些非常可配置的抽象话、垃圾话
我认为,编程的价值是创造普适的「用法」,这就和游戏玩家和职人分享攻略一样。IT本来就是服务问题的,以人为本才有价值
至于 i++,++i 那种自我内耗的事,只是在为自己的刻板印象和表现欲付出熬夜的苦难。 本来可以有无数种变通,来更好的消灭它们,只是你要先学会质疑。
GitHub
YinWangBak/学习的智慧.md at 3bf5d4cdb813b5edcdebfc5ccd7ce2a58e0103cd · AlexiaChen/YinWangBak
A collection of articles written by YinWang. Contribute to AlexiaChen/YinWangBak development by creating an account on GitHub.
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]...
观摩王垠《别再欺负我们读书少》:
- 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 ,绝口不提“同时”“有时” 这种抽象说法乃至术语
- 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,我的实现也会有很多不同
(我一点也不羡慕没有重载和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,我的实现也会有很多不同
Telegram
duangsuse::Echo
#learn #ts #kt 子类型 vs 组合, in/out参数
https://t.me/dsuses/5194
总之,trait类型的交集 还是需要in/out,这不是子类型带来的麻烦。
a=append(a,x) 与 copy(a,src) 类型上是一样的,前者也并不能“把a修正为更窄接口”。 Go必须把list+=单项 写出来, 因为缺少型变
func main() {
var src []interface{} = []any{1, 2, 3, 4, 5}
var dst []int…
https://t.me/dsuses/5194
总之,trait类型的交集 还是需要in/out,这不是子类型带来的麻烦。
a=append(a,x) 与 copy(a,src) 类型上是一样的,前者也并不能“把a修正为更窄接口”。 Go必须把list+=单项 写出来, 因为缺少型变
func main() {
var src []interface{} = []any{1, 2, 3, 4, 5}
var dst []int…
duangsuse::Echo pinned «感觉虽然有些收获,也都是没啥意思的问题…… 面试呢,或许对我这种数学渣就都做不到的吧? #statement 我讨厌这种AI都能写的问题,这些”深刻思考“有什么价值呢? 总是一些算法,让编程变成一种不快乐的任务、变成帮出题人自问自答的”寻宝“ 这些出题人又有多聪明呢? 大众都在润色70年前,世上还没电脑时就有的问题, 而小众又能成什么气候,又如何让他们的沧海遗珠给时兴编程带来价值呢? 如果用《算法图解》那种小说口吻去讲,做一些有弹性的科普视频,倒是有娱乐价值;如果写代码只是为了复制粘贴「能用的东西…»
#science #news 🤯 BV1cP411k7aU
“ 简单看了一下原文,用几种极其常见的材料(铅氧化物、硫酸铅、铜、磷)固相合成得到了常温常压下的超导材料。要是真的,倒立洗头10遍也不为过。
不过,主要作者的通讯单位是商业公司,报道的材料“LK-99”是注册商标,不排除(甚至有很大可能)是商业公司在吹牛,只为搞个大新闻
https://t.me/rynif/31199
“ 简单看了一下原文,用几种极其常见的材料(铅氧化物、硫酸铅、铜、磷)固相合成得到了常温常压下的超导材料。要是真的,倒立洗头10遍也不为过。
不过,主要作者的通讯单位是商业公司,报道的材料“LK-99”是注册商标,不排除(甚至有很大可能)是商业公司在吹牛,只为搞个大新闻
https://t.me/rynif/31199
Telegram
&'a ::rynco::UntitledChannel
Breaking News: 根据二手内部消息,中科院物理所已经成功合成出样品,磁化率初步测得与文章一致,尚未观察到悬浮现象。
消息来源(不保真,注意只是初步结果)
https://www.zhihu.com/question/613850973/answer/3136316439
消息来源(不保真,注意只是初步结果)
https://www.zhihu.com/question/613850973/answer/3136316439
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
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/
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 灵感来源
5行就能实现一个str”模板“,写法相对匮乏但功能丰富,吊打 Haskell 的 TextCombinator 🥺
❤️ https://eu.swi-prolog.org/pldoc/man?section=basics
这里还有个Lisp实现
#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等所有现代语言都抛弃了
确实 inc1(x)=2 可能需要闭包和重载,所以我说圆括号很垃圾,因为不够”广义“的等号,和那些扭来扭去的数学希腊字或者VB,PHP一样
🥰我最爱的方向是:
- 定义式/py,rb,元编程,跨平台接口
- 关系式/模式匹配,读写转化,typing知识
- 响应式/Vue ,await和协程, 编程时所见即所得
- 跨领域/基于物理,OS,libc 等根源问题的搜索习惯
或许 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 等根源问题的搜索习惯
#rust #gui 🤔Yew 是 #wasm 的前端框架 https://t.me/dsuses/5232
Tauri.app #js 很流行,能够打包到600K 但看起来它只是和html调用rust的工具,或模板引擎
Dropbox,CF 已经应用 Tauri 实现高性能的网页端计算
“我还是搞不太懂技术栈对电量损耗的影响,Native 会比 Web 省电吗?Python 会比 Node 省电,但是 Python + PyGames 会比 Node + Libyue 省电吗?Dart 比 JS 省电,但是带上 Flutter 呢?
https://t.me/im_RORIRI/10799
Tauri.app #js 很流行,能够打包到600K 但看起来它只是和html调用rust的工具,或模板引擎
Dropbox,CF 已经应用 Tauri 实现高性能的网页端计算
“我还是搞不太懂技术栈对电量损耗的影响,Native 会比 Web 省电吗?Python 会比 Node 省电,但是 Python + PyGames 会比 Node + Libyue 省电吗?Dart 比 JS 省电,但是带上 Flutter 呢?
https://t.me/im_RORIRI/10799
Telegram
duangsues.is_a? SaltedFish
当然,请参考以下链接获取有关 Rust 中流行的 UI 框架的更多信息:
1. Yew - Yew 是一个现代化的 Rust 框架,用于构建基于 WebAssembly 的前端应用程序。它采用类似于 React 的组件模型和虚拟 DOM,提供强大的状态管理和事件处理功能。Yew 的官方网站提供详细的文档、示例和指南。
2. Iced - Iced 是一个简单高效的跨平台 GUI 库,专注于构建桌面应用程序。它提供易于使用的 API 和功能强大的 UI 组件,使用函数式反应式编程风格。在项目的 GitHub…
1. Yew - Yew 是一个现代化的 Rust 框架,用于构建基于 WebAssembly 的前端应用程序。它采用类似于 React 的组件模型和虚拟 DOM,提供强大的状态管理和事件处理功能。Yew 的官方网站提供详细的文档、示例和指南。
2. Iced - Iced 是一个简单高效的跨平台 GUI 库,专注于构建桌面应用程序。它提供易于使用的 API 和功能强大的 UI 组件,使用函数式反应式编程风格。在项目的 GitHub…
duangsuse::Echo
#china #news 黑龙江塌方事后,基层官僚的冷漠监视,让我想到小胡在校失踪的评论,记者发言稿都是事先过审,“提高播出质量”。 中国人唯独在「不能说」上语言技术突破 一些聪明人吃着外贸 买着自由,却放着民主法制 议法普选的现代道路不信,一边求神拜佛,盼明主,求洋人盼“通知”给自己做「主」;又去说「日本是美国的狗」这些“普世的真理” 美日的文化“输出”,都能和“肥水不流外人甜”平分秋色。谁才是剥皮吃肉文化里的那群狗狗? 就像 CREAM #recommend short #film 里说的那样,自…
#china #school 校舍豆腐渣事故
就像那些土地被火箭碎片砸,拿到200块补偿还要“开心一下”的农民
不仅各色劳动者不值钱,中产和人命也很卑微。这片土地日日祥和:每人心中的党支部都在替“大环境”摆脱冷气,向上走
😶果然,会歧视祥林嫂的社会,终究要变成这样抽象的繁华、恐怖的沉默, 因为动力的来源等于压力
#statement
在沉默中,无数次点燃文革仇智、非典、疫情、储蓄挪用、毒奶粉、地沟油、沙尘暴、隧道地铁漏水、矿难无声、校舍坍塌 、帝国法西斯主义……
财富是自由的附属品,为了捡钱弯腰的人们,往往直不起腰,便无处花钱了。
--
7.23 暑假发生了11学生死亡的违规施工案件,从停工到事发有8个月好几次检查,不是什么『自然灾害』
在这个梦之国度,灾害是按人数计算的。它们才不管你怎么死的、不思考未来自己会面临同样, 只懂用私家权力贯彻皇帝和新装,
就像欲加之罪里的秦桧,理由莫须有。 国事莫须有,社会和国民待遇,自然没有。
“民主不能当饭吃,但绿化带可以
逃生通道不能走,但铁丝网可以
大坝墙不能洗脑,但脱口秀可以
洋人洋货都辱华,西装红领可以
日是军国主义,留岛不留人可以
农民工商不劳动,但执政党养你
”
就像那些土地被火箭碎片砸,拿到200块补偿还要“开心一下”的农民
不仅各色劳动者不值钱,中产和人命也很卑微。这片土地日日祥和:每人心中的党支部都在替“大环境”摆脱冷气,向上走
😶果然,会歧视祥林嫂的社会,终究要变成这样抽象的繁华、恐怖的沉默, 因为动力的来源等于压力
#statement
在沉默中,无数次点燃文革仇智、非典、疫情、储蓄挪用、毒奶粉、地沟油、沙尘暴、隧道地铁漏水、矿难无声、校舍坍塌 、帝国法西斯主义……
财富是自由的附属品,为了捡钱弯腰的人们,往往直不起腰,便无处花钱了。
--
7.23 暑假发生了11学生死亡的违规施工案件,从停工到事发有8个月好几次检查,不是什么『自然灾害』
在这个梦之国度,灾害是按人数计算的。它们才不管你怎么死的、不思考未来自己会面临同样, 只懂用私家权力贯彻皇帝和新装,
就像欲加之罪里的秦桧,理由莫须有。 国事莫须有,社会和国民待遇,自然没有。
“民主不能当饭吃,但绿化带可以
逃生通道不能走,但铁丝网可以
大坝墙不能洗脑,但脱口秀可以
洋人洋货都辱华,西装红领可以
日是军国主义,留岛不留人可以
农民工商不劳动,但执政党养你
”
YouTube
悲伤的齐齐哈尔,道路以目的市民。|齐齐哈尔|三十四中|体育馆坍塌|黄桃罐头|每一秒都痛苦|王局拍案20230727
成为此频道的会员即可获享以下福利:
https://www.youtube.com/channel/UCBKDRq35-L8xev4O7ZqBeLg/join
7月23日下午,齐齐哈尔市第三十四中学校体育馆发生坍塌事故,11位校女排队员不幸罹难。在短短的三天时间内,三十四中的门口堆起了看不到尽头的鲜花,还有当地群众和全国网友给孩子们送来的黄桃罐头。家长们悲伤的情绪也开始集中爆发,一段事发当日医院的视频再次激起了全国网友的愤怒。
当地官员为什么不让家长见孩子?他们让家长签字的文件又是什么?为何明明没有生命体征还声称在抢救?…
https://www.youtube.com/channel/UCBKDRq35-L8xev4O7ZqBeLg/join
7月23日下午,齐齐哈尔市第三十四中学校体育馆发生坍塌事故,11位校女排队员不幸罹难。在短短的三天时间内,三十四中的门口堆起了看不到尽头的鲜花,还有当地群众和全国网友给孩子们送来的黄桃罐头。家长们悲伤的情绪也开始集中爆发,一段事发当日医院的视频再次激起了全国网友的愤怒。
当地官员为什么不让家长见孩子?他们让家长签字的文件又是什么?为何明明没有生命体征还声称在抢救?…
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小时“确认” 算法,最后大体没改
(没错,”大无语事件“,数 学 家 们的代码太乱了,bing都不知道谁是正确…… 我甚至无法证明
—
无语了,你看不懂的信息能不能不要过滤掉? 广度和深度都挺重要 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必须是正方
(#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必须是正方
Telegram
duangsues.is_a? SaltedFish
我真的不想吐槽数学和某些程序员的 xywh ijnm 定义了。我眼里 nm=hw, ij=yx ,是和书写、访问顺序对应的,但是资料说 x行y格, j行j格
随地for ijkhl 的面条代码,把我整困惑了,数学家是否连Excel、物理行向量的模型都没统一好?
而且看到很多版本的,有用点乘支持b(常数)矩阵,但变量名完全不一样
def elim(arg):
n,m = arg.shape; assert n<=m, "没有唯一解"
for j in range(n):
# 找到j…
随地for ijkhl 的面条代码,把我整困惑了,数学家是否连Excel、物理行向量的模型都没统一好?
而且看到很多版本的,有用点乘支持b(常数)矩阵,但变量名完全不一样
def elim(arg):
n,m = arg.shape; assert n<=m, "没有唯一解"
for j in range(n):
# 找到j…
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.]
可以解析,或随机测试
#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.]]