Sunday, June 20, 2021

V2EX - 技术

V2EX - 技术


有人可以在原生安卓的 message 应用里开启 RCS 消息吗?

Posted: 20 Jun 2021 06:25 AM PDT

因为最近 google message 正式推送了某不可描述的功能,所以想试试,但是使用的前提是要开启运营商的 rcs 功能

一番搜索后发现只有移动(疑似)部属这个功能,我用移动的手机卡在 miui 和 emui 上都可以开启所谓的"增强消息"功能,开通的终端之间互相发送消息都不需要费用,走的流量,但是当我把电话卡插在原生安卓手机上以后,在 google message 应用里,chat feature 选项一直是不可用的,各种方法都折腾过了也不行

之所以说疑似,是因为某些帖子说移动的 rcs 是和手机厂商合做的魔改版本,不符合标准所以除了指定的系统,其他的都用不了

各位可以试一下能不能在类原生系统上用移动的卡启用这个功能?

我理解有问题还是 backblaze 的对象存储就有这种漏洞?

Posted: 20 Jun 2021 05:56 AM PDT

之前看到 v 友讨论腾讯 cos 防刷,有人提到:

事实上如果找到你 COS 桶源站域名,就算你每个请求都鉴权,攻击者也可以靠刷请求次数让你破产~(无效请求也要计费)

看后虎躯一震,想到一直在用 backblaze 的对象存储服务完全可以被别人推出桶源站域名( S3 URL)...

具体情况如下:

背景

我目前是 backblaze 搭配 cloudflare 使用,使用他们的"friendly URL"套 cf 可以减免回源流量费。

官方套 cf 文档: https://help.backblaze.com/hc/en-us/articles/217666928-Using-Backblaze-B2-with-the-Cloudflare-CDN

槽点

简单解释一下,

Friendly URL 示例: https://f000.backblazeb2.com/file/my-bucket-name/image-name

也就是说,套上 cf 后,访问地址就变成了: https://我的二级域名 /file/存储桶名 /图片名

Xnip2021-06-20_08-36-45.jpg

然后它的 S3 URL 是这样的: https://存储桶名.s3.us-west-000.backblazeb2.com/图片名

那么问题来了,其他人只要根据 cdn 访问地址,就可以知道我的存储桶名,然后轻易地推出 S3 URL 。

然后就如 v 友所说。。

事实上如果找到你 COS 桶源站域名,就算你每个请求都鉴权,攻击者也可以靠刷请求次数让你破产~(无效请求也要计费)

官方第一次回应

Hello there,

Thank you for taking the time to write in,

The only vulnerability that may occur is if a malicious user would download your files many times to incur a large download bill on your part, but just knowing the public URLs of the files does not grant access or the ability to upload or delete files from a public bucket. If the bucket is private no downloads, inquires or other type of access can occur unless they have a valid app key and keyID to that bucket, which would be impossible to retrieve from your website.

Let me know if you have any other questions.

Regards,

Bob The Backblaze Team

可能我表达出了问题,他没有理解我的意思,还是确实他们的无效请求不计费?

我现在再问的话,因为有时差,应该明天才能回复我了。

本来就对这个不太懂,有没有 v 友可以指导下...

保留所有数据从 win10 升级到 win11

Posted: 20 Jun 2021 05:51 AM PDT

今天研究了下如何保留数据升级到露出来的 win11

包不用说了,缺少 TPM2.0 的话或者去主板开启 ftpm 之类的东西,或者网上有补丁可以绕过

  • 主要是如果系统的默认 UI 语言不是英语的话,就算你把语言改成英语还是会提示由于语言不是英语无法升级

  • 这时候找个启动盘,然后 cmd 执行命令(假设你的系统盘符是 C,看清楚在 PE 系统里盘符有可能会变)

dsm /image:c:\ /Set-UILang:en-US

  • 成功后重启再运行安装程序

  • 这时候有可能会提示空白的检测结果说无法升级

  • C:\$WINDOWS.~BT\Sources\Panther目录下面查找最近的CompatData_XXXXXX.xml文件,打开查看BlockMigration="True"的项目,记下 inf 文件名,和下面的阻碍安装的 program

  • C:\Windows\INF查找对应的 inf 文件,打开查看 Abstract,然后去添加 /删除功能里关闭掉(一般是 XPS 和 PDF printer drivers ),临时卸载掉上面查到的 program

  • 这时候再重新运行安装应该可以了(亲测成功保留应用设置和数据升级到 win11 )

Oracle Cloud 可能把测试版界面放上来了

Posted: 20 Jun 2021 04:44 AM PDT

不小心按了一下 F12,发现 console 里不停地蹦调试信息,难怪很多人说这是最难用的云计算操作台呢,简直是搞笑来的

是否有好用的 NFC 应用?

Posted: 20 Jun 2021 02:52 AM PDT

618 1900 入了坚果 R2 8G,之前一直用的 iPhone,不太懂 NFC 这些设置
想问问安卓有没有好用的 NFC 应用,能刷门禁 上海公交卡这些,似乎坚果系统的 NFC 不是很好用

[原创连载视频教程] PHP 脚本代码在底层到底是怎么运行的?

Posted: 20 Jun 2021 01:52 AM PDT

分享给各位有需要的小伙伴:

1 、时间原因、本版本的视频教程主要围绕 Zend 虚拟机初步分享下 PHP 内核的工作原理;
2 、后续新版本的视频教程依然基于 PHP 源码、全面深入剖析 PHP 内核的方方面面细节;

视频地址: https://www.bilibili.com/video/BV1Av411W7xi

golang pongo2 function 的问题

Posted: 20 Jun 2021 12:27 AM PDT

html

                 <div class="layui-form-item">                     {{form_label("登陆绑定 IP" ,label_cls)}}                     <div class="layui-input-inline" data-name="{{optionSessionBindIp.Name}}" data-value="optionSessionBindIp.Value">                         {{switch_option_render(optionSessionBindIp, fn_format("/a/admin/setting/update?name=%s",option.Name) )}}                      </div>                 </div><!-- 登录绑定 IP --> 

fn_format 的代码

 func GinContextExtend(c *gin.Context, dataList ...pongo2.Context) pongo2.Context { 	// 可以把获取当前用户放在这里 	d := pongo2.Context{ 		"fn_format": fmt.Sprintf, 	} 	user, err := service.GinGetUser(c) 	if err == nil { 		d["user"] = user 		menuList, err := ReadMenuList(user.Role) 		if err != nil { 			panic(err) 		} 		menuListByte, err := json.Marshal(menuList) 		if err != nil { 			panic(err) 		} 		d["menuList"] = string(menuListByte) 	}  	var newList = []pongo2.Context{ 		d, 	} 	newList = append(newList, dataList...)  	return ContextExtend(newList...) } 

现在运行报错

 2021/06/20 15:18:05 [Recovery] 2021/06/20 - 15:18:05 panic recovered: [Error (where: execution) in /home/vagrant/gcode/gadmin/templates/admin/setting.html | Line 26 Col 27 near 'switch_option_render'] [Error (where: execution) in /home/vagrant/gcode/gadmin/templates/admin/setting.html | Line 26 Col 69 near 'fn_format'] Calling a function using an invalid parameter /home/vagrant/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/context.go:914 (0x9f703b)         (*Context).Render: panic(err) /home/vagrant/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/context.go:923 (0x9f70f8)         (*Context).HTML: c.Render(code, instance) /home/vagrant/gcode/gadmin/router/page_router/page_admin_setting.go:45 (0xb0c3d3)         PageAdminSetting.func1: c.HTML(200, "admin/setting.html", render.GinContextExtend(c, pongo2.Context{ /home/vagrant/gcode/gadmin/router/page_router/page_admin_setting.go:54 (0xb0bcae)         PageAdminSetting: }() /home/vagrant/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/context.go:165 (0xada3e6)         (*Context).Next: c.handlers[c.index](c) /home/vagrant/gcode/gadmin/pkg/middleware/middleware.go:73 (0xada3c5)         LoginRequired.func1.1: c.Next() /home/vagrant/gcode/gadmin/pkg/middleware/middleware.go:77 (0xadaa89)         LoginRequired.func1: }() /home/vagrant/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/context.go:165 (0xa06f73)         (*Context).Next: c.handlers[c.index](c) /home/vagrant/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/logger.go:241 (0xa06f32)         LoggerWithConfig.func1: c.Next() /home/vagrant/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/context.go:165 (0xa07e99)         (*Context).Next: c.handlers[c.index](c) /home/vagrant/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/recovery.go:99 (0xa07e80)         CustomRecoveryWithWriter.func1: c.Next() /home/vagrant/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/context.go:165 (0xa06f73)         (*Context).Next: c.handlers[c.index](c) /home/vagrant/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/logger.go:241 (0xa06f32)         LoggerWithConfig.func1: c.Next() /home/vagrant/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/context.go:165 (0x9fd429)         (*Context).Next: c.handlers[c.index](c) /home/vagrant/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/gin.go:489 (0x9fd40f)         (*Engine).handleHTTPRequest: c.Next() /home/vagrant/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/gin.go:445 (0x9fcefb)         (*Engine).ServeHTTP: engine.handleHTTPRequest(c) /usr/local/go/src/net/http/server.go:2887 (0x7ac6c2)         serverHandler.ServeHTTP: handler.ServeHTTP(rw, req) /usr/local/go/src/net/http/server.go:1952 (0x7a7aec)         (*conn).serve: serverHandler{c.server}.ServeHTTP(w, w.req) /usr/local/go/src/runtime/asm_amd64.s:1371 (0x46e800)         goexit: BYTE    $0x90   // NOP 

该怎么弄呀, 在 macro 里面不能调用 function?

py 转来 golang 好不习惯呀

WSL 在资源管理器的小企鹅是怎么弄出来的 ?

Posted: 20 Jun 2021 12:23 AM PDT

请问 WSL 在 Windows 资源管理器左侧的 Linux 小企鹅是怎么弄出来的 ?

https://imgur.com/dYZMUEH

说是安装了子系统自动就会出现,我这边一直没有

腾讯云 828 无门槛全产品通用的券,怎么利益最大化。

Posted: 19 Jun 2021 11:09 PM PDT

828 无门槛全产品通用

自用:续费域名(腾讯云 5 折券有点多,把无门槛用在这里有点浪费)、续费轻量(依然不能用作主力学习上网,没鸡场稳)、购买其他的。

变现:代续费域名,或者别的合适的。

大佬们支个招。

mysql 在 rc 模式下的锁机制

Posted: 19 Jun 2021 07:22 PM PDT

剔除无用数据的表结构 CREATE TABLE `pyjy_vd_member_feature_content` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `member_id` int(11) NOT NULL DEFAULT '0',   `feature_id` int(11) NOT NULL DEFAULT '0',   `state` tinyint(2) NOT NULL DEFAULT '1' COMMENT '1 尚未提交审核 2 正在审核 3 审核通过 4 审核拒绝',   `content` varchar(300) CHARACTER SET utf8 NOT NULL DEFAULT '',   `main_id` int(11) NOT NULL DEFAULT '0',   PRIMARY KEY (`id`),   KEY `member_id_index` (`member_id`),   KEY `feature_id_index` (`feature_id`),   KEY `member_feature_content_state_idx` (`state`),   KEY `member_feature_content_main_id_idx` (`main_id`),   KEY `index_0` (`type`,`show_state`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=228734 DEFAULT CHARSET=utf8mb4 COMMENT='用户特质内容';  发生死锁的两条 sql   UPDATE `pyjy_vd_member_feature_content` SET `view_count` = `view_count` + 85 WHERE `feature_id` = '95' AND `member_id` = 549872 AND `main_id` = '140359' AND `state` = 3  UPDATE `pyjy_vd_member_feature_content` SET `view_count` = `view_count` + 88 WHERE `feature_id` = '95' AND `member_id` = 363520 AND `main_id` = '118167' AND `state` = 3 

在 rc 模式下,不可重复读,所以加的锁是记录锁

这个是事务 1 的日志  RECORD LOCKS space id 377 page no 1530 n bits 1272 index feature_id_index of table `vdsns`.`pyjy_vd_member_feature_content` trx id 204978888 lock_mode X locks rec but not gap waiting Record lock, heap no 264 PHYSICAL RECORD: n_fields 2; compact format; info bits 0  0: len 4; hex 8000005f; asc    _;;   //普通索引=》 feature_id  1: len 4; hex 8002e0ff; asc     ;;   //主键 ID    这个是事务二的日志  *** (2) HOLDS THE LOCK(S): RECORD LOCKS space id 377 page no 1530 n bits 1272 index feature_id_index of table `vdsns`.`pyjy_vd_member_feature_content` trx id 204978887 lock_mode X locks rec but not gap Record lock, heap no 264 PHYSICAL RECORD: n_fields 2; compact format; info bits 0  0: len 4; hex 8000005f; asc    _;;  1: len 4; hex 8002e0ff; asc     ;;  Record lock, heap no 265 PHYSICAL RECORD: n_fields 2; compact format; info bits 0  0: len 4; hex 8000005f; asc    _;;  1: len 4; hex 8002e103; asc     ;;  Record lock, heap no 267 PHYSICAL RECORD: n_fields 2; compact format; info bits 0  0: len 4; hex 8000005f; asc    _;;  1: len 4; hex 8002e108; asc     ;;  Record lock, heap no 268 PHYSICAL RECORD: n_fields 2; compact format; info bits 0  0: len 4; hex 8000005f; asc    _;;  1: len 4; hex 8002e109; asc     ;;  Record lock, heap no 286 PHYSICAL RECORD: n_fields 2; compact format; info bits 0  0: len 4; hex 8000005f; asc    _;;  1: len 4; hex 8002e165; asc    e;;  Record lock, heap no 287 PHYSICAL RECORD: n_fields 2; compact format; info bits 0  0: len 4; hex 8000005f; asc    _;;  1: len 4; hex 8002e166; asc    f;;  Record lock, heap no 515 PHYSICAL RECORD: n_fields 2; compact format; info bits 0  0: len 4; hex 8000005f; asc    _;;  1: len 4; hex 8002ebf3; asc     ;;  Record lock, heap no 1084 PHYSICAL RECORD: n_fields 2; compact format; info bits 0  0: len 4; hex 8000005f; asc    _;;  1: len 4; hex 80031e5e; asc    ^;; 

现在知道死锁是 feature_id 这个字段造成的。 但是这里边是怎么执行的,还不理解。

求解 StartupStep 这个接口是做什么用的?

Posted: 19 Jun 2021 04:21 PM PDT

在看 spring 的源码 不是很理解这个 StartupStep 的作用 有没有大佬帮忙解答一下

leetcode 半年刷了 177 道题 最近有点上瘾了

Posted: 19 Jun 2021 12:31 AM PDT

https://leetcode-cn.com/u/rong-fei-a/

周末的时候 比较享受思考的过程 尤其是想到一种解法的时候有一种快感

No comments:

Post a Comment