小编Kil*_*are的帖子

Angular2是否具有$ document的等价物

我已经开始研究Angular2并且有一个基本的3个嵌套组件工作.但是我无法弄清楚如何将keypress处理程序添加到文档中.

如果没有,我将如何监听文件上的按键并对其作出反应?为了清楚起见,我需要回复文档本身的问题,而不是输入.

在Angular 1中,我将创建一个指令并使用$ document; 这样的事情:

 $document.on("keydown", function(event) {

      // if keycode...
      event.stopPropagation();
      event.preventDefault();

      scope.$apply(function() {            
        // update scope...          
      });
Run Code Online (Sandbox Code Playgroud)

但我还没有找到一个Angular2解决方案.

angular

13
推荐指数
1
解决办法
4228
查看次数

StreamReader抱怨该文件不存在,但它确实存在

我有一个本地化的应用程序,可以在整个欧洲使用.

我有一个菜单选项从磁盘加载文件.

此操作在我的开发机器上运行正常但在我用于测试其他操作系统的虚拟机上不起作用_例如法语,西班牙语等.

StreamReader尝试打开文件时生成FileNotFoundException.

它说"'找不到文件C:\ Program Files\MyCompany\MyTool\bin\Files\debug.txt'"

事实是,文件确实存在,位于正确的位置并且文件名正确.

目标(法语)操作系统上的目录名称与开发机器相同.

有任何想法吗?

string ourPath =   System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);

           try
        {
            System.IO.StreamReader sr = System.IO.File.OpenText(ourPath + @"\bin\Files\debug.txt");
            string input = null;
            while ((input = sr.ReadLine()) != null)
            {
                m_text.Append(input);
            }
            sr.Close();
        }
        catch (System.IO.FileNotFoundException)
        {
            MessageBox.Show("LoadDebugOptions: File Not Found: " + ex.Message);
        }
Run Code Online (Sandbox Code Playgroud)

c# localization filenotfoundexception streamreader

12
推荐指数
2
解决办法
3万
查看次数

为什么未加载持久用户设置?

我有一个Windows应用程序,它使用一个程序集,在默认的应用程序设置中存储一些配置设置.

设置可以在运行时更改并保持不变:

Properties.Settings.Default.SelectedCOMPort = options.SelectedCOMPort;
Properties.Settings.Default.Save();
Run Code Online (Sandbox Code Playgroud)

设置已正确保存,我通过查看保存在用户应用程序目录中的user.config文件来确认

C:\Documents and Settings\e399536\Local Settings\Application Data\MyCompany\MyTool
Run Code Online (Sandbox Code Playgroud)

但是,当工具关闭然后再次启动时,所有设置都会加载其默认值.

应用程序运行后检查user.config文件确认设置​​仍然保存.

因此加载设置:

options.SelectedCOMPort = Properties.Settings.Default.SelectedCOMPort;
Run Code Online (Sandbox Code Playgroud)

为什么使用默认设置而不是保存设置?

我错过了什么吗?

@ Tenaciouslmpy在程序集的构造函数期间加载设置,该构造函数本身在主程序集的表单load事件中加载.

@ Austin这是我在Visual Studio中调试的独立应用程序.

c# windows settings persistence winforms

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

Azure管理门户中的SQL Azure EF数据库第一个连接字符串

我有一个运行n Azure的站点,它使用EF Database First模型.

如果我在web.config中嵌入连接字符串并且部署all是美好的.

<add name="MyEntities" connectionString="metadata=res://*/App_Code.Model.csdl|res://*/App_Code.Model.ssdl|res://*/App_Code.Model.msl;provider=System.Data.SqlClient;provider connection string='Data Source=my.database.windows.net;Initial Catalog=myTest_DB;User ID=***;Password=***; MultipleActiveResultSets=False'"  providerName="System.Data.EntityClient"/>
Run Code Online (Sandbox Code Playgroud)

但是,我不希望web.config中的连接字符串,因为它包含凭据.

所以我将它移动到Azure Properties中的连接字符串区域.

我遇到的第一个问题是获取元数据无效关键字错误

我通过将类型从SQL数据库更改为自定义来解决这个问题.

在此输入图像描述

但是,我现在收到此错误:

应用程序配置文件中的连接字符串"MyEntities"不包含必需的providerName属性."

我已经在网上搜索并尝试了很多连接字符串,但还没找到正确的连接字符串.

注意:我想我可以将它设置为应用程序设置并将字符串的初始化移动到代码,但即使只是为了好奇,我想知道如何通过门户网站进行操作.

entity-framework connection-string azure azure-management azure-sql-database

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

最好采用哪种设计模式来控制一系列步骤?

我有一个winform工具,使用串行端口与硬件连接.

串行端口用于向硬件发送命令,该命令将确认命令并有时返回数据.

要完成任务,需要以定义的顺序将多个命令发送到硬件.

我已使用switch语句成功实现了该工具来控制命令的发送.然而,虽然这有效,但我不禁想到有更好的,更多的OO方式这样做 - 是吗?

目前的实施如下:

每种情况都是需要发送到硬件的命令.Send方法传递一个调用方法和下一步的ID - 如果命令发送成功,将返回该ID.

  • 工具将向硬件发送启动会话命令.
  • 硬件确认命令.
  • 工具向硬件发送设置方向命令.
  • 硬件将确认命令.

等等

MessageID nextStep = MessageID.IMS;

while (nextStep != MessageID.Stop)
{
    switch (nextStep)
    {
        case MessageID.ISS:
            nextStep = Send( new ISS_StartSession(), MessageID.IE386);
            RaiseProgressEvent(10); //percentage complete
            break;

        case MessageID.IE386:
            nextStep = Send( new IE386_SetDirection(Direction.BOTH), MessageID.IE378);
            RaiseProgressEvent(20);
            break;

       //etc

       case MessageID.Error:
            HandleError(); //abort task if necessary
            break;
    }
 }
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗..?

我应该看一下众所周知的设计模式吗?

oop design-patterns serial-port

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

PostgreSQL 中的多个 DISTINCT ON 子句

是否可以选择DISTINCT ON一些单独的、独立的列集的行?

假设我想要所有符合以下条件的行:

  • 区别于 (name, birth)
  • 区别于 (name, height)

因此,在下表中,标有红色叉号的行不会是不同的(带有失败子句的指示):

name      birth    height
--------------------------
William    1976      1.82
James      1981      1.68
Mike       1976      1.68
Tom        1967      1.79
William    1976      1.74   ? (name, birth)
William    1981      1.82   ? (name, height)
Tom        1978      1.92
Mike       1963      1.68   ? (name, height)
Tom        1971      1.86
James      1981      1.77   ? (name, birth)
Tom        1971      1.89   ? (name, birth)
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,如果DISTINCT ON子句刚刚为DISTINCT ON (name, birth, height),则所有行都将被视为不同的。

试过了,没有用:

  • SELECT DISTINCT ON (name, birth) …

sql postgresql duplicates distinct-on

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

在运行时转换DataGridView Cell类型

我的datagridview有一个复选框列,该列仅对其显示的数据中的某些记录有效.对于复选框无效的记录,我希望不显示任何内容 - 例如空白文本框.

因此,我需要在运行时动态地将单元格类型从复选框单元格更改为文本框单元格.我不能简单地更改列数据类型,因为列需要混合使用textbox和checkbox单元格类型.

到目前为止,我有以下代码.

 this.deviceList1.DeviceGrid[colIndex, rowIndex] = new KryptonDataGridViewTextBoxCell()
 this.deviceList1.DeviceGrid[colIndex, rowIndex].ReadOnly = true;
Run Code Online (Sandbox Code Playgroud)

如果这会生成DataGridView数据错误:

System.FormatException:单元格的格式化值类型错误.

c# datagridview winforms

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

更新在 Unity 容器中注册的实例

我使用 Unity 进行依赖项注入,并拥有一个 Config 类的实例,该类 Config 实现了在 Unity 容器中注册的 IConfig。

IConfiguration config = new Configuration();

unityContainer.RegisterInstance<IConfiguration>(config);
Run Code Online (Sandbox Code Playgroud)

当应用程序运行并且用户加载保存的配置时,我想使用加载的配置对象更新存储在 Unity 中的实例。例如下面的伪代码

IConfiguration loadedConfig = FileLoadService.Load(filepath);
unityContainer.Instance = loadedConfig;
Run Code Online (Sandbox Code Playgroud)

这可能吗?

c# unity-container

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

光栅化跨越多个帧的油漆的意义是什么

我已经开始使用Chrome的时间轴工具调查应用程序的客户端性能。但是,尽管我找到了许多有关如何使用它们的文章,但有关如何解释结果的信息却很少,而且常常很模糊。

目前,我正在研究滚动性能并尝试达到60FPS。

此屏幕快照显示了我最近的时间轴记录的结果。可以看出,大多数帧超过60 FPS,有些超过30 FPS。

在此处输入图片说明

如果我放大一个特定的帧-持续时间为67.076ms的一帧,我会看到一些东西:

  1. 帧的持续时间为67毫秒,但总计时间为204毫秒
  2. 这段时间花了201ms,但该帧中的两个绘制事件的持续时间分别为1.327 ms和0.106 ms
  3. JS事件,更新图层树和绘画事件的总持续时间仅为2.4毫秒
  4. 有一个长长的绿色空心条(光栅化油漆),它持续帧的持续时间,实际上是在帧之前开始并在帧之后继续。

我对此有一些疑问:

  1. 总计时间远远长于帧时间-假设这些是并行进程是否正确?
  2. 帧的绘制时间(204ms)远远超过了两个绘制事件的时间(1.433ms)-这是因为它包括栅格化绘制事件
  3. 为什么光栅化绘画事件跨越多个帧?
  4. 从哪里开始优化呢?
  5. 最后,有人可以指出一些很好的资源来理解这一点吗?

performance profiling paint google-chrome-devtools

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

如何使用 Admin API 在 Firebase Storage 中创建文件夹

目标:将文件上传到 Firebase 存储中的文件夹

例如

default_bucket/folder1/file1
default_bucket/folder1/file2
default_bucket/folder2/file3
Run Code Online (Sandbox Code Playgroud)

使用 Firebase客户端,我可以像这样将文件上传到 Firebase 存储中的文件夹:

    const storageRef = firebase.storage().ref();
    const fileRef = storageRef.child(`${folder}/${filename}`);
    const metadata = {
      contentType: file.type,
      customMetadata: { }
    };
    return fileRef.put(file, metadata);
Run Code Online (Sandbox Code Playgroud)

如果该文件夹不存在,则会创建它。

但是,我还没有设法使用 Admin SDK 在服务器端做同样的事情。

下面的代码将文件上传到默认存储桶中。

但是,我想将文件上传到默认存储桶中的命名文件夹中。

客户端向 GCF 发出 POST 请求,发送文件和文件夹名称。

Busboy 用于额外的文件夹名称和文件,并将它们传递给上传功能;它上传文件,然后为其返回一个下载链接。

索引.js

const task = require('./tasks/upload-file-to-storage');

app.post('/upload', (req, res, next) => {
  try {
    let uploadedFilename;
    let folder;

    if (req.method === 'OPTIONS') {
      optionsHelper.doOptions(res);
    } else if (req.method === 'POST') {
      res.set('Access-Control-Allow-Origin', '*'); …
Run Code Online (Sandbox Code Playgroud)

firebase firebase-storage firebase-admin

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