我在两个步骤中使用了带有nodejs的write文件:
1.首先判断文件是否存在,使用fs.exists功能;
然后fs.writeFile直接用来写文件;
但是现在我注意到有更多的函数用于写文件,比如fs.open或者fs.close,我应该在写入时使用这些函数来打开还是关闭文件?
此外,我注意到有有fs.createReadStream和fs.createWriteStream功能,什么是它们之间的差异fs.writeFile和fs.readFile?
有没有办法可以唯一地识别运行我的应用程序的Windows手机设备?是否有Windows Phone设备ID或什么?
通常的解决方案是将其隐藏在界面后面.
public class RecordService
{
private readonly ISystemTime systemTime;
public RecordService(ISystemTime systemTime)
{
this.systemTime = systemTime;
}
public void RouteRecord(Record record)
{
if (record.Created <
systemTime.CurrentTime().AddMonths(-2))
{
// process old record
}
// process the record
}
}
Run Code Online (Sandbox Code Playgroud)
在单元测试中,您可以使用模拟对象并决定返回什么
[TestClass]
public class When_old_record_is_processed
{
[TestMethod]
public void Then_it_is_moved_into_old_records_folder()
{
var systemTime = A.Fake<ISystemTime>();
A.CallTo( () => system.Time.CurrentTime())
.Returns(DateTime.Now.AddYears(-1));
var record = new Record(DateTime.Now);
var service = new RecordService(systemTime);
service.RouteRecord(record);
// Asserts...
}
}
Run Code Online (Sandbox Code Playgroud)
我不想在我的课程中注入另一个界面来获取当前时间.对于如此小的问题,感觉太重了.解决方案是使用具有公共功能的静态类.
public static class SystemTime
{
public …Run Code Online (Sandbox Code Playgroud) 我想阻止用户在模态对话框外单击,他只能按下按钮退出对话框.我怎样才能做到这一点?
dialog.component.ts
ngOnInit() {
const dialogRef = this.dialog.open(DialogResultComponent);
dialogRef.afterClosed().subscribe(result => {
console.log(result);
});
Run Code Online (Sandbox Code Playgroud)
}
对话框的result.component.ts
import { Component, OnInit } from '@angular/core';
import { MdDialog, MdDialogRef } from '@angular/material';
import { FormGroup,FormControl,Validators,FormBuilder, } from '@angular/forms';
@Component({
selector: 'app-dialog-result',
templateUrl: './dialog-result.component.html',
})
export class DialogResultComponent {
form: FormGroup;
name = new FormControl('',Validators.required);
width = new FormControl('',Validators.required);
height = new FormControl('',Validators.required);
constructor(public dialogRef: MdDialogRef<DialogResultComponent>,private fb: FormBuilder) {
}
ngOnInit() {
this.form = this.fb.group({
'name' :this.name,
'width': this.width,
'height': this.height,
});
}
saveData(){ …Run Code Online (Sandbox Code Playgroud) 我正在尝试了解我正在构建的SQL Server 2008全文查询的性能.
以下查询使用全文索引立即返回正确的结果:
SELECT
O.ID, O.Name
FROM
dbo.EventOccurrence O
WHERE
FREETEXT(O.Name, 'query')
Run Code Online (Sandbox Code Playgroud)
即所有在其名称中带有"查询"字样的EventOccurrences.以下查询使用来自不同表的全文索引也会立即返回:
SELECT
V.ID, V.Name
FROM
dbo.Venue V
WHERE
FREETEXT(V.Name, 'query')
Run Code Online (Sandbox Code Playgroud)
即.所有场地的名字中都有"查询"字样.但是,如果我尝试连接表并同时执行两个全文查询,则返回12秒:
SELECT
O.ID, O.Name
FROM
dbo.EventOccurrence O
INNER JOIN dbo.Event E ON O.EventID = E.ID
INNER JOIN dbo.Venue V ON E.VenueID = V.ID
WHERE
FREETEXT(E.Name, 'search')
OR FREETEXT(V.Name, 'search')
Run Code Online (Sandbox Code Playgroud)
这是执行计划:http://uploadpad.com/files/query.PNG
更新:以文本形式的计划:
|--Nested Loops(Left Semi Join, OUTER REFERENCES:([E].[ID], [V].[ID]))
|--Hash Match(Inner Join, HASH:([E].[ID])=([O].[EventID]))
| |--Hash Match(Inner Join, HASH:([V].[ID])=([E].[VenueID]))
| | |--Clustered Index Scan(OBJECT:([iScene].[dbo].[Venue].[PK_Venue] AS [V])) …Run Code Online (Sandbox Code Playgroud) 我想使用PowerShell自动将已编辑的.csproj文件签出和签入到TFS.我只需要将单个文件更改为待处理并检查它们.
有谁知道如何做到这一点?
我正在编写我所指的POJ(Plain Old JSON)WCF Web服务 - 一个接收和发出标准JSON而没有ASP.NET Ajax喜欢添加到它的垃圾的服务.
似乎有三个步骤来实现这一目标:
这对我来说都很好 - 我可以传入并且返回了很好的JSON.
如果我删除了WebInvoke属性,那么我会返回XML,因此它肯定正在做它应该做的事情.但令我感到奇怪的是,指定JSON输出的选项出现在这里,而不是在配置文件中.假设我想将我的方法公开为XML端点 - 我该怎么做?目前我能看到的唯一方法是使用第二种方法完成相同的操作,但没有指定WebMethodFormat.Json.然后冲洗并重复我服务中的每种方法?呸.
指定输出应该在属性中被序列化为JSON似乎完全违背了WCF的原理,其中实现的服务是一种传输和编码不可知的方式,留下了如何将数据移动到周围的令人讨厌的细节.配置文件.
有没有更好的方式做我想做的事情?或者我们是否坚持这个尴尬的属性?或者我不够深入了解WCF?
场景:尝试从一个数据库中提取和重新排列信息.DB A有一些我想要的数据.我想将它以稍微不同的结构存储在DB B上.
DB AI使用EDMX数据库生成的模型,因此它使用ObjectContext的衍生物.DB BI希望生成代码.所以我通过包管理器安装EntityFramework 4.1来使用代码/模型第一种方法.所以DB B使用DbContext派生
当我尝试将信息从DB A存储到DB B时,它说:
测试方法RoutIT.Irma.Import.Service.Test.ImportIrma2ProductTests.ImportProducts抛出异常:System.ArgumentException:找不到"DB A的EDMX模型中的某个实体"的概念模型类型
它实际上是在将DB B实体添加到DB B的Derived DbContext的DbSet属性时执行的.所以代码就像
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
{
foreach (FirstPVC pvc in pvcs)
{
this._irmaImport.FirstPVCs.Add(pvc); <--
this._irmaImport.SaveChanges();
}
scope.Complete();
}
}
Run Code Online (Sandbox Code Playgroud)
它发生在上面箭头标记的代码中的点("< - ")
FirstPVC是一个DB B属性,但在箭头点它抱怨没有属于DB B上下文的实体的概念模型.
这很奇怪,因为我尝试将DB B实体存储到DB B上下文.为什么要关心DB A的实体呢?
所有上下文都包含在同一个项目中.但是DB B的Derived DbContext只知道它自己的DbSet <>属性,突然在尝试向DbSet <>属性添加内容时,它会给我上面的粗体错误.
谁知道为什么会这样?为什么DbContext要关心另一个上下文的实体,特别是ObjectContext派生类之一.
Perhapse有用的是注意到它抱怨的实体看起来有点像这样
[EdmEntityTypeAttribute(NamespaceName="Irma2Model", Name="AccessProvider")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class AccessProvider : EntityObject
{
/*****...... ******/
}
Run Code Online (Sandbox Code Playgroud) 在我的测试应用程序中,我可以看到处理过的异常消息被自动插入到默认的EasyNetQ_Default_Error_Queue中,这很棒.然后,我可以使用Hosepipe成功地转储或重新排队这些消息,这也很好,但需要下降到命令行并调用Hosepipe和RabbitMQ API来清除重试消息的队列.
所以我认为我的应用程序最简单的方法就是简单地订阅错误队列,这样我就可以使用相同的基础架构重新处理它们.但在EastNetQ中,错误队列似乎很特殊.我们需要使用正确的类型和路由ID进行订阅,因此我不确定错误队列的这些值应该是什么:
bus.Subscribe<WhatShouldThisBe>("and-this", ReprocessErrorMessage);
我可以使用简单的API订阅错误队列,还是需要深入了解高级API?
如果我的原始消息的类型是TestMessage,那么我希望能够做这样的事情:
bus.Subscribe<ErrorMessage<TestMessage>>("???", ReprocessErrorMessage);
哪个ErrorMessage是EasyNetQ提供的类来包装所有错误.这可能吗?
我正在尝试为模态窗口使用辅助路由。无论我尝试什么,我都无法解决。我只是收到路由错误。这是我的方法...
应用程序组件.html
<router-outlet></router-outlet>
<router-outlet name="modal"></router-outlet>
Run Code Online (Sandbox Code Playgroud)
admin-routing.module.ts
...
const ROUTES: Routes = [
{
path: 'admin',
component: AdminComponent,
children: [
{
path: 'accounts',
loadChildren: './accounts/accounts.module#AccountsModule'
},{...}
]
}
];
...
Run Code Online (Sandbox Code Playgroud)
账户-routing.module.ts
...
const ROUTES: Routes = [
{
path: '',
children: [
{
path: '',
component: AccountsIndexComponent
},{
path: 'new',
component: AccountsNewComponent
},{
path: ':id',
component: AccountsShowComponent
},{
path: ':id/edit',
component: AccountsEditComponent,
outlet: 'modal'
}
]
}
];
...
Run Code Online (Sandbox Code Playgroud)
modal.service.ts
...
constructor(
private router:Router,
private route:ActivatedRoute
) { }
open(route:Array<any>) { …Run Code Online (Sandbox Code Playgroud) angular ×2
c# ×2
modal-dialog ×2
.net ×1
css ×1
dbcontext ×1
easynetq ×1
file ×1
json ×1
mocking ×1
node.js ×1
powershell ×1
rabbitmq ×1
router ×1
sql-server ×1
tfs ×1
typescript ×1
unit-testing ×1
wcf ×1