Thursday, October 7, 2021

V2EX - 技术

V2EX - 技术


求 win11 任务栏靠右方法, 已知修改注册表不起作用

Posted: 07 Oct 2021 05:05 AM PDT

昨天全新安装 win11, 任务栏不能靠右很难受, 搜了基本都是修改注册表, 03 -> 02, 但是不起作用,重启了之后还是靠下,打开注册表发现自动改回 03 了

win11 ui 挺好看啊,动画效果也比以前强多了,为啥都在喷

Posted: 07 Oct 2021 05:01 AM PDT

我不关心它像不像苹果,我只关心产品本身,从产品的角度,我觉得 11 就是比 10 强,至少 ui 改动给人的感受最为直观,底层优化并不是一般人感受得到的

突然发现 win11 壁纸挺有意思的

Posted: 07 Oct 2021 04:55 AM PDT

win11 的默认壁纸是一朵花. 每片花瓣都是一个窗口(window)折叠成的形状. 许多的窗口拧成一朵花,正好和 Windows 的系统名称相呼应.

算是一个小彩蛋?感觉挺有意思的.😂

2021 年 Flask 用户调查报告(非官方)

Posted: 07 Oct 2021 04:49 AM PDT

报告见:

https://greyli.com/flask-report-2021/

欢迎继续提交问卷:

https://jinshuju.net/f/UY6Rd8

怎么防止用户自己调用网站 API 发送 POST 请求篡改数据

Posted: 07 Oct 2021 04:48 AM PDT

譬如我有一个 API 节点, 这个 API 接收包含 1 个参数 "address" 的 POST 请求

正常来说这个 address 是客户端在发送 POST 请求的时候程序自动获取的, 用户无法自己更改 但是如果用户自己用开发者工具之类的 call 这个 API, 在请求中传入自己有效的 Token 绕过鉴权, 和一个篡改的 address 参数, 那岂不是可以随意滥用这个 API 私自修改 address 了吗?

刚刚接触 web 开发不是很懂,请问该如何防止这个情况的发生?

直接从 win10 升级到 win11 有坑么,用了好几年了实在不想全新安装

Posted: 07 Oct 2021 04:45 AM PDT

macOS 用户表示很喜欢 Windows11

Posted: 07 Oct 2021 04:14 AM PDT

昨晚刚用上 Windows11,出乎意料地顺手。

过渡动画和 UI 设计,让我有种 macOS 的感觉,但是又更轻快,加上 Windows 本来就有的那种自由感、指哪儿打哪儿,简直太舒服了。

任务栏中置接受起来也很快,毕竟一直在用 macOS 。开始菜单确实有点别扭,需要习惯,但是其他图标放中间真是太棒了。

右键菜单什么的,毕竟一直在用 macOS...哈哈。

至于什么 UI 不统一、割裂什么的,我从来没对微软抱有这方面的期望,也就谈不上失望了。

PS:我用 macOS 也就一年左右,一半时间还是黑果。

关于 Windows 授权转移的问题,有没有遇到类似情况的大兄弟

Posted: 07 Oct 2021 04:00 AM PDT

之前的电脑是 Windows 7 零售专业版,升级到了 Windows 10 专业版,现在可以将该授权转移到新的电脑吗?

考考大家: Android 的 MessageQueue 为什么要使用 epoll?

Posted: 07 Oct 2021 02:50 AM PDT

分几个小问题来讨论:

  1. MessageQueue 为什么不直接使用 wait/notify? 它同样提供了超时, 唤醒等功能.
  2. Android 6.0 后为什么不再使用 epoll+管道的组合, 而使用 epoll+eventfd 了?
  3. 为什么用 epoll 实现, epoll 不是在 fd 多但活跃 fd 少的场景好用吗? 而消息队列只轮询了一个 eventfd, 用 select 不是更好吗?

求推荐快图浏览替代 app

Posted: 07 Oct 2021 02:41 AM PDT

快图浏览对我最重要的两个功能

1.双击图片能显示 100%大小

2.能添加 one drive,google drive 等网盘,直接查看里面的图片

由于年久失修,快图浏览添加 od 看不了图片,gd 能看图片但毕竟太贵了

目前有两个比较相近的,果仁相册,F-Stop,虽然能做到第二点,但第一点满足不了,连放大图片后滑动都还卡顿

好奇为什么看图 app 都没什么人做,5 年前停更的快图浏览依然秒杀一众看图 app

servlet3.0 servlet3.1 的所谓异步新特性到底使用场景是什么?

Posted: 07 Oct 2021 02:31 AM PDT

跟直接重定向跳转然后 websocket 获取数据有何区别?

有两台笔记本电脑,都是赠送了 office2019 家庭版/学生版,但是无法登录同一个账号吗?

Posted: 07 Oct 2021 02:29 AM PDT

在新电脑上提示超过激活次数了,这种情况我是找找网上的歪门邪道去激活好。。。还是再注册一个 microsoft 账号去激活 office 好呢。。。

使用 Google Authenticator 被坑了

Posted: 07 Oct 2021 01:49 AM PDT

今天使用 iPhone 版本的 Google Authenticator 时发现之前保存的记录有重复的,刷新多次和重新打开 app 都没用,于是就把重复项删除了。 过了一会儿再次打开发现刚才删除的项都不见了。。。 这个应用的数据按理都保存在本地,不联网的,不知道怎么会出现这种情况,导致误删了。。。

这段代码在 Python 里能怎么改写成效率更高的吗,听说 for 循环比较慢

Posted: 07 Oct 2021 01:40 AM PDT

    xs = []     ys = []     zs = []     for data in ls:         _x, _y, _z = data         xs.append(_x)         ys.append(_y)         zs.append(_z) 

迫于 win11 的 UI 太好看了,看的我难受,想搞个 manjaro 跟 win11 共存了

Posted: 07 Oct 2021 01:30 AM PDT

5 号 win11 正式版刚放出就迫不及待在官网下了个 installer 体验了一把 win11,给我的感觉就是没打磨完美:右键菜单缓慢的蹦出来 /蹦出来之后半折叠又半不折叠的 /菜单项目选中态高度太低 /出现了 win10 的右键菜单。总之感觉上就是不舒服,又没法让人自己去改动啥的,尤其是底部中央那个很像 dock 的玩意儿里面粘了块 team 的狗皮膏药撕不下来。


吐槽归吐槽,游戏还是得玩,adobe 也还得用,所以想给写代码的环境挪到 Linux 下。目前发行版选择的是 manjaro,桌面环境选的是 gnome 。为了防止帖子走歪,探讨下:

  1. 在目前 2021 的环境下双系统还有搞头么,会不会是给自己找麻烦呢?
  2. 双系统安装的正确姿势是啥?两个系统安装的顺序有没有需要注意的? win/linux 需要分盘存还是共用一个盘?
  3. 关于两个系统的引导该怎样进行配置?之前有装过但是都是 linux 去引导 win,怎样才能实现像古早时期的 legacy easyBCD 那样的 bios 之后直接进行系统选择,默认 win 这种呢?

折腾完我也打算写个文档啥的记录下


台式机:

  • 主板:微星 B450 迫击炮
  • U:AMD R5 2600
  • 存储:500G m2 固态 + 1T sata 固态 + 4T 机械

作为不受支持的用户,谈一谈强升 win11 的体验

Posted: 07 Oct 2021 12:38 AM PDT

先列一下配置,dell 7559 CPU Intel(R) Core(TM) i5-6300HQ,RAM 16G,GPU 960M,开启 TPM2.0 后,因为 6 代 CPU 所以不满足官方升级条件。后面,我使用了一台 CPU Intel(R) Core(TM) i9-9900K,RAM 32G,GPU 2080 的台式机做对比

强制升级的方法

1.通过官方升级助手

下载官方升级助手后,通过以兼容 Win7 模式运行,会自动跳过配置验证阶段,进入安装步骤,算是官方逼 Win7 退市的后门?下载镜像进入安装模式( Step 3 )后要断网,因为联网状态镜像会自动检查更新并检查配置是否满足要求。

2.通过镜像升级

下载镜像,解压后,删除'resource-appraiserres.dll'文件,并在安装前,断开网络连接。即可跳过配置检测。

使用体验

可能是没有适配或是其他原因,这一次的升级非常慢,从开始走进度条到开机进锁屏花了 1 个半小时。

为了去除刚刚升级过后的一些干扰项,体验前,先将可以更新的驱动全部更新到最新版本(其中 Wi-Fi 驱动和 GPU 驱动在更新说明中说明提供了 11 的支持)。

另外,虽然网传强制升级会失去自动更新,但是我在升级之后,后台就通过 Windows 更新收到了名为 KB5005635 的积累补丁,并自动进行了安装和重启,因为不在我设置的使用时间段内,所以就自动重启了。

适配产生的问题

首先是新的动画,掉帧非常明显,长时间不使用 [开始菜单] 后,点击开始菜单,菜单升级中会有一段明显的掉帧动画,之后虽然没有那么明显,但也有可以察觉的不顺滑感,感觉动画很像以前的安卓,快但是傻。文件资源管理器,第一次启动,按下到打开界面有可以感知到的卡顿,需要 0.5s 以上的等待时间。同时这些操作,均会使 CPU 占用飙升到 90%以上。而受支持的台式机,这些操作均不会对 CPU 占用产生影响。

另外常规使用下,很明显会觉得动画不跟手,有时候操作完,动画反应慢半拍的情况,你需要等系统给反应,或者说要确认自己是否真的进行操作了。

开机(指的是输入密码到出现桌面这段),时间也明显增加。

另外非常影响体验的一点是,用鼠标多选文件时( 42 个项目,包含 pdf,exe,docx,mp4 文件),在框选超过三分之一的文件时,界面会卡死 0.5s 左右。

通病

这里说一下,Win11 体验下来的通病,这里用的是台式,完全符合 Win11 的升级条件,所以因为不适配出问题的可能性会比较小。

动画傻且割裂严重,虽然比起 10 已经有了巨大的进步,但是现在的动画太傻了(这里说的是不像现在安卓或者 ios 那样很舒服的动画)。同样是固定在任务栏上的应用,第一次启动,感觉是闪现出现在屏幕上的,而最小化最大化的动画就看起来很合理。关闭窗口也是原来那种感觉。

设置的二级菜单卡,点下后,要等一下才能进入。给人的感觉就是不跟手。

新的 UI 没有覆盖全界面,比如说

5SXYM4.png 5SXtsJ.png

其他个人觉得不好的点

右下角系统状态合一之后,音量没了数字显示。聊天,小组件这类功能右键不能取消固定,要打开任务栏设置自己修改。

后续

因为高 CPU 占用和动画卡顿问题,笔记本已经回退回 Win10 了,台式机保留在 11 。因为基本只是 UI 的变化,所以现在还没有什么影响。这里不得不吹一下,Win10 的更新回退机制,体验非常好,从按下回退到重新进入桌面,不到 30 分钟,而且完全没有丢失内容(比如 Win11 期间浏览器的历史纪录什么的),可以说这个后悔药真的挺香的。

留一张图纪念一下,短暂的 Win11 。

5Svw8K.md.png

Linux 内核网络包路径追踪利器 skbtracer, Go 语言版本

Posted: 06 Oct 2021 11:46 PM PDT

Linux 内核网络包路径追踪利器 skbtracer,Go 语言版本

skbtracer 是基于 eBPF 技术的 skb 网络包路径追踪利器,基于 goebpf , libbpf-bootstrap (required Linux Kernel 4.15+ with CONFIG_DEBUG_INFO_BTF=y, Go 1.16+) 实现,参考 Python 版本 github.com/DavadDi/skbtracer

skbtracer 是一个 Linux 可执行文件,不依赖 libbcc.so 动态链接库,就可以在开启了 CONFIG_DEBUG_INFO_BTF 的环境中运行。

开源地址:github.com/Asphaltt/skbtracer

使用

运行效果:

$ sudo ./skbtracer -c 10 TIME       NETWORK_NS   CPU    INTERFACE          DEST_MAC           IP_LEN PKT_INFO                                               TRACE_INFO [13:43:45] [0         ] 3      nil                00:00:00:00:00:00  168    T_ACK,PSH:10.0.1.10:22->10.0.4.15:55343                ffff9a271b1b3ae0.0:ip_output [13:43:45] [0         ] 3      ens18              00:00:00:00:00:00  168    T_ACK,PSH:10.0.1.10:22->10.0.4.15:55343                ffff9a271b1b3ae0.0:ip_finish_output [13:43:45] [0         ] 3      ens18              00:00:00:00:00:00  168    T_ACK,PSH:10.0.1.10:22->10.0.4.15:55343                ffff9a271b1b3ae0.0:__dev_queue_xmit [13:43:45] [0         ] 3      nil                00:00:00:00:00:00  248    T_ACK,PSH:10.0.1.10:22->10.0.4.15:55343                ffff9a271b1b36e0.0:ip_output [13:43:45] [0         ] 3      ens18              00:00:00:00:00:00  248    T_ACK,PSH:10.0.1.10:22->10.0.4.15:55343                ffff9a271b1b36e0.0:ip_finish_output [13:43:45] [0         ] 3      ens18              00:00:00:00:00:00  248    T_ACK,PSH:10.0.1.10:22->10.0.4.15:55343                ffff9a271b1b36e0.0:__dev_queue_xmit [13:43:45] [0         ] 3      nil                00:00:00:00:00:00  120    T_ACK,PSH:10.0.1.10:22->10.0.4.15:55343                ffff9a271b1b2ce0.0:ip_output [13:43:45] [0         ] 3      ens18              00:00:00:00:00:00  120    T_ACK,PSH:10.0.1.10:22->10.0.4.15:55343                ffff9a271b1b2ce0.0:ip_finish_output [13:43:45] [0         ] 3      ens18              00:00:00:00:00:00  120    T_ACK,PSH:10.0.1.10:22->10.0.4.15:55343                ffff9a271b1b2ce0.0:__dev_queue_xmit [13:43:45] [0         ] 3      nil                00:00:00:00:00:00  120    T_ACK,PSH:10.0.1.10:22->10.0.4.15:55343                ffff9a271b1b30e0.0:ip_output  15 event(s) received 0 event(s) lost (e.g. small buffer, delays in processing) 

使用帮助:

$ ./skbtracer -h examples: skbtracer                                      # trace all packets skbtracer --proto=icmp -H 1.2.3.4 --icmpid 22  # trace icmp packet with addr=1.2.3.4 and icmpid=22 skbtracer --proto=tcp  -H 1.2.3.4 -P 22        # trace tcp  packet with addr=1.2.3.4:22 skbtracer --proto=udp  -H 1.2.3.4 -P 22        # trace udp  packet wich addr=1.2.3.4:22 skbtracer -t -T -p 1 -P 80 -H 127.0.0.1 --proto=tcp --callstack --icmpid=100 -N 10000  Usage:   skbtracer [flags]  Flags:       --callstack          output kernel stack trace (DEPRECATED: not implemented to print the function stack)   -c, --catch-count uint   catch and print count (default 1000)       --dropstack          output kernel stack trace when drop packet (DEPRECATED: not supported on Ubuntu 18.04.5 LTS with kernel 5.10.29-051029-generic)   -h, --help               help for skbtracer       --icmpid uint        trace icmp id   -H, --ipaddr string      ip address       --iptable            output iptable path       --keep               keep trace packet all lifetime (DEPRECATED: not implemented yet)   -N, --netns uint         trace this Network Namespace only       --noroute            do not output route path   -p, --pid uint           trace this PID only   -P, --port uint          udp or tcp port       --proto string       tcp|udp|icmp|any   -T, --time               show HH:MM:SS timestamp (default true)   -t, --timestamp          show timestamp in seconds at us resolution 

编译

编译 skbtracer 需要使用较新版本的 llvm,要求 Go 语言的版本 1.16 及以上,因为需要使用 embed 包将 BPF 的 ELF 文件内嵌到 Go 程序里面,不依赖 Linux 内核头文件。

只需要以下几步即可编译得到可执行文件:

$ git clone https://github.com/Asphaltt/skbtracer.git $ cd skbtracer $ make $ ./bin/skbtracer -h  # 可执行文件在 bin 目录下 

实现原理

使用 clang -target bpf 编译 BPF 代码,得到对应的 ELF 文件。

然后在 Go 代码里使用

//go:embed skbtracer.elf var bpfProg []byte 

将 BPF ELF 文件内嵌进来。接着使用 goebpf 加载 BPF ELF 文件,并将 BPF 程序装载到内核里去运行。

BPF 程序通过 perf event 将网络包路径信息发送到 Go 程序,Go 程序就可以解析 perf event 得到 struct 。

BPF 程序里使用以下 kprobe 追踪网络包路径信息:

  • netif_rx
  • __netif_receive_skb
  • tpacket_rcv
  • packet_rcv
  • napi_gro_receive
  • __dev_queue_xmit
  • br_handle_frame_finish
  • br_nf_pre_routing
  • br_nf_pre_routing_finish
  • br_pass_frame_up
  • br_netif_receive_skb
  • br_forward
  • __br_forward
  • br_forward_finish
  • br_nf_forward_ip
  • br_nf_forward_finish
  • br_nf_post_routing
  • br_nf_dev_queue_xmit
  • ip_rcv
  • ip_rcv_finish
  • ip_output
  • ip_finish_output

使用 kprobekretprobe 探测 ipt_do_table 去追踪网络包的 iptables 信息。

相关文档

求一个 iOS 的颜色处理库?

Posted: 06 Oct 2021 10:10 PM PDT

主要想:
1.给定一个颜色,可以让它变亮 /变暗。
2.给定二个颜色,判断它们之间的相似程度,比如:玫红和洋红可以认为是同一个红色。

谢谢!

使用 workeman/redis 时,如何才能避免回调地狱

Posted: 06 Oct 2021 09:53 PM PDT

//查询是否有 key $redis->get('key', function ($result, $redis)use($db){     //设置 key2     $redis->set('key2', 'value2', function ($result)use($db) {         var_dump($result);         //更新数据库         $row_count = $db->update('Persons')->cols(array('sex'))->where('ID=1')        ->bindValue('sex', 'F')->query();     }); }) 

如果这样我写的话,已经超过 3 层回调了,如果还需要再更新数据库里面发送一个异步 Http 请求(workerman/http-client),这样岂不是又多了一两层? 我该如何修改这个写法,才能像同步代码写法

没有安全启动,能装 win11 吗?

Posted: 06 Oct 2021 09:33 PM PDT

uefi 启动有,但是没有 secure boot 。

现在是 win10,能绕过装 win11 吗?

Kokoro 是什么?

Posted: 06 Oct 2021 09:11 PM PDT

在 Github 看 Google 的示例代码时,看到有个 .kokoro 的文件夹,如下:
https://github.com/GoogleCloudPlatform/java-docs-samples

很好奇这个 kokoro 是什么。用 kokoro 关键词却搜不到相关的介绍、教程之类。看文件夹的内容,好像是个 build 工具。

天长地久海誓山盟什么的都是假的

Posted: 06 Oct 2021 05:01 PM PDT

Windows 10: 说好的我是唯一呢? https://cnb.cx/3pKw2Bt

假设你使用的程序语言不支持递归程序,如果要求用栈来模拟下面这个斐波那契求第 n 项的程序,应该如何转换成等价的基于栈的非递归实现?

Posted: 06 Oct 2021 01:26 PM PDT

int fib(int n) {

if(n == 1 || n == 2) { return n; }

return fib(n-1) + fib(n-2)

不支持 tpm 的升级 win11 方法

Posted: 06 Oct 2021 12:18 PM PDT

我折腾了个把月,各种方法都试过了, 还是不行, 后来发现只要你下载 win11 的 iso 文件后解压, 然后再 source 目录下删除 appraiserres.dll , 然后点击 setup 就可以了。

iptables --set-mark 走指定网卡为啥不生效

Posted: 06 Oct 2021 12:18 PM PDT

主机上目前有两个网络出口 两张网卡

alt

然后我设置 iptables 想把本机出口的所有流量标记为 20

alt

然后我设置了一个路由表 li 规定了从网络出口 eth1 出去到网关 192.168.123.1

localhost:~/Desktop # ip route show table li

default via 192.168.123.1 dev eth1

设置好了 ip rule 策略路由 让标记为 20 的包走路由表 li

localhost:~/Desktop # ip rule

0: from all lookup local

32764: from all fwmark 0x14 lookup li

32766: from all lookup main

32767: from all lookup default

这样设置好了按理说本机发出的数据流量会被标记为 20 然后在策略路由的时候走路由表 li,然后根据路由表的规则走 eth1 出口的吧?

但是最后发现本机发出的数据并没有走路由表 li 依然还是按照 route -n 路由表的默认路由项走

route -n 如下

localhost:~/Desktop # ip route

default via 192.168.123.96 dev eth0

192.168.123.0/24 dev eth1 proto kernel scope link src 192.168.123.85

192.168.123.0/24 dev eth0 proto kernel scope link src 192.168.123.75

数据流量依然没有走路由表 li 规定的从 eth1 口出去

localhost:~/Desktop # ip route get 8.8.8.8

8.8.8.8 via 192.168.123.96 dev eth0 src 192.168.123.75 uid 0 cache localhost:~/Desktop #

还是走的 eth0

折磨了我好几天了,想请教下 V 友们这个是什么情况,十分感谢!🙇‍

用 Fusion 的虚拟 TPM 感觉很占用性能,不知道 PD 的怎么样?

Posted: 06 Oct 2021 10:56 AM PDT

虚拟 TPM 开了以后的 Win11 不跑任何软件,照样风扇呼呼吹,CPU 占用率略高

请问 Python 操作 Redis 写入数据每秒 5W 算正常么?

Posted: 06 Oct 2021 09:22 AM PDT

代码如下,使用了 pipeline,10W 数据执行下来要 2s,这个算是正常速度么?请问还有啥跑更快的办法么?

 from datetime import datetime from redis import StrictRedis redis = StrictRedis(host='redis', port=6379, db=0)  def test_redis(count):     pipeline = redis.pipeline()     process_start = datetime.now().timestamp()     for value in range(1, count):         user_key = 'user:id:' + str(value)         pipeline.set(user_key, 'bar')     pipeline.execute()     process_elapsed = round(datetime.now().timestamp() - process_start, 2)     print("\nDone ({}s).\n".format(process_elapsed))      test_redis(100000) 

CNN 手写数字分类与希卡文翻译

Posted: 06 Oct 2021 08:38 AM PDT

之前有 V 友说可以用卷积神经网络来做,试了试,很外行的那种,V 站好像没法发长文,具体实现贴掘金了~

CNN 手写数字分类与希卡文翻译

从希卡文翻译谈谈 OCR 的简单实现

工具的功能很简单,可以实现《塞尔达》游戏中英文到希卡族文字的转换并下载成图片,也可将生成的席卡文图片翻译出来。

output.gif

起因是之前无聊搞了个《塞尔达》游戏的希卡文生成 /翻译器,文字翻译的实现是通过相似图片识别实现的,比较简单暴力,通用性也不是很高。最近正在摸一些机器学习的东西,正好看到一个卷积神经的经典示例:手写数字分类 MNIST,于是依葫芦画瓢重新实现了希卡文翻译器。

工具地址:https://kinglisky.github.io/zelda-words/index.html

仓库地址:https://github.com/kinglisky/zelda-words

No comments:

Post a Comment