RFC 6749 - OAuth 2.0

1.RFC 6749 RFC 6749 主要对 OAuth2 做出了一些规范规定,OAuth2 主要分为下列几种模式 授权码 隐藏式 密码式 客户端凭证 第三方应用申请令牌前,必须先到系统备案,拿到两个身份识别码 client_id 客户端 ID client_secret 客户端密钥 2.授权码 1.A 网站跳转 B 网站 1 2 3 4 5 https://b.com/oauth/authorize? response_type=code& client_id=CLIENT_ID& redirect_uri=CALLBACK_URL& scope=read response_type 返回类型 client_id 客户端 ID redirect_uri 重定向地址 scope 权限范围 2.跳转 B 网站后用户点击授权,B 网站携带授权码跳转至 redirect_uri 1 https://a.com/callback?code=AUTHORIZATION_CODE 3....

December 5, 2021 · 1 min · cui

Vmalert

vmalert executes a list of given alerting or recording rules against configured address some command line interface tool configure vmalert 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ./bin/vmalert -rule=alter.rules \ // PromSQL compatible datasource -datasource.url=http://localhost:8428 // Alert manager url -notifier.url=http://localhost:9093 // Alert manager replica rul -notifier.url=http://127.0.0.1:9093 // remote write compatible storage to persist rules -remoteRead.url=http://localhost:8428 // PromSQL compatible datasource to restore alerts state from -remoteWrite....

December 5, 2021 · 2 min · cui

Win下使用 GitBash下安装 rsync

0.原因 不知道为什么MinGW下的sys1.0的rsync不好使,所以需要手动为gitbash安装一个 1.下载点 http://www2.futureware.at/~nickoe/msys2-mirror/msys/x86_64/ 2.对于tar命令的zstd扩展 zstd-1.4.7-1-x86_64.pkg.tar.xz 首先解压 xz -d zstd-1.4.7-1-x86_64.pkg.tar.xz && tar -xvf zstd-1.4.7-1-x86_64.pkg.tar 得到如下几个目录 /usr /usr/bin 这个目录存放了 zstd 的二进制脚本 /usr/share 这个目录存放了man文档和license文件 将 /usr 直接覆盖到 Git 安装目录下 3.安装其他二进制包 libzstd-1.5.0-1-x86_64.pkg.tar.zst libxxhash-0.8.0-1-x86_64.pkg.tar.zst rsync-3.2.3-1-x86_64.pkg.tar.zst 由于前面安装了 zstd 所以这里就可以使用 tar 来解压 .zst包了 tar -I zstd -xvf libzstd-1.5.0-1-x86_64.pkg.tar.zst tar -I zstd -xvf libxxhash-0.8.0-1-x86_64.pkg.tar.zst tar -I zstd -xvf rsync-3.2.3-1-x86_64.pkg.tar.zst 同样将/usr直接覆盖至 Git安装目录下 4.测试 重启Cmd/Gitbash rsync -v

December 5, 2021 · 1 min · cui

Year 2020

1.alpha 致 Liandi https://ld246.com/article/1607769429589。十年磨一剑,一剑破万法,感谢@88250 D哥和@V 姐的努力让我们相遇,感谢链滴让我们于此相遇,畅谈理想,分享生活,传递经验,感受快乐。 我们用程序发声,用爱发电,有非常优秀的编辑器作者,没错就是Spacevim,有Ai专家,iot大牛,中间件大师,网络安全专家,有网警大大,有*图哥。有即将毕业的学生,也有为人父母。 不知从何而起,习惯了每天打开网站分享你们的每一滴酸甜苦辣,一起快乐,一起难过,一起吃瓜,相互鼓励向前奔跑着。 同样,无论出于什么原因,黑客派变为链滴,或者链滴变为链链滴,链链链滴于我而言都无伤大雅,尊重D大的选择,遵从自己内心的选择。加油~ 2021你们会更顺心快乐。 以上。 2.beta 十年太久,只谈如今。 还为2019的收获得意时,夹带着梦幻的2020已然摆在身前。 记得年初,等一人归来时的煎熬,母亲发烧,城际交通停运,父亲异地工作无法回家。好在她平安归来,相谈甚欢最终也无非错过,备下的阿奇霉素和莲花清瘟药到病除,第一次独自开车去外地,高速上急救车飞驰向北,沿途的乡村入口都被填埋了,镇上闯了红灯6分,高速出口测出体温37.4,好在与指标低了0.1度,有惊无险。 在家中早已按耐不住躁动的心情,于是第一个办理了通行证开始2020的工作,与以往不同的是,没有公车,一个人穿行在空荡的街道,不用排队挤进电梯,冷清的办公室,一个人开窗通风,擦桌消毒,烧水热饭,侵占着几百平的大房子,街道再次明亮起来,关灯关窗锁好大门,穿过无人的夜,结束独自忙碌的一天。 接下来就是工作内容了。 在家办公时期写了手机端数据填报,针对于疫情,各地学子每日填报定位和身体状况,让校方第一时间了解学子们的详细情况。适配了APP,WEB,微信公众号。现在每天几万数据入库,还算是比较实用。 一月,二月,学习Google golang。学习基于Gradle的SpringCloud搭建,但是后来放弃了,通常我喜欢小而美的事物,可Spring太庞大了,好比Java中的Java,相比之下,插件化中间件化下的Golang工具包和代码库很实用,很美。 三月,了解K8S,什么是集群,集群规划,Master Node,time sync,Etcd,Scheduler,ConterllerManger,Apiserver,Namespace,Pod,Deployment,命令比如kubectl get pod -n namespace podname -c pod,kubectl describe/exec/log等,最重要的是关于CRD相关的知识。 三月,发生了一件大事,把gitlab搞崩掉了,一次很大的教训,还好数据恢复了,https://blog.eiyouhe.com/articles/2020/03/04/1583324383406.html,三月水了10文,多是关于搭建k8s的shell脚本。 四月,研究了github action文档,动手写了一些action,开始学习青云公司开源的kubesphere和console,kubespere是基于k8s与prometheus的集群监控与在线控制的后台项目,console是与之对应的前台页面。开始研究cobra命令行工具(因为kubesphere用到了),从搭建到了解到copy,四月两份文。 四月,又是一年四月季,来世愿做有人A???四月是你的谎言? 五月出金句,https://blog.eiyouhe.com/articles/2020/05/31/1590936812119.html,倚于清风台,弹指送千波。可以看出五月份还是略有一些凡尔赛,但和D在聊天室他提过一句:真正的情感多是靠简单朴实的文字表现出来的,回想一下民国时期的作家们也多是用朴素的文字表达感情,更为真切,所以后面的风格多少有一些变化。 五月,结合kubesphere与console提炼出的kubeyunzai第一版本落地了,虽然bug很多不能实现的功能很多,但好在是有了运维平台的模型,kubesphere和console的精简框架在github上呦。很开心,又是完成一次自我突破。 六月,维护kubeyunzai第二版落地,页面更美化了,实现了第一版一些未能实现的功能,但由于kubesphere很多api是基于Kubesphere的crd自定义资源所定义的,还是有部分功能尚需时间去研究。 六月,开始学习或是零星使用SpaceVim,对于计算机启蒙电影是一个并不是描述计算机的电影《黑客帝国》开始的,其中有一幕主角在满屏飘着绿色代码的终端背景里躲开了三颗子弹,哇这也太帅了把!SpaceVim原了我一个终端敲代码的梦。@wsdjeg,非常棒的体验,要加油呀~ 六月,和几个好友自驾结伴去了秦皇岛,原文章已删,非常棒的体验+1,略过~ 七月,分别用Java和Golang写了两个爬虫,爬一些标书信息,方便公司开展业务。 八月,在论坛认识了rymcu的站长,他是一个热情,热切并拥有渴望,有炙热内心的一个人,我们聊了关于IOT,关于单片机,关于社区等等许多话题,我也顺理成章的成为了rymcu的混子,站长发来了印有社区LOGO的8051单片机,我为其奉上几篇文章关于Mac搭建单片机开发环境,双手奉上两个拆解自基于python stcgal的nodejs的库。现在手里拿的是小而美的极简8051板子,也超级棒,点亮了第一颗单片机LED。非常棒的体验+1,为此,我要好好学习C语言了。 八月,深入了解了Go是如何编译的,抽象语法树,词法分析语法分析,lex工具,SSA优化,静态单赋值。 八月,学生归校,做了通用性省市区迁徙图Echarts结合Parcel与React,Parcel比Webpack体验良好。 九月,在bilibili发现了博主 稚晖君 https://space.bilibili.com/20259914/ 并往来了邮件,他是oppo的工程师,现在应是应邀了华为的天才计划吧。简而言之这个人较为惊艳,之前我一直在思考,纯软件对于我和他人真的有什么太大的改变吗,纯软件是泡沫吗诸如此类的问题,经过很长时间的思考,感觉做纯上层应用还是有一种伸手抓棉花糖软绵绵不踏实的感觉,并且我是一个非常喜欢高达的人,从Seed,oo看到UC新版到巴巴托斯…,最喜欢独角兽,独角兽象征着可能性,也称为希望之兽,可能性之兽,可能性这三个字充满了憧憬和浪漫。回归正题,稚晖君更加坚定了对于自己从业选择的路途,一定要成为软硬皆可施的优秀人才呀~~~还有造高达的梦~。 十月,备战成人高考,学习markdown数学公示,使用链滴记录马克思主义数学公式之英文单词,其实就是政治英语数学啦,之前一直没考是因为也不太重视这种东西,毕竟不算是名正言顺的学历,考它是想试试自己行不行,抱着试试的态度去了考场。 十一月,深入了解Prometheus,Antv,结合redis_exporter放出的指标写了redis_prometheus_dashboard,监控redis运行情况,写这个是因为我们的redis总是崩溃,不知为何。Antv是阿里大儿的图表库,学习了一些图形理论,结合指标画了一些图表。 十二月,通过对redis_exporter的实验,结合以前的知识做了业务数据抓区dashboard.展示一下吧。排名,日志增长,业务点,全都是动态带历史数据的呦(因为Prometheus像是个时间序列数据库),更方便我们的大BOSS做决策了。 十二月,这些技术最终为了建立真正的数据中心展厅作准备。加油Myself!!! 十二月,查成绩,被录取。ye~ 十二月,就在刚刚,完成了prometheus-exporter流程博客,很仓促。https://blog.eiyouhe.com/articles/2020/12/31/1609418089449.html 以上是今年部分大块儿的内容,所谓的比如写文档啦,令人头疼的东西没有写,如果没有社区,没有SOLO,我不会有这么快的进步,感谢D大,感谢前进路上遇到的每一个人。 今年属实不景气,人才接连离开公司,无比惋惜,都是曾经为共同事业奋战的战友呀,皆是我志同道合之士,惋惜。从前端技术经理平调到了研发经理,不拘泥于前端了,要让我做更多的事。培训,框架,业务,文档,这那的啥都干了。这可能是第一个目标全栈的具体实现吧。 3.gamma D大分享的是十年,那就以如果你还在就好了来纪念十年间,失去的,错过的,未遇的,错付的,爱过的也恨过的。 起初是这样写的,但今天写的时候又觉得,起码现在还有许多对我好的人就在当下,不可辜负之,不应在为过去而神伤,应为未来,未来的我们而温暖,陪你度过漫长的岁月吧,我们来一起度过这些剩下的日子。 记得十年前的QQ最后一条签名“十年生死两茫茫,不思量,自难忘”,殊不知像魔咒一样萦萦绕绕已然十年过去了。密码早已记不起,空间里有一张老照片,密码也忘了,但照片中的人是永远无法相忘的。十年的光阴随其一同封尘于此吧。 夏是路边闪烁的长明灯,湿透的衣衫,扇叶和蝉相伴嗡鸣,雨水滴入泥泞的模糊,是雨夜里鲁莽的奔跑,相拥,相安。 秋是清晨朦胧中的迷惘,一夜积满长街的叶,干涩的风伴着咯吱声,秋雨似针滴滴落在身上,扎于心头。 冬是利刺的风无孔不入,窗户被拍的震颤,卷着灰哀的雪带上长空,飘舞着满天的孤寂和苦,也是午间办公室的慵懒,更多的,是我意难平。 春夏秋冬,周而复始,多情应是我,不变也是我。 2020-10-10,25岁的晚上表白了,其实初心是想恢复朋友在慢慢发展,但不知道当时脑门在想什么很唐突现在想来也很傲慢。...

December 5, 2021 · 1 min · cui

Year 2020 05

月明船笛参差起,风定池莲自在香。 微凉的晚风拂起千百片树叶,微微颤动像与你暗送秋波,路边沟渠还未蒸发的水面浮现出各色的灯光,偶尔传来碰杯的声音,清晰可嗅的羊肉味儿,淡妆浓抹风姿绰约的女人和女孩儿们。寂静怡人不失迷人诱惑的夏天终于又来了。 2020年五月31日,周日,晚10点03分。倚于清风台,弹指送千波。 如梦幻泡影,如露亦如电,描述今年,可能最合适不过了。八分梦幻,二分惊叹。平地惊雷一般磨难便迎面而来。 有利有弊,于个人言这是一场短暂又漫长的假期,于公司可能会砸了众人的饭碗。 专业上有所精进,学习了一门新语言google golang,不得不说脚本语言真快乐,相比而下java像是老爷车。 工作上在这段特殊的日子里,也用自己的能力做出了一点点微小的贡献吧,完成了 数据填报 的一些功能,不足之处在于,想的太大,做的太少,时间仓促,不太牢靠。 生活上,留了一些时间出来,去市场买菜,学习了更多样式的菜。 补了类斯里兰卡,红帆,傲慢与偏见等欧洲老电影,也拿出了泡面用的kindle重读了挪威的森林和人间失格,日本作家大多极致浪漫,极端主义路线较多,十分入骨毫不留情,这是十分吸引人的地方。而中国作家显得尤为朴实,字里行间一股泥土的气息,由小见大,平淡深刻。 在自身问题上,好好的思考自己,微信又进行了一次断舍离。 坦白而言本想当一个作家亦或是十八线短篇小说写手,可现实是曲折离奇的成为了一名coder。 本想用文字理解世界,却落得用头发编写人生。 内心深切渴望的,应是理解,相互理解,撇弃极利己主义的理解,撇弃傲慢和偏见的理解,从文字也好,言语也罢,你一定也相信人类是有灵魂的吧,这也是所期待的,渴望找到万千中十分契合的那些灵魂,体现在思想上或是心灵上。 相逢意气为君饮,系马高楼垂柳边。可惜的是,行色匆匆的人群中就连目光都是奢侈的,更别谈灵魂的碰撞,希望的只沦为了希望。 越来越和气,越来越不会发脾气,不是真正的和解,是发自内心深处的鄙弃。 最近一个月买了许多新衣服,新衣服总有一种令人昂首挺胸自信前行的魔力,实际上是为了应付相亲而已。觉得生活像是苦难,就变得很有趣,遇到不好的人倒也免不了尖酸刻薄,字字珠玑。 有一个人呀也曾经是你的太阳,到了划清界限的时候就不能带水拖泥。 开始进行去年的计划读鸟哥,开始变得更专业更寡言少语,开始留头发…… 半年而来也算是没有白费 最后,希望下个月开学季少出bug,可以招到新人,可以披荆斩棘搞定所有问题~

December 5, 2021 · 1 min · cui

关于微前端实现原理与ngx-planet(一)

微前端? 简单来说 从使用角度考虑 D应用是由 ABC三个应用/组件组合而成,通常在Angular/Vue/React单项目中很容易实现,但为了复用解耦,D应用现由3个独立部署并带有通信机制的应用/组件组合而成。 从部署角度考虑 A,B,C,D为并行四个打包后的静态文件,当有E应用使用A,B,C,D应用中的组件或者事件时通过类eureka 服务发现注册的方式去复用组件或应用。 当然,这只是众多思路中的一种 当然,这只是众多思路中的一种 当然,这只是众多思路中的一种 好处: 应用自治: 只需要遵循统一的接口规范或者框架,以便于系统集成到一起,相互之间是不存在依赖关系的。 单一职责: 每个前端应用可以只关注于自己所需要完成的功能。 技术栈无关: 你可以使用 Angular 的同时,又可以使用 React 和 Vue。 这就好像使用k8s集群和grpc调用一样 架构模式 基座模式: 通常有一个main/portal应用来充当基座,提供基础服务,剩下的应用可插拔在基座上。好像dashboard和widget的关系 自组织模式: 各个应用平级不存在相互管理 实现思路 基于基座模式的微服务无非是 服务发现,服务注册,服务调用等功能 基座应用: 主要应有注册表,通过各个应用标识存储key:component|application 以应对路由不通渲染哪个应用 工程逻辑/应用管理/加载: 先看成一个黑盒 路由分发: 通过对url规则和分析出渲染哪个应用/组件,经过黑盒渲染到需要渲染的dom上 难点 Load,决定加载哪个应用,并绑定生命周期 bootstrap,获取静态资源 Mount,安装应用,如创建 DOM 节点 Unload,删除应用的生命周期 Unmount,卸载应用,如删除 DOM 节点、取消事件绑定 单个浏览器多个应用还需做到 状态|css 共享/隔离...

December 5, 2021 · 8 min · cui

关于微前端实现原理与ngx-planet(三)

1.为什么要服务端渲染 因为公司后端服务在k8s上,是分布式的微服务,之前端全部打包部署在了物理机器(虚拟机)nginx上,如果通过helm做应用商店的话,nginx前端这部分无法处理,包括灰度部署,CI等,全部都只能做到接口级别的处理,并不能连带静态资源文件一起处理,所以基于分布式的前端整改迫在眉睫。 偶然发现了ngx-planet,整篇文章基于前几篇文章,可以看之前的几篇文章。 2.如何基于ngx-palnet进行服务端渲染 2.0 有路由前缀的情况下服务端渲染ngx-planet如何改进 在 start函数中监听路由阶段,其中的 startWith过滤路由要把 location.pathname修改好,要将前缀去除掉,至于如何动态去除不写死,仁者见仁智者见智。 2.1 首先,准备打包好的静态文件 将 build命令修改,注意 --deploy-url的意思是,打包完成后,静态资源路径是什么 1 2 "build": "ng build --prod --deploy-url=/static/star-universe/ --base-href=/star-universe", 打包后的index.html如图,静态资源路径变成了 /static/star-universe前缀,这里和 base-href不能冲突,否则在渲染时有死循环问题 其次 base-href就是项目访问路径前缀 然后修改 angular.json中的 build放到你的静态资源目录,这样在执行 npm run build后静态资源自动放入后台项目中的静态目录中 2.2 准备Portal后台项目 我的项目基于SpringBoot自动生成,项目结构如下 以下是用到的maven配置文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 <?...

December 5, 2021 · 2 min · cui

关于微前端实现原理与ngx-planet(二)

道标 准备好源码,然后跟着文章去看代码,在每个代码块的第一行,我都把 filename 写上了,并且打开了 gitalk。 项目结构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 - packages/planet |--src |--application |--planet-application-loader.spec.ts |--planet-application-loader.ts # 应用加载器 |--planet-application-ref.spec.ts |--planet-application-ref.ts # 应用的引用 |--planet-application.service.spec.ts |--planet-application.service.ts # 应用逻辑处理Service |--portal-application....

December 5, 2021 · 26 min · cui

关于微前端实现原理与ngx-planet(四)

客制化 由于公司和公司的业务不同,所以在ngx-planet的基础上,需要作出一些针对于业务的拓展 目前分出四个基础项目 @yunzai/stars:封装了用户认证,元素权限,i18n等系统初始化信息的内容,需要发包的,意为繁星. star-universe: portal项目,所有子前端项目的入口,意为宇宙. star-dust:一些可能会通用的components都放到这个项目里,统一管理,意为星尘. star-uranus:模版项目,意为天王星. 开发环境 可以看到桌面共有四个编辑器,开发时需要跑起其中三个项目. star-universe,star-dust,star-uranus @yunzai/stars 因为是基础包,所以扩展了哪些功能点,先做一个介绍,因为发包,所以planet前缀都被我改名成为了star前缀,针对于ngx-planet加载过程请看前一篇link start。 接下来看项目结构 首先基于ngx-planet加入了auth,config,i18n,providers,stomp,token,user这些文件夹 module 针对于Module做出了以下改良 加入了TranslateModule来写i18n 加入了Inject的静态配置类StarConfig 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 /* * @Author: ferried * @Email: harlancui@outlook....

December 5, 2021 · 3 min · cui

在IPAD上调试Flutter应用

1.Flutter 环境 1.1 安装dart 1 2 brew tap dart-lang/dart brew install dart 1.2 安装flutter 1 git clone https://github.com/flutter/flutter.git 配置环境变量 1 2 3 4 5 export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn # 这里换成你自己clone的地址 export FLUTTER_HOME=$HOME/Sdks/flutter export PATH=$PATH:$FLUTTER_HOME/bin 2.Android 环境 2.1 sdk 1 brew install --cask android-sdk 配置环境变量 1 2 3 4 5 # 后面的数字会灵活变动,使用brew info android-sdk查看路径 export ANDROID_SDK_HOME=/usr/local/Caskroom/android-sdk/4333796 export ANDROID_SDK_ROOT=/usr/local/Caskroom/android-sdk/4333796 export ANDROID_NDK_HOME=/usr/local/Caskroom/android-sdk/4333796/ndk export PATH=$PATH:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_NDK_HOME:$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_HOME 2....

December 5, 2021 · 1 min · cui