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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from 科技圈🎗在花频道📮 (在花🎗)
北京广告协会公众号 明星代言规范委 删除了对蔡某某的风险把控提示 👀
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from 螺莉莉的黑板报
其实一直犹豫要不要吐槽,百度那面试揪着 new function, cookie 一顿狂问,你们是有多喜欢勺学,天天在 js 里面给自己挖坑玩吗……

面试者不知道 js cache api 是什么,不知道 rpc 是什么,我一下子懵了,还得现场解释。

2023 年了问 cookie 和 session 的区别是什么,我一下子都没反应过来 session 这个概念。

问我 css translate 跟 animation 的区别是什么,我:你是不是想问 transform……

还有一些很怪的问题, localStorage 满了怎么办,问我 localStorage 读写性能会不会不好。都能写满了说明你压根就不应该用 localStorage 存这东西啊!你们是在写什么玩意能写出性能瓶颈啊!实在不行用 idb 呗。然后问我 idb 是什么。

今年究竟是哪年……

面完非常挫败,每讲一句话都要被 challenge,感觉完全没在一个频段上……
#algorithm #bing 二分查找 spiral sorted ndarray
最好把它转换为1d,再转换回来以获取 '1'的位置
#py #code
def unrot(a, out):
while a.size:
out.extend(a[0]); a=np.rot90(a[1:])

#难以用concat矩阵滚出螺旋
def rot(a, m):
ia=np.reshape(range(len(a)), (m,-1))
unrot(ia, ord:=[])
return np.vectorize(lambda i:a[ord.index(i)] )(ia)

#make range(0,9) a spiral(cols=3)
[[0 1 2]
[7 8 3]
[6 5 4]]
a=rot([*range(0,9)], 3)
unrot(a, na:=[])

na[na.index(4)]=-1
print(a)
np.where(rot(na,3)==-1) #'4'=>[2,2]


def binary_search_matrix(matrix, target): 同理,可以是2d转1d
def binary_search_first_last(*a):
import bisect
left,right = (f(*a)for f in [bisect.bisect_left, bisect.bisect_right])
# 如果右边界超出了数组范围,说明目标出现1次
return (left, left if right == len(nums) else right - 1)


感觉很无语,居然为了无意义的“高性能”算法浪费2h ,还不如直接就用自己本来会的 a[ord.index(i)] 序号对应..

我发现2d.bisect 是以 (row=a[i])[0] 为线索再去 row.bisect ,这就更无聊了。Trie 前缀树至少还有 AC 的优化版(窄化为 KMP ),kD/quad 树至少还有切割公式 ,RB树有 std::(orderd_)map,但bisect 对Nd都只是Trie那样剪枝..
我觉得放在现实语境下就理所当然的策略,根本不该叫算法…


我很好奇除了用等价关系导入list里的算法,螺旋矩阵能怎么bisect,毕竟这东西本质就是list的重排序,它没啥性质可言

搜索发现这个螺旋数组 是 [4,5,6,7,0,1,2] 这种螺旋(shift..) 好奇怪的条件啊:
左右两段中,一定是有一段有序的,另一段可能有序可能无序(有序,则一定有段首值<段尾值)
需要 if nums[mid] >= nums[start] 判断左面是否有序
看的我都糊涂了,它是说 '//'状数组二分会产生 '/ _/'状无序右侧 ;算法是相当于只优化了“左侧”,对另一侧继续拆.. 这过度解读题意了。还不如直接拿拐点切分list,各自bisect()

螺旋数组 LC#54 不知为何大家用的都是Excel式四向法.. 虽然我写2048.js 时也是用了4向线性扫描了
括号匹配 LC#20 可以用调用栈,我又试了2h. bing反而误导我 😭
测试
pairs = {'(':')', '[':']', '{':'}'}
def eat(s,c0):
for c in s:
# 如果是左括号,就把它压入栈中
if c in pairs: eat(s,pairs[c])
elif c==c0:return # 如果是右括号,左括号便与之匹配
else: assert'','多余项而栈空'
assert c0=='eof','栈尚不为空'


#394 字串“编码” ,晕了,这标题为何如此民科啊!我还以为是词表替换
decodeString('hello,2[wo]rld')
'hello,woworld'

decodeString=(s)=>s.replace(/(\d+)\[(\w+)\]/,
(m,n,s)=>s.repeat(+n) )
本意是让你用 char 去累积 \d+[ ,累积[]里的字符,然后在 ']' 的时候输出repeat的文本,但这就是文本解析而已..

如你们所见,解法越简洁,我敲键盘的时间越少、敲脑门的时间越多……
#learn #FP 从“面向运气编程”到“设计程序”,「编程是什么」有许多天差地别的答案。

编程语言的范式。以社区的主流写法而定(FP之前后:统称过程式 vs. 定义式):

PP结构化- C,Go,Perl,Lua

C是会计算(跳转)栈、整数/struct* 类型到成员地址的汇编,它的对象检查很弱,也没有规范的List,KV数据类型(SDL,linux,qemu 这些都有自己的"utils")

GC需要定期"stop THE WORLD"并自 static/调用栈变量遍历对象图,连[]{} 都没有的C当然找不出“0引用”指针,更多人使用shared_ptr<T> 引用计数实现Pair<AB>等数据

OOP面向对象- C++, Java~, .NET~

FP函数式- JS,Py, Rust

若对象用 函数值参数/监听器字典,取代override 那就叫“闭包closure” (其可见/可定性同interface,都为 public open)

类比,AbstractAnimal=(T={eat,say})=>“构造器”(name)=>{name, __proto__:T“类型T也有proto”}

“弱结构强脚本”轻松于万物class{}。fn=a=>(b=>a+b) 能从词法上文捕获a,不用 new fn$1(fn.arg[1]) 手动把a放入匿名对象

PF纯函数- Haskell Scala Lisp~

冷门:
FRP响应式- Rx,React

- x86 wasm
在 .data 段加个字符常量, 再在 .text push bp;sub sp,N 栈分配调用 libc:printf
甚至需要关心 nasm; ld 仅仅来让print() 能跳转到dll的“地址”,不会SEGV

LP逻辑式- SQL Prolog #relational #types

逻辑问题也有函数域和'=',只是'a=b' 的含义是“解构赋值” 出解集。b能含变量: [1 x]=[y 2]
a=b, b=1 应求出a=1 ,因此执行流程是 cut(=) 深解构, ',|'and or 靠约束过滤解集, 最后 cat 深建构

若等号右边必须已知,在 ([1]+x)=[1 2] 的求解中
(+) A B
|A=[], B
|A=[x a], [x (a+B)]

appendo A B O
|A=[], O=B
|A=[x a], O=[x appendo(a B)]
里,O=[x 递归] 就无法匹配出 A=[$x ] 这些输入参数了

当然,变量是值。“解”可以是 [List T] 这样的含“类型”变量,<T> 一定是“类型函数”加过的变量,所以:[List T]就是函数签名
可以取各处T的成员(接口)交来infer调用、单独查找fun重载,但本质上都是这样:

fun Box<T>.let(f:(T)->R)=listOf(f(item))
let A B
|A=[Box T],B=[Fn T R], listOf(B.invoke(A.item))
|重载,.
listOf T..|[List T]

阮一峰 体验 👉 swish.swi-prolog.org/example/grammar.pl //在左边粘贴关系, 右边查询,如 murderer(X)
tomstu.art/hello-declarative-world
duangsuse::Echo
#algorithm #bing 二分查找 spiral sorted ndarray 最好把它转换为1d,再转换回来以获取 '1'的位置 #py #code def unrot(a, out): while a.size: out.extend(a[0]); a=np.rot90(a[1:]) #难以用concat矩阵滚出螺旋 def rot(a, m): ia=np.reshape(range(len(a)), (m,-1)) unrot(ia, ord:=[]) return…
#FP #sql #code 真正的 relational 笔记本👏
那种能 x+2=5 的。SQL做不到呢(预先 insert values (3,2,5)? )

花了一大把时间用来学习在逻辑式里写DFS搜索..

今天终于把序列化(/解析)器项目前堆积的事项完成了, 虽然这质量,怎么看都是很失败..

也就主要是for loop 的功能,但确实简洁了点。 学了关系式 constraint (注意不是sympy线代)后,觉得能更好的理解类型系统了
#life “你们在美国敢拿军人开玩笑么 ”。油管上随便一翻,一大堆。 这些粉红总喜欢以己度人,总以为世界上其他国家的人,也是每个人内心都装有一个中宣部。

🧐一些种族主义新纳粹,竟然会成为「政治正确」和懂王,也是让人感叹集权政体的轮回性。 东亚和犹太都是很爱考试的“资本主义”民族,也都有战乱史。同行相见,分外眼红?
https://m.youtube.com/watch?v=QRQvXScDzXc&t=9m
Forwarded from 科技圈🎗在花频道📮 (❤️)
AI 公司承诺将为 AI 生成内容打上水印

拜登政府周五表示,美国主要 AI 公司如 OpenAI、Alphabet、Meta Platform、亚马逊、Anthropic、Inflection 和微软已经向白宫承诺将自愿为 AI 生成内容实现水印等措施,以帮助提高 AI 技术的安全性。主要 AI 公司还承诺在发布新 AI 系统前进行彻底地测试,并分享诸如如何降低风险等信息。随着 OpenAI 的聊天机器人 ChatGPT 风靡世界,世界各国的立法者开始考虑如何缓解这项新兴技术对国家安全和经济的危险。(slashdot)

投稿:@ZaiHuaBot
频道:@TestFlightCN
Forwarded from 科技圈🎗在花频道📮 (在花⭐️投稿📮Bot)
安兔兔官方称“安兔兔车机版”将于下周一上线(7月24日)

来源微博(@安兔兔 )

投稿:@ZaiHuaBot
频道:@TestFlightCN
Forwarded from Solidot
Stability AI 发布 CC-BY-NC 4.0 授权的大模型 Free Willy 1 和 2

2023-07-22 18:18 by 火星战将

AI 创业公司 Stability AI 发布了在 CC-BY-NC 4.0 下授权的大模型 Free Willy 1 和 2,也就是商业使用受限制。FreeWilly1 是基于 LLaMA 65B 模型,FreeWilly2 是基于 LLaMA 2 70B 模型,Stability AI 称两个模型在不同基准测试中展现了出色的推理能力,其中 FreeWilly2 在部分任务中的表现超过了 GPT-3.5。公布这两个模型旨在促进开放研究,因此都是非商业使用授权。Stability AI 此前发布了一种可商业使用的开源大模型 StableLM。

https://stability.ai/blog/freewilly-large-instruction-fine-tuned-models

#人工智能
Forwarded from 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调用) 的参数,
CP.query(Uri(数据库等来源)) 是Cursor表格迭代器,它指向共享内存里被塞入的媒体数据
CursorWindow.getInt 只是表格的共享内存实现。Binder使用ptrFD+size 来传递mmap(shared mem, <2MB)
  CP.call("add",Bundle)
可调用对方

好的,我尝试用列表的形式来条理化这个过程:
app获取 CP
AMS 充当中间人,(拉起进程,若已启动但未缓存则仍 scheduleInstallProvider):
请求 Provider 回调,存到 ContentProviderRecord,让app线程停止sleep并创建 interface Provider (的Proxy)
它用Binder转发call()给CP.Transport(: IContentProvider) ,后者会解包计算并打包回调。同进程的CP不涉及AMS

总结:幸好我学的是DOM,py,cFFI 请求模型而不是java,不然世界观都被 android.xx 带崩塌了。没人想把Android当服务端来写,甚至服务端也越来越弱化,js化
心智模型不健康是设计不出易用的功能的,不愧是咕狗

#code 使用 makeRpc<接口InAIDL> 调用其他apk的函数
Forwarded from 科技圈🎗在花频道📮 (在花⭐️投稿📮Bot)
华为Harmony OS 4.0版本将于8月正式发布

来源:新浪微博

投稿人:Arkansas State Police

投稿:@ZaiHuaBot
频道:@TestFlightCN
#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 row; row = [1,*(x+y for x,y in zip(row, row[1:])),1] #上行+上左


def iself(n,fn):
a=[]
def _(i):
while True:yield(a[-i])
for x in fn(*[_(i+1) for i in range(n)]): a.append(x);yield x

ctrlM=lambda a: (lambda n:'\n'.join(f'{s}'.center(n)for s in a)) (max(len(str(s))for s in a))
N=20
print(ctrlM([*islice(杨辉(),N)]),'\n\nfib', [*islice(fib,N)])
#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) 就必须写成 conn(A,C) 的约束,尽管C只是A的“过滤结果”, 对C的穷举确实不像“返回值”能做到的

https://www.swi-prolog.org/pldoc/doc/_SWI_/library/lists.pl
关系式和SQL一样支持查询结果 distinct(unique)
之前用 findall(X, Func,R) 莫名出问题,也用不了lambda ,累死了
Forwarded from 科技圈🎗在花频道📮 (在花⭐️投稿📮Bot)
微软不再对Chrome 和 Safari 以及其他浏览器中屏蔽 Bing Chat 的使用。

然而,在其他浏览器上使用 Bing Chat 存在一些限制。比如,相比在 Edge 上使用 Bing Chat 的 4000 字上限来说,你只能输入 2000 字。对话在进行5轮后也会重置,而在 Edge 中是30轮。并且你会看到一些烦人的弹出提示,建议你下载 Edge。

https://www.theverge.com/2023/7/24/23805493/bing-ai-chat-google-chrome-safari

投稿:@ZaiHuaBot
频道:@TestFlightCN