Monday, July 5, 2021

V2EX - 技术

V2EX - 技术


Windows Terminal 的性能有多烂

Posted: 05 Jul 2021 04:16 AM PDT

Casey Muratori 最近在 Windows Terminal 的 GitHub issue tracker 发了一个反馈—— Extremely slow performance when processing virtual terminal sequences,表达了对 WT 性能的关注,他还写了一个 benchmark 程序 TermBench 来测试 WT 的渲染性能具体有多差(根据 Casey 表述,达到了惊人的 2 fps)。

issue 中 WT 的 member 们不断回复讨论"说明解释"运行慢的理由,后来为了避免讨论失控,给出了有意思的「 because we've made it hard, not because of some intrinsic quality of the universe. 」结论。不过还是未能说服 Casey,进一步激烈的讨论后 Casey 得到了「 what you're doing is describing something that might be considered an entire doctoral research project in performant terminal emulation as "extremely simple" somewhat combatively. 」的论断,被认为把事情看得过于简单,因为终端性能这件事能作为 PhD 项目了。

Casey 当然不服,但 issue 已经被锁了。于是他在他的 Handmade Hero 频道上"罕见地"发布了一名为 How fast should an unoptimized terminal run? 的与 HandmadeHero 无关的视频(还调侃地写上了 Terminal PhD Dissertation )来论述 WT 到底有多慢,它能有多快:

https://www.youtube.com/watch?v=hxM8QmyZXtg

除了视频,还给出了相应的参考实现 RefTerm: https://github.com/cmuratori/refterm 作为对比。

Hacknernews 上也有对此的讨论串 https://news.ycombinator.com/item?id=27725133,虽然并没有太多讨论,但也有些挺有意思的,比如「 ... if your team lacks anyone with that intuitions, your team will spend their time finding "explanations" for the bad performance instead of fixing it. 」。

整个事件看下来,我对最近发布的 Windows 11 也有了新的感慨——无论再怎么更新,它依旧是一座大屎山,有些东西就是长年无法改变的,看看这个回复回复就知道。(逃)


Casey Muratori 是谁?

Casey Muratori 是一名经验丰富的游戏引擎开发者,参与过多款知名游戏的研发。他也是 Handmade Hero 项目的作者,如果你不了解 Handmade Hero,可以去搜索了解下。这个非常硬核的教学向项目发起于 2014 年,目标是不使用任何引擎,从头手写每一行代码来学习做出一款游戏。每周进行更新,至今已坚持近 7 年之久,超过 600 集视频,还衍生出如 4coder 等实际生产可用的项目。

debian10 安装 k8s,预检查警告如何解决? missing optional cgroups: hugetlb

Posted: 05 Jul 2021 04:12 AM PDT

百度和谷歌都搜过了,确实有人遇到过,但是没有解决办法

可怕,都是没有强迫症的人吗?

PS:我用 vagrant 启动 centos-7 安装 k8s 没有这个警告

[preflight] Running pre-flight checks     [WARNING SystemVerification]: missing optional cgroups: hugetlb     

Python 中同一个字符串的 hash 值在不同机器上为啥不一样?

Posted: 05 Jul 2021 04:06 AM PDT

想用 NAS 替代 iCloud,可行吗?

Posted: 05 Jul 2021 04:02 AM PDT

被 iCloud 坑的不行文件丢失。

想入手威联通贫民版 TS-212P3 替代 iCloud 文件同步和家人照片共享功能。

有什么坑吗?

乘着周一人多再来问一遍

Posted: 05 Jul 2021 03:43 AM PDT

后端方向,现在公司写的东西全是 CRUD,没什么有亮点的项目。
因为 9,10 月份就满一年经验了打算好好准备一下跳个槽,恳请各位能给一点方向上的建议。
是该把精力花费在刷题上呢还是项目上呢?后端方向有什么值得学习的开源项目吗?
开发语言是 python,非常感谢各位的帮助

这 postman 启动速度比 IDE 还慢

Posted: 05 Jul 2021 03:36 AM PDT

RT
受够了,而且老是更版本,有没有功能差不多的替代品啊。。

有什么解决 react 循环中,事件总是新的,导致重渲染的方法吗? 搜索的姿势不对,找不到答案

Posted: 05 Jul 2021 03:27 AM PDT

伪代码

category.map(item=>{ 	return (<Category onClick={()=>{this.categorySelected(item)}} />) })  

美团的反爬虫太厉害了,各种下毒��

Posted: 05 Jul 2021 03:20 AM PDT

一个 grep 最小匹配的问题

Posted: 05 Jul 2021 03:17 AM PDT

我获得符合模式的最小匹配项

比如:
echo "axxabcaca" | egrep -oe "a.*?c.*?a"

我想要的:
aca

但是:
axxabca

有什么办法呢?

环境:
MacOS
谷歌了下,说是使用-P 参数可以,但是 MAC 的 grep 没有-P 参数

求解 Linux 进程 id 数值很大

Posted: 05 Jul 2021 03:12 AM PDT

最大的 PID 已经到几百万 可能是什么原因? 没有发现可疑进程 cpu 使用率正常 ps -ef | wc -l 看了下还存在的进程数 300+

Cloudns 中 并没有设置 aaaa record,但为什么会解析到有 aaaa record ?

Posted: 05 Jul 2021 03:03 AM PDT

虚拟主机是使用了 plesk,今天在 plesk 中申请 let`s encrypt 证书时,提示
"DNS zone contains an AAAA record, but the domain is not assigned an IPv6 address in Plesk."

然后我使用了"dig @8.8.8.8 +short -t AAAA" 去检查域名,果然发现解析到有 aaaa record 。

但我去 Cloudns 中,并没有找这个 aaaa record 。。。请问如何解决?

我 google 了一下,找到这个链接 https://support.plesk.com/hc/en-us/articles/360016816274-Could-not-issue-a-Let-s-Encrypt-certificate-DNS-zone-contains-an-AAAA-record-but-the-domain-is-not-assigned-an-IPv6-address-in-Plesk

但我这个虚拟主机 plesk 设置并没有地方可以设置 dns

windows11 内存占用问题

Posted: 05 Jul 2021 03:01 AM PDT

上周更新了 win11 发现没有像别人说的很流畅,甚至有一些卡顿。发现进程里桌面窗口管理器内存占用很多。今天从睡眠中唤醒卡了很久,打开一看直接占用了 9G 内存。更新系统之前没有这种情况,大家有遇到过吗?

如何利用开发过程中的碎片时间

Posted: 05 Jul 2021 02:58 AM PDT

工作中接触的代码库比较大,调试的时候编译时间很长,每次都要 5 分钟左右。如果利用这点时间做点其他任务的话,往往因为时间太短,什么还没做就得切换回来了。如果干等着,又会觉得浪费时间。刷点知乎、微博之类的话,只会感觉更加空虚。

大家都是怎样利用这些碎片时间的?

cnpm 主站已经练废了吗,上月打开就“NPM 镜像站升级中,敬请期待!”持续到现在

Posted: 05 Jul 2021 02:28 AM PDT

😂😂😂😂😂😂

postman 记录的 API 能否转成 IDEA HTTP?

Posted: 05 Jul 2021 01:46 AM PDT

royal tsx 中的 remote desktop 插件 怎么可以像原生的 rd 一样 可以进行桌面文件的拖拽复制

Posted: 05 Jul 2021 01:42 AM PDT

大佬们有用这个的吗

想入坑威联通,问下现在远程下载可以实现吗?

Posted: 05 Jul 2021 01:40 AM PDT

请问威联通现在可以做得到,比如我在外网看到哪个好的资源远程拖给 NAS 下载到家看结果么? BT 、电骡、http 之类的。

那个什么得到还是得物,听说会偷跑流量?有其他好的选择没?

NGINX UDP 透明代理问题

Posted: 05 Jul 2021 01:25 AM PDT

gateway 172.0.0.1 NGINX(Kong) UDP 监听 53 端口
udp-server 172.0.0.2 监听 30053 端口
nginx 配置了透明代理proxy_bind $remote_addr transparent;
配置后 udp-server 可以正常获取到客户端 ip 但是无法返回结果给客户端
想问一下 iptable 怎么配置才能正常返回 网关和服务都是跑在 docker 里的
这篇博客的 tc 命令返回值都是 Illegal "match"
相关问题 https://forum.nginx.org/read.php?11,268467

有没有做已经产品化的,室内地图、室内定位、室内导航的大佬?想找个靠谱供应商合作。

Posted: 05 Jul 2021 01:22 AM PDT

公司接了一系列行业室内导航项目

选定的原供应商,我是感觉实在不太靠谱

有没有大佬自己的公司,或者自己所在的公司是做这方向的,有成品产品的研究研究,看能不能把计划中的供应商挤下去?时间略微紧迫,所以得有成型产品,这玩意开发并不困难,但是项目提案等不起。

唯一要求,在微信小程序内实现。

室内定位可基于蓝牙 beacon 辅助定位。

B 站一打开 F12 开发人员调试工具,页面就被锁死禁止 debug,是怎么实现的?

Posted: 05 Jul 2021 12:58 AM PDT

B 站一打开 F12 开发人员调试工具,页面就被锁死禁止 debug,是怎么实现的?还去不掉, 怎么解除呢

CloudQuery v1.4.0 发布 | 全栈数据管控平台的新起点

Posted: 05 Jul 2021 12:54 AM PDT

Hello,社区的小伙伴们,好久不见!经过一个多月努力,CloudQuery v1.4.0 终于和大家见面了!

v1.4.0 版本的新功能包括:调度中心模块、DTS (Database Tools Service) 数据导出、可视化查询构建器和 Hive 数据源等。

往常,版本更新说明从新功能开始。今天我们来点不一样的,先讲讲前端同学引以为傲的查询 Tab 页交互优化~

一、查询 Tab 页签优化

1.打开库表查询时,Tab 页签显示连接图标和当前库名,多 Tab 时想用哪个工作区一看页签便知

2.Tab 页签随库而动,切库时页签内容同步切换

二、新增 Hive 数据源

1.支持连接 Hive 数据源 2.3.3 版本

2.当前 Hive 数据库菜单功能: ① 目前支持数据库元素:表和视图 ② 支持 Hive 右键菜单,包含功能:打开表、查看表结构、删除表、添加表、截断表、设计表和重命名等

3.Hive 数据源纳入权限管控和审计分析

三、新增「调度中心」模块

在 v1.4 规划中,我们引入 DTS (Database Tools Service) 概念,新增「调度中心」模块。v1.4.0 支持 MySQL mysqldump 和 Oracle exp 两款数据导出工具。

1.导出数据库对象支持范围: ① MySQL 多库 dump 导出,同库多表 dump 导出

② Oracle 多库 dmp 导出,同库 /异库多表 dmp 导出

2.支持自定义导出参数

3.任务列表展示任务运行状态和耗时等

4.支持终止运行中任务

5.可以在任务详情中查看实时日志,下载导出结果

6.在 MySQL/Oracle 连接管理中,为连接配置 DTS 工具使用权限

四、可视化查询构建器

1.以拖拽方式创建联表查询,一拖,一连,一选,快捷生成查询语句 2.支持 SELECT 、FROM 、WHERE 、GROUP BY 、HAVING 和 ORDER BY 等常见语句结构 3.实时的 SQL 预览,增改图表、编辑表格模型,语句随之变动 4.支持聚合函数等细节操作 5.生成好的语句填入编辑器,可以进一步编辑执行  6.目前仅支持 Oracle

五、安装方式调整

1.在线:在线安装仅需下载一个脚本运行,全程一键安装 2.离线:离线下载迁移到腾讯云存储,下载提速 

六、修复和优化

修复:

  • 修复了结果集带英文句号的列无法显示的问题
  • 修复了结果集导出行数超过 5 万时,实际导出行数变为 1.5 倍的神奇问题
  • 修复了执行超长的语句,执行按钮闪亮一下没有后续也没有提示的问题
  • 修复了审计 65535 条以上记录导出失败的问题
  • 修复了组织架构中部门不能创建同名组的问题
  • 修复了 PostgreSQL 无法添加表的问题
  • 修复了多种数据源设计表功能异常
  • 修复了结果集二次渲染失败的问题

优化:

  • 新增交互:SDT 双击数据库层级,新建查询 现在,查询窗口标签名体现连接类型和当前使用的库
  • 双击打开表,所有数据源都增加了行数 1000 的限制
  • 现在,用户退出时自动断开已建立的数据库连接
  • 下载中心列表文件名与下载文件名保持一致
  • 提供更清晰易懂的导出失败原因
  • 修改密码相关错误提示更友好
  • 现在,组织架构可以修改组名
  • 调整了页面视觉比例,修复了一些样式 Bug
  • 优化了日志输出,不再产生以 G 来计的服务器日志文件
  • 其他页面样式和交互优化 

特别鸣谢

感谢 @拉风_zhang 果爸 和 @Dreambeer 同学的反馈! CloudQuery 仍在成长,我们珍视每位用户的使用体验,鼓励各位多提问题与建议,一起参与 CloudQuery 的建设!

社区公告

我们鼓励体验过新版本的同学前往官网填写体验报告,CloudQuery 将参考大家的建议调整迭代计划。只要你敢写,我们就敢做!

新版本体验报告地址: https://cloudquery.club/questionnaire

以上就是本次更新的全部内容。

结尾

CloudQuery 下载更新地址:https://cloudquery.club/download

CloudQuery 在线试用: https://cloudquery.club/

此外,我们将于 7 月 6 日 20:00 在墨天轮直播。届时我们将分享对新一代数据库管理平台的构想,详细讲解 CloudQuery v1.4 新特性。参与互动的小伙伴更有机会获得 CloudQuery 周边礼物和红包! 欢迎大家围观~

问问大家关于 PING 的小白问题

Posted: 05 Jul 2021 12:24 AM PDT

假设在节点 A 可以 PING 通节点 B 且节点 B 可以 PING 通节点 A 的情况下,从节点 A 看 PING 节点 B 的延迟和从节点 B 看 PING 节点 A 的延迟一定是一样的吗?

X-Spreadsheet 怎么修改表格里面的内容阿 官网文档看不懂

Posted: 05 Jul 2021 12:07 AM PDT

{ mode: 'edit', // edit | read showToolbar: true, showGrid: true, showContextmenu: true, view: { height: () => document.documentElement.clientHeight, width: () => document.documentElement.clientWidth, }, row: { len: 100, height: 25, }, col: { len: 26, width: 100, indexWidth: 60, minWidth: 60, }, style: { bgcolor: '#ffffff', align: 'left', valign: 'middle', textwrap: false, strike: false, underline: false, color: '#0a0a0a', font: { name: 'Helvetica', size: 10, bold: false, italic: false, }, }, }

默认配置要写在哪里 不懂阿

Python 实现的限流器有哪些

Posted: 04 Jul 2021 10:57 PM PDT

上网找了一圈开源的令牌桶或者漏桶限流器的 Python 实现,但是貌似都是小作坊,好像没找到公司或者组织开源的实现。请问各位大佬们有知道哪些好用的限流器包吗?自己写其实也行,但还是想看看大家都在用的包是怎么实现的,若自己实现的话也好有个较好的参考。

环境:python2.7

android 推荐的 编辑 Doc、PDF 的开源库不

Posted: 04 Jul 2021 10:10 PM PDT

有没有 android 推荐的 编辑 Doc 、PDF 的开源库不

吐槽下 koa-mongo 这个中间件, koa 不用好,性能会很低

Posted: 04 Jul 2021 09:50 PM PDT

首先贴下源码 https://github.com/nswbmw/koa-mongo

最近看了下 koa2 准别用下,用到 mongodb 就找了个中间件 koa-mongo,看了下源码,发现有问题。

这个中间件包装了一个数据库连接池,但是 mongodb 官方提供的 nodejs 驱动就已经包含连接池了,按我理解应该是多此一举。

另外,koa 的中间件是洋葱模型,每个请求都会一行一次,koa-mongo 这个中间件会在每个请求到来都获取一个数据库连接(包括用不到数据库的静态资源请求),然后在 http 请求完成后又主动断开数据库连接。请求一多,那就是频繁的在获取数据库连接然后又断开,严重浪费资源,数据库连接应该是有空闲检查的,空间一段时间才自动断开( mongodb 官方提供的驱动就是有这个空间参数设置)

合理的做法应该是直接使用官方提供的 nodejs 驱动,不需要再次包装连接池;只在 app 启动时初始化连接数据库,后面直接用。

如果没理解好洋葱模型,随意加中间件,会导致各种资源浪费。

以上就是我发现的一些问题,也可能是我理解不到位,说得不对的地方,可以评论告诉我。

sqlalchemy 提交后初次主键查询很慢,求解

Posted: 04 Jul 2021 09:33 PM PDT

表行数约 100w

操作:在一个接口插入一条数据,返回新插入的数据,获取 commit 后的对象数据的时候会查询一次数据库

session.add(inst) session.commit() print(inst.id) 
2021-07-05 11:33:11,331 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2021-07-05 11:33:11,333 INFO sqlalchemy.engine.Engine INSERT INTO system_file_info (id, create_time, update_time, create_by, update_by, file_name, file_bucket, file_type, origin_name, file_size, extra_data, content_type) VALUES (%(id)s, %(create_time)s, %(update_time)s, %(create_by)s, %(update_by)s, %(file_name)s, %(file_bucket)s, %(file_type)s, %(origin_name)s, %(file_size)s, %(extra_data)s, %(content_type)s) 2021-07-05 11:33:11,333 INFO sqlalchemy.engine.Engine [generated in 0.00039s] {'id': 1411890876728463360, 'create_time': datetime.datetime(2021, 7, 5, 11, 33, 11, 333675), 'update_time': datetime.datetime(2021, 7, 5, 11, 33, 11, 333675), 'create_by': None, 'update_by': None, 'file_name': 'd49402ac-fc36-4ec6-8119-02429be3a119.JPEG', 'file_bucket': 'ga-backend-default', 'file_type': 'jpg', 'origin_name': 'src=http___www.jxatkeji.com_uploads_allimg_160115_1-16011516211V28.jpg&refer=http___www.jxatkeji.jpg', 'file_size': '190264', 'extra_data': '', 'content_type': 'image/jpeg'} 2021-07-05 11:33:11,342 INFO sqlalchemy.engine.Engine COMMIT create cost 0.29399919509887695 2021-07-05 11:33:11,431 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2021-07-05 11:33:11,434 INFO sqlalchemy.engine.Engine SELECT system_file_info.id AS system_file_info_id, system_file_info.create_time AS system_file_info_create_time, system_file_info.update_time AS system_file_info_update_time, system_file_info.create_by AS system_file_info_create_by, system_file_info.update_by AS system_file_info_update_by, system_file_info.file_name AS system_file_info_file_name, system_file_info.file_bucket AS system_file_info_file_bucket, system_file_info.file_type AS system_file_info_file_type, system_file_info.origin_name AS system_file_info_origin_name, system_file_info.file_size AS system_file_info_file_size, system_file_info.extra_data AS system_file_info_extra_data, system_file_info.content_type AS system_file_info_content_type, system_file_info.related_id AS system_file_info_related_id  FROM system_file_info  WHERE system_file_info.id = %(pk_1)s 2021-07-05 11:33:11,434 INFO sqlalchemy.engine.Engine [generated in 0.00027s] {'pk_1': 1411890876728463360} 1411890876728463360 refresh cost 0.9015250205993652 

可以看到插入完之后根据主键查询刚刚插入的行花了 0.9 秒,但是其实在查询接口同样的 sql 查询只要 0.1 秒,想不出是什么问题

当表只有几万行的时候不会这么慢

我的 oracle cloud 韩国帐号主区域被移动到了日本

Posted: 04 Jul 2021 09:22 PM PDT

很久没登陆 oracle 的控制台,最近登陆发现从韩国区控制台输入我原版属于韩国区 Tenant 后会跳转到日本,并且需要通过输入老密码的方式强制重置密码
重置后发现(说明老密码是对的),我的区域不知为什么被设置到了日本(不重置也会在输入 Tenant 名称后跳转到日本控制台),两台机器自然也就看不到了,但是 ssh 还能链接上
Oracle 的在线客服都是机器人.
现在两台韩国小机不敢动了..

不懂就问: mysql 中大数据量日环比计算时间太久

Posted: 04 Jul 2021 08:36 PM PDT

大概 765W 的数据,单表查询,需要频繁的计算某字段的日环比,目前 SQL 计算时间超过 30s,请各位大佬指点迷津;

需求:在总表中查询某个月的日环比

目前方案:

  • 1 、直接查,时间超过 30s,pass
  • 2 、将计算结果再次落表,查计算结果表,由于筛选条件众多,且落表 SQL 分条件查询结果后落表时间久也影响使用,待定;

目前 SQL:

SELECT 	right(t.day,2) AS day, 	t.R11 as num, 	y.R11 ynum, 	CASE 	WHEN y.R11 IS NULL 	OR y.R11 = 0 THEN 	0.00 ELSE round((t.R11/y.R11)-1, 2 ) END cc  FROM ( SELECT day, CONVERT (R11 , DECIMAL) as R11 FROM 原始数据表 ) t  LEFT JOIN ( SELECT REPLACE(date_add( day, INTERVAL 1 DAY ),"-","") tomorrow, CONVERT (R11 , DECIMAL) as R11 FROM 原始数据表 ) y ON t.day = y.tomorrow  where left(t.day,6) = concat(#{year},#{month})  order by t.day 

大佬轻喷,不胜感激。

Windows 下 permission denied 的问题

Posted: 04 Jul 2021 08:13 PM PDT

一个普通的 fopen 问题,用 string 的 c_str()做第一个参数传进去就是不成功一直获取到 permission denied,直接把地址"c:/abc/uyhb.jpg"这样就能成功,在网上搜了一段时间没找到合适的解决办法,新入职一个月上周一个 bug 没改成,还望大佬们指点指点

reCaptcha v3 有没有国外的替代品?

Posted: 04 Jul 2021 07:20 PM PDT

开源的或者 api 调用的国外替代品都可以

Golang darwin/amd64 平台中解析 IP Packet Header 得到的报文长度错误

Posted: 04 Jul 2021 12:33 PM PDT

直接贴代码,这是从 198.18.255.1 Ping 8.8.8.8(原始 IP 不是这个)返回的 IP 报文:

package main  import ( 	"encoding/binary" 	"fmt" 	"golang.org/x/net/ipv4" )  func main() {  	// https://en.wikipedia.org/wiki/IPv4#Total_Length 	var hdrBytes = []byte{ 		69, 0, // Version |	IHL	| DSCP	| ECN 		0, 84, // Total_Length 		125, 47, // Identification 		0, 0, // Flags | Fragment Offset 		63,      // Time To Live 		1,       // Protocol 		85, 169, // Header Checksum 		8, 8, 8, 8, // Source IP Address 		198, 18, 255, 1, //Destination IP Address 	} 	header, err := ipv4.ParseHeader(hdrBytes) 	if err != nil { 		fmt.Printf("Parse failed. err: %v\n", err) 	} 	fmt.Printf("header: %v\n", header) 	fmt.Printf("header.TotalLen: %d\n", header.TotalLen)  	realTotalLen := binary.BigEndian.Uint16(hdrBytes[2:4]) 	fmt.Printf("realTotalLen: %d\n", realTotalLen)  	totalLenByBigEndian := binary.BigEndian.Uint16(hdrBytes[2:4]) 	fmt.Printf("totalLenByBigEndian: %d\n", totalLenByBigEndian)  	totalLenByLittleEndian := binary.LittleEndian.Uint16(hdrBytes[2:4]) 	fmt.Printf("totalLenByLittleEndian: %d\n", totalLenByLittleEndian)  }  

这段是解析 IP 报文 Header 的代码,在 Linux 和 Windows 执行得到的 header.TotalLen 都是 84,但是 darwin/amd64 就是 21524 。

按照相关规范,IP 报文 Header 字段均以大端序包装。这个看起来在 darwin 用了小端序解析。但是就算用小端序,这个值也应该是 21504 。

看 Go 解析的代码,原来还在解析时加上了 hdrlen 自身的 20 长度,这个似乎有点问题。我不了解那么多关于平台相关的,但是网络 IP 报文应该和平台无关吧。

 	switch runtime.GOOS { 	case "darwin", "ios", "dragonfly", "netbsd": 		h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) + hdrlen # 这里加了 Header 长度 		h.FragOff = int(socket.NativeEndian.Uint16(b[6:8])) 	case "freebsd": 		if freebsdVersion < 1100000 { 			h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) 			if freebsdVersion < 1000000 { 				h.TotalLen += hdrlen 			} 			h.FragOff = int(socket.NativeEndian.Uint16(b[6:8])) 		} else { 			h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) 			h.FragOff = int(binary.BigEndian.Uint16(b[6:8])) 		} 	default: 		h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) 		h.FragOff = int(binary.BigEndian.Uint16(b[6:8])) 	}  

然后 2 年前就有人提出这个问题了,但是还是没人修复。难道没人用 Mac 做 TCP/IP 网络编程吗。

Ref: https://github.com/golang/go/issues/32118

unittest discover 无法找到测试文件,因为一个模块内全局变量??

Posted: 04 Jul 2021 09:25 AM PDT

楼主非专业 python 开发,今天遇到个完全没头脑的问题,请赐教!.

  • 今天 unittest 单元测试一直找不到测试文件,一行一行排查.
  • 结果居然是使用 geoip2.database 模块内一个全局变量 read = geoip2.database.Reader(geoipfile)
  • 只要有这个全局变量,测试文件就找不到,geoipfile 没影响...这是咋回事啊??😵😵😵...

test_ip.py

import unittest  from .geoip import location  class Test_lib(unittest.TestCase):     def test_locations(self):         ips = ['23.250.80.1', '24.199.128.3', '31.173.152.1', '186.115.160.2']         adds = locations(ips)         self.assertEqual(len(adds), 4) 

geoip.py

#!/usr/bin/python3  import geoip2.database, logging  geoipfile = "./GeoLite2-City.mmdb" read = geoip2.database.Reader(geoipfile)  def locations(ips: list[str]) -> list:      s = location()     next(s)     return [s.send(x) for x in ips]   def location() -> list:     ip = "1.0.0.1"     while True:         try:             response = read.city(ip)             a = [ip, response.location.longitude, response.location.latitude]         except Exception as e:             logging.exception(e)             a = []         ip = yield a 

写数据字典有什么好用的软件吗?

Posted: 04 Jul 2021 09:14 AM PDT

一个 jni 相关问题,希望大佬可以解惑

Posted: 04 Jul 2021 09:13 AM PDT

流程是在 cpp 中调用 jni.cpp 再调用 java,报错
JNI DETECTED ERROR IN APPLICATION: JNI GetMethodID called with pending exception java.lang.ClassNotFoundException: Didn't find class on path: DexPathList[[directory "."],nativeLibraryDirectories=[/system/lib64, /system_ext/lib64, /system/lib64, /system_ext/lib64]]

下面贴一下调用代码
//通过 jvm 获取 env 的方式
JNIEnv *get_env(int *attach) {
if (javaVM == NULL) return NULL;
*attach = 0;
JNIEnv *jni_env = NULL;
int status = javaVM->GetEnv((void **) &jni_env, JNI_VERSION_1_6);
if (status == JNI_EDETACHED || jni_env == NULL) {
JavaVMAttachArgs vmAttachArgs;
vmAttachArgs.version = JNI_VERSION_1_6;
vmAttachArgs.name = NULL;
vmAttachArgs.group = NULL;

status = javaVM->AttachCurrentThread(&jni_env, &vmAttachArgs);
if (status < 0) {
jni_env = NULL;
} else {
*attach = 1;
}
}
return jni_env;
}
//对应 java 文件声明的 native 函数
extern "C"
JNIEXPORT void JNICALL
.._XJni_Heart(JNIEnv *ev, jobject t) {

int attach = 0;
JNIEnv *env = get_env(&attach);

const char *javaPath="包名 /XJni";
jclass clazz = env->FindClass(javaPath); //debug 显示返回为 null
jmethodID mid = env->GetMethodID(clazz, "CallJavaHeart", "()V");
jobject jobject = env->AllocObject(clazz);
env->CallVoidMethod(jobject, mid);

if (attach == 1) {
del_env();
}


}


网上的一些解决方案试过了,但是无效,希望有大佬可以帮忙看看,非常感激

组织技术分享交流活动(线上)

Posted: 04 Jul 2021 08:30 AM PDT

今年两月份,通过 V2EX 认识了一些喜欢分享的朋友,然后基本每周都组织技术交流。不同层次的朋友,得到了不同收获。有感兴趣的小伙伴,可以加入我们。

加入标准:一年内, 做一场技术分享,或者组织一次 peer 活动(读代码 or 写代码)。这样才能持续汇聚一些乐于分享交流的朋友。

了解我们过往的记录: https://github.com/xueyushu/programmer
了解一些录屏的记录: https://space.bilibili.com/562148289

现在主要以前端为主, 以 JavaScript ( TypeScript )技术栈为主,未来可能会慢慢拓展到后端,和其他语言,有兴趣的朋友可以组织一下。

微信(eXVhbnNkdQ==)

备注:微信需要 base64 解码

windows 电脑换新机器的话 有什么好的老数据迁移方案?

Posted: 04 Jul 2021 02:14 AM PDT

谢谢。

No comments:

Post a Comment