Friday, September 10, 2021

V2EX - 技术

V2EX - 技术


发几个 thoughtworks 澳洲业务线内推坑

Posted: 10 Sep 2021 04:24 AM PDT

澳洲业务线

  • .NET Developer .NET 开发工程师
  • Android Developer 安卓开发工程师
  • Business Analyst 业务分析师
  • iOS Developer iOS 开发工程师
  • Java Developer Java 开发工程师
  • Quality Engineer 测试开发工程师
  • React Native Developer React Native 开发工程师
  • UI Developer 前端开发工程师

base 在西安,不加班,不内卷,六险一金,14 薪 感兴趣欢迎砸简历: lei.miao@thoughtworks.com

Elasticsearch 和 Mysql 数据冗余更新问题

Posted: 10 Sep 2021 04:18 AM PDT

看了官方文档,官方文档提成反规范化设计,并且提供了 4 种方式,最简单不影响性能的就是把有关系的数据掰成扁平化,目前我们系统做了一个自定义字段,考虑数据量大而且前端要做复杂筛选条件,上了 es,存数据时同时操作了 es 和 mysql,查询全部采用 es
插入的时候把自定义和系统字段全部掰成了一份文档储存,那么字段数据更新的时候该怎么办呢,或者有什么更雅的方案嘛,有做个的大佬麻烦给点意见,第一次使用 es

看到某日常 os 对比贴,简单说说我眼中 Windows 目前的四个问题

Posted: 10 Sep 2021 04:17 AM PDT

个人从 win98 开始用,每一代甚至包括 Windows Me 都没有错过,一直用到现在。

个人认为 Windows 目前存在 4 个问题,不讨论别的 OS,也是希望微软能尽快解决,而不是搞什么垃圾 Win8 Win10 Win11 。

1. 中文字体不好看,渲染差。但是随着 4K 的普及好了一些,但是雅黑实在是设计失败的一个中文字体,还不如点阵宋。

2. 软件 UI 风格严重不统一。包括原生应用和系统配置,微软自家应用最起码有五种不同的设计风格。其中最丑的就是 metro 。

3. 除收费的生产力软件外,常用软件完全不思进取,最简单的对 HiDPI 的支持就是参差不齐。

4. WSL 还有些小问题,不过勉强够用。这个其实算一个优点,有 WSL 后,后端开发用 Windows 也很顺畅。

强迫症犯了,求俩 star 凑 500 个

Posted: 10 Sep 2021 03:56 AM PDT

Angular 学起来真是太难了, 国内资料少, 用 G 搜呢,总感觉表达不准确,搜不到好的结果

Posted: 10 Sep 2021 03:52 AM PDT

请教一下大佬们, 我现在有一个情况是这样的,后端我统一 返回格式是:

{   "status": 200,   "msg: "xxx success",   "data": any } 

我想通过 拦截器 或者在 service 里面将 status 判断好了, 给 component 的数据就 仅是上面的 data, 出错就给个 默认值 这样的效果,但我实在不知道怎么实现了, 还请大家指点一二。

Android Automotive 外包岗位有必要去吗?

Posted: 10 Sep 2021 03:43 AM PDT

最近收到外包公司的 offer 是给汽车厂商开发 Android Automotive 应用,查了一下它家同时还做 Android Automotive OS 的 ROM 外包业务。

投过汽车制造商可是简历和面试没过,之前虽然跳槽到了甲方公司,但是开发规模很小,管理稀烂。这回虽然是外包,但是听说是几百人参与的大项目,有多个国家和各方公司人员参与,想问下各位同行这个外包值不值得去?

请教大佬们一个 shell 脚本

Posted: 10 Sep 2021 03:37 AM PDT

应付安全检查,需要创建半年以上的 oracle 审计日志。

oracle11g 审计日志文件:orcl_ora_2417_20210910173104240941143795.aud
日志格式是:orcl_ora_四位随机数字_年月日时分秒+十四位随机数字.aud

想每天生成 10 个审计日志文件,生成半年的日志量,文件创建时间随意。文件名包含了日期,难倒我了,求大佬分享一下 shell 关键代码实现快速生成。

idea 2021.2.2 社区版 + wsl2 卡炸了,开项目很慢

Posted: 10 Sep 2021 03:35 AM PDT

网上冲浪的时候看到说最新的 idea 支持 wsl2 的开发环境,于是装了个最新版,把 wsl1 升到了 wsl2,然后 wsl 里面已经有 java 和 maven 环境了,然后我按网上的建议,把项目代码迁到 wsl 里面开发,发现 idea 非常的卡(开项目建索引),点一下鼠标都卡好几下的样子。我试了把代码和环境变量在 wsl 和 windows 来回迁,都有问题:

( 1 )开发环境、代码都在 wsl2 里面:idea 非常卡,根本没法正常使用。(怀疑跟 wsl2 比较拉的 IO 有关)而且不显示项目目录,只有一个 pom.xml 。我把.idea 缓存删掉之后重开,idea 直接闪退,再开的话就还是没有项目目录。。。。 ( 2 )开发环境在 wsl2,代码在 windows:idea 根本检测不到 wsl2 里面的 java 环境,一直显示 no sdk,手动指定也没用。 ( 3 )开发环境、代码都在 windows (我装 wsl2 干嘛?):wsl2 识别不了 windows 的 java.exe 环境,linux 应该是要二进制的 java 。而且这样就背离了装 wsl2 的初衷。

是不是我哪里没装对啊?

canal 监听数据库会有订阅不到数据变化的情况

Posted: 10 Sep 2021 03:30 AM PDT

不知道有多少人用过 canal 碰巧也遇到过这个奇葩问题

今天做了一天的测试,这个问题遇到的次数不算多,只有 4 次。

怎么触发的都不清楚,log 也看不出来什么问题。包括阿里给的 demo 也有这个问题

手动执行 update sql

mysql> update hello set context='testtest' where id=1; Query OK, 1 row affected (0.02 sec) Rows matched: 1  Changed: 1  Warnings: 0 

然而 canal 监控不到,控制台什么都没输出,甚至是 canal 的 log 里啥有用的信息都没 一开始猜的的是 mysql 空闲时间导致的数据库断连,执行 sql 主库日志并不会有变化,所以 canal 没有监控到主库日志的消费变化,后来发现空闲时间是 480 分钟,并不符合猜想。github 上看了半天工单也没找到类似的问题。

现在生产环境不敢上,还得用老一套的 trigger 来同步。郁闷死了

关于定时器 Timer 与超时 timeout, 操作系统是如何实现的

Posted: 10 Sep 2021 03:12 AM PDT

想了解一些底层的细节

大家有没有一种,用多了搜索引擎感觉自己什么都会的错觉?

Posted: 10 Sep 2021 03:05 AM PDT

我经常有,感觉这个简单那个简单,实际一做,处处碰壁。

一行代码,帮你管理项目的请求

Posted: 10 Sep 2021 03:03 AM PDT

原谅我标题党了😆 ,希望各位看官能花几分钟看一下。

VueRequest

⚡️ 一个能轻松帮你管理请求状态(支持 SWR,轮询,错误重试,缓存,分页等)的 Vue 3 composition API 请求库

Coverage Status Size Version Languages Star Download

为什么选择 VueRequest

在以往的业务项目中,常常被 loading 状态的管理、请求的节流防抖、接口数据的缓存、分页等这些重复的实现所困惑。每当开启一个新项目时,我们都得手动去处理以上这些问题,这将是一个重复性的工作,而且还得确保团队的一致。

VueRequest 旨在为开发者提供便捷、快速的方式来管理接口的状态。在业务开发中省去上述的那些"脏活累活",只需要简单的配置即可使用,专注于业务核心的开发。

特性

  • 🚀  所有数据都具有响应式
  • 🔄  轮询请求
  • 🤖  自动处理错误重试
  • 🗄  内置请求缓存
  • 💧  节流请求与防抖请求
  • 🎯  聚焦页面时自动重新请求
  • ⚙️  强大的分页扩展以及加载更多扩展
  • 📠  完全使用 Typescript 编写,具有强大的类型提示
  • ⚡️  兼容 Vite
  • 🍃  轻量化
  • 📦  开箱即用

文档

安装

你可以通过 NPMYARN 或者通过 <script> 的方式引入 unpkg.com 上的包。

NPM

npm install vue-request # or yarn add vue-request 

CDN

对于生产环境,我们推荐链接到一个明确的版本号和构建文件,以避免新版本造成的不可预期的破坏。

<script src="https://unpkg.com/vue-request/dist/vue-request.min.js"></script> 

一旦你在页面中添加了它,你就可以在 window.VueRequest 中访问我们导出的方法。

示例

<template>   <div>     <div v-if="loading">loading...</div>     <div v-if="error">failed to fetch</div>     <div v-if="data">Hey! {{ data }}</div>   </div> </template>  <script lang="ts"> import { defineComponent } from 'vue'; export default defineComponent({   setup() {     const { data, loading, error } = useRequest(service);      return {       data,       loading,       error,     };   }, }); </script> 

在这个例子中,useRequest 接收了一个 service 函数。service是一个异步的请求函数,换句话说,你可以使用 axios 来获取数据,然后返回一个 Promise。更具体的说明可以在文档中查看。

useRequest 还返回了三个值, dataloadingerror。当请求还没完成时, data 将会为 undefined 同时,loading 将被设置为 true。当请求完成后,则将会根据请求结果来设定 dataerror,并对页面进行渲染。这是因为 dataloadingerror 是 Vue 的 响应式引用(Refs),它们的值将根据请求状态及请求结果来修改。

一些很酷的特性

VueRequest 有非常多的特性,如 错误重试、缓存、分页、节流、防抖...,这里列举两个个比较酷的特性

1.聚焦页面时自动重新请求

有些时候,你要确保多个浏览器窗口之间数据的一致性;又或者是当用户电脑在休眠状态重新激活后,页面的数据需要同步到最新状态时。refreshOnWindowFocus 可能会为你节省很多逻辑代码。点击这里直达文档

const { data, error, run } = useRequest(getUserInfo, {   refreshOnWindowFocus: true,   refocusTimespan: 1000, // 请求间隔时间 }); 

vue-request

2.轮询数据

有些时候,你要确保多个设备间数据的同步更新。这时候可以用我们提供的 pollingInterval 来定期重新请求接口,这样就可以保证多设备间的数据一致性。当用户进行修改数据时,两个窗口将会实时同步更新。点击这里直达文档

const { data, error, run } = useRequest(getUserInfo, {   pollingInterval: 1000, // 请求间隔时间 }); 

vue-request

致谢

感谢他们为我们提供了灵感

仓库地址

https://github.com/AttoJS/vue-request

Node.js 单元测试用啥框架

Posted: 10 Sep 2021 02:48 AM PDT

技术栈:Node.js Express.js MongoDB

业内比较成熟的框架是哪个?

mysql 一个数据不断增长表,现在有百万数据了,每天取出更新的数据中,来进行数据处理,入另外一个库。

Posted: 10 Sep 2021 02:42 AM PDT

1,这个表会越来越大

2,每天可能有几 W 数据更新。

3,偶尔可能停机,然后一次更新几十万,甚至上百万。

这种场景下,我怎么处理数据比较好? 大家有什么好的方案,可以提出来,让我借鉴思考一下,谢谢!

app 挂了大家能帮忙分析下问题吗

Posted: 10 Sep 2021 02:39 AM PDT

今天凌晨 00:30 到 02:00 app 和后台同时挂了

app 接口是三台服务器提供服务,负载均衡。 后台是在单独一台服务器。

mysql 是 1 主 2 从。

看服务器负载均在 20 左右。 只有 mysql 内存占用在 80 左右。

问题在于哪怕是服务器垮了, 但是访问接口应该是 502 或者 504 类似这种, 但是昨天访问域名出现这种

ERR_CONNECTION_TIMED_OUT

请教一个操作日志的问题

Posted: 10 Sep 2021 12:52 AM PDT

现在我们系统 有一个套餐 就是有很多狗选项,可以任意配置一种套餐, 现在有一个需求 需要记录操作日志, 比如取消勾选了某某套餐 就记录开启 /关闭 [ X 模块功能] 一次关闭多个或者开启多个就用分号隔开, 有没有什么好的方法来对比呢 我现在就是把旧值查询出来 和 新值进行对比,前端传的都是全量数据

JDK11 的新 HTTP client API 搭配线程池把我的电脑搞挂了

Posted: 09 Sep 2021 11:48 PM PDT

1.创建线程池

final ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(5);  

2.创建 http 请求

var builder = HttpRequest.newBuilder()                 .uri(URI.create(uri)); HttpRequest request =                     builder.POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8)).build(); //发送请求 HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); 

3.创建任务,丢给线程池

List<CompletableFuture<?>> futures = new ArrayList<>();         for (User user : Users) {             CompletableFuture<?> future = CompletableFuture.runAsync(() -> {                   用上面的 http 请求             }, threadPoolExecutor);              futures.add(future);         }          //等待所有任务完成         final int taskCount = futures.size();         CompletableFuture<?> allFuture = CompletableFuture.allOf((futures.toArray(new CompletableFuture[taskCount])));         allFuture.join();          //关闭线程池         threadPoolExecutor.shutdown(); 

4.User 数是 2000 多,也就是任务数才 2000 多,就把我系统资源爆了,提示不能再继续创建 thread 了,我的 macOS 直接黑屏重启

我寻思我创建的线程池才 5 个,不至于让我的系统挂了吧?那元凶可能是 http 新的 client api 自己再私自创建大量线程,直到耗尽系统的线程资源数?有无大佬指教一下怎么优化?我就想我请求只限制在 5 个线程以内

腾讯云续费有啥优惠么

Posted: 09 Sep 2021 08:55 PM PDT

公司的腾讯云服务器要续费,看了下最优惠是 3 年 5 折,有其他折扣么,谢谢各位

彦祖们,请问怎么把设计模式和数据库存储结合在一起?比如 OA 审批用责任链模式,审批完肯定是要存库的。请问有没有这样的书籍或者资料(不限语言)

Posted: 09 Sep 2021 08:36 PM PDT

如题,

常见的情况是把设计模式单独用代码表示

然而做业务的时候,不可能用不到数据库(或者其他存储)

请问这种情况有没有什么最佳实践,或者开源代码参考??

Python 类中类型提示使用“定义类”提示未定义

Posted: 09 Sep 2021 06:38 PM PDT

如图,最后那个 Card 提示未定义,这有什么解决办法吗

为什么 IDEA 重命名 project 的本地文件夹名字后,里面无法访问同一个包里面的类了?

Posted: 09 Sep 2021 12:12 PM PDT

我有一个 project,里面有 module1, module2,每个 module 里面的 package 都是 com.a.b 这个名字

重命名 project 的本地文件夹,重启 idea,删除.idea 文件夹,再重启

之后,随便打开一个 module 里面的.java 文件,里面用到同一个包里面其它.java 文件的地方都报错说无法访问

把 project 文件夹名字改回去,又好了

敲命令行太慢,怎样能更加节省桥 输入 Linux 指令的时间,求支招?

Posted: 09 Sep 2021 09:37 AM PDT

最近在部署一个 测试环境 和 一个 生产环境。但是,指令行是有速度上限的 [人手敲击键盘 ,电脑的反应时间要算上] 。有没有更快的方式。总觉得现在的工作方式,效率比较低

Nextcloud+对象储存=裸奔?

Posted: 09 Sep 2021 07:38 AM PDT

描述

Nextcloud 在用 S3 之类的 Object Storage 作为 PrimaryStorage 时(config.php 中设置),疑似有重大安全漏洞。 用来储存密钥的 files_encryption 文件夹上传到了 OSS 里,即 files_encryption 不在服务器本地。密钥和加密的文件都储存在同一个地方,加密形同虚设!

此事 2019 年在 github 就开始被讨论,但是讨论的人并不多,最终也没有得到解决。希望大家明白世界上没有绝对的安全。

验证

  1. 在安装 Nextcloud 的时候,如果设置了 PrimaryStorage,那么服务器上不会有 files_encryption 文件夹,反之则有。我用 docker 安装多次验证。
  2. 我查看了 Nextcloud 的数据库(我的是 Postgres )中的 oc_filecache 表,发现路径 files_encryption/下的文件都在 OCC 上。(storage=2)
  3. 找到了 oc_filecache 表中密钥文件所对应的 OSS 文件 key, 并从 OSS 直接下载了对应文件,找到了密钥。
  4. 不知道如何解密所以没有解密,所以没有最终还原文件。

Nextcloud 官方说法

Server Side Encryption provides protection for data on external storage as the files are encrypted before they are sent to storage and the keys never leave the Nextcloud server.

文字游戏还是描述的挺精准的


欢迎大家在此贴下面讨论有关 Nextcloud 的安全性问题,更安全的私人网盘我想另外开贴讨论。

参考

https://nextcloud.com/blog/encryption-in-nextcloud/
https://github.com/nextcloud/server/issues/17561
https://github.com/nextcloud/server/issues/22077#issuecomment-671080056

No comments:

Post a Comment