Saturday, May 8, 2021

V2EX - 技术

V2EX - 技术


我想用 DNSCrypt-pxory 连 alidns DOH, 可是如何设置?

Posted: 08 May 2021 04:10 AM PDT

[static.'alidns']
stamp =

关于嵌套数组去重保留原格式?

Posted: 08 May 2021 03:57 AM PDT

var arr=[[100,200],[111,222],[100,200],[111,222],[100,200],[111,222]];

网上找了个方法
function mapArr(arr) {
let newArr = [];
for(var i=0;i<arr.length;i++) {
if(Array.isArray(arr[i])) {
let dealArr = this.mapArr(arr[i]);
newArr = [...newArr,...dealArr];
}else {
newArr.push(arr[i]);
}
}
let shoArr = [...new Set(newArr)];
let arrs = shoArr.sort((a,b)=>a-b); //a-b<0 升序
return arrs;
}
mapArr(arr); //[100, 111, 200, 222]

只剩一层数组了。 如果能保留原格式的情况下去重? 谢谢!

JS 有什么手段可以判断一个函数是不是原生代码吗?

Posted: 08 May 2021 03:56 AM PDT

比如 XMLHttpRequest,有没有什么手段可以知道这个东西有没有被人为重写?
网站找了不少方法都做不到
下面是我做的一些尝试,这些检测方法都能被绕过

{     function isNative(api) {         return /native code/.test(api.toString()) && typeof api !== 'undefined'     }      let test = function (input, fake) {         console.log("------------------------")         console.log("是否是伪造:", fake)         console.log("toString:", input.toString())         console.log("toString.toString:", input.toString)         console.log("prototype 方法", input.hasOwnProperty("prototype"))         console.log("toString.call","方法",Function.prototype.toString.call(input))         console.log("网传最不靠谱方法:isNative", isNative(input))     }     test(XMLHttpRequest, false)     {         let XMLHttpRequest = function () {             "[native code]"         }         XMLHttpRequest.toString = function () {             return "function XMLHttpRequest() { [native code] }"         }         let toString = function () {             return "function toString() { [native code] }"         }         toString.toString = toString         XMLHttpRequest.toString.toString = toString         Function.prototype.toString = toString         delete XMLHttpRequest.prototype         test(XMLHttpRequest, true)         // XMLHttpRequest.prototype = undefined         // test(XMLHttpRequest, true)     } } 

为什么 xml 中 view 的最大高度是 2^23 -1

Posted: 08 May 2021 03:51 AM PDT

实验观察在 xml 里面给 view 指定高度,最大为 2^23 -1 (再大的话,运行时拿到的高度就是 0 了) 为什么呢,理论上应该是 2^30 -1? 在 Android 10 的模拟器和华为测试都是这个结果

Google Photo6 月就要关闭免费无限空间了,有好的替代方案吗?

Posted: 08 May 2021 03:41 AM PDT

目前是 iCloud 相册(主),Google photo (备),要不要充值呢,还是全部迁移到群呼 moments ?

mobaxterm 传输大文件,有时候进度条停止,怎么解决呢?

Posted: 08 May 2021 03:39 AM PDT

mobaxterm 传输很多大文件的时候,经常进度条停止,这个一般怎么解决呢,感觉是一个 bug, 其他的工具 xftp 之类 winscp 之类传输速度貌似都没有 mobaxterm 快,而且还有乱码问题。

Termux 启动时需要密码

Posted: 08 May 2021 03:27 AM PDT

最近在用 termux,求问,有没有办法在启动 termux 时要求输入密码保护? 手机里放了一些代码,启动 termux 输密码是为了保护代码。手机要给客户使用。 新建用户设密码好像没用。

亲身体验,测试真的太卷了,非引战帖

Posted: 08 May 2021 03:13 AM PDT

测试真的太卷了,作为一个前端莫名其妙来了测试团队, 一群测试抢着你的活干,让你教他……… 做的东西真杂

暑期实习怎么选

Posted: 08 May 2021 03:04 AM PDT

专业是数据库,干活比较多,理论比较差,希望能在这个行业干比较长的一段时间。

一是华为高斯做数据库内核,比较对口,和学校在一个城市,可能可以瞒过老师偷偷去,但是城市所在的组做的东西比较偏门。 二是阿里云做 ETL,一年前做过他们的横向项目,感觉累到吐血,写 java,生态完全不懂,和学校不在一个城市,大概率被老师发现。

怕被拉去打杂学不到东西还和老师关系搞差,希望前辈们能给出指导意见。网上说应届生百分之 80 的岗位都是实习生转正,害怕暑期没去,到时候找不到工作。

请教一下一般网站的目录规划放在哪里

Posted: 08 May 2021 03:00 AM PDT

我现在 python 的代码在服务器上面是放在 ~/code 里面,但是这个有一个问题

~ 这个目录应该无法在挂载了把, 因为我碰到 磁盘空间占满了,需要挂磁盘

难道应该挂载在 ~/newcode 这个目录下面?

还有一个问题,为什么 宝塔 /www 的 owner 是 root 呢,按理来讲不是应该是 www 这个用户的吗

微服务在企业中如何复用?

Posted: 08 May 2021 02:59 AM PDT

背景: A,B 部署环境独立,版本管理是 SVN 。

我们现在有一套 SpringCloud 开发的系统 A,里面有大概有 10 来个微服务。

现在要新开一套系统 B,能复用 A 的 5 个微服务,要复制 A 的 5 个微服务形成一个新系统,再基于这个开发新的业务系统。

这个 5 个微服务包含基础支撑服务,那么这些通用的微服务如何同步更新呢?

我现在能想到的就是:A 的 5 个微服务形成主干,然后每次有新的系统都从 A 分支出来,每次维护完 A,其他分支都从 A 更新,这样所有子系统都最新了。

请问大家有什么好的办法吗?

tcp 的延时是不是 udp 的三倍啊,因为要浪费三次握手才能发数据

Posted: 08 May 2021 02:53 AM PDT

对 tcp/udp 传输理解的不深,突发奇想,这样解释对吗,望大佬来解释一下

请教个 JavaScript 问题

Posted: 08 May 2021 02:50 AM PDT

function bubbleSort(arr, b) {
let newArr = arr.map(v => v),max = newArr.length - 1;
for (let j = 0; j < max; j++) {
for (let i = 0; i < max - j; i++) {
if (newArr[i].id > newArr[i + 1].id) {
let temp = newArr[i].id;
newArr[i].id = newArr[i + 1].id;
newArr[i + 1].id = temp;
}
}
}
return newArr;
}

let arr = [{ id: 4 }, { id: 2 }, { id: 3 }, { id: 9 }];

console.log(arr); // [{id: 2},{id: 3},{id: 4},{id: 9}]
console.log(bubbleSort(arr)); // [{id: 2},{id: 3},{id: 4},{id: 9}]
console.log(arr); // [{id: 2},{id: 3},{id: 4},{id: 9}]

排序 为什么原始的 arr 也被修改了

Swift 为什么设计 inout 关键字?

Posted: 08 May 2021 02:46 AM PDT

从语言设计的角度上看,有什么必要性么?如果像 OC 那样会发生什么情况?

迫于面试要求 Go,请教下各位 Javaer 是否有必要学习 Go,未来职场收益如何?

Posted: 08 May 2021 02:26 AM PDT

本人 Java 工程师,最近换工作,碰到字节和 B 站的后端岗位要求用 Go 。想问问各位 Java 或者 Go 工程师,现在是否有必要去学习 Go,未来职场收益如何?或者说 Go 会不会替代 Java,如果有 Java 转 Go 经验的大佬来谈一谈更好。

以前一直做 javaweb,最近想了解一下网络编程,例如 netty 方向,求问大概的学习方向或路线

Posted: 08 May 2021 02:25 AM PDT

阿里云盘是否存在增加一键转存百度云盘文件(或者其他云盘)的可能性?

Posted: 08 May 2021 02:17 AM PDT

本人私以为阿里云目前优势在于一般会员的下载速度,劣势在于其生态。 目前我自己(或者说绝大部分人)还没有把阿里云用起来的最大原因就是过去很多存量文件还是存放在百度云,对其依赖性还是比较强。

目前最常见的场景是:

网上自主或者身边的人给到一个资源的链接是百度云文件链接,此时阿里云盘还不能很好地切入,所以我在想,后续阿里云盘是否会增加一个一键转存百度云盘文件的功能(其实就是简单利用阿里云的高带宽后台离线下载该文件),转存 /下载完成之后,该文件就存在于阿里云盘的体系中,此时分享、下载都是可以的

不知道这个功能是否存在合规合法性?还是有其他考虑以后不会出现?

一行代码实现申请 Android 应用权限

Posted: 08 May 2021 01:41 AM PDT

就那么简单 源码 https://github.com/cczhr/EPermission

class MainActivity : AppCompatActivity() {     override fun onCreate(savedInstanceState: Bundle?) {         super.onCreate(savedInstanceState)         setContentView(R.layout.activity_main)         requestPermissions()     }      @EPermission(true)//传 ture 会自动申请权限和弹出拒绝权限提示框     fun requestPermissions() {     }       /*  @EPermission//只负责申请权限     fun requestPermissions() {     }      override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {         super.onRequestPermissionsResult(requestCode, permissions, grantResults)         if (requestCode == EPermission.REQUEST_CODE) {             //自己处理权限回调         }     }*/           } 

双机直播如何做传递游戏声音和麦克风信息?

Posted: 08 May 2021 01:15 AM PDT

已经加了 HDMI 采集卡,游戏机器显卡的 dp 输出给显示器,hdmi 输出接采集的机器的 usb-hdmi 采集卡。

目前在游戏机器用的输入设备是 usb 麦克风,输出设备是 usb 音箱

在游戏机器上能看到显卡的 hdmi 的采集卡那路音频输出。

在采集机器能看到这个 usb 音频输入

那么,如何在保证现有游戏机器的输入输出设备不变的情况下,将这两路信号转发给另外一个 HDMI 音频输出呢?

Audio-usb-in Mic-usb-in hdmi-out

这么一个链路。

frp 安全问题

Posted: 08 May 2021 12:58 AM PDT

最近在用 frp 穿透一些服务到外网,大致是这样的,我有一台公网 VPS,有公网 IP,机器性能不行,所以在内网搭建了一些服务,gitlab,minio 这些的,然后将这些 web 服务通过 frp 映射到公网去,通过域名访问的。

这个使用下来,留意到 frp 一直有的安全问题,但是搜了一圈,貌似安全问题都是体现在 frp 穿透了 ssh 服务出去才引起的,像我这种只穿透 http web 服务出去会有影响吗?

我的理解是只穿透 http 服务出去,不会出现安全问题,最坏的情况是,VPS 被攻破,然后他只能访问有限的几个内网 web 服务。

不知道大家怎么看?

开源工作流引擎,有没有可推荐的?

Posted: 08 May 2021 12:20 AM PDT

最近有个项目要用到工作流引擎,大神们有没有用的比较好的推荐一下,目标就是能实现类似钉钉中的流程定制功能

一个开发者优先 (developer-first) 的布局引擎

Posted: 07 May 2021 11:40 PM PDT

我又来 v2 发文章了,还是 v2 社区好,有良好的社区氛围,大家能用心的交流,我以后不会在掘金、知乎、segmentfault 等社区发表技术文章,因为几乎不会有阅读量,也没有人交流。

首先,这篇文章是个标题党,这里先给大家致歉,因为下面介绍的并不能称之为布局引擎,真正的布局引擎应该是这样的:yogalayout。不过建议你一定要读完这篇标题党文章,读完后一定会有收获。

为什么会有这篇文章

两周前,我发布了我的一个前端开源项目,名字为:Fower。很多用户问我,Fower 和 Tailwindcss 有什么不同,我的回答是 Fower 在 utilty-first 这一点,理念是和 Tailwindcss 一致的,实际上 utilty-first 理念的 CSS 框架很早就有,比如:ACSSTachyons

其中,Fower 和 Tailwindcss 最大的不同点之一,就是 Fower 提供了非常易用的布局工具: Fower Layout toolkit,这样是写这篇文章的缘由。下面会详细分享开发 Fower layout 的初衷和其设计思路。

布局发展史

Fower Layout 要解决的问题就是布局问题,让我们简单回顾一下 Web 布局的发展史。在 Web 布局整个演进过程当中,经历了没有任何布局、表格布局、定位布局、浮动布局、Flexbox 布局、Grid 布局。

这里不细说每种布局的特点和优缺点,我只说我的观点和结论:在当前阶段,从功能性、易用性、浏览器兼容性等方面考虑,使用 Flexbox 布局是最好的选择。当然有兴趣的同学可以阅读下面的资料。

布局的核心

我认为,布局的核心是处理容器和元素 (container and item)在某一方向 (x,y)的空间关系。这里有几个关键要素:容器、元素、方向、空间关系。实际上,这也是 flexbox 布局核心的东西,flexbox 布局几乎所有概念和用法都是围绕这四个要素展开的。我们在拿到一个设计稿时,如果能快速地识别出其中的容器、元素,并且理清他们的空间关系,便能很快速地去实现它。

设计软件布局方式

Figma 和 Sketch 是两款非常出名的设计软件,我们可以看到,在元素空间关系的处理上,它们一致使用非常形象的指令: align to top 、align to right 、align to bottom 、align to left 、align base on space. 这也是最符合人直觉的方式。

Layout In Swift UI and Flutter

接下来我们看看两个现代化的 UI 解决方案:Swift UI 和 Flutter,它们是怎么处理 UI 布局的。

在 Swift UI,我们可以看到 HStack 、VStack 、aligment 、space 等关键字,我们发现 Swift UI 也是围绕 容器、元素、方向、空间关系四个要素展开的:

struct ContentView: View {     var body: some View {         HStack(alignment: .top) {             VStack {                 CalendarView()                 Spacer()             }             VStack(alignment: .leading) {                 Text("Event title").font(.title)                 Text("Location")             }             Spacer()         }.padding()     } } 

在 Flutter 中,我们可以看到 Row 、Column 、aligment 、space 等关键字,我们发现 Flutter 也是围绕 容器、元素、方向、空间关系四个要素展开的:

Row(   mainAxisAlignment: MainAxisAlignment.spaceEvenly,   children: [     Image.asset('images/pic1.jpg'),     Image.asset('images/pic2.jpg'),     Image.asset('images/pic3.jpg'),   ], );  Column(   mainAxisAlignment: MainAxisAlignment.spaceEvenly,   children: [     Image.asset('images/pic1.jpg'),     Image.asset('images/pic2.jpg'),     Image.asset('images/pic3.jpg'),   ], ); 

我们发现,Swift UI 和 Flutter 的布局理念和 Flexbox 布局极其类似,另外,我们发现它们的布局代码是直接依附在容器和元素中的,不像传统的 Web,需要补样式代码单独分离到一个 CSS 文件中。Fower 同样这样的理念,样式就是应该容器和元素的一部分。

Some references:

Flexbox 布局的缺点

上面说了设计软件和现代化 UI 框架的布局方式,他们和 Flexbox 布局的理念非常类似,那 Flexbox 布局有什么缺点呢? Flexbox 非常优秀,但对于我来说它有一个最大的缺点就是易用性不够好。它有很多概念:主轴、交叉轴、方向、align-item 、justify-content 、flex-start 、flex-end 、flex-center 等。最大问题是,主轴的方向发生改变时,align-items, justify-content 的 UI 表现非常不符合人的直觉。特别是对于我这个不是永远都是在写 UI 的人 (我经常需要去写后端、打杂等),每隔一段时间,就很可能忘记align-items, justify-content的用法。

我理想中的布局方式 (方案设计)

上面聊了 Flexbox layout 的缺点:易用性不够好。我理想中布局方式的使用,应该像现代设计软件一样好用,我们只需关注布局四要素容器、元素、方向、空间关系,用法就是找到容器和元素,设置容器内元素的方向,然后设置空间关系。这里核心是如何表达空间关系,我觉得最符合人直觉的表达方式就是设计软件的方案。我把这种表达方式抽象为:toCenter, toCenterX, toCenterY, toTop, toRight, toBottom, toLeft, toBetween, toAround, toEvenly.

  • toCenter, make children elements align to center, see Online Demo
  • toCenterX, make children elements align to center horizontal, see Online Demo
  • toCenterY, make children elements align to center vertical, see Online Demo
  • toTop, make children elements align to left, see Online Demo
  • toRight, make children elements align to right, see Online Demo
  • toBottom, make children elements align to bottom, see Online Demo
  • toLeft, make children elements align to left, see Online Demo
  • toBetween, make children elements space between, see Online Demo
  • toEvenly, make children elements space evenly, see Online Demo
  • toAround, make children elements space around, see Online Demo

不管你的容器是水平方向 (row) 还是垂直方向 (column),toRight 、toBottom 这些空间关系表达,都会符合你视觉习惯。

这种抽象的表达方式为什么更好呢?我觉的有几点好处:

  • 更符合人的直觉,你只需记住按照方向处理空间关系,比如:toRight 、toBotom 等,没有什么比这更符合人的直觉,另外的好处的是你的记忆负担会变得非常小
  • 更少地代码,这种方式会让你代码更少,可维护性更强,开发效率更高

我理想中的代码编写方式(伪代码):

1.下面代码会自动把容器内的元素水平和垂直居中,容器默认是 row, 所以可以省去:

<Container toCenter>   <ItemA /> </Container> 

效果如下:

2.下面代码会把 A,B,C 三个个元素在容器内靠右对齐, 容器默认是 row, 所以可以省去:

<Container toRight>   <ItemA />   <ItemB />   <ItemC /> </Container> 

效果如下:

3.下面代码会把 A,B 两个元素在容器内靠右对齐, 我们声明了 column, 所以元素是竖着排列的:

<Container column toRight>   <ItemA />   <ItemB /> </Container> 

效果如下:

  1. 使用组合:
<Container toBetween toCenterY>   <ItemA />   <ItemB />   <ItemC /> </Container> 

效果如下:

这里只举这四个伪代码例子,实际上你可以使用 "toLeft", "toRight" 等这些指令实现大部分 UI 布局。

上面,我们抽象了空间关系的表达方式,并把指令作用于容器上。下面我们来看一个布局效果,你会怎么实现它:

下面说说我理想中的方案,伪代码如下:

<Container toBetween toCenterY>   <ItemA />   <ItemB selfBottom />   <ItemC /> </Container> 

这里我们抽象出另外一类指令:selfTop, selfRight, selfBottom, selfLeft, selfStretch. 这些指令可以作用在元素上,单独控制元素的定位对齐方式。

所以我们有一些作用于元素的指令:

  • selfTop, make elements seft align to top
  • selfRight, make elements seft align to right
  • selfBottom, make elements seft align to bottom
  • selfLeft, make elements seft align to left
  • selfStretch, make elements seft to Stretch

最后,总结一下我们布局工具设计方案:

  • [容器] 方向控制指令,使用 row, column, 如果未声明,默认为 row
  • [容器] 内元素对齐方式指令: toCenter, toCenterX, toCenterY, toTop, toRight, toBottom, toLeft, toBetween, toAround, toEvenly,使用这些指令控制子元素对齐方式,并且和 row, column 方向无关
  • [元素] 自身对齐方式指令:selfTop, selfRight, selfBottom, selfLeft, selfStretch. 这些指令单独控制元素自身对齐方式
  • 使用任何 [容器] 指令,会自动触发 flexbox 布局,无需手动设置 display: flex;

上面 4 条规则设计,就是我个人理想中的布局方式。

Fower Layout

回到我们的标题:一个开发者优先(developer-first)的布局引擎。 实际上,Fower Layout 不能称之为布局引擎,那是什么? 也许我们称其为 Layout tookkit 会更合适。

Fower Layout 的最大特点是 developer-first,它易于使用并且符合人们的直觉。

实际上,即使你不使用 Fower Layout, 你也可以使用上面提到的设计思想去实现一套好用的布局工具,而不是使用原始的 Flex Layout 。

关于 Fower Layout 更详细的信息,可以看看官方文档的介绍:Fower Layout Introduction

想要了解群晖 nas,我该从哪些方面着手?

Posted: 07 May 2021 11:24 PM PDT

暂时没有买的打算,只是想先了解,为将来购买做准备。

预计我会拿 nas 来做以下功能:
1 、文件服务器:目前有个良心云的服务器,部署了博客,碍于图片不知道放哪里好,有个 nas 之后就可以放这里了。
2 、私人片库:随时看高清电影,再也不用担心想看的电影、电视剧被下架了。
3 、在 docker 上部署服务:有了它之后,开发需要用到的 MySQL 、redis 这些都可以部署到上面了。
4 、照片备份:有些照片是好几年前拍的,有了它之后,我可以把这些照片放在这上面了。

Python 脚本实现模拟 客户请求 API,求框架推荐

Posted: 07 May 2021 09:56 PM PDT

自己是搞 java 的,在做类似开放平台的,有一个需求,想模拟 7 、8 个客户接入我们的平台,每个客户每隔 N 秒(随机一个数)随机调用一个接口,有什么框架推荐的嘛,想以脚本的形式跑,由于对 python 只是刚刚了解语法的程度,求各位老哥推荐

jetpack compose for web

Posted: 07 May 2021 09:43 PM PDT

https://www.oschina.net/news/140523/jetbrains-jetpack-compose-for-web 如何看待?

jetpack compose + compose for desktop + compose for web vs flutter 2.0 ?

clash 或 sub 中的流量请求记录的功能是怎么实现的?

Posted: 07 May 2021 09:32 PM PDT

最近在用 clash for android 或者 sub 时因为流量请求记录或者日志功能做调试很方便就想研究一下这个功能如何实现的,但是这两个 APP 好像都不开源,有大佬知道如果实现吗?
如果不借助代理模式只在 android 中的 fk 中做类似的功能是不是也要做类似代理的流量监控的方式?

g80wtO.jpg

跳过安卓相机拍照,从系统选择照片

Posted: 07 May 2021 08:02 PM PDT

我司一款 app 有要求用户现场拍照的需求,但是最近发现有些用户反复上传相同照片,明显不是拍的,应该是从相册选择的,最后联系用户得知,是安装了一款 app,我装上这个之后,确实在跳转相机的时候,系统会弹出选择框,可以跳到相册去选择,大家有遇到过这种 app 吗,应该怎么禁止这种操作

<Echo-Admin> 使用 labstack/echo 和 vue 实现的中后台脚手架

Posted: 07 May 2021 07:14 PM PDT

基于 Echo + Gorm + Casbin + Uber-FX 实现的 RBAC 权限管理脚手架,致力于提供一套尽可能轻量且优雅的中后台解决方案。

特性

  • 遵循 RESTful API 设计规范
  • 基于 Echo API 框架,提供了丰富的中间件支持 (JWT 认证、鉴权、请求级事务、访问日志、跨域等)
  • 基于 CasbinRBAC 访问控制模型
  • 基于 Gorm V2 的数据库存储,可扩展多种类型数据库
  • 基于 uber/fx 实现依赖注入
  • 支持 Swagger 文档 (基于 swaggo)
  • 配置化、模块化

简介

echo-admin 是基于 vue 和 go 整合了优秀的开源框架和工具实现的中后台管理系统,集成了用户认证、角色管理、动态菜单和权限控制,让任何可能的使用者把时间专注在业务开发上。

在线预览

# 只读账号 用户名: test 密码: 123123 

Swagger 文档

前端项目源码 - 整理中


欢迎 PR 和 Issue,理想情况下,我都会尽快处理和回复,感谢你关注甚至使用 echo-admin


如果你也喜欢 echo 和 本项目, 欢迎联系我, 一起共同建设

关于 Python 的学习之路想请教下各位.

Posted: 07 May 2021 12:16 PM PDT

现在正通过<<Python 编程从入门到实践第二版>>这本书来入门 Python,现在学到第七章 While 循环,感觉学到后面思绪越学越乱,书中的每一个代码示例我都能看懂原理但到了做课后题的时候就有点难下笔,脑子里很混乱,但可能瞟一眼例题就想起来怎么做了,想问下各位老兄入门 Python 的时候有这种情况吗,你们都是怎么走过来的.这样子学下去好怕前面基础知识没有学扎实,等后面出一大堆岔子.

已 root,想开机启动一个 app 就那么难吗

Posted: 07 May 2021 11:41 AM PDT

n1 刷的安卓盒子,想开机启动一个乐播投屏,因为乐播投屏本身没有自启动,找了一圈好像都没什么办法能让乐播投屏自启动,遂来请教各位大佬

No comments:

Post a Comment