Tuesday, September 7, 2021

V2EX - 技术

V2EX - 技术


golang 内存回收的疑问

Posted: 07 Sep 2021 03:52 AM PDT

先贴代码:

package main  import ( 	"fmt" 	"os" 	"os/signal" 	"syscall" )  func main() { 	data := make(map[int32][]int32) 	for i := 0; i < 1024; i++ { 		msg := make([]int32, 1024 * 512, 1024 * 512) 		msg[0] = 0	//访问一下内存, 触发从内核真正分配内存 		data[int32(i)] = msg 	} 	fmt.Println(len(data))      	if true { 		sig := make(chan os.Signal, 1) 		signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM) 		<-sig 	} } 

编译:

GODEBUG=madvdontneed=1 GOOS=linux GOARCH=amd64 go build 

如上,分配了 1024 个内存占用 2MB 的 slice,放入了 map 中,总共 2GB 内存占用。程序启动后分配完就一直阻塞着,大概 3 分钟后内存占用从 2GB 多降低到 70MB 左右,表现上看是之前分配的 slice 被 gc 了。但是 map 没有删除操作,也没有置为 nil,难道 golang 的 gc 机制就是这样,发现后续没有再使用这个 map 就直接 gc 了,尽管还没有离开这个 map 所在的作用域?

image

在一个事务内插入大量数据会怎么样

Posted: 07 Sep 2021 03:50 AM PDT

mysql,讨论下面两种场景

开启事务 插入 1000 万条数据 提交事务 
开启事务 插入 1000 万条数据 回滚事务 

会不会导致数据库挂掉。

如何做到安全插入大批量数据进数据库

给大家看看 QQ 邮箱网页版的新 UI

Posted: 07 Sep 2021 03:45 AM PDT

目前是 QQ 新用户才显示这个 UI,应该属于试水阶段,老用户不知道什么时候才能全面推广。个人感觉很好看,特简洁,类似 teambition 的风格。

缺点是好像必须每次都要短信验证…

https://imglf4.lf127.net/img/b85ca00eea7a359b/ZUlxZFdRMkV6aC90cnNiaFJPckM4Sy9jcTlGZ0Q2TUtOVFRFM294YlVkcz0.png

edge 真是在不能用的路上越走越远了

Posted: 07 Sep 2021 03:42 AM PDT

由于用的鸿蒙平板,所以想找个方便同步的浏览器,chrome 鸿蒙用不了,firefox 同时在用。

昨天突然发现,鸿蒙上的 edge 不能关闭和切换标签页

然后又发现安卓版的 edge 出现关不掉的广告,切换语言可以看到国际版广告(一般不用手机也不知道这功能是啥时候有的) 1630976985517.jpg

这是逼我换火狐了,顺便问问,有人知道火狐上,这几个问题怎么解决吗?

  1. B 站视频不能倍速
  2. FTP 中文乱码只能每次手动调吗?
  3. 网络状况不好的情况下 SwitchyOmega 会把整个浏览器卡死

有没有在太原的大佬,大家组个群一块摸鱼进步

Posted: 07 Sep 2021 03:41 AM PDT

v: cG9tZWxvNzM= base64

play 余额只能在美国使用,求解

Posted: 07 Sep 2021 03:38 AM PDT

账号资料信息没改过

地区是美国,ip 地址也是美国

以前正常支付的,现在发现不行了

求解

实现一个基础的低代码或 0 代码平台需要什么技术?

Posted: 07 Sep 2021 03:30 AM PDT

不需要特别复杂和完善

非常诡异的问题:httpclient 必须显式设置 headers,无论传入常量变量都报错

Posted: 07 Sep 2021 03:29 AM PDT

在我封装的类里调用某涯网的 api 发现非常诡异的现象:

httpclient(无论任何 http 库)必须显式设置 headers 否则无论传入常量变量都报错

就是必须以 HttpRequest.get("someurl").headers(new HashMap<String,String>({{put('','');}}).body;的形式

如果是动态传入常量或变量

HashMap<String,String> h=new HashMap<String,String>({{ put('',''); }} HttpRequest.get("someurl").headers(h).body;

死活回显

{"code":"0","success":0,"message":"未知客户端请求","data":{}}

正常应该是

{"code":"1","success":1,"message":"成功","data":{}}

而我在 main 方法直接用同一 http 库动态传入 headers 调用接口却不会有这个错误.

这是什么情况?

请问, kotlin 中与 Java 的 class 名::属性等价的操作是什么呢?

Posted: 07 Sep 2021 03:16 AM PDT

小弟在学习使用 beetlsql,当使用 lambdaQuery 的时候会发生报错,代码如下:

val sqlManager = getSQLManager() //初始化数据脚本,执行后,内存数据库将有一个 sys_user 表和模拟数据 DBInitHelper.executeSqlScript(sqlManager, "db/schema.sql")   val query = sqlManager.lambdaQuery(UserEntity::class.java) val entities = query.andEq(UserEntity::departmentId, 1) .andIsNotNull(UserEntity::name).select() /*上述代码对应的 java 代码如下: LambdaQuery<UserEntity> query = sqlManager.lambdaQuery(UserEntity.class); List<UserEntity> entities = query.andEq(UserEntity::getDepartmentId,1)   .andIsNotNull(UserEntity::getName).select(); */ 

执行的时候会得到如下错误:

Exception in thread "main" java.lang.RuntimeException: java.lang.NoSuchMethodException: MainKt$sam$org_beetl_sql_core_query_LambdaQuery_Property$0.writeReplace() 	at org.beetl.sql.core.query.LambdaQuery.getFunctionName(LambdaQuery.java:269) 	at org.beetl.sql.core.query.LambdaQuery.andEq(LambdaQuery.java:46) 	at MainKt.main(main.kt:22) 	at MainKt.main(main.kt) Caused by: java.lang.NoSuchMethodException: MainKt$sam$org_beetl_sql_core_query_LambdaQuery_Property$0.writeReplace() 	at java.lang.Class.getDeclaredMethod(Class.java:2130) 	at org.beetl.sql.core.query.LambdaQuery.getFunctionName(LambdaQuery.java:255) 	... 3 more 

JDK 使用 1.8 版本。请教大家这里该如何改写呢,非常感谢

有没有英语水平不错的小伙伴?招 base 瑞典的 C++,非远程

Posted: 07 Sep 2021 03:08 AM PDT

You get to step into work life with exciting assignments. Examples of projects currently being conducted: development of autonomous vehicles, cloud-based services, embedded software Development, telecom and artificial intelligence. We are looking for candidates who love challenging assignments, who are not afraid of networking and challenging each other. Besides being technically skilled, you probably also enjoy explaining to others how things work and help each other in a team. It's key for you to enjoy a varied and a high work rate in the role as a software developer. The work is most often based on an agile approach and we believe that you have a deep understanding of the software development workflow and life cycle. 您将伴随着令人振奋的工作任务步入职场生活。目前正在进行的项目包括:自动驾驶汽车开发、云服务、嵌入式软件开发、电信和人工智能。我们正在寻找的候选人热爱具有挑战性的任务,他们无惧人际交往、无惧互相挑战。除了技术熟练之外,您可能还喜欢向别人解释团队中的事情是如何运作的,并且在团队中相互帮助。作为一名软件开发人员,享受多样化、很高的工作效率是非常关键的。这项工作通常基于敏捷开发方法,我们相信您对软件开发工作流程和生命周期有着深刻的理解。

Your background 您的背景 To succeed in the role, we see that you have a degree in IT and 3 years or more of working experience within Automotive or Telecom industry. The service requires that you have a wide range of skills ranging from practical development to the mentioned skills below. 要想在这个职位上取得成功,我们认为您必须拥有 IT 学位,并在汽车或电信行业具有 3 年或以上工作经验。这项服务要求您拥有丰富的技能,包括实际开发到以下提到的各项能力。

Responsibilities: 工作职责:

●Design and implementation of new products in cooperation with other engineers 与其他工程师合作设计并实施新产品 ●Strong skill of C/C++ in real-time system, embedded, resource constrained device 在实时系统、嵌入式、资源受限设备方面具有较强的 C/C++技能 ●Experience in writing software for complicated systems 有为复杂系统编写软件的经验 ●Knowledge of Unix-based operating systems and the GCC toolchain 了解基于 Unix 的操作系统和 GCC 工具链 ●Proven problem solving ability 成熟的解决问题的能力 ●Knowledge of CI/CD, Jenkins, Yocto, GIT 熟悉 CI/CD 、Jenkins 、Yocto 、GIT ●Communication protocols e.g. CAN (CANoe, CANdela, CANalyser), LIN, FlexRay 通信协议,例如 CAN (CANoe 、CANdela 、CANalyser)、LIN 、FlexRay ●Create prototypes that connect to either new or existing physical components 创建连接到新的或现有物理组件的原型 ●Integrate with various cloud services via HTTP, TCP/IP, MQTT, etc 通过 HTTP 、TCP/IP 、MQTT 等方式集成各种云服务 ●Communication in English is must 熟练使用英语进行沟通

Personal characteristics 个性特征 As a developer, it is highly important that you have a flexible and solution-oriented approach. You are communicative and strongly driven. Furthermore, you are result-oriented and want to work towards concrete goals to contribute to the team success. We believe you are an analytical team member and well experienced within information presentation. You show a can-do attitude and are not afraid of taking responsibility to solve tricky problems. It is meritorious if you have an interest and experience in new technology. 作为一名开发人员,您具有灵活的、面向解决方案的方法十分重要。您善于沟通,有强烈的驱动力。此外,您以结果为导向,希望朝着具体的目标而努力,为团队的成功做出贡献。我们相信您是一名善于分析的团队成员,并且具有丰富的信息展示经验。您表现出积极进取的态度,无惧承担责任、解决棘手的问题。如果您对新技术感兴趣并且具备这方面经验,这是非常值得称赞的。

福利:

至少 25 天带薪年假;

️享受等同于瑞典公民的福利,如免费医疗教育,480 天带薪产假病假,照顾生病孩子的假期等;

️Base 斯德哥尔摩、哥德堡、马尔默等主要大城市;

️工作满 4 年可申请绿卡。

关于家属随行:

如果你的工作合同超过六个月,那么你的所有直系亲属都可以获得工作和居留许可,有效期与你的工作许可一样长。直系亲属指配偶或同居伴侣以及所有未满 21 周岁的未婚子女。当候选人获得永久居留身份以后,直系亲属也同步获得永居身份。原则上,候选人获得工作居留后即可办理家属随行,但是我们通常建议候选人通过了试用期安定下来以后再安排家属随行。 ……

详情请 we 信:八〇九三〇六六九六

我撸了一个快速搭建私人网盘的轮子, ifilespace 文件管理

Posted: 07 Sep 2021 02:59 AM PDT

介绍

由于工作和生活中有文件存储、管理和分享的需求,而国内大多数网盘都限速严重,限制太多,所以考虑到自己搭建文件管理系统,找了市面上能找到的几个网盘系统,如 NextCloud 、Cloudreve 、EyeblueTank 、zfile 等系统,虽然他们都已经做的基本完善,并且功能也都挺丰富了,但使用起来总感觉不太适合自己,所以造了这个轮子,并提供手机客户端和桌面客户端的支持。

iFileSpace 是一个在线个人文件管理工具,在线网盘程序,可快速一键搭建私人云盘,支持本地存储和对象存储(目前支持阿里云 oss,华为云 obs,OneDrive ), 如部署在公网服务器,可替代百度网盘等在线网盘,自主搭建,数据完全自主管理!也可部署在家庭软路由、nas 等个人存储设备中,作为局域网文件管理工具使用。支持多用户、多存储空间、webdav 、相册备份及后台权限管理。

系统设计初衷就是在家中软路由或者 nas 上部署使用(通过内网穿透或者 ipv6 可实现公网访问),为方便文件的管理及备份,本地文件系统就采用了明文文件夹结构的文件存储,没有使用文件加密及分块存储。另外,系统也增加了对象存储的支持,并且上传及下载文件都不需要服务器的带宽及存储容量限制。

功能

支持第三方存储(目前支持阿里云 oss,华为云 obs,OneDrive )。 第三方存储不受服务器带宽限制,客户端直传。 支持 WebDav 。 支持相册备份。 文件及文件夹管理、分享。 支持直链分享、密码分享、群组分享及用户间分享。 支持视频、图像、音频、文本、Office 文档、PDF 在线预览。 支持多用户,多存储空间,多存储策略。 提供 IOS,Android 客户端。 提供 windows,macos 桌面客户端,管理分享文件更方便。 支持定时文件扫描,自动更新用户文件夹下文件、目录。 单文件打包,部署更简单。 提供 Docker 版。 Web 版支持自定义 Logo 及首页。 

技术栈

服务端:Golang + Vue3 + AntDesign Vue 手机端:Flutter 桌面端:Electron + Vue3 

系统打包后只有一个二进制文件,并提供 docker 版本,方便快速启动,部署门槛极低。

系统已迭代了一些版本,基本功能已相对稳定,后续根据情况会考虑增加桌面端的图床支持以及离线下载等功能。

欢迎大佬们指点。

官方网址: https://ifile.space

演示地址: https://demo.ifile.space 账号密码:demo

[求教] tasker 自动回复短信

Posted: 07 Sep 2021 02:57 AM PDT

有没有老哥能教教 tasker 自动回复短信的配置哇?

就公司有一个审批短信,内容大概如下:

XXX 正在执行敏感操作发起审批,同意回复"Y",不同意回复"N"。 

大概是这样的内容,就是要自动审批,自动回复"Y"。

有没有大哥能教教?

分享一下完全不依赖 asyncio 也支持异步语法的库

Posted: 07 Sep 2021 02:48 AM PDT

https://github.com/snower/sevent

异步语法的支持完全不依赖 asyncio,当然并没有说可以替代 asyncio 或者更好啥的,只是一种实现,如果有对异步 io 或者 python 异步语法实现感兴趣的可以一看吧。

只要是用于代理流量转发这样的场景,所以接口毕竟简单,当然支持范围也就没 asyncio 那么广了,从 echo 测试来看,性能还是要好于 asyncio 一些的,helpers 中也简单实现了几个工具。

HTTP 请求测试

import sevent  async def http_test():     s = sevent.tcp.Socket()     await s.connectof(('www.baidu.com', 80))     await s.send(b'GET / HTTP/1.1\r\nHost: www.baidu.com\r\nConnection: Close\r\nUser-Agent: curl/7.58.0\r\nAccept: */*\r\n\r\n')      data = b''     while True:         try:             data += (await s.recv()).read()         except sevent.tcp.SocketClosed:             break     print(data.decode("utf-8"))     await s.closeof()  sevent.run( http_test) 

TCP 端口转发

import sys import sevent  async def tcp_port_forward_server():     server = sevent.tcp.Server()     server.listen(("0.0.0.0", int(sys.argv[1])))      while True:         conn = await server.accept()         pconn = sevent.tcp.Socket()         pconn.connect((sys.argv[2], int(sys.argv[3])))         conn.link(pconn)  sevent.run(tcp_port_forward_server) 

高并发情况下如何保证检查并修改操作是线程安全的

Posted: 07 Sep 2021 02:26 AM PDT

如果这个检查操作比较复杂的话,有什么比较好的解决方案吗

通过手环,检测用户睡着了就停止播放。

Posted: 07 Sep 2021 02:12 AM PDT

目前一些听书软件,只能普通设置定时关闭功能。 有时候关了还没睡着,有时候睡着了还没关闭,下次听还得找上次的纪录,比较麻烦。

既然手环有检测用户睡眠时间的功能,能不能出一个这个功能,或者提供一下接口,让 app 能获知用户睡着了。

Github Trending 算法是不是设计的有问题啊

Posted: 07 Sep 2021 01:55 AM PDT

刚刚打开中文区的 trending,看到了一个甚至都不是开源的 python 项目,创建了五六天、一共三五行代码还是加密的,感觉像是分发什么神秘软件密钥的仓库,这样一个仓库竟然被 Trending 算进去了,让我大开眼界。

项目地址: https://github.com/Zy143L/wskey

引用别人引用的可能是官方工作人员的回复:

As I stated, there is logic to prevent gaming of the system. Gaming of the system isn't always or even necessarily often committed by the owner of the repository, but can also be undertaken by overenthusiastic fans of the repository, or even …

Because of this, we don't describe our exact system for determining repository trends. I can understand that this is frustrating. Unfortunately, it's the best way we've found to maintain the integrity and usefulness of the trending system.

windows10 默认删除方式删除小文件极慢是怎么回事?

Posted: 07 Sep 2021 01:12 AM PDT

这么问也不准确,因为我用过有的 win10 删除速度是正常的,但是目前的主力机有这种情况. 比如一个文件夹几千小文件,那么删除这个文件夹时就能看到进度条刚开始快,然后急剧下降到 10 几个文件每秒 然后我如果用Power Shell或是Git Bash执行 rm的话,就比较快了,大概 5 秒左右就能全删完...

开发自身推动的技术创新 kpi 大家一般都会怎么写

Posted: 07 Sep 2021 01:05 AM PDT

写就是所谓的要技术反推业务的这种 kpi,这种感觉好难啊

ES 动态字段过多问题

Posted: 07 Sep 2021 12:41 AM PDT

系统将用户上传的 Excel,放在 ES 查询,供检索。但是 Excel 的表头可以自定义的,这样会导致一个索引下面的字段太多

这种情况有什么好的优化方式么

或者表头不映射成字段,有没有更好的存储呢

可视化生成页面(2)

Posted: 07 Sep 2021 12:21 AM PDT

可视化生成页面( 2 )

在第一版的基础上,完成了第二版的开发计划,加入了组件的支持,部分样式可视化的支持,优化了 UI 界面,修复了部分已知 bug 。

前言

  • 第一篇文章,项目基本介绍
  • 重点
    • ** [思想] 布局去定义组件位置,而不是通过组件调整位置**
    • 组件采用 json 方式做为可视化操作
    • 组件和布局可以随意采用 react 框架做二次开发[相关介绍在后续计划中],以适应自己的相关需求
    • 布局不仅仅是页面,可以在任何需要布局的地方定义

百度首页为例。

1: 创建基础布局

1.png

2: 加入文字和组件

2.png

3.png

3: 预览页面

4.png

4: 生成代码

开发中

项目功能使用介绍

项目 WiKi 文档

相关开发计划

第二版 [已完成]

  • 支持组件

  • 添加文字

  • 样式可视化

    • flex 布局
    • height
    • 盒子模型 [未完成]
  • 两侧可以拖动

  • 改造布局侧边栏

    • 分类型

第三版 [未开始]

  • 构建树可视化
  • 可用性优化
  • 代码生成
    • html 模式
    • react 模式
  • 页面优化

第四版 [未开始]

  • 支持 css 单位
  • 支持组件库自带布局
  • 国际化
  • 项目相关文章
  • 支持后续特性

地址

在线地址

项目地址

参考

总结

在第二版加入了组件的支持,基本满足开发上的需求,但存在常用样式控制依赖于修改 css 代码,页面不能保存,交互体验等问题,以及修复对于组件的支持存在的问题,需要在下一版做改进,在下一版本中需要达到闭环。

求教一个 cpp 语法问题

Posted: 07 Sep 2021 12:19 AM PDT

https://github.com/envoyproxy/envoy-filter-example/blob/main/echo2_config.cc#L20 这一行中的 "Network::ReadFilterSharedPtr{new Filter::Echo2()}" 为什么大括号是合法的呢?

花了 10 几天,终于把被 google 标记成国内的 ip 给掰正了

Posted: 06 Sep 2021 11:59 PM PDT

根据 这个方法

装 chrome 插件,修正定位。(手机上的 goolge 定位全关了)

时不时在电脑上的查一下 google map 。

前期没啥效果,就这样随他去,就这么一直开着插件用着(公司,家里都装上)。

10 多天后,youtube 的广告突然多了起来,再到 gmail 上查一下 detail,发现 ip 重回 US 了。

log4j2 如何设置日志压缩延迟

Posted: 06 Sep 2021 11:43 PM PDT

请教大家一个 log4j2 的问题:

背景:在项目中目前使用 log4j2 采用 DirectWriteRolloverStrategy 方式每隔一个小时生成一个日志文件 1.log ,一个小时后生成一个新的日志文件 2.log ,同时将老的日志文件 1.log 压缩成 1.log.gz 。

问题:但是日志收集软件有概率没有读取完 1.log 或者崩溃重启,之后再读之前的那个旧的时 2.log 已经生成了,1.log 变成了压缩文件无法再读取了。有没有希望通过配置来设置压缩时间延后几个小时,生成 2.log 时不要马上将 1.log 压缩,或者保留几个未压缩过一段时间再一起压缩?

可以通过单写脚本的方式来压缩,但是 leader 更希望用 log4j2 的配置来搞这个问题,各位有好的什么办法吗。

怎么转 golang?

Posted: 06 Sep 2021 11:11 PM PDT

打算面向工资编程,以前是 python flask 的
怎么转 go 呢?

求大佬帮忙写个代码

Posted: 06 Sep 2021 09:44 PM PDT

需求如下:
判断当前时间大于 9:30, 每分钟请求接口 10 点结束程序.

谢谢了

想问下 这种算投机取巧吗

Posted: 06 Sep 2021 09:06 PM PDT

因为刚来这个公司 所以每做一个功能的时候基本都要看之前的代码,突然看到一个注释

6b427c21389d7fb280f51bbde39daf1.png

具体的就是更新那种关联关系的时候 比如 A 当前关联 1,2 ,3 后面更新后 A 关联 2,3,4 ;之前我还真像注释里说的一样 先删除 再添加,感觉除了自增键容易变大外 数据不大的情况下 感觉也没啥呀。。

为什么 Windows 命令行工具很难用?新出的 terminal 也一样

Posted: 06 Sep 2021 07:39 PM PDT

不能贴图片呢。。。 那贴原文吧,用 git husky 做 commit 校验,然后每敲一个字符都换一行,还有很多情况都是这样,特别难用,mac 就不会,这是为什么呢? Windows 原罪? ? Write a short, imperative tense description of the change (max 93 chars): (0) ? Write a short, imperative tense description of the change (max 93 chars): (1) x? Write a short, imperative tense description of the change (max 93 chars): (2) xi? Write a short, imperative tense description of the change (max 93 chars): (3) xiu? Write a short, imperative tense description of the change (max 93 chars): (4) xiug? Write a short, imperative tense description of the change (max 93 chars): (5) xiuga? Write a short, imperative tense description of the change (max 93 chars): (6) xiugai? Write a short, imperative tense description of the change (max 93 chars): (5) xiuga? Write a short, imperative tense description of the change (max 93 chars): (4) xiug? Write a short, imperative tense description of the change (max 93 chars): (3) xiu? Write a short, imperative tense description of the change (max 93 chars): (2) xi? Write a short, imperative tense description of the change (max 93 chars): (1) x? Write a short, imperative tense description of the change (max 93 chars): (0) ? Write a short, imperative tense description of the change (max 93 chars): (1) 修? Write a short, imperative tense description of the change (max 93 chars): (2) 修改? Write a short, imperative tense description of the change (max 93 chars): (3) 修改引? Write a short, imperative tense description of the change (max 93 chars): (4) 修改引入? Write a short, imperative tense description of the change (max 93 chars): (5) 修改引入 s? Write a short, imperative tense description of the change (max 93 chars): (6) 修改引入 sd? Write a short, imperative tense description of the change (max 93 chars): (7) 修改引入 sdk? Write a short, imperative tense description of the change (max 93 chars): (8) 修改引入 sdk 版? Write a short, imperative tense description of the change (max 93 chars): (9) 修改引入 sdk 版本? Write a short, imperative tense description of the change (max 93 chars): (9) 修改引入 sdk 版本 ? Provide a longer description of the change: (press enter to skip) ? Provide a longer description of the change: (press enter to skip)

虚拟货币交易所的交易流量成本问题

Posted: 06 Sep 2021 07:22 PM PDT

例如火币,币安这种交易所, 除了内部钱包可以快速交易不使用流量外, 和外部钱包转账流量应该比较恐怖吧.

如果使用 AWS 这种第三方流量费应用很大? 除了大客户折扣外, 会不会自己建立 IDC 来解决?

钉钉官方出 Linux 版本了

Posted: 06 Sep 2021 03:50 PM PDT

请教各位彦祖:一个前端报错监控的问题

Posted: 06 Sep 2021 02:18 PM PDT

我在用 sentry

以前感觉很不错的原因是,以前是哈也不懂,在生产环境中开了 sourcemap,log 里就有具体哪一行出错了,于是就非常好定位和修复

现在生产环境中关闭了 sourcemap,然后 error log 都一堆各种看不懂的代码,都是压缩之后的,完全不知道哪一行出错

就算有时候能看出来,有些报错很难 reproduce,比如 ChunkLoadError

请教各位彦祖,你们一般怎么做前端监控的?

MIUI 应用商店可信吗

Posted: 06 Sep 2021 10:24 AM PDT

之前听说过某些游戏会变成渠道服,里面的 app 会不会存在反编译加入广告 /垃圾 SDK 之类的呢

x86 的 AES 指令只能用来加速 AES 加密算法吗

Posted: 06 Sep 2021 09:54 AM PDT

除了加速 AES 还有没有可能可以加速其他的对称加密算法像 twofish 之类的 或者有没有其他的算法也能用这个指令来加速

Object.{pick, omit, pickBy} - TC39 proposal (征集大家的奇思妙想)

Posted: 06 Sep 2021 09:01 AM PDT

Reference: https://github.com/aleen42/proposal-object-pick-or-omit

Discussion Line: https://es.discourse.group/t/object-pick-omit/515/78

基本思想类似 Lodash 的 _.pick_.omit 以及 _.pickBy。大家主要讨论的观点可以参考上面的资料;如果有啥想法欢迎留言或者提 Issue,也可以直接在 TC39 group 提

react 组件的 ref 到底是什么类型?

Posted: 06 Sep 2021 06:35 AM PDT

版本是 15,所以没法用 React.createRef 所以写了 callback ref,但是一旦想抽成组件内部函数怎么写都写不对

class A extends Component<{}, {}> {    createRef = (element: HTMLDivElement | null) => this.rootElement = element     render() {     return (       <B ref={this.createRef}/>     )   } }  type Bprops = {   ref: React.Ref<HTMLDivElement> }  class B extends Component<Bprops> {   render() {     const {ref} = this.props     return <div ref={ref}/>   } } 

然后就报错

TS2322: Type '(element: HTMLDivElement | null) => HTMLDivElement | null' is not assignable to type '(Ref<PopUpAd> | undefined) & Ref<HTMLDivElement>'. Type '(element: HTMLDivElement | null) => HTMLDivElement | null' is not assignable to type 'string & ((instance: HTMLDivElement | null) => any)'. Type '(element: HTMLDivElement | null) => HTMLDivElement | null' is not assignable to type 'string'.

完全不知道报错的这些东西哪来的,react 的定义里就一句

type Ref<T> = string | { bivarianceHack(instance: T | null): any }["bivarianceHack"]; 

而且定义里的 string 是或,而报错里的是交

想去掉报错只能把 createRef 的参数的类型声明去掉,实际上就相当于是 any 把

成功的又用 wine 运行了 Cocos Creator

Posted: 06 Sep 2021 06:05 AM PDT

工作一直用 linux, 目前常用的软件基本已经搞定,但最近有用 Cocos Creator 开发游戏的需求,但这货只有 win 版或者 mac 版,用 vmware 运行在虚拟机里面实在太卡了,想要是 wine 不行就装双系统,结果居然跑起来了,双系统又不香了。。

关键细节

系统: Archlinux

Wine 版本: 6.0

需要 env LANG=GBK wine 运行

No comments:

Post a Comment