小编yoo*_*iba的帖子

如何用JavaScript更改svg <g transform = scale(X)>的参数?

嘿.
让我们说在我的页面上的某个地方我有SVG图形.当某个事件被触发时,我想重新缩放一个组.我怎么做?
示例代码:

<svg onresize="getDivSize(evt)">
    <g transform=scale(13)>
        <rect id="Square" class="chart"
            width="80" height="20"
            fill="black"
            stroke-width="0px"
            rx="8" ry="8" />
         <text id="TextElement" x="13" y="15" fill="green">Text</text>
     </g>
</svg>
Run Code Online (Sandbox Code Playgroud)

我想改变scale(13)参数,去做函数getScreenSize(evt){...}该做什么
或者如何以不同的方式实现类似的效果?

编辑
至于一般的想法,我想调整图形大小,而无需在任何地方指定固定值.所以我的divs大小是基于百分比的,现在我只想让我的图形完全适合我的div而不管它的大小.这就是为什么每当事件被触发时我都会想到JS改变scale()参数(div resize).函数将进入DivSize/rectBaseSize(x或y)的比例参数计算.

javascript svg

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

没有数据层的桌面应用程序的MVC

问题可能很棘手(因为它的性质或我描述它的方式),所以在回答之前真的要读这个.

我有这个应用程序写:
a)桌面应用程序;
b)没有数据库,文件或任何其他存储库意义上的数据层(无需保存,存储或加载数据);
c)app将实现一些计算算法(遗传算法);
b)提供GUI,显示对app和计算结果的控制.

我正在考虑使用MVC模式,但我怀疑如何使用它.由于我没有(例如)数据库意义上的数据层(基于用户输入在执行期间生成数据),我担心在此实现中使用MVC的方式.到目前为止,我提出了两种方法:

  1. GUI是View.GeneticAlgorithm是Controller.GeneticAlgorithmResults是Model(作为只存储数据的类).基本流程:

    • View将用户输入发送给Controller;
    • Controller正在处理用户输入并生成数据;
    • Controller将生成的数据发送给Model;
    • 模型通知视图有关新数据;
    • View会提取新数据并更新显示.
  2. GUI是View.AppEngine是控制器.GeneticAlgorithm和GeneticAlgorithmResults是模型.现在我们有:

    • View将用户输入发送给Controller;
    • Controller正在处理用户输入并将控制信号发送到Model.
    • 模型更新其内部状态(生成新数据);
    • 模型通知控制器新数据;
    • Controller将数据拉入模型;
    • Controller处理数据;
    • 控制器将处理后的数据推送到View;
    • 视图更新显示.

第一种方法似乎更直接,更像MVC.问题是某些逻辑必须在模型中 - 决定何时通知模型,因为不会显示所有数据更新,或者显示将使用数据集更新,而不是每次更改.这些决定将基于用户输入.在实际显示之前,可能需要对数据进行一些额外的处理.这将在视图中.

另一方面,第二种方法似乎更复杂,看起来传递了很多消息来完成任务.但它完全控制了Controller的逻辑控制,并分离了View,Controller和Model(这是MVC的主要目的)的职责.

你会推荐哪种方法?或者也许我应该混合它们并使用第一种方法架构与第二种方法的通信流程?还是一些不同的设计?

architecture model-view-controller genetic-algorithm

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

将变量传递给git filter-branch中的命令(通过删除旧的二进制文件来减少repo大小)

我正在研究通过删除二进制文件来减少repo大小的方法.我正在编写脚本来为我做这个,基于http://help.github.com/remove-sensitive-data/

似乎我有解决方案工作,但不知何故我不能将参数传递给嵌套的git命令.带有硬编码文件的脚本有效:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch /*selenium-server-standalone-2.16.0.jar' --prune-empty -- --all 
git push origin master --force 
rm -rf .git/refs/original/ 
git reflog expire --expire=now --all 
git gc --prune=now 
git gc --aggressive --prune=now 
git status
git pull
Run Code Online (Sandbox Code Playgroud)

这给了我输出

Rewrite f9a33e41dd6da4630773272ec18d194d14935a83 (10/10)rm 'bin/selenium-server-standalone-2.16.0.jar'
rm 'selenium-server-standalone-2.16.0.jar'

Ref 'refs/heads/master' was rewritten
Ref 'refs/remotes/origin/master' was rewritten
WARNING: Ref 'refs/remotes/origin/master' is unchanged
Run Code Online (Sandbox Code Playgroud)

但是当我尝试对此进行参数化时,如下所示,整个过程不起作用

fileOLD=selenium-server-standalone-2.16.0.jar
git filter-branch --index-filter 'git rm --cached --ignore-unmatch /*${fileOLD}' --prune-empty -- --all 
git push origin master --force 
rm -rf .git/refs/original/ 
git …
Run Code Online (Sandbox Code Playgroud)

git macos shell github

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