@
zhonghanwen #15 哥, 你要是说有技术上产品上的交流, 好歹把 v2 当成简中版 hacker news 用, 别把 v2 当成抖音用
没必要转成视频, 静态图就用-c:v mjpeg 编码成图片就行, 除非你要把歌词/字幕硬编码到图像里
比如
ffmpeg -i 封面图.jpg -i 2.主人笑的话我也开心.mp3 -i ./2.主人笑的话我也开心.mp3.vtt -c:v mjpeg -vf scale=1280:-1 -c:a libopus -b:a 192k -to 665.600000 -disposition:a:0 default -disposition:s:0 default 2.主人笑的话我也开心.mkv
抢首发 yu7, 这车搞不好你开两年可以原价打 9 折卖出去
带着你爹去试车呀, 很多油车老顽固都是试了新能源之后立马真香的
多试试总归吃不了亏
arch+i3wm?
我在用 manjaro+kde, 感觉挺重的, 4G 内存感觉吃紧
要不你把交换文件设置到 8G 以上试试
别换, 经济好时国人爱面子, 经济不好时国人爱里子
此时此刻别因为面子原因乱花钱
Promise 借鉴了 Monad 的一些设计思想, 用 CPS 变换优化实现链式组合异步操作(解决异步的回调地狱)
async await 是类似于 Monad Comprehensions 的语法糖实现, 不过运行机制不一样, async await 依赖 javascript 运行时模型
原有的异步调用代码
asyncOp1((result1) => {
asyncOp2(result1, (result2) => {
asyncOp3(result2, (result3) => { /* ... */ });
});
});
Promise 优化之后的代码
asyncOp1()
.then((result1) => asyncOp2(result1))
.then((result2) => asyncOp3(result2))
.then((result3) => { /* ... */ });
使用 Monad Comprehensions 语法糖将中间变量从回调中取出来
result1 = await asyncOp1()
result2 = await asyncOp2(result1)
result3 = await asyncOp3(result2)
题外话, promise 不是标准的 monad, 但是有很多 monad 的特性, 比如统一的异常处理 (async await 之后就可以异步 try catch 了), 不然的话你想想每个回调都传一个 reject 参数来处理异常 (人肉 if err != nil 是吧)
所以说那些 go boy 用 if err != nil 来嘲笑 try catch 就挺逆天的, 学术界用几十年的时间来消除 errcode, 然后这玩意儿在 go boy 嘴里成最优雅的语言了😅
题外话 2, 其他语言的 Monad Comprehensions 语法糖举例
haskell
compute :: Maybe Int
compute = do
x <- Just 3
y <- Just 5
return (x + y) -- 结果为 Just 8
csharp
var query = from x in new[] { 1, 2 }
from y in new[] { 3, 4 }
select x + y; // 结果为 { 4, 5, 5, 6 }
fsharp
let asyncExample = async {
let! x = async { return 3 }
let! y = async { return 5 }
return x + y
}
scala
val compute: Option[Int] = for {
x <- Some(3)
y <- Some(5)
} yield x + y
swift
func compute() async -> Int {
let x = await fetchData()
let y = await processData(x)
return y
}
kotlin
suspend fun compute(): Int {
val x = async { fetchData() }
val y = async { processData(x.await()) }
return y.await()
}
java
没有😅
go
没有😅
rust
没有语法糖, 有个?(操作符)可以模拟类似功能(result option)
基本上后来兴起的工程向的语言都给异步相关的 api 实现了 monad comprehension, 一部分语言(fsharp kotlin 啥的)可以自定义语法
题外话 3
貌似一些 lisp people 极度反感 monad (和 go boy 殊途同归了属于是), clojure 社区里贴大字报明确反对标准库里添加 monad 实现, 吵了好几十条😅
说实话苹果的造车项目不选择中国的供应链这件事我有点理解不了
bba 保时捷在燃油车行业叱诧风云百十年, 苹果造车项目刚启动就想骑在这些豪门头上拉粑粑, 结果把豪门得罪干净, 只能找日韩的二线供应商
另外厨子本身就跟中国政府的关系良好, 几乎年年来北京开会, 却担心政治风险不敢用中国供应链, 美帝不是商业帝国吗, 你世界第一市值的大公司游说不了一些国会议员? 马一龙危急关头投靠上海, 解救了特斯拉, 还和小强建立了友好的合作关系, 随着小强升任总理, 马一龙的产业在国内稳的一批(结合当前德国烧特斯拉有感), 而现在马一龙又是懂王身前的大红人, 中美政府通吃....
不懂厨子为啥投鼠忌器
教你咋说服爹妈
别说现在国产新势力有多么多么好, 你就说现在买 BBA 都落伍了, 都是土老帽才买
刚刚搜了一下, 现在日语常说的オナニー(紫薇)居然是德语词....
没需求纯玩的话建议 scheme/racket, clojure, fsharp
排名有先后
clojure 和 fsharp 是很硬的工程向语言, 分别可以用 jvm
系和.net 系生态, 兴趣转职业也没问题
scheme/racket 是纯学术研究向, 用来开阔眼界
嗨, 说白了还是撅醒人和老古董的冲突
问几个问题
1. 一般声明局部变量的时候, 要不要声明为 final
2. 如果需要闭包的效果, 你要咋实现(1. 包成数组, 2. 包成原子引用 AtomicReference, 3. 新建个类)
作为 kotlin 撅醒人现在干活写 java 实在是太痛苦了
@
L4Linux #27
别说, china irl 上真有不少人认为李有那么大影响力
我的建议是, 如果李有那么大能耐, 不如直接去国务院做内参, 还发什么币啊
想明白一点, 大多数领导岗位都不需要专业技能, 他们负责揽活背锅, 你只是打工而已, 背锅的事让大人物去干