Thursday, November 18, 2021

V2EX - 技术

V2EX - 技术


token 被盗引发的数据安全问题

Posted: 18 Nov 2021 06:38 AM PST

最近在过等保,测试人员拿 admin 用户的 token 替换到了 guess 用户的请求头里,得出一个存在越权的结论,给的修复方案是: 对所有用户功能基于 sessionid 判断用户权限。

但我寻思 sessionid 不也存在浏览器端吗,一样可以被等保测试人员拿到放在其他用户的请求里伪装 admin 用户

PlanetScale 一个很有意思的云 MySQL 解决方案

Posted: 18 Nov 2021 06:33 AM PST

https://docs.planetscale.com/

用管理代码库一样的 branching 的方式来测试和部署数据库的更改。

Ubuntu(20.04.3 LTS)频繁卡死,是我的版本错了么?大家都用的什么版本呢?稳定吗?

Posted: 18 Nov 2021 06:26 AM PST

Twtter 页面的地址栏右边的「安装应用」是怎么实现的

Posted: 18 Nov 2021 05:55 AM PST

其实安装后也就是生成个快捷方式 ITJgjs.png

FFmpeg 的 release 里面的文件名后缀(gpl、lgpl、shared)都是什么意思?对应的文件有哪些区别?

Posted: 18 Nov 2021 05:24 AM PST

批量查询,例如 List<User>的 name 和 age,去 DB 中查询出 List<People>,怎么处理这个?

Posted: 18 Nov 2021 05:07 AM PST

name 和 age 才能唯一标识 People 中的一条数据。 这种批量查询怎么实现性能比较好?代码或者 SQL 什么都可以。

BoardOS Beta 版心路

Posted: 18 Nov 2021 05:06 AM PST

昨晚我通宵发布了 BoardOS Beta 版,一个走通了整个产品闭环的版本,这一路太不容易了 ,整理下心情。

BoardOS 是什么?

先说 BoardOS 是什么,BoardOS 是一款在线多人实时协作的白板系统。简单说就是一个在线多人实时协作的白板,为什么叫「 OS 」?这跟产品的设计有关,我希望他强大如「 OS 」,真正做到「在线协作你需要的一切,应有尽有」,而不是一个简单的在线协作白板。

BoardOS 的定位是什么?

初期的定位其实是对标国外的「 miro 」,所以 BoardOS 在一些设计上也有「 miro 」的影子,「 miro 」很棒,在开发上一款产品之前,我曾经甚至有过跟「 miro 」的 CTO 邮件请教过一些技术问题,没想到这是一个非常 nice 的人,不久就回复了我。但 BoardOS 的最终形态和「 miro 」是不同的。

为什么要做 BoardOS ?

事实上,我也没想过要做这款产品。这跟我上一次创业有关,其实完全谈不上创业,更多的是经历社会的毒打。之前我做的是一款在线会议白板产品,从第一行代码开始,倾注了我所有的心血,最后慢慢的在业界也小有影响,当然没有人知道这跟我有关。我视这款产品如同自己的孩子,直到最后我竟然无法登录自己帐号。即便这样,我还是希望他能被好好的呵护,但是在一个无能的人手里定然是无力回天了。思考一段时间后,我开始了 BoardOS 的第一行代码,不忘初心,开始了自己真正的创业之旅。

BoardOS 代号:Odyssey (奥德赛)

既然确定要做什么,也想好了要怎么做,接下来就是做了。无数个不眠的夜晚,大量的通宵后,今年 3 月份我在 V2EX 发布 BoardOS 的 Alpha 测试版。我注册了公司,设计了产品的主页,我感觉到征程开始了。

BoardOS 发布后没多久,收到了国内资本的关注,我很激动,第一次见投资人,认真的收拾了下自己,如期赴约。这一次的经历对我影响很大,所幸的是这个投资人也是业内很厉害的程序员,我的工作受到了认可,也同时指出了问题:我没有团队。我知道他们已经投了国内的另外一个团队,但我还是挺感谢他能指出我的这个问题。后续又有更多的投资人找到我,我也一一赴约,然而在发现我没有团队后,基本没有后续。所以,我当时感觉当务之急是要组建一个团队。

我是个内向的人,本身没多少朋友,仅有一个在北京的老乡,我俩关系不错,他的能力我也很认可,我曾经希望他能做我的合伙人,出于中年人的无奈他没法入伙。这是我的问题,我没有能力保障他的基本生活,因为我没有钱。之前所谓的创业的收入仅能维持生活的开销,接着从疫情刚开始到现在也没有一分钱的收入,再加上打官司律师费的消耗,导致我没有能力也没有资格邀请任何人做我的合伙人。

没有人找不到钱,没有钱找不了人,这时我感觉陷入了死胡同。这之间我曾经相信过会有奇迹,事后我坚信:创业没有奇迹,只有脚踏实地。后续又有更多的投资人找到我,这时我已经没有想要去聊的意愿,只能婉拒掉了。于是我把所有精力放在产品的迭代上,做了大量的优化,增加了更多的功能。有些用户慢慢发现了 BoardOS ,甚至给出了很高的评价,我受到了极大鼓舞。

这期间我想到了一个极好的代号:Odyssey (奥德赛)。

Odyssey 艰苦的跋涉; 漫长而充满风险的历程; 

同时还有令人振奋的是,有付费使用意愿的用户出现了。由于一直没有完善付费模块,只能推掉了。在完善一些功能后,我花了一个通宵,终于完善了付费模块。我重新设计了产品 Logo ,完善了产品官网,上线了 Beta 版,然后很快就睡了。

BoardOS 后续

与用户一起持续打磨产品,为用户提供更有价值的服务。在合适的时候邀请小伙伴加入。

Go 问题请教,一个函数返回值为接口类型却返回结构体,这是为什么?

Posted: 18 Nov 2021 05:05 AM PST

如题,NewHTTP()函数返回值是一个接口,但是 return 的是一个结构体,凭什么啊?为什么这么做啊?返回值改成*HTTP 有什么区别嘛?求教

type HTTP struct { 	outPool   utils.OutPool 	cfg       HTTPArgs 	checker   utils.Checker 	basicAuth utils.BasicAuth }  func NewHTTP() Service { 	return &HTTP{ 		outPool:   utils.OutPool{}, 		cfg:       HTTPArgs{}, 		checker:   utils.Checker{}, 		basicAuth: utils.BasicAuth{}, 	} }  type Service interface { 	Start(args interface{}) (err error) 	Clean() } 

Windows 11 烦人的 bug,有解不?

Posted: 18 Nov 2021 04:18 AM PST

  • 系统:Windows 11
  • 设备:Bose SoundLink Revolve+

问题

电脑从睡眠模式唤醒后,会自动把蓝牙音箱(已关机)也唤醒。Google & Baidu 都没找到解决办法。

Pytorch 中正确的使用 softmax 的方法是什么?

Posted: 18 Nov 2021 04:17 AM PST

如题,初学者,看官网的 tutorials 中的 quick start ,它是定义了一个长相为这样的网络

        self.linear_relu_stack = nn.Sequential(             nn.Linear(28*28, 512),             nn.ReLU(),             nn.Linear(512, 512),             nn.ReLU(),             nn.Linear(512, 10)         ) 

输出类别为 10 类,然后反向传播的代码是

pred = model(X) loss = loss_fn(pred, y)  # Backpropagation optimizer.zero_grad() loss.backward() optimizer.step() 

loss_fn 是nn.CrossEntropyLoss()交叉熵,那么这个输出类别似乎是没有通过 softmax 直接就输入交叉熵了吗?

如果要 softmax+交叉熵的话,是应该在定义网络的时候,在最后的 fc 后面再加一个 nn.Softmax(),还是说写成下面这样:

pred = nn.Softmax(model(X)) loss = loss_fn(pred, y) 

这个样子?谢谢大家

问个小白问题,为什么没有可变间隔的备份方式

Posted: 18 Nov 2021 04:03 AM PST

突发奇想,望轻喷.就是现在备份都是定时固定间隔的备份,我自己设想了一种可变间隔的备份,就是时间越远备份间隔越长,比如 10 年前就是一年一个备份,3 年前就是一月一次备份,然后逐渐密集,到今天就是一天存一个备份,这样如果想找一些特别古老的备份也能找到,也能相对节省资源,是不是没有这种需求呢😂

大家 gmail 的 fcm 推送正常吗?

Posted: 18 Nov 2021 03:54 AM PST

时隔 2 年,又从苹果换回来了,然后发现 gmail 在不使用工具的情况下收不到 fcm 推送,而其他 app 无论用不用工具,都能收到 fcm 推送。
于是我从 apkmirror 上找了个两年前的 gmail ,一切又都恢复正常了,所以这两年到底发生了啥?

[造轮子]端口扫描器 tcp-port-scaner

Posted: 18 Nov 2021 03:27 AM PST

nodejs 实现的端口扫描器,还请大佬们 review 和指正

https://github.com/DragonCat1/tcp-port-scaner

受限于 nodejs ,不能实现 SYN 的扫描方式,效能上肯定不及那些成熟的工具,不过轻量使用完全够

做这个也就一时兴起,仅供娱乐,注意安全😈

相比其他工具,除了 cli 用法,还可以直接编程化使用,可以说是很方便加入后续处理逻辑了

最后,手留 star ,手有余香


↓↓README↓↓

TCP-PORT-SCANER

A Multi Thread TCP Port Scaner

Install

npm i tcp-port-scaner -g 

Usage

CLI

1. Single target

portscan --target 127.0.0.1 --ports 80 

2. Multi target

portscan --target 192.168.1.1 192.168.1.2 --ports 80 

3. IP range target

portscan --target 192.168.1.1-192.168.1.254 --ports 80 

4. CIDR range target

portscan --target 192.168.1.1/24 --ports 80 

5. Target from iplist file

portscan -f iplist.list --ports 80 

6. Multi Ports

portscan --target 127.0.0.1 --ports 80 81 2000-3000 

For More Options

portscan -h 

Programme

const Scaner = require('tcp-port-scaner')  const scaner = new Scaner()  scaner.init({   targets: ['192.168.1.1/24', '192.168.2.1-192.168.2.254'],   ports: [80, 81, '1000-2000'],   thread: 100,   timeout: 5000,   callback({ host, port, open }) {     if (open) {       console.log(`${host}:${port} is open`)     }   }, })  scaner.run() 

红米 Note 11 5G 可以装 Google Play 吗

Posted: 18 Nov 2021 02:22 AM PST

这个列表里,显示似乎是支持的
http://storage.googleapis.com/play_public/supported_devices.html

但是我在网络上暂时没找到安装方法
开发版固件也找不到

优雅设置账号只能使用读类型的 API

Posted: 18 Nov 2021 02:21 AM PST

现在要对一些特定账号做只读限制,也就是所有涉及到更新,删除数据库的操作要全部拦截掉,返回无操作权限。只保留读取类的 API 可以使用。怎么做比较优雅。数据库有 mysql ,hbase

各位大佬,并行的 2 条队列数据怎么做实时融合

Posted: 18 Nov 2021 02:17 AM PST

背景:

  1. 有 2 个数据源分别实时向 kafka 两个 topic ( topicA, topicB )写数据,A ,B 数据量日均一千万左右。
  2. topicA, topicB 数据写入顺序略微不同,理论上 A, B 路数据一一对应,通过唯一 ID 可以关联,实际可能会漏数据,也就是存在一部分关联不上的数据。

需求:

  1. 需要两个 topic 数据关联上后(都消费到后)再执行后面的操作,且时效性要求较高(因此无法通过离线关联)。

各位彦祖有没好的方案或者工具可以处理这种情况。

3 亿 mysql 分表数据根据条件分页查询

Posted: 18 Nov 2021 02:07 AM PST

考勤数据有 3 亿条, 根据公司 id 在 mysql 已经进行分表,分了 100 张表,以后还在增加不少数据 现在有 1 个需求:根据公司所在的省份 /城市,公司名称关键字,打卡人姓名关键字进行分页查询考勤,3 个条件可以同时存在,有没有好的解决方法?

Linux (ubuntu)系统有类似 Snipaste 这样的截屏工具吗?还可以取色的

Posted: 18 Nov 2021 01:34 AM PST

关于 MySQL 函数效率的疑问

Posted: 18 Nov 2021 01:33 AM PST

在清理公司旧代码时顺便做点性能优化,发现公司里有很多业务在用

select date_format(create_time, '%Y-%m-%d') dateDay, count(*) count from table GROUP BY date_format(create_time, '%Y-%m-%d') ORDER BY date_format(create_time, '%Y-%m-%d') 

这样的语句全表扫描+日期转换。一个 47 万行的表这么跑一遍差不多 550-600ms 。而当我用 date(create_time) 换掉之后,耗时就会降到 230-300ms 。类似的还有用 CONCAT(YEAR(create_time), '-', MONTH(update_time)) dateMonth 替换 date_format(create_time, '%Y-%m') 之后,耗时也能减少 30%以上。对于 mysql 来说, date 这样的函数是比 date_format 的效率高出非常多的么?

请教一个 Java ShardingSphere 动态分库分表的问题。

Posted: 18 Nov 2021 01:30 AM PST

一个历史数据存储的服务,对外提供写入还有查询的接口(单表),表字段固定只有几个,其中有一个是时间戳字段,查询条件必带时间,根据不同现场,每天数据量不固定,但是要过性能测试的话,需要满足 30~45 分钟,20 万 /秒写入数据量的雪崩测试,还有持续一天的 100 万 /分钟写入的压测。

需求其实很简单,如果能用一些 OLAP 的数据库( clickhouse )也没啥问题,但是项目方限定了只能用 mysql,或者 oracle(吐了!!!),这样只能上分库分表的方案。


调研了一番,准备使用 ShardingSphere 实现,但是这个方案也有问题,我们不能够提前预知现场的数据量,所以希望能够动态的根据数据量来进行,比如一张表数据量超过 1 千万,就动态进行分表,后面的数据写到新表,但是这样查询又走不了分区键,每次都所有表查,性能也有很大问题。


请教一下,如何能够根据 [数据量] 还有 [时间] 来进行动态分表呢....,当数据量大于一定阈值的时候,将后面写入数据再拆分,还要能够满足命中时间分区

springboot email 上传大附件怎么解决呀?

Posted: 17 Nov 2021 10:15 PM PST

我试了 QQ 163 uotlook ,gmail 最多支持 50m !

Android 防定位造假的策略都有哪些呢??

Posted: 17 Nov 2021 12:35 PM PST

大佬们,很多定位作弊软件基本都是双开 /虚拟空间造假定位数据,,安卓有啥明确的特征值可以判定定位造假么,还是只能监测是否被 hook ,存在虚拟空间之类的。。。。

如果修改 wsl2 访问 windows 的 ip

Posted: 17 Nov 2021 10:20 AM PST

现在 wsl2 好像都用 192.168.3.1 作为访问 windows 的 ip ,但是我现在的路由 ip 也是 192.168.3.1 ,我用 curl 192.168.3.1 就直接访问到路由器上面去了

No comments:

Post a Comment