当前位置: 首页 > news >正文

StarUML6.0.1使用

1. 简介

        作为一个软件开发人员,平时免不了做一定的软件设计,标准做法就是采用UML来设计:

  • 讨论功能流程时采用时序图、活动图来表达;
  • 做业务功能架构时采用组件图来表达;
  • 做系统部署架构时采用部署图来表达;
  • 做需求分析时采用用例图来表达;
  • 做系统内部设计时采用包图、类图、对象图来表达;

        二十年前我们用Rational Rose,过了五六年感觉PowerDesign更好,之后十多年一直钟爱PD,直到上个月用了7年的笔记本坏了,新笔记本重装环境时,再也不想去破解PowerDesign,而是寻找一个开源的UML工具软件来用用看,一通baidu之后发现了StarUML,是由思密达主导开发的一款开源UML工具软件,看看官网的图片介绍还是不错的。

        官网地址:StarUML 

  

        开源地址:https://github.com/staruml ,这里有很多工程。一般我们直接去官网下载已经制作好的安装包即可,安装都很简单。

2. 破解

        直接采用官网制作好的安装包,在每次保存时总是提示去注册,让人很烦;把UML设计图导出png, jpeg图片时,更是留下了unregisted之类的水印,根本没法在文档里使用。我们需要解决两个问题:

  1. 去掉注册提示框;
  2. 去掉图片上的水印。

        解决这两个问题很简单,去StarUML安装目录下寻找app.asar文件,修改这个包里的两处地方即可。

        app.asar是一个压缩包,需要用asar来生成和解压,asar用npm来安装:

npm install -g asar 

        npm自然是安装nodejs就有了,搞点前端的人都不用说了。

        执行asar看看:

$ asar -h
Usage: asar [options] [command]

Manipulate asar archive files

Options:
  -V, --version                         output the version number
  -h, --help                            display help for command

Commands:
  pack|p [options] <dir> <output>       create asar archive
  list|l [options] <archive>            list files of asar archive
  extract-file|ef <archive> <filename>  extract one file from archive
  extract|e <archive> <dest>            extract archive
  *
  help [command]                        display help for command

2.1 解包app.asar 

        我们进入StarUML安装目录,找到app.asar文件,如我的安装目录C:\Program Files\StarUML\resources下有如下文件:

app.asar  app-update.yml  elevate.exe*  mdj.ico

         解压app.asar:

asar extract app.asar app

        得到app目录, 进入目录app\src\engine:

C:\Program Files\StarUML\resources\app\src\engine
$ ls
clipboard-manager.js  default-commands.js  engine.js   font-manager.js     pdf-graphics.js     selection-manager.js  update-manager.js
command-manager.js    diagram-export.js    factory.js  license-manager.js  project-manager.js  unicode.js

        最关键的是两个文件:license-manager.js和diagram-export.js,看看英文都知道,一个管注册license,一个管图片导出。

2.2 去掉注册提示

        打开license-manager.js,找到如下代码:

  checkLicenseValidity() {                         if (packageJSON.config.setappBuild) {          setStatus(this, true);                       } else {                                       this.validate().then(                        () => {                                    setStatus(this, true);                   },                                         () => {                                    setStatus(this, false);                UnregisteredDialog.showDialog();                       },                                         );                                           }                                              }                                                

        修改为:

  checkLicenseValidity() {                         if (packageJSON.config.setappBuild) {          setStatus(this, true);                       } else {                                       this.validate().then(                        () => {                                    setStatus(this, true);                   },                                         () => {                                    //setStatus(this, false);                //UnregisteredDialog.showDialog();       setStatus(this, true);                   },                                         );                                           }                                              }                                                

        那么我们的注册提示就去掉了。

2.3 去掉图片水印

        打开diagram-export.js,找到如下代码:

  // Draw watermark if application is not registeredif (app.licenseManager.getStatus() !== true) {diagram.drawWatermark(canvas,canvasElement.width,canvasElement.height,70,12,"UNREGISTERED",);} else if (app.licenseManager.getLicenseInfo().licenseType === "STD") {const dgmType = diagram.constructor.name;if (app.licenseManager.isProDiagram(dgmType)) {diagram.drawWatermark(canvas,canvasElement.width,canvasElement.height,45,12,"PRO ONLY",);}}// Draw diagram to the new canvasdiagram.arrangeDiagram(canvas);diagram.drawDiagram(canvas);// Return the new canvas to base64-encoded datavar data = canvasElement.toDataURL(type).replace(/^data:image\/(png|jpeg);base64,/, "");return data;
}

        修改为:

  // Draw watermark if application is not registered/*if (app.licenseManager.getStatus() !== true) {diagram.drawWatermark(canvas,canvasElement.width,canvasElement.height,70,12,"UNREGISTERED",);} else if (app.licenseManager.getLicenseInfo().licenseType === "STD") {const dgmType = diagram.constructor.name;if (app.licenseManager.isProDiagram(dgmType)) {diagram.drawWatermark(canvas,canvasElement.width,canvasElement.height,45,12,"PRO ONLY",);}}*/// Draw diagram to the new canvasdiagram.arrangeDiagram(canvas);diagram.drawDiagram(canvas);// Return the new canvas to base64-encoded datavar data = canvasElement.toDataURL(type).replace(/^data:image\/(png|jpeg);base64,/, "");return data;
}

        就是把两个处理水印的代码注释掉即可。

2.4 打包app.asar

         在安装目录C:\Program Files\StarUML\resources下执行:

asar pack app app.asar

        新的app.asar已经生成成功,则我们重新去打开StarUML,以上两个问题都完美解决了。

3. 总结

         StarUML6.0.1还是很好使用的,很小巧,建议使用UML做架构设计的同仁来试试,看到很多年轻开发人员做设计时随意用word里的图形功能来设计,或者其它脑图来设计,我还是推荐采用UML来做软件设计,毕竟是一个很成熟的标准,何必放着标准不用而去用其它呢。

 

 

 

 

 

 

相关文章:

StarUML6.0.1使用

1. 简介 作为一个软件开发人员&#xff0c;平时免不了做一定的软件设计&#xff0c;标准做法就是采用UML来设计&#xff1a; 讨论功能流程时采用时序图、活动图来表达&#xff1b;做业务功能架构时采用组件图来表达&#xff1b;做系统部署架构时采用部署图来表达&#xff1b;做…...

Java开发与配置用到的各类中间件官网

开发配置时用到了一些官网地址&#xff0c;记录一下。 activemq 官网&#xff1a;ActiveMQ elk 官网&#xff1a;Elasticsearch 平台 — 大规模查找实时答案 | Elastic nginx 官网&#xff1a;nginx maven 官网&#xff1a;Maven – Welcome to Apache Maven nexus 官网&a…...

GitHub和Gitee的基本使用和在IDEA中的集成

文章目录 【1】GitHub1.创建仓库2.增加和修改文件3.创建分支4.删除仓库5.远程仓库下载到本地 【2】Gitee1.创建仓库2.远程仓库下载到本地. 【3】IDEA集成GitHub【4】IDEA集成Gitee1.在Gitee中修改&#xff0c;同步到本地2.从Gitee中下载项目 【1】GitHub 1.创建仓库 先登陆这…...

[Electron]中screen屏幕

Electron中screen 检索有关屏幕大小、显示器、光标位置等的信息。可以实现以下两个功能 窗口全屏 显示在额外显示器上 方法 screen.getCursorScreenPoint() 返回 Point当前鼠标的绝对位置。 screen.getPrimaryDisplay() 返回主窗口Display screen.getAllDisplays() 返…...

ubuntu 卸载miniconda3

一开始安装路径错了&#xff0c;需要重新安一次&#xff0c;就一起记录了。 前提是这种方式安装&#xff1a; ubuntu安装miniconda3管理python版本-CSDN博客 删除Miniconda的安装目录 这目录就是你选择安装的时候指定的&#xff0c;如果记不得了,可以这样查看 which conda 这…...

光致发光谱荧光量子效率测量系统

荧光量子积分球是一个专门用于测量荧光量子效率的设备。荧光量子效率是指物质吸收光后所发射的荧光光子数与所吸收的激发光光子数之间的比值。这种设备通过比较待测荧光物质和已知荧光量子产率的参比物质&#xff0c;在相同激发条件下所测得的积分荧光强度&#xff08;即校正的…...

c++ 常用的STL

前言 写这篇博客目的是为了记录在刷算法题中使用过的STL&#xff0c;因为有些不太常用的会遗忘。这篇博客只是作为笔记&#xff0c;不是详细的STL&#xff0c;因此只会对常用方法说明&#xff0c;不会详细介绍。此外在后面用到新的STL内容时会再补充。 列队 基础列队 基本列…...

接口自动化测试思路和实战 —— 编写线性测试脚本实战!

接口自动化测试框架目的 测试工程师应用自动化测试框架的目的: 增强测试脚本的可维护性、易用性(降低公司自动化培训成本&#xff0c;让公司的测试工程师都可以开展自动化测试)。 自动化测试框架根据思想理念和深度不同&#xff0c;渐进式的分为以下几种: 线性脚本框架 模块…...

python控制语句-1.2

目录 循环结构 while循环 for循环 循环结构练习-1 循环嵌套 循环结构练习-2 循环控制语句&#xff08;continue & break&#xff09; 循环结构 while循环 语法 Python 编程中 while 语句用于循环执行程序&#xff0c;即在某条件下&#xff0c;循环执行某段程序&am…...

HTML 学习笔记(一)开始

一、介绍: 首先引用百度百科的一段话作为介绍:   HTML的全称为超文本标记语言&#xff0c;是一种标记语言。它包括一系列标签&#xff0c;通过这些标签可以将网络上的文档格式统一&#xff0c;使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本…...

查看自己的ip地址的网站

有时候需要知道自己的ip地址&#xff0c;可以上这个网站查看&#xff1a; What Is My IP? Best Way To Check Your Public IP Address 网站的域名是https://www.whatismyip.com/ 还是挺好记的。...

ES分布式搜索-索引库操作

索引库操作 1、mapping映射属性 可以查看官方文档学习&#xff1a;ES官方手册 mapping是对索引库中文档的约束&#xff0c;常见的mapping属性包括&#xff1a; type&#xff1a;字段数据类型&#xff0c;常见的简单类型有&#xff1a; 字符串&#xff1a;text&#xff08;可…...

Win11 没有网络bug

1.问题描述 没有网络&#xff0c;dns一直是固定的&#xff0c;但是dns已经是自动获取了(MAC地址随机) 2.解决办法 1.首先&#xff0c;删除所有网络的手动dns配置,控制中心那个dns管理没有用,在设置中删除网络,不然问题还会出现 - 2.然后&#xff0c;进入注册表\HKEY_LOCAL_MACH…...

洛谷 1025.数的划分

这道题用的知识点是DFS剪枝。难的不在DFS上&#xff0c;而是在剪枝上如何选择。 思路&#xff1a;这道题我们看到是按照字典序排的&#xff0c;但是&#xff0c;我们注意到&#xff0c;看似是全排列的递归&#xff0c;实则不是。 我们前面也了解过&#xff0c;全排列的数字大…...

MySQL实战:SQL优化及问题排查

有更合适的索引不走&#xff0c;怎么办&#xff1f; MySQL在选取索引时&#xff0c;会参考索引的基数&#xff0c;基数是MySQL估算的&#xff0c;反映这个字段有多少种取值&#xff0c;估算的策略为选取几个页算出取值的平均值&#xff0c;再乘以页数&#xff0c;即为基数 查…...

加密与安全_使用Java代码操作RSA算法生成的密钥对

文章目录 Pre概述什么是非对称加密算法&#xff1f;如何工作&#xff1f;示例&#xff1a;RSA算法特点和优势ECC&#xff1a;另一种非对称加密算法 Code生成公钥和私钥私钥加密私钥加密私钥解密 ( 行不通 )私钥加密公钥解密公钥加密和公钥解密 &#xff08;行不通&#xff09;保…...

Spring Boot中实现图片上传功能的两种策略

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…...

07.axios封装实例

一.简易axios封装-获取省份列表 1. 需求&#xff1a;基于 Promise 和 XHR 封装 myAxios 函数&#xff0c;获取省份列表展示到页面 2. 核心语法&#xff1a; function myAxios(config) {return new Promise((resolve, reject) > {// XHR 请求// 调用成功/失败的处理程序}) …...

【Linux】第四十一站:线程控制

一、Linux线程VS进程 1.进程和线程 进程是资源分配的基本单位线程是调度的基本单位线程共享进程数据&#xff0c;但也拥有自己的一部分数据:线程ID一组寄存器&#xff08;上下文&#xff09;栈errno信号屏蔽字调度优先级 2.进程的多个线程共享 同一地址空间,因此Text Segment、…...

ChatGPT提示词工程:prompt和chatbot

ChatGPT Prompt Engineering for Developers 本文是 https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/ 这门课程的学习笔记。 ChatGPT提示词工程&#xff1a;prompt和chatbot 文章目录 ChatGPT Prompt Engineering for DevelopersWhat …...

c++ Protobuf解决数据传输瓶颈面试精讲

1. 什么是 Protobuf?Protobuf&#xff08;Protocol Buffers&#xff09; 是一种轻量级的数据序列化协议&#xff0c;由 Google 开发。它可以用于结构化数据的序列化和反序列化&#xff0c;使得数据在不同系统之间进行传输和存储更加高效。与 XML 和 JSON 等常见的数据交换格式…...

Claude Opus 4.7 来了,但普通人真正缺的不是新模型,是一个会选模型的入口

这不是一篇“谁最强”的测评。模型越更越快&#xff0c;真正稀缺的反而是比较能力。最近几天&#xff0c;如果你一直在看 AI&#xff0c;很容易被一种热闹裹挟&#xff1a;Anthropic 在推 Claude Opus 4.7&#xff0c;OpenAI 连着更新 Agents SDK 和 Codex&#xff0c;Google 也…...

CSS如何消除图片下方多余间隙_设置display-block改变盒模型

图片下方空白源于img默认inline导致的基线对齐&#xff1b;display:block最直接有效&#xff0c;vertical-align:middle等有兼容性与场景限制&#xff0c;font-size:0或line-height:0副作用大。图片下方空白是行内元素的基线对齐导致的默认情况下 <img> 是行内元素&#…...

别再让照片忽明忽暗了!手把手教你搞定手机/相机里的自动曝光(AE)算法

别再让照片忽明忽暗了&#xff01;手把手教你搞定手机/相机里的自动曝光&#xff08;AE&#xff09;算法 每次拍逆光人像&#xff0c;人脸总是黑得像剪影&#xff1f;夜景照片要么亮如白昼要么漆黑一片&#xff1f;别急着怪设备&#xff0c;可能是你没搞懂相机里那个"聪明…...

终极指南:10分钟掌握FanControl,让你的电脑风扇智能又安静

终极指南&#xff1a;10分钟掌握FanControl&#xff0c;让你的电脑风扇智能又安静 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/Git…...

告别Keil+Proteus安装报错!手把手教你从零搭建51单片机仿真环境(附资源包)

从零搭建51单片机仿真环境&#xff1a;Keil与Proteus避坑指南 第一次接触51单片机开发时&#xff0c;最让人头疼的往往不是编程本身&#xff0c;而是环境搭建这个看似简单的第一步。许多初学者在安装Keil和Proteus时都会遇到各种"玄学"问题——芯片包安装后找不到、生…...

终极指南:如何解锁艾尔登法环帧率限制并实现超宽屏支持

终极指南&#xff1a;如何解锁艾尔登法环帧率限制并实现超宽屏支持 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gitcode.com/gh_mirrors/el/El…...

Vivado里AXI接口IP核怎么选?从DMA到VDMA,一次讲清ZYNQ数据搬运的“十八般兵器”

ZYNQ数据搬运核心IP选型指南&#xff1a;从DMA到VDMA的实战解析 在ZYNQ异构计算架构中&#xff0c;PS与PL的高效数据交互直接影响系统性能表现。面对Vivado IP Catalog中琳琅满目的AXI接口IP&#xff0c;开发者常陷入选择困境——AXI-DMA与AXI-VDMA有何本质区别&#xff1f;何时…...

别再只用yum了!CentOS 7下编译安装OpenSSH 8.2p1的完整避坑指南(附zlib/OpenSSL依赖处理)

别再只用yum了&#xff01;CentOS 7下编译安装OpenSSH 8.2p1的完整避坑指南&#xff08;附zlib/OpenSSL依赖处理&#xff09; 在CentOS 7的生产环境中&#xff0c;系统自带的OpenSSH版本往往无法满足最新的安全需求。虽然yum提供了便捷的升级方式&#xff0c;但官方仓库的更新滞…...

AGI能否逆转2℃升温路径?——2026奇点大会现场演示“气候-能源-政策”三重耦合仿真系统,结果震惊IPCC代表

第一章&#xff1a;AGI能否逆转2℃升温路径&#xff1f;——2026奇点大会现场演示“气候-能源-政策”三重耦合仿真系统&#xff0c;结果震惊IPCC代表 2026奇点智能技术大会(https://ml-summit.org) 在新加坡滨海湾金沙会议中心主会场&#xff0c;DeepClimate AGI平台首次实时…...