我有一个小问题,我不太确定如何解决.这是一个最小的例子:
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)
我从子进程读取一行并用它做一些事情.我想要的是在固定时间间隔后没有线路到达时退出.有什么建议?
我正在寻找一个实现以下案例的概念:
我有一个父搜索组件,其中包含一些组件作为视图子/内容子项,用于显示构面和搜索结果.我现在想要在应用程序加载完成后触发搜索,这样用户就不会看到空白页面.
我现在的问题是我找不到符合我需求的生命周期钩子.构面/搜索结果在各自的ngOnInit中订阅搜索结果.所以我需要一个在所有子组件完成初始化后调用的钩子.
我在父组件上尝试了以下挂钩
任何想法如何解决这个问题?对我来说,似乎我没有掌握一些基本的东西.
干杯
汤姆
我正在使用 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")它工作正常。
有任何想法吗?干杯!
我在 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?
我有一个功能需要从 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以某种方式使用,以便我只获取获取有效的文档,而忽略获取失败的文档吗?或者我可以以不同的方式实现这一目标?
干杯
我们正在为一个项目评估Angular 2,我注意到一些问题,我需要澄清这是一个Angular问题还是我使用Angular错误.
我们正在用Angular替换部分静态页面以增强用户体验.由于替换的元素可以位于页面上的任意位置,因此我们无法引导单个Angular应用程序(组件在DOM中不像树一样,我们需要传统的模板).我们也没有使用任何Angulars路由.
因此,第一个问题是Angular是非SPA网站的正确技术.要构建'小部件'.
第二个问题是关于表现.如果您有非SPA页面,则无法省略页面重新加载.每次页面重新加载时,都必须再次初始化Angular.这里的好处是,实例化多个根组件不会显着增加引导程序,所以这是一个加号.不好的是,如果我使用Quickstart教程中的配置,我需要大约1.7s来初始化应用程序和要显示的组件,其中大部分时间都归因于system.js,即类加载器.将此更改为webpack并预编译所有内容仍需要300-400毫秒才能显示组件.此页面与我的组件具有非常相似的引导程序.
这可以进一步优化(假设<130ms)或者我应该寻找其他技术(例如React),因为它不在Angular的范围内用于非SPA页面.
干杯
汤姆
我有一个@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一个不存在协调对象,......但它不是我想保持它的方式。
问题
我正在将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 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.您只能看到初始化的第一个匹配项.有没有关于如何解决这个问题的概念?我想我不能使用包装器组件,因为我无法在其中移动整个模板(页面在后端呈现,而角度指令放在那里).
干杯
我有两种不同的网格配置(表示为两个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) angular ×6
jackson ×2
java ×2
json ×2
spring-boot ×2
typescript ×2
ag-grid ×1
ag-grid-ng2 ×1
geojson ×1
jodatime ×1
openapi ×1
python ×1
rxjs ×1
subprocess ×1
timeout ×1
xsd ×1