我正在尝试使用Chart.js创建一个包含两个数据集的折线图,每个数据集都有自己的Y比例/轴(一个在左边,一个在图的右边).
这是我的代码(jsfiddle):
var canvas = document.getElementById('chart');
new Chart(canvas, {
type: 'line',
data: {
labels: [ '1', '2', '3', '4', '5' ],
datasets: [
{
label: 'A',
yAxesGroup: 'A',
data: [ 100, 96, 84, 76, 69 ]
},
{
label: 'B',
yAxesGroup: 'B',
data: [ 1, 1, 1, 1, 0 ]
}
]
},
options: {
yAxes: [
{
name: 'A',
type: 'linear',
position: 'left',
scalePositionLeft: true
},
{
name: 'B',
type: 'linear',
position: 'right',
scalePositionLeft: false,
min: 0, …Run Code Online (Sandbox Code Playgroud) 我安装了Git for Windows,包括Windows 10和Gpg4win上的Git Bash.默认情况下,我必须将我通过Kleopatra创建的所有密钥重新导入到Git Bash中内置的GPG版本中,并且它不允许我设置代理.我需要做的是自动唱歌,这样我不需要每次都输入密码,而只是在给定的时间段内第一次输入密码.怎么可能?
我尝试按照本教程,但gpg2在Git Bash中执行时不使用正确的字符集,因此它无法识别包含非ASCII字符的键.
有什么方法可以解决这个问题吗?在Windows上使用GGP与Git签名的最佳方法是什么?
我正在使用带有AMD和require.js的Typescript,但我无法使用typescript编译器输出将在加载模块后执行的代码.
这是main.ts:
import { foo } from './bar';
foo('world');
Run Code Online (Sandbox Code Playgroud)
这是bar.ts:
export function foo(name: string) {
alert('Hello ' + name);
}
Run Code Online (Sandbox Code Playgroud)
我使用以下tsconfig.json文件编译它:
{
"compilerOptions": {
"alwaysStrict": true,
"module": "amd",
"outFile": "client.js",
"target": "es5"
},
"files": [
"main.ts"
]
}
Run Code Online (Sandbox Code Playgroud)
并将其包含在我的HTML中,如下所示:
<script data-main="client/client.js" src="/static/require.js"></script>
Run Code Online (Sandbox Code Playgroud)
但是,生成的JavaScript代码如下所示:
define("bar", ["require", "exports"], function (require, exports) {
"use strict";
function foo(name) {
alert('Hello ' + name);
}
exports.foo = foo;
});
define("main", ["require", "exports", "bar"], function (require, exports, bar) {
"use …Run Code Online (Sandbox Code Playgroud) 我用这一行来创建一个EDIT控件:
hMyEdit = CreateWindowEx(
WS_EX_CLIENTEDGE,
L"EDIT",
L"",
WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_LEFT,
10,
10,
200,
25,
hParentWnd,
(HMENU)IDC_MY_EDIT,
hInst,
NULL
);
Run Code Online (Sandbox Code Playgroud)
旁边有一个COMBOBOX:
hMyCombo = CreateWindowEx(
WS_EX_CLIENTEDGE,
L"COMBOBOX",
L"",
WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | WS_VSCROLL | ES_LEFT | CBS_DROPDOWNLIST| CBS_HASSTRINGS,
220,
10,
90,
200,
hParentWnd,
(HMENU)IDC_MY_COMBO,
hInst, NULL
);
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚有两个问题:
如果我减小了我的高度(当前为200)COMBOBOX,这也限制了实际下拉列表的最大高度.但是,没有下拉列表的控件的实际高度根本不受影响.是COMBOBOX应该不使用比为下拉列表中的给定的高度吗?
如何使我的EDIT控件与我的控件的文本字段具有相同的高度COMBOBOX?
我无法找到任何有关默认大小的文档,但我希望有适当的方法来控制大小.
总结一下,我的问题是:
我应该向我申请哪个高度COMBOBOX以允许下拉列表尽可能扩展?
我应该在哪个高度应用于我和控件EDIT的文本字段具有相同的高度? …
我需要向函数添加类型声明,以将元组的元素映射[Foo<A>, Foo<B>, ...]到函数() => [A, B, ...]。如何在TypeScript中实现这一目标?
该示例在结构上与应用程序的相关部分相似:
interface SomethingWithAValue<T> { value: T; }
function collect(array) {
return () => array.map(a => a.value);
}
Run Code Online (Sandbox Code Playgroud)
这将返回与每个对象关联的值的元组。类型声明collect看起来像什么?
伪代码:
function collect<[SomethingWithAValue<T>...](array: [SomethingWithAValue<T>...]): () => [T...];
Run Code Online (Sandbox Code Playgroud)
根据jonrsharpe的建议进行更新:
interface SomethingWithAValue<T> { value: T; }
function collect<T>(array: SomethingWithAValue<T>[]): () => T[] {
return () => array.map(a => a.value);
}
type myTupleType = [string, number];
let somethings: [SomethingWithAValue<string>, SomethingWithAValue<number>];
somethings = [{ value: 'foo' }, { value: 5 }];
let fn: …Run Code Online (Sandbox Code Playgroud) 当我使用 npm 像这样安装 TypeScript 定义时
npm install --save @types/express
Run Code Online (Sandbox Code Playgroud)
我无法使用已安装的模块,因为它们无法相互解析。例如,@types/express需要@types/express-static-server-core,但由于@types/express/index.d.ts包含相对路径express-static-server-core,因此无法解析该模块:
node_modules/@types/express/index.d.ts(16,30): error TS2307: Cannot find module 'serve-static'.
node_modules/@types/express/index.d.ts(17,23): error TS2307: Cannot find module 'express-serve-static-core'.
node_modules/@types/serve-static/index.d.ts(15,26): error TS2307: Cannot find module 'express-serve-static-core'.
node_modules/@types/serve-static/index.d.ts(16,20): error TS2307: Cannot find module 'mime'.
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?安装 TypeScript 定义的最佳方法是什么?
据我所知,打字已被弃用,所以我尝试从 @types 安装类型定义,然后使用
tsc --target ES5 --module commonjs index.ts
Run Code Online (Sandbox Code Playgroud)
但它还不起作用。我究竟做错了什么?
使用NDK 10版本,我曾经用于ndk-build编译许多不同ABI和多个API级别的独立二进制文件.这些二进制文件将包含在一个应用程序中.但是,我在本文所述的新开发机器上安装了NDK .这导致ndk-bundle我的Android SDK目录中有一个文件夹.我曾经从命令行编译代码,然后将二进制文件复制到我的Android Studio项目的资源中,但我无法弄清楚如何使用NDK 13这样做,所以我尝试按照教程包含我的本机代码Android Studio项目.但是,几乎所有最近的指令都假设一个人想要构建一个库,而不是一个独立的二进制文件,所以我没有走得太远.
如果我弄清楚如何让它工作,我会切换到CMake.我的本机项目具有以下(简化)结构:
本地人
Android.mk
LOCAL_PATH := $(call my-dir)/my_tool/src
include $(CLEAR_VARS)
LOCAL_MODULE := my_tool
LOCAL_SRC_FILES := main.c
include $(BUILD_EXECUTABLE)
Run Code Online (Sandbox Code Playgroud)Application.mk
APP_ABI := all
APP_PLATFORM := android-21
Run Code Online (Sandbox Code Playgroud)my_tool
如何在Windows 10开发机器上使用Android Studio或NDK从命令行编译?
编辑:
我在build.gradle中使用它:
externalNativeBuild {
ndkBuild {
path "../native/Android.mk"
}
}
Run Code Online (Sandbox Code Playgroud)
Gradle创建了一个.externalNativeBuild包含构建配置的目录,但我无法找到如何实际构建本机代码.运行gradle时不会创建二进制文件.
我找不到有关gradle配置的任何信息ndk-build.
我知道我可以使用模式匹配功能参数,如下所示:
fn :: (Integral a) => (a,a) -> (a, a)
fn (x,y) = (y,x)
Run Code Online (Sandbox Code Playgroud)
但是如何匹配返回值?我希望这样的事情:
g :: (Integral a) => a -> a
g z = do
(x, y) = fn (z, z + 5)
x `mod` y
Run Code Online (Sandbox Code Playgroud)
这会导致语法错误.有没有办法匹配返回值?基本上,我想将返回的元组拆分为两个变量.
假设我有一个定义为的数据类型
data Foo = Hello Int | World Int
Run Code Online (Sandbox Code Playgroud)
和作为
isWorld :: Foo -> Bool
isWorld (World i) = True
isWorld (Hello i) = False
getWorlds :: Set Foo -> Set World
getWorlds = Set.filter isWorld
Run Code Online (Sandbox Code Playgroud)
这不起作用:
Not in scope: type constructor or class `World'
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为World它只是一个函数,但我不知道如何在Haskell中对此进行建模.使用data正确吗?我希望能够仅为某些实例定义函数:
foo :: World -> Int
foo (World i) = i
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,这会产生同样的错误,因为World它不是一种类型.有没有办法做到这一点,最好没有GHC扩展?