duangsues.is_a? SaltedFish
60 subscribers
609 photos
6 videos
91 files
562 links
🌶🐔🐟 duangsuse 的日常
尤其喜欢发些奇奇怪怪的东西
和转载别人的东西
Download Telegram
#bash
alias DEB='cu sudo dpkg -i --force-all'
cu(){ eval $(node -p 'gc={"?d1":"--depth=1","?dn":"--recurse-submodules","":""}; process.argv.slice(1).map(s=>{try{u=new URL(s),s=/^git/.test(u.host)?
`git clone ${gc[u.search]} git@${u.host}:${u.pathname.slice(1)}.git&&ls -td */`:
`wgetHL ${u}`;s=`$(${s}|head -n1)`}catch{}return s}).join(" ")' $*);}

cnf-x() {
[[ ! "$@" =~ ' /' && "$@" =~ / ]]&&cd "$(mkdir -p $@;echo $1)" ||([[ $1 =~ ^[0-9,]+$ ]] &&cut -d' ' -f $1|sed -nE "$2p" ) ||
([[ $1 =~ ^\. ]] &&jc ${@:2}|tee e.json|jq -rcM "$1"|sed '1s/^/(/; $s/$/)/'|node -p) ||(ev=CNF$1;[ -n "${!ev}" ] &&${!ev} "${@:2}") ||
([ -z $(command -v $1) ] &&command-not-found $1) ||(
for opt in "--help" "-h"; do $@ $opt 2>&1|cnfx-HL &&break; done
sleepHL 2 &&for doc in "tldr" "man" "man -k"; do $doc $1 &&break; done
)
}
alias ?=cnf-x grepp='grep --color=always -P'
CNFimport='pip install -U'; CNFjs='sudo npm -g i'; CNFdoc='docker pull'
CNF_fmt='[[/(?<=\s-[\w-.]+)(( | ?[=<\x27[])[^\s:,,]+)/g, 33],[/,? ?(\s-[\w-.]+)/g, 32],[/([A-Z][A-Z0-9_]{2,})/g,34]]'
command-not-found() { sudo pacman -S --noconfirm --needed $@ ||pacman -Ql $@|grepp '/etc|lib/'; pkgcSel $1; return 0;}
cnfx-HL(){ node -p "$CNF_fmt.reduce((str, [A, B]) => str.replace(A,\`\x1b[1;\${B}m\$1\x1b[0m\`), process.argv[1])" -- "$(cat)"; }

sleepHL(){ python -c "$HL_0
dt=$1*10;t0=time.time()
try: goPB(dt,delay(iter('?'*dt),.1))
except: print(f'{time.time()-t0}s :) cancel'); sys.exit(1)";}
wgetHL(){ python -c "$HL_0
for sh in hear(f'LANG=C {sys.argv[1]} 2>&1', vp:=[*map(re.compile,sys.argv[2:])]):
time.sleep(1); f=iter( F.partial(open(vp[1],"rb").read,1), b"")
print(vp[1]); sys.stdout=sys.stderr; goPB(int(vp[0]),f)
sh.wait()
" "wget -dc $1" 'Length: (\d+)' "Converted file name.*-> '(.*)'";}
cliHL(){ ls;}

HL_0='import pip._internal.cli.progress_bars as PB, time,sys, re,subprocess as P, functools as F
goPB=lambda n,su: [*PB._rich_progress_bar(su, bar_type="on",size=n)]
def hear(sh,vp):
nvp=len(vp)
for s in (po:=P.Popen(sh, stdout=-1,text=True,shell=True)).stdout:
for k,v in enumerate(vp):
if nvp==0:yield po
if not isinstance(v,str)and (m:=v.match(s)): vp[k]=m.group(1); nvp-=1
def delay(xs,dt):
for x in xs:yield x;time.sleep(dt)
'
xfor() { for x in `sed 's/\n/ /g'`; do $@ "$x"; done ;}
zenity-sel(){ s=`cat`; test -n "$s"&&zenity<<<$s --title "$1" --list $(eval echo --column={$2}) $3;}

pkgcSel(){ k=$(pkgconf --list-all | grep -P $(sed 's/lib/(lib)?/' <<<$1) |sed 's/ \s*/\n/'|zenity-sel "Debug package $1" cffi,usage)||return
for fp in $k $1/$1 $1 $k/lib$1/$1; do cpp -undef $(pkgconf $k --cflags-only-I) <<<"#include <${fp}.h>"|grep -v '^#' >sel.h &&break; done
(sleep 5&&sed -E 's/__attribute__[^;]*//g;s/__(inline|restrict)//g;s/typedef .*va_list.*//g;s/\w*va_list/.../g' -i sel.h)&
echo "import cffi; ffi=cffi.FFI();ffi.cdef(open('sel.h').read()); C=ffi.dlopen('$(pkgconf $k --libs)'[2:])"
#fuck u cffi, what <cdata>? Is strconv&cdef(errItem=ignore) that hard?
}
# 'isatty[]=0;; readdir[_,"/"]=0'; export GTK_DEBUG=interactive LD_DEBUG=all
frida-cffi(){ ls;}
ytdl-spi() { python -c 'import yt_dlp,sys
u=yt_dlp.YoutubeDL({"cookies-from-browser":True}); del u._ies["Generic"]

for x in sys.stdin:
try:print(u.extract_info(download=False, url=x))
except: print()
'
}
#f5 %.pyc; f5 /usb /clip


BAT() {
i=0;eval `cat /sys/class/power_supply/BAT$i/!(*/) 2>/dev/null|grep POW`
st=$([[ "$POWER_SUPPLY_STATUS" == C* ]] &&echo ⚡️)
tput setaf 6 bold;
echo "$(quote $POWER_SUPPLY_MODEL_NAME) $POWER_SUPPLY_TYPE by $POWER_SUPPLY_MANUFACTURER#$POWER_SUPPLY_SERIAL_NUMBER $st"
echo "IU=${POWER_SUPPLY_POWER_NOW} mW"
echo "C0=.${POWER_SUPPLY_CAPACITY}C=${POWER_SUPPLY_ENERGY_NOW} mWh"
tput setaf 1;echo "C=$(echo "scale=2;(${POWER_SUPPLY_ENERGY_FULL}/${POWER_SUPPLY_ENERGY_FULL_DESIGN})" | bc)design=${POWER_SUPPLY_ENERGY_FULL} mWh"
echo "U=${POWER_SUPPLY_VOLTAGE_NOW} mV > ${POWER_SUPPLY_VOLTAGE_MIN_DESIGN} mV"
tput sgr0;
echo Lm=$(echo `cat /sys/class/backlight/*/{,max_}brightness` 10/ /p|dc)0% 💡
echo "nCyc=${POWER_SUPPLY_CYCLE_COUNT}🔋"
echo "CpW=$(echo "scale=3;(${POWER_SUPPLY_ENERGY_NOW}/${POWER_SUPPLY_POWER_NOW})" | bc)h"
}
unit() { node -p 'process.argv[1].replace(/(\d+) m(Wh?|Ah?|V)/g, (m,n,k)=>n/1e6+" "+k)' "`cat`" ;}


bili-m4s() {
[ -f ls ]||for f in */c_*/entry.json; do jq -r '$U+.bvid+".png",.title,.owner_name,.bvid,(.downloaded_bytes/1024e2),.cover' --arg U $PWD/ <$f
ffmpeg -loglevel quiet -n -i $(dirname $f)/*/video.m4s -ss ${1:-1} -vframes 1 $(jq -r '.bvid+".png"'<$f); done >ls
zenity-sel 您要提取的缓存 thumb,标题,up,BV,MB,cover --multiple <ls #--imagelist
}
Forwarded from dnaugsuz
De Bruijn 索引。 https://magic.huohuo.moe/html/DBI.html

PLT人起名字也真是乱起,那么多抽象玩意(譬如Sum/Prod来表示 union{int tag; struct{}} 的,你是 Prolog 能DFS出所有BoolPair也就罢了, 没那个功能还硬套嘛。。)
DBI居然还是参考卡牌游戏的魔术

UUID,在ES6里叫 Symbol(),等价 new Obj。不过bash那种 $1 是不会冲突的,看了下,你大概把符号的"文本形式" 视为值了

(z.x. (z.x)) z 里(z.x), x本就是(_=> _.upval[1]) 的语意,而型参z.并不是"z"。
哪怕没有用嵌套KV做把ID解析到ValRef,至少也该知道替换不是对argName这些反射数据进行的。
可以说此问题的前提就是没有尊重AST scoping,[Str 的括号树]并不是lambda的本质, lisp本就缺少用于复用节点构成计算图的let (他们说用函数..),搞成递归数组就更空洞了

入.的自由变量,其实就是this变量, A.B. A+B 即 \2 $1+$0
DBI在apply(f,x)时 f变浅,x变深, (A. [A B.A]) 0 即 \ [$0 \ $1] 到 \ [0 \ $2]

确实不好讲,因为$2明明可以在代换时就替换为0,为啥既要重命名,又不绑定到闭包数据结构呢?

最后,解释器要100行…… 而且就是单replace()功能
好吧这就是java
duangsuse, [2024/8/13 23:33]
https://magic.huohuo.moe/html/EvalStrategy.html 这篇说 call-by-lazyName 也忽略了一个重点

()=> 的本质是对象,它完全能有非局部引用。 你为了实现 if(, print..) 这些越DSL的俎代庖的“优越性”,不遵循x86 ABI 这些规范传值,结果只能是更慢,而非少求值了几次。

设计一种东西总得谈概率吧? a||b||c 确实能节省,但autoclosure这种,有必要给人讲明白,而不是为了解决而解决

duangsuse, [2024/8/13 23:45]
https://magic.huohuo.moe/html/Algeff.html

也没必要写成 catch{e.resume} 这么奇怪的形式。Eff 就是静态的把catch{} 依赖注入给throw()而已
那么,如果不需要cont,直接throw again 就行

只是把java的组件级依赖注入改成语句级,然后yield给一个根本不需要new函续体的handler。

Exception 之所以不叫Error,就是因为它是一种可以默认传入的函数值参数,就像 open fun
非局部返回只是一种愉快的副作用,至于Retry和替代Promise什么的, Algebiac Effect 显得高射炮打蚊子。 异常+协程 仍然是最优解

>发生记录日志的作用,可以预先写一个输出到标准流的的执行器(Handler)一个输出到文件的执行器然后在调用函数的时候按需组合。这也就是它是代数的(Algebiac)的原因

这理由也够扯的。 「代数」?线性代数够普世吧? 它和编程界的组合compose可一点儿关系也没有,丑陋的矩阵处理
挪用Java界的依赖注入文化就算了。 Effect 根本不能区分longjmp() 和真正要切换有栈协程的优化情况
哪怕是C++和Linux 引入的协程/进程上文切换/fork,往往也比(多发)函续体、CPS 这些所谓理论强多了。一个自动传回调讲成啥了。

duangsuse, [2024/8/14 00:18]
https://magic.huohuo.moe/html/Parsec.html
嗯,又是一个被复杂化的简单问题。 就像某些CS课,“能够写编译器的编译器呢!”

不过是重造了x86调用栈和forif的轮子,和那些把链表当列表处理的人一样。并不重视语意,只是用他们的“特色”捆绑一些最基础的工具。
parser只是编译器的第0步,而且是完全能省略的;然而有人觉得那才是最重要的。

在谈parser是什么前,你的第一页要说明输入输出是什么格式,比如本文用正则来对照就很好
“简单是可靠代码的先决条件,而非可靠的牺牲品——Dijkstra, 发明递归的人”
“优雅的程序与它对应的数据,在读写前直观绑定——Daniel Friedman, 箭头函数的先驱”
“业界有两个设计软件的方法,一种简单大方,明确没有堆砌缺陷,一种繁琐抽象,连缺陷都难以写明确——Hoare, 快速排序之父”

https://t.iss.one/dsuse/18717
Forwarded from dnaugsuz
> 计算机发展的历史就是人类尝试控制复杂度的历史,运行时有时间复杂度空间复杂度,编写时有代码复杂度和逻辑复杂度。封装抽象出的黑盒系统可以把复杂度分离到不同部分,而每一个部分的复杂度都能控制住人脑能接受的范围。模块化使我们能在不同项目间共享复杂度。而良好的编程习惯可以让代码变得有序,减少代码层面的复杂度。运行时的调度、垃圾收集利用算力分担手工管理的复杂度。
https://iota.huohuo.moe/OO-in-C.html#:~:text=Java%20不支持像

噗,原来你们(例如龙书封面)也知道复杂度是个坏事啊

可你们起的术语、写的文章,在我看来根本是在违背自己的哲学啊。
import this 用凯撒密码加密了源码,但Pythonic是真实的。包括中文PLT却很少强调「编程的理论是为了消灭复杂度」这点

其实 magic.huohuo.moe 的许多文章,例如 F-Bounded Polymorphism(Self type) 都可以有一句话提纲,让用户有个前置印象再去看
再比如 HKT<List,Int>, Java泛型本质上是繁多类型(List literal as type)而不是常量函数, 不过 Higher Kinds 最终的价值也是把'*'填完生成一个Matcher去检查字面变量, 那就是用HKT1<P,T>强转了

不过介于我看的这几篇都不得要领,在某种理论上甚至不如Lua这些工业糖精聪明,我也没时间去读剩下的了
比方说吧,JS Bool, Error, List, 这些明明都能用 [12,3].As(x=>).or("empty"); fetch.As(e=>"fail", x=>x.body) 的"箭头"去处理

这就是FP的category,而且不需要引入任何新概念("compose?") 或"不准确的类比"。它们都有零元(x=>x, false, []..)和join(e.g. x=>[x]) ,而且当然能 A=> B=>curry(A+B)
结果是语言的forif,filter map可以被逻辑查询替代,而且是符合4定律的: 哪怕 Functor[A] 变成 A,Any也不能变回Any 。js自带结合与组合律

而FP呢? 除了空壳还是空壳。 如果说Functor只是和C指针一样拙劣而且用途更小(无所不包,但缺斤少两,因此才被淘汰) 的抽象,你们也不肯改编吧

我不知道CS有什么理由向癖好「未定义先使用」的数学书们学习。他们根本不知道明确与严谨该怎么写,他们甚至没有与几百个人合作写过1本书("交流" 可不是件简单的事!),可以拍脑门地使用各种希腊符号(现代物理已经减少了rho这种歪七扭八的东西)。
Forwarded from dnaugsuz
https://magic.huohuo.moe/html/ADT.html
想起行列算数(RowCol TypIs)了
类型是一张表格。横列是A,B..或具名的值,纵行是它的构造样板,也就是校验函数
用??语法打开或新建表格,添加函数列或构造样板。只要参数覆盖了类型签名对应的列,就能调用操作

?? Col
Student -name-id(Str Int)
#共有str*int种可能性,也叫乘积类型
Vec2(N N)
Date(Int Int)

- say -An(Student) "{name}({id})"

?? SchoolPerson
-name Str
Student -id(Int)
Teacher -office(Str)
#共有(学生+老师)种可能性,也叫求和类型

?? Bool
YY; NN
?? Nat
O
十1 -An(Nat) #peano,链表长度数
two O.十1.十1

?? [T Link]
Cons -x-?xs(T Link)

?? Json fn # 以允许继承,即便已有构造器
Lit -?val(Bool) #YY,NN,NO

?? Json
Lits -a([Json Ln])
KLit -k([Str Json KV])

GADT(泛型adt)好歹把 Tagless和Final讲一下啊
btw. Tagless是指用virtual虚表取代 type tag 做union的意思
最开始年轻的牛和猴,俩一起反天,基本没有对手,但是牛有老婆,有牵挂,天庭想阴招坑了铁扇让她怀孕骗老牛半路跑路,结果剩下一个猴被如来搞了,牛发现娃不是自己的种,认为铁扇骗自己,坑了自己兄弟,跟铁扇闹翻了,铁扇解释自己也是被逼的,也接受不了就跟牛分居了,牛也一怒之下跑去找玉面狐狸不跟铁扇玩了。
猴子被搞过了几百年开始西游认为反天可能不是好办法,觉得可能进编制才是正道,火焰山又碰上牛,用尽手段逼牛进编制,牛本来也认命了,猪跳出来说你老婆我杀了还扒光看干净了,牛又怒了,结果一个没干赢一群又跪了,进编制干活去了。
最后猴进了编制发现不是自己想的那回事,该被人搞还得被人搞,又开始闹了,这时候牛也是成熟的编制人员了,就跟着二郎神把猴子搞了分尸了。
然后红孩儿发现了自己不是牛的种,自己差不多被人灭门了,找牛要猴的尸体牛不给,反手把牛给搞了,牛不愿意真弄死红孩儿也不敢真给他尸体就干脆不反抗让红孩儿囚禁,然后天明人来搞事了。
牛一辈子全选错是说
猴和牛反天的时候顾及老婆怀孕选择半路跑路,他不跑难说成了,选错了第一次。
猴逼着牛归顺的时候为了老婆被杀选择反抗,他忍了就没后面的事了,选错第二次。
牛跟着天庭搞死猴的时候为了讲兄弟义气不肯下死手,真玩命把猴弄个形神俱灭,给天庭当狗也就没后面啥事了。选错第三次。
结果就是家破人亡,妻离子散​

看看你吃的加生命的延寿仙丹是用什么材料做的,玲珑内丹,有修为的妖怪才能结出的内丹,天庭众神想长生不老除了九千年的蟠桃会,就只有延寿仙丹,仙丹是妖怪内丹做的,你仔细想想​
大圣戴上金箍,箍住的不但是大圣的自由身,更是大圣逍遥自在,不服强权,敢一棍子打上凌霄宝殿的侠肝义胆;唐三藏几逐悟空,逐的是悟空嫉恶如仇,要将魑魅魍魉全都打的魂飞魄散的血性,从花果山回来的是悟空,但是是没有心的悟空;灵山一释,摘下的是孙猴子的金箍,换回去的却不是孙猴子的自由身,早在船上褪去凡胎之时,那金箍就随着沉没的肉体,一起沉入了孙猴子的心,九九八十一难,难的是唐三藏?难的是不会斗战的猴子,没有佛心的圣佛,这本书成书的年代,正是佛道鼎盛之时,可见南朝四百八十寺的盛景,无论皇帝尊道灭佛,还是尊佛灭道,为了皇权而服务的佛道都已经变了味道,它们不是祈福的咒语,不是慈悲的心怀,而是天王老子禁锢万民的无形金箍,所以做书之时,其心中必是怀着对神佛害国的厌恶,怀着对被箍着的百姓的怜悯所做的。​

那些神仙需要的永远只是弼马温,弼马温永远只能管理马匹,想要升迁绝无可能。神位就是金箍。猴子说他能摘了金箍,二郎神杨戬也想摘了自己的金箍所以他暗中帮了猴子一把

其实可以简单看作,各种超能力者打架,而这些超能力者大多数都是蔑视人命的,不管是佛教的自生自灭,还是道教的清净无为,本质上就是超能力者(神仙佛魔妖)对普通人类(人界)的剥削,
佛道里面也不是铁板一块,像是弥勒和须菩提,就像个中立单位。但其实神仙佛和普通人是一样的,也有七情六欲,只是自诩为神仙佛高人一等,所以仗势欺人,不管是天庭还是灵山。​

要搞这套阴谋论是吧,那好你们tm神仙妖怪都是一帮什么货色?你孙悟空又是什么货色?反抗?斗争?革命?革个几把毛!你悟空天生就是灵猴妖王,地方豪强,目的就只有一个摆脱朝廷掌控,想自由发展。跟人类有什么关系,人类纯给这帮神仙妖怪艹的,真要反抗就该人类荡平了这些什么神仙妖魔,包括你孙悟空,什么玩意儿?争来争取谁坐皇位有什么区别,更何况猴子就是像打破现有秩序,自己仗着自己的资本去逍遥自在。独留给世间一片混沌,要革命第一个杀悟空。你还想着自己是孙悟空呢?还是先挑挑自己用那种方式被烹调吧。​
Forwarded from Rachel 碎碎念 (Rachel 🐨)
最近才发现 ffmpeg 提供了 Android 设备的 MediaCodec 支持,可以调用底层硬件加速编解码,兴冲冲地用手上的小米 13 压缩 Big Buck Bunny,结果发现高通提供的 h264 编码单元质量就是一坨…

如果各位想试试看的话,可以在 Termux 里安装 ffmpeg,使用 ffmpeg -codecs | grep mediacodec 看 ffmpeg 支持的编解码器,然后将视频的 codec 换成对应 mediacodec 的版本即可,例如一个 libx264 的视频可能是这样:

ffmpeg -i input.mp4 -c:v libx264 -vf "format=yuv420p" output.mp4

使用 h264_mediacodec 编码的话,就写成这样:

ffmpeg -i input.mp4 -c:v h264_mediacodec -vf "format=yuv420p" output.mp4

它应该会自动调用最合适的硬件编码器,如果需要手动指定,也可以下载一个 Codec info ,或使用 Device Info HW 这类工具查看设备的编解码器信息,例如我希望指定图 2 中高通提供的 avc 编码器 c2.qti.avc.encoder ,那么:

ffmpeg -i input.mp4 -c:v h264_mediacodec -codec_name c2.qti.avc.encoder -vf "format=yuv420p" output.mp4

上述工具还可以查看编码器具体支持的参数等,例如高通这个就支持恒定/可变比特率,但不支持 CQ/CRF;当然,不同厂商甚至同厂商不同芯片的硬件编解码器,都可能有巨大的差异,欢迎各位尝试后分享在评论区!

视频来源: https://bbb3d.renderfarming.net/download.html ,感谢群友提供
Codec wiki 中关于 MediaCodec 的文档: https://wiki.x266.mov/docs/encoders_hw/mediacodec
Android 官方的 MediaCodec 文档: https://developer.android.com/reference/android/media/MediaCodec
#linux #java duangsuse, [11/25/24 9:35 PM]
我也可以直接贴个 {@type:com.sun.rowset.JdbcRowSetImpl, dataSourceName: "rmi://localhost:1099/Exploit"}

你们觉得这对技术水平有帮助吗? 所以你打算怎么修, blacklist it?

Science Yuan, [11/25/24 9:36 PM]
他是想说 fastjson 的作者完全不懂什么是面相对象

duangsuse, [11/25/24 9:36 PM]
fastjson 的安全问题确实出在AutoType,但问题不在这几个exploit上

duangsuse, [11/25/24 9:37 PM]
总而言之,这作者就是个性能迷,偏偏它还不如Rust懂数据结构

duangsuse, [11/25/24 9:39 PM]
javaer一直有个错得离谱的观点是,只要劳资写的都比JDK或apache快,tmd

dragove, [11/25/24 9:39 PM]
反正后面的版本默认关闭autotype,有白名单机制,fastjson2也是,感觉都是旧事了

duangsuse, [11/25/24 9:40 PM]
怎么不说PHP SQLi后来PDO也防了呢? 没有直接拼字符串方便,他们不会修的。关键是这人连APT或KSP都不会写,还处理静态结构

duangsuse, [11/25/24 9:42 PM]
Spring最开始还要写好XML才能玩,后来有人做了SB自动配置, 这货是刚学会Tokenizer就想揽瓷器活,真是不给下游加班的着着想

duangsuse, [11/25/24 9:43 PM]
C又没有C++ RTTI,啥都是指针啊,数组也是

Linux 的进程隔离,就是为了修C的这些毛病和while(true)给libc弄出来的虚拟机

Sherlock Holo, [11/25/24 9:44 PM]
那么为什么有方法和接口的语言还这样搞呢

duangsuse, [11/25/24 9:44 PM]
没办法,先辈的罪,你看Rust和py的最佳实践有没有%s

duangsuse, [11/25/24 9:45 PM]
fastjson不就是这种「自己造轮子,别人背黑锅」的典范么
我看Google写一次就行了,就像Blink,别人啥都不要写,省得出bug

有几个人能写出 ffmpeg 作者 Bellard.org 那样优美的代码

duangsuse, [11/25/24 9:48 PM]
JS可以抛弃掉alert()和XHR这些卡调栈API, 不会影响任何应用正常运行, VSCode单线活得好好的

duangsuse, [11/25/24 9:52 PM]
我看到的是,现在包括go func; Kotlinx.coroutine,都为了「高并发」把与 userspace 分离的线程拉回了 userspace
至于Android呢,它的存储管理是用FUSE, 又是 userspace

duangsuse, [11/25/24 9:53 PM]
而Linux自己呢,被syscall(CGroup)沙盒容器化得不成样子,好像每个pid都root也能正常工作
我还发现有人喜欢玩eBPF ,这是一种在「内核里」eval用户脚本的方法,比油猴高级不到哪去
完全不需要是现在这个样子

duangsuse, [11/25/24 9:56 PM]
只是取信于轻量化的技术罢了,比如 a.filt(x=>x<0) 胜于 select x from a where x<0

duangsuse, [11/25/24 9:58 PM]
他没说错啊,那时候Docker还没火呢。

现在Python和NPM都开venv,难受死了,真是麻烦

isekiのChannel, [11/25/24 9:59 PM]
https://www.yinwang.org/blog-cn/2019/08/19/microkernel

isekiのChannel, [11/25/24 9:59 PM]
我的理解是他试图利用编程语言的高层次抽象机制,来保证安全性

duangsuse, [11/25/24 10:00 PM]
错了吗? eBPF, WASM, 甚至前段时间出问题的 CrowdStrike ,哪个不是这样

duangsuse, [11/25/24 10:02 PM]
以前我们以为有apt;rpm这些就不用打包apk,exe
没想到面对 AppImage.org 和npm黑洞,传统容器化一败涂地……

duangsuse, [11/25/24 10:04 PM]
行业百草枯,啧啧
我看过ArkTS,只能说设计模式,脑子被驴踢了
Java8好的精髓没学到,融合上TS的类型体操,糟粕抄了一堆,也配叫仓颉

duangsuse, [11/25/24 10:09 PM]
也不全对,比如,你学Android开发就会知道 Activity, Bundle, Fragment 这些,学React就知道状态保存管理
这些UNIX里都有,但都不精。 Bundle就是URLParams或os.environ,Intent就是PATH.so.的main(..) ,State就是各种rc,/etc/conf ,其实每个日用的系统,都有一套自己的「UNIX」

最典型的就是Plan9,它为Linux贡献的/{proc,sys} 文件系统与叠合挂载(bind, overlay..),今天还被用于Termux等跨端容器
Termux.org 首页的那个htop, 就是依靠这种真·一切皆文件 获得的跨平台性
duangsuse, [11/26/24 10:25 AM] #java
因为OOP强制要求你override方法签名相同, FP只要有 x:Coin as Money 就够了

duangsuse, [11/26/24 10:26 AM]
我也是今天才知道有这么个要求,应该是避免人 override fun f(xx:Any) 设计的

duangsuse, [11/26/24 10:30 AM]
我是有点不喜欢OOP把一个kwargs补齐写成override这么麻烦, 和public一样凑字数
JVM这个getXX文化有意思,因为JS都是用defineProp元编程从不手写,另一种凑字数。

无非是为了子类能加算式,但实际上DTO根本不会有那么多逻辑,最多有ext fun ,所以这「封装」就是写着搞笑的,安全是自欺欺人,害了Kotlin

这种非常不好的习惯影响了pwsh和Qt,可谓Java的隐形八股,Gson这些东西非常清楚地摒弃它们
因为有这玩意 Javaer 还以 XXBuilder().new() 为自豪呢,大家都懂那连 T().apply{}/copy{} 都不如,更不必kwargs

abstract fun f; class T(val x) 和 T({f: wtf}) (0) 是没有啥区别的

C++修正了C语言".so对象" 不能跨线程、跨配置的问题,我看Java也没有修正abstract函数的这个低 compose 问题

duangsuse, [11/26/24 10:36 AM]
包括 ext fun or class 的设计,比如 InputStream$Filter 吧,我觉得很适合写成
inner class InputStream.Filter(x:Char) {
fun read()= if(super!=x)...
}


而不是extends,既浪费命名空间也要手动加 fun File().inpStream().. ,但OOP就有这个限制
如果Kotlin要这么糖, 就需要额外生成一个 override fun 去代理构造器

duangsuse, [11/26/24 10:42 AM]
嗨,感觉这协变没翻译的必要, ?extends Any 有啥不好理解
duangsuse, [11/26/24 2:01 PM]
你说的不就是到处getset造成的问题吗,JSON读写下直接用不成了, is get has 的都不一样

duangsuse, [11/26/24 2:07 PM]
你说的3个class common val 必然是继承之外,多态的情况,那就是 sealed class 呗
如果单纯给每个class生成getXX, 其实和 fastjson 给每个对象@autotype 一样蠢,那就是JVM现在的尿性

duangsuse, [11/26/24 2:09 PM]
Ruby 的设计才真是天才,人家没有SQL注入问题,因为 eval(s) 会检查 s.taint? ,人家都有污点分析,直接从根源知道什么是安全的值,啥能是攻击者构造的

Ruby class 可以外部扩充,有元类单例,那才叫类,java的顶多叫 newtype / struct ,而且Ruby有区分编译期:sym ,有 Crystal-lang.org ,Java20都想不明白

duangsuse, [11/26/24 2:12 PM]
那只能说是RoR的开发者不懂这些对象内部机制, 反正Ruby的元编程技术是有目共睹的

duangsuse, [11/26/24 2:16 PM]
Vue和React对ES6 Proxy({}, 语法重载) 有所了解,作为架构师,这当然是必要的, 你不检查开销也在那

duangsuse, [11/26/24 2:17 PM]
不过它们有个问题,就是Proxy实际上不如defineProp明确,vdom实际上不如Signals细粒度绑定, 但喜欢玩魔法是人类的共性,能用就行

duangsuse, [11/26/24 2:19 PM]
React hooks 更蠢,还有一群数字人捧得跟神似的, 加个var都靠useState(0),真神经

ES6和kt为什么没想出这么能凑字数的术语, Java八股文写了20年也写出这种省脑筋费命的框架啊
duangsuse, [11/28/24 11:51 AM] #kt #plt
$$"$${order.product} costs $ $${order.price}"


好像就是为了解决标价&bash内嵌格式化的问题…… 呃,js Intl API
挺鸡肋

https://github.com/Kotlin/KEEP/issues/375#issuecomment-2052211773

非本地的 “break” 和 “continue” 挺好的,while 可以扔进历史垃圾堆了
[1 2 3].forEach{ if(it>2)break }
[1 2 3].filter@cont{ if(it>2)return@cont; print(it) }
//vs
let {
[1 2 3].forEach{ if(it>2)return@let }
}
[1 2 3].filter{ if(it>2)continue; print(it) }


duangsuse, [11/28/24 11:55 AM]
btw. 主题在 “when” 中的保护条件 这啥鬼翻译诶,不是说和 when(x){in}, when(x){is} 对仗吗

.: IfAnimal
- Cat-mouseHunter [YY]
- Dog-breed [""]

feed-u [IfAnimal]: u :.
Dog: feedDog(u)
Cat, u mouseHunter not: feedCat(u)
\: say: "Unknown animal"

feed (Dog "Snoppy")



sealed interface Animal {
data class Cat(val mouseHunter: Boolean) : Animal
data class Dog(val breed: String) : Animal
}

fun feedAnimal(animal: Animal) {
when (animal) {
// Branch with only primary condition. Calls `feedDog()` when `Animal` is `Dog`
is Animal.Dog -> feedDog()
// Branch with both primary and guard conditions. Calls `feedCat()` when `Animal` is `Cat` and is not `mouseHunter`
is Animal.Cat if !animal.mouseHunter -> feedCat()
// Prints "Unknown animal" if none of the above conditions match
else -> println("Unknown animal")
}
}


duangsuse, [11/28/24 12:03 PM]
-- Haskell code using pattern matching for comparison
data Animal = Cat { mouseHunter :: Bool } | Dog { breed :: String }

feedAnimal :: Animal -> IO ()
feedAnimal animal = case animal of
Dog {} -> feedDog
Cat { mouseHunter = False } -> feedCat
_ -> putStrLn "Unknown animal"


和Haskell比一下:总的来说,Kotlin 中的模式匹配在处理简单的类型检查场景中更直观明了,而 Haskell 的模式匹配则更加灵活和强大,能够处理更复杂的情况。每种语言在不同的情境下都有其优势和适用性。

duangsuse, [11/28/24 12:07 PM]
kotlin 挺有意思的,我还以为是 when(u.age) { >18 -> {} < 4 -> } 那种
看来避坑了
不过对这种情况是有类似for(x=;;) 的 when(val x=u.age) { x>18 的,没人用而已

duangsuse, [11/28/24 12:17 PM]
要我说,kt 应该把 when-is/in 语法数据化,就像把 when(x){A-> B->} 换成常量mapOf(),这样再加API来写序列化器、宏,不就没kapt那么多破事了?

现在 id=when(u) {is Animal.Cat if !animal wtf} 加if,如果再支持 infix fun, isEmpty 啥的,不好看, 如果一开始就是 val getID={ when it -> listOf(), notEmpty -> ; mapOf(), size>10 -> } ..
好吧,还是现在的语法简单

duangsuse, [11/28/24 12:32 PM]
Kotlin 对我来说有点像矮子里最高挑的, Haskell 这些的理论看起来很完备,在极少情况下语法很漂亮,其实连可变性(useState)和脚本自动化(py..)都无法处理 💭

kt在理论上虽比Go强太多(那货泛型/特化reifyT都是舶来品),看起来是默认不可变的OOP,API用起来像比FP更懂FP,却无法很好黏合二者。 Result,mapTo, let also apply run 并不简单, listOf for-in val var override 写起来也心累

我对它最大的印象停留在 T?. xx ?: !! infix/operator fun T. T.()-> 和 when-is/in 这些必要特性上(也包括这次KT2.1更新的 inlined nonlocal jump),似乎只在这些地方它比py更好,而OOP class的扩展完全是拖后腿

比方说, Exception 明明可以默认用 Nullbility 的方法处理,就像 runCatching{}?. 做的;sealed 明明应该写成 enum Lit { A(str) B(int) } 那样 —Kt enum 本来就可以带field,而 inner class 明明可以用于生成 override fun A.PairTo(:B) 这种原型工厂
这些都是OOP的三脚猫语法,因此 OOP有十几种「设计模式」,意味着语言比工程需求,落后了七八种语法/数据模型
Kt很巧妙的只解决了null, ext fun/DSL, Lombok 这几个问题,甚至跨平台、协程、就连最基本的序列化和CLI(vs fire.py ?)都是残的, 完全悖离了语法简明性,变成Java第二 ,在这些领域败给了民科Go

现在有Rust吹觉得它们可以在性能和内存安全上胜过py,就像 mojo-lang? 科学家们不会在乎这些不影响语意的符号的。 其实「多美元字符串插值」 是什么? .. 只能说,和ES6的防SQL注入字符串,没法比。
#plt duangsuse, [12/2/24 6:49 PM]
其实中国 OS/compiler 还挺好的,就是冷门而,今天就看到一个挺出乎意料的文,推荐

duangsuse, [12/2/24 6:53 PM]
AI在这方面最初挺好的, 恐怕比科班更简洁明确,现在不知道怎么样

duangsuse, [12/2/24 6:55 PM]
说起来玩东方和JOJO的技术人也挺多,acg人均好奇心爆棚吧

duangsuse, [12/2/24 7:00 PM]
这作者还被一个莫名黑子骂过呢,哈哈

def:yield 就是自动生成的 iter()able 啦, 做题家就是喜欢在茴字的写法和那两块钱上说气化……
https://t.iss.one/dsuse/20203 讲过他说的内容

https://mp.weixin.qq.com/s?__biz=Mzg3NTczMDU2Mg==&mid=2247531983&idx=1&sn=2d05ea71d3f45cf2ab08151f640a496c

duangsuse, [12/2/24 7:14 PM]
没有什么正反馈很难坚持。拿我自己来说, 我目前毕业即失业,虽然日常开销就吃饭,但经济主导权不在我,连继续都难。 对在职开发者,做文章都是有开销的

而且单纯从 C source 来分析一个 parser+codegen+bytecode 并不好。拿《Lua的设计与实现》说,C连 enum Val{A(int)B(str)} 都没有,char s[N]里N运行时都能被擦除,又有作秀般的 _M_ 啊._wtf 啊的无意义变量名,自己分析起来废话难免多

应该多学几门语言,比如《Ruby元编程》《Ruby under microscope》,跳出语法和私货来分析它们,这样你才能站在和 Guido 平等的角度揣摩利弊,而不是作为CPythoneer在细节上被拖累死

_parse_string 建议外提一下, ESCAPE_CHARS[escape_char] 也可以用 if None 或 lookbehind Regex (?<\\) 的逻辑做,减少forin这样的硬结构

btw. py界标准做法好像是50行 https://github.com/pyparsing/pyparsing/blob/master/examples/jsonParser.py#L51
Forwarded from dnaugsuz
没有很厉害啊…… JSON.org 语法是这样,10行而已 ☺️
变量名基于 sikxfaned久类型: str idx kv any fn ary nItem eTree decimal

JSON  X
X (S|D|{S:X ,}|[X ,]|true|false|null)
S '"' ([^\\"]+|\\Esc)* '"' #G-
Esc ["\/nrtfb]|u hex{4} #Gk

D num (.int)? ([eE]int)? #Bn
num '-'? ([1-9]int|[0-9])#Bn

hex [0-9a-fA-F]
int \d+
ws ' \n\r\t'*
# ws:每小写符号前要跳空格, #高亮tag 内禁用


拿「语法D」为例,搞个流
strm=([s], i=0)=>(n,took)=>{ let k=s.slice(i,i+n); i+=n; return (took===NO)? k : (took)? took(k) :  (i-=n, k) }

NO=null, ps={parser:'json'}
ps.D=(s, it=0,shr=0)=>{ //D num (.int)?
while(+s(1)) it=it*10+(+s(1,NO))
if(s(1)=='.') { s(1,NO) // 这些逻辑可以靠Combinator复用
for(;+s(1); shr++) it=it*10+(+s(1,NO))
}
return it*Math.pow(10,-shr)
}
ps.D(strm(['123.45'])) //123.45

至于递归,我拿圆括号为例,就更是三行以内了;可以读到 print (+ 1 (* 2 3)); (exit 1) 。算式的话看我频道 带步骤的四则计算器 、 解释器(=深先改树改数) https://t.iss.one/dsuse/17410 https://t.iss.one/dsuse/19868
//Top  Str|[0-9]+| '(' Top* ')'
tok=(cod, s=cod.split(/\s+|([()]|\w+|\S+?)/).filter(x=>!!x).values())=>
()=>s.next().value

sexp=s=>{let a=[],x;for(;(x=s())&&x!=')';)a.push(x=='('?sexp(s):x); return a}
//^ 一般需配对')'。此省行数,F12 sexp(tok(prompt()))


需要注意的是,demo用的都是最practical的写法,没有LL1、ANTLR那些八股文。 C的话涉及无关的内存管理、抽象struct等问题,但只写EDSL(基本=fun调用.bind,能够晚or多次执行) 可以
datatype(Calc,
(A, int),
(Op, Calc*, int(op)(int,int), Calc*)
); //纯预处理宏ML99 ADT写法


总而言之,有多难,取决于你的做法。 如果不做多余的工作,可以很简单。
duangsuse, [12/17/24 4:20 PM]
现在CRUD boy都一票难求,还remote……

duangsuse, [12/17/24 4:25 PM]
得了吧现在国内经济你还换

duangsuse, [12/17/24 4:25 PM]
我换了我上个开遥控无人车的工作都后悔了

duangsuse, [12/17/24 4:26 PM]
遥控,景区的那种单路线车,配合东风的品牌宣传……

duangsuse, [12/17/24 4:29 PM]
是的,这几年毕业生工作难找,

duangsuse, [12/17/24 4:29 PM]
但是要装成是培训班服务,或者人力资源外包的这种玩意

duangsuse, [12/17/24 4:35 PM]
不是的,现在确实有这种急着找班上,被培训班钓鱼的

duangsuse, [12/17/24 7:16 PM]
老一背喜欢捡便宜,搞超前消费
不知道自己是吃时代红利,还因为全靠学历

duangsuse, [12/17/24 8:57 PM]
我没写过app。 2015那会安卓还流行createViewHolder呢, 当时看材料发现就是React diff 那套,重赋值复用旧View……
Svelte的Signal都把diff淘汰了,安卓Compose还在搞diff

duangsuse, [12/17/24 8:58 PM]
最要命的是,这纯粹是ListView的实现细节,过早优化,创造门槛,结果现在? 被超级简单的VueReact淘汰了……

duangsuse, [12/17/24 9:00 PM]
我倒是觉得安全系,除了搞Mods,AOP,破解, 没前途

最好吧网安当成OI&CTF。 哪里有 user=' or 1=1 这么弱智的内存安全漏洞钻……
duangsuse, [12/17/24 9:08 PM]
#ffi 好抽象
JDK21 jdk.incubator.foreign demo:
call them in "a.so"

byte inc(byte)
int sum(struct*{int x,int y})
char* add(char*, char*)

duangsuse, [12/17/24 9:12 PM]
Java每次都是这样,抄都不会,抄import cffi 不行吗? 上次抄Kt when{is} 也是,case Subtype x: 都没抄好, STR."" 抄ES6都不会

Java有一种WinAPI的傲慢,好像用那一长串函数名就可读了, 实际上爱写的早就写JNI去了,正常人根本懒得用

duangsuse, [12/17/24 9:15 PM]
        String result = switch (obj) {
case String s -> "Length of string: " + s.length();
case Integer i -> "Value is an integer";
default -> "Unknown type";
};

还真是会抄,现在又加上了 is Int, if it.. 守卫,哈哈
duangsuse, [12/20/24 8:17 PM] #oop
就是免指针啊,long实现IntRange(int A,B)什么的

duangsuse, [12/20/24 8:18 PM]
东西是好东西,就是感觉没啥必要, 高不成低不就。
swap(&a with &b) 零开销抽象,也做不到

duangsuse, [12/20/24 8:20 PM]
https://lanlan2017.github.io/JavaReadingNotes/b20bb69e/ 还是长姿势吧
Reflection和MethodHandle机制本质上都是在模拟方法调用,但是Reflection是在模拟Java代码层次 的方法调用,而MethodHandle是在模拟字节码层次的方法调用。

duangsuse, [12/20/24 8:33 PM]
https://developers.redhat.com/articles/2022/03/16/range-check-elimination-loops-openjdks-hotspot-jvm for循环优化

duangsuse, [12/20/24 8:37 PM]
变成值类型? pointer tagging?
Rust对 enum Option<T> 有这种优化,但对enum{str,int} 可做不到

duangsuse, [12/20/24 8:39 PM]
我能理解的没开销就是,把 val x=(A to B) 存储在泛型参数里,然后 x.swap直接翻转泛型参数,这样没有开销,当然就需要很怪的编程方式,符号也不能离开域

存储Int肯定有开销, 顶多是拿Long保存2int

duangsuse, [12/20/24 8:45 PM]
Rust本来就不是OOP,没有boxing和泛型皆Object带来的这种问题

rs只有enum才是带tag,OOP本来就基于data+tag双指针, Result<T>{Ok(T) Err} 又白白套了一层,其实标准库是有优化的,都合并到Object子类了

OOP基于data+tag双指针是范式的限制,为了访问绝对安全以及toStr等易用性
理论上Rust和C++模板泛型的模式才是正常的,Java太JS化了

duangsuse, [12/20/24 8:47 PM]
Rust可以写成有dyn双指针的形式,也可以只有struct,没有虚表
使用数组和接口仿subtype就是前者,默认是后者, 然后没有退化到Object的泛型和反射,就是编译期derive宏和奇奇怪怪的Named 结构泛型

duangsuse, [12/20/24 8:50 PM]
要分情况讨论,如果只是overload,包括template<on T>,mangle一下函数签名,叠合一下各处<T>的定义生成List::$of_int..就OK
如果有enum{str,int}就需要多态,一般是靠虚表,Rs是胖指针(&dyn)实现, C++是直接把虚表inline

duangsuse, [12/20/24 9:19 PM]
https://zhuanlan.zhihu.com/p/588932823

JIT OSR 就是的啊,如果compiler觉得自己比你聪明,那就是的
我是觉得 Int[] 这些泛型实化还需要优化,数组和局部分配JIT的挺好

duangsuse, [12/20/24 9:31 PM]
Java 值类型预览——Project Valhalla
好了,总结一下, Java 现在有 Option<T> 和 List<int>了,不写成T?而是ref T
然后equals可以写成(==)了,synchronize(obj)删了, 值相等不再强求new的容器是同一个,因此应该final以方便优化

JVM上面值类型没法实现C那种byte[] struct啊,value class 最多能存储2long的宽度,
>__int128 is passed either in two registers (if available) or in a 16 byte aligned stack slot

能够用来优化LongRange和Strumbra,包括Vec2 ,不可能保存俩指针。好像也没那么重要

你们需要的肯定是编译期计算,能够做 call(print, {ABCD}), if(Both(Eq(天蓝), Eq(云白)), tagUnionOp.. ) 的那种 value class
因为现在的值类型和一个大号 typealias 没区别

duangsuse, [12/21/24 12:57 PM]
我一直认为 json.load/dump 应该是标准库支持,如果这都做不到,实在是无法言表的弱
与numpy相比缺的类型太多了

duangsuse, [12/21/24 12:59 PM]
XML的数据模型太迷了,<list> <user> </></> 这样么?list的tagName又有何意义呢

duangsuse, [12/21/24 1:01 PM]
后来发现XML就是有{type: A|B}的json,DOM多有个list,俩特性基本都用不到,好了。

XML用这种区分{type: A|B} 的tagName当"key":v 嵌套用,不被淘汰才怪呢。
https://gist.github.com/ericis/463e850a9fb10cbac0eb326d70a43ef8

Java界容忍了XML这么久,铸币吧,人机格式当成best practice,我怀疑他们是伪人

html表示为json,是这样
[{type:div, hide:true},  [p, 'Hi', name], 'textnode']

有些人不这么认为
很明显,直接stringify DOM树 API 是错误的, html的本质是吧 <div k=v> 视为child0
[:div {:class "Class"} [:p "text]]
非常幽默的是有些人写 <input /> 还是不影响解析流程的,控制不了什么是有child的

XML整个工具链都非常幽默,完全没有CSS的美感

没话说,java js 各自的build都十分铸币
py基本不需要test打包和分模块版本,又显得和make一样轻量

总之,现在若要部署一种调了很多API的技术,还是Web最省心。 发布、依赖、 minify、fatJar 都是1行解决,模板很多,没有各种奇奇怪怪的配置

duangsuse, [12/21/24 1:40 PM]
xml搞closetag是为了方便阅读,但强制这么设计十分人机

duangsuse, [12/21/24 1:50 PM]
没话说,java js 各自的build都十分铸币
py基本不需要test打包和分模块版本,又显得和make一样轻量

总之,现在若要部署一种调了很多API的技术,还是Web最省心。 发布、依赖、 minify、fatJar 都是1行解决,模板很多,没有各种奇奇怪怪的配置

Zika Tang, [12/21/24 2:11 PM]
Python和yaml因为这个问题,我都不喜欢

duangsuse, [12/21/24 2:12 PM]
你不喜欢没关系,科学界和做DNN的喜欢,比任何其他语言都简洁

duangsuse, [12/21/24 3:13 PM]
得了吧 val var 分半天的,也就class(var)比OOP简洁,但是py元编程容易的很,@data class 这些模式比JVM墙太多了

duangsuse, [12/21/24 6:49 PM]
可不是依赖,这是有原因的。 没人喜欢程序员那一套玩意, py与任何语言相比都更自然,印书本上也不会有机翻的感觉

duangsuse, [12/21/24 6:51 PM]
py和C生态走的近,又没有Lua和Ruby的end等怪癖, 和需要虚拟机的Java相比非常有黏力,Java就是速度快点的py而已
#china 李老师
15:48 「他(最近)一直做这个事情是挺辛苦的」,
谨言慎行,没毛病,
确实辛苦,因此,他在这个团队中的份量不会轻,团队的言行也必然和他的言行强相关,

17:11 「不是说他现在的影响力的一个背书」,
他可不只是用他的影响力为这个项目背书,而且亲自下场深度操作,他的大号小号都已经有多个帖子表达个人观点了,是个人观点!不是往常的接稿发稿,
不必一面肯定方脸和徐某人是团队里确定的物理真身,一面认为李只是一个抽像的符号,只是团队的一份子,这样似乎李是被团队强行架上去推到前台的? 或者只是借助李的人气?
如果我没记错的话, 曾经在别人转贴里看到过徐某人和李线下多次外出游玩,那么两人关系并不只是纯粹线上公开交流,

28:24 「现在有好几个李老师,你信任的究竟是李颖这个人,还是他们这个币里说的呃旅居意大利的这个艺术家李...」,
「李老师不是你老师」,「李颖」,「旅居意大利的这个艺术家李」,「Lee1ng」,这四个名词对应的就是同一个人,大号可能只是有新人加入他,而不是他带着大号加入别人,这个顺序不能搞反,难道还有人冒充他的可能? 这事发酵初期确实有人怀疑他被盗.d号了, 然而,
至于「Li」这个为发币项目建立的新号, 背後是团队还是他个人,无所谓,反正他是这个项目的团队中的一员是确定无疑的,有他自己的帖子为证,
那么,没必要用抽像语言主观强行将这 5 个名词做切割,真.虚拟分身? 真.不同物理肉身人? 撇清关系? 为何对李如此纠结的袒护?
因为屏幕网线背後都是活生生的物理世界的真实的肉身人,
有网友考古到他几个月前的一个帖子就已经透露了开始谋划了,这应该是李深度参与甚至主谋之一的一个证据,或许是间接证据,更多证据正在浮出水面,

这并不是项目白皮书,没有哪个正规的团队和项目--无论什么行业领域--会通过在 x 上发帖子的形式来发布白皮书,不仅如此,行文和内容也与正常白皮书规范相去甚远,
至于他帖文里泛泛空谈的口号噱头,过去 100+ 多年里,这些滑稽少了吗?
不说远的,就是最近 30+ 年里,轮子,各派民运,郭蚂蚁帮,哪个不是喊着这些口号,表演着同样的滑稽?
老实说,这些前辈还真做了一些实事,包括援助和解救墙内受迫的人,当然伴随着人气和流量的增长,越往後越变质,打着动听的旗号和乐于助人的姿态收钱办事,
然而,反观李和他的团队呢?只是接投稿,发投稿,可曾线下物理实体的帮助过哪怕一个人?就急不可耐的表态说「需要更多钱才能维持的了运作这样子」,
(ps 如果他和他的团队有线下帮助过具体,恕我无知,可请告知,毕竟我早就不关注他了,要不是这事,也不会想要看他表演新的滑稽),
高调玩这些游戏的玩家,可以说,殊途同归就是他们的宿命,就像黑洞,坠落到同一个目的地--割韭菜,流量变现就是宇宙尽头吧,民运圈的这样的烂事还少了吗?
x 上有人怂恿刘姨也发币,
就因为每一代人都是懵懂无知的成年进入到社会?因为总有社会经验丰富的深谙人性欲望的大佬去收割鲜嫩的社会萌新?如果是这样,墙.q国和这些所谓的「華人」或什么各种「独」永远不会有希望和出路,有的只是轮回罢了,当然,不可否认,历史的真相几乎都是肮脏的,肮脏的博弈中也可以逐渐冒出正常,但这是小概率事件,
缺钱可以理解,粉丝流量变现有无数种方式,嫌弃太慢?所以选择发币?到底是捐款募资?还是以盈利为目的呢?他和他的团队并没说清楚,
李并不特殊,庞大粉丝和流量也不会是他必须享有特权和特殊对待的理由,不必双标,
题外话,米帝对外的双标是公开的,米帝大佬精英对内的双标是隐晦的,并不是没有。慕强是刻在生物基因里的,不仅仅是武力 智力 资源 的慕强,也包括对名气 人气 名望 威望 流量 影响力 的慕强,尤其是群居的社会化动物,包括人,只有良好的制度才能让人得到公平的保护,并且放心的甩掉慕强这种病态言行,

币圈发币,尤其是网红 大v kol 发币,名人站台,等等,杀猪盘的概率有多大,不说精确的统计数字,肉身体感都有明确的感知,这不是针对李一个人,谁发都一样,
pump.fun 是什么平台, 简单粗暴的说就是一个低规则甚至原始规则下的猎.l杀游乐场,里面充斥着经验丰富工具丰富的玩家,也充斥着懵懂的韭菜玩家,欲望是贯穿其中的唯一驱动力,
这平台上有没有冲起来的标的?有没有上架cex的标的?当然有,但非常x3少,完全看做市商和或大户是否有意愿持续托底,然而meme币的性质决定了绝大多数标的都不会有持续性的周期性的托底和哄抬拉抬,
就算这个标的能够走出来,就算大部份筹码都已在市场流通--并没有,就能避免割韭菜了吗?他和他的团队能控制行情和走势?参与这个盘子的玩家是附和他口号噱头的多?还是投机的多?无论哪个多,最终都只是大户又一个割韭菜的工具而已,

和平台也无关,平台并不重要,类似的平台也有很多,重要的是李和他的团队的行为,
一个标榜民主自由的人,自我打造的如此人设,和币圈惯常割韭菜的风俗苟合在一起,借助币圈工具来募资?盈利?现今时代,「反差」果然就是流量,矛盾冲突是艺术表现力的重要来源,他果然是艺术家,
如今大号主业只是接投稿发投稿,在人气流量暴火之後,大号几乎不再发任何个人言论,猥琐在小号里发自己的三观,任何一个正常的自媒体,比如大体上同类型的如「大声」也不是这样吧,他这样做是有什么刻意的安排吗?
诡异的是,最近一天,也就是 12h 前,他用专门发投稿的大号发了一篇个人言论的帖子,评论关于某交.易.所对他和他团队的 meme 币的「恶意」标注一事,这就很滑稽了,他为了平衡或纠正舆论,特意用人气和流量暴表的大号来发这个帖子,有力量,用心良苦,
已有热心网友考古翻出他以前的关于币圈的言论,和如今的他对照,又一次戏剧冲突,当然,他不在乎,既然他都不在乎,那么瓜众为何要在乎他?社会关系是相对的,公平公正才有可能,
人性经不起考验,不是瓜众和或他的粉丝要考验他,而是他选择用发币的方式来考验粉丝的忠诚度是否能表现在行动力上,这是粉丝提纯的操作吗?那么,事情的发展就由不得他和他的团队能完全控制了,

这几天,已经有很多人从各种角度审视他的项目和细节了,包括从币圈技术角度,是什么形状,明眼人心知肚明,
另外,早有人说过,他只是接投稿,发投稿,即便一天的量再怎么多,从他大号每天发帖数量看,只需 2-3 个人的团队就可以完成,
当然他还有在做频道,现在借助 ai 一样可以把素材和想法高效率的快速串起来,甚至还能帮助润色,有专门网站根据脚本内容来自动匹配出提供对应的视频画面素材,因此,并不会消耗太多精力,当然我没看过他节目,
他包括他发币团队的另外 2 个人,我都没关注,2-3 年前首入眼帘看了几个帖子後就已全部静音,直觉或许偶尔也有一定合理性,包括诸如什么五毒散人,王亚军,大老王,王志安,米帝大兵,二大爷,... 等大v都是一眼假,只有徒步骑手,老雷,公子沈,懵了很久,直到他们主动暴露,
为何对李不感冒?李做的事,无论是接投稿,还是发币,都是典型的中心化行为,这与自香港抵抗以来的去中心化或多中心化的理念和实践,严重背道而驰,对于参与者来说也伴随着更大的风险,而在面对同样的风险时,那个中心,更容易全身而退,甚至有很高的价值被统战,

还是那句话,任何时候,任何场景,不以粉丝量流量改变评价标准,不双标,
如果对方势力弥天,慑于对方实力和能量,可以沉默,可以择机,完全正常,

自媒体无论个人还是团队,是否有资金支持,都正常,在这一点上纠结的人应该不多,

其实多伦多方脸的说法是没问题的:反贼当然要构建自己的经济体系,要赚钱养活自己。不仅要赚钱,还得要赚大钱。

但反贼想要赚钱,可以做自媒体,办社区,收会员费;也可以炒美股做空中国

发币,其实是他们所能选择的赚钱方式中的下下策。原因有三:

1)币圈参与者基本上90%都是赌狗,昨天就有人自豪的说:币圈天天都在割韭菜,我们已经习以为常,被李颖割又何尝不可?将自己的“反共大业”构建在赌狗的信仰之上,这是对自己支持者极大的不尊重:让原本对民主尚有一丝信仰的支持者去接受赌狗的价值观,享受一夜归零的快感,让受众群体下沉,进而扭曲他们的心智。这本质上是承认反共大业失败,“7步民主”只能骗到币圈赌狗。

2)币圈融资的优势是门槛低,借助区块链技术,募捐也变得非常容易:不论你身在何方,是否实名,只要有一个sol钱包即可参与,符合时代趋势。但募款人既没有“反共”计划书,可供查阅的路线图,也没有任何需要资金的重大项目,金元流向也毫无监管可言。这表明,这群人的“反共大业”实际上并不严肃,如同儿戏,得来全不费功夫。降低集资门槛,事实才是对所谓“反贼大赚钱”计划最大的伤害。

3)meme 价值波动非常大,纵然可以一天翻100倍,也完全可以1天之内归零。将“反共”基金置于如此无保障、无监管、无底线的高波动市场之下,无异于孙中山将同盟会费取出来去买荷兰郁金香,然后一个月内爆仓。在一个归零率高达98%的平台上发布如此重要的项目,很显然也是对自己的储备丝毫不负责任——如果他们没有提前老鼠仓割一波走人的话,或者从来就没想过要真的用这笔钱。

综上所述,李颖、多伦多方脸、徐某人。如果不是真的被币圈项目方骗了,以为自己的市值可以维持住超过7天,而且还可以1:1变现按照20%资助反共大业的话

那他们就是1个月前早就密谋圈钱,已经在昨天的pvp市场中捞到100万u,正在小号钱包里转账分赃走人

不是蠢,就是彻底的坏

到底是哪一个,我们一个月内应该就能见分晓。
#china 李老师
勃勃OC Verified account @bboczeng
about 15 hours ago
刚才的Space讨论非常热烈,精彩,也很专业。非常感谢几个币圈资深人士上台发言,给我们科普和澄清了很多事情。

关于李颖发币,有如下几个细节值得关注:

1)这不是李颖第一次发币。在最新这款memecoin发布前,李颖还发布了另外一个同命代币。因为在内盘就被机器人抢单,导致价格过高,不满足“老鼠仓”或“团队配额”条件,李颖随后放弃了这款代币;在咨询他人、或者寻找专业的团队后,他避免了这个问题,并发行了如今我们看到的这款新币,地址以HhUVkZ1开头

2)Dev关联钱包已全部跑路。Li memecoin 的开发者dev关联钱包总计占发行量16.95%,成本为38个Solana,也就是约7000刀。总计套现按最大市值计算,可达70-100万u,每个钱包5-10万u。具体套现价格,大家可以点开评论区网址查找钱包地址,搜寻钱包的卖出记录即可查询。这也和之前截图显示的5-10万u利润排行榜对得上

3)Li币的发布,徐某人和多伦多方脸早已知情。这点从所谓Li币内的“雪花”社区和徐某人“雪花绒旅行社”高度重名,以及多方曾经有买币经验、给予过李颖Youtube制作指导等经历就可见一斑。当然,从这两位发币后突然无故无条件力挺也能看出线索。

一年之前,李颖对币圈还是嗤之以鼻;何故一年之后态度180度大转弯,直接就开始发币?

我认为这主要是年初开始的Youtube博主工作收入微薄,不足以支撑自己或团队开销所致。在平时的滑雪爬山中,李颖咨询过徐某人;同时在推特私信上显然也问过方脸。在两人的建议下,李颖选择发币。此外,李颖自己也承认,发币大业筹备了一个月。

所以,如果这两人说“自己是第一次知道有这个币,所以相信李颖,选择支持”,这纯属扯淡。这一个月内,至少就已经确认了团队人数,多方、徐某人的空投份额,以及以后公关危机的应对方案——这点从盘内交易中就有多达48个钱包,甚至有24个钱包高度同步同时买入,以便日后“分赃”可看出他们早有组织。

4)多伦多方脸为什么不公布自己的钱包?根据对链上钱包的分析,只有一个买入5220多美金的钱包在时间上可以与方脸的推特对应。但这很可能不是方脸的钱包——因为它使用了比较高级的反夹子技术。

为什么多方面对质疑,选择“等到王志安采访时”再做解释,而不是现在就放出地址,或者说清楚情况?除了可能需要一些时间和团队准备应对方案,甚至假冒钱包之外,我认为最大的可能性应该是:

多伦多方脸根本没有花5000美金购买Li币,他完全是在口嗨。在接受采访时他会坦然承认,但会用“我只是为了想支持我的朋友,我有什么错”作借口,将话题转移到中国反贼的反共事业之艰难上。

之所以必须要在节目上承认,因为只有在和王志安的问答中,他才能利用语言的艺术博取观众同情,并借助王志安引导和转移话题。这就可以解释他为什么现在既不放地址,也不能大方承认自己没买的事实。因为互联网上,很多事情解释不清楚。一旦承认人设就塌了,估计会被无数人取关拉黑。反复权衡后还是面对王志安比较安全。这是一个赌,我们可以看看我猜的对不对。

最后再澄清一些技术性问题。

首先,pump fun上发行的代币确实没有空投,但是有内盘。内盘需要开发团队用Solana买足比如5万刀才后能发射去Raydium外盘交易。

内盘的成本是外盘最大市值时的1/1000。也就是说,如果内盘团队人员拿到100美金的代币,他们可以套现拿到10万刀。我们现在相信,至少有3个钱包完成了这件事。是不是这就是李颖、徐某人和多伦多方脸?不得而知。大家心里有数就好。当然也必须承认,可能有一些场外捡漏机器人也参与了其中,但48个参与场内交易的钱包中,至少有24个属于开发团队或李颖本人。

其次,pump代币中能被取出来的钱和市值无关,只被流动性约束。现在,Li大概有30万美金的流动性,但其中只有一半是Solana,另外一半就是Li。也就是说,该团队能取出的全部流动性只有15万美金,还没那几个钱包卖币赚的多。

这笔钱大概率以后永远也不会取出来,也不会被用到。3人多签名钱包最终只是一个笑话。另外再说一句,因为流动性相比市值的比例实在太低,因此被OKX禁止交易。最后还骂OKX,这点我也无话可说。

哈哈哈,方老师风格还是一如既往,方脸和徐某人也加入李老师的发币了,估计您还能再做一期节目~
1,任何一个虚拟币,还是一个股票都需要你背后有实体依托。比如你买Google,facebook的股票、买的是他的公司,他有庞大的业务,并且经营良好,并且你看好他的未来。比如美元,他是与黄金挂钩,并且信用良好。你才会相信他,如果没有黄金支撑,然后又超发货币,那美元必定继续贬值。
2 而李老师本质上是没有任何的实体项目在运营,他本质是一个个人ip。那个人ip你带货,或者卖周边都正常。但你没有任何的实体以及后续支撑。那么本质上这个虚拟币也会最后清零。
3 虚拟币除了比特币和少数几个真的体现价值了,其他的最后是不是都是忽悠钱?
比特币能够持续增值是因为啥,第一是人门要用他转移资产。第二他没有超发烂发。但你看看币圈除了比特币还有几个真的持续增长的?
4 总结,我觉得李老师的虚拟币最终结果也是清零
1.10万的盘子,你真觉得是10万的盘子,不去劝说另外两个人别发币吗?
2.开始说没有一起发币,发币前临时通知,后面说在一起准备发币都有半年了。
3.资金运转良好的媒体号,如何退出公益孵化,从被孵化者变成NGO的资金提供者,而不是一直从NGO拿钱。

我觉得这个事情的因素蛮多的,我来谈谈~
1. 李老师不太会变现,无法维持海外生活,在全球经济下滑大通胀的情况下,生存情况更严重了,他油管的节目我估算了下,大约每月只有5k左右收入,另外两个好点,最多能到20k左右~
2. 这三个人由于都露过脸,估计无法回国了,而且他们比较年轻,在海外定居的话,就不仅仅要考虑生存问题了,还要考虑买房结婚等问题,方脸和徐某人的油管收入其实还不错的,其实没必要折损自己的信用参与这个发币,我估计多少是有这方面的压力~
3. 任何自媒体,只是靠吃热点,没有自己特色的话,早晚会过气,其实就算有特色的自媒体,也有生命周期的,时间长了也会因为受众饱和而下降的,例如文昭,与其等自然流量下降,最后没人关心,还不如趁现在刚出现下滑,就折损信用变现,商业上这个策略是比实际的,他们最近的视频已经出现了质量下滑这方面的迹象,可以说是创作枯竭期了吧(其实川宝上台,美股比特币泡沫,全球右转,美债困局,国内军变,未来可以讲的热点还蛮多的)
这三个人无法把频道做稳定还有一个原因,涉猎内容太单一了,聊政治必须要懂经济,最起码是宏观经济,毕竟经济是政治的底层建筑~

PS:我也算过方老师油管的收益,平均单个视频收益和李老师差不多,但是架不住您老输出高呀,一个月整32个视频😂


总结了目前李老师的信息:
1.做油管频道每月赚5-6000欧
2.有8个人的团队,但不愿意透露团队的信息,不透露团队运营成本
3.李谈到去巴黎见到过经营困难的同类人群,但被问及相关人员的事例,顾左右而言他
4.李的团队(不包括本人)每个月期望收入为1.5万欧
5.李的视频和剪辑团队还在帮助其他更小的博主提供视频帮助,并且提供油管视频的指导
6.尝试过联系外国基金会,但觉得自己拿着外国的钱来推进自己为中国民主化添砖加瓦,心里过不去。
7.王认为李的将近 30万的粉丝账号完全能cover支出,但李承认自己和团队能力不够。(8个人的团队无法产出正常质量的视频)
8.李认为自己发币的行为,如果失败了只是自己的信誉受到了影响,成了的话会给整个海外社区带来帮助,认为此次行为只是牺牲自己。但王认为李没有考虑到这次发币对整个海外中文圈子的声誉造成的负面影响
9.李称自己在发币时没有和别人商量,只有一个程序员同事知道,但在发币前问过一个中文圈的币圈博主,但币圈博主可能因为怕受波及,没有回复
10.李称自己在此次发币中没有获利,前25个获利账户在是机器人交易,把割韭菜的锅推给机器人
duangsues.is_a? SaltedFish
#china 李老师 勃勃OC Verified account @bboczeng about 15 hours ago 刚才的Space讨论非常热烈,精彩,也很专业。非常感谢几个币圈资深人士上台发言,给我们科普和澄清了很多事情。 关于李颖发币,有如下几个细节值得关注: 1)这不是李颖第一次发币。在最新这款memecoin发布前,李颖还发布了另外一个同命代币。因为在内盘就被机器人抢单,导致价格过高,不满足“老鼠仓”或“团队配额”条件,李颖随后放弃了这款代币;在咨询他人、或者寻找专业的团队后,他避免…
多伦多方脸 Verified account @torontobigface
为什么我说$LI的出现,是划时代的呢?

很多人可能不太清楚,海外这个圈子的现状,尤其是年轻人
我是幸运的,因为我本身在出国之前,做生意算是成功,本身财务状况就比较良好
出国之后,做YouTube,又一直有稳定的现金流
所以我的生活是不愁的
但是在这一路上,看到了太多人,尤其是年轻人,过的是非常艰辛的
他们有些人做的事情是很有意义的,也是很有能力和想法的,但是因为中共的限制,(比如包括要求父母切断收入,比如冻结银行卡,比如冻结国内资产,比如举报工作等等等)大家过的是非常凄惨

而一般能解决的方式是什么呢?其实就没啥解决方案
哪有如粉红宣传的那样,一年成百上千亿的美国资金到处资助,轻轻松松吃上所谓的“狗粮”
即使有,也大多是NGO机构的,而因为这些NGO都是面向全球的,排在前面的可能还有更惨的伊朗人,委内瑞拉人等等
同时年轻人因为缺乏经验,相对老一辈的人,也更难拿到资助
更别说这些NGO即使资助,资金往往也少的可怜
至于说直接公开募捐,到底能募捐到多少呢?
大家心理都有数

当然我这里都不是说,要改善生活状态了,这些人,就该发财
而是在这种生活状态下,大家能做什么呢?

大多数年轻人,都是依靠精神,意志力去做事情,白天打工,周末,晚上的休息时间,抽时间去参加各种活动,这样活动规模怎么能大?
对于很多年轻记者,拿着连采访差旅费用都不够的稿费,写各种稿子,能写出什么样的优质调查呢?

这样的坚持,又能搞成什么所谓的“大事”呢?

但是如果$LI成功了,并且证明不是割韭菜,建立起大家的信任,那么将改变这一局面

以后大家觉得自己项目好,就发出来通过加密货币的技术来募资吗,在币圈的加持下,不论有些人是进来赌博的,还是���些人是真心想资助项目的,募集的资金规模,根本就是以前不能比的

在这个情况下,很多事情就能做成了
比如大家心心念念的推墙,真的有人能有技术手段,那就公开方案,通过加密货币进行募资,大家投就好了
而不是去等待美国大发慈悲,哪个NGO机构大发慈悲,愿意搞这个项目了,才能去做了

项目推进的主动权,掌握在中国人自己手里了


经过和李老师的讨论,和对李老师项目,愿景的了解

决定成为$LI的雪花基金共同管理人,监督资金的用途

以后我会和李老师,徐某人,一起讨论雪花基金会的钱,会用去哪个项目里,或者资助哪些需要帮助的人士,这些钱的用途也会公开
我保证绝不会支持这个基金用做私人盈利

后续也可能会公开,像大家征集可行的项目,可行的想法
也会邀请更多的人加入这个基金会,共同决定资金的用途

希望以此建立一个公开,透明的方式,改变现在的生态,做出一些真正的改变

PS
利益声明:我个人买过一些$LI,但是目前没有卖出过任何一枚$LI,也没有依靠这个套利盈利

@bulbasauraa
个人浅见:
1、李本质并非所谓的海外反华人士 ,(像白纸青年)机缘巧合的做了反华的事情
2、他推特很早前就说过他不想做这个事情 流量裹挟着走的 这从他开始做油管后内容的变化可以看出
3、他的推特本质跟很多聊天工具里的Bot没区别 只是人工去操作了 但又不赚钱 同样的形式搬到油管赚的钱也满足不了他
4、采访的内容本质上不同频 王局在聊理想 李在聊变现 而后面基本就不是采访了 是两人的攻防战
5、李的一个观点我觉得没错 发币是他的自由 买不买是你的自由 王局基于部分人对他的期望 也是他的名声的立足之本 而他并不在意
6、不论怎么讲 即使你信任他去买这个币 也是抱着获利去的 但如果你连基本的判断都没有 最后被他割了 也怪不了任何人 不要最后被割了又拿道德说事 不论他如何解释 至少我听不出任何的道德感

最后,至于他最后结果会如何 方舟子不也活的好好的 还有大把人拥护 所以没有必要试图去救这其中的任何人 也救不了 这本身就是一种“信仰” 这些人不炒 也有其他获得盘会炒 其实换位思考一下 又有多少人会做的比他好?所以没必要上头 又不是第一回了

一个年轻艺术生,历史偶然走上了这条路,又无法回头,想可持续得把这个事情做下去,不容易。希望他能顺利吧,不要误入歧途就好。

我水平不够但想吃油管这碗饭,利润不够多到我能财务自由,想做油管mcn,王局别问细节毕竟这是我借来的遮羞布,想赚快钱,币圈以前只能当韭菜现在可以割韭菜,只谈理想别谈钱,经不起推敲不想留下把柄,我就想割韭菜不想合法合规赚钱,(os:王局都不知道怎么吐槽了,bug太多),想躺赚,我的“贡献”应该让我轻松躺着赚钱,心里很不平衡,王局你别提问了我的遮羞布要破了,不敢说成本开支,只能用安全做第一理由,(os:不喜欢就不做或者转手,然后找工作啊)

进入币圈太高调,高估了自己的信誉低估了韭菜智商,收不回来只能往更大的基金方向扯。我的羽毛是有价的,请给我与地位相符合的报酬。最初赛道选错了,现在转型到油管又要重新开始,我不想努力了,毕竟不符合我海外大V的身份格调。“没有跟别人商量”毕竟别人的名声比我还臭,暴露别人就露馅了。我不是在割韭菜,我反而是用我大V的声誉做赌注,你们这帮韭菜快感动投钱。账面上进我钱包的是小小头。(os:其实到底怎样大家都知道,不用你各种解释了)(员工os:被迫上贼船,是不是以后工资要下降了?)这十天我测试思考怎么能高效地割韭菜,最后决定豁出去了。我都压缩到30分钟了,王局再深入就是不安好心。我是想光明正大地长期割韭菜,所以不会做可疑的内幕交易(大概)。

首先99%的媒体人,除了他所在行业领域,其他行业他不在行,和你我一样是外行。不具备风险评估管控的能力,尤其金钱方面。那么这个人推出的项目,你会不会投资,投资风险度有多高?
就好比你很尊重的你爹干了一辈子的工地建筑,而且小有成就,突然你告诉你要投资养老服务领域,吃风口红利,告诉你必定赚钱。你很信任你爹,但你又有具备独立思考能力。你左看右看根据自己搜索的资料和现实市场环境。都得出大概率会被坑。但是你还是投了。因为你抱着【白给的想法和态度,说不定还能小捞一笔】的心理。反正还是给老头养老费不是,一样。
这就是那些支持李颖的人散播的想法,与其要给捐款,还不如投一下,被骗无所谓,能小赚更好,这种国内脑残饭圈的洗脑行为。
在这考虑李颖的粉丝群体,大多都是国内翻墙看热闹的人,他们知道只是把看李老师不是李老师,当做兴趣爱好,当做偶尔和朋友谁牛逼有谈资的消息获取渠道【你看,哪哪哪发生了什么,看国家黑暗成啥】这种显示自己知道的多。而不是YouTube关心时政的网友那种具备独立思考能力的人。所以李颖的YouTube内容做的很烂,我之前听过几乎没有啥自己有独到见解的内容,只是搬运播报。时政搬运吃瓜和时政评论完全是两个领域,业余和专业的区别。
所以,李颖并不具备太高的时政预见和解读能力。
但恰好,白纸革命,让他赚够了流量,把他推上风口浪尖。他的经历和成就是值得敬佩,但他个人对于许多东西的认知和决策还是停留与留学生水平。
简单来说,随便几个看似支持他得资本运作人,找上头它,给她说说币圈的变现能力和速度。给他讲讲,其中好处。他也就听了,这么做了。
他这个LI币完全不具备值得投资人背书的东西在。明眼人和具备投资经验的人都会看出,大概率会暴雷。
但他不具备辨识币圈风险的能力就一股脑把信任自己粉丝的人。啦入伙。这种行为及其不负责任。只有两种可能,要么他被团队运作得人给画饼洗脑入局无法脱身,要么他知道币圈大概率暴雷风险,任然选择这么做。利用账户收割一波。
你们自己分析一下李颖个人,你们也大概率会知道怎么回事,毕竟一个年轻人,意外的一些热血举动把自己推向推特中文圈粉丝第一人。他能把握住多少呢。
#kt #plt
duangsuse:
我的语意很明显,就是任何class T都可以有个弱类型检查的duel T.js ,用来做模式匹配、ORM等绑定
我手写反而看不出这个模式

你还别说,rust宏就是这么写的
https://t.iss.one/dsuse/20195

你要不想靠stdlib,直接用回调链表也行
#js
f=x=>x? f(x-1)+1 : 0
chkstk=f
f1=(x,ok)=>ok(x? f1(x-1, x=>x+1) : 0)

f(10000)
f1(10000, console.log)

kt的重要特性就是能for() inline fun{continue;} 啊

这帮玩学术的也太人机了,干了十几年统一口径都不行,自相矛盾吗

inline tailrec fun 意味着可以利用编译期constexpr来找到基线,就像上面 chkstk(0) 一样

我不认为这是个好电子。上面 ML99 是基于gcc -E的限制不得不元编程

rust 人觉得它的macro很强力,有println,derive宏,bitflag bitenum 等用法,但我眼里那都是过度设计
编译期的语意和运行时没有任何区别,Lisp (unquote fx)才是正确的

你这么干和上面两种chkstk(1)是没有任何区别的,无非是push不pop系统栈
据我之前的测试,能递归就别用数组 https://t.iss.one/dsuse/15603

你应该知道A递归、B回调链表递归、C伪递归是可以互相重构的
AB叫CPS,AC叫蹦床函数,BA叫逃逸分析(栈上优先分配),CA叫铸币

trampoRec=(f ,re)=>x=>{for(re=f(x); re.call;)re=re(x); return re}
f2=trampoRec((x)=> x? (x=> x-1) : 0)

强?大概是被 rust 替掉的强。多年以后template元编程有多强,都不会有人学它

kt的inline就是专门为arg:()->WTF设计的,let run, 这才是内联本来的价值所在

那可不是容易被做出来? 30行以内的东西
现在的K2都可以为[Int Array]生成泛型实化 class Array$OfInt 了,无非是想不想

fun let(this: List<T>, op:(T)->R) = listOf(op(this[0]) as R)

只要表示为json let/2: [Fun2 [$1 List], [Fn1 $1 $2] [$2 List]]
就可以应用于 val xx=listOf(1).let {"$it"} 得xx=$2=str

增强一下kt的类型系统? 有啥意义呢,不如多点能运行的东西,自动生成个json schema和form验证

类型系统就是个黑盒test,Matcher DSL 而已。 非得占用那么大篇幅,希望这些不运行的符号都早点死光,或者直接归入Prolog和SQL,编程才有正常的应用价值。

你说重载决议,那Py的 T.mro() 还有个C3拓扑排序算法呢,没写过屎山的人还真没机会用到那么多重载。我看kt现在 val f=::println; f(1) 都查不到重载的问题才该解决

我不知道sealed算不算tagged union ,但OOP到处都是数据+类型双指针,也造成了Int装箱等优雅性问题。 union能解决它们吗?

Moneky patch vs Proxy fork的路线之争而已
不过我还是喜欢能直接修改对方代码的,虽然不可持续

stdlib KFunctionN 都是用codegen的,没必要用模板

Ruby在AOP上可圈可点,是基于 using refine 的,注入的代码有作用域,你调用就有效,不会因为冲突导致bug

template<> 对普通程序员门槛疑似有些太高,还是 cpp #define +过程宏的门槛高呢?

我是真的崇拜Ruby的一些特性设计,Matz是下了苦功夫的,从Ruby启发了Pug HTML可见一斑

你问Javaer,他们大概不理解 List<T> 和 <T> class List 有什么区别,也分不清Interger vs int 什么的,但这不影响写出 .intStream()

java的哲学就是兼容性和简单
虽然输给了python,py才是真易用

比如什么 aspectJ.HasThisTypePatternTriedToSneakInSomeGenericOrParameterizedTypePatternMatchingStuffAnywhereVisitor
https://www.zhihu.com/question/550314430/answer/3098679716

kt的擦除只要不影响Gson,就是OK的,反正静态类型也就是个编译期黑箱test DSL

kt也可以啊,inline filterIsInstance<T>

你想在编译期递归,就需要constexpr啊

kt是一个不崇尚算法至高论的正常编程语言,和一切皆伪递归、一切皆回调链表的FP/PF人显然不一样

我一直很奇怪为啥TypeScripter把类型体操视为一种正向资产
dirty hack 和 abstract nonsense 的续延而已, 其实早就该被更成熟的过程宏取代

例如一些人觉得,有体操我们就可以parse pintf("%d", 那你就不会把printf这些f-str 展开成strcat的形式,再用oldschool的方法检查和补齐吗?

static typehint的主要缺点就是,它本来可以cover住前后端和SQL用于form验证的代码重复, 却偏偏在IDE里起个补齐作用就完蛋了

很明显,js里有正则字面, py kt 都有Range的概念,但它们的验证库,甚至包括静态检查器,往往不喜欢这些标准概念。这些类型并不奇怪,安卓SDK包含的 IntDef 就有检查数字常量的enum

很多人抨击TS的点就是,你脱糖编译成JS后该怎么破坏安全,没有得到更多的检查

我觉得类型系统的「两门语言问题」都是十分严重的, 类型原本是独立于编程语言而存在的概念,不应该只让编译期IDE去利用这些生成代码

union type的自由度太高了,目前也只在Result<T|Except> 利用这个做优化,看起来也没有在sealed额外设计的必要

OOP都是带tag的,int都可以装箱带tag,所以union与否,不是特别重要
事实上,只在编译期tag可以解决很多问题-例如 div(p({k:v}) ) 这些DSL, Java也可以用intStream()和反射元数据缓解这些值类型的问题, 但说到底, 驱动代码API的是语意,不是语言特性

不需要避免啊,你js操作ts世界就是UB嘛,gcc有一大堆UB
怎么不说glibc#longjmp也只是按CDEF ABI做的上文切换, 如果遇到其他ABI的调用,不一样会爆炸

这个不是很丑吗? DOM事件才是reactive/AOP的标准

实现上,记下方法ID,在Bean初始化里list.add(::f)就好了。不过是让真正的构造器晚点执行,换一种写法

依赖注入在js都不算事,我们可以拿 it.wtf=di[wtf_原型链.name] 查表,kt现在的DI也是直接在构造器内完成了

这个是TS最搞的。 一般用静态类型系统就不好谈json结构。js自己发明了json,结果TS连js的数据树都不好去检查, 也没能力像java那样自己按反射的类型loaddump

在我的设想里,直接把[] {} {T:原型} {type:Cat|Dog} range /regex/ 这样的结构并入类型系统里,不要在意太多泛型问题,[Pair] is Pair,少区分这些有的没的就足够了,不要为编译器服务

一个黑箱测试DSL 魔法成个什么玩意,结果连form验证都要手写!

擦掉的类型完全就是List<T>, sealed Interface 这里的项怎么读的问题,那就是要按运行时的tag来区分
不过没有也无所谓, 一个list.all{}断言而已

OOP把enum tag{} union 的问题藏起来了,但出现了json互通后,它暴露了class的文本结构更缺乏规范的问题, 可见不触及需求的大类,是解决不了反射问题的