首页 文章 精选 留言 我的

精选列表

搜索[思考模型],共10000篇文章
优秀的个人博客,低调大师

FlyFish 开发者说|开源低代码平台的体验与思考

作者: Miss yy,曾就职于凤凰网、京东科技等大厂。擅长 Node.js、Web前端开发、后端开发、运维、测试等技术领域,有丰富且广泛的开发经验。 初识FlyFish 由于我当前所在公司团队业务不断发展,因此需要开发出一个通过拖拉拽这种简单的配置方式就能生成页面、应用,甚至系统的低代码平台。然而,由于公司已有业务非常繁忙,团队开发人员根本无法抽出更多的时间来接手新的需求,因此,寻找一个合适的开源低代码平台便成为了我们新的探索方向。 一个偶然的机会,我与身边的朋友聊起了当前低代码技术的发展情况以及我们公司对低代码平台需求情况。朋友兴致勃勃与我讲了低代码相关的一些情况,并表示现在低代码技术已经发展的相当成熟了,很多开源项目就可以满足我们公司的需求,比如“飞鱼(FlyFish)”。当时是我第一次了解到飞鱼,但是经过朋友的介绍,我发现飞鱼与我们公司当前的需求非常契合。 使用FlyFish 第一次使用飞鱼时,我先是详细了解并查看了飞鱼的技术文档与部署教程。飞鱼的部署文档说明非常详细,尤其是一键部署脚本,对新手非常友好,轻轻松松就可以快速完成部署。然而,由于我们公司只有内网没有互联网,所以没有办法通过仅限于有互联网访问权限,且服务器比较干净的系统才可以使用一键部署功能的来部署飞鱼,所以我最后选择了手动安装部署。在手动部署操作过程中,我们公司的运维同事通过飞鱼提供的部署文档以及NPM相资源,仅仅用了一下午时间,就被告知8089已经可以访问了,这对于我们来说真的很惊喜。 本地部署成功后,我便开始了大屏制作。然而,在大屏完成后的初步导出应用时我发现背景图片竟然没有生效。此时我在飞鱼开发者群内进行了咨询,官方开发者给出了我以下两种解决方案: 方案一:手动删除导出的zip包中背景图片错误路径。 修改导出的下方飞鱼大屏源码配置,删除backgroundImage以及image中多出的www路径即可。 config/env.conf.json 方案二:在 飞鱼 lcapServer 目录内执行以下命令 vim ./config/config.development.js(大约在84行) 并将: applicationPath: commonDirPath ? `${commonDirPath}/applications` : 'applications', 修改为: applicationPath: 'applications', 随后,重启lcapServer,在 lcapServer目录内执行以下命令。之后新建的大屏再导出后就不需要手动去掉导出包中的www路径了。 npm run stop npm run development 经过以上的操作,我终于完成了第一张数据可视化大屏的制作。从飞鱼平台的部署到一张完整数据可视化大屏的诞生,在不断发现问题与解决问题的过程中,我真切地感受到了开源不只是一个人在战斗。 踩坑经验 尽管我轻轻松松地就完成了使用飞鱼的第一步——安装部署操作,但在实际使用过程,还是会有一些大大小小的踩坑经验值得分享。 经验1:飞鱼平台部署成功后,无可用组件 对于一个低代码平台来说,组件是非常重要的。没有组件就意味着无法通过拖拉拽来实现业务需求,也就无法达到降本增效的目的了。 基于这个问题,我快速咨询了飞鱼开发者交流群中的官方开发人员,才知道组件是需要单独依次导入才可以使用的。在此基础上,由于飞鱼(FlyFish)2.2.0版本不兼容FlyFishComponents中的组件,故需要手动修改 FlyFishComponents 中组件的资源路径和组件 ID 为对应的占位符。包含 editor.html、env.js、index.html、options.json、src/main.js、src/setting.js 相关文件修改。 以上文件修改完成后需要将 FlyFishComponents 组件中以上6个文件使用的 ffComp_2.2.0.zip 对应文件全部替换,再导入到 FlyFish2.2.0 平台便可正常使用。替换文件 ffComp_2.2.0.zip,具体操作步骤如下: 替换文件 压缩组件 安装依赖 编译组件(Ctrl+S) 更新上线 方法已掌握,不过30多个常用组件挨个下载、完成文件替换、Zip压缩等操作,工程量还是很大的。此时,我也终于意识到了shell脚本能力的重要性,几行脚本就可以把需要CV(Copy、Paste)半天的工作干完。在 Zip 压缩过程中也有个小插曲,需要注意,Windows下Zip包是不可用的,需要Mac Zip 或者Linux Zip才可以。 经验2:登录飞鱼平台后,进入组件开发页面显示502/404 如下图所示,我在飞鱼部署完成后,进入组件开发页面时,竟然显示502和404了。 这时候,我又马上请教了我们飞鱼项目的官方开发者。经提示,我在服务器执行pm2 ls 时查看了一下 code-server 服务没有启动。随后,我按照 code-server 的启动步骤重新来了一遍,敲完 npm run linux-start,最后按下回车,pm2 ls 看到了下图的 online。 然而,页面刷新后,还是显示502。飞鱼官方开发者让我重新执行了 pm2 ls。然后我发现服务是有问题的,就在这么短的时间内,服务已经重启了167次。如下图所示。 这时,飞鱼官方开发者初步定位是pm2版本有问题或者安装过程中出了问题,让我执行了以下命令重新安装pm2并启动code-server。 cd~ pm2 stop all npm uninstall -g pm2 rm -rf .pm2 npm install -g pm2 在lcapCodeServer中执行 npm run linux-start 然而,上述操作完成后,code-server启动后还是一直在重启。重启的原因大概率是环境里有pm2的残留文件,以及npm卸载不干净。这时,飞鱼官方开发人员建议我使用sudo npm install pm2 --unsafe-perm --verbose -g进行卸载。以上卸载命令执行后,我重新安装了pm2,启动了code-server,至此,服务终于正常了。然而,当我打开组件开发页面刷新时,502是没有了,但404还在,如下图所示: 在飞鱼官方开发者各种检查环境配置后,终于发现了一个环境路径配置异常,如下图所示。这时仅需将下图红框中的路径替换成对应的服务器真实路径即可。 经验3:前端访问地址更新为域名访问 假如域名地址为:pandora.com.cn 更改 nginx 配置 # 域名为pandora.com.cn #打开文件/etc/nginx/conf.d/flyfish.conf #以下三行配置修改成如下内容 listen 80; server_name pandora.com.cn; proxy_cookie_domain 0.0.0.0 pandora.com.cn; 更改env-config #打开文件 /data/app/pandora2/lcapWeb/lcapWeb/conf/env-config.js #修改hostname fontport,修改后内容如下 const hostname = 'pandora.com.cn'; const fontPort = "80"; 重启ngix nginx -s reload 总结 在整体的部署使用过程中,飞鱼官方开发者真正的做到了快速定位问题、光速解决问题。虽然我仅仅使用的是飞鱼开源版,但是飞鱼官方开发者的响应速度让我甚至觉得自己已经付过费了。 最后,感谢各位的阅读,希望上述的这些经验能有助于解决你们的燃眉问题或者给你们技术方面一点点启发,那将是我莫大的荣幸。 开源福利 如果喜欢我们的项目,请不要忘记点击下方代码仓库地址,在 GitHub / Gitee 仓库上点个 Star,我们需要您的鼓励与支持。此外,即刻参与 FlyFish 项目贡献成为 FlyFish Contributor 的同时更有万元现金等你来拿。 GitHub 地址: https://github.com/CloudWise-OpenSource/FlyFish Gitee 地址:https://gitee.com/CloudWise/fly-fish FlyFish贡献指南:http://bbs.aiops.cloudwise.com/d/717-flyfish FlyFish 模版中心: https://www.cloudwise.ai/flyFishComponents.html 微信搜索xiaoyuerwise或扫描识别下方二维码,备注【飞鱼】加入AIOps社区飞鱼开发者交流群,与 FlyFish 项目 PMC 面对面交流。

优秀的个人博客,低调大师

9.11事件二十周年思考:“网络9.11”何时会发生?

震惊全球的“9.11”恐怖袭击事件已经过去了20年,在数字化应用不断发展的今天,恐怖组织是否会发动网络911事件开始备受行业关注。BreachQuest首席技术官Jake Williams指出:“虽然过去了20年,但是我们仍然清晰地记得911事件发生时恐怖。然而,大多数人可能对WannaCry或NotPetya等网络安全事件缺乏关注。” 但越来越多的线索表明,现代互联网技术正在被恐怖组织掌握并用于增强他们的能力,例如影响潜在的恐怖分子,以及资助、招募和培训新的团伙成员。 Cato Network网络安全战略高级主管Etay Maor表示:“恐怖组织现在拥有高度完善的互联网使用模式,并正在大量使用互联网。但目前还并非用于物理攻击,而是将其用于进行信息传播,或进行招募、募资、牟利、管理比特币以及激化思想等等。” 网络9.11是否会发生? 很多网络专家们认为,目前的网络攻击与大多数恐怖组织的主要目标还并不一致。Williams指出:“恐怖袭击会激起广大民众的恐惧心理。虽然网络攻击也有可能引发持续效应,但这需要在访问目标网络后进行大量研究和规划工作,这不符合一般网络攻击者即时盈利的目标。”此外,考虑到大多数关键基础设施中已经实施了‘冗余’安全控制,恐怖组织可能还不具备突破控制范围的专业能力。 恐怖组织更喜欢吸引舆论注意的线下攻击。虽然他们已将网络攻击作为与同流合污追随者交流的一种方式,以及传播宣传途径,但这并没有跨越到特定的网络威胁,例如部署勒索软件或其他类型的恶意软件。 曾任美国国防情报局高级情报官的Roger Caslow认为:“如今世界互联,任何一个民族国家发动网络攻击并摧毁了美国的一个主要机构或商业部门,那么由此产生的经济影响将是全球性的,并且可能会对攻击者所在国家造成同样的破坏。” 废水处理公用事业公司HRSD CISO的Caslow表示:“出于同样的原因,拥有国家或政治背景支持的组织不仅不会进行此类攻击,可能还会阻止此类事件的发生。” 但是事无绝对,尽管基地组织等恐怖团伙尚未明确采用网络模式发动攻击,但Painter表示,我们必须对网络9.11的发生做好准备。他指出:“由于攻击者在暗网上租用或购买的恶意软件、勒索软件和僵尸网络仍然随时可用,因此发动攻击的准入门槛将继续下降。” Painter指出:“我们需要准备好应对恐怖组织可能发动所谓的‘混合攻击’,即在破坏性物理攻击之后,再针对第一响应者和紧急通信网络发起网络攻击,以使得攻击事件无法及时恢复和传达。” 警惕恐怖主义网络 Cato Network的Maor指出,虽然恐怖组织没有直接发动网络攻击,但我们看到许多恐怖组织越来越熟悉和了解互联网的技术与应用,并已经开始利用网络发挥增强自己的攻击能力,其中包括激励目标国家的“支持者”,并提供有关如何发动致命袭击的培训。 其中最臭名昭著的例子,就是发生在2013年的波士顿马拉松恐怖袭击事件。这些恐怖分子很可能在网上了解到制造“高压锅炸弹”所需的信息,并于2013年4月15日,用该炸弹炸死3人,炸伤数百人。 网络安全公司BlueVoyant专业服务全球负责人Austin Berglas表示:“多年来,基地和非法宗教组织一直利用互联网作为其思想的推广平台,用于在全球招募青少年。恐怖组织在实施大规模网络攻击方面目前存在能力短板,他们的能力更多局限于发动DDoS和网站篡改活动,并使用‘雇佣黑客’以及与突尼斯网络军等组织的合作关系来支持自身事业。” 网络安全就是国家安全,因此网络9.11事件尚未发生并不意味着美国或其他可能受到攻击的国家可以放松警惕,因为攻击发生的可能性始终存在并且不断增强,真正的网络恐怖事件发生或许就在不久时间内发生。众所周知,恐怖组织多年来一直在积极侦察包括美国在内的多个目标国家的关键基础设施,并积极招募具备更加专业技术能力的网络人员,构建更具进攻性的网络能力。 【本文是51CTO专栏作者“安全牛”的原创文章,转载请通过安全牛(微信公众号id:gooann-sectv)获取授权】 戳这里,看该作者更多好文

优秀的个人博客,低调大师

记一次mysql协议解析问题引发对索引的思考

近期负责的mysql mycat项目中接了一个需求,添加设置session级别的innodb_lock_wait_timeout,经过一番代码修改可以做到基本支持业务对for update的使用,但是到了测试环境发现出现个别sql会出现异常。 具体现象是当在A表加for update排他锁时,业务通过mycat请求mysql查询加锁的表,会报超时异常。但是在B表加for update锁时,业务发起请求会卡住,并没有报超时异常,但是mycat日志显示数据库正常返回1205,且正常返回了。 后面经过对比排查,发现时mycat源码bug(github上已被修复,我们使用的版本比较低),当数据库返回的包过大时,mycat会申请直接内存buffer用于存储数据,mycat使用完buffer回收Buffer时报空指针异常,导致线程挂掉,业务端接不到后续包所以卡住。 本以为问题就这样结束,但是后续复盘时发现,两个sql均时返回同样的报错信息,为什么一个数据量大,一个数据量小呢? 根据for update的原理,我们先查看下两张表的索引: A表: B表: 再分析了下两条sql的执行计划: A sql: B sql: 两条sql都是以row_id为条件,对比发现问题貌似出在索引上,A表row索引,B表使用的是联合索引。A sql执行计划是const常量级别的,Bsql 则是ref,即B sql是通过索引部分前缀,先找到符合多个条件的行,之后在确定唯一行的。 联合索引本质也是一个B+tree,不同的是联合索引键值数量不是1,而是大于等于二,当B sql执行时,会先去根据第一个键检索B+tree,找到的数据可能并不是一条,所以数据库会先回一部分正常返回包,当检索到被锁的数据后,才会回error包。 再看mycat接收到的包(为了精简只打印了相关包类型): A sql : B sql: 由此发现,B sql比A sql多收到一个fied包,所以B sql返回的数据要大于A sql,导致报错。 之后又将B SQL改造,把其复合索引的两个条件都加上后执行计划和mycat日志如下: 可见当type为const即根据索引找到的数据唯一时,mysql会立刻回Error包,但是若不唯一则可能会先回正常的result Set包,之后报错后再回error包。 由此可见,工作中碰到的问题都是知识点的延申,经过本次问题的解决,在此记录相关知识点为:mysql复合索引的查找顺序 mysql协议返回包时error包不一定是立刻返

优秀的个人博客,低调大师

闲鱼亿级商品结构化背后的思考和演进

作者:闲鱼技术-意境 1. 缘起 闲鱼是一个典型的C2C场景的闲置交易平台。每个在闲鱼的用户都能享受到自由交易的乐趣。在这里,可能你只要简单的输入商品名,商品价格,库存等信息就能完成一个商品的发布。即便是发布以后,你也可以随时修改价格,内容等信息。充分的自由是闲鱼活力的来源,但是这对于一个电商品台来说却有着难言的痛苦。本文要说的商品结构化就是痛点之一。 商品结构化为什么重要?结构化信息是平台认识商品的一个基础。只有平台了解商品的各个属性,才能准确地将适合的商品推荐给适合的用户。这样才能更加高效地为买卖家用户创造价值。 而所以C2C平台的商品结构化之所以难,是因为C商家完成结构化的负担重而动力不足。怎样让用户以最小的成本,来完成结构化就是一个非常大的挑战。我们不能寄希望于商家后台这样很重的解决方案,我们需要的是一个简单高效灵活的解法。 2.

优秀的个人博客,低调大师

Flink SQL 功能解密系列 —— 数据去重的技巧和思考

概述 去重逻辑在业务处理中使用广泛,大致可以分两类:DISTINCT去重和FIRST_VALUE主键去重,两者的区别是DISTINCT去重是对整行数据进行去重,比如tt里面数据可能会有重复,我们要去掉重复的数据;FIRST_VALUE是根据主键进行去重,可以看成是一种业务层面的去重,但是真实的业务场景使用也很普遍,比如一个用户有多次点击,业务上只需要取第一条。本文重点介绍这两种去重的应用。 1. DISTINCT 去重 blink sql支持标准sql的DISTINCT去重。假如我们有如下输入数据,并希望对相同的行进行去重。 sql可以这么写:select distinct * from tt_source;完整的blink sql如下, createtable tt_source(avarchar,bvarchar)with(type=

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册