小编Kai*_*ren的帖子

像Dart中的功能一样卷曲

我正在寻找在Dart中获得类似卷曲功能的最佳方法.例如,如何获取google.com网络内容并输出它,作为示例.

我发现我可以通过shell调用它,如图所示,但这似乎不是理想的方法:

import 'dart:io';

main() {
  var f = new File(new Options().executable);
  Process.start('curl', 
                ['--dump-header', '/tmp/temp_dir1_M8KQFW/curl-headers', '--cacert',
                 '/Users/ager/dart/dart/third_party/curl/ca-certificates.crt', '--request', 
                 'POST', '--data-binary', '@-', '--header', 'accept: ', '--header', 'user-agent: ' ,
                 '--header', 'authorization: Bearer access token', '--header', 
                 'content-type: multipart/form-data', '--header',
                 'content-transfer-encoding: binary', '--header',
                 'content-length: ${f.lengthSync()}', 'http://localhost:9000/upload']).then((p) {
    f.openInputStream().pipe(p.stdin);
    p.stdout.pipe(stdout);
    p.stderr.pipe(stderr);
    p.onExit = (e) => print(e);
  });
}
Run Code Online (Sandbox Code Playgroud)

我也查看了API,在这里找不到任何帮助我的东西.

dart

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

使用RegExp匹配Unicode字母

我需要匹配Unicode字母,类似于PCRE \p{L}.

现在,由于Dart的RegExp类基于ECMAScript,它\p{L}遗憾地没有概念.

我正在考虑构建一个匹配所有Unicode字母的大字符类,但我不知道从哪里开始.

所以,我想匹配以下字母:

foobar
???? ????
Run Code Online (Sandbox Code Playgroud)

但是R符号不应该匹配:

BlackBerry®
Run Code Online (Sandbox Code Playgroud)

也不应该有任何ASCII控制字符或标点符号等.基本上每种语言Unicode支持的每个字母,无论是å,ä,φ还是,,如果它们是实际字母,它们应匹配.

dart

6
推荐指数
2
解决办法
781
查看次数

如何配置 Webpack 从其 src 文件夹而不是 dist 加载模块?

我正在开发一个 monorepo,因此我希望 Webpack 从而src不是dist(dist在 中指定package.json)加载我的源代码。

例如给出以下结构:

/packages/core/dist/index.js (compiled output)
/packages/core/src/index.ts (original TypeScript source)
/packages/core/package.json (`main` and `module` point to `dist`)
Run Code Online (Sandbox Code Playgroud)

现在/packages/foo/src/index.ts我在里面做import Foo from '@test/core'。问题是 Webpack 读取corepackage.json并使用它的modulemain指向dist文件夹的字段。我希望 Webpack 从 加载原始源代码src,因为这@test/core是我自己代码库的一部分,而不是外部依赖项。

有没有办法强制 Webpack 只为某些模块加载我的原始 TS 源,比如以 开头的模块@test/

typescript webpack package.json lerna monorepo

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

Dart web UI并在表内迭代

我试图迭代表中的数据:

  <table>
    <template iterate="entry in data">
      <tr>
        <template iterate="value in entry.values">
          <td>{{ value }}</td>
        </template>
      </tr>
    </template>
  </table>
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我在构建时收到此错误消息:

表上下文中的意外结束标记(模板)导致了巫毒模式.

当我在里面迭代时它工作正常ul:

  <ul>
    <template iterate="entry in data">
      <template iterate="value in entry.values">
        <li>{{ value }}</li>
      </template>
    </template>
  </ul>
Run Code Online (Sandbox Code Playgroud)

我想,使用表和迭代应该不是问题.

dart dart-webui

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

Scala模式匹配多种类型的东西

假设cUpdatableDrawable两者.如果是两者,我想先处理Updatable.

鉴于此代码:

case c: Updatable => c.update()
case c: Drawable => c.draw()
Run Code Online (Sandbox Code Playgroud)

有一个问题:它只评估其中一个选择.有时,c两者都可以,所以我需要运行这两个.

我知道有这样的|机制:

case c @ (_: Updatable | _: Drawable) => c.update(); c.draw()
Run Code Online (Sandbox Code Playgroud)

这里的问题是我不能同时打电话update,draw因为它是一个|.

我想我正在寻找这样的东西,但是没有编译:

case c @ (_: Updatable & _: Drawable) => c.update(); c.draw()
case c: Updatable => c.update()
case c: Drawable => c.draw()
Run Code Online (Sandbox Code Playgroud)

有这样的事吗?我知道我可以打开并写isInstacenOf,但如果有可能,我更喜欢模式匹配.

scala

4
推荐指数
2
解决办法
342
查看次数

将代码拆分为文件时,无法实现特征

我有一个简单的Rust问题,在对代码进行模块化时会出现。

以下作品:

pub trait B {
    fn bar(&self) -> int;
}

pub struct A {
    foo: int
}

impl B for A {
    fn bar(&self) -> int { 5 }
}

// Later...
let a = A { foo: 5 };
println!("{}", a.bar());
Run Code Online (Sandbox Code Playgroud)

它可以打印5,但是一旦我将代码模块化:

// lib.rs
mod a;
mod b;

// b.rs
pub trait B {
    fn bar(&self) -> int;
}

// a.rs
use b::B;

pub struct A {
    foo: int
}

impl B for A {
    fn …
Run Code Online (Sandbox Code Playgroud)

rust

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

如何使用 TypeScript 设置 Lerna monorepo

我有一个core库,其中包含以下内容package.json

"main": "dist/cjs/index.js",
"module": "dist/esm/index.js",
"es2015": "dist/es2015/index.js",
"types": "dist/es2015/index.d.ts",
"typings": "dist/es2015/index.d.ts",
Run Code Online (Sandbox Code Playgroud)

该库将 TypeScript 代码构建到dist/文件夹中以进行分发。源代码位于src/.

我正在使用 Lerna 和 monorepos,并且我正在尝试获取另一个包/模块来按原样加载 TypeScript 代码:

import { someTypeScriptStuff } from '@test/core'
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用。IntelliJ 和 TSLint 都抱怨缺少模块。如果我将main字段的值更改package.jsonsrc/index.ts,则它可以工作。

我不想dist在开发的时候一直把TS代码编译成,因为很痛苦。

显然,我不能将 main 字段更改为src/index.ts任何一个,因为它应该引用在节点/浏览器中按原样工作的普通 JavaScript。

是否有我可以使用的 TypeScript 特定字段,package.jsonIntelliJ 和 TSLint 都可以使用它?那将是理想的。

我能想到的唯一解决方案是让main字段指向 TS 代码,并更改我的构建过程,通过将main字段交换回以dist/cjs/index.js进行分发来改变打包的 NPM 模块的内容。我想避免这种情况。

intellij-idea npm typescript package.json monorepo

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

如何从Terraform / Pulumi访问Cloud Run服务IP以动态创建A记录?

我正在使用 Google Cloud Run 和 Pulumi(类似于 Terraform)。我的 Cloud Run 域映射设置是:

  new gcp.cloudrun.DomainMapping(
    `${prefix}-domain-mapping`,
    {
      location,
      name: 'xxx',
      metadata: {
        namespace: projectId,
      },
      spec: {
        routeName: appService.name,
      },
    },
    {
      dependsOn: [appService],
    },
  )
Run Code Online (Sandbox Code Playgroud)

其中appService指向 Cloud Run 服务的实例。这成功创建了到 Cloud Run 服务的域映射。

接下来我将设置一个包含记录的 DNS 区域:

  const zone = new gcp.dns.ManagedZone(`${prefix}-zone`, {
    name: `${prefix}-zone`,
    dnsName: 'xxx.',
    visibility: 'public',
  })

  const ips = ['xxx', 'xxx', 'xxx', 'xxx']
  new gcp.dns.RecordSet(
    `${prefix}-a-records`,
    {
      name: 'xxx.',
      managedZone: zone.name,
      type: 'A',
      ttl: 3600,
      rrdatas: ips,
    }, …
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform terraform pulumi google-cloud-run

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

如何退出我的 Dart (vm) 程序?

(抱歉,我知道这主要是对约翰·埃文(John Evan)问题的重复,但以前的答案现在肯定已经过时了。)

exitCode如果发生某种情况(仅用于调试目的),我希望能够指定一个并离开我的(vm)程序。

上面的注意事项我不能import 'dart:builtin',而且我exit()在 API 中找不到在此上下文中提及的内容。

(我更详细的情况是,我的工作涉及相当大量的详细输出,并且在我测试和调试事物时,我发现仅exit();使用程序最方便- 显然仅适用于开发过程。)

谢谢,

_G

error-code exit dart

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

Dart是否支持PHP,如$ _SESSION(会话)?

服务器端Dart是否支持PHP中的会话:

<?php

session_start();

$_SESSION['fruit'] = 'apple';
Run Code Online (Sandbox Code Playgroud)

页面加载时保留数据.

dart

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