Saturday, September 18, 2021

V2EX - 技术

V2EX - 技术


国内手机厂商最大的软肋就是 android 系统!

Posted: 18 Sep 2021 04:19 AM PDT

试想一下,如果华为 5g 没被卡脖子,现在销量得有多辉煌?!!

我身为国内移动开发工程师中的一员,安卓 ios 和 H5 都干过。

感觉从系统层面来讲 android 的 app 执行效率稍微差一些,但是总的来说都差不多。主要还是国内移动端需求太没节制了,现在新更新的功能完全是为了 KPI 而开发,各种广告,各种恶心人的功能,完全是为了 ppt 好看,讨好资本!但为什么 iOS 稍微强一些呢,主要还是苹果把控严格,有些功能就是不能实现,实现了也不让你上架。

上周让我爸在他的安卓手机上下载一个通行行程卡,结果不知道点了什么,被应用宝下载安装了 13 个 app 。。。应用宝可是 TX 的啊!国内一线厂商的软件啊! 还是这么没节操。。。。

果断给我父母还了苹果手机!!!(虽然是旧款,单完全够用)

GO 语言中神秘的函数传参问题

Posted: 18 Sep 2021 04:15 AM PDT

首先展示一下代码:

package main  import "fmt"  type Obj1 struct {  }  type Callback1 func(interface{}) type Callback2 func(*Obj1)  func handle1(a int,fn Callback1)  { 	//do nothing }  func handle2(a int,fn Callback2)  { 	//do nothing }  func logic(o *Obj1) { 	fmt.Println(o) }  func main() { 	handle1(1,logic) 	handle2(2,logic) }  

为什么 handle1 函数会编译不通过,interface{}不是可以代表任意类型吗?

如何比较方便的杀死 nohup 起的进程及其所有子进程?

Posted: 18 Sep 2021 04:07 AM PDT

主控程序是一个 shell 脚本(如main.sh),里面会启动一下子进程. 直接执行时, 可以用kill -- -PPID(主进程号前有个负号)的方式杀掉主进程和所有子进程, 但发现用 nohup 启动主进程的话, 用这种方式失效了, 提示 kill: (-7228) - No such process (7228 是main.sh的 pid). 求助, 如何比较方便的杀死 nohup 起的进程及其所有子进程? 网上查了不少资料,但没有找到特别方便的方式.

Vue 有办法把一大段 html 代码定义为一个变量吗?

Posted: 18 Sep 2021 04:06 AM PDT

<template>     <package v-if="a">         <same-node>             <lots-nodes />         </same-node>     </package >     <same-node v-else>         <lots-nodes />     </same-node> <template> 

</lots-nodes /> 这里有很多个 elements,这样就有很大一段重复了,有什么办法解决吗?

可重入锁 RenentrantLock 是必不可少的吗?

Posted: 18 Sep 2021 03:51 AM PDT

递归调用场景下,可以直接把锁提到最外面来避免死锁。
我能想到的另一个重入锁的场景是,一个函数需要加锁但无法保证调用者是否已经占有锁,可能占有了锁,也可能没有占有锁,不可重入锁则函数需要提供两个变种,重入锁只需要提供一个就行了。
Go 的 Sync.Mutex 是不可重入的,而且也没有提供可重入的锁。Java 中,可重入锁似乎是必须的,Java Concurrency in practive 书中讲可重入性时举了这么个例子:
https://imgur.com/yDpZTfH
在我看来,这是继承带来的耦合导致不得不使用重入锁来解决这个问题。
我感觉可重入锁并不是必不可少的,请大家指点一下。

有办法在 root 后的安卓设备上面运行 OpenWRT 吗?

Posted: 18 Sep 2021 03:51 AM PDT

主要是想要用广告屏蔽和网易云音乐解锁之类的功能
代理跑在上面也可以
不知道有没有试过的
感觉可以用 docker 配置网卡,自己弄桥接。但是安卓上面没有试过,也搞不清楚那么多个网卡到底是什么回事

现在安卓用 Xposed 有什么好的方案吗?

Posted: 18 Sep 2021 03:43 AM PDT

有几年没弄这些东西了,之前用的是 VirtualXposed 和太极,发现现在这 2 个东西都不怎么更新了,太老了
昨天在弄太极阳,但是有很多 bug,magisk 模块刷进去还搞得手机的音频方面有很多毛病(有时候只能是最大的声音,有时又没有声音,有时是正常的,每次开机都不一样)
声音的问题,我是刷了 XDA 上面杜比音乐的模块,刷了之后手机只能最大声音,所以又想办法卸载了,之后手机的声音就时好时坏
手机是 mix2s

关于 Linux 的虚拟应用解决方案求教

Posted: 18 Sep 2021 03:35 AM PDT

有没有大佬有用过 LINUX 下的虚拟应用啊,linux 桌面系统下好多 WINDOWS 软件没有。本地装虚拟机,在消耗本机资源不。云桌面又太消耗服务器资源了。有没有像瑞友天翼这样的 WINDOWS 服务端+LINUX 客户端的虚拟应用解决方案呀

rebase 还是 merge?

Posted: 18 Sep 2021 03:31 AM PDT

大家在项目里合并代码是用 rebase 还是 merge ? 两个远程分支合并,用 merge 会产生一个无意义的提交,次数多了分支线就很乱。

最近发现了个宝藏 Web 框架 SolidJS,有种未来的感觉

Posted: 18 Sep 2021 03:00 AM PDT

https://www.solidjs.com/

最近几年都在写 React Hooks,越来越发现这货其实缺点和优点一样多,视图函数一有变动就重新运行一开始我是拒绝的,后来被洗脑后勉强认为是个合理的符合逻辑的行为并愉快地写了二年,但还是时不时会被这个底层行为搞得有点烦燥,对 React 算是脱粉了

当然替代是有,Vue 版 Hooks 就不会无休止地重运行函数,但是不知道为什么对 Vue 喜欢不起来(比如不喜欢有模板功能,虽然可以不用但眼见着烦

svelte 又是另一种,不过出于对用编译器魔改 JS 的这种重手段来搞框架这种莫名其妙的心结对这个框架喜欢不起来,编译出来的东西又看着又太屎了

昨天把玩了一天 Solid,相当喜欢。这个框架也和 svelte 不用 VDOM,号称可以精细更新 DOM 性能无敌不做无用功。 当然性能不是我最主要的关注点,主要是这货 API 类 React 但它的视图函数不会重复运行,而且因为不用 VDOM,操作的对象直接就是真实 DOM Element,感觉接地气多了(比如视图返回一个<div ...>,它返回不是一个 React element 而是真.HTMLDivElement )

另外虽然也用的 JSX 语法,但确实也是用编译器的不是用原本的 JSX 转换语义。但转出来的东西比 svelte 易读多了。

总之,优点是优能极高,API 类 React Hooks 且简单(至少概念比 Vue 少),视图不会重复运行。 大缺点暂时没发现,发现几个小缺点,比如因为 Reactive,变量不象 React 是普通的变量而是加料的,用的时候要加(),操作几个复杂变量如 props,children 要用它提供的 helper,不过只是开发时的规则习惯就好了,不是 React Hooks 这种运行时的无法避免的缺点。

关于 Raft Consensus Algorithm 的疑问

Posted: 18 Sep 2021 02:51 AM PDT

最近在看 Raft Consensus Algorithm 相关资料,在Distributed Consensus with Raft - CodeConf 2016 - YouTube中,他说"At most one winner per term"。但是怎么避免下面的情况发生呢?

假设一共有 3 台机器,一开始大家都是 Follower,m1 得到大多数投票成为 term 1 的 Leader,但是其它机器还处于 term 0 。接下来{m1}和{m2, m3}隔离了,m2 得到大多数投票又成为 term 1 的 Leader 。会发生这种情况吗?如果不会的话。Raft Consensus Algorithm 是怎么避免的?

相关资料

看 Ribbon 轮询的负载策略源码中,循环获取可用服务,使用了 Thread.yield()有什么用意?

Posted: 18 Sep 2021 02:25 AM PDT

while (server == null && count++ < 10) { // 省略。。 if (server == null) { /* Transient. */ Thread.yield(); continue; } // 省略。。 }

看代码应该是 9 年期,难道只是出让一次机会给别的线程执行?

如何优化 Go 频繁的读文件导致的调度开销

Posted: 18 Sep 2021 01:26 AM PDT

现在需要对一个文件频繁的读,没有写,文件大小在 100-500G 左右,有顺序读,有随机读。 现在是读取次数太多陷入 syscall 太多然后导致调度占用时间变多,大佬们这种如何优化。

跨语言接口强约束有没有什么好方案?除了 google probuf 之外

Posted: 18 Sep 2021 12:28 AM PDT

和别人交流时了解到了一种做法:他们使用 grpc 来约束服务之间互相调用的接口,protocol 文件单独写在一个 git 仓库里,其它的项目都引用这个项目作为子模块,编译后生成对应语言的调用接口和数据结构。这样接口定义就能同时约束客户端和服务器,因为是强类型约束,一旦接口数据结构变动就会通过 protocol 文件让客户端和服务器都感知到。

这个"能够跨语言让客户端和服务器之间的数据交互被强约束"思路我个人是很认同的,平时开发时也经常遭遇服务端改了数据却忘记通知客户端的问题。

但是我进一步观察后认为为了用 protocol 文件,而上 grpc 是不值得,grpc 的联调非常麻烦远不如 rest api,我明明只是想用数据强约束,但是 grpc 并非是我必须的。本质上我们互相传来传去的也不过是一段 json 而已。

那么有更好的办法能实现这种服务端和客户端之间互相能够感知到改变的数据接口强约束吗? json 就没有解决方案吗?另外 GraphQL 就不要谈了,这东西的成本比 grpc 还高,中小型公司你还能看到 GRPC,GraphQL 我只在大公司就认搞过。目前还是希望能够继续得到 REST API 使用和调试的遍历性

vercel 如何关闭旧的构建产生的域名?

Posted: 18 Sep 2021 12:02 AM PDT

google 了很多次没有看到类似问题的解决方法,来求助一下 v 友们

如题
在 github 每次 push 之后 vercel 都会对这个 push 自动分配一个*.vercel.app 格式的域名,
我已经设置了自定义的域名,可以通过我自己的域名访问,
但是 vercel 对每次 push 自动生成的域名仍然存在,类似于保留了很多旧的副本,
我只想用我自己的域名访问,不需要诸如*.vercel.app 的旧的域名,有 v 友知道怎么解决吗?

Linux 执行一段 shell 命令加与不加 nohup 到底有什么区别?

Posted: 17 Sep 2021 11:22 PM PDT

请教 Linux 大佬、运维大佬,标题中的问题。下面我先抛砖引玉。

nohup 英文全称 no hang up (不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。 nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

以上来自 https://www.runoob.com/linux/linux-comm-nohup.html

执行一个 java 程序,使用命令 1 或 2

  1. java -jar xxx.jar >> ./xxx.log 2>&1 &
  2. nohup java -jar xxx.jar >> ./xxx.log 2>&1 &

问题 1:

我使用命令 1 执行的程序,在退出终端之后,进程依然很好的存活着啊,nohup 的真正作用是什么?

问题 2:

>> ./xxx.log 这个 >> 跟文件之间需要空格吗?还是有没有空格都一样,我经过测试似乎是一样达到目的的。我知道 > 是直接覆盖, >> 是追加到文件(如果之前文件存在且有内容)。

谢谢彦祖们。

高回报寻会熟练搭建 PCDN 的技术大拿,长期稳定

Posted: 17 Sep 2021 10:09 PM PDT

二次创业,目前人在帝都,寻会熟练搭建 PCDN 的技术大拿,项目很简单,产品平时大家都会用;资金也不是问题,有会搭建这个的技术,可以私聊,或者见面聊聊都可以;最近会经常跑外地,有在 027 地区的也可以见面;长期高回报

h2database 最近一版还是 2019 年更新的,似乎热度也不怎么高

Posted: 17 Sep 2021 09:04 PM PDT

求推荐 java 用的,嵌入式数据库

poetry 试图解决 Python 世界里的什么难题?

Posted: 17 Sep 2021 08:05 PM PDT

前段时间想发布个 Python 包,被 4 个文件给搞头痛了,感觉术语和工具多如牛毛,不知道该怎么弄好,有点自我怀疑了。

最近才知道这个问题不仅是新手们都很头痛,就算是老手,搞起来也是很复杂的,实在太麻烦了!

poetry 试图终结 Python 世界中依赖和环境管理的乱象。

这篇文章对背景和它大概的功能用法介绍得很简洁全面。

Package Python Projects the Proper Way with Poetry

redis 如何实现 [每次访问 key 后自动延长 key 的过期时间]

Posted: 17 Sep 2021 07:27 PM PDT

大佬们 redis 自身有这个实现吗?还是说要自己实现?我用 springboot-redis 的 redisTemplate 的。谢谢!

无依赖实现一个简单的 SASS 编译器

Posted: 17 Sep 2021 07:11 PM PDT

在线 demo

功能:模块化,变量,嵌套,继承,@mixin,插件系统,SourceMap 生成等;

源码

图片识别软件 OCR,哪个最好 免费开源的

Posted: 17 Sep 2021 12:47 PM PDT

谢谢大佬

React 数据请求库 SWR 发布 1.0 正式版本

Posted: 17 Sep 2021 12:03 PM PDT

项目地址: https://github.com/vercel/swr
中文文档: https://swr.vercel.app/zh-CN

SWR 是一个轻量且便捷的 React hook 数据请求库,基础功能仅一行代码:

import useSWR from 'swr'  function Profile() {   const { data, error } = useSWR('/api/user', fetcher)    if (error) return <div>failed to load</div>   if (!data) return <div>loading...</div>   return <div>hello {data.name}!</div> } 

自带了请求去重、错误重试、缓存、轮询、分页、页面聚焦自动重载、服务端渲染( SSR/SSG )、Suspense 、React Native 支持 等等功能

1.0 版本变化

  • 更轻量:在没有删除任何现有功能的前提下,
    • 核心减小 41%(压缩后为 24%,3.9 kB )
    • 安装包减小 52%
    • 改进 tree-shaking
  • 支持预加载的数据作为 fallback:对于服务端渲染、静态渲染等场景有更好的支持
  • 支持 immutable 模式:可定义数据为 immutable,不重复请求
  • 中间件( middleware )支持:多种场景扩展(示例
  • 自定义缓存提供层:持久化、离线、测试等场景(文档

详情请阅读 1.0 版本博客文章: https://swr.vercel.app/zh-CN/blog/swr-v1

后续版本计划


欢迎给 SWR 提供贡献和建议: https://github.com/vercel/swr 或留言!♥

练手撸了个 Let's encrypt 的 SSL 证书签发服务

Posted: 17 Sep 2021 11:42 AM PDT

从前几年开始念博士开始,由于可支配时间严重下降,自幼的编程小爱好严重荒废

最近念博后,由于课题进度不顺利,突然有时间了,突然想重新练习练习技能,就又开始撸撸代码

洞中方一日,世上已千年,感觉这几年世上的技术进展不小呢,让本就渣渣的我,更显生疏了

计划做一系列比较实用的小工具,通过实际的开发和维护来练手,首先从免费 SSL 证书签发服务开始

魔改了 Lego 开发了整个 Golang 的后端,对接了 Let's Encrypt 的 ACME 协议接口;前段用 antd 那一套简单撸了下

正如大家从下面链接看到的,我的前端能力就是渣渣,接下来通过继续开发继续来学习锻炼吧

上网址:

https://www.fmread.com/ssl

接下来 TO DO:

  1. 优化前端界面
  2. 完善后端 log 收集及处理
  3. 故障建议反馈(小工单 /用户交流群)

Flutter 复刻经典折叠卡片效果(Folding Cell)

Posted: 17 Sep 2021 10:16 AM PDT

用 Flutter 实现一个经典的折叠卡片效果,教程较长,分了三集

B 站链接: https://www.bilibili.com/video/BV1464y1a7eF/

V 友们轻喷

想问问大家, sourcetree 如何 rebase 呀?

Posted: 17 Sep 2021 09:58 AM PDT

对 rebase 一知半解的,sourcetree 是否可以帮忙提高一些效率或者降低一些学习成本?

win10 的键盘连发速度太快了吧

Posted: 17 Sep 2021 08:09 AM PDT

长按删除键,瞬间删除了好几页?
然后还要 ctr z 弄回来。
设置里面设置连发速度也没任何效果,真不知道这是什么 bug,没人遇到吗?

springboot + tomcat 的自带 gzip 压缩功能,最小压缩阈值不生效

Posted: 17 Sep 2021 06:08 AM PDT

springboot2.x + 内嵌 tomcat 组合,开启压缩功能。

期望当响应大于 2KB 时进行压缩,当响应小于 2KB 时无需压缩。

配置参数

server.compression.min-response-size=2KB  

不生效,仍然将小于 2KB 的响应压缩了,这样会导致越压缩越大。

为啥这个参数不生效呢

No comments:

Post a Comment