小编Tom*_*Tom的帖子

python中子进程读取线上的超时

我有一个小问题,我不太确定如何解决.这是一个最小的例子:

是)我有的

scan_process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while(some_criterium):
    line = scan_process.stdout.readline()
    some_criterium = do_something(line)
Run Code Online (Sandbox Code Playgroud)

我想要什么

scan_process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while(some_criterium):
    line = scan_process.stdout.readline()
    if nothing_happens_after_10s:
        break
    else:
        some_criterium = do_something(line)
Run Code Online (Sandbox Code Playgroud)

我从子进程读取一行并用它做一些事情.我想要的是在固定时间间隔后没有线路到达时退出.有什么建议?

python subprocess timeout

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

所有孩子初始化后的Angular 2生命周期钩子?

我正在寻找一个实现以下案例的概念:

我有一个父搜索组件,其中包含一些组件作为视图子/内容子项,用于显示构面和搜索结果.我现在想要在应用程序加载完成后触发搜索,这样用户就不会看到空白页面.

我现在的问题是我找不到符合我需求的生命周期钩子.构面/搜索结果在各自的ngOnInit中订阅搜索结果.所以我需要一个所有子组件完成初始化调用的钩子.

我在父组件上尝试了以下挂钩

  • ngAfterContentInit:在对子项调用ngOnInit之前调用此函数
  • ngAfterViewInit:这个可以工作,但是在搜索结果返回后,子项的视图会更新,这会导致错误,因为在ngAfterViewInit中不允许操作视图的操作

任何想法如何解决这个问题?对我来说,似乎我没有掌握一些基本的东西.

干杯

汤姆

angular

35
推荐指数
3
解决办法
4万
查看次数

Jackson 无法将 String 反序列化为 Joda-Time

我正在使用 Spring Boot 1.5.6 和 Jackson 2.8.8。反序列化 REST 调用的答案时,Jackson 失败并出现以下异常:

JSON 解析错误:无法构造 org.joda.time.DateTime 的实例:没有从字符串值反序列化的字符串参数构造函数/工厂方法 ('2018-03-19T12:05:21.885+01:00')

确实没有 String 构造函数,对象中只有一个 Object 构造DateTime函数。

jackson-datatype-joda在 build.gradle 文件中包含了依赖项。这些是 build.gradle 中的相应行:

compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: jacksonVersion
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: jacksonVersion
compile group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: jacksonVersion
compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-hibernate5', version: jacksonVersion
compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-joda', version: jacksonVersion
Run Code Online (Sandbox Code Playgroud)

我需要做任何额外的配置吗?

PS:如果我将日期字符串放入 anew DateTime("2018-03-19T12:05:21.885+01:00")它工作正常。

有任何想法吗?干杯!

java json jodatime jackson spring-boot

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

将 XSD 导入 OpenAPI

我在 XSD 文件中有一些模型定义,我需要从 OpenApi 定义中引用这些模型。由于文件太大,无法手动重构,我需要将其放入构建系统,以便在更改 XSD 时,我可以为 OpenApi 重新生成模型/模式。

我尝试过并且几乎有效的是使用xsd2json然后使用节点模块json-schema-to-openapi将其转换。但是xsd2json正在删除一些complexElement模型。例如"$ref": "#/definitions/tns:ContentNode",在一个模型中用作子类型,但ContentNode在模式中没有定义,当我查看 XSD 时,有一个complexElement定义ContentNode.

另一种我还没有尝试过但对我来说似乎有点过分的方法是使用 xjb 从 XSD 生成 Java 模型,然后使用 JacksonSchema 生成 json 模式。

是否有任何既定的库或方法可以在 OpenApi 中使用 XSD?

json xsd openapi

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

即使失败,Observable.combineLatest 也会继续

我有一个功能需要从 firebase 解析多个文档

  fetchDocuments(documentIds: string[]): Observable<TreeNodeDocument[]> {
    const observables = [];
    for(let id of documentIds){
      observables.push(this.fetchDocument(id));
    }
    return Observable.combineLatest(observables, (...docs: TreeNodeDocument[]) => {
      //some transformations on the resolved documents
      return docs;
    });
  }
Run Code Online (Sandbox Code Playgroud)

this.fetchDocument(id)返回一个 observable 类型TreeNodeDocument

只要可以解析所有文档,此功能就起作用。现在有时会发生某些文档无法解析的情况,那么相应的 fetchDocument(id)observable 就会失败。可以,预计某些文件无法解析。但是,Observable.combineLatest如果其中一个失败,则完全失败(我知道这是一个很好的默认行为)。

我现在的问题是,我可以combineLatest以某种方式使用,以便我只获取获取有效的文档,而忽略获取失败的文档吗?或者我可以以不同的方式实现这一目标?

干杯

rxjs typescript angular

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

非SPA站点的Angular 2缓慢初始化

我们正在为一个项目评估Angular 2,我注意到一些问题,我需要澄清这是一个Angular问题还是我使用Angular错误.

我们正在用Angular替换部分静态页面以增强用户体验.由于替换的元素可以位于页面上的任意位置,因此我们无法引导单个Angular应用程序(组件在DOM中不像树一样,我们需要传统的模板).我们也没有使用任何Angulars路由.

因此,第一个问题是Angular是非SPA网站的正确技术.要构建'小部件'.

第二个问题是关于表现.如果您有非SPA页面,则无法省略页面重新加载.每次页面重新加载时,都必须再次初始化Angular.这里的好处是,实例化多个根组件不会显着增加引导程序,所以这是一个加号.不好的是,如果我使用Quickstart教程中的配置,我需要大约1.7s来初始化应用程序和要显示的组件,其中大部分时间都归因于system.js,即类加载器.将此更改为webpack并预编译所有内容仍需要300-400毫秒才能显示组件.页面与我的组件具有非常相似的引导程序.

这可以进一步优化(假设<130ms)或者我应该寻找其他技术(例如React),因为它不在Angular的范围内用于非SPA页面.

干杯

汤姆

typescript angular

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

杰克逊在春季启动中反序列化GeoJson Point

我有一个@Entity具有type属性的模型com.vividsolutions.jts.geom.Point。当我尝试在中呈现此模型时,出现@RestController了递归异常。

(StackOverflowError); nested exception is 
com.fasterxml.jackson.databind.JsonMappingException: Infinite 
recursion (StackOverflowError) (through reference chain: 
com.vividsolutions.jts.geom.Point[\"envelope\"]-
>com.vividsolutions.jts.geom.Point[\"envelope\"]....
Run Code Online (Sandbox Code Playgroud)

实体看起来像这样(为简洁起见简称):

@Entity
@Data
public class MyEntity{
    // ...
    @Column(columnDefinition = "geometry")
    private Point location;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

经过研究,我发现这是因为杰克逊默认情况下无法反序列化GeoJson。添加此库应该可以解决此问题:https : //github.com/bedatadriven/jackson-datatype-jts

我现在不确定如何在Spring Boot的对象映射器中包含此模块。根据引导中的文档,我尝试通过@Configuration以下两种方式将其添加到中:

@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder() {
    Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
    builder.modulesToInstall(new JtsModule());
    return builder;
}
Run Code Online (Sandbox Code Playgroud)

@Bean
public JtsModule jtsModule(){
    return new JtsModule();
}
Run Code Online (Sandbox Code Playgroud)

两者都没有删除异常。不好意思,如果这是重复的,但是我能找到的就是自定义ObjectMapper,在我对文档的理解中,这不是“弹簧启动方式”。

作为一种变通方法,我@JsonIgnore荷兰国际集团的Point和定制的getter和setter一个不存在协调对象,......但它不是我想保持它的方式。

java geojson jackson spring-boot

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

将具有共享服务的多个角度应用程序的条件boostrap迁移到嵌套的ngModule

问题

我正在将RC4迁移到RC5,到目前为止它仍然有效,但是因为我必须调整引导程序,无论如何我想知道是否有人为我的引导程序(可能使用ngModules)有一个更清洁的解决方案,因为对我来说它感觉有点hackish.

基本上它会引导多个组件,这些组件并不总是存在,具体取决于它们是否在页面上,并确保组件及其子组件之间共享配置/帮助程序.我可以直接将3个组件包装到ngModules中,但是我仍然需要将共享服务注入模块.有没有办法将所有3个组件包装到一个模块中,只有当它们在页面上可用时才引导它们?我也没有在ngModule中看到一个init钩子,我可以在将它们注入子组件之前预先配置它们.

这是我以前的main.ts中的相关部分:

var cs = new ConfigurationService();
var hs = new HelperService(cs);
var injector = ReflectiveInjector.resolveAndCreate([TranslateService,
    {provide: TranslateLoader, useClass: JsonLoader}, HTTP_PROVIDERS]);
var ts = injector.get(TranslateService);

ts.setDefaultLang('en');
ts.use(cs.getLanguage());

var defaultProviders = [
    {provide: TranslateService, useValue: ts},
    {provide: ConfigurationService, useValue: cs},
    {provide: HelperService, useValue: hs}
];

if ($('notification-widget').length > 0) {
    bootstrap(NotificationWidgetComponent, defaultProviders);
}

if ($('livesearch-widget').length > 0){
    bootstrap(LivesearchWidgetComponent, defaultProviders);
}

if ($('enterprise-search').length > 0){
    bootstrap(EnterpriseSearchComponent, defaultProviders);
}
Run Code Online (Sandbox Code Playgroud)

部分解决方案

我找到了一种翻译概念的方法:

main.ts很简单,如文档所述:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule …
Run Code Online (Sandbox Code Playgroud)

angular

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

Angular 2中相同根应用程序的多个实例

我们将Angular 2集成到遗留页面中,使功能逐个用户友好.到目前为止,为角度模块交换预渲染的后端小部件效果很好.

但是我遇到了一个我不知道要解决的问题:我编写了一个模块/组件,可以在页面上的不同位置多次出现并使用不同的配置.

  <body>
    <div class='somewhere-on-the-page'>
      <my-widget config='A'></my-widget>
    </div>
    <div class='somewhere-else-on-the-page'>
      <my-widget config='B'></my-widget>
    </div>
  </body>
Run Code Online (Sandbox Code Playgroud)

这是一个案件的Plunker.您只能看到初始化的第一个匹配项.有没有关于如何解决这个问题的概念?我想我不能使用包装器组件,因为我无法在其中移动整个模板(页面在后端呈现,而角度指令放在那里).

干杯

angular

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

ag-grid 和 Angular,如何动态切换网格选项

我有两种不同的网格配置(表示为两个gridOption对象)。一种是加载本地数据,另一种是使用具有无限行模型的elasticsearch数据源。

如果我将它们连接到模板中[gridOptions]="localOptions"[gridOptions]="elasticGridOptions"则两者都可以很好地工作。

这是我当前的组件以及(示意性地)我想要实现的目标:

@Component({
  selector: 'app-gridtest',
  styleUrls: ['./gridtest.component.css'],
  template: `
    <ag-grid-angular
      id="grid"
      style="width: 100vw;"
      [style.height] = 'height'
      class="ag-theme-balham ag-grid"
      [columnDefs]="columnDefs"
      [gridOptions]="gridOptions"
      (gridReady)="onGridReady($event)"
    ></ag-grid-angular>
    <button (click)="switchOptions()"></button>
  `
})
export class GridtestComponent implements OnInit{

  constructor(
    private esDs: ElasticDatasource
  ) {}

  height = '0px';
  gridApi: any;
  columnsApi: any;
  gridOptions: {};

  columnDefs = [
    {headerName: 'Id', field: 'id'},
    {headerName: 'Title', field: 'title'}
  ];

  elasticGridOptions = {
    rowModelType: 'infinite'
  };

  localOptions = {
    rowData: [
      {id: '1', title: 'foo'}, …
Run Code Online (Sandbox Code Playgroud)

ag-grid ag-grid-ng2 angular

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