小编zer*_*kms的帖子

在symfony 2中验证小数

我使用Doctrine将symfony2实体映射到表.其中一个属性是:

/**
 * @var decimal $price
 *
 * @ORM\Column(name="price", type="decimal", nullable=false)
 */
private $price;
Run Code Online (Sandbox Code Playgroud)

什么Assert会满足我的要求,$price应该是一个有效的小数?

如果我保持原样,那么将字符串foo作为十进制值传递将导致验证错误,同时传递字符串NaN传递验证,因为字符串NaN被映射为float(NaN)因此被视为有效的十进制值.

任何解决方法?

Symfony开发团队确保它不是问题:https://github.com/symfony/symfony/issues/3161

好吧,如果不是 - 那么可能有一个解决方案来验证它.有任何想法吗?

php symfony

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

在Symfony 2中使用注释时生成URL的路由名称

假设我有一个动作:

/**
 * @Route("/current")
 *
 * @return Response
 */
public function currentAction() 
{
}
Run Code Online (Sandbox Code Playgroud)

现在我需要为此操作生成url.$this->generateUrl()controller的方法接受路由名称作为参数.显然,只要我使用注释,我就没有这样的名字.

有没有解决方法呢?

php symfony

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

垃圾收集:对象属性

假设我有一个包含另一个对象作为其属性的对象,例如

var obj = {
    '1': {...},
    '42': {...}
};
Run Code Online (Sandbox Code Playgroud)

obj超出范围时 - 所有嵌套对象是隐式销毁还是我需要delete显式迭代它们?

javascript

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

我如何更新phpunit?

我已经尝试了一切,包括/sf/answers/611824461/以及所有可能的频道升级和清除缓存命令.但仍然:

$ sudo pear install -a -f phpunit/PHPUnit
downloading PHPUnit-3.6.12.tgz ...
Starting to download PHPUnit-3.6.12.tgz (120,240 bytes)
..........................done: 120,240 bytes
install ok: channel://pear.phpunit.de/PHPUnit-3.6.12
Run Code Online (Sandbox Code Playgroud)

而:

$ pear list-upgrades
Channel pear.php.net: No upgrades available
pear.phpunit.de Available Upgrades (stable):
============================================
Channel         Package            Local           Remote          Size
pear.phpunit.de PHPUnit            3.6.12 (stable) 3.7.10 (stable) 115kB
pear.phpunit.de PHPUnit_MockObject 1.1.1 (stable)  1.2.2 (stable)  19.9kB
pear.phpunit.de PHPUnit_Selenium   1.2.8 (stable)  1.2.11 (stable) 38kB
pear.phpunit.de PHP_CodeCoverage   1.1.4 (stable)  1.2.7 (stable)  155kB
pear.phpunit.de PHP_TokenStream    1.1.4 (stable)  1.1.5 (stable) …
Run Code Online (Sandbox Code Playgroud)

php pear phpunit

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

带有前导空格的多行字符串

如何指定在某些行上具有前导空格的多行字符串?

如果我将变量定义为

multiline_str: |
    foo
      bar
        baz
Run Code Online (Sandbox Code Playgroud)

然后使用将其写入文件

- name: write multiline string
  copy: content="{{ multiline_str }}" dest="/path/to/file"
Run Code Online (Sandbox Code Playgroud)

然后目标文件内容是

foo
bar
baz
Run Code Online (Sandbox Code Playgroud)

这里的诀窍是什么?

ansible ansible-playbook

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

如何使PDO(pdo_pgsql)懒惰地获取行

使用以下代码,即使我获取单行 - 下载整个数据集(需要几秒钟):

$query = 'SELECT * FROM xxx WHERE id > :position ORDER BY id';
$stmt = $db->prepare($query);

$stmt->execute([
    ':position' => $position,
]);

while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
    break;
}
Run Code Online (Sandbox Code Playgroud)

我试图在PDO中找到一个选项,使其按需获取行(或通过合理的批次),但未能这样做,至少我在PDO文档中找不到它.

PostgreSQL的针对特定查询能够服务第一行中0.28ms按了EXPLAIN ANALYZE.

我的目标是尽可能快地开始处理行,即使进一步批量的行会带来一些网络开销.

我如何确定它获取所有行:

  1. 间接地:break在第一行之后需要相同的时间或迭代整个数据集
  2. 我捕获了流量tcpdump并检查它是否获取了所有行.

所以,问题是:是否有可能PDO在需求模式下逐行(或一些合理的小批量)获取?

php postgresql pdo

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

如何在 redux 中正确克隆 json 数组?

我是 Redux 的新手,Redux 的概念起初对我来说看起来很奇怪。假设我有一个处于 redux 状态的数组。

const state = [ 
  {show: false, id : '1'},
  {show: false, id : '2'},
  {show: false, id : '3'},
  {show: false, id : '4'},
  {show: false, id : '5'}
]
Run Code Online (Sandbox Code Playgroud)

我想克隆这个数组并更改/变异一个对象。

我在减速器中尝试过类似的东西,但没有用。

   return  [...state.concat(Object.assign({}, state[0], {show:true} )).slice(1,5)];
Run Code Online (Sandbox Code Playgroud)

任何帮助或解释都会很好。

javascript arrays reactjs redux

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

什么情况下可以卸载根组件?

我有一个初始化和托管整个应用程序的根组件,简化后看起来像

class App extends React.Component {
    componentDidMount() {
        // initialisation here
    }

    componentWillUnmount() {
        // I expect this to never happen
    }

    render() {
        // the whole app is rendered here
    }
}
Run Code Online (Sandbox Code Playgroud)

它在页面上呈现的非常简单(我只做了一次,该脚本在页面加载时运行并且不再被调用)

ReactDOM.render(<App />, domElement);
Run Code Online (Sandbox Code Playgroud)

我最近发现有时(极少)会调用App's componentWillUnmount

上次它发生在移动版 chrome 67 上,但也在台式机上观察到。

我用一个虚拟对象raven.captureMessage('application will unmount');raven哨兵客户端在哪里)捕获了那个事件,所以目前我还没有更多细节。

但让我感到非常惊讶的是:在什么情况下可以通过 react 卸载 root 组件?没有 JS 接触 react-managed DOM,最后一次发生在我认识的人的手机上,它是一个普通的 Chrome 浏览器,没有任何修改。

我和那个人谈过——他们提到应用程序在视觉上看起来很正常(但由于显而易见的原因,它没有正常运行——因为我取消了那里的东西)。

另一个奇怪的时刻是,我还记录componentDidMount了该组件是否发生了不止一次(通过模块范围的变量),并且没有被调用。

所以总结一下:componentWillUnmount被调用了,DOM 节点没有被移除,连续componentDidMount没有被调用(这个序列对我来说听起来难以置信,但这是我观察到的)。

另一件重要的事情:对于最新的情况,它恰好在 chrome 使选项卡解除休眠之后发生(当它休眠或其他选项卡需要 ram/cpu 时,chrome 将选项卡置于休眠状态)。 …

javascript reactjs

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

具有意外索引扫描的慢查询

我有这个问题:

SELECT *
FROM sample
   INNER JOIN test ON sample.sample_number = test.sample_number
   INNER JOIN result ON test.test_number = result.test_number
   WHERE sampled_date BETWEEN '2010-03-17 09:00' AND '2010-03-17 12:00'
Run Code Online (Sandbox Code Playgroud)

这里最大的表是RESULT,包含11.1M记录.左边2个表约1M.

此查询运行缓慢(超过10分钟)并返回大约800条记录.执行计划显示所有11M记录上的聚集索引扫描(通过它的PRIMARY KEY(result.result_number,它实际上不参与查询)).RESULT.TEST_NUMBER是一个群集主键.

如果我改变2010-03-17 09:00到2010-03-17 10:00 - 我得到大约40条记录.它执行300毫秒.和计划显示索引搜索(over result.test_number索引)

如果我将SELECT子句中的*替换为result.test_number(用索引覆盖) - 那么在第一种情况下所有都变快了.这指向hdd IO问题,但没有说明改变计划.

那么,有什么想法吗?

更新: sampled_date在表样本中并由索引覆盖.此查询中的其他字段:test.sample_number也由index和result.test_number覆盖.

更新2: 显然比sql server在任何原因都不想使用索引.

我做了一个小实验:我用结果删除INNER JOIN,选择所有test.test_number然后再做

SELECT * FROM RESULT WHERE TEST_NUMBER IN (...)
Run Code Online (Sandbox Code Playgroud)

当然,这很快.但我无法得到有什么不同,以及为什么查询优化器选择这种不恰当的方式来选择第一种情况下的数据.

更新3: 备份数据库并使用新名称恢复到数据库后 - 即使在更多范围内,这两个请求也能按预期快速运行...

那么 - 是否有任何特殊的命令来清理或优化,可能与此相关?:-(

sql indexing performance

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

在刚刚创建的窗口中设置文本输入的焦点

我有一些琐碎的窗口:

   this.window = Ext.widget('window', {
            title: 'Find',
            closeAction: 'hide',
            width: 300,
            layout: 'fit',
            items: form
        });
Run Code Online (Sandbox Code Playgroud)

琐碎的形式

var form = Ext.widget('form', {
    layout: {
        type: 'vbox',
        align: 'stretch'
    },
    border: false,
    bodyPadding: 10,

    items: [
        this.findInput,
    ]
});
Run Code Online (Sandbox Code Playgroud)

只有一个项目

    this.findInput = Ext.widget('textfield', {
        name: 'find'
    });
Run Code Online (Sandbox Code Playgroud)

问题是:如何在窗口显示后立即设置焦点?我试图在几乎每个窗口事件处理程序中调用.focus()方法而this.findInput没有运气.

看起来甚至afterrender在DOM完全创建所有元素之前同步调用.

我错过了什么?我应该绑定什么事件来渲染所有元素并能够接受焦点?

PS:如果我.focus()在10ms之间的小间隔之后调用相同的内容- 我会把它集中注意力,但这不是解决方案

javascript extjs extjs4 extjs4.1

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