Saturday, August 7, 2021

V2EX - 技术

V2EX - 技术


你们公司是如何做开发的?

Posted: 07 Aug 2021 04:21 AM PDT

刚工作不久,我们公司是使用华为云桌面,连接到公司内部机房的机器做开发,所有数据都在里面,也没有拷贝出去的权限(因为要保密)。这个云桌面体验有时很不好,老是卡顿,而且用惯了 MacOS 后,在 Windows 里开发真是不适应。

你们在公司是如何做开发的呢?纯好奇贴

作为十多年的老程序员,突然想分享个想法给大家

Posted: 07 Aug 2021 04:11 AM PDT

与人相处和写代码一样,也是需要前后端分离的。你把后端所有的数据都暴露在前端,让前端直接写库,不论是程序还是人际交往,都是非常危险的行为。

大家都那么会抽象,不妨尝试把自己的生活也抽象一下,认真设计一下自己的人生架构,前后端分离一下,别把心里的都写在脸上,也别把看到的都写到心里。

祝大家生活愉快。

只开虚拟专用网端口,还能攻入内网吗?

Posted: 07 Aug 2021 04:02 AM PDT

迫于 V2EX 自动把我含有 VVPPNN 的帖子转移到 VVPPNN 区域了,这里重新问一下。

请移步到:

https://www.v2ex.com/t/793721#;

逃离到 Linux 两周的感受

Posted: 07 Aug 2021 03:55 AM PDT

前文提要:最近折腾 hyper-v 的一些吐槽
之前因为用 wsl2 做了一段时间的开发,各种莫名奇妙的问题重重。后来想换成虚拟机,但想想还是算了,反正多出一块 SSD,为何不直接装一个新的操作系统装在单独的 SSD 上呢? 我选用的发行版是基于 arch 的 manjaro 。 刚开始装好系统时那几天非常折腾,配置和装好软件。现在已经在上面开发两周了,说说这两周的感受。

这里是我折腾的一些配置: https://gist.github.com/leyafo/856fe83d3d7681744b895a66baa62486

首先说好的方面:
docker 非常丝滑
命令行和包管理工具很丝滑
goland 丝滑,这个特别惊喜。不知道 jetbrains 怎么会把 linux 下的 ide 优化得这么好。远超其他平台体验。
不关机运行非常正常
开发环境真的很友好,友好度超过 mac,各种工具完全无痛安装。甚至我还自己编译了一个开源的 C++ QT 的软件。

说说不好的方面:
桌面依然很拉跨,我用 gnome 能看到明显的 bug 。
字体很难看,需要时间去适应。
输入法很拉跨,配置超级烦。我后悔花那么多时间去配置,应该直接用 chrome 的插件形式。
配置折腾很烦,我尝试着调整我的 tty 控制台,停了一天去配置别的软件后,ctrl+alt + F1 进入控制台就卡死了。 太省配置了,跑了好多天不关机才吃掉 8G 内存。

我个人认为 Linux 正确的服用方式:
别去折腾桌面
别试图追求完美卓越的配置
有些问题能忍忍就忍忍,桌面,字体,输入法。
有些功能不怎么用,就算拉跨也别去管它。比如我的 tty 控制台。我本来就是想把它当成一个写代码的勿扰模式来用,但用不了就算了。
侧重实用成熟的那一面。 如果你的电脑大部分时间都是开个浏览器,很少用其他软件,Linux 会非常适合你。

另外一方面,机器没有很多 fancy 的软件,很多东西感觉都很原生,粗糙。你会感受到你开的是辆不怎么漂亮完美的车,但是车上几乎所有的零件你可以控制的感觉真的挺好。

关于 Java 类加载和 Springboot Bean 动态加载的一点想法

Posted: 07 Aug 2021 03:53 AM PDT

最近遇到一个情况,需要修改数据库里的一些数据,这些数据是用 json 形式保存的,要给某些 key 对应的 value+1.如果用 sql 写会很复杂,如果能用 java 写好程序触发一下拿到结果就好了,但是这样做要发布到正式环境,调试也是非常不方便,每次发布要等好久。

于是想到用户 java 的自定义类加载器和 springboot 的 bean 动态加载结合起来,提供一个页面,在本地写好代码,copy 到页面上,点击运行就可以生效。有复杂的导出表格需求也可以实现。(明明当初做管理端的时候弄了那么多数据统计功能,结果还是不能满足业务线的需求)

大概流程是:点击运行后,把输入的代码变成文件流喂给类加载器,加载新定义的类,然后再加载到 spring 的 bean 容器里面,触发一下这个 bean 的运行,拿到结果返回给页面(有点像在线面试题的感觉)。

具体细节感觉还是有很多优化的点,想问下有没有类似的现成的工具?最好能和 springboot 结合起来,毕竟复杂逻辑还是要依靠已存在的一些 bean 。(如果没有的话就尝试糊一个好了 2333 )

彦祖们看道题, GO 之 TCP 编程代码找错误

Posted: 07 Aug 2021 03:46 AM PDT

已经是几个月前碰到的题目了,补了几个月基础知识还是不会做,惭愧惭愧

题目:找出下面代码的错误

题目图片地址 https://oszo.cc/1.png

golang 中多个协程池如何优雅退出

Posted: 07 Aug 2021 03:10 AM PDT

假设有三个协程池(A,B,C), 三个分别处理不一样的业务且每个协程池中的 worker 数量不一致

当前数据流向为 A => B => C,任务在任一协程池中都有出现 err 导致该任务跳过的可能

在如下两种情况下:

  • 进入 A 协程 100 个任务,任务不会继续向下拆分,最后从 C 出来最多也就是 100 个
  • 进入 A 协程 100 个任务,后续每个协程池中都会继续拆分任务,比如转到 B 就是 500 个,继续转到 C 就是 1W 个

最后在主程序中,针对上述两种情况,有没有优雅的办法知道任务已经全部完成且让主程序退出

新开源项目 Hora, 一个基于 Rust �� 的高速近似最近邻搜索 (ANN)算法库 �� ,欢迎围观与参与 (≧∇≦)ノ

Posted: 07 Aug 2021 03:03 AM PDT

brand

Hora 是一个近似最近邻搜索算法 (wiki) 库

Hora 完全基于 Rust🦀 实现,事实证明,Rust 确实非常非常快,完全可以媲美 C++ ,且Hora使用 SIMD进行了加速,速度非常快⚡️⚡️⚡️,具体速度可以参考下面的 benchmark.

Hora ,日语为 「ほら」,读法像 [hōlə] ,意思是 Wow, You see! , Look at that! 。 这个名字的灵感来自日本著名歌曲 「小さな恋のうた」

github: https://github.com/hora-search/hora

主页: https://horasearch.com/

Python 库: https://github.com/hora-search/horapy

Javascript 库: https://github.com/hora-search/hora-wasm

Hora 定位上是Rust实现的 ANN 算法库,希望能基于 Rust 本身的优势,能够提供多个安全的语言库,且能部署在任何地方。目前已经能在Linux, macOSWindows以及WebAssembly部署,未来还会支持AndroidIOS以及 嵌入式设备


Demo

这是 Hora 的在线演示(可以在这里找到它,强烈推荐试试速度!! https://horasearch.com/)

👩 Face-Match [online demo], have a try! demo3

🍷 Dream wine comments search [online demo], have a try! demo3

benchmark

Hora 非常快,bench (与 Faiss 和 Annoy 相比)

demo3

Usage

安装极为简单: Rust

[dependencies] hora = "0.1.1" 

Python

$ pip install horapy 

Javascript (WebAssembly)

$ npm i horajs 

Building from source

$ git clone https://github.com/hora-search/hora $ cargo build 

使用上 API 也非常简单:

Python example [more info]

import numpy as np from horapy import HNSWIndex  dimension = 50 n = 1000  # init index instance index = HNSWIndex(dimension, "usize")  samples = np.float32(np.random.rand(n, dimension)) for i in range(0, len(samples)):     # add node     index.add(np.float32(samples[i]), i)  index.build("euclidean")  # build index  target = np.random.randint(0, n) # 410 in Hora ANNIndex <HNSWIndexUsize> (dimension: 50, dtype: usize, max_item: 1000000, n_neigh: 32, n_neigh0: 64, ef_build: 20, ef_search: 500, has_deletion: False) # has neighbors: [410, 736, 65, 36, 631, 83, 111, 254, 990, 161] print("{} in {} \nhas neighbors: {}".format(     target, index, index.search(samples[target], 10)))  # search  

我们很欢迎任何参与,欢迎任何贡献,包括文档和测试。 我们使用 GitHub 问题来跟踪 Issue 和 bug,你可以在 github 上进行 Pull Requests 、Issue

最后如果觉得这个项目做的还不错,或者比较感兴趣,或者你们想用的,欢迎在 github 上 star 或者给我们提 issue

github: https://github.com/hora-search/hora

Python 库: https://github.com/hora-search/horapy

Javascript 库: https://github.com/hora-search/hora-wasm

idea 热加载怎么设置,麻烦知道的告诉一下新手

Posted: 07 Aug 2021 02:42 AM PDT

从 vscode 转 idea,我网上搜了,说要修改 Registry 里的 compiler.automake.allow.when.app.running,可是我设置里 compiler 开头的根本没有这一项,我的 idea 版本是 2021.2 ultimate edition

8 月份编程比赛汇总

Posted: 07 Aug 2021 02:30 AM PDT

今年赛事的数量比以往增加了许多, 特意把赛事汇总了下

另外比赛奖金也挺丰厚的, 技术牛逼点感觉靠打比赛就能营生了~

8 月份编程比赛汇总

吐槽一下 golang 的 select 模型,居然不自带超时机制

Posted: 07 Aug 2021 01:17 AM PDT

使用 Timer 的 Channel 来配合的超时机制,怎么都有漏洞。

timer 的超时状态和 channel 的 sendTime 数据,也不做到原子状态。判断出来是超时了,既有可能 channel 中有数据,也有可能没有数据。完全是薛定谔的定时器。

就这种情况下,为什么不 native 提供一个 select 的超时方式呢?

各位大牛们是如何解决这个问题的啊?

容忍(理论上)一定概率的立即超时?

或者干脆不重用,每次循环重新创建一个新的 Timer ?

吐槽自己的两个开源工具(msmbps, V File Name)

Posted: 07 Aug 2021 12:52 AM PDT

msmbps 测量云服务的延时和下载,V File Name 是粗暴的基于压缩包的版本管理。

刚开始的时候,想着国外云服务是小众需求;而粗暴的版本管理,倒腾 office 文档的普罗大众都需要(它也是个归档备份的好助手)。

后面就翻车了:测量云服务很多 star,开心呀;粗暴版本管理,star 就比较少了。

我看了一下,然后明白了:v2ex 程序员很多,不少人需要国外云服务;对于粗暴的版本管理,需求较少。

小广告:
https://www.msmbps.com/
https://github.com/msmbps/msmbps
https://www.vfilename.com/
https://github.com/vfilename/vfilename
(求 star 啦)

在 Python 中如何放置一个钩子劫持接下来发生的标准输出?

Posted: 06 Aug 2021 06:12 PM PDT

如题,假设在 a.py 里有一段 print 代码

# a.py print("hello everyone, this is a.py") 

假设我们在不修改 a.py 的情况下,可否在其他文件中通过劫持标准输出的方式修改这段内容的输出?

比如我们期望的使用环境是在b.py中导入a.py

# b.py # 首先劫持标准输出 do something  # 然后导入 a.py import a  # 期望得到定制化的输出 # 比如 # 打印 this is a.py at 2021-08-08 12:12:12 (删除前面的 hello everyone,之后再添加时间) 

有开源的 windows 远程工具吗?

Posted: 06 Aug 2021 01:36 PM PDT

win 自带远程桌面的弊端是不能同步操作,不能跟被控端那边的人实时沟通协同处理问题。
之前 V2EX 上提到过的那些同步+内网的远程工具如 Teamviewer,ToDesk 之类,或多或少都有过安全问题 /争议。

那么有没有此类的开源工具呢?如果自搭中转服务器,且有代码可查的话,感觉就能安心很多吧...

ICP 备案信息查询 API 接口开源

Posted: 06 Aug 2021 12:16 PM PDT

由于找了一下此 API 全部都是收费的,自己就去官网研究了下,然后就搞定了
采用管局官网北岸接口,查询结果为最新 ICP 北岸数据

请求示例: https://check.lzfh.com/api/icp.php?domain=qq.com
请求方式:get
请求参数:domain=需查询的域名,可以包含 http 或二级
返回示例:
{
"icp": "粤 B2-20090059-5",
"unitName": "深圳市腾讯计算机系统有限公司",
"natureName": "企业",
"msg": "查询成功",
"result": "1"
}
返回 result 为 0 则查询失败。

开源地址: https://github.com/yitd/ICP-API

小弟纯自学 php,代码很搓,大神勿喷,咱只管能用就行!

关于英文技术面试

Posted: 06 Aug 2021 11:13 AM PDT

各位大佬,用于英文技术面试以及沟通的话,如何提高口语?

请问大佬 rss 阅读器的滚动向下 自动标记链接为已访问 这个功能大致应该如何实现 在网上搜索了几天 没啥满意的结果

Posted: 06 Aug 2021 08:34 AM PDT

Microsoft Teams 出错有点吓人呀 ​​​

Posted: 06 Aug 2021 08:31 AM PDT

Microsoft Teams 是基于 Edge WebView 开发的,这是基于 Web 技术原生应用的通病了。

OneDev 4.9 发布 - 自带 CI/CD 功能的开源 Git 服务

Posted: 06 Aug 2021 06:54 AM PDT

这个版本主要加入了 service desk 的功能,使得用户可以通过邮件创建和讨论工单。

4.9 版本还加入了 git 仓库和工单导入功能,目前支持从 GitHub,GitLab,Gitea,BitBucket Cloud,JIRA Cloud 和 YouTrack 导入数据。

另外增加了对命令输出的 ANSI color 的支持。

具体介绍请移步: https://github.com/theonedev/onedev/wiki/4.9

望大家多提宝贵意见。

No comments:

Post a Comment