小编skr*_*orn的帖子

更改ng-charts的图例位置(使用angular2)

如何更改图例的位置(默认情况下显示在图表的顶部)?我正在使用ng-charts,我正在尝试根据文档更改位置,但它似乎不起作用.

图表

该模板包含:

<canvas baseChart
  [datasets]="datasets"
  [labels]="labels"
  [chartType]="type"
  [colors]="colors"
  [legend]="legend"
  [position]="position">
</canvas>
Run Code Online (Sandbox Code Playgroud)

组件变量是:

labels: string[] = [ 'EMI', 'Food', 'Fuel', 'bike' ];
type: string = 'doughnut';
legend: boolean = true;
position: string = 'left';
colors: Color[] = [{}];

datasets: any[] = [{
  data: [ 3350, 5450, 4100, 1000 ],
  backgroundColor: [
    "#FF6384",
    "#36A2EB",
    "#FFCE56"
  ],
  hoverBackgroundColor: [
    "#FF6384",
    "#36A2EB",
    "#FFCE56"
  ]
}];
Run Code Online (Sandbox Code Playgroud)

typescript chart.js ng2-charts angular

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

Dart 中带有泛型类型参数的回调

我正在尝试定义一个需要接受泛型参数并返回相同类型值的回调函数。请记住,以下示例是我实际需要的过度简化版本。

final T Function<T>(T value) self = (value) => value
Run Code Online (Sandbox Code Playgroud)

这导致以下错误,我似乎无法摆脱。

The argument type '(dynamic) ? dynamic' can't be assigned to the parameter type '<T>(T) ? T'

dart(argument_type_not_assignable)
Run Code Online (Sandbox Code Playgroud)

唯一似乎有效的方法是给值一个类型,但这首先违背了使用类型参数的目的。

The argument type '(dynamic) ? dynamic' can't be assigned to the parameter type '<T>(T) ? T'

dart(argument_type_not_assignable)
Run Code Online (Sandbox Code Playgroud)

我需要它是通用的,以便调用者可以传递它期望的类型作为回报。我还需要将它存储在一个变量中,以便我可以将它作为回调函数传递。

如果这不是直接可能的,您知道任何解决方法吗?先感谢您。


如果要求不明确,这里有一个更完整的示例。

final T Function<T>(T value) same = <String>(value) => value;
Run Code Online (Sandbox Code Playgroud)

令人讨厌的是,Dart 实际上知道这foo.provide(StringProvider())将返回一个字符串,而 usingNumberProvider确实会返回一个整数,但是,对于实际给变量赋值的那一行,错误仍然会增加。

abstract class Provider<T> {
  T get bar;
}

class StringProvider extends Provider<String> {
  String get …
Run Code Online (Sandbox Code Playgroud)

generics type-parameter dart dart-2

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

定义firefox WebExtensions选项页面时出错

我目前正在使用新的WebExtensions API为Firefox做一个相当简单的附加组件.一切顺利,直到我尝试options_ui在清单文件中定义.设置后,加载扩展会导致以下错误:

有安装过程中出现错误:可能的getURL不是之前被调用iduuid已设置.

完整清单:

{
  "manifest_version": 2,
  "name": "MyExtension",
  "version": "1.0",
  "description": "...",
  "icons": {
    "48": "icons/48.png",
    "96": "icons/96.png"
  },
  "permissions": [
    "storage",
    "notifications",
    "*://*.example.com/"
  ],
  "browser_action": {
    "default_icon": "icons/32.png",
    "default_title": "MyExtension",
    "default_popup": "popup.html"
  },
  "options_ui": {
    "page": "options.html"
  },
  "background": {
    "scripts": [ "background.js" ]
  }
}
Run Code Online (Sandbox Code Playgroud)

如果未设置,则不会发生此问题options_ui,并且除了缺少的选项页面之外,扩展按预期工作.

可能是这个错误的根源是什么?为什么它只发生options_uibrowser_action.default_popup也有一个URL,这是有效的.

提前致谢.

firefox firefox-addon firefox-addon-webextensions

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

无法在OpenGL着色器中设置统一值

我目前正在学习OpenGL编程,并取得了一些进展,但我现在似乎陷入困境.

目前,我正在努力让简单的着色器工作.更具体地说,我试图设置着色器的统一值.着色器编译成功,如果我消除了统一值,则可以正常工作.这是(顶点)着色器代码:

#version 440 core

layout(location = 0) in vec3 vertex;

uniform mat4 mvp;

void main()
{
    gl_Position = mvp * vec4(vertex, 1);
}
Run Code Online (Sandbox Code Playgroud)

我用来设置值的代码(glGetUniformLocation按预期返回0):

mvp = glm::mat4(
    glm::vec4(3.0f, 0.0f, 0.0f, 0.0f),
    glm::vec4(0.0f, 1.0f, 0.0f, 0.0f),
    glm::vec4(0.0f, 0.0f, 1.0f, 0.0f),
    glm::vec4(0.0f, 0.0f, 0.0f, 2.0f)
);

GLuint matrix = glGetUniformLocation(program, "mvp");
glUniformMatrix4fv(matrix, 1, GL_FALSE, glm::value_ptr(mvp));
Run Code Online (Sandbox Code Playgroud)

问题是它似乎根本没有设置值.如果我使用查询统一的值glGetUniformfv,它会返回默认值(不是我刚设置的那个),并且几何体根本不显示(但这只是一个后果,这不是问题).

如果我在着色器中对均匀值进行硬编码,则应用程序会正确显示几何体,当询问值(再次使用glGetUniformfv)时,它会返回正确的值.

#version 440 core

layout(location = 0) in vec3 vertex;

uniform mat4 mvp = mat4(
    vec4(1.0f, 0.0f, …
Run Code Online (Sandbox Code Playgroud)

c++ opengl glsl

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

Visual C++ 在函数末尾附加 0xCC (int3) 字节

这是我第一次来,我真的希望你们能帮助我,因为我现在已经没有想法了。

我已经搜索了几个小时的答案,但找不到实际可行的答案。

我想直接将代码注入正在运行的进程中。是的,你没有看错。我正在尝试将代码注入另一个应用程序,并且——不管你信不信——这只是为了扩展它的功能。

我在 Windows 上使用 Visual Studio 2012 Express Edition。

我有以下代码:

__declspec(naked) void Foo()
{
    __asm
    {
        // Inline assembly code here
    }
}
__declspec(naked) void FooEnd() {}

int main()
{
    cout << HEX(Foo) << endl;
    cout << HEX(FooEnd) <<  endl;
    cout << (int)FooEnd - (int)Foo << endl;

    // Inject code here using WriteProcessMemory

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为了保持可读性,大部分代码已被删除,但我可以根据要求发布它的其他部分。

输出如下:

0x010B1000
0x010B1010
16
Run Code Online (Sandbox Code Playgroud)

结果大小实际上是不正确的。这些函数以正确的顺序编译(确保使用 /ORDER),但是编译器在每个扩展其大小的方法之后添加了一堆 0xCC(int 3)字节,所以我无法获得真正的(有用的)数字包含实际可执行代码的字节数。

在另一个 stackoverflow 问题中,据说禁用“编辑并继续”会使这些额外的字节消失,但无论如何,这对我不起作用。

我还尝试使用 Release setup 而不是 Debug,更改了一堆优化设置,但这些都没有任何效果。您认为可能的解决方案是什么?我可能遗漏了一些明显的东西。

无论如何,这是(在您看来)获取函数长度(可读性、可靠性、易用性)的最佳方式吗?

我希望我解释了我必须做的一切,以便您能够提供帮助。如果您还有其他问题,请随时发表评论。

感谢您的时间和努力。

c++ windows assembly machine-code visual-c++

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