Friday, June 25, 2021

V2EX - 技术

V2EX - 技术


很久没用 Opera 了,刚下了一个,感觉真的是摸鱼神器啊

Posted: 25 Jun 2021 10:15 AM PDT

图就不放了。siderbar 真的不错,Chrome 有类似的机制么? 可以在上面放很多小工具,刷推特也是神器。。

workspace 感觉比 tab group 好用。。摸鱼神器。

另外 Opera 自带的 vpn 好像不能翻墙?

都说 go 挺好使的,准备用 go 写几个接口

Posted: 25 Jun 2021 10:15 AM PDT

怎么感觉这语法挺奇怪的, err := xx , _ if err != nil

var json struct { Value string json:"value" binding:"required" }

names := []string{"lena", "austin", "foo"}

视觉上感觉比较乱,可能是年纪来了,学不动了😓

我刚学 object-c 的时候都没有这种感觉

像 c#,php,java, js 满屏代码时,看着还是挺有感觉的

技术栈: 前端,c#,php,object-c

小公司都是怎么部署代码到生产环境服务器的?

Posted: 25 Jun 2021 10:13 AM PDT

据我所知,大公司的代码上线流程一般都会很规范,有专门的代码发布系统。但小公司的话,可能会没有实力去开发这种发布系统,所以想了解下这个问题。

如果是我的话,我的做法应该是: 首次部署使用 git clone,后续代码的变更则使用 git pull

这种做法好不好?或者有没有更好的做法呢?

非国行的三星,刷国行以后不要升级 Samsung pay

Posted: 25 Jun 2021 10:12 AM PDT

会导致公交卡不可用。
刚买的港版 note20u 中招了。

二本大学,学信息安全好还是计算机好?

Posted: 25 Jun 2021 09:59 AM PDT

二本大学,高中的时候学过编程,学了 python 和一点 C++,后来去学了网络安全。目前对信息安全这块还是比较感兴趣,但是考虑到大学二本的竞赛实力太弱和信息安全氛围或许不好,目前在计算机专业和信息安全专业抉择。

gevent 还在流行吗?

Posted: 25 Jun 2021 09:09 AM PDT

好久好久以前(14 15 年) 就知道 gevent. 然后因为各种原因, 譬如基础薄弱啊什么的就没去研究这个.
然后现在看了一下 github commit log, 版本 release 啊什么的 感觉 gevent 现在更新并不活跃.

所以我的问题是 目前的不活跃是因为这种基础库本身更新就不频繁还是因为什么原因不维护了?

续:《浏览器关闭最后一个标签页后的行为》,写了个插件试图找回当年用世界之窗的感觉~

Posted: 25 Jun 2021 09:05 AM PDT

本人也算是世界之窗浏览器的老粉丝了,大约十五年前接触到这款浏览器之后就因为它简洁、轻巧、速度快、功能全面且人性化而一直使用。但是由于其被 360 公司收购之后逐渐停止更新,而且个人常用操作系统逐渐全面更换为 Linux,不得已只能强忍不适,将常用浏览器切换为 Chrome,多年过去也已经彻底习惯了。直到前些天看到 V2EX 上的这篇帖子:《浏览器关闭最后一个标签页后的行为》,又使我回想起了那些年有世界之窗相伴的日子,回忆起切换到 Chrome 后关闭最后一个标签页后浏览器会直接关闭而不是保留一个新标签页这一行为的不适与别扭——当时的我没有能力,只是个普通的计算机爱好者,而现在作为伪全栈开发有了折腾的能力,趁此机会就尝试编写了本插件,试图找回熟悉的感觉~

效果演示

demo

websocket 报文解析的问题

Posted: 25 Jun 2021 08:07 AM PDT

这个是我解析 websocket 的代码,现在有一个小缺陷还不是很完善,当数据长度 大于 125 的时候就解析不出来了。 由于本人在二进制的运算上非常薄弱,所以在此请教一下大家。还望指点迷津。

	// 这句代码可以获取到客户端传来的数据 	byte[] bytesData = outputStream.toByteArray();         if (bytesData.length < 1) {             return null;         }          int opcode = bytesData[0] & 0x0f;         if (opcode == 8) {             webSocketExchange.setWebSocketEnum(WebSocketEnum.CLOSE);             return webSocketExchange;         }         if (bytesData.length < 2) {             return null;         }          int payloadLength = (bytesData[1] & 0x7f);         if(payloadLength < 1){             return null;         }         if(payloadLength == 126){             // TODO 需要研究下怎么获取数据长度         } else if(payloadLength == 127){             // TODO 需要研究下怎么获取数据长度         }          if(bytesData.length < (payloadLength + 6)){             return null;         }         byte[] mask = Arrays.copyOfRange(bytesData, 2, 6);         byte[] payloadData = Arrays.copyOfRange(bytesData, 6, payloadLength + 6);          if(payloadData.length < payloadLength){             return null;         }          for (int i = 0; i < payloadData.length; i++) {             payloadData[i] = (byte) (payloadData[i] ^ mask[i % 4]);         }          ByteArrayOutputStream outputStream = new ByteArrayOutputStream();         outputStream.write(payloadData);          webSocketExchange.setLength(6 + outputStream.size());         webSocketExchange.setOutputStream(outputStream);         webSocketExchange.setWebSocketEnum(WebSocketEnum.MESSAGE); 

作为伟大的程序员, 大家的工作状态是怎样的

Posted: 25 Jun 2021 06:59 AM PDT

我原来在一家日企工作,远程

早上处理完邮件就开始健身,玩游戏,睡个回笼觉然后点中午饭

然后下午写两个小时(途中差不多半小时喝茶喝咖啡)

最后开个会半小时, 终于结束一天的工作啦

然后就是尽情吃喝玩

如何用 Java 实现类似 windows 里面新建文件夹重名了在后面加一的功能

Posted: 25 Jun 2021 06:14 AM PDT

如题,小弟最近在做一个网盘项目,在上传文件到网盘时想要实现类似 windows 里面那样,如果重名了就自动在文件名后面加个数字这样的功能,然后要做到重复上传的话后面的数字是递增的这样的效果,麻烦各位大佬给小弟帮帮忙

大家的公司是如何做服务器账号和内部平台账户管理的

Posted: 25 Jun 2021 06:14 AM PDT

本来是个小公司,目前公司发展起来了,人逐渐多了,给开发人员分配的服务器账户都是统一的 root 用户,感觉长期以往估计要出大问题哦。想着做个账户管理之类,又没啥经验,各位指点一二呗

现在开发弹性可扩展的 NoSQL 应用,数据库是用 MySql 好还是 MongoDb 好?

Posted: 25 Jun 2021 05:08 AM PDT

听说现在都很流行用 NoSQL 数据库,数据库设计可以不用模式,字段随便扩展,很爽。
本来 MongoDb 的文档数据很灵活,但现在 MySql 居然也加了文档数据,让我有点心动。
MongoDb 以前用了一段时间,不过对中文全文检索支持不大好。但是又不知道 MySQL 的 NoSQL 好用不好用?

前端大佬们,移动端布局不用 REM 用什么?

Posted: 25 Jun 2021 05:08 AM PDT

刚才看到这个文章 https://zhuanlan.zhihu.com/p/378619948

其中说到 rem 布局,有点疑惑。如果不用 rem 应该如何做自适应?

mysql 批量插入和多行插入 哪种方式更好一点呢 ?

Posted: 25 Jun 2021 04:43 AM PDT

批量插入指的是:

同一事务内,同一个 PreparedStatement,for 循环,反复赋值提交,最终提交一次事务

多行插入指的是:

拼接类似于下面这种语句 insert into table values(x,y,z),(x,y,z),(x,y,z);


如果需要插入大量数据,使用哪种方式更好呢?

数据库使用 Mysql

放暑假了,有没有同学对开源项目有兴趣?

Posted: 25 Jun 2021 04:39 AM PDT

想吸收优秀的学生参入项目,https://github.com/rustdesk/rustdesk

写了一个批量添加微信公众号转载白名单的油猴脚本

Posted: 25 Jun 2021 04:04 AM PDT

PostgreSQL 到 MySQL 到 TiDB 迁移实践

Posted: 25 Jun 2021 04:03 AM PDT

AskTUG 论坛迁移实战:Discourse 从 PostgreSQL 到 MySQL 到 TiDB

https://asktug.com/t/topic/93923

[请教] vue3 自定义简单的状态管理

Posted: 25 Jun 2021 03:52 AM PDT

之前用 vuex4 倒是实现了和 ts 的结合,但是代码太繁琐,vuex5 遥遥无期,我就想用单例的数据共享和 vue3 的响应数据搞个简化版的,想问问这么写有没有什么坑?

class _Store {   ...      private _name = ref('a');   public get name() {     return readonly(this._name);   }   public setName = (v: string) => {     this._name.value = v;   };    private _person = reactive({ name: 'test', age: 12 });   public get person() {     return readonly(this._person);   }   public setPerson = (v?: { name?: string; age?: number }) => {     v && Object.assign(this._person, v);   };      ... } 

Kotlin 1.5.20 发布了~快来看看新特性

Posted: 25 Jun 2021 03:27 AM PDT

可以支持直接调用 java lombok 生成的代码了

中文版新特性一览

执行 mysqlbinlog.exe d:\mysql-bin.000024 --base64-output=decode-rows 发现没有显示全,怎么破?

Posted: 25 Jun 2021 03:18 AM PDT

mysql-bin.000024 手工打开的情况看, 有 8MB 的文件, 还有很多日志;但是默认没有显示全, 请问需要加什么参数吗?

或者离线文件状态下,如何查看最大的 position 呢?

[GO] gorm 连接 postgresql 如何指定 schemas

Posted: 25 Jun 2021 02:54 AM PDT

dsn := "host=localhost user=" + user + " password=" + password + " dbname=" + dbName + " port=5432 sslmode=disable TimeZone=Asia/Shanghai"

db, err = gorm.Open(postgres.Open(dsn), &gorm.Config{ NamingStrategy: schema.NamingStrategy{ TablePrefix: tablePrefix, SingularTable: true, }, })

使用的是 gorm v2,根据官方文档写的 dsn 我使用 db.AutoMigrate()迁移过后,迁移到了默认的 public 上面了

还有个问题 gorm v2 中 BeforeCreate 怎么提前设置字段的值,感谢

大厂们的 App 码农是如何和 UI 合作适配界面的?

Posted: 25 Jun 2021 02:28 AM PDT

一直在中小公司,早年混乱邪恶。

但随着码农地位下降,一些列更方便甩锅的插件也都有了。

之后一直是,UI 效果图啥样,手机啥样,等比。比如,一个容器在效果图上占了一半,那么在任何手机上都会占一半。

个人觉得这甩锅是好了,但实际太傻瓜了。我拿部大屏机,不是为了让一切显示的更大。
人眼看的是实际物理大小。

但不用等比也不行,UI 的效果图,按某尺寸切的,比如 iPhone 8,总不能码农自行发挥吧?

有更新 Windows11 的小伙伴说说怎么样吗?有没有什么兼容性问题。

Posted: 25 Jun 2021 02:27 AM PDT

成都前端需要会哪些东西才能 15k(965 双休)的工作呢?

Posted: 25 Jun 2021 02:18 AM PDT

隔壁公司招了一个前端 6 年工作经验 只会 vue ( 2.0 ) 不会 react,react hooks,ts,node,nignx,vue3.0, 感觉前端需要的技术栈挺多的啊, 真的是工作经验比技术栈吃香吗? 有点疑惑,自己的学习路线该怎么规划 自己咸鱼一头,只会 vue2.0 在学 vue3 的路上,感觉东西太多学不完啊

Windows 11 正式发布后,似乎微软暂时放开了不同内测通道间的转移限制

Posted: 25 Jun 2021 12:50 AM PDT

现在应该有了无需重装系统, 从 Dev Channel 转移到其他内测版本或者退出预览体验计划的可能。

微星主板打开 WHQL 支持后进不去 BIOS 设置

Posted: 25 Jun 2021 12:36 AM PDT

微星主板打开 WHQL 支持以后,第一次进入系统前,就能进 BIOS 设置。

进过一次系统以后,不论是开机以后按按键,还是从重启时按 SHIFT,都打不开 BIOS 设置,显示器不停的无信号 /黑屏 /无信号 /黑屏,只能长按电源关机后再进系统。而且每次开机或者重启时也不显示微星 Logo 了,开机以后显示器先黑屏,然后无信号,然后再黑屏,黑几秒钟以后就是 Windows 登录页了。

但是进系统以后按 RESET 键,就能在开机时按按键进 BIOS 了,再进一次系统以后又是上面的情况。

如果设置启动时使用核心显卡,然后把显示器插到主板的插口上,就一切正常。关上 WHQL 支持也一切正常。

主板:MPG Z390 GAMING EDGE AC CPU:Intel i5-9600K 显卡:技嘉 GTX1650 OC 4G UEFI 模式,GPT 分区,Windows10 21H1

这是 GOP 驱动的问题吗?有啥解决方法吗。。

CI 中 自动安装 Python requirement.txt 如何增量安装?

Posted: 24 Jun 2021 10:46 PM PDT

目前 gitlab 配置了 cicd, 监控 requirement.txt ,一旦该文件有变化,就会触发 stage 进行 docker 镜像 build, 这期中有进行 pip install -r requirement.txt 的步骤,requirement.txt 里边有接近 100 个库,但可能此次更新就只添加了 12 个新库,但 CI 是全量重新 install, 这就意味着每次要安装原有的 100 来个库,再加上新的库, 带来的问题是:

  • 一是会变的非常慢,
  • 二是里边有部分库安装靠运气,时而能成功,时而失败。

想过解决办法:

  • 是先将目前的 100 多个库制作一个新的基础镜像,

但带来的新的问题是:

  • requirement.txt 始终是全量的,因为下游业务需要也要求这个文件必须是全量的。这样的话,即使基础镜像有固定的 100 来个库,也会重跑 pip install -r requirement.txt 好像并没有解决问题
  • 再者,基础镜像变的非常的庞大且不纯净。

特来请教下 V 友,有什么好的解决方案

首个使用 Jetpack Compose 写的 Android 浏览器开源啦

Posted: 24 Jun 2021 09:58 PM PDT

从 compose alpha 版本开始慢慢写,一直写到 beta 才差不多完成,欢迎大家提供意见

https://github.com/bjzhou/ts-browser

PG 也不学好

Posted: 24 Jun 2021 09:38 PM PDT

今天才知道,原来 PG 默认也是可以在 INTEGER 字段上写入以字符串表示的数字的。也会把数值转成字符串写入 VARCHAR 字段,只有宽度限制。
我还以为只有 MySQL 有这种行为。

有没有人研究过在抽样数据文本中进行数据隐写?

Posted: 24 Jun 2021 08:11 PM PDT

简化设定

比如给出一个 100x1024 字节长度的字符串

已知其中每 100 个字节中的前 96 个字节为有效数据负荷,最后 4 个字节为预留可以随意使用无数据负荷的字节。

我们需要在借助此无负荷部分,此 100k 字节长的字符串中,混入一个"20 字节长的隐匿数据"

并同时

1 、在数据以 100 字节为边界,拆分为 1024 组百长度的字符串;且取出 1024 组中的任意多组后,能尽最大可能量地恢复出"20 字节长的隐匿数据"

2 、尽量减小被隐匿加入的数据,在组间的可简单文本观测重复性,减少隐匿数据的被定位发现的可能

3 、研究当预留字节数由 4 改为 2 时的算法影响;以及取出组数逐步减小时,对可恢复性的影响

这是数据隐写?但可能又进一步地涉及到数据抽样、有损的情况。在文本中的隐写,与常见的图像音频中的隐写术也有很大不同。

应该去看哪些方向的文章?

问个写接口的问题

Posted: 24 Jun 2021 07:36 PM PDT

有 2 个实体表 A 和 B 要建立联系到 AB 表里,接口参数是 A 表主键 aid 和 B 表主键 bid,我给绑定到 AB 表里 id,aid,bid. 接口里需要验证 aid 和 bid 在 A 和 B 表里都存在吗,如果 bid 是个数组 也需要一个个遍历去判断是否有效的吗,还是相信界面数据不会错 前端不会犯傻传错别的,通过前期试错让接口不会出现错误数据

选 k3s 还是 kubeedge?

Posted: 24 Jun 2021 07:35 PM PDT

公司自己做了 arm 的车载芯片,然后基于 linux 内核裁剪了一个 arm 操作系统,现在想选 k3s 或者 kubeedge 之类的物联网方案来集成,但是不知道哪一款业界用的多,大家有想法么?

kubeedge 在 2 年前写了很多文章分析它和 k3s 的优劣对比,比如: https://zhuanlan.zhihu.com/p/61940924,好像 kubeedge 更接地气

但是 github 上 k3s 的关注者和用户比 kubeedge 多,不知道该用哪个

现在有没有方案可以在函数计算中部署 Python RPC 调用?

Posted: 24 Jun 2021 07:18 PM PDT

比如阿里云的函数计算,或者 lambda 函数中部署的服务可不可以实现相互之间的 RPC 调用?

因为函数计算大部分只能支持 HTTP 触发,所以想到可不可以使用 JSON-RPC 实现,不知道还有没有更好的办法。

微软 Windows 11 发布会还有不到 1 小时

Posted: 24 Jun 2021 05:40 PM PDT

iQDNS - 一个纯净的像少女一般的 DNS 服务

Posted: 24 Jun 2021 04:29 PM PDT

iQDNS 服务启动于今年年初,起初只是自己在折腾一些 DOH 的协议,后来慢慢的还是觉得自己搞一个服务会比较舒服一些,并且 DNS 服务占用资源不算太大,这也是让我公开该 DNS 的一个原因。

本 DNS 的唯一一个使命就是,隐私至上。

本 DNS 本着隐私至上的根本成立,任何终端访问 iQDNS 的全部不记录日志,并且由网络层得到的网络请求 Logs 也会 1 小时清空一次。

推荐使用 DOH 。

DOH 地址: https://a.passcloud.xyz/dns-query
DOT 地址:tls://a.passcloud.xyz

目前开放 A 节点,保证大陆三网用户可以达到 50-200ms 的解析速度,并使用 iQ 智能云筛选算法,自动从多个上游快速筛选出最快的 IPV4(v6)地址,并返回给终端用户。

目前 iQDNS 维持着一个几十 MB 的 iQ 云缓存 DNS 名单,不用多次请求上游地址,并可根据 iQ 智能云筛选算法,识别你的请求地域(例如你在日本),并返回离终端地域最近(如有日本则日本,未有则获取 Google Maps 计算距离最近)的地址。

并且 iQ 智能云筛选算法目前已上线绝无仅有的云筛选功能,依托 iQDNS 的 iQ 云缓存名单,完美优化大网站、CDN 、跨大洲跨地区的准确 DNS 筛选算法,目前我们针对以上 4 种困难筛选问题,上线了由 submarinecablemap.com 提供的海底光缆数据计算组成的筛选办法,跨大洲 跨地区 CDN 等访问筛选全部依托海底光缆计算距离和多节点 Traceroute 得出。

我们使用 boce 的云路由追踪,还有 checkhost 的路由追踪功能,完美覆盖国内外大量地区。

iQ 云筛选工作算法简单演示如下:

终端用户(江苏)--- 访问 Amazon --- 请求 iQDNS --- 判断用户所在地(江苏) --- 使用云 (江苏节点) 对解析 AMAZON 得到的 CDN 多个节点 进行路由追踪 TCPING --- 得到江苏节点访问最快的 Amazon IPV4 地址 --- 返回给终端用户


iQDNS

本服务仅供测试使用,请勿用于任何生产环境。

本服务是纯净 DNS,但为了保持服务稳定,本服务已经设置了黑名单 屏蔽了对 gov 影响极差的网站。(返回空地址,无污染)不会影响正常人使用,请悉知。

纯公益服务,

本 DNS 保证支持期限为 2 年,即 2022 年 12 月 31 日。(只是保证时效 不是一定关闭)

想通过自动化的手段重启中间件,怎么能判断操作是否成功了?

Posted: 24 Jun 2021 10:15 AM PDT

比如我想基于 ansible-playbook 去做 nginx 的重启操作,核心操作执行的是 systemctl restart nginx,那么我怎么能判断我重启完了 nginx 后 nginx 是运行正常的? nginx 这个中间件和重启这个运维操作都是个例子,运维操作可能是停止、启动、重载配置等等,中间件不只是 nginx,可能是 kafka 、apache 、zk 等等,其实就是在不改中间件源码的情况下,能通过一些外部对中间件的观测手段(进程、端口、日志等等)去判断我的操作是达到预期结果的?我想了一下可能是日志好一些,但是日志报警可能时效性低一些?

我在哪 – 一键向好友分享未来一段时间的实时位置[微信小程序]

Posted: 24 Jun 2021 08:25 AM PDT

最近开发的一款简单易用的微信小程序,它可以让你向好友分享未来一段时间的实时位置。

一键就能开始,放在后台也能持续更新位置,不收集任何用户信息。

微信聊天的那个共享位置退出聊天就会被关掉。

什么时候需要?

  1. 最近网约车又出现各种事情,在上车前一键分享给朋友,给自己和朋友多一份安心。
  2. 小孩子晚上出去玩,家长总是担心孩子的安全,让他分享今晚的实时位置,家长在家就能随时查看。
  3. 女朋友要开车出门,好几个小时不能看手机回消息,你总是担心她的驾车安全,让她出门前分享自己未来几小时的实时位置,确保她的行车安全。

如何使用?

  1. 第一次进去需要打开需要提供位置信息权限,打开"使用小程序期间和离开小程序后"即可
  2. 一键即可分享,自定义分享时长,到时间自动停止
  3. 好友点击分享的小程序直接可以查看你当前的位置和之前的路径

No comments:

Post a Comment