Friday, May 14, 2021

V2EX - 技术

V2EX - 技术


2000-2500 预算,求推荐安卓手机

Posted: 14 May 2021 05:46 AM PDT

发热之类的缺点,欢迎指点
倾向于一次选择多用些时间的用法,希望用到第三年别太慢

求超强 Android 系统编译主机推荐

Posted: 14 May 2021 05:00 AM PDT

因为项目需要定制安卓系统, 适配好多的手机, 每次修改或者发布版本都要编译好久, 我的 iMac 的 CPU 是 i9 9900K 的, 性能吃满完整编译一次 Android10 耗时 2 个小时左右, 求懂行的朋友推荐一个编译服务器, 我在网上看到有 E5 双路 CPU 这种, 不知道能不能满足快速编译的需求, 怕买回来还不如我的 i9 处理器.

只要 CPU 强, 内存 32G 差不多了, 显卡不需要,SSD 不需要,显示器不需要, 其他配件凑合稳定就行, 组这样一台机器, 最低预算是多少? 或者有经验的老哥可以推荐一下配置吗?

fastapi-admin,再出发

Posted: 14 May 2021 05:00 AM PDT

之前发过一个帖子,https://www.v2ex.com/t/659932#reply8

当时的 fastapi-admin 是基于前后端分离,前端大部分复用了另一个 vue 项目,查询协议也是该项目带的,然后我用 fastapi+tortoise-orm 写了后端,然后就有了第一版的 fastapi-admin 。

后面慢慢发现了这种方案的不足,因为只有我一个人开发,前后端分离并没有带来多大的开发效率,并且复用该项目后扩展性变得很差,并且带来发布上的不便,pypi 上只能发布后端程序,前端需要单独编译部署。

然后今年又经历辞职,找工作,项目的维护也没有那么活跃了,直到最近工作逐渐稳定下来,于是又开始着手重构 fastapi-admin 。

重构后的 fastapi-admin 类似于 Django admin,同样基于 fastapi+tortoise-orm,使用 jinja2 构建前端页面,ui 框架使用tabler,易于安装,扩展。

项目地址: https://github.com/fastapi-admin/fastapi-admin

最后照例求个 star,感谢!

友情联动:发支付宝口令红包,欢迎大家破解.

Posted: 14 May 2021 04:59 AM PDT

昨天有个帖子: https://www.v2ex.com/t/776529 前端加密让大家破解 AES 加密红包,这太离谱了。

我把 AES 算法去掉,现阶段的计算机要破译几乎不可能。改成了最简单的 XOR 加密,也放入了口令红包,欢迎大家破解。

规则如下:

  1. 支付宝口令红包是纯数字的 0~9, 长度固定为 8

  2. password 明文密码被限定为 0~9, a~z, A~Z 这个范围内,无特殊字符,无中文和符号。

  3. 为了便于校验结果是否有效,支付宝口令累加起来的数字,是 45 。(比如口令是 12345678, 累加值就是 1+2+3+4+5+6+7+8=36)

  4. 核心解密函数就一行,password 是不知道的,是前端 input 用户输入。

var str = "WmXOsVFG";
var pass = "????????";
var num = "";

for (var i=0;i<pass.length;i++)
num += String.fromCharCode(pass.charCodeAt(i) ^ str.charCodeAt(i));

Python 终于决定要提升一下性能了

Posted: 14 May 2021 04:56 AM PDT

根据 PEP 659 , Python 3.11 预计要实现 25%~50%的性能提升。另外 Guido 在 FasterCPythonDark.pdf 中给出的性能提升预期更为激进(每年 50%性能提升,4 年性能提升 5 倍)。

近期 Pyston 发布了基于 Python3.8 的新版本。Instagram 也发布了自己的性能改良版 Python Cinder 。似乎Python终于想起来性能这回事了。不知道最后能做到什么程度。

用过 Sony Xperia 系列的大佬给说说这手机怎么样?这年头想找个完整屏的手机太难了。

Posted: 14 May 2021 04:56 AM PDT

Java 面试官应该怎么考察一个面试者的能力?

Posted: 14 May 2021 04:38 AM PDT

如题,最近公司在扩招,之前面了很多实习生(一面),个人觉得对实习生最重要的是基础,所以基本是通过一些 java 基础、数据结构和算法来筛选。

当前公司让我去面试一些社招生,本人就开始有点迷茫了。大部分的面试者从简历上没法看出项目的难点(应该也跟本人对业务场景不了解有关系),想请教一下 v 友们怎么当好一个面试官。

装了 49 个插件,有种 IDE 的感觉...

Posted: 14 May 2021 04:17 AM PDT

日常中如何解决 Python 中字典是无序这一问题的

Posted: 14 May 2021 04:15 AM PDT

collections 的 OrderedDict 可以解决无序问题,但是他是按照你赋值的顺序实现的,比如我现在有一个 dict
使用 OrderedDict 的话
from collections import OrderedDict
a = OrderedDict()
a["aaa"] = 1
a["bbb"] = 2
这样情况下得出的是一个有序的字典 dict a = {"aaa": 1, "bbb": 2}
如果我原本就有一个 dict b = {"ccc": 3, "ddd": 4}
在不遍历重新赋值的情况下怎样让成为一个有序的字典

关于 Java 服务上 k8s 的最佳实践(配置文件和 debug)?

Posted: 14 May 2021 03:54 AM PDT

俺现在按照公司要求, 要将 java 服务上 k8s, 但有几点不明, 想问问做过的老铁们, 以下几个方面的最佳实践是什么

一 配置文件

本来配置文件就是跟随代码的, 为不同的环境创建不同的配置文件, maven 打包时, 根据环境参数就可以打包不同的配置文件.

这样的好处就是

1. 可以很直观的看到不同环境的配置
2. 选择适当的配置文件, 可以直接本地启动服务(进而可以很方便的 debug)

但, 如果使用 ConfigMap 的形式, 是不是需要把所有 java 服务的配置文件使用一个单独的 repo 来管理起来? 而且这些配置文件的更新也是要走单独的 CI/CD 流程?

而这样的话, java 服务本身就不需要知道具体的配置是什么了?

二 远程 debug

原来 java 在虚拟机上运行时, 俺可以很方便的远程 debug, 但现在服务以 pod 形式运行, 而 pod 的生命周期交给了 k8s. 俺想 debug 的话, 得

1. 先打开 k8s 的端口转发
2. debug 期间, 健康探针如果发现服务"不健康"了(其实还是健康的, 只是俺在 debug), pod 就会被干掉, 这样就无法继续调试了, 怎么办?

c++的宏替换时,为什么使用##能把逗号去掉?

Posted: 14 May 2021 03:27 AM PDT

如下 #define debug3(format, ...) printf(format, ##VA_ARGS)

debug3("hello \n");

如果不添加##,当可变参数为 0 个时,编译会报错。

##的作用不是"连接前后两个字符串"么? 还是说,c++编译器就是这个处理的?

接上个题主,安卓 APP 编译快,有啥配置推荐

Posted: 14 May 2021 02:41 AM PDT

现在是 macbook pro 2019 16g i7, Android studio run 起来就系统就很慢,特别是 mac 的降频机制。
想搞一个快点的自己用。

大佬都用什么 web 打印方案?

Posted: 14 May 2021 02:06 AM PDT

最近项目上需要用到 web 的打印方案,且需要向后兼容国产操作系统!!!所以前来咨询下大佬。。目前都有什么 web 打印方案。。。

我用的 vue~~~~~~~~~~~~~~

Avue 框架!!

isinstance 函数似乎施加魔法,可以自动判断?

Posted: 14 May 2021 01:53 AM PDT

我在构造一个自定义迭代器 Test 类的时候发现一个奇特的现象,Test 类并没有继承自 Iterable,只是实现了__iter__和__next__函数。

然而创建的对象却可以判定是 Iterable 类型

class TestIterator():     def __init__(self, n):         ...     def __iter__(self):         return self     def __next__(self):         ...  t1 = Test() isinstance(t1, Iterable)   #返回 True !!! 

然后我又创建了一组普通的类测试,发现又不行了:

class A:     def do1(self):         print('A do1') class B(A):     def do2(self):         print('B do2') class X:     def do1(self):         print('X do1')  a1 = A() b1 = B() x1 = X()  isinstance(b1, A)    #True isinstance(x1, A)    #False ??? 

腾讯云怎么这样子的,要限我上行速度吗?

Posted: 14 May 2021 01:34 AM PDT

尊敬的腾讯云用户,您好!

您的腾讯云账号(账号 ID:xx******xx,昵称:xxxxxx )使用的公网带宽业务,入网带宽长时间超出上限限制,将于 7 天后进行上行带宽限速处理,请合理的调整您的业务部署架构,感谢您的配合。 具体限制阈值请点击如下按钮查看。

因为平时用户上传的文件比较多,用户上传后就在 CVM 里面简单处理完,就转存到 COS 里面,所以服务器入带宽一直比较大,但是也不是很夸张。用户上传文件当然希望比较快的,每日用户上传文件大概也就 20GB 左右,也不是很夸张吧(服务器买的是 5Mbps 外网带宽),以前没有见有这种限制啊,如果把我的服务器入带宽限了 10mbps,那么以后我复制大文件到服务器岂不是 GG 了?但是现在直接给我账号限制了 10mbps 上行,而且给的 7 天时间,程序怎么够时间改的完,到其他服务商备案也没有办法在这个时间内搞定啊。

有点不想用腾讯云了,你们说的良心云,对我一点都不良心。。

有没有在一个电脑上同时跑多个代理端口的方法

Posted: 14 May 2021 01:02 AM PDT

比如我有好几条 v2ray 的线路,在一个电脑上,我想每个浏览器用一条独立的线路,有没有啥客户端可以支持这种操作?

无外网的内网机器,如何正确实现内网穿透?

Posted: 14 May 2021 12:38 AM PDT

内网穿透方面,相信无论是 frp 或 nps 都比较常用且易用了,不过目前有这个需求,用户的网络:

内网 A 服务器(无法访问外网) 192.168.1.100
内网 B 服务器(内外网均可访问) 192.168.1.253
公网 C 服务器,8.8.8.8

现在是想访问 192.168.1.100 的 3306 端口也就是 mysql 的,目前 Google 查询的做法大致是这样,以比较流行的 frp 为例,

1 、「内网 A 服务器 192.168.1.100 」 配置 frpc 走 socks5 代理到 192.168.1.253 ,引出一个远程端口如 3307 端口;

2 、在「内网 B 服务器 192.168.1.253 」同时配置 frps 与 frpc,frps 做 socks5 代理提供给「内网 A 服务器 192.168.1.100 」用,然后如常配置 frpc 走「公网 C 服务器,8.8.8.8 」,当然也可以自行搭建其它的 socks5 代理。

总感觉这样子十分繁琐...而且性能、稳定性上未知,这个需上生产环境,量会比较多,但需求是一样的,就是安全地访问无公网 IP,且无法上网的内网数据库服务器。

OpenVPN,如果在用户的网络如「内网 B 服务器 192.168.1.253 」这样的安装 OpenVPN 客户端,仅点对点(通过 tun 的虚拟网卡 ip )可以互相访问,通过路由可以让「内网 B 服务器 192.168.1.253 」访问到「公网 C 服务器,8.8.8.8 」所处的局域网 /内网,但这个跟我们的需求反过来了,是我们要访问别人而不是让别人访问我们...

WireGuard 估计也是类似吧...不知道各位大神是否有好的建议或者是正在实践中的。

论坛里大佬,有没有在公司实践落地 spring webflux +r2dbc 的

Posted: 13 May 2021 10:20 PM PDT

如题目一样,论坛里大佬,有没有公司实践落地 spring webflux +r2dbc 的,性能如何,在公司推广起来了吗,觉得未来有前途吗,可以取代 spring mvc+mybatis 之类的吗

关于 rsync 的新发现

Posted: 13 May 2021 09:54 PM PDT

我使用rsyncext4硬盘将文件复制到FAT32硬盘(使用FAT32是为了兼容WindowsMac

复制的过程中,我发现rsync没有增量传输,而是每次都重新传输

查了一下,得知FAT磁盘的时间存储位比ext少,导致 rsync 认为两边文件时间不一致

据微软所说,NTFStoFAT也有这个问题

When files are copied from NTFS drives to FAT drives, some file time stamp rounding has to occur; the file time stamp is rounded up to the next even second.

...

NTFS time stamp: 7 hours 31 min 0 sec 001.

FAT time stamp becomes 7 hours 31 min 2 sec 000.

至此我才明白,rsync只检查时间和文件大小,就决定两边文件是否一致

如果构造两个文件,内容不一样,但是时间和大小都一样,rsync就会认为两文件一样从而不再传输

比如,创建两个文件,一个内容为 123,一个内容为 321

$ cat file1.txt file2.txt 123 321 

然后把他们 touch 成时间相同

$ touch file1.txt file2.txt 

然后看一下他们的详细信息

$ stat file1.txt file2.txt   File: file1.txt   Size: 4               Blocks: 8          IO Block: 4096   regular file Device: 10302h/66306d   Inode: 7471107     Links: 1 Access: (0664/-rw-rw-r--)  Uid: ( 1000/z)   Gid: ( 1000/z) Access: 2021-05-14 11:27:13.168183020 +0800 Modify: 2021-05-14 11:27:13.168183020 +0800 Change: 2021-05-14 11:27:13.168183020 +0800  Birth: -   File: file2.txt   Size: 4               Blocks: 8          IO Block: 4096   regular file Device: 10302h/66306d   Inode: 7471108     Links: 1 Access: (0664/-rw-rw-r--)  Uid: ( 1000/z)   Gid: ( 1000/z) Access: 2021-05-14 11:27:13.168183020 +0800 Modify: 2021-05-14 11:27:13.168183020 +0800 Change: 2021-05-14 11:27:13.168183020 +0800  Birth: - 

然后我们执行rsync

$ rsync -vv -n --no-whole-file --inplace file1.txt file2.txt delta-transmission enabled file2.txt is uptodate total: matches=0  hash_hits=0  false_alarms=0 data=0  sent 46 bytes  received 76 bytes  244.00 bytes/sec total size is 4  speedup is 0.03 (DRY RUN) 

rsync果然没有传输

针对这种情况,还需要加上--ignore-times参数,才能让rsync传输时间、大小都一致的文件

小白求教,关于 SpringSecurity 的 hasRole 方法进行角色鉴权

Posted: 13 May 2021 09:44 PM PDT

我是希望根据 hasRole 来判断一个 url 是否能被当前用户访问,然后写了下面这些配置

protected void configure(HttpSecurity http) throws Exception {         http.csrf()                 .disable()                 .sessionManagement()                 .sessionCreationPolicy(SessionCreationPolicy.STATELESS)                 .and()                 .authorizeRequests()                 .antMatchers("/stu/**").hasAnyRole("stu")                 .antMatchers("/teacher/**").hasAnyRole("teacher")                 .antMatchers("/admin/**").hasAnyRole("admin")                 .anyRequest()                 .authenticated()                 .and()                 .headers()                 .cacheControl();         //添加 jwt,登录授权过滤器         http.addFilterBefore(jwtAuthenticationTokenFilter(), UsernamePasswordAuthenticationFilter.class);         //添加自定义未授权和未登陆结果返回         http.exceptionHandling()                 .accessDeniedHandler(restfulAccessibleDeniedHandler)                 .authenticationEntryPoint(restAuthorizationEntryPoint);      } 

jwt 登录时获取到的 UserDetails 信息是这样的

SecurityContextImpl [Authentication=UsernamePasswordAuthenticationToken [Principal=User(username=1704060101, password=$2a$10$zo5h5kj9bxORUrGaNW.zjuto1JrRAtPEZqOlQnXkZIfMfR.xAG/ai, role=ROLE_stu), Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=127.0.0.1, SessionId=null], Granted Authorities=[]]] 

按照我的理解是,用户表中的 role 设置成 ROLE_stu 的话,通过这个配置就能有访问 /stu/下所有方法的权限,可是设置完之后 role 为 ROLE_stu 的用户并没有访问 /stu/下方法的权限

数据库做了集群后,比如 mysql,做了 mgr,双 master。那么对外提供服务时, ip 一般是怎么处理的?

Posted: 13 May 2021 08:37 PM PDT

再用 haproxy 做一层负载或者主备?

或者 2 台机器用 vrrp 的方式配一个 vip ?

还是直接用这 2 台机器的 ip 来使用?

大佬们求助。。

Wrk 发 post 请求时, body 里边的字段值是逐个读取目录下的文件,应该怎么实现?

Posted: 13 May 2021 06:49 PM PDT

  • wrk 发起 POST 请求

  • 额外用 lua 写了函数,遍历目录下的所有图片

  • body 里边的一个字段每次请求时,带上图片名

  • 举例子:

  img ├── 1.jpg ├── 2.jpg ├── 3.jpg ├── ... └── n.jpg 

每次请求时,request 里边都像遍历目录一样从 1n 给文件名

wrk.body = '{"images": "img/1.jpg"}' wrk.body = '{"images": "img/2.jpg"}' ... wrk.body = '{"images": "img/n.jpg"}' 

没有整明白,如何遍历目录下的同时,用 wrk 发请求,向各位大佬请教一个方法

做一个创新型产品,找后端开发加入

Posted: 13 May 2021 03:58 PM PDT

之前发过一个帖子: https://www.v2ex.com/t/774007#reply69

目前状态是,UI 和前端开发确定好了,后面开始写 PRD 以及输出 UI,预计 6 月初开始开发。

现在还缺一个后端开发,最好是 java 的,也懂一些算法。

有意向并且靠谱的小伙伴可以留个邮箱,我发大概的项目介绍给你。

PS:靠谱指的是

  1. 技术过硬。且对好的产品和技术有自己的追求。
  2. 言而有信。这个产品不是现有成熟行业的一个"App 解决方案",更多是一个创新型产品。从 0 到 1 做出第一个版本不难,难的是上线后需要根据用户反馈持续迭代,找到 MPF 。所以请仔细评估自己是否有意愿和时间长期投入。

当然我会保证团队是靠谱的:)

以 google 的进度, jetpack compose 会在什么时候 stable 呢

Posted: 13 May 2021 09:57 AM PDT

原来的开发方式不是说很讨厌吧,就是做动画的时候,刷新页面状态的时候,比如写一个invisible必会在后面编写的时候需要写一个visible,来重置或者重新 set 状态,业务逻辑多了,flavor 多了能有好几行,一天搬砖下来搜了 n 个:

android set xxxx programmatically 

代码的方式设置一个switchcompat的选中颜色也要五六行,关键和设置 theme 的方式完全不着边,谁记得住啊:(

老早之前就在关注了,之前用Anko的时候Anko偷偷放弃维护了,被坑到。然后用flutter重新构建了自己的应用,效果还不错,关键是写起来很舒服,也很佩服能想到这种react的方式来写 ui 的开发者,了解到了 google 在搞jetpack compose,所以很期待:)

.ncm 的破解

Posted: 13 May 2021 04:37 AM PDT

Github 上已经有数个.ncm 的破解项目了,比较好奇的是 AES 加密的密钥是直接给出的,最初应该怎么得到的呢?
逆了播放器吗?希望有大佬指教一下实操。

No comments:

Post a Comment