未载入sso登录模块,有哪些软件堪称神器

彩虹网

未载入sso登录模块,有哪些软件堪称神器?

今天,我要把压箱底的宝藏神器拿出来啦,这几款工具,每一款都有其过人之处。我在工作中经常用到,推荐给很多同事后,大家也都爱上了这些软件。不藏私,在这里全部分享给大家♥~

1、一键抠图:图片编辑软件

一键抠图,是我觉得使用感受较好的一款软件,不仅支持抠图操作,还有证件照制作、图片编辑等功能,轻松解决图片编辑的基本问题。

未载入sso登录模块,有哪些软件堪称神器

同时,该软件的批量抠人像功能非常好用,导入多张照片后,系统会自动抠取并保留图片的主体,同时在编辑框内能够对图片进行改尺寸、换背景等操作,提供多种尺寸、背景模板可选择。

不会ps的宝子们一定要冲!

2、伙伴云:数据协作工具

怎么提高工作效率,原来是我很头疼的事。做表、汇报、分析对我来说都是费时费力。现在工作效率的大幅提升,没伙伴云我还真的不好做到。

之前用Excel学了半天的自动编码,在用伙伴云系统设置一次之后就能自动生成,省了大把时间出来!后来发现,不只做表,更多数不清的复杂数据分析,通过系统就能实现汇总,自动生成报表。还有数据大屏等功能,帮我可视化呈现数据,在向领导汇报工作时最实用。

办公的时候,除了自己任务的完成,团队协作也是一大问题。使用伙伴云,我自己现在的办公完全自动化,不用自己倒腾数据,数据自动流转。特别是在居家办公更方便了,各个岗位有自己的工作台,任务划分明确,权限的设置也一清二楚,省去不少沟通时间。

但功能比我想象的更强大,到现在都还没解锁完伙伴云全部用法。

小到表单收集,大到客户管理、项目管理、工单管理、进销存、业务流程、经营财务甚至全流程管理。绝对的职场人办公神器,你能像搭积木一样自己设定场景,根据你的想法尽情探索体验~

3、Canva可画:专业设计平台

提到神器,一定是在使用之后让人内心舒畅,发自内心的赞不绝口。

我认为Canva就是这样的一款使用感受极好的专业设计平台。

我从事新媒体行业好几年的时间,对于使用的各种封面、素材开始希望更加规范、严谨。所以,就不希望再像之前那样随便找一张图片就做文章封面。

在这个过程中尝试了很多款设计、图像相关的软件,要么是效果差强人意,要么是门槛太高。

Canva在这个时候让我眼前一亮,智能抠图、字体特效、排版,丰富的海报、模板、素材,人性化的设计,让我这种非专业人士都可以很容易上手使用,制作出非常有设计感的作品。

让人觉得良心的是,这款软件里很多版权素材对于个人用户都可以任意使用。

4、CopyTranslator:英语翻译神器

不论你是学生还是参加了工作,都或多或少不可避免接触英文文章,像我一样大学六级低分飘过的伙伴们一定少不了翻译软件。但是常规的翻译软件总是有以下痛点问题:

来回切换屏幕、复制、粘贴比较麻烦。人工翻译不仅贵而且效果不好。用谷歌或百度翻译的时候,复制一段文章,拷贝到翻译框里,到换行符的位置会中断,翻译的混乱不堪,还需要一个一个的把换行符删掉。

CopyTranslator作为一款英语翻译神器,让翻译过程中变得快捷方便,而且,这款软件还支持点按复制、监听剪切板、专注模式,能同时解决上述3个痛点。完全可以满足学习或者工作的需要,找到这个软件,各种材料翻译我都没在怕了!

5、Ditto:剪切板工具

我们经常习惯用ctrl+c、ctrl+v进行复制粘贴,但是偶尔会遇到这样的问题,就是前面刚复制过的东西被这次复制的给覆盖了,当想要粘贴是只能重新去ctrl+c。

因此,剪切板对很多人来说依然是一个痛点。Ditto是我唯一的剪切板管理工具,非常实用,能够存储每一条复制的内容,如果想要找之前复制的内容只需要ctrl+就可以调出管理界面选择所要的内容。简直不要太方便!

6、天若OCR:文字识别工具

其它的文字识别工具我不是很清楚,但对于这款国产文字识别工具我真的是非常喜欢。

作为一款完全开源免费的文字识别工具,它不挑系统,不管你是那个操作系统,它都能安装,而且软件大小只有100多KB,安装非常方便。

第二个就是支持多种识别功能,包括图片、表格、公式等多种,它都可支持识别,最关键的是识别率特别高。

有了它,工作效率噌噌往上提高。

7、一个木函:多功能工具箱

还有最后一个小众的实用软件,也是我的宝藏好物:一个木函。

一个木函内存只有7M,却提供了与日常、图片、设备、文件、文字处理等等相关的80多种工具。一款软件相当于几十个软件。

它支持的功能有:生活类型,工具类型,系统类型,极客类型等等;并且软件整体是清新简洁,让你十分舒适。

这里简单列举它的部分功能:音乐免费下载 ,WIFI密码查看 ,网络测速,尺子,以图搜图,氢壁纸,视频提取音频,图片转链接,B站视频封面获取,云音乐广告禁用,带壳截图,网页源码获取,应用管理:应用冻结,提取应用图标,提取安装包,提取系统应用。

最后,你还可以利用这么软件的工具搜索功能,轻松找到你需要的功能。对我来说,真的做到了“小身体大能量”。

更多小众但实用软件分享别忘了关注@伙伴云哦~

持续更你带来更多优质内容~

如何获取最大景深与最小景深?

这是一个好问题。景深的控制,是摄影中一个非常基础但又需要非常重视的一个内容。要了解景深的特点,控制景深,就必须了解景深大小的决定因素,并通过一些后期手法,获得想要得到的景深效果。

从前期的角度来说,景深最相关的是镜头的光圈、拍摄距离和镜头的焦距。从后期来说,我们可以通过虚化背景,或景深合成的方式,获得小景深或大景深的效果。以下详细说明!

一、景深的定义

百度对景深的定义如下:

景深(DOF),是指在摄影机镜头或其他成像器前沿能够取得清晰图像的成像所测定的被摄物体前后距离范围。光圈、镜头、及焦平面到拍摄物的距离是影响景深的重要因素。

我们再用一张图来说明,景深的意思:

可以看到,景深分布在对焦点的前后,其中前景深较后景深为小。

二、景深的影响因素

景深影响因素主要有三个,其一是镜头焦距;其二是焦平面到拍摄物的距离,简单说就是相机到拍摄物的距离;其三是镜头所使用的光圈大小。这三个因素我们分别来说一说(特别说明,这三个要素的比较,一定要先固定另两个,再来比较才有意义!):

1、镜头焦距越长,景深越浅,焦距越短,景深越大

中长焦的镜头容易获得浅景深,而广角镜头,则容易获得较大的景深。所以,超广角适合用于风光摄影,而中长焦适合拍人像。当然,关于镜头的应用,也并不是那么绝对,只是在风光中,比较普遍的做法是从前景到背景的都很清晰。

2、镜头光圈越大,景深越浅,光圈越小,景深越大

佳能成功的不是EOS R而是随着EOS R推出的RF卡口与RF镜头,而50 1.2 85 1.2等大光圈,是人像摄影的最爱。而在拍风光的时候,我们通常是将光圈放在非常小的地方。

当然,非常小的光圈也要注意,首先不能使快门速度低于安全快门,当然有三脚架除外;另外就是过小的光圈,成像质量就开始下降了。

3、拍摄距离越小,景深越浅,拍摄距离越远,景深越大

拍过微距的都知道,由于离被摄物非常近,所以成像中的景深就非常浅,所以需要用小光圈来进行景深调整。而拍摄距离越远,则景深越大,越容易将其前后左右的景物都拍摄清晰。

三、获得最大景深的前期拍摄方法

从上面的景深影响因素分析,也就是用广角镜头,配合小光圈,远离被摄物体,能够获得最大景深。

同时,我们也了解了前景深和后景深的相对大小问题。因此在获得最大景深时,应将焦点置于略靠近镜头的位置。

不过需要注意的要点是:

1、广角的变形问题

广角镜头,会有畸变的现象发生,特别的象超广角镜头,则变型现象较严重,特别是在画面边缘。

2、光圈过小的问题

光圈小于一定的阈值,则成像的质量会快速下降!

3、安全快门问题

越小的光圈,其所需快门时长越长,则产生糊片的可能性提升。同时如果为确保安全快门,提升ISO,则噪点可能增加。

4、拍摄距离有时身不由己

这是一个现实问题,有时候我们并不能主动调整拍摄距离,而只能被动接受。

四、获得最小景深的前期拍摄方法

同理,要获得小景深,应该选择尽可能长的焦段的镜头,拍摄时尽量采用大光圈,并尽可能靠近被摄物体。

这里同样有几个注意事项:

1、最大光圈不一定可用

特别是单反镜头,其最佳成像光圈往往不在最大光圈处。

2、拍摄主体的主要部分应置于景深之内

由于景深很浅,如果物体大小超过了景深的范围,应确保物体的主要部分置于景深之内。比如我们拍摄人物,应确保人脸的主要部分置于景深之内。否则有可能出现一只眼睛实焦,另一只眼睛虚焦的现象。

五、拍摄时的景深控制技巧

1、景深优先拍摄模式

部分相机具备景深优选模式,即通过对准希望的景深区间的前点和后点进行对焦,由系统决定曝光参数,从而获得想要的景深效果。

2、景深预览

由于我们通常是使用最大光圈进行取景,无法实时预览到实际景深效果(部分索尼微单具备景深实时预览功能),此时部分相机支持景深预览功能,即通过按下相应按钮,镜头光圈收缩到所选大小来预览拍摄效果。

六、后期处理中的景深处理

1、景深合成

景深合成是指前期在拍摄时,通过固定视角,拍摄不同对焦点的同一组画面,将其导入PS,通过堆栈的方式合成一幅景深较大的照片。这种方式在微距摄影、风光摄影中都非常有用。

2、虚化背景获得小景深效果

在PS中,我们可以选择背景和前景,对其进行一定程度的高斯模糊。从而获得主体清晰,前景和背景都模糊的效果。这里需要注意在选取前景和背景时一定不能选中主体部分。同时也不能做的太过,否则效果会过于失真。

景深是我们在拍摄时需要非常注意的一个重要内容。不同景深的照片,能够表达不同的主题构思。但也需要注意景深并没有定式,并非拍人一定要小景深,拍风光一定要大景深。只有根据自己的构思选择恰当的拍摄手法结合有效的后期处理,来获得所需要的景深效果,来实现自己的创意,才是成功的摄影!

什么叫基础摄影?

在摄影这个领域中,其实并没有基础摄影这个讲法,准确来说应该叫摄影基础,就是熟练拍摄时所需要用到的基础知识和设备使用。

我在教初学者时会把摄影基础分为两大块

第一:理论篇

首先你得知道单反的运行原理,我们进行拍摄的时候,快门的每一次开合,都会让光线通过镜头,覆盖在CMOS(感光原件)上,在通过处理器计算,最终成为一张照片,而相机的这个过程,我们称之为曝光。曝光也分为过曝(画面太亮)与欠曝(画面过暗)两种错误曝光,和正常曝光三种。那么想要拍出正常曝光的画面,就需要通过是三个曝光参数之间的组合来控制,分别是ISO(感光度)、光圈、快门。ISO控制整体环境明暗,光圈控制镜头的进光量,快门控制曝光时长。只要掌握好了这三样,在对焦准确的前提下,你就能拍出一张照片。

第二:设备篇

设备分为拍摄设备和辅助设备。

拍摄设备:顾名思义就是用来拍摄的器材,就目前来说拍摄器材有很多种,手机也算是其中之一,更多爱好摄影的人都会选择使用专业设备来进行拍摄。主流设备多是数码单反和微单,目前国内使用的两大单反品牌分别是佳能和尼康系列,两家各有所长,所以没法分个第一第二。微单品牌主要是索尼和松下系列,同样各有优势。具体的选择得看你想从事哪方面拍摄了。

辅助设备:就是辅助你进行拍摄的设备,最常用的就是三脚架了,因为很多时候因为快门速度的原因,想要拍出清晰的照片,就必须得配合三脚架进行拍摄,例如:延时摄影,慢速摄影。还有闪光灯,延闪器以及反光板的使用,像滑轨、摇臂之类的是属于视频拍摄的辅助设备了,由于涉及到进阶学习,这里就不过多介绍了。

总结一下

所谓基础摄影,就是熟练掌握拍摄必备的单反曝光设置、对焦,镜头选择等知识,在加上辅助设备的运用。

以上就是我对于你问题的回答,希望能够帮助到你。我是呦呦影视园如果你有更多关于摄影方面的问题,请关注我,我会为你解答的,谢谢!

国内低代码平台有哪些?

随着低代码概念的火热,相关的技术及产品也是层出不穷,不管是老牌行业软件厂商还是开放平台厂商,不论是互联网行业企业SAAS软件新动向还是新兴的低代码创新产品服务,都在第一时间打出了低代码这张牌。各个平台虽然各有优势,但大多又是自成体系,真正在企业方面进行选择时却一时难以抉择。对于低代码平台的功能评价,以及各平台组件间的互联互通则成为了市场上迫切需求。

在刚刚过去的2022年,在平台互联互通的方面,阿里在第二季度推出开源引擎 “LowCodeEngin”,国家队信通院也应市场需求在第四季度推出了《低代码开发平台通用技术要求》,针对低代码相关概念以及功能点新型了进一步的规范和梳理。

在全面开放的大背景下,CodeBee团队,推出了基于开源LGPL协议 低代码引擎(LowCodeEngine)。

二,产品组成低代码引擎,由界面设计器、OneCode通码框架以及,DSM领域建模工具 三部分支撑体系相互支撑的部分来组成,通过开放标准的组件协议完成相互继承支持。

(1) 视图设计器引擎设计器,采用的是拖拽引擎+插件的构造模型,用户可以通过开放的低代码协议编写插件。支持JS和JAVA两种扩展语言。样式构建提供了标准CSS3编辑器,支持事件动作以及函数动态扩展。支持自定义函数库扩展,支持阿里字体图片等资源库。

(2)OneCode通码编辑器:OneCode,是一款为低代码语言定制的统一语法体系,采用Java语言作为原生语言,运行在JVM环境中,用户可以通过Java语言与低代码应用进行交互,也可以通过Java语言完成引擎插件,调用代码引擎完成编译部署应用。

(3)DSMEngine领域建模:DSMEngine 是独立于设计器的OneCode建模工具,平台采用领域建模模型,支持仓储管理、聚合应用,以及CodeFactory输出为OneCode代码编译输出。

DSM模型支持三种建模模式:

(1)CodeFrist 代码优先模式

通过Java语言 OneCode 模式原生撰写。

(2)ViewFrist 视图优先

通过视图引擎拖拽完成前期的交互模型,反向完成DSM模型。

(3)ModuleFrist 模型优先

通过数据库,微服务接口等模式,构建基础模型。

DSM逆向转换

通过不同方式完成的DSM模型,可以通过OneCode 在视图、Code 、以及Module 三种方式之间自由切换,利用相关工具完成仿真调试以及部署运行。

DSM第三方语言转换

DSM出码模块采用了独立的模板架构,除了可以以OneCode形式存在,还可以支持独立的出码模块定制独立的第三方语言模型输出。

三,设计器引擎介绍(1)功能概览

(2)设计器布局

设计器引擎是低代码引擎前端的SDK,面向开发人员,他本身不是一套可以适应所有人的低代码平台,而是技术开发人员可以通过扩展插件,周边生态,完成自身业务的定制,实现协同办公,CRM客户管理、物联网平台等通过低代码能力赋能业务系统

(3)物料库

"物料":低代码引擎的核心目的之一是建设跨行业的低代码框架,而每个行业由于其应用的领域不同,使用的人员以及方法方式不同,在一些底层组件方面会有会有加大差距。比如:政府业务中会大量使用的非规则表单元素,企业应用中各个行业自有的图标体系,物联网行业大量的设备图标图片以及实时联网图。

(4)组件库组件定义:可以用于低代码平台的组件,包含了搭建体验增强配置,可以在设计器中 进行拖拽、配置等操作。有两种分类方式:按照场景可以分为基础组件、业务组件、图 表组件、布局组件和复合组件等。通常用户可以自主完成相关设定,并根据业务特点在视图引擎中进行自行扩展(后续章节中会演示实际注册示例)

组件通常是一组完成特定功能的可交互组件,根据不同的引擎模式,在引擎中完成加载渲染配置。

配置示例

Code转换

组件调试导入

(5)支撑管理公共资源导入

(6)样式体系

DOM树透视样式盒

DOM树透视

添加图片注释,不超过 140 字(可选)

配图示例代码

{ "alias":"BuildTreeTreeView", "key":"xui.UI.TreeView", "host":this, "properties":{ "name":"BuildTreeTreeGrid", "items":[ { "borderType":"none", "caption":"JAVA树", "dynDestory":false, "hidden":false, "id":"getBuildTree", "imageClass":"bpmfont bpmgongzuoliuxitongpeizhi", "tagVar":{ } } ], "iniFold":false, "dynDestory":true }, "CS":{ "KEY":{ "color":"#000000", "font-weight":"lighter", "border-radius":"0px 2px 0px 0px" }, "BAR":{ "font-family":"tahoma,geneva,sans-serif" } } }

动态样式盒

添加图片注释,不超过 140 字(可选)

代码配置示例

{ "alias":"xui_ui_cssbox1", "key":"xui.UI.CSSBox", "host":this, "properties":{ "className":"xui-css-ame", "normalStatus":{ "color":"#eeeeee", "border-radius":"6px", "box-shadow":"inset 0px 1px 0px #87C1DD", "text-shadow":"0 1px 0 #297192", "$gradient":{ "stops":[ { "pos":"0%", "clr":"#4BA3CC" }, { "pos":"70%", "clr":"#3289B2" } ], "type":"linear", "orient":"T" }, "cursor":"pointer", "border-top":"solid #3899C6 1px", "border-right":"solid #3899C6 1px", "border-bottom":"solid #3899C6 1px", "border-left":"solid #3899C6 1px" }, "hoverStatus":{ "border-radius":"0px 3px 0px 0px" } } }

(7)事件框架

添加图片注释,不超过 140 字(可选)

配置代码示例:

{ "alias":"BuildTreeTreeView", "key":"xui.UI.TreeView", "host":this, "properties":{ "name":"BuildTreeTreeGrid", "items":[ { "borderType":"none", "caption":"JAVA树", "dynDestory":false, "hidden":false, "id":"getBuildTree", "imageClass":"bpmfont bpmgongzuoliuxitongpeizhi", "tagVar":{ } } ], "iniFold":false, "dynDestory":true }, "events":{ //获取数据 "onGetContent":{ "actions":[ { "args":[ "{page.ReloadChild.setQueryData()}", null, null, "{args[1].tagVar}", "" ], "desc":"设置扩展参数", "method":"setQueryData", "redirection":"other:callback:call", "target":"ReloadChild", "type":"control" } ] }, //数据项选择 "onItemSelected":{ "actions":[ { "args":[ "{args[1].id}" ], "conditions":[ { "symbol":"non-empty", "right":"", "conditionId":"_nonempty_{args[1].className}", "left":"{args[1].className}" } ], "desc":"删除存在页", "method":"removeItems", "target":"BuildTreeTab", "type":"control" } ] } } }

(8)动作调用功能概览

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

配置实例代码:

{ "args":[ "{page.ReloadChild.setQueryData()}", null, null, "{args[1].tagVar}", "" ], "desc":"设置扩展参数", "method":"setQueryData", "redirection":"other:callback:call", "target":"ReloadChild", "type":"control" }, { "args":[ "{page.ReloadChild.invoke()}", "temp", null, "{args[2]}" ], "desc":"子节点装载", "method":"invoke", "redirection":"other:callback:call", "return":false, "target":"ReloadChild", "type":"control" } ] }

(9)插件体系插件是嵌入到设计器的内置管理功能,不同于业务组件,插件更多的是系统极的扩展功能。在实际应用中也比较常见,如系统运行期我们要根据用户不同显示不同内容数据,这就需要权限插件来完成,而业务用户在使用过程也会涉及到大量的业务和数据的流转功能而这些功能则需要动态的来管理页面的属性,甚至动态生成注入页面。这就需要流程插件来辅助完成。 在实际开发过程中特别是真实项目的工程开发时,我们往往要针对工程方面的进行很多的宏操作比如批量的修改特定组件样式,按特定条件检索复制组件特性,自动添加动作等等。这些都需要类似的宏插件来完成,OneCode 在整合后端运行以及服务部署方面也是按插件体系来规范的。分别针对,DSM建模提供了DSM插件,发布管理及运行提供了OPS插件, API整合方面提供了代理服务器插件,系统插件部分采用全开源方式共有需要的用户自行修改方便用户后期可以参照插件体系来修改自身的插件体系。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

四,OneCode中后台OneCode 本身基于JAVA语言体系,是在Java Spring 注解基础上的一套扩展子集,可以在普通额Java程序中通过添加注解,来实现前后台与低代码引擎的交互处理。

(1)渲染原理

(2)示例展示

添加图片注释,不超过 140 字(可选)

(3)完整模块OneCode

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

@Controller @RequestMapping("/admin/org/person/") @MethodChinaName(cname = "人员管理", imageClass = "spafont spa-icon-login") @Aggregation(sourceClass = PersonService.class) public class PersonAPI { @RequestMapping(method = RequestMethod.POST, value = "Persons") @GridViewAnnotation() @ModuleAnnotation( caption = "人员列表") @APIEventAnnotation(autoRun = true, bindMenu = {CustomMenuItem.reload}) @ResponseBody public ListResultModel<List<PersonGridView>> getPersons(String orgId) { ListResultModel<List<PersonGridView>> resultModel = new ListResultModel<List<PersonGridView>>(); List<Person> personList = new ArrayList<>(); try { personList = getService().getPersons(orgId); resultModel = PageUtil.getDefaultPageList(personList, PersonGridView.class); } catch (Exception e) { e.printStackTrace(); } return resultModel; } @MethodChinaName(cname = "人员信息") @RequestMapping(method = RequestMethod.POST, value = "PersonInfo") @NavGroupViewAnnotation() @APIEventAnnotation(callback = {CustomCallBack.ReloadParent, CustomCallBack.Close}, bindMenu = {CustomMenuItem.editor}) @DialogAnnotation @ModuleAnnotation(caption = "编辑人员信息", width = "800", height = "550") @ResponseBody public ResultModel<PersonNav> getPersonInfo(String personId) { ResultModel<PersonNav> resultModel = new ResultModel<PersonNav>(); return resultModel; } @MethodChinaName(cname = "添加人员") @RequestMapping(method = RequestMethod.POST, value = "AddPersonView") @FormViewAnnotation @APIEventAnnotation(bindMenu = {CustomMenuItem.add}, autoRun = true) @Disabled @ModuleAnnotation( caption = "添加人员信息", width = "370", height = "260") @ResponseBody public ResultModel<AddPerson> AddPerson(String orgId) { ResultModel<AddPerson> resultModel = new ResultModel<AddPerson>(); CtPerson person = new CtPerson(); person.setOrgId(orgId); resultModel.setData(new AddPerson(person)); return resultModel; } @MethodChinaName(cname = "保存成员信息") @RequestMapping(value = {"savePerson"}, method = {RequestMethod.GET, RequestMethod.POST}) @APIEventAnnotation(callback = {CustomCallBack.ReloadParent, CustomCallBack.Close}, bindMenu = CustomMenuItem.save) public @ResponseBody ResultModel<Boolean> savePerson(@RequestBody CtPerson person) { ResultModel<Boolean> userStatusInfo = new ResultModel<Boolean>(); getService().savePerson(person); return userStatusInfo; } @MethodChinaName(cname = "删除人员") @RequestMapping(value = {"delPerson"}, method = {RequestMethod.GET, RequestMethod.POST}) @APIEventAnnotation(callback = {CustomCallBack.Reload, CustomCallBack.ReloadParent}, bindMenu = CustomMenuItem.delete) public @ResponseBody ResultModel<Boolean> delPerson(String iD) { ResultModel<Boolean> userStatusInfo = new ResultModel<Boolean>(); getService().delPerson(iD); return userStatusInfo; } PersonService getService() { return EsbUtil.parExpression(PersonService.class); } } @PageBar // @GridAnnotation(event = CustomGridEvent.editor, customService = PersonService.class, customMenu = {GridMenu.Add, GridMenu.Delete, GridMenu.Reload}) public class PersonGridView { @CustomAnnotation(pid = true, hidden = true) String orgId; @CustomAnnotation(pid = true, hidden = true) String roleId; @CustomAnnotation(uid = true, hidden = true) String iD; @CustomAnnotation(caption = "用户名称", required = true) String name; @CustomAnnotation(caption = "账户信息", required = true) String account; @CustomAnnotation(caption = "邮箱") String email; @InputAnnotation(inputType = InputType.password) @CustomAnnotation(caption = "密码", required = true) String password; @CustomAnnotation(caption = "手机") String mobile; @CustomAnnotation(caption = "部门名称") String orgName; public PersonGridView(Person person) { this.iD = person.getID(); this.orgId = person.getOrgId(); this.name = person.getName(); this.account = person.getAccount(); this.password = person.getPassword(); this.mobile = person.getMobile(); this.email = person.getEmail(); Org org = null; try { org = OrgManagerFactory.getOrgManager().getOrgByID(person.getOrgId()); this.orgName = org.getName(); } catch (OrgNotFoundException e) { e.printStackTrace(); } } } @BottomBarMenu @FormAnnotation(bottombarMenu = {CustomFormMenu.Save, CustomFormMenu.Close}, customService = PersonService.class, col = 1) public class AddPerson { @CustomAnnotation(uid = true, hidden = true) String iD; @CustomAnnotation(caption = "用户名称", required = true) String name; @CustomAnnotation(pid = true, hidden = true) String orgId; @CustomAnnotation(pid = true, hidden = true) String roleId; @CustomAnnotation(caption = "账户信息", required = true) String account; @CustomAnnotation(caption = "邮箱") String email; @InputAnnotation(inputType= InputType.password) @CustomAnnotation(caption = "密码", required = true) String password; @CustomAnnotation(caption = "手机") String mobile; public AddPerson(Person person) { this.iD = person.getID(); this.orgId = person.getOrgId(); this.name = person.getName(); this.account = person.getAccount(); this.password = person.getPassword(); this.mobile = person.getMobile(); this.email = person.getEmail(); } }

(五)DSM建模工具DSM建模,百度百科是这样定义的:

特定域建模(Domain-specific modeling,DSM),是一种设计和开发系统(如电脑软件)的软件工程方法学。它系统使用图形化特定域语言(DSL),表现系统的各个方面。DSM的语言倾向于支持比通用建模语言更高级别的抽象,因此需要较少的努力和更少的底层细节来描述特定系统。

低代码技术应用可以通过提供更强的工具,提升程序员的代码效率。但其本质上也是一种特定场景下的软件描述方法,这个层面上低码技术和DSM思想是有其相通相同之处的,产品在设计之初就将DSM建模语言的构建以及工具支撑作为了底层支撑设计,将应用中积累的建模应用采用DSM的思想进行重构整合在底层打通。

我们将现有的资源类的工具,统一到仓库应用中,包括统一的物料库导入,统一的数据源(数据库,外部存储)管理。并通代码工厂的辅助构建统一到Contenxt(OneCode)的当前环境技术模型中。在各个特定的业务模型中,完成独立的聚合实体整合,以及相应的服务管理,并为相关的方法模型透视管理服务。在OneCode 的基础之上,摆脱传统的 代码模板与生成机制。实现代码向模型的逆向能力。将DSM设计能贯穿整个项目开发实施管理过程,打造结余真实的代码之上的建模语言。

(1)仓储建模

(2)聚合应用

(3)视图工厂

(4)支撑域

添加图片注释,不超过 140 字(可选)

(5)流程建模

添加图片注释,不超过 140 字(可选)

六,应用集成(1)内核最小集合集成(JS离线应用)设计器内核完全采用JS脚本完成,是独立的前端框架。内核版本包括:RAD 页面设计编辑器,xui运行运行脚本两部分。

添加图片注释,不超过 140 字(可选)

最小集合仅包含,页面设计及器以及插件框架。

设计界面集成:

下载开源包后,运行debug.html 即可打开编辑器。

添加图片注释,不超过 140 字(可选)

集成到自由应用时只需要,引入两个关键的js lib包即可集成到自有的应用。

<script type="text/javascript" src="/RAD/xui.js"></script> <script type="text/javascript" src="/RAD/index.js"></script> <script type="text/javascript"> var lang = (function () { var dft = 'zh-cn', map = { 'en-us': 'en', 'zh-cn': 'cn' }, n = navigator, l = (n.language || n.browserLanguage || '').toLowerCase(); return map[l] || map[dft]; })(); xui.include("xui.Locale." + lang + '.doc', "/RAD/Locale/" + lang + ".js", function () { xui.Module.load('RAD', function () { SPA = this; }, lang); });

运行支撑环境集成:打开:

设计完成的文件再应用环境中引入如下代码即可

<script type="text/javascript" src="/xui/js/xui-all.js"></script> <script type="text/javascript" src="./xuiconf.js"></script> <script type="text/javascript" src="/xui/Locale/cn.js"></script>

(2)团队协作版团队协作版是独立的服务器部署版,在官网上申请账号后,可以在独立的服务器上运行。启动后通过浏览器访问 http://demoserver:83 用管理员 sysadmin 登录:

首次登录 会进入默认的工程配置界面

配置工程

关联API

设定团队管理员

有什么冷门但好用的软件呢?

Essentialpim PRO:日程管理和知识管理的大神级软件,惠普、三星、佳能等知名公司的选择。

不但可以当做日程管理软件,还可以作为知识管理软件:

独立数据库,确保安全。多端通过wifi同步:

该软件得到国际大牌公司认可:

这样一款软件,价格并不高。

当然,如果你愿意,可以选择河蟹版。

说完了传统知识管理软件,还有时下比较热门的双链笔记软件:

简单了解一下什么是双链笔记,不需要搞懂复杂概念,和热门的知识管理软件NOTION做一个比较:

据说,roam edit未来的发展空间和底层架构都比NOTION大整整一圈。

Roam到底能做什么,能解决什么问题?

简单来说,就是:让知识能用

类似下面的图:

为什么这样的图能让知识更有效呢?

看下图案例(软件-全世界的界面):

知识之间、信息之间建立关联,只要知道任何一个关键点,就能顺藤摸瓜的构建整个知识大厦。

这才是真正的有用、能用的知识。

软件界面(太复杂,拉轰仅仅在初步摸索阶段):

XYplorer:文件管理的超冷门超强大软件

一位大V这样评价它:

看看它酷炫又实用的界面:

当然还可以选择以下软件:

qdir

qttabbar+clover

one commander

tc

讯读PDF:拉轰目前认为最好的PDF软件,没有之一

下面的思维导图是目前的推荐软件:

拉轰出品,必属精品

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。