小编Luc*_*ler的帖子

将绝对置于相对定位元素后面

我在同一个容器中有两个元素,第一个position: absolute是第二个元素position: relative.有没有办法设置绝对元素的"z-index",以便它在后台?相对定位元素应位于顶部(z层),因为它保持链接...

这是一个JSFiddle:http://jsfiddle.net/8eLJz/

绝对定位元素位于z层的顶部,我对z-index-property 没有影响.我能做什么?

html z-index css-position

35
推荐指数
2
解决办法
4万
查看次数

OOP(PHP) - 强制重写方法根据父方法调用

我对这个用例有一个普遍的问题:我有一个班级A.这个类有一个非抽象的方法doStuffCallback(),可以被覆盖,但并不是每个子类都需要.但是:我想确保如果方法被覆盖,则子类方法必须调用parents方法.

例:

abstract class A {
    private function doStuff() {
        $this->doStuffCallback();
    }

    protected function doStuffCallback() {
        // IMPORTANT CODE HERE
    }
}

class B extends A {
    protected function doStuffCallback() {
        parent::doStuffCallback(); // I want to enforce this because the parents method code is important

        // ALSO IMPORTANT CODE
    }
}
Run Code Online (Sandbox Code Playgroud)

因为重写的方法做同样的事情,为同一个责任定义两个方法和调用两个方法的私有帮助方法会非常难看.像这样:

abstract class A {
    private function doStuff() {
        $this->callDoStuffCallback();
    }

    private function callDoStuffCallback() {
        $this->internalDoStuffCallback();
        $this->doStuffCallback();

        // This is VERY ugly
    }

    private function …
Run Code Online (Sandbox Code Playgroud)

php oop abstraction

9
推荐指数
2
解决办法
2010
查看次数

委托 - 异常不要等到调用EndInvoke()

我有这个代码:

using System;
using System.Runtime.Remoting.Messaging;

class Program {
    static void Main(string[] args) {
        new Program().Run();
        Console.ReadLine();
    }

    void Run() {
        Action example = new Action(threaded);
        IAsyncResult ia = example.BeginInvoke(new AsyncCallback(completed), null);
        // Option #1:
        /*
        ia.AsyncWaitHandle.WaitOne();
        try {
          example.EndInvoke(ia);
        }
        catch (Exception ex) {
          Console.WriteLine(ex.Message);
        }
        */
    }

    void threaded() {
        throw new ApplicationException("Kaboom");
    }

    void completed(IAsyncResult ar) {
        // Option #2:
        Action example = (ar as AsyncResult).AsyncDelegate as Action;
        try {
            example.EndInvoke(ar);
        }
        catch (Exception ex) {
            Console.WriteLine(ex.Message);
        } …
Run Code Online (Sandbox Code Playgroud)

c# delegates exception

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

MonoGame与SDL

使用MonoGame与C#和SDL与C++的主要区别是什么?

哪个更容易使用?哪个推荐用于多平台支持?

对于我们来说,拥有结构和无所不在的OOP非常重要.它应该是高效的,但不能以生产力为代价(例如,不重新发明轮子或管理记忆).我们是一个小团队,因此我们需要一个结构化,简单明了的框架,这使我们能够专注于实际工作.

c# c++ sdl monogame

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

使用修复空间(可变宽度)对齐元素

我有一个容器,里面有可变数量的元素.元素应该是合理的,但在(例如20px)之间有一个固定空间.这意味着每个元素的宽度必须适应.

例如:

HTML

<div class="container">
    <div>
        <img src="...">
    </div>
    <div>
        <img src="...">
    </div>
    <div>
        <img src="...">
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

div.container {
    text-align: justify;
}

div.container div {
    display: inline-block;
    margin-right: 20px;
}

div.container div img {
    width: 100%;
}
Run Code Online (Sandbox Code Playgroud)

最后看起来应该是这样的(这张图片显示了两个例子:2个元素和3个元素;宽度是动态的,但空间修复[20px]):

图片显示元素

它应该与不同数量的子元素一起使用.

用CSS做专业的方法吗?

编辑:我应该提到这个修复空间是%值!

html css css3 justify

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

服务器端视频转换和压缩

我想为我的CMS客户提供自动视频转换器.他们应该能够上传他们的"未触动"的视频文件(MP4,VMV,AVI,...),我的服务器压缩并将其转换为网络友好的MP4文件(就像YouTube一样).

结果很清楚:

  • 网络友好的MP4格式
  • 压缩到可容忍的文件大小

所以我正在寻找一个PHP-API或Linux-shell脚本来实现这一点.

有一个简单的方法来处理这个?


编辑:YouTube嵌入式视频不适合我.

php compression video-conversion

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

CSS Flexbox - colspan的列宽相同

我有两个装有2个和3个盒子的容器.盒子之间的空间是固定的.

这是JSFiddle:http://jsfiddle.net/e9dnxm3w/

HTML

<div class="container">
    <div></div>
    <div></div>
    <div></div>
</div>
<div class="container">
    <div></div>
    <div class="two"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

div.container {
    display: flex;

    margin-bottom: 10px;
}

div.container > div {
    flex: 1;
    margin-left: 10px;
    padding-bottom: 50%;

    background-color: blue;
}

div.container > div:first-child {
    margin-left: 0;
}

div.container > div.two {
    flex: 2;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我希望列具有完全相同的宽度(分别是相同位置的空格).我怎么能告诉Flexbox它应该忽略margin-left还是计算它?

css flexbox

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

在领域驱动设计中强制执行跨多个聚合的不变量(集验证)

为了说明这个问题,我们使用一个简单的例子:有两个聚合 -LampSocket。必须始终强制执行以下业务规则: aLamp和 aSocket都不能同时连接多次。为了提供适当的命令,我们设想了一个Connector带有Connect(Lamp, Socket)-method 的服务来插入它们。

因为我们希望遵守一个事务只涉及一个聚合的规则,所以不建议在事务中对两个聚合设置关联Connect。所以我们需要一个象征Connection自身的中间蕴。因此Connect-transaction 只会Connection使用给定的组件创建一个新的。不幸的是,此时麻烦开始了;如何保证连接状态的一致性?可能会发生许多并发用户想要在同一时间插入相同的组件,因此我们的“一致性检查”不会拒绝该请求。新的Connection聚合将被存储,因为我们只锁定聚合级别。即使不知道这一点,系统也会不一致。

但是我们应该如何设定聚合的边界来确保我们的业务规则呢?我们可以设想一个Connections聚合,它收集所有活动连接(作为Connection实体),从而使我们的锁定算法能够正确拒绝重复的Connect请求。另一方面,这种方法效率低下且无法扩展,而且在领域语言方面也是违反直觉的。

你知道我错过了什么吗?

编辑:为了总结这个问题,想象一个聚合User。由于聚合的定义是基于事务的单元,我们可以通过锁定每个事务的该单元来强制不变量。一切皆好。但现在出现了一条业务规则:用户名必须是唯一的。因此,我们必须以某种方式使我们的总体边界与这一新要求相协调。假设有数百万用户同时注册,这就成了一个问题。我们尝试确保非锁定状态下的这种不变性,因为多个用户意味着多个聚合。

根据 Eric Evans 所著的《领域驱动设计》一书,一旦单个事务中涉及多个聚合,就应该应用最终一致性。但这真的是这样吗?这有道理吗?

在这里应用最终一致性需要注册User并随后使用用户名检查不变量。如果两个Users 实际上设置了相同的用户名,系统将撤消第二次注册并通知User. 想到这种情况让我感到不安,因为它扰乱了整个注册过程。例如,发送确认电子邮件必须延迟等等。

我想我只是忘记了一些一般的事情,但我不知道是什么。在我看来,我需要类似Repository级别上的不变量之类的东西。

domain-driven-design aggregate boundary bidirectional

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