小编jon*_*rpe的帖子

观察者模式遵循/违反哪些可靠原则?

我正在准备考试,目前正在阅读有关观察者模式的内容。然后我想知道观察者模式遵循或违反了哪些SOLID原则?

software-design solid-principles observer-pattern

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

HTTP在Angular 6中调用

我将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)

typescript angular angular-httpclient angular6

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

Python特殊方法名称的完整列表?

我想知道是否有办法以编程方式列出所有特殊方法(如__getattr__,__lt__),而不是转到Python数据模型文档并复制粘贴所有这些方法.因为我可以dir(builtins)用来检索内置标识符列表,所以我希望还有一种特殊方法的方法.

python python-3.x

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

如何为 Vue CLI 3 项目设置虚拟主机

我希望能够从而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)

webpack vue.js vue-cli vue-cli-3

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

Python 3 Multiprocessing - 我应该使用多少个进程?

我有一个简单的程序来运行 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)

python web-crawler multiprocessing python-3.x

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

如何使用 R8 在堆栈跟踪中保留原始行号?

我正在尝试弄清楚如何使用 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 文件进行反混淆

obfuscation android proguard android-r8

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

纱线直接链接和使用打字稿模块

为了组织一些代码,我将一堆 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 文件。

typescript yarnpkg

5
推荐指数
0
解决办法
636
查看次数

用 jest 测试 html 页面

我正在尝试为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全局的东西都不可用。

javascript jestjs

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

如何通过仅从主分支创建标签来触发 github 操作工作流程?

现在,如果我们使用任何分支创建标签,我们的操作工作流程就会开始运行。仅当我们从主分支创建标签时,我们才希望触发操作工作流程。我当前的 YAML 文件如下所示。让我们知道这里需要更改什么

on:
  push:    
    tags:        
      - '*'
Run Code Online (Sandbox Code Playgroud)

continuous-integration github-actions

5
推荐指数
0
解决办法
3638
查看次数

我试图在超级测试中设置 cookie,但它不起作用

我试图在超级测试中将 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 unit-testing node.js supertest jestjs

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