Monday, April 19, 2021

V2EX - 技术

V2EX - 技术


Microsoft Learn: 使用 Rust 迈出第一步

Posted: 19 Apr 2021 04:02 AM PDT

[远程办公] 正儿八经的,有人考虑过全职远程办公吗

Posted: 19 Apr 2021 03:57 AM PDT

哎,实在是囿于房价劝退,不想在大城市过后半辈子。

我想到的,全职远程可能存在这些问题:

1. 不稳定,好想很少看到有大公司在招这种稳定远程的,大多数都是些创业公司为了节约成本在招。公司可能基于种种考量取消这个职位。

2. 收入受限,相比于正常的全职,远程肯定公司要打个大折。

3. 万一行业变化,远程再重新去找工作很受限。

大概就想到这么多,有没有已经实践了的大佬来说说经验。

Python numpy 如何优雅的进行矩阵的并行计算

Posted: 19 Apr 2021 03:50 AM PDT

有一列表对其自身的矩阵求和。 现在是通过双循环来计算的,numpy 有什么优雅的写法吗?

import numpy as np def how(x, y):     return x + y arr = [1, 2, 3, 4, 5, 6] match_arr = np.zeros((len(arr), len(arr))) for i in range(0, len(arr)):     for j in range(0, len(arr)):         if j >= i:             X = how(arr[i], arr[j])             match_arr[i, j] = X             match_arr[j, i] = X  print(match_arr) [[ 2.  3.  4.  5.  6.  7.]  [ 3.  4.  5.  6.  7.  8.]  [ 4.  5.  6.  7.  8.  9.]  [ 5.  6.  7.  8.  9. 10.]  [ 6.  7.  8.  9. 10. 11.]  [ 7.  8.  9. 10. 11. 12.]]  

用 Golang 做了个下载器, 求赞

Posted: 19 Apr 2021 03:07 AM PDT

rsync 可不可以多进程同步同一个文件夹?

Posted: 19 Apr 2021 02:42 AM PDT

我有这样一个情景:我要从服务器 A 下载一个巨大的文件夹到本地(大约 2T,文件夹中每个文件大约 10G ),但是无奈一个 IP 限速 10Mbps,所以我想要开启多个虚拟机,每个虚拟机拿不同 ip,同时对这一个文件夹进行同步,如果不对这个文件夹进行切分可以办到吗?或者有没有什么工具可以实现

入职不到一年,感觉成长太慢该怎么办?

Posted: 19 Apr 2021 02:37 AM PDT

情况

去年毕业以后入职深圳某公司,在产品岗待了 4 个月后,定岗 Java 岗。实际上定岗 Java 也只有半年左右,但是工作极其不饱和,平均每天只有 20%的时间有任务。分配的任务基本上也都是 CRUD,目前除了数据库外,几乎没有操作过任何别的工具。

学习

上面说每天有大量空闲时间,因此我也在每天坚持学习。最开始学习的框架以及一些工具:Docker,ES,Spring Cloud Alibaba 等。当时都是看着视频学习的,大多都能听懂,使用这些并不难,但是学完以后没地方用,没过多久就都忘光了。还看了《鸟哥的私房菜》,像 docker,liunx 这些学起来都还挺有乐趣的,但还是一样的学完就忘。

后面我就想着既然框架和工具学完暂时用不上,那就再去夯实一下基础,看 Java 容器,并发,JVM,I/O,算法等。但是问题还是存在,平时给我写的业务似乎也用不上这些,用得最多的恐怕就是容器...,I/O 也用过一两回。学完的东西不能完全吸收并好好的运用,让我很是苦恼,感觉和没学一样。

问题

框架方面我想学以致用的方式就是自己写点项目,现在在看某大佬的开源博客( mogu )。想像大佬们一样,把平时学习的知识,在实践中吸收。不知大家有没有更好的方法?

但是上面提到的基础知识,像 JVM 和并发这种知识,不知道有没有什么好办法能深入理解和掌握。平时分配的任务压根没有场景让我写并发,网上的博客一般也都是浅尝辄止的 demo 。JVM 更不用说了,我甚至也没听过同事们说我们的项目需要 JVM 调优。


希望大家能够提出宝贵的意见!

kong 网关 request-transform 插件正则配置

Posted: 19 Apr 2021 02:33 AM PDT

大家好,目前正在整合 kong 网关,使用 request-transform 插件匹配和修改 route 路径。

前端发送请求为 http://www.xxx.com/code/api/xxx/xxx/, 当经过 kong 转发到后端 service 的时候,路径应该变为 /code/api/meltSound/ 也就是说

route path: http://www.xxx.com/code/api/xxx/xxx

--- >

server path: http://www.xxx.com/code/api/meltSound/xxx/xxx

ingress 中的 route 配置为:

 apiVersion: extensions/v1beta1 kind: Ingress metadata:   annotations:     konghq.com/strip-path: "true"   name: melt-api   namespace: app spec:   ingressClassName: kong   rules:   - host:       http:       paths:       - path: /code/api/         pathType: Prefix         backend:           serviceName: network-gateway           servicePort: 9527            

在 request-transform 插件中设置为:

 apiVersion: configuration.konghq.com/v1 kind: KongPlugin metadata:  name: add-melt config:   replace:    uri: '/code/api/meltSound'  plugin: request-transformer  

目前我这个配置没有生效,所以请问下大家要如何设置?

redis 集群 ip 重定向问题

Posted: 19 Apr 2021 02:29 AM PDT

集群创建时:redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

每个 redis 节点配置文件中 bind 0.0.0.0

此时我通过公网 ip 连接上 redis 某个节点,指令重定向的时候会出现 located at 127.0.0.1:7006,导致直接连接失败,此时正常来说应该重定向到 公网 ip:port 而不是 localhost:port

请教一下应该怎么解决这个问题,ps: 将来可能会将服务器打到虚拟网段中,此时重定向时需要支持 vpn_ip:port,公网 ip:port

记一次 github 泄漏 accessKey

Posted: 19 Apr 2021 02:11 AM PDT

突然看到阿里云的 accessKey 泄漏邮件才发现自己不小心把 key 传到 github 上了,

赶紧从床上爬起来开电脑准备删文件,第一反应就是用 filter-branch 彻底删除历史中的这个文件,强制推送覆盖 github 上的版本,

命令随便就能搜到,

git filter-branch --force --index-filter \   "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \   --prune-empty --tag-name-filter cat -- --all 

但是,但是从阿里云给的泄漏地址打开居然还能打开泄漏 key 的文件,

仔细一看阿里云打开的是特定版本的文件,哪怕这个版本已经不在最终仓库里了,github 还是能打开的,

也就是说光自己删除数据是没用的,这看起来是 github 缓存已经删除了的 commit,

肯定要想办法删除这些缓存才行,

于是找到 github 官方文档,

https://docs.github.com/cn/github/authenticating-to-github/removing-sensitive-data-from-a-repository

其中第 8 点明确说了要联系 GitHub 支持删除缓存之类,

赶紧设置成 private 仓库,然后睡觉去了,

第二天起来发支持工单,让 github 帮忙删除,

04.18 11:39

标题:

Removing sensitive data from a repository

内容:

I submitted sensitive data to these two commits,

https://github.com/AoEiuV020/LetsEncryptManualHook/tree/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx https://github.com/AoEiuV020/LetsEncryptManualHook/tree/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

I found that I cannot delete them completely,I have used filter-branch to completely delete sensitive data and force push, But these two commits can still be accessed, Please help me to delete these two commits completely,

04.18 22:19

收到工单回复,说缓存清除了,

Hi 啊 o 额 iu 鱼,  Thank you for contacting GitHub Support!  I have gone ahead and cleared the cache for you.  Please let me know what else I can assist with!  Cheers, J.J. 

至此才完成彻底删除 github 上的敏感数据,光等工单就等了十个半小时,

大家要是有删除过 github 上的却没有发工单的可以试一下删除了的 commit 还能不能打开的,

notion

vue 项目中使用百度地图问题?

Posted: 19 Apr 2021 01:59 AM PDT

最近项目中使用百度地图,根据后台推过来的点坐标 list,在百度地图上生成路线,现在后台返回 1W 多条数据,前台页面就直接卡死了。用的是别人封装好的 vue-baidu-map ,请教一下有没有什么好的实现方法?或者 vue 项目中应该怎样正确的使用百度地图 ?

vue 如何实现 loading 读条,加载完成后显示页面?

Posted: 19 Apr 2021 01:55 AM PDT

以前都是做单个组件的 axios 回调绑定加载完成事件,感觉还比较简单,现在想做一个全局读条,不会做了

具体分为两个问题,其一是如何让用户在第一次打开页面时读一个条。比如用户第一次访问我的网站,而我的前端 spa 体积比较大,可能读个一两秒钟,这段时间我要在 vue 还没加载完成之前放一个 loading,然后等 vue 加载完成之后删掉这个 loading,没想好怎么做。

其二是 vue 加载完成之后,单个路由页面的 loading,比如用户默认打开 index.html 之后,这时候 vue 的 js 已经在本地了,现在想跳转到 catalogue 页面,这个页面需要再额外加载若干图片和 css/js 脚本,我希望资源全部加载完成之前不要展示页面,这种应该怎么做呢?

更好用的 Python 管道!

Posted: 19 Apr 2021 01:35 AM PDT

之前的主题 https://v2ex.com/t/743574

吸取了大家的建议,做了一个更好用的管道出来。根据测试,性能损耗在纳秒级,我个人觉得应该可以忽略。

还是老样子,不多说,直接看代码。仓库在 https://github.com/abersheeran/cool

from functools import reduce from cool import F, FF  range(10) | F(filter, lambda x: x % 2) | F(sum) == 25  (1, 2) | FF(lambda x, y: x + y) == 3  range(10) | F(reduce, lambda x, y: x + y) == 45 range(10) | F(reduce, lambda x, y: x + y, ..., 10) == 55  square = F(pow, ..., 2) range(10) | F(map, square) | F(sum) == 285 

为 PHP 提供一些要求性能比较高的 FFI 库这种有意义吗?

Posted: 19 Apr 2021 01:31 AM PDT

最近写了几个 PHP FFI 绑定. https://github.com/TianLiangZhou/ffi-lac 分词 https://github.com/TianLiangZhou/ffi-pinyin 中文拼音 https://github.com/TianLiangZhou/ffi-opencc 繁体

感觉下来安装门槛有点高。。

求助: redhat7.8 在虚拟机和物理机上安装有什么不同?

Posted: 19 Apr 2021 01:28 AM PDT

最近在 HPE 服务器上部署 redhat7.8,系统安装好后,安装一个封装了 java 版本的软件,会报 java 错误,但在虚拟机里实验安装又完全没问题。完全搞不懂问题出在哪里?
错误 1:
*** Warning with: /home/eda/calibre/install.ixl/mgc_installThe version of /home/eda/calibre/install.ixl/JRE/bin/java may not be correct!...Required: "1.6.0"...Found: Error occurred during initialization of VMjava/lang/NoClassDefFoundError: java/lang/Object...Please check that you have correctly installed the Mentor Install program that contains the Java Runtime Environment.Error occurred during initialization of VMjava/lang/NoClassDefFoundError: java/lang/Object

错误 2
*** Warning with: /home/eda/calibre/install.ixl/mgc_installThe version of /home/eda/calibre/install.ixl/JRE/bin/java may not be correct!...Required: "1.6.0"...Found: Error: no server' JVM at/home/eda/calibre/install.ixl/JRE/lib/i386/server/libjvm.so'....Please check that you have correctly installed the Mentor Install program that contains the Java Runtime Environment.Error: no server' JVM at/home/eda/calibre/install.ixl/JRE/lib/i386/server/libjvm.so'.

刚入门,翻译了几篇 Golang 和 Rust 相关的文章对比一下~

Posted: 19 Apr 2021 01:21 AM PDT

想问下各位公司有没有 rust 岗位呢,感觉 rust 只有一些性能极致要求的场景才用到,go 还是简洁很多

Discord:为什么我们从 Go 切换到 Rust

我应该选择 Rust 还是 Go ?

Go 获取结构体未导出(私有)变量

Posted: 19 Apr 2021 01:18 AM PDT

原文链接 >> Go 获取结构体未导出(私有)变量 www.ikaze.cn

|
Go 语音通过首字符的大小写来限制变量、函数的包外可见性。最近遇到个问题,需要访问一个官方包的未导出变量,发现可以通过反射获取,于是记录下来:

首选我们建个新的包 user/user.go

package user  type User struct { 	id   int 	Name string }  func NewUser() User { 	return User{2, "gojuukaze"} } 

然后我们编写 main.go ,通过 reflect.ValueOf 输出 user

func main(){ 	user:= user.NewUser() 	fmt.Println(user.Name) 	fmt.Println(reflect.ValueOf(user)) } 

程序的输出为:

gojuukaze {2 gojuukaze} 

可以看到reflect.ValueOf其实是能获取未导出的变量的。

reflect.ValueOf 接下来返回的是结构体Value ,接下来我们查看Value 方法,可以看到一个 FieldByName 函数,从名字不难看出,它是通过字段名获取字段。


接下来尝试通过FieldByName 获取变量。需要注意的是 FieldByName返回的是Value类型,你可能需要经过类型装换有才能使用。

func main(){ 	user:= user.NewUser() 	v:=reflect.ValueOf(user) 	fmt.Println(v.FieldByName("id")) 	fmt.Println(v.FieldByName("id").Int()) } 

程序输出为:

2 2 

使用设计模式的疑问

Posted: 19 Apr 2021 01:15 AM PDT

  1. 首先作为一个 crud 开发者, 大量的 if-esle, 重复的工作让我感到是时候提升自己了
  2. 所以最近在看设计模式, 初涉设计模式, 就想到工作中的功能, 每看一个就想能否套用
  3. 现在感觉自己有点陷入设计模式的怪圈, 是否有必要在 crud 的工作中, 考虑设计模式, 是否会过度设计呢 ?

大佬们 指点指点

分享一个小工具 tmax ,命令行重度用户的福音

Posted: 18 Apr 2021 11:29 PM PDT

tmax is a tool to help you call your cmd quickly, especially long cmd. If you frequently deal with the terminal daily, tmax will greatly improve your work efficiency.

Project link: https://github.com/hantmac/tmax

In addition,I am new to opensource and I really need advices and feedbacks from you guys! Feel free to post a question or PM me if you get in trouble when trying the project. Criticism is always welcome, too.

HTTP 多线程下载同一个文件,是从不同的客户端口发出的请求吗?

Posted: 18 Apr 2021 10:48 PM PDT

如果使用多线程从同一个服务器上下载同一个文件,假设该服务器支持 获取文件的部分内容 ( range & content-range ) , 客户端如果同时发出 10 个并发请求的话,这些请求是从 客户端 的 同一个端口 发出去的吗 ?

请教一个后端开发问题,可能是多线程相关。

Posted: 18 Apr 2021 09:48 PM PDT

本人对后端开发刚开始学习,没有形成知识体系,所以有个疑问:

假如用户发起一个请求后,我们会直接处理这个请求,然后返回给用户响应,如果同时这个请求会触发一些额外的并不需要响应给用户的任务,比如写入日志。这个额外任务的处理方案是如何设计的,另开一个线程?

因为不知道这个问题该如何精准地用词汇表达,所以没找到理想的搜索结果。还请赐教,有个搜索关键词做为指南也是很好的。

问问大家关于 k8s 的 deployment 创建过程

Posted: 18 Apr 2021 08:57 PM PDT

从 yaml 提交 api-server 后到 Pod 被创建出来的流程,网上搜了一些感觉要么太简单,要么讲的太细了,牵扯的代码太多,其实我是为了应付面试的...所以就需要类似:第一步,foo 组件和 bar 组件通信,完成了 xx,第二步,xxx 。大家知道哪里有讲这种东西的嘛?或者大家总结过吗?

有没有人用 bash-language-server, 我想问问这么开它的 log,或者它的默认 log 是写到哪里了? https://github.com/bash-lsp/bash-language-server

Posted: 18 Apr 2021 08:15 PM PDT

数据报表统计用什么方案比较好呢

Posted: 18 Apr 2021 08:15 PM PDT

系统现状

Saas 结构的 CRM 系统,采用最省成本也最复杂的单库单表行级限制租户隔离手段(这玩意差点没搞死人),springboot+mysql

新的需求

统计每个销售的客户的跟进,交易等一大堆数据,并且可以筛选年月日的统计数据,前端展示图表和数字

两套方案

方案 1: 使用定时任务,每隔一段时间去统计用户这段时间内的情况,并写入数据库
我想到的是一个用户 1 条记录,也就是每天只新增 1 条统计记录,写入新的统计数据时判断今天有无记录,有的话将直接统计好的数据更新到这条记录,否则新建一条,今天这样做的好处就是不会产生大量的记录,但无法统计到时分秒的数据,但按照需求是不需要,只需到日

方案 2: 查询的时候直接去统计每张表的数据并塞到 redis 里,然后设置过期时间,下次查询就查询缓存,没有则去统计每张表的数据

本人菜鸟一个,开发经验少,麻烦做过类似开发的大牛给个好一点的解决方案,系统用户以后会越来越多,并且是多租户的,所以很麻烦,我还在想要不要将统计数据放到其他类型数据库里

求助!mysql5.7 触发器内无法使用存储过程?

Posted: 18 Apr 2021 08:03 PM PDT

事情是这样的,一开始是在 mysql5.6 的版本上,使用触发器+存储过程的组合,是正常的; 后来公司一次升级把 mysql 换成了 5.7 版本,然后就失效了,求助是 mysql5.7 在这方面有什么限制吗 之前在另一个 5.7 环境执行 sql 时,提醒过 binlog 的问题,不知道和这个时候有关系,是否需要额外的参数设置 希望各位大佬指点一下

附上脚本 触发器脚本: CREATE TRIGGER tg_tab_name_insert AFTER INSERT ON table FOR EACH ROW BEGIN CALL p_sync_data('tab_user_order','id',NEW.id,1); END;

存储过脚本: CREATE PROCEDURE p_sync_data( IN var_tb_name varchar(50), IN var_tb_key varchar(50), IN var_tb_key_value varchar(50), IN var_op int(1) ) BEGIN DECLARE var_enable INT(1); SELECT enable INTO var_enable FROM tb_ctrl WHERE tb_name=var_tb_name; IF var_enable IS NOT NULL AND var_enable = 1 THEN INSERT INTO tb_data_sync(id,sync_tb_name,sync_tb_key,tb_key_value,sync_op,created) VALUES (UUID(),var_tb_name,var_tb_key,var_tb_key_value,var_op,f_current_timestamp()); END IF; END;

时间戳的函数脚本: CREATE FUNCTION f_current_timestamp() RETURNS bigint(20) BEGIN DECLARE r_timstamp BIGINT(20); SELECT REPLACE(unix_timestamp(current_timestamp(3)),'.','') INTO r_timstamp; RETURN r_timstamp; END;

Jquery Datatable 前端分页 Checkbox 跨页全选的问题

Posted: 18 Apr 2021 07:43 PM PDT

业务需求:
有一个主机列表,大概几百条数据,一次性发给前端,使用 DataTable 在前端进行分页后,使用 Checkbox 进行选择后,再发送给后端处理。
前端进行分页,要支持跨页全选,选择等功能。

问题:
DataTable 怎么跨页对 Checkbox 进行全选?现在发现 Datatable 其实应该有地方存储了 checkbox 的状态,推断应该找到相关的地方,设置下所有 row 对应 checkbox 的状态就可以了。但是没有找到这样的 api

一个基于腾讯云函数服务的代理池

Posted: 18 Apr 2021 12:58 PM PDT

前几天阅读一篇文章发现腾讯云函数可以作为免费的 HTTP 代理池使用。这几天用 mitmproxy 实现了一个代理服务器,中途遇到各种 bug 。。所以采用了直接序列化 requests 实现的,欢迎来玩玩,提提 issue 之类。

项目地址: https://github.com/shimmeris/SCFProxy

nginx 配置问题 主域名没站,加 https 访问主域名后返回的是二级域名的主页。

Posted: 18 Apr 2021 12:11 PM PDT

情况如下

x.com 没有部署站点,没写过配置文件

二级 sub.x.com 部署了一个站并开启了 https

访问 http://x.com 正常,没有东西

访问 https://x.com 返回的是 sub.x.com 的内容,chrome 提示"您的连接不是私密连接"。

为什么会这样,如何设置才能避免这种情况。

请教一个 Mysql 条件更新语句,一句完成

Posted: 18 Apr 2021 09:53 AM PDT

在同一个表中,对值的进行判断,根据判断结果[是否]再进行更新

1 、有一个名叫mtt的表
2 、mtt 表内有三个涉事字段,AID,mttID,UpdateTime
3 、mttID='3A2NN179'的条目,如果AID不等于'2719',把这些条目的AID更新为'2719',同时更新 UpdateTime 时间为 now(),
4 、如果AID已经是 2719,则不用理会,也不用更新 UpdateTime

SELECT * FROM mtt WHERE mttID='3A2NN179';

程序上来说,
用 SELECT 到内容,程序本地判断,再去做两次 UPDATE,两三个交互的是能做到,握手延时等,费效比不好,看看有无一句完成的可能?

如何 SSH 到一台用微软账户登陆、使用 PIN 码解锁的 windows10 机器?

Posted: 18 Apr 2021 08:43 AM PDT

按照网上的教程给 win10 装了 openssh,然后开启了 sshd 和 ssh authentication 服务

防火墙里面给了 OpenSSH server 的权限

然而 ssh username@ip_address 时总是提示我密码错误

试过以下组合:

  1. username 填 C:\Users\username 这个 username,密码填锁屏密码
  2. username 填 C:\Users\username 这个 username,密码填微软账户密码
  3. username 填微软账户,密码填锁屏密码
  4. username 填微软账户,密码填微软账户密码
  5. 把本机公钥添加到 windows10 机器的公钥列表

均无效

Go+gRPC-Gateway(V2) 微服务实战,小程序登录鉴权服务(五):鉴权 gRPC-Interceptor 拦截器实战

Posted: 18 Apr 2021 07:22 AM PDT

有没有大佬研究过瓦片图这种吗?手绘地图

Posted: 18 Apr 2021 06:44 AM PDT

有没有大佬研究过瓦片图这种吗?手绘地图覆盖经纬度计算

No comments:

Post a Comment