为什么当我所做的是创建一个零依赖项目时,作曲家这么慢?以下是我运行的命令:
/vendor
composer init
等3分钟(不夸张).
所有作曲家要做的就是拉动自动加载器并创建init,那么为什么需要这么长时间呢?就此而言,为什么不采取这一步骤/vendor呢?
是否有一个配置选项可用于引入缓存的自动加载器和供应商composer init?
鉴于我有这个代码:
if (_.isFunction(this.doSomething)) {
this.doSomething();
}
Run Code Online (Sandbox Code Playgroud)
因为loadingComplete是从父控制器传入的指令属性,可能并不总是提供,如果存在,是否有更简洁的单行方式来调用方法,而不重复方法名称?
就像是:
_.call(this, 'doSomething');
Run Code Online (Sandbox Code Playgroud) 我有 Windows 10 Professional 2004 build 19041.329。
我有最新的 Windows Docker 桌面,并选择了 Ubuntu 18.04 LTS 作为我的 WSL 发行版。
我已经设置了所有正确的设置以在 Docker 桌面中启用 WSL 2,并且能够docker info毫无问题地运行命令。
但是,当我尝试docker build -t mytestimage:1.0 .通过 Ubuntu 终端运行时,它需要几分钟,然后将构建上下文发送到 docker 守护程序,但执行速度非常慢。
如果我从 Windows 命令提示符运行相同的命令,它运行得非常快
我在 WSL 1 中没有这个问题,我不确定如何诊断可能有什么问题以及为什么这在 WSL 2 中如此缓慢。
我将在问题的简短版本前面提出长问题:
问题的简短版本
允许对象实例化自己的依赖项,然后提供构造函数参数(或setter方法)来简单地覆盖默认实例化有什么问题?
class House
{
protected $door;
protected $window;
protected $roof;
public function __construct(IDoor $door = null, IWindow $window = null, IRoof $roof = null)
{
$this->door = ($door) ? $door : new Door;
$this->window = ($window) ? $window : new Window;
$this->roof = ($roof) ? $roof : new Roof;
}
}
Run Code Online (Sandbox Code Playgroud)
长版问题
我对这个问题的动机是依赖注入要求你跳过箍只是为了给对象提供它需要的东西.IoC容器,工厂,服务定位器......所有这些都引入了许多额外的类和抽象,使应用程序的API变得复杂,我认为,在许多情况下使测试同样困难.
事实上,对象确实知道它需要什么依赖才能正常运行,这是不合逻辑的?
如果依赖注入的两个主要动机是代码可重用性和单元可测试性,那么能够使用存根或其他对象覆盖默认实例化就可以完成.
同时,如果你需要在你的应用程序中添加House类,你只需要编写House类,而不是它上面的工厂和/或DI容器.此外,任何使用房屋的客户代码都可以包括房屋,并且不需要从上面的某个地方获得房屋工厂或抽象服务定位器.一切都变得非常简单,没有中间人代码,只有在需要时才会实例化.
我完全不认为如果一个对象有依赖关系,它应该能够自己加载它们,同时提供一种机制让这些依赖关系在需要时被重载?
例
#index.php (front controller)
$db = new PDO(...);
$cache = new Cache($dbGateway);
$session = new Session($dbGateway);
$router …Run Code Online (Sandbox Code Playgroud) 这是我的测试代码:
public function testRegistrationFailsIfNameIsEmpty()
{
$this->flushSession();
$response = $this->call('POST', '/signup', ['fullname' => '']);
$this->assertSessionHasErrors('fullname'); // Passes, expected
$this->assertTrue($response->isRedirection()); // Passes, expected
$this->assertRedirectedTo('/signup'); // Fails, unexpected.
}
Run Code Online (Sandbox Code Playgroud)
当我调用该方法时,它会验证输入,如果验证失败,它会将我重定向回/signup显示验证错误.我在浏览器中手动测试了它,它按预期工作.
但是,当我运行上面的单元测试时,最后一个断言失败了,它认为我已被重定向到/而不是/signup.
我不知道它为什么这样做.如果我测试重定向发生了,测试通过,因为重定向确实发生,它只是认为重定向/而不是/signup.
我已经禁用了所有中间件,所以我知道它不像客户中间件,因为我不知道我已经登录了.
编辑:测试结果:
There was 1 failure:
1) RegistrationTest::testRegistrationFailsIfNameIsEmpty
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'http://localhost/signup'
+'http://localhost'
Run Code Online (Sandbox Code Playgroud) We couldn’t deliver this payload: Service Timeout
Run Code Online (Sandbox Code Playgroud)
我在5分钟前成功地将webooks发送到我的服务器,现在我只是不断超时.我尝试删除webook并重新添加它,更改它指向的URL,但没有.
我淹没了太多的推动,还是GitHub的webhook服务刚下来?
假设我有一个像这样的应用程序结构
app/
modules/
module1/
<other files>
script.js
module2/
<other files>
script.js
module3/
<other files>
script.js
lib/
<some common/shared scripts to import from>
public/
js/
Run Code Online (Sandbox Code Playgroud)
如何配置webpack以捆绑并输出每个script.js(将从公共lib文件夹中导入各种库/实用程序)到这样的结构中?
例如
public/js/module1/script.js
public/js/module2/script.js
Run Code Online (Sandbox Code Playgroud)
但是没有单独定义每个条目文件?像gulp这样的东西有/**/*.js语法吗?
我的目标是webpack.config.js每次添加新模块/组件时都不必维护我的文件.
我在文档中找不到有关此错误消息的任何信息:
NFS requires a host-only network to be created.
Please add a host-only network to the machine (with either DHCP or a
static IP) for NFS to work.
Run Code Online (Sandbox Code Playgroud)
这是我的Vagrant配置:
Vagrant.configure(2) do |config|
config.vm.box = "localbox"
config.vm.network "public_network", hostonly: "192.168.33.10"
config.vm.synced_folder ".", "/var/www",
:nfs => true,
:mount_options =>['noacl,nolock,vers=3,udp,noatime,nodiratime,rsize=32768,wsize=32768']
Run Code Online (Sandbox Code Playgroud)
当被问及时,我选择了我的机场连接(Wi-Fi(AirPort)).
我hostonly在Vagrant文档中找不到一个用法.
使用Vagrant 1.7.4
我的目标只是能够从我家中的其他计算机(和我的手机)访问我家中一台计算机上运行的VM.
我有以下设置:
ng serve --aot)提供服务gulp watch我有两个问题:
每当我对库进行更改时,gulp watch都会触发新的构建。但是,此构建失败,并出现以下错误:
Error: EPERM: operation not permitted, unlink
我可以通过触发UI库的手动构建来解决此问题,但是还有另一个问题:正在运行的应用程序会看到对链接库的更改,并在UI库构建开始后立即触发自己的构建。这将创建竞争条件,从而Angular CLI将不会等待UI库完成构建。
使用Angular CLI应用程序使用NPM链接来监视本地NPM库中的更改的正确的标准方法是什么?
假设我有以下模块:
源代码/验证器.js
export const isPositiveNumber = value => value > 0 && value < Number.MAX_SAFE_INTEGER;
Run Code Online (Sandbox Code Playgroud)
我在另一个模块中使用它:
src/计算器/volume.js
import { isPositiveNumber } from '../validators';
import { InvalidArgumentException } from '../exceptions';
export const sphere = radius => {
if (!isPositiveNumber(radius)) {
throw new InvalidArgumentException('radius must be a positive number');
}
return (4/3) * Math.PI * Math.pow(radius, 3);
};
Run Code Online (Sandbox Code Playgroud)
然后在我的测试中:
测试/计算器/volume.test.js
import { volume } from '../../src/calculators/volume';
import { InvalidArgumentException } from '../../src/exceptions';
import { isPositiveNumber } from '../../src/validators';
jest.mock('../../src/validators');
describe('Volume calculations', () …Run Code Online (Sandbox Code Playgroud) javascript ×4
php ×3
unit-testing ×2
angular ×1
angular-cli ×1
composer-php ×1
docker ×1
es6-modules ×1
github ×1
jestjs ×1
laravel-5 ×1
lodash ×1
networking ×1
node.js ×1
npm ×1
oop ×1
ubuntu-18.04 ×1
vagrant ×1
webpack ×1