Wednesday, August 11, 2021

V2EX - 技术

V2EX - 技术


小米 mix 4 屏下效果实拍

Posted: 11 Aug 2021 03:54 AM PDT

贴膜留个个洞无视。从各个角度基本不可见了,前置拍照效果略微朦胧。

POI 如何快速导出千万级数据的 Excel

Posted: 11 Aug 2021 03:52 AM PDT

在使用 POI 导出一千万行数据到 Excel 时,CPU 长时间爆炸💥
现在的解决方案是:

  • 使用 SXSSFWorkbook 类
  • 每 50W 数据划分 sheet
  • 采用多线程,每个 sheet 开一个线程去跑

现已探明的问题:
一千万的数据在创建 Excel 前都存储在 list 中,当 list 占用内存很小时,导出很快,一旦 list 变得很大,分段导出都会变的很慢

firefox 按下任意键盘按键, 鼠标指针就会消失.

Posted: 11 Aug 2021 03:48 AM PDT

按下任意键盘按键, 鼠标指针就会消失. 移动鼠标,指针就出现了. 这是 bug 还是 feature?

  • 系统:
    • MacOS 11.5.1
    • MacOS 11.2

低代码做的数字大屏,大家看炫不炫

Posted: 11 Aug 2021 03:35 AM PDT

点击城市是可以联动数据的,图片体现不了,自己脑补:

效果图 1 数字大屏 1.png

数字大屏 3.png

效果图 2 数字大屏 2.png

实现步骤及 DEMO 地址:https://segmentfault.com/a/1190000040482238

软件系统一旦出现 bug,绝大多数情况下是 需求混乱导致的。

Posted: 11 Aug 2021 03:31 AM PDT

写了这么多年的软件,已经练就了一身铜墙铁壁,不吹牛的说,"我"写出来的代码基本没有什么 bug 。
更确切的说是在软件层面很少出现什么 bug,为什么,主要还是得益于严密的思维,丰富的经验积累,比如:
~ 传入的参数控制好边界,非法值的判断。
~ 所有的异常情况考虑周全,捕获到位。
~ 严格按照接口规范处理。
~ 返回码 /错误码处理到位。
~ 不写花里胡哨 /晦涩难懂的代码。
~ 谨慎处理并发 /异步 /回调。
~ 注意对象的生命周期,引用释放。
~ 写完一个功能,立马自测一遍。
...
这种防御式的编程模式,基本做到了滴水不漏。所以给出去的软件模块 99%都不会有问题。


然而 bug 终究会产生,这个时候"我"发现,大部分的 bug 都源自需求的混乱不勘,功能的杂乱堆叠,业务的纠缠不清。
所以,再强大的软件设计师,都会被不好的需求搞死。(比如考虑各种兼容性,比如强行让一只鱼飞上天)
这也是为什么再牛逼的操作系统也是 bug 连绵,补丁不断,因为需求太复杂了。

只有放弃英文代码,写全中文代码,才能支撑起千变万化的需求。

Posted: 11 Aug 2021 03:30 AM PDT

理由很简单,因为我们不是老外,从小语言体系都是基于中文的,用中文不用大脑帮忙转译一次,合理减少负担,可以专注于项目需求。

以前我写代码都是函数式,比如 function btn_login_onclick() { ... }, 看起来似乎没问题,但是项目变化一多,周期变短压力大,代码库里就会多出一大堆莫名奇妙的英文函数,不写注释时间一长,完全看不懂,数量上去后,难以维护。

现在我完全放弃英文函数了,全部改用一个大函数,统一处理所有点击事件。

switch(button_name)
{
case "登录": // 把 btn_login_onclick 里的逻辑全部搬过来
case "注册":
case "客户 A 需求按钮逻辑.step1":
case "客户 A 需求按钮逻辑.step2":
...
}

这样的好处是项目里的函数名骤减,中文名称查找,又超级方便维护。

再见了,函数名。

DevOps Pipeline 选型

Posted: 11 Aug 2021 03:25 AM PDT

最近在调研市面上可用的二开 Pipeline 项目用以替代沉重的 JenKins

https://github.com/drone/drone

总结了一下优点:

  • 支持多种语言 Go 、PHP 、Java 等
  • 原生支持 Kubernetes 集群部署,可用性与可扩展性强
  • 拥有自己的问答社区 https://discourse.drone.io/ 与 Slack 实时交流频道,较为活跃
  • 原生对云原生友好,后续迁移容器化成本较低
  • 文档较为完善 https://docs.drone.io/
  • 协议宽松,Apache License 2.0,对商用友好,支持修改源码而不需开放源代码
  • 内置丰富的 Action http://plugins.drone.io/ ,社区生态活跃,支持 Action 定制化开发

但也有一些缺点,多项目同时发布、可视化 Action 编辑的缺乏(对比云效、Coding

于是想问一下,市面上是否还有类似的开源项目?以及有使用过 Drone 的朋友谈谈使用体验,个人感觉基础功能够用 但不适合大规模团队,如果有成功的改造经验 想借鉴学习一下

要多健壮的代码才能支撑起千变万化的需求?

Posted: 11 Aug 2021 03:15 AM PDT

最后不会成为屎山

npm node_modules 为什么会是现在这样

Posted: 11 Aug 2021 03:11 AM PDT

都在吐槽 npm 的设计,依赖地狱、小文件多、占用空间大、慢。

那是什么导致了 npm 必须设计成现在这样呢,其它语言的包管理工具为什么没有这些问题(比如 manven)?

node 包管理有没有新的方案在开发中?

大佬们! Java list 集合根据元素(全部是 String 类型)排序,排序顺序外部传入,如何实现,如何优雅的实现?

Posted: 11 Aug 2021 03:06 AM PDT

中了勒索病毒,除了被加密文件,对方会在我电脑上留后门吗?顺便问一下 Mac 中木马病毒都有哪些表现

Posted: 11 Aug 2021 03:05 AM PDT

上一帖说了 被勒索病毒搞了 但是损失不大

但是我记得 中毒的那天,Windows 被锁了之后

我的 Mac 系统我也无法登录了 输入密码提示密码错误,我以为对方能把我的登录密码改掉。但是等我回来之后开机又可以用密码登录了。很奇怪。灵异事件?

因为 Mac OS 是主力系统,目前检查了一下 文件也没有丢失,检查了一下也没有奇怪的软件,网络我也看了 没啥奇怪的进程在占用网速。

但是我现在挺害怕的 我怕他在我电脑里面植入病毒,我现在不确定他到底有没有进入我的 MacOS,有没有大佬有什么建议的 可以排查一下。文件太多了,要是重装系统 又要一天的时间估计

而且当时我的 openwrt 密码也错误,回来之后又可以登录了 好奇怪哦

js this 绑定和箭头函数定义

Posted: 11 Aug 2021 02:28 AM PDT

箭头函数

定义:箭头函数相当于匿名函数,并且简化了函数定义

如:x => x * x

1.箭头函数看上去是匿名函数的一种简写,但实际上,箭头函数和匿名函数有个明显的区别:箭头函数内部的 this 是词法作用域,由上下文确定。

2.箭头函数的 this 指向取决于外层作用域中的 this,外层作用域或函数的 this 指向谁,箭头函数中的 this 便指向谁

来源:https://www.liaoxuefeng.com/wiki/1022910821149312/1031549578462080

this 绑定

1.this 默认绑定:我们可以理解为函数调用时无任何调用前缀的情景,默认绑定时 this 指向全局对象(非严格模式)

2.隐式绑定:如果函数调用时,前面存在调用它的对象,那么 this 就会隐式绑定到这个对象上,如果函数调用前存在多个对象,this 指向距离调用自己最近的对象

3.显示绑定:通过 call 、apply 以及 bind 方法改变 this 的行为,相比隐式绑定,我们能清楚的感知 this 指向变化过程,如果在使用 call 之类的方法改变 this 指向时,指向参数提供的是 null 或者 undefined,那么 this 将指向全局对象

4.new 绑定:抽象理解为新对象就是 this

5.this 绑定优先级:显式绑定 > 隐式绑定 > 默认绑定,new 绑定 > 隐式绑定 > 默认绑定 ,不存在同时显示和 new 绑定同时生效的场景

来源:https://www.cnblogs.com/echolun/p/11962610.html

mongodb 崩溃

Posted: 11 Aug 2021 01:42 AM PDT

最后出现的日志是

{"t":{"$date":"2021-08-08T13:59:06.374+00:00"},"s":"I",  "c":"COMMAND",  "id":23099,   "ctx":"PeriodicTaskRunner","msg":"Task finished","attr":{"taskName":"DBConnectionPool-cleaner","durationMillis":1646}} 

大概了解了下是清理资源的任务

不过几万行日志中,同样的日志之前没有出现过

然后服务就崩了

嗯,,我两天后才发现

用 chrome 系看 bilibili 视频缓冲慢,用 safari 就很快.

Posted: 11 Aug 2021 01:32 AM PDT

不是网速问题,网速测试都能跑满带宽. 但是就是 chrome 系浏览器播放 bilibili 卡的要死, 但是 safari 加载就很快啊 就从头到位一下就加载完了

windows 的 webdav 支持是不是有些问题?

Posted: 11 Aug 2021 12:55 AM PDT

我发现 windows 自带的 webdav 支持有些问题。不论是直接访问,还是映射网络驱动器后,都无法打开或使用大文件,这个大小似乎是 4G 左右。超过这个大小的文件使用就会失败,不管是打开,拷贝,还是各种。

但是采用非 windows 的客户端访问没有任何问题。

这个有什么解决方法吗?谢谢。

大家可有简单的加解密算法推荐?

Posted: 11 Aug 2021 12:53 AM PDT

为了数据安全,现在客户要求在配置中心里的敏感数据也要加密,

比如一些平台的 AK/SK,微信的 ApiKey 等。

那么配置中心不能直接存明文,只存加密后的字符串。 然后 Java 应用程序里解密后再使用。

大家可有推荐的简单的加解密方法推荐?

MixPHP V3 开发流程体验 Swoole, Workerman, FPM, CLI-Server 多种运行模式介绍

Posted: 11 Aug 2021 12:52 AM PDT

MixPHP V3 发布后,由于本身支持超多的执行模式,用户可能无从下手,这里先大体介绍一下:

  • CLI-Server: 适合本机开发,零扩展依赖,Windows/MacOS 等全平台支持
  • PHP-FPM: 适合共享开发环境部署,同时适合 admin 等管理后台项目
  • Swoole, Workerman: 适合线上部署,根据需要选择其一即可

Swoole 的多种模式:

  • Swoole 多进程同步: 适合需要使用那些协程不支持的第三方库的项目,和 Workerman 一致
  • Swoole 多进程协程: 适合专注 mysql + redis 需要超高 io 性能的项目
  • Swoole 单进程协程: 单进程协程就是 V2.2 版本那种 golang 风格协程,适合开发 websocket

几乎支持 PHP 流行的全部执行模式,并且以上执行模式代码是无缝切换的,真正做到效率与性能并存。

请帮忙 Star 一下:

首先创建一个骨架

我们以开发一个 API 项目为例,打开 MixPHP 的 开发文档 里面有 cli api web websocket grpc 项目的开发教程,V3 开始仓库底下的 README 就是开发文档,如果有不明白的可以加我们的 官方 QQ 群 参与讨论。

  • 首先创建一个骨架

如果提示缺少 redis 等扩展支持,可以使用 --ignore-platform-reqs 暂时忽略依赖检查

composer create-project --prefer-dist --ignore-platform-reqs mix/api-skeleton api 

安装后目录结构如下:

  • bin 目录是全部入口文件,不同文件对应的不同驱动模式
  • routes 是路由配置文件
  • public/index.php 是 FPM, CLI-Server 两种模式的入口文件
  • shell/server.sh 是部署是管理进程 start|stop|restart
├── README.md ├── bin │   ├── cli.php │   ├── swoole.php │   ├── swooleco.php │   └── workerman.php ├── composer.json ├── composer.lock ├── conf │   └── config.json ├── public │   └── index.php ├── routes │   └── index.php ├── runtime ├── shell │   └── server.sh ├── src │   ├── Command │   ├── Container │   ├── Controller │   ├── Error.php │   ├── Middleware │   ├── Vega.php │   └── functions.php └── vendor 

使用 CLI-Server 零扩展依赖模式本机开发

首先我们查看一下 composer.json,与其他框架不同的是我们推荐在本机开发阶段使用 composer run-script 启动程序,可以和 PhpStorm 的调试功能完美配合。

  • 这里定义了每个执行模式的命令入口文件
  • composer run-script --timeout=0 cliserver:start 就可以启动命令
  "scripts": {     "cliserver:start": "php -S localhost:8000 public/index.php",     "swoole:start": "php bin/swoole.php",     "swooleco:start": "php bin/swooleco.php",     "workerman:start": "php bin/workerman.php start",     "cli:clearcache": "php bin/cli.php clearcache"   } 

由于现在是本机开发,我们使用 CLI-Server 模式启动,零扩展依赖,无需 pcntl, event, swoole 这些扩展,自带热更新。

% composer run-script --timeout=0 cliserver:start > php -S localhost:8000 public/index.php PHP 7.3.24-(to be removed in future macOS) Development Server started at Tue Aug 10 17:00:55 2021 Listening on http://localhost:8000 Document root is /Users/***/mix/examples/api-skeleton Press Ctrl-C to quit. 

测试一下默认的路由

% curl http://127.0.0.1:8000/hello hello, world! 

接下来就可以根据文档:

使用 PHP-FPM 部署共享开发环境

热更新是刚性需求,所以共享开发环境我们直接采用 PHP-FPM 部署,和 Laravel 、ThinkPHP 部署方法完全一致,将 public/index.phpnginx 配置 rewrite 重写即可。

server {     server_name www.domain.com;     listen 80;     root /data/project/public;     index index.html index.php;      location / {         if (!-e $request_filename) {             rewrite ^/(.*)$ /index.php/$1 last;         }     }      location ~ ^(.+\.php)(.*)$ {         fastcgi_pass 127.0.0.1:9000;         fastcgi_split_path_info ^(.+\.php)(.*)$;         fastcgi_param PATH_INFO $fastcgi_path_info;         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;         include fastcgi_params;     } } 

使用 Swoole 多进程协程模式线上部署

Swoole 、Workerman 你可以随意选择,这里我们采用 Swoole 举例。

  • 首先安装 Swoole 扩展
  • 修改 shell/server.sh 脚本中的绝对路径和参数

这里我们选择的 Swoole 多进程协程模式,因此入口文件为 bin/swoole.php,其他模式参考 composer.json

php=/usr/local/bin/php file=/data/project/bin/swoole.php cmd=start numprocs=1 

启动管理

sh /data/project/shell/server.sh start sh /data/project/shell/server.sh stop sh /data/project/shell/server.sh restart 

接下来将启动命令加入 crontab 防止程序异常中断

*/1 * * * * sh /data/project/shell/server.sh start > /tmp/server.sh.log 2>&1 & 

当修改代码时,使用 restart 让代码生效

sh /data/project/shell/server.sh restart 

程序员们,有什么可以帮助产品经理的工具?

Posted: 11 Aug 2021 12:49 AM PDT

只要能提升工作效率的都可以!

汇总后我要把这些工具丢我们产品经理"脸上":好好学习下别人家的产品经理

Dubbo 官方文档是经常有各种错误吗

Posted: 11 Aug 2021 12:33 AM PDT

看了个 protobuf 的 sample,几十行描述就发现好几个错误

https://dubbo.apache.org/zh/docs/languages/java/quick-start/

  1. maven clean compile 之后就直接运行 jar 了,不 package 哪来的 jar?
  2. cd dubbo-samples/dubbo-samples-protobuf 之后,运行的时候用的路径是 ./dubbo-samples-protobuf/xxx,不都已经到这个目录里了么
  3. 运行 consumer 的时候,引用的路径是 xxx/protobuf-provider/xxx,不是 consumer 么,咋又 provider 了

之前不怎么用 dubbo,dubbo 3.0 发布之后准备了解一下,也就这一个文档跟着动手做一下,发现根本不 work,自己查了下发现了上面指出的一些问题,但都是比较低级的错误。

这种错误在 dubbo 里是普遍的吗?感觉这也太挫了点...

求助, AWS 只能访问 22 端口,其它端口都不能访问。

Posted: 11 Aug 2021 12:32 AM PDT

网上搜了一圈,情况很像下面两个,但没搜到有用信息。
https://www.v2ex.com/t/563348
https://bbs.csdn.net/topics/392457707

以下是服务器具体情况:
0. 以前一直能正常访问,最近发现突然不行
1. 已确定关了防火墙和 SELINUX
2. AWS 里的安全规则也开放了所有端口
3. 同一个账号里的另外一台机器,能 telnet 目标机器 内网 ip + port
4. 同一个账号里的另外一台机器和自己电脑,用外网 ip + port telnet 不通

有没有无样式的 React UI 框架?用来配合 TailwindCSS 使用

Posted: 11 Aug 2021 12:27 AM PDT

前端时间重构了一个开源项目,用了 TailwindCSS/React ,体验很好,只是遇到那种需要交互的组件的时候,需要自己封装,稍显麻烦.

比如Modal,DropdownMenu之类的.

所以有了这个疑问,是否有无样式的 React UI 框架,用来和 TailwindCSS 配合使用的话,那简直就是如鱼得水了.

其实也不需要很大而全,只需要提供一些常用的交互式的组件就够了.

Google mtail 配合 Prometheus 和 Grafana 实现自定义日志监控

Posted: 11 Aug 2021 12:19 AM PDT

前言

mtail 是一个 Google 开发的日志提取工具,相比 ELK/EFK/Grafana Loki 来说会更轻量。因为我遇到的需求只是为了采集生产日志中的数据,所以采用更为简单的 mtail 配合 Prometheus 和 Grafana 实现自定义日志数据监控。

更新历史

2021 年 08 月 04 日 - 初稿

阅读原文 - https://wsgzao.github.io/post/mtail/


常见的日志监控解决方案

开源的业务日志监控,我重点推荐以下 3 个

值得注意的是 ELK 目前有被 EFK 取代的趋势

1:ELK-"ELK"是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch 、Logstash 和 Kibana 。

Elasticsearch 是一个搜索和分析引擎。

Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等"存储库"中。

Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。

2:Loki,Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。

3:mtail :它是一个 google 开发的日志提取工具,从应用程序日志中提取指标以导出到时间序列数据库或时间序列计算器,

用途就是: 实时读取应用程序的日志、 再通过自己编写的脚本进行分析、 最终生成时间序列指标。

工具适合自己的才是最好的,无论是 EFK 还是 Loki 都是功能齐全的日志采集系统,当然它们也有各自的优势,

Blog 中记录了一些使用经验大家可以参考

Scribe 安装使用 - https://wsgzao.github.io/post/scribe/

使用 ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践 - https://wsgzao.github.io/post/elk/

开源日志管理方案 ELK 和 EFK 的区别 - https://wsgzao.github.io/post/efk/

Grafana Loki 开源日志聚合系统代替 ELK 或 EFK - https://wsgzao.github.io/post/loki/

mtail 简介

mtail - extract whitebox monitoring data from application logs for collection into a timeseries database

mtail is a tool for extracting metrics from application logs to be exported into a timeseries database or timeseries calculator for alerting and dashboarding.

It fills a monitoring niche by being the glue between applications that do not export their own internal state (other than via logs) and existing monitoring systems, such that system operators do not need to patch those applications to instrument them or writing custom extraction code for every such application.

The extraction is controlled by mtail programs which define patterns and actions:

# simple line counter counter lines_total /$/ {   lines_total++ }  

Metrics are exported for scraping by a collector as JSON or Prometheus format over HTTP, or can be periodically sent to a collectd, StatsD, or Graphite collector socket.

mtail 是用于从应用程序日志中提取指标以导出到时间序列数据库或时间序列计算器以进行警报和仪表板显示的工具。简单来说,就是实时读取应用程序的日志,并且通过自己编写的脚本实时分析,最终生成时间序列指标的工具。

https://github.com/google/mtail

mtail 安装

下载地址: https://github.com/google/mtail/releases

# check latest version from github wget https://github.com/google/mtail/releases/download/v3.0.0-rc47/mtail_3.0.0-rc47_Linux_x86_64.tar.gz  tar xf mtail_3.0.0-rc47_Linux_x86_64.tar.gz # can choose to cp mtail to /usr/local/bin # cp mtail /usr/local/bin  # 查看 mtail 版本 ./mtail --version mtail version 3.0.0-rc47 git revision 5e0099f843e4e4f2b7189c21019de18eb49181bf go version go1.16.5 go arch amd64 go os linux  # mtail 后台启动 nohup mtail -port 3903 -logtostderr -progs test.mtail -logs test.log &  # 默认端口是 3903 nohup ./mtail -progs test.mtail -logs test.log &  # 查看是否启动成功 ps -ef | grep mtail   

内容较多就不全部复制了,各位感兴趣可以再继续阅读原文链接

https://wsgzao.github.io/post/mtail/

求推荐个 Node.js 的 orm 轮子,看轮子都看花眼了

Posted: 11 Aug 2021 12:10 AM PDT

前几天重构了一个开源的项目,还是 golang 好,orm 部分可供我选择得有限.

今天又想重构多年前读大学时写的一个小项目(当时还是 Vue+Laravel5 写的)

想试试 next.js+react 来写,用 docker 部署,可以实现一下服务端渲染,但是需要一个后端的 orm.

但是这 orm 轮子太多了,着实给我看花眼了.

一定要支持 Typescript 的类型提示的,如果轮子是纯 Typescript 写的就更好了.

有用 VIPER 的吗?想请教下后续的逻辑代码应该怎么写?写在哪?

Posted: 10 Aug 2021 10:42 PM PDT

最近在看架构方面,网上的 VIPER demo 一般都止步于初步的展示,比如:

从网络里拿数据然后展示在 UITableView 里。

但是后续的都没写,想请教下后续的一些逻辑应该写在哪里?怎么写?

  1. 点击 cell 要根据 viewModel 去网络上获取数据 (要写在 Interactor 里吗)
  2. 跳转到其它 controller ( Router 里吗)
  3. 给要跳转的 controller 传递数据(新 controller 的 router 里吗)

来啊小伙伴们支付宝红包互助

Posted: 10 Aug 2021 10:15 PM PDT

来啊 还能薅几天

alt

Golang 有没有开箱即用的 多终端(PC + 手机 H5)电商开源项目,功能够用就行

Posted: 10 Aug 2021 09:46 PM PDT

Golang 有没有开箱即用的 多终端(PC + 手机 H5)电商开源项目,最好是前后端分离的,功能够用就行

Flask 或 Django 模板里面如何将变量传入 url_for 里面

Posted: 10 Aug 2021 07:48 PM PDT

API 那里传出来的数据是一个列表(list),列表里面有字典(dictionary), 字典里面有图片名字。现在想在模板那里遍历这个列表获取图片名字,然后把这个名字作为变量传到模板中的 url_for()。现在以下两种方法测试过皆可行,但是总觉得写法有点怪怪。不知道各位老哥一般是怎么写的,可否提点一下,谢谢!

这是 API:

DATE = [ 	{ 	"name": "image1",     	"date": "20210810" 	},        { 	"name": "image2",     	"date": "20210811"        } ]  @app.route("/home", methods=["POST", "GET"]) def home(): 	return render_template("home.html", data=DATE) 

以下是模板的两种写法:

写法一:

{% for d in data: %} 	<img src="{{ url_for('static', filename='img/' + d.name + '.jpg') }}"> {% endfor %} 

写法二:

{% for d in data: %} 	<img src="/static/img/{{d.name}}.jpg"> {% endfor %} 

各位老哥的 Github 提交代码正常吗?

Posted: 10 Aug 2021 03:47 PM PDT

我的多台设备、多个项目提交代码均提示:failed to push some refs to xxx.git

不知道是我个人问题还是...幻觉?

react 学习 父子组件调用

Posted: 10 Aug 2021 03:21 PM PDT

第一种:

通过定义函数实现 1 、父组件设置含有 this.setState({...})的方法,形参为接收子组件的变量

2 、将方法作为参数传递给子组件

	如<B sub={this.方法.bind(this)]/> 

3 、子组件通过 this.props.键名接收函数

	this.props.键名(子组件的数据)  		 

第二种:

通过父元素传递的函数在标签中通过箭头函数,直接传参  	如:<button onClick={()=>{this.props.函数(参数)}}></button>      

父调用子组件方法

1.把子组件的 this 指针挂载成父组件的一个变量,<ChildPage onRef={c=>this.ChildPage=c}></ChildPage>,通过 onRef

2.如果父组件传来该方法 则调用方法将子组件 this 指针传过去,props.onRef(this)

小米运动刷步 PHP 版

Posted: 10 Aug 2021 02:37 PM PDT

初衷

  • 想修改 微信步数,感觉别人的接口不稳定+不放心。(虽然用的是小号)
  • 有 Python 版的腾讯云函数,部署了一个,但用着不爽。
  • 想搬到自己的垃圾服务器上,Python 部署很不方便。
  • 据说 "PHP 是世界上最好的语言" 所以做了一个 PHP 版。
  • 上传即用

#Github 地址

https://github.com/unkaer/xiaomi_yundong

#演示地址

https://xiaomi.ababwbq.cf/

用户与部门关联,有什么合适的方法确定同一个部门中的用户领导级别关系?

Posted: 10 Aug 2021 10:09 AM PDT

用户与部门关联,在同一个部门里,会分出领导级用户与非领导级用户。那么如何较好地确定同一个部门中的用户领导关系?

比如便于查询一个部门中的领导相关的信息。例如通过部门 id,查询出这个部门里的领导级别最低级的用户 id,然后通过这个领导用户 id,查询出他所在部门的上一级领导的用户 id (如果查不出来,就表示他是这个部门的最高领导)。

简单的方式是,用户与部门,建立一个中间表,该表除了带用户 id 和部门 id 字段,还待一个 int 字段,为 null 或为 0 表示非领导用户,非 null 表示领导用户。感觉太简单了一点,一个表 4 个字段搞定(主键 id,两个外键,一个领导级别字段),不知道各位看出了什么问题。

其他的方式,我也稍微想了一下?通过角色?通过岗位?角色数据和岗位数据可能会被任意编辑,用这些的话,难道要定死一些数据不能动吗?

不知道各位的建议是什么,各位做过这类的话,你们是怎么确定同一个部门的用户领导关系的?

如何在 Python 中用最轻量的方法实现一个返回指定内容的 http 服务

Posted: 10 Aug 2021 09:05 AM PDT

就用了一个库 oathtool, 命令执行的话,就一行:python -m oathtool $key --> 输出一个验证码

请教下大牛们,如何将它用最轻的方式实现一个 http 服务呢,flask 是我能想到的最轻的,有没有再轻点的呢?

No comments:

Post a Comment