小编Pet*_*nak的帖子

如何纠正PlantUML线路径

我使用以下代码创建了此图表.但是正如你所看到的,从(取消订单)和(下订单)到(发布者)的线路决定采用一条非常圆润的路径来获取它们,而不是直接向右转,然后向下发布.我尝试使用手动方向命令,如"-down",但它们似乎都没有帮助.有人知道如何解决这个问题吗?

这是我的代码.我感谢任何帮助.谢谢.

@startUML EBook Use Case Diagram
left to right direction
Actor Customer as customer
Actor EBook as ebook
Actor Publisher as publisher
rectangle "Book Catalogue" {
    together {
        Actor "Book Database" as bookLog
        (Retrieve Information) as getBook
        customer -- getBook
        getBook -- ebook
        getBook -- bookLog

        (Update Catalogue) as updateCatalogue
        ebook -- updateCatalogue
        updateCatalogue -- bookLog
    }

    together {
        (Place Order) as order
        customer -- order
        order -- ebook
        order--publisher

        (Cancel Order) as cancelOrder
        customer -- cancelOrder
        cancelOrder -- …
Run Code Online (Sandbox Code Playgroud)

diagram uml sequence-diagram graphviz plantuml

14
推荐指数
4
解决办法
7537
查看次数

如何使用PlantUML新的Activity Diagram语法生成右向箭头?

如何在PlantUML新的Activity Diagram语法中创建右向箭头?

使用旧语法,我可以使用-right->,但我没有从新语法指南中找到任何类似的符号.如何使用新语法实现相同的结果?我需要使用新语法,因为它支持Swimlane.

使用旧语法的右箭头示意图:

@startuml
(*) --> "An Activity"
-right->  "Another Activity"
--> (*)
@enduml
Run Code Online (Sandbox Code Playgroud)

使用上面的代码生成的图

谢谢.

uml plantuml

7
推荐指数
1
解决办法
1448
查看次数

如何在没有前导零的情况下从time :: strftime打印日期/时间?

如何在不带前导零的情况下打印日期/时间?例如,Jul 5, 9:15.

根据文档,它使用相同的语法strftime,但是抑制前导零

time::strftime("%b %-d, %-I:%M", &time::now()).unwrap()
Run Code Online (Sandbox Code Playgroud)

导致错误:

线程''恐慌'调用Result::unwrap()一个Err值:InvalidFormatSpecifier(' - ')',../src/libcore/result.rs:746

我怀疑Rust不支持提供此标志的glibc扩展(以及其他几个); 但是没有前缀日期/时间的语法; alternative(%l)只是前缀空格,同样没用.

我可以手工创建字符串,但这会破坏函数的用途.

time strftime rust

6
推荐指数
1
解决办法
1829
查看次数

UML 是否有 XSD 作为它的 XMI?

UML XMI 文件有 XSD 吗?

标头只包含命名空间引用。

<xmi:XMI xmi:version="2.1"
    xmlns:uml="http://schema.omg.org/spec/UML/2.1"
    xmlns:xmi="http://schema.omg.org/spec/XMI/2.1"
    xmlns:thecustomprofile="http://www.sparxsystems.com/profiles/thecustomprofile/1.0">
Run Code Online (Sandbox Code Playgroud)

我设法找到的唯一文件是这个http://www.omg.org/spec/XMI/20131001/XMI.xsd但这只是 XMI 本身的描述(差异/文档),而不是 UML .

这意味着我不知道以下过程是如何进行的

<generalization
    xmi:type="uml:Generalization" 
    xmi:id="EAID_8CC13F09_BD19_406b_A4B4_37FB8B315EF0" 
    general="EAID_E1F9FAD6_2BDB_40ad_AAE2_E3935ADD1CDC"/>
Run Code Online (Sandbox Code Playgroud)

因为我无法知道它的类型是什么general(当然我可以检查全局 ID 表,但是对于每个属性和 TextElement 这样做似乎很愚蠢)。

我希望有类似的东西

<xsd:complexType name="Generalization">
    <xsd:attribute name="general" type="xsd:IDREFS" use="optional"/>
    ...
</xsd:complexType>
Run Code Online (Sandbox Code Playgroud)

UML的XMI有这样的描述吗?

xml xsd uml

5
推荐指数
1
解决办法
1470
查看次数

如何截断字符串最多包含N个字符?

预期的方法String.truncate(usize)失败,因为它不考虑Unicode字符(考虑到Rust将字符串视为Unicode,这令人困惑).

let mut s = "??????".to_string();
s.truncate(4);
Run Code Online (Sandbox Code Playgroud)

线程''恐慌'断言失败:self.is_char_boundary(new_len)'

此外,truncate修改原始字符串,这并不总是需要.

我提出的最好的是转换为chars并收集到String.

fn truncate(s: String, max_width: usize) -> String {
    s.chars().take(max_width).collect()
}
Run Code Online (Sandbox Code Playgroud)

例如

fn main() {
    assert_eq!(truncate("??????".to_string(), 0), "");
    assert_eq!(truncate("??????".to_string(), 4), "????");
    assert_eq!(truncate("??????".to_string(), 100), "??????");
    assert_eq!(truncate("hello".to_string(), 4), "hell");
}
Run Code Online (Sandbox Code Playgroud)

然而,这感觉非常沉重.

string unicode truncate rust

5
推荐指数
1
解决办法
632
查看次数

过滤 (git) diff 输出以仅包含与模式匹配的行

是否可以使用 diff/git (或其他常见实用程序)生成 包含与模式匹配的更改的差异?

例如,我有一个文件有两个不同的版本:

a/文件.txt

alpha
marker 100
omega
Run Code Online (Sandbox Code Playgroud)

b/文件.txt

start
marker 200
end
Run Code Online (Sandbox Code Playgroud)

我想生成仅包含对包含字符串marker(或其他正则表达式模式)的行的更改的补丁:

diff --git a/file.txt b/file.txt
index eb27e64..fcc1676 100644
--- a/file.txt
+++ b/file.txt
@@ -1,3 +1,3 @@
 alpha
-marker 100
+marker 200
 omega
Run Code Online (Sandbox Code Playgroud)

(应用此类补丁后,只有 alpha->start、omega->end 更改仍处于待处理状态。)

现在我有一个带有 JGit 的自定义基于行的处理器,但是我对我的实现非常不满意,因为我必须手动解析/拆分/重新组合块,并通过复制/破解 JGit 内部来生成差异)。

由于这似乎是一个常见的用例,我希望有一些工具可以提供开箱即用的功能,但到目前为止我还没有找到任何东西。

请注意,使用类似git diff -G'marker'或任何类型的块过滤是不够的,因为块本身可以任意大(例如,这里只有一个块包含整个文件更改)。

git diff git-diff jgit

5
推荐指数
0
解决办法
647
查看次数

如何绘制多阶段用例的序列图?

在当前系统中,一些功能/用例可能需要多个阶段才能完成整个过程.示例类似于用户注册,其可包含两个阶段:在数据库上插入用户记录和电子邮件激活.或者对于网上银行的汇款,它需要在实际交易发生之前填写转账信息和短信验证的阶段.我想知道如何绘制这种功能/用例的序列图.

更具体地说,我已经使用MVC模式绘制了用户注册示例的序列图,该模式显示在底部.在该图中,两个阶段被红线分开.此外,我跳过处理故障或异常的逻辑,例如数据库中已存在的无效输入或用户名,以使其更简单.看来这个图中涉及的对象太多了,我应该用这种方式绘制序列图吗?或者每个阶段使用2个序列图更好?

model-view-controller uml sequence-diagram use-case

4
推荐指数
1
解决办法
7991
查看次数

浏览Finder中的"发件人"还会返回不包含我在Pharo中搜索的邮件的代码吗?

打开一个新的Pharo 5图像,打开Finder并搜索+选择器.然后选择+并单击发件人.得到了大约5000个结果,其中大多数似乎都很好,但是经过仔细检查后,一些结果似乎缺少我的消息发送的任何参考.

我可能会补充一点,其中约有1700个似乎是错误的,并且没有任何参考.您认为这个问题是什么?这是一个例子:

例

smalltalk compilation pharo

4
推荐指数
1
解决办法
73
查看次数

序列图中的UML类方法

消息的方向如何确定类(序列图actor)的方法?我会说发送消息的actor是拥有该方法的人.我对么 ?

在此输入图像描述

而那些课程就是这样的

在此输入图像描述

我是对的还是反过来的?

uml class-diagram sequence-diagram

3
推荐指数
1
解决办法
1245
查看次数

git将两个文件合并为一个并保留历史记录

假设您在git存储库中有两个文件,分别是A.txtB.txt

是否可以将两个文件合并为第三个文件A+B.txt,删除原始文件A.txtB.txt全部提交,因此历史记录仍保留下来?

也就是说,如果我问git log --follow A+B.txt我是否知道内容源自A.txtB.txt文件?

我试图将文件分成两个不同的分支,然后将它们合并为一个新文件(同时删除旧文件),但无济于事。

git merge file

3
推荐指数
2
解决办法
375
查看次数

将布尔表达式的结果存储到变量中

是否可以将布尔表达式的结果连续存储到变量中?

例子

ret=0
for each in aCollection do
    executeSomeCommand;
    # vvv compare stored value against a returned value and store it again
    ret=$ret || $?;
done;
[[ ret = 0 ]] && echo "success"
Run Code Online (Sandbox Code Playgroud)

问题是 if $?is 1,那么$ret仍然包含零

ret=0
echo $ret # --> 0
ret=$ret || 1
echo $ret # --> 0 (should be 1)
Run Code Online (Sandbox Code Playgroud)

bash

2
推荐指数
1
解决办法
512
查看次数

UML序列图消息分支

有没有人在序列图中使用过消息分支?有谁知道这是专门用于什么?

据我所知,它用于显示多个收件人收到的单个邮件

图表显示分支到两个收件人的邮件

我刚刚看到它曾用于显示并发性,但我认为这是不正确的,应该用"par"片段或在co-region内部来描述.

图表显示分支到一个收件人的邮件

想法和意见?

uml sequence

2
推荐指数
1
解决办法
760
查看次数

Smalltalk中的Round to Integer

我目前在Smalltalk上构建我的第一个东西,我遇到了一个问题.我必须处理用户输入的数字,我需要将其除以2,仍然是一个整数.如果用户输入10,我将使用5,如果他们输入11,我必须使用6,但我显然会得到5.5.

如果我可以得到一个数字的mod我可以简单地确保mod = 0否则添加0.5并且它会做得同样好,但我无法找到如何在SmallTalk中进行mod操作,所有我的搜索最终都在关于实际社交小动作的不相关的东西,这是非常令人沮丧的.

所以,如果你能告诉我如何获得一个数字的模型,那将是很好的,如果你能告诉我如何用一个单独的函数进行整理,甚至更好.感谢您的帮助和时间.

更新:经过一些研究,我试着这样做:

mod := par rem: 2.
mod = 0 ifFalse: [ par := par + 0.5 ].
Run Code Online (Sandbox Code Playgroud)

其中"mod"是变量"par"的mod,如果它不是0,它应该加0.5到par.

我现在的问题是尝试在timesRepeat中使用par会出现"BoxedFloat64无法理解#timesRepeat"错误.所以我仍然处于相同的问题,或者只是需要一种方法来将浮点数转换为整数.

smalltalk pharo

2
推荐指数
1
解决办法
536
查看次数