科技圈🎗在花频道📮
华为Harmony OS 4.0版本将于8月正式发布 来源:新浪微博 投稿人:Arkansas State Police 投稿:@ZaiHuaBot 频道:@TestFlightCN
#linux #twitter 🤡Unicode Character “𝕏” (U+1D54F) https://wayland.social/@compositor/110768798303454842
wayland.social
Wayland.social (@compositor@wayland.social)
Welcome to Wayland.social: the successor to X.com.
dnaugsuz
#android IPC机制 contentResolver.query(uri, projection, selection/*where*/,selectionArgs, sortOrder) //C#LINQ的拙劣模仿者.. 不自动反序列化(Parcel-able)吗 url=parse("content://demo权限/user"), 会进行 resolver.acquireProvider("demo")? ,较耗时: ContentProvider增删改的底层是 Binder(RPC调用)…
#learn #android #code 以下kt代码里 (o: 缩进) 等于 o.apply{}
Looper 是按时间点排序的Channel<T>(阻塞add,回调pop)
触发“消息T”为
又如 setTimeout 靠
resolver.增删改查基于 Binder RPC 和 Parcel-able序列化。
跨进程的
它用Binder转发调用给
等同 AIDL:
自定义 View: 重点是布局尺寸、交互动画
子UI=函数
ViewHolder= 一个本不该由开发者负责的React式对象缓存
onTouchEvent 可实现简单拖拽(通过冒泡实现多级Tabs), ViewGroup里可以Intercept(全局手势,.)
写 demo。最初是能来演示和说明、比较解决方案的优缺点,但也要注重扩展性。
MVVM(Model-View-ViewModel)是一种软件架构模式,可以实现视图和数据的双向绑定
data class Model { fun 业务逻辑 }
View 是负责展示用户界面的层
ViewModel 是负责连接 Model 和 View 的缓存层,它可以在视图变化时更新数据,并且能够感知生命周期,避免内存泄漏和不必要的数据请求。
LiveData: 可观察的数据,暴露为 reactive Flow
Room: 提供强类型的 SQLite 语句,以及Flow查询流
WorkManager: 据前提(网络状态,电量状态等)来安排后台任务起停,重启后仍然能够执行。
Navigation: 通过统一的资源文件来定义应用内(单页)导航。
Paging: 与 RecyclerView 结合使用,实现分页加载网络数据的库
Hilt: Dagger 依赖注入库的kt版,支持 Android 生命周期和组件
请求 动词
Head ContentType|UA|SetCookie 等浏览器BOM调用
ObjPath 是静态页,json api,或数据的默认界面(可爬虫)
map, filter, reduce 等列表处理都是高阶函数,只有接受{}参数才可以加 inline fun ,内联 forEach{可含非局部return}
toInt, let{it+1}, apply{xx=1} 是带 context(如Str) 隐式.参数的函数。需要用 "1".let(Str::toInt) 来引用
Kt 最令人称道的是 ?.let{}, 可变性listOf DSL, when{is} 和 if 表达式, try与OOP的改良: runCatching{}, compaion object, sealed-data class , context(T) infix fun, Array<out Str>, 不钦定int和'+'等数据和运算
import kotlinx.coroutines 是对“在函数队列”执行回调的封装,或者说调度“函数级线程”
协程 +隔离调用栈=线程 +隔离内存=进程
任何 suspend (T)->R 都可以
cc,如
Looper 是按时间点排序的Channel<T>(阻塞add,回调pop)
触发“消息T”为
Event(what,a1,a2,obj, when)时这叫send-handle,为函数时叫post-dispatchHandler(main).post{} 实现 (休眠函数值).withContext{} 切换线程又如 setTimeout 靠
h.postDelayed(ms){} 或监听 sendMessageDelayed(监听器ID, ms)
它占用某线程的调用栈。prepare队列,再靠 new Handler(默认本线程或mainLooper): handleMsg={按it.what 触发click等监听器}
Thread {
Looper:
prepare()
sub=Handler: //handleMessage
"sub收到: ${it.obj}"
loop()
}.start
main=Handler()
main.sendMessage(Message.obtain: obj="如何让sub收到?"; what=时间点)
ContentProvider 是对C#LINQ的拙劣模仿,让SQL执行filter{} 以避免在system等框架(联系人、日历、短信)和app间传输完整的表格//日历=get(name,title,dt0,dt1) Calendar(dt0>=$0&$1<=dt1) minAt0 dt0
fun 日历(date:Range) = CalendarContract.Events.let:
ctx.getContentResolver().query(CONTENT_URI, //Uri()会 acquireProvider
["display_name" TITLE DTSTART DTEND],
"$DTSTART >= ? AND $DTEND <= ?", date.let: [first last],
"$DTSTART Asc"
).let: // 接着,从表格cursor里“反序列化”出数据
while(moveToNext()): 事件(getString(nameIndex), )
最好用 new CursorMapper<>(事件.class).convert(this) 的 @Column CursorWindow.getInt,. 是表格的共享内存实现resolver.增删改查基于 Binder RPC 和 Parcel-able序列化。
跨进程的
acquire 由 AMS 充当中间人,(已缓存或)拉起进程请求Provider, 等待后提供 Proxy实现的(interface Provider)它用Binder转发调用给
class CP.Transport: IContentProvider ,后者会解包计算并打包回调。等同 AIDL:
// src/main/aidl/ISvc.aidl
interface ISvc {
int getN();
List<Str> getUsers();// 对象参数要前置 in
}
// src/main/kotlin/ISvc.kt
class ISvc: Service(), ISvc.Stub {
var n=0
onBind(intent)=this
}
class MyActivity : RpcActivity() {
onCreate()=makeRpc<ISvc>()
inline fun<reified T> makeRpc() {
val conn=object : ServiceConnection { //v 创建接口
onServiceConnected(id, :IBinder?) {rpc = T.Stub.asInterface(binder)}
onServiceDisconnected(id) {rpc=null}
}
bindService(Intent.at(T::class.java), conn, BIND_AUTO_CREATE)
onDestroy={unbindService(conn)}
}
fun Intent.Companion.at(T:Class<*>) = Intent(T.name).apply {setPackage(T.`package`.name)}
} 自定义 View: 重点是布局尺寸、交互动画
type UI=({dataVars,.})=>HTMLvar
自定义属性=data class子UI=函数
ViewHolder= 一个本不该由开发者负责的React式对象缓存
onTouchEvent 可实现简单拖拽(通过冒泡实现多级Tabs), ViewGroup里可以Intercept(全局手势,.)
写 demo。最初是能来演示和说明、比较解决方案的优缺点,但也要注重扩展性。
MVVM(Model-View-ViewModel)是一种软件架构模式,可以实现视图和数据的双向绑定
data class Model { fun 业务逻辑 }
View 是负责展示用户界面的层
ViewModel 是负责连接 Model 和 View 的缓存层,它可以在视图变化时更新数据,并且能够感知生命周期,避免内存泄漏和不必要的数据请求。
LiveData: 可观察的数据,暴露为 reactive Flow
Room: 提供强类型的 SQLite 语句,以及Flow查询流
WorkManager: 据前提(网络状态,电量状态等)来安排后台任务起停,重启后仍然能够执行。
Navigation: 通过统一的资源文件来定义应用内(单页)导航。
Paging: 与 RecyclerView 结合使用,实现分页加载网络数据的库
Hilt: Dagger 依赖注入库的kt版,支持 Android 生命周期和组件
请求 动词
http(s)://Host/ObjPath?Param#ID '\n'Head Body
动词 GET|POST/PUT|DELETEHead ContentType|UA|SetCookie 等浏览器BOM调用
ObjPath 是静态页,json api,或数据的默认界面(可爬虫)
map, filter, reduce 等列表处理都是高阶函数,只有接受{}参数才可以加 inline fun ,内联 forEach{可含非局部return}
toInt, let{it+1}, apply{xx=1} 是带 context(如Str) 隐式.参数的函数。需要用 "1".let(Str::toInt) 来引用
Kt 最令人称道的是 ?.let{}, 可变性listOf DSL, when{is} 和 if 表达式, try与OOP的改良: runCatching{}, compaion object, sealed-data class , context(T) infix fun, Array<out Str>, 不钦定int和'+'等数据和运算
import kotlinx.coroutines 是对“在函数队列”执行回调的封装,或者说调度“函数级线程”
协程 +隔离调用栈=线程 +隔离内存=进程
任何 suspend (T)->R 都可以
suspendCoroutine { cc-> cc.resume(异步r) },以此实现awaitcc,如
delay(1_000/*, 回调cc*/) 能够被 dispatch(context: CoroutineContext, cont: Runnable)
coroutineScope/runBlocking {} 都会建立新的cancel/join域,二者的区别在调度器是否继承自旧的launch(Dispatchers.Main) 同理Forwarded from dnaugsuz
#bing #code
Hackr/2023 列出了 40 多个常见的 Android 面试问题和答案,涵盖了 Android 的构建过程、IDE工具、AIDL、Fragment(单页历史栈PJAX)、Activity
GH 仓库收集了更多,如协程、Flow API、Retrofit、Room
javapoint - 架构、四大组件、通知、WebView、布局、动画、广播接收器、数据存储等主题
Looper是按时间点排序的Channel<T>(任意线程add,回调pop)
触发“消息T”为
AIDL 的定义-使用侧:
Binder 提供了 CursorWindow.getInt 的共享内存的封送
写 demo。最初是能来演示和说明、比较解决方案的优缺点,但也要注重扩展性和复用。 我说的不是“缓存复用”等样板化的代码
MVVM是一种软件架构模式,可以实现视图和数据的双向绑定
ViewModel 是负责连接 Model 和 View 的缓存和编辑层
Jetpack 还有 LiveData(reactive Flow), Room(强类型SQL), Navigation(& data Paging)
请求 动词 http(s)://Host/ObjPath?Param#ID '\n'Head Body
动词 GET|POST/PUT|DELETE
Kotlin 最令人称道的是 ?.let{}, 可变性listOf DSL, when{is} , try与OOP的改良
map, filter 等列表处理都是高阶函数, 内联的 forEach{可含非局部return}
toInt, let{it+1}, apply{xx=1} 是带隐式this参数的扩充函数
import kotlinx.coroutines 是对“在函数队列”执行回调的封装,或者说调度“函数级线程”
协程 +隔离调用栈=线程 +隔离内存=进程
delay() 等协程以回调,而非调用栈保存返回地址;因此调用者也以 async { } 内
Scope{} 能创建 cancel/join(wait)域,而 launch(withContext){} 可切换调度器
//a.partition{it==0}
用读写指针(朝右读,遇到非0: 交换)更快 ,或者朝左读(遇到0: 交换) ,如果0的占比少
这是qsort() 的步骤。
Hackr/2023 列出了 40 多个常见的 Android 面试问题和答案,涵盖了 Android 的构建过程、IDE工具、AIDL、Fragment(单页历史栈PJAX)、Activity
GH 仓库收集了更多,如协程、Flow API、Retrofit、Room
javapoint - 架构、四大组件、通知、WebView、布局、动画、广播接收器、数据存储等主题
Looper是按时间点排序的Channel<T>(任意线程add,回调pop)
触发“消息T”为
Event(what,a1,a2,obj, when_ms)时,这叫send-handle,为函数时叫post-dispatchThread("httper"):
Looper: prepare(); h=注册Handler(可选); loop()
h.send__AtFront(msg)
IPC 常用方法:Bundle(Map), 文件Intent, Socket, Messenger(Loop); AIDL, ContentProvider(都基于 Binder)AIDL 的定义-使用侧:
// src/main/{kotlin,aidl}/ISvc.{kt,aidl}
class ISvc: Service(), ISvc.Stub {
fun getN():Int
fun getUsers(): List<Str> //.aidl 只支持interface{},对象参数需前置in
var n=0
onBind(intent)=this
}
XML清单IDE会自动填写, .aidl 请AI生成吧class MyActivity : RpcActivity() {
onCreate()=makeRpc<ISvc>()
makeRpc() {
val on=object : ServiceConnection { //v 把Binder连接,转化为接口
onServiceConnected {rpc = T.Stub.asInterface(binder)}
onServiceDisconnected(id) {rpc=null}
}
bindService(Intent(T.name).apply {setPackage(T.`package`.name)}, on, BIND_AUTO_CREATE)
onDestroy={unbindService(on)}
}
}//本来1行的事还写样板代码。 你玩不了开发,是 android.xx 开发者们玩你
ContentProvider 是对C#LINQ的拙劣模仿,让system(联系人、日历、短信)等框架的SQL执行filter{} 来避免传输完整的表格给appBinder 提供了 CursorWindow.getInt 的共享内存的封送
// contacts.filter{str in it.name}.sortBy{it.startDate}
CalendarContract.Events.run:
getContentResolver().query(CONTENT_URI, 相关@Column, "id=?",[id], "$DT_START Asc").mapRows {
new CursorMapper<>(日历事件.class).convert(it)
}
自定义 View: 重点是布局尺寸、交互动画type UI=({dataVars,.})=>HTMLvar
事件分发和(Object)View 的复用靠MVVM就好了写 demo。最初是能来演示和说明、比较解决方案的优缺点,但也要注重扩展性和复用。 我说的不是“缓存复用”等样板化的代码
MVVM是一种软件架构模式,可以实现视图和数据的双向绑定
data class Model { fun 业务逻辑 }
View 是负责展示用户界面的层ViewModel 是负责连接 Model 和 View 的缓存和编辑层
Jetpack 还有 LiveData(reactive Flow), Room(强类型SQL), Navigation(& data Paging)
请求 动词 http(s)://Host/ObjPath?Param#ID '\n'Head Body
动词 GET|POST/PUT|DELETE
Kotlin 最令人称道的是 ?.let{}, 可变性listOf DSL, when{is} , try与OOP的改良
map, filter 等列表处理都是高阶函数, 内联的 forEach{可含非局部return}
toInt, let{it+1}, apply{xx=1} 是带隐式this参数的扩充函数
import kotlinx.coroutines 是对“在函数队列”执行回调的封装,或者说调度“函数级线程”
协程 +隔离调用栈=线程 +隔离内存=进程
delay() 等协程以回调,而非调用栈保存返回地址;因此调用者也以 async { } 内
suspendCoroutine{it.resume} 自动传入delay.then(成功).catch(报错)Scope{} 能创建 cancel/join(wait)域,而 launch(withContext){} 可切换调度器
//a.partition{it==0}
a=[1,0,0,2,3], b=[]; a.filter(x=>x==0?(b.push(x),0) : 1).concat(b)代码烂 但单次迭代快(就像单行filterMap只好用map.flat)
用读写指针(朝右读,遇到非0: 交换)更快 ,或者朝左读(遇到0: 交换) ,如果0的占比少
这是qsort() 的步骤。
Hackr.io
40+ Top Android Interview Questions and Answers in 2025 [Updated]
Find out the top most popular Android interview questions (and detailed answers), from beginner to advanced questions, so you’ll ace your upcoming interview.
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…