我正在准备考试,目前正在阅读有关观察者模式的内容。然后我想知道观察者模式遵循或违反了哪些SOLID原则?
我将Angular项目更新为Angular 6,并且不知道如何进行http获取请求.这就是我在Angular 5中的表现:
get(chessId: string): Observable<string> {
this.loadingPanelService.text = 'Loading...';
this.loadingPanelService.isLoading = true;
const url = `${this.apiPathService.getbaseUrl()}api/chess/${chessId}/rating`;
return this.http.get<string>(url)
.catch((error) => {
console.error('API error: ', error);
this.loadingPanelService.isLoading = false;
this.notificationService.showErrorMessage(error.message);
return Observable.of(null);
})
.share()
.finally(() => {
this.loadingPanelService.isLoading = false;
});
Run Code Online (Sandbox Code Playgroud)
这就是我现在正在做的事情.这是应该如何在Angular 6中完成的吗?
...
return this.http.get<string>(url)
.pipe(
catchError(this.handleError),
share(),
finalize(() =>{this.loadingPanelService.isLoading = false})
);
private handleError(error: HttpErrorResponse) {
console.error('API error: ', error);
this.loadingPanelService.isLoading = false;
this.notificationService.showErrorMessage(error.message);
// return an observable with a user-facing error message
return throwError(
'Something bad happened; …
Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法以编程方式列出所有特殊方法(如__getattr__
,__lt__
),而不是转到Python数据模型文档并复制粘贴所有这些方法.因为我可以dir(builtins)
用来检索内置标识符列表,所以我希望还有一种特殊方法的方法.
我希望能够从而http://pbdev
不是访问我的 Vue 项目localhost:8080
。我熟悉在 Apache 中创建虚拟主机,但我不清楚如何使用 Vue CLI 3 项目来创建虚拟主机。
到目前为止,我已将其放入/etc/hosts
:
# Vue Hosts
127.0.0.1:8080 pbdev
Run Code Online (Sandbox Code Playgroud)
我把这个放进去vue.config.js
:
module.exports = {
lintOnSave: false,
devServer: {
host: 'pbdev',
port: 8080,
https: false
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
INFO Starting development server...
10% building modules 1/1 modules 0 activeevents.js:167
throw er; // Unhandled 'error' event
^
Error: getaddrinfo ENOTFOUND pbdev
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:57:26)
Emitted 'error' event at:
at GetAddrInfoReqWrap.doListen [as callback] (net.js:1505:12)
at GetAddrInfoReqWrap.onlookup [as oncomplete] …
Run Code Online (Sandbox Code Playgroud) 我有一个简单的程序来运行 8 个进程,它通过使用多处理显着减少了脚本运行时间,但是,我不确定应该将多少进程放入最大 CPU 利用率。目前我的 CPU 是 6 核,只有 1 个物理 CPU,因为它是 VPS。:
def spider1():
def spider2():
def spider3():
def spider4():
def spider5():
def spider6():
def spider7():
def spider8():
if __name__ == '__main__':
p1 = multiprocessing.Process(target=spider1,)
p2 = multiprocessing.Process(target=spider2,)
p3 = multiprocessing.Process(target=spider3,)
p4 = multiprocessing.Process(target=spider4, )
p5 = multiprocessing.Process(target=spider5, )
p6 = multiprocessing.Process(target=spider6, )
p7 = multiprocessing.Process(target=spider7, )
p8 = multiprocessing.Process(target=spider8, )
p1.start()
p2.start()
p3.start()
p4.start()
p5.start()
p6.start()
p7.start()
p8.start()
Run Code Online (Sandbox Code Playgroud) 我正在尝试弄清楚如何使用 R8 保留原始行号。
使用当前的 AndroidStudio 制作应用程序并使用 R8 对其进行混淆,甚至将mapping.txt
文件上传到 Google Play Console,用户的堆栈跟踪在某些情况下是无用的,因为崩溃的行与真实的非混淆文件中的行不同。
com.mypackage.activities.ManagerActivity.onCreate (ManagerActivity.java:3052)
这是一个示例,我的类没有3000行,但是在第3052行( )报错:
Caused by: java.lang.NullPointerException:
at com.mypackage.activities.ManagerActivity.onCreate (ManagerActivity.java:3052)
at android.app.Activity.performCreate (Activity.java:7136)
at android.app.Activity.performCreate (Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2990)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3148)
at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1861)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:193)
at android.app.ActivityThread.main (ActivityThread.java:6819)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:497)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:912)
Run Code Online (Sandbox Code Playgroud)
有没有办法使用 R8 和 AndroidStudio 获取错误的真实行号?请记住,此代码已使用mapping.txt 文件进行反混淆
为了组织一些代码,我将一堆 TypeScript React 组件提取到它们自己的 npm 模块中,该模块的范围是我的组织名称,然后用纱线链接回原始代码库。
在我原来的代码库中,我现在有:
import { Title } from '@foo/ui'
Run Code Online (Sandbox Code Playgroud)
打字稿给了我这个错误Cannot find module '@foo/ui' or its corresponding type declarations.ts(2307)
现在我可以看到我的模块符号链接在我的原始存储库node_modules
文件夹中没有问题。
我没有单独的类型文件 - 一切都在每个反应模块中 - 尽管如此,我还是尝试创建一个半空的类型文件,尽管我有点不清楚如何使用作用域包。我有:
/
@types
@foo
ui.d.ts
index.d.ts
Run Code Online (Sandbox Code Playgroud)
两个 d.ts 文件都只有一个基本条目:
declare module '@foo/ui'
Run Code Online (Sandbox Code Playgroud)
现在关键是我想直接在我的应用程序中使用 TypeScript 文件@foo/ui
而不生成 js 文件(这可能吗?这样做的目的是因为模块ui
正在开发中,所以可以轻松地并行开发。我对TS 显然在这里遗漏了一些东西 - 添加范围和纱线链接没有帮助!
有人可以告诉我如何解决这个问题吗?最好直接使用 TS 文件。
我正在尝试为prototype.js 设置测试。我想避免启动本地服务器来使用 cypress / puppeteer / 等。我的目标只是使用 jest。
我的想法是为每个测试设置一个最小值,index.html
如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.2.0/prototype.js"></script>
</head>
<body>
<span id="el">foo foo</span>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我首先尝试将 jest 运行为
const fs = require('fs');
const path = require('path');
const html = fs.readFileSync(path.resolve(__dirname, './index.html'), 'utf8');
jest.dontMock('fs');
describe('$', function () {
beforeEach(() => {
document.documentElement.innerHTML = html.toString();
});
afterEach(jest.resetModules);
it('finds a node', function () {
expect($('el')).toBeInTheDocument()
});
});
Run Code Online (Sandbox Code Playgroud)
但$
由于所有prototype.js全局的东西都不可用。
现在,如果我们使用任何分支创建标签,我们的操作工作流程就会开始运行。仅当我们从主分支创建标签时,我们才希望触发操作工作流程。我当前的 YAML 文件如下所示。让我们知道这里需要更改什么
on:
push:
tags:
- '*'
Run Code Online (Sandbox Code Playgroud) 我试图在超级测试中将 cookie 会话设置为 post 请求,但我不能。这是我的测试代码:
const app = express();
app.set("trust proxy", true);
app.use(json());
app.use(
cookieSession({
signed: false,
secure: process.env.NODE_ENV !== "test",
})
);
it("this is a test", async () => {
const response = await request(app)
.post("/api/users/current")
.set("Cookie", [
'express:sess=eyJqd3QiOiJleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKcFpDSTZJakV5TXpRaUxDSmxiV0ZwYkNJNkluUmxjM1JBZEdWemRDNWpiMjBpTENKcFlYUWlPakUyTkRZeE5qazVNREI5LjZybE8zODB2RG1PN0J4cFlhRERZSnBScmhrMEc2X3pvN3BBd2MxYU5rMVEifQ=='
])
.send({});
expect(response.get("Set-Cookie")).toBeDefined();
});
Run Code Online (Sandbox Code Playgroud)
这个测试失败了,因为response.get("Set-Cookie")
未定义
javascript ×2
jestjs ×2
python ×2
python-3.x ×2
typescript ×2
android ×1
android-r8 ×1
angular ×1
angular6 ×1
node.js ×1
obfuscation ×1
proguard ×1
supertest ×1
unit-testing ×1
vue-cli ×1
vue-cli-3 ×1
vue.js ×1
web-crawler ×1
webpack ×1
yarnpkg ×1