Thursday, June 17, 2021

V2EX - 技术

V2EX - 技术


github actions 居然是能扩容的,

Posted: 17 Jun 2021 06:14 AM PDT

最近在学 webrtc,由于网络问题本地折腾两天才打出 demo,突然想在 github actions 上面试试自动编译,

查了下 webrtc 官方说要 16G 空间,我实际感觉起码需要 30G 空间,而 github actions 只有 14G 空间,看起来不够,但是够的,

有人专门写了个处理,实测可以给 actions 腾出 53G 的空间,
easimon/maximize-build-space

一番调试后就写出了个 actions 配置,自动下载编译 android arm 的 demo apk 安装包 AppRTCMobile,
AppRTCMobile.yml

Imgur

关于用 pip .whl 安装预编译的可执行文件的踩坑

Posted: 17 Jun 2021 06:14 AM PDT

TL; DR: setup.py 里的 data_files

之前写了个包,核心部分是用 Go 写的一个独立可执行文件。因为不想碰 C extention 那套机制,所以采用了独立可执行文件与 Python 主进程 Unix Domain Socket 通信的方式。这样,通过 PyPI 分发包的时候就需要安装时将那个二进制文件放在用户 bin 目录下。

上网查出来的方案都是在 setup .py 里用 package_data 保留文件,然后用 cmdclass 里安装时的 hook 来执行安装后移动文件的命令。于是我按照这个方式硬写了个,还得手动检测路径(sys.prefix--user 什么的)。本地从源码安装测试是行得通,但用 wheel 文件安装时,那个 hook 就不执行了。又不优雅又不方便🤷‍♂️

我就去看看 setup .py 的文档,还真就找到了 data_files 这个用来在安装后放置文件的选项。可以通过这个将文件放在用户指定的安装 prefix 下,所以我的问题加一行设置就解决了 data_files=[('bin', ['path/to/my/binary',]),], (会在安装后将 binary 放在 {prefix}/bin/ 上)。

不过话说回来,这个预编译的 Go 可执行文件并不跨平台(我这个包本来是只针想对 Linux 平台开发的),而这样一番操作下来得到的是通用的 wheel 文件,总感觉不怎么严谨。之前写 cython 拓展的时候做过 manylinux 的 wheel,不知道这种不涉及 C extention 的怎么搞?

对于 spring web 应用, jvm old generation 是不是应该设置小一点比较合理?

Posted: 17 Jun 2021 06:00 AM PDT

比如 Xmx4g , old generation 应该 512m 就够了?
看网上很多都说建议 1 比 1. 像 web 应该,持久化的对象应该不太多吧?有点疑惑.

如何定义`重复造轮子`

Posted: 17 Jun 2021 05:59 AM PDT

本人 从前端 转 运维 转 后端

现在对微服务治理组件非常感兴趣

如:

配置中心管理  服务的发现  远程调用  负载均衡  Api 网关  等 

开发给我带来的成就感是有人使用我用的东西

现在后端的生态尤其是 Java 太太太牢固了

从设计到研发并达到生产级别这条路可能要坚持个几年

还是说躺平是最好的选择

但是我不甘心,不甘心不断的学习别人框架太被动了

主动向老板提需求,结果被狠批。。。

Posted: 17 Jun 2021 05:45 AM PDT

我是做可视化编辑器的前端工程师,新入职一家广告公司,发现公司的产品文案等运营内容全是在代码里写死的,每次改动都得要运营整理好文档再交给开发来修改。
我有意改进这一块,公司有一个运营后台,我想在运营后台加几个表单,弄个富文本编辑器,然后让运营人员自己去填写内容。
我把想法告诉了老板,希望他帮忙协调一下开发人员,结果老板把开发、产品、测试叫到一起,非实名的对我的想法一顿狠批。。。

------------------ 补充几个点
1. 公司在项目冲刺阶段
- 意思就是我提的问题不重要,先把公司需求完成(其实我觉得不矛盾,冲刺期过了再完成也 OK,我只是把想法提出来

2. 后台动态推送不安全
- 老板害怕运营瞎改,玩火自焚(其实我有提到内容审核,而且目前的消息通知、官网文章都是通过运营后台推送的,我不理解为什么产品文案就不能通过后台推送

3. 心情很不爽,希望大家可以指点一下

c++从入门到程序开发时间

Posted: 17 Jun 2021 05:44 AM PDT

从是 java4 年,现在想学习 c 艹,大概需要多久差不多能开发啊,以前接触过 c,但是都忘了

在 django orm 里面加上权限控制

Posted: 17 Jun 2021 05:34 AM PDT

需求是这样的:
我需要对一些资源(其实就是一些 model 表)的权限做一些限制.
但是这些限制无法直接加在 api 上.
譬如关联表啊 什么的. 需要考虑的情况比较复杂.


所以我在想能不能 在 model 和 manager 上做文章. 譬如 model.objects.filter(**kwargs) 的时候报错 instance.save()的时候报错.

自定义 当然没问题.

我的问题是, 都有哪些 orm 的 api 会动表数据啊. 这就比较难受了. 不太好统计啊.


各位大佬可有良策......


谢谢大佬.

Win10 的 WSLg 能否完美替代 Linux 下日常开发?

Posted: 17 Jun 2021 05:00 AM PDT

我之前一直是在 linux 下开发( go/node/python/java 都有,但不涉及机器学习这种需要显卡的开发),积累了大量的 shell 脚本、工具链、程序、配置等,日常使用 vs code 或者 jetbrains 开发。

这么多年了,linux 的图形界面的稳定性一直挺烂的,但考虑到其生态系统与命令行的强大,一直忍了下来,偶尔桌面崩溃,或者图形界面的 bug 啥的,倒也可以忍受。

直到最近几个月常常需要远程桌面办公,linux 下就没一个好用的远程桌面,效果比微软自带的 RDP 差远了,这件事促使我决定迁移到 win10 。

虽说很多软件与编程语言的工具链,有 windows 原生版本,但我基本不考虑,只考虑 wsl,一来,我原先在 linux 下积累的大量的脚本、程序、配置,不想再重新搞一遍,二来,原生 win 下,win 的路径分隔、win 系统对 utf8 的支持烂,这些对编程并不友好。

想问问,目前阶段,WSLg 能否完美替代 Linux 下日常开发?运行 vs code 或者 jetbrains 的图形界面,运行各种编程语言的工具链,性能跟原生 linux 比,能差多少?

请教一个数据库表设计的问题

Posted: 17 Jun 2021 04:57 AM PDT

项目要实现一个授权功能,分为对用户授权和对组织授权,对组织授权同时会对组织下所有用户授权。 最简单的想法是一张用户授权表,一张组织授权表和一张组织用户对应表,但这样会有两个问题,一是在更新组织用户的时候要么就增量式更新,速度很慢;要么就删除后重新插入,频繁读写 IO 负荷会大。二是查询用户是否有授权的时候同时会去查他的组织的授权情况,这样复杂度会到组织数 x 组织授权记录数,效率也很低。有什么好的方法能改进这个情况,谢谢。

Java on Visual Studio Code 的更新 – 2021 年 5 月

Posted: 17 Jun 2021 04:50 AM PDT

欢迎来到 5 月的 VS Code for Java 更新。这次,我们将与您分享 Java 格式化设置编辑器和其他很酷的功能。开始吧。

Java 格式化设置

今天,在 VS Code 上更改 Java 格式化设置需要您浏览包含数百个选项的 XML 文件,更改该文件,并在无法预览更改的情况下应用到您的项目。此过程繁琐且容易出错。为了解决这个问题,我们引入了 Java 格式化设置编辑器(Java Formatter Settings Editor). 编辑器对格式化选项进行了分类,并且可以预览更改。

要启动编辑器,请单击 Ctrl+Shift+P 打开命令面板(command palette),然后在面板上键入" java: open java formatter settings with preview",并运行命令。更改后,右键单击编辑器选择" Format Document",或在命令面板上键入" format document"并运行命令以将更改应用于您的项目。

从源文件生成测试

在 4 月的更新中,我们介绍了从测试文件自动生成测试方法模板。5 月,我们进一步开发了该功能,现在您可以直接从源文件生成测试文件和测试方法模板。您可以右键单击源文件编辑页面,选择" Source Action…",然后选择" Generate Test…"来生成。

其他

  • 在 launch.json 文件中配置 classPaths 和 modulePaths 参数。参数支持以下预定义值:
    • $Auto – 自动计算当前项项目的 classpaths 或 modulepaths 。这是默认选项。
    • $Runtime – 添加运行时范围的 classpaths 或 modulepaths 。
    • $Test – 添加测试范围的 classpaths 或 modulepaths 。
    • !<path> – 从 classpaths 或 modulepaths 中剔除 path 。

  • Jupyter Notebook 是一个开源项目,允许您创建和共享包含实时代码、方程、可视化和叙述文本的文档。它在学习程序语言、数据分析和机器学习等方面非常受欢迎。如果您有兴趣在 VS Code 上将其用于 Java,请按照说明进行操作。

更多信息

请不要犹豫,尝试一下!您的反馈和建议对我们非常重要,将有助于将来塑造我们的产品。

跨越 7 年的 long long ago

Posted: 17 Jun 2021 04:47 AM PDT

大概 2013 年前后看 C Primer Plus 的时候,出于对 printf 函数原理的理解,写下了下面的代码(ago 变成了 verybig)

#include <stdio.h> int main(void) {     long long verybig = 12345678908642;     printf("%ld %ld", verybig, verybig);     return 0; } 

7 年前的输出:

1942899938 2874 

7 年后的今天的输出( gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) ):

$ gcc test2.c -o test -g && ./test                                       test2.c: In function 'main': test2.c:5:15: warning: format '%ld' expects argument of type 'long int', but argument 2 has type 'long long int' [-Wformat=]      printf("%ld %ld", verybig, verybig);              ~~^              %lld test2.c:5:19: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'long long int' [-Wformat=]      printf("%ld %ld", verybig, verybig);                  ~~^                  %lld 12345678908642 12345678908642%    

我已记不清 7 年前用的是什么编译器了,C Primer Plus 书中写的 printf 从右至左压栈却依稀可见~

7 年后的解释可以参见: https://blog.iret.xyz/article.aspx/printf_magic_float

难不成 7 年前 printf 是把所有参数都压栈,7 年后是整型和浮点型存寄存器,其他压栈?

如何看待自主研发国产 monyhar 浏览器及 monyhar-lite?

Posted: 17 Jun 2021 04:27 AM PDT

PHP 高并发日志丢失问题

Posted: 17 Jun 2021 04:18 AM PDT

我使用的 thinkphp5.0 框架,发现有时候某一个时刻的日志丢失了,但是数据库更新都是正确的。而且我自已封装的日志函数也存在日志丢了的情况,我是否设置文件锁的方式写日志呢,比如flock($fp, LOCK_EX),有什么办法可以解决日志不丢失的做法

function log($folder = 'debug', $msg)     {         $path = LOG_PATH . $folder;         if (!is_dir($path)) {             mkdir($path, 0777, true);         }         $filename = $path . '/' . date('Ymd') . '.txt';         $content = date("Y-m-d H:i:s") . "\r\n" . print_r($msg, 1) . "\r\n \r\n \r\n ";         if (!is_file($filename)) {             touch($filename);             chmod($filename, 0777);         }         file_put_contents($filename, $content, FILE_APPEND);     } 

在公司如果长期干苦活/脏活/累活,对自己的职业前途有没有什么影响

Posted: 17 Jun 2021 04:06 AM PDT

  1. 维护老项目
  2. 前 /后端 /运维测试哪缺人就顶上
  3. 研究冷门 /偏门技术
  4. 解决疑难问题

如何封装 HTTP 接口, 供 Java 程序方面的使用?

Posted: 17 Jun 2021 03:58 AM PDT

现在俺有一个第三方服务, 提供的是 HTTP 接口. 俺自己的服务是 Java 写的.
如果直接使用 HTTP 相关库来调用吧, 好像好啰嗦, 好麻烦. 要是调用 HTTP 接口, 就是调用原生接口那样就好了.
俺想封装一下, 有什么什么好的工具呢?

俺听说过 feign, 这玩意能做这事不?

redis 的 spop 方法和 lpop 方法的性能差别为何如此巨大

Posted: 17 Jun 2021 03:53 AM PDT

需求背景大致就是需要从一堆数据中随机取出一定数量的值。 目前做了两种测试: 1.将 N 个数据打乱后 lpush 进 redis,之后循环 lpop 。 2.N 个数据 sadd 进 redis,然后 spop 出 N 个值。

写了一个测试方法,发现这两种的性能差距巨大,数据量几千上万的时候这很正常。 但是哪怕只取一个值,lpop 也需要 60ms,spop 只需要 4ms 。差别也很大。 所以这背后的性能差距在什么地方?

后来我还试了 lindex 和 srandmember,也差不多要这么多时间。

请各位大佬指教

int batchSize = 1; long startTime = System.currentTimeMillis(); for (int i = 0; i < batchSize; i++) {         redisService.lpop(key); } System.out.println(System.currentTimeMillis() - startTime);  long startTime2 = System.currentTimeMillis(); redisService.spop(setKey,batchSize); System.out.println(System.currentTimeMillis() - startTime2); 

有偿 1000 元解决 Github 上一个 Wayland issue

Posted: 17 Jun 2021 03:22 AM PDT

issue 地址

付款方式:PR 提交后打款

1000 元很少,远远低于你付出的劳动,可是我现阶段的确没赚到什么钱,虽然已经付出很多劳动。后续可以保持长期合作,或者入伙,已经拿到几个投资意向,后续会有更多投资人找上门的。如果你有兴趣,尚存开源热情,请邮件或者discord联系我,这个项目比较复杂,不适合初学者。非诚勿扰。

Windows 的祖传屎山代码里到底还有多少东西依赖 IE 内核?

Posted: 17 Jun 2021 02:42 AM PDT

从 95/98 的 Active Desktop 开始,微软就把自己绑死在 IE 这座屎山上了。

有老哥搞过 gerrit 双活吗?

Posted: 17 Jun 2021 02:08 AM PDT

打算从 gerrit 一主一从,本地 ssd

改成

双 master+双 slave,nfs 共享存储

基本功能实现了

但是用官方的 high-availability 插件和 nfs

clone 和 web 访问性能下降都有点多啊

有老哥有经验怎么优化吗?

ღ( ´・ᴗ・` )比心

chia 离线签名来啦

Posted: 17 Jun 2021 01:56 AM PDT

有没有类库/项目等的设计指导或者规范之类的东西?

Posted: 17 Jun 2021 01:48 AM PDT

请教小体量项目已读服务解决方案

Posted: 17 Jun 2021 01:18 AM PDT

网上关于已读服务的资料较少,主要找到以下两个解决方案

1.知乎的已读服务,使用分布式架构,HBase 等工具存下所有的阅读记录进行碰撞

2.使用布隆过滤器,为每个内容或每个用户创建一个布隆过滤器

小体量的项目中,第一种方案过于庞大,需要消耗很多机器,第二种方案由于内容和用户相对稀疏,为百万级的用户每人创建一个布隆过滤器内存消耗相当的大( redis 方案得全部放进内存)

请教有没有适合小体量的解决方案。

脚本算法求解,备份轮替

Posted: 17 Jun 2021 01:04 AM PDT

磁盘有 30Gb 的容量,有一份数据要进行备份,假设每天备份的容量是 1Gb,备份 30 天后磁盘空间满了,在后面每天都新增备份的情况下,要进行轮替,删除旧备份
轮替规则是最近 10 份数据每天 1 份,最近的 11-20 份数据每 2 天 1 份,最近的 21-30 份的数据每 4 天 1 份
如何编写脚本,python 或者 shell

请教: GO 编译器是如何判断某变量声明但未被使用的?

Posted: 17 Jun 2021 01:01 AM PDT

各位彦祖们,请问在 macos 中如何使用 ctrl+insert 复制 && shift+insert 粘贴呢

Posted: 17 Jun 2021 12:49 AM PDT

一个 ping 命令问题

Posted: 17 Jun 2021 12:11 AM PDT

一段 ping 命令的执行返回:

[root@node1 ~]# ping baidu.com PING baidu.com (220.181.38.148) 56(84) bytes of data. 64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=49 time=35.9 ms 64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=49 time=67.4 ms 64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=3 ttl=49 time=37.6 ms ^C --- baidu.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 35.947/47.022/67.444/14.457 ms [root@node1 ~]# ping github.com PING github.com (13.229.188.59) 56(84) bytes of data. 64 bytes from ec2-13-229-188-59.ap-southeast-1.compute.amazonaws.com (13.229.188.59): icmp_seq=1 ttl=42 time=121 ms 64 bytes from ec2-13-229-188-59.ap-southeast-1.compute.amazonaws.com (13.229.188.59): icmp_seq=2 ttl=42 time=119 ms 64 bytes from ec2-13-229-188-59.ap-southeast-1.compute.amazonaws.com (13.229.188.59): icmp_seq=3 ttl=42 time=126 ms ^C --- github.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 119.436/122.369/126.585/3.069 ms [root@node1 ~]#  

疑问的是 ping github 的返回中 ec2-13-229-188-59.ap-southeast-1.compute.amazonaws.com 是拿来的,ping 返回的数据格式怎么理解?

有朋友的服务器中了 Buran 勒索病毒。

Posted: 16 Jun 2021 11:56 PM PDT

服务器中毒我觉得蛮厉害了,当然也表明了他公司的安全人员不厉害。说是通过邮件进入了服务器,但是就算是普通的邮件系统,对于可疑附件,都应该有隔离能力吧?

网上搜了一轮,发现这个病毒特性明显,但是却不容易对付。这个病毒对文件进行了加密,用户在乎的肯定是这些被加密的文件,目前好像并没有特别好的办法解密,网上说只能先对这些被感染文件分析之后,才能确定病毒的类型,因为 Buran 也有不少变种,然后再去看看安全公司有无开发出相应的解密工具。没有解密工具,只能尝试硬盘卷影副本恢复。如果都没有,那么就只能自求多福了。

交钱给黑客,那基本上是另外一种被诈骗的办法。各位有什么看法?

想咨询一下大家关于云计算特别是 iaas 这块的看法, 感觉正在逐渐消退

Posted: 16 Jun 2021 11:53 PM PDT

目前楼主在从事这个工作, 但是这几年感觉 iaas 这块儿正在逐渐失去热度, 取而代之的是 k8s 这种 paas, 不知道大家怎么看

尤其是让我感觉有点焦虑的就是,不知道 iaas 会不会逐渐被淘汰

说了这么多其实就是有点焦虑不知道 iaas 这碗饭还能吃几年, 希望行业内的老哥们能畅所欲言, 一起讨论一下

mysql5.7 数据库一共一百个表,需要改 student 表的主键 id,以及其他 50 多个关联表的 student_id,请问什么方案比较合适?数据量几十万

Posted: 16 Jun 2021 11:28 PM PDT

我想的分三步:

第零步,mysqldump 数据库备份一下

第一步,把 student 表的主键 id 改掉

第二步,把关联表的 student_id 用 update table1 set student_id=new where student_id=old 语句改掉

请问这种场景的标准操作是什么?

为什么 groovy 的闭包可以使用 List 传递参数

Posted: 16 Jun 2021 10:33 PM PDT

如下代码,定义一个闭包接受两个参数,传递参数时可以传递 size = 2 的 List 作为参数, 使用 length = 2 的数组不可以,使用 size = 2 的 Set 也不可以。

      @Test     void test2() {          def closure = { a, b -> a == '1' ? b.toUpperCase() : b.toLowerCase() }          List param1 = ["1", 'AbCd']         assert 'ABCD' == closure(param1)          String[] param2 = ["1", 'AbCd']         assert 'ABCD' == closure(param2)  //数组不可以              }    

翻看文档未找到相关介绍,那为什么可以使用 List 呢?,求教,多谢

当然 Groovy 支持 使用*List 的方式,将 List 展平作为参数,这里我并没有使用星号

JPA 与 MyBatis 混用时的事务问题

Posted: 16 Jun 2021 10:23 PM PDT

代码大概是这样的

@Repository public interface GroupDao extends JpaRepository<Group, Integer> {     // ... }  @Transactional public void test(Integer userId, Integer groupId) {     if (isJoin()) {         groupDao.saveAndFlush(new Group(userId));     } else {         groupDao.deleteByUserIdAndGroupId(userId, groupId);     }     System.out.println(groupMapper.getUserCount(groupId));// mybatis     System.out.println(groupDao.countByGroupId(groupId)); // jpa  } 

当 jpa 执行 saveAndFlush 时,两者输出正确。但 jpa 执行删除操作时,mybatis 输出错误,jpa 输出正确。 更诡异的是,如果调换最后两行 mybatis 和 jpa 的输出代码顺序,那么无论执行哪个操作,两者均输出正确。

mysql 单数据源,理论上 spring 应该会自动管理两者的事务,为什么会出现这种结果?

有关日志功能是否严重影响 web 框架效率?

Posted: 16 Jun 2021 09:57 PM PDT

发主题的时候主要想法是局限在 python 的异步框架,不过也很好奇其他语言的框架都用什么解决方案,所以标题里没有写明是 python 。

问题简单来说,我们都知道 python 的 IO 流,例如常见的 print,是一个同步阻塞操作。而目前网络端的解决方案在向异步非阻塞转移,比如 fastapi/aiohttp 这类框架,转移的同时,日志又是很重要的一个功能,总不可能一个服务没有日志。这是否意味着框架转发性能将被严重降低,有什么解决方案吗?

Java agent 探针技术有没有推荐的书籍

Posted: 16 Jun 2021 09:50 PM PDT

有没有专门讲探针的实战书籍?

网上搜了一下貌似没有

最近想看 SkyWalking 源码不知道如何下手。。。。

望大佬们指教🤔🤔

不懂就问, ios 上哪个 postgreSQL APP 好用啊

Posted: 16 Jun 2021 08:43 PM PDT

简单好用就行,类似 postico 的。 先谢谢各位

现在还要好用的国内免费 cdn 吗

Posted: 16 Jun 2021 08:28 PM PDT

最近刚刚备案了个网站,准备接个 cdn 加快下速度,也能起到一定的防护作用,大体了解了下,现在主流的 cdn 有百度云加速,创宇云,七牛云,像国外的 cf 就不考虑了,阿里云腾讯云怕被刷把房子刷没了不敢用。
大家都说百度云加速是百度匀减速,但我看了下还不错,支持 ssl 了,问下大家还有推荐的 cdn 吗,最好支持 ssl 和一定的防护,谢谢了

坚定不移的认为,不给程序员配 4K 显示器的公司要远离。

Posted: 16 Jun 2021 05:38 PM PDT

尤其是在 windows 那种马赛克文字渲染环境下!

甚至认为,在非 windows 平台技术优势独占的前提下, Mac 和 4K 显示器是基础标配。

Windows 11 SE 漏出

Posted: 16 Jun 2021 04:08 PM PDT

https://pbs.twimg.com/media/E3_z_uFVkAYJYqN?format=jpg&name=medium
据说是 Windows 10 Cloud Edition 的下一代。只能用云端账号,不能创建本地账号。目测和前面泄露的 Windows 11 是同一个 build 号,界面上看上去也一样的。

没有 Microsoft Store 。

No comments:

Post a Comment