小编Jes*_*ord的帖子

我什么时候应该在es6箭头函数中使用`return`?

新的es6箭头函数return在某些情况下是隐含的:

表达式也是该函数的隐式返回值.

在什么情况下我需要使用returnes6箭头功能?

javascript return function ecmascript-6 arrow-functions

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

如何在执行PHP单元测试期间在CLI中输出?

在运行PHPUnit测试时,我希望能够转储输出,这样我就可以调试一两件事.

我尝试了以下(类似于PHPUnit手册示例);

class theTest extends PHPUnit_Framework_TestCase
{
    /**
     * @outputBuffering disabled
     */
    public function testOutput() {
        print_r("Hello World");
        print "Ping";
        echo "Pong";
        $out = "Foo";
        var_dump($out);
    }   
}
Run Code Online (Sandbox Code Playgroud)

结果如下:

PHPUnit @package_version@ by Sebastian Bergmann.

.

Time: 0 seconds, Memory: 3.00Mb

OK (1 test, 0 assertions)
Run Code Online (Sandbox Code Playgroud)

请注意,没有预期的输出.

我在2011年9月19日使用了HEAD版本的git repos.

产量php -version:

$ php -version
PHP 5.2.9 (cli) (built: Dec  8 2010 11:36:37) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend …
Run Code Online (Sandbox Code Playgroud)

php phpunit unit-testing

132
推荐指数
9
解决办法
10万
查看次数

如何编写集成测试以与外部API进行交互?

首先,我的知识在哪里:

单元测试是测试一小段代码的方法(主要是单一方法).

集成测试是测试多个代码区域之间交互的测试(希望它们已经有了自己的单元测试).有时,部分测试代码需要其他代码以特定方式执行操作.这就是Mocks&Stubs的用武之地.因此,我们非常具体地模拟/删除部分代码.这使我们的集成测试可以预测地运行而没有副作用.

所有测试都应该能够独立运行而无需数据共享.如果需要数据共享,这表明系统没有足够的分离.

接下来,我面临的情况:

当与外部API(特别是将使用POST请求修改实时数据的RESTful API)进行交互时,我理解我们可以(应该?)模拟与该API的交互(在此答案中更加雄辩地说明)进行集成测试.我也理解我们可以单元测试与该API交互的各个组件(构造请求,解析结果,抛出错误等).我没有得到的是如何实际解决这个问题.

所以,最后:我的问题.

如何测试与具有副作用的外部API的交互?

一个完美的例子是Google的Content API用于购物.为了能够执行手头的任务,它需要大量的准备工作,然后执行实际请求,然后分析返回值.其中一些没有任何"沙盒"环境.

执行此操作的代码通常具有相当多的抽象层,例如:

<?php
class Request
{
    public function setUrl(..){ /* ... */ }
    public function setData(..){ /* ... */ }
    public function setHeaders(..){ /* ... */ }
    public function execute(..){
        // Do some CURL request or some-such
    }   
    public function wasSuccessful(){
        // some test to see if the CURL request was successful
    }   
}

class GoogleAPIRequest
{
    private $request;
    abstract protected function …
Run Code Online (Sandbox Code Playgroud)

api rest phpunit integration-testing unit-testing

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

如何使用特定文件大小保存图像?

我正在构建一个PHP系统,用户可以创建一个视觉上复杂的图像,最终要求为50kB或更低.

用户可以选择将文本打印到37个模板图像中的一个上,因此结果是单个平面图像.

文本可以是任何颜色和多种字体之一.这意味着最终图像可能非常复杂且不可预测(图像尺寸除外).

然后,我要求最终图像文件大小不超过50kB(这是一个外部要求,不能更改).

最后一个要求(同样是外部)是图像格式必须是.jpeg,.png或.gif.

我查看了GraphicsMagick文档,但无法找到任何能够设置文件大小并自动计算压缩的地方.

我已经考虑通过compress-> save->测试循环以编程方式执行此操作,但是我可以想象这将是处理器密集型的,因为我不一定能提前基于压缩来计算文件大小.这就是为什么我要问看看这个问题是否已经在GraphicsMagick中解决了.

编辑

要明确为什么有外部要求:

用户将利用该系统创建一个平面图像,然后将其保存到PC上.然后,此图片将上传到Adroll,以便在重定向广告系列中使用.

以下是Adroll对图像的要求.我的系统仅提供728x90,300x250和120x600图像尺寸.

编辑 2010年11月27日

由于GraphicsMagick似乎无法做到这一点,我愿意研究其他解决方案,例如直接与可能提供功能的压缩库(libpng等)接口.

作为最后的手段,我甚至可以看到能够实现这一目标并自己实现的算法.


作为类比,对于那些倾向于这样的人:

我追求A*的搜索:它有一个明确的起点/终点,并在最快的时间内找到最佳路线.

我希望避免的是广度/深度优先搜索:明确的起点/终点,但一旦找到局部最小值,可能不会达到最优解,并且有可能在计算上完全爆发.

php image image-processing image-compression

23
推荐指数
3
解决办法
6927
查看次数

如何在Github上查看Markdown文件的来源?

.md在github.com上查看时,Github有助于将Markdown()文件呈现为HTML(例如,这个README.md).

查看任何其他源文件时,它显示为未呈现的源代码(例如,.gitignore).一个方便的功能是通过单击行号直接链接到源中的一行(例如,像这样).

如何在Github上查看Markdown文件的未呈现源(因此我可以链接到源中的特定行)?

注意:我知道"Raw"按钮,但它没有提供任何一个很好的UI Github.

markdown github

23
推荐指数
3
解决办法
2014
查看次数

Lua:如何避免循环要求

问题

在尝试执行循环要求时,如何避免Lua 5.1的以下错误?

$ lua main.lua 
lua: ./bar.lua:1: loop or previous error loading module 'foo'
stack traceback:
    [C]: in function 'require'
    ./bar.lua:1: in main chunk
    [C]: in function 'require'
    ./foo.lua:1: in main chunk
    [C]: in function 'require'
    main.lua:1: in main chunk
    [C]: ?
Run Code Online (Sandbox Code Playgroud)

文件结构

main.lua

require "foo"
require "bar"
print (Foo.getName())
print (Bar.getName())
Run Code Online (Sandbox Code Playgroud)

foo.lua

require 'bar'
Foo = {}
Foo.name = 'foo'

function Foo:getName()
    return Foo.name .. Bar.name
end
Run Code Online (Sandbox Code Playgroud)

bar.lua

require 'foo'
Bar = {}
Bar.name = 'bar'

function Bar:getName() …
Run Code Online (Sandbox Code Playgroud)

lua circular-dependency

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

伪造一个cookie的'路径' - 通过.htaccess/javascript /或其他?

背景

我有php/js软件(Piwik),它设置一个cookie来跟踪对网站的访问.

设置我们的站点(即;不是Piwik),以便将所有URL(资源除外)写回/public/index.php.

这样,我们的用户每个都获得一个唯一的URL,例如;

http://www.example.com/user1

http://www.example.com/user2

......等

为了跟踪Piwik中的每个用户URL ,我建议我需要将cookie中的路径设置为Apache映射到实际目录的路径.

由于我们没有为每个用户提供实际目录,因此我们无法执行此操作.

最后,我们继续在.htaccess中使用RewriteBase告诉Apache我们认为用户的URL是它自己的目录.

然而,这不足,因为似乎没有办法在不对"基础"进行硬编码的情况下使用RewriteBase.

这个问题

我可以在.htaccess中做这样的事情吗? Francois Deschenes的回答说我不能这样做.

RewriteCond ^([^/]*)(/.*)?
RewriteBase %1
Run Code Online (Sandbox Code Playgroud)

我还有什么其他选择来确保将cookie的"路径"设置为用户的URL而不仅仅是"/"?

我现在有什么

.htaccess in/contains;

RewriteRule ^(.*)$ /public/$1 [L]
Run Code Online (Sandbox Code Playgroud)

然后/ public中的.htaccess包含;

RewriteRule ^index\.php5/(.*)$ -                   [L]
RewriteRule ^index\.php5?(.*)$ -                   [L]
RewriteRule ^index\.php5$      -                   [L]

RewriteRule ^(.*)$             /public/index.php5  [L]
Run Code Online (Sandbox Code Playgroud)

请注意,对于已移动的路径等,这两个规则在开头都有其他规则.

感谢您的帮助!

我试过了什么

按照Piwik文档中的建议,在JS Piwik对象上调用.setCookiePath().例如,对于URL http://www.example.com/user1,调用.setCookiePath('/ user1')并不会实际设置cookie的路径.

URL 添加尾部斜杠,然后调用.setCookiePath().例如,URL http://www.example.com/user1/然后调用.setCookiePath('/ user1')不会设置cookie的路径.

相关问题

使用mod_rewrite,我可以在RewriteCond中指定RewriteBase吗? - 不幸的是,答案并不表示我是否可以使用当前路径作为基础.

javascript php .htaccess mod-rewrite matomo

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

在资源受限的浏览器(移动)中管理大型数据集的缓存

问题

如何在单页面应用程序中管理大量已过滤,已排序,分页的数据,这些应用程序还必须在资源受限的设备(例如,移动设备)上运行?

进一步来说; 我有一个1000多个地理编码的地方信息对象的数据集,它被过滤到地图视口中包含的数据集.由于移动设备的内存限制,我无法缓存整个数据集.但是,由于移动设备上的网络连接速度较慢,我希望最小化HTTP请求.

结合最大缓存和最小网络请求的最佳策略是什么?


一些背景

我正在为澳大利亚潜在的大型(1000+)信息数据集构建地图拆分视图:

+----------------------------------------+-----------------------------+
|                                        |             +----------+    |
|                                        |    Sort By: |Suburb |\/|    |
|                                        |             +----------+    |
|                                        |+---------------------------+|
|                _,__        .:          ||                           ||
|               <*  /        | \         ||  Blah Blah                ||
|           .-./     |.     :  :,        ||                           ||
|          /           '-._/     \_      ||  Zoom Zip                 ||
|         /                '       \     ||                           ||
|       .'                         *:    |+---------------------------+|
|    .-'                             ;   |+---------------------------+|
|    |                               |   ||                           ||
|    \                              /    ||  Bing Bong                || …
Run Code Online (Sandbox Code Playgroud)

javascript caching google-maps xmlhttprequest

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

如何在Isomorphic应用程序中将状态从DOM同步到我的React组件?

我的问题

我正在React中构建一个Isomorphic Application,它首先渲染一个组件服务器端,然后利用React的智能重新渲染浏览器端.

我遇到过这种情况,在React能够首先呈现浏览器端之前,DOM可能与React组件的状态不同步.这可能发生在用户使用慢速Internet连接时,react.js文件需要一段时间才能下载(这也是我构建同构应用程序的原因)

这是我放在一起展示这种情况的一个例子:http://jsfiddle.net/jesstelford/z4o44esb

  • 运行此示例
  • 勾选复选框
  • 点击"渲染反应"
  • 当前的React状态在控制台中输出
  • 请注意,它仍设置为{done:false},这是不正确的
var TodoItem = React.createClass({

  // ...

  render: function() {
    return (
      <label>
        <input type="checkbox" defaultChecked={this.state.done} onChange={this.onChange} />
        {this.props.name}
      </label>
    );
  }
});

// User toggles checkbox ON here, before React is rendered browser-side

// render using React browser-side
var renderedComponent = React.render(component, document.getElementById('content'));

// Incorrectly outputs { done: false }  
console.log('React state:', renderedComponent.state);
Run Code Online (Sandbox Code Playgroud)

可能的(一半)解决方案

我找到了一个可能的解决方案React refs:http …

reactjs isomorphic-javascript

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

如何以非交互方式登录纱线?

使用时npm,我可以通过以下方式以非交互方式登录:

$ printf "jesstelford\n<password>\nexample@email.com\n" | npm login
Run Code Online (Sandbox Code Playgroud)

但是,一个类似的命令yarn挂起:

$ printf "jesstelford\nexample@email.com\n" | yarn login
yarn login v0.21.3
question npm username: jesstelford
question npm email:
Run Code Online (Sandbox Code Playgroud)

在交互模式下,我可以成功运行:

$ yarn login
yarn login v0.21.3
question npm username: jesstelford
question npm email: example@email.com
?  Done in 22.53s.
Run Code Online (Sandbox Code Playgroud)

如何以yarn login非交互方式运行?

terminal continuous-integration node.js npm yarnpkg

5
推荐指数
2
解决办法
3181
查看次数

是什么导致我的React应用程序中出现"Unexpected Fibre popped"警告?

在一个相当复杂的应用程序中,我做了一些与refs 相关的更改,突然开始看到这个警告.

尽管这是一个警告,它正在破坏我的应用程序.

我正在使用React 16.3.0和next.js后端.

导致"意外光纤弹出"警告的原因是什么?

javascript warnings reactjs

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

PHPUnit:使用Mock修改返回值?

我想有一个PHPUnit Mock,它执行一个像normal一样的方法,但是在函数返回之前以某种方式修改返回值.

是)我有的

我有一组派生类,类似于下面:

abstract class Base
{
    abstract protected function getUrl();
    public function callUrl() {
        $url = $this->getUrl();
        // some code to call the URL here
    }   
}

class Foo extends Base
{
    protected function getUrl() {
        return "http://www.example.com/Foo";
    }   
}

class Bar extends Base
{
    protected function getUrl() {
        return "http://www.example.com/Bar";
    }   
}
Run Code Online (Sandbox Code Playgroud)

请注意我的课程要复杂得多,我必须测试的一些项目有副作用(例如写入数据库等).

天真的,重复的代码方法

如果我只有一个派生类(例如; Foo),那么我可以执行以下操作:

class FooMock extends Foo
{   
    protected function getUrl() {
        return parent::getUrl() . "?sandbox";
    }   
}   

class theTest extends PHPUnit_Framework_TestCase
{   
    public …
Run Code Online (Sandbox Code Playgroud)

php phpunit unit-testing

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