小编Ing*_*ürk的帖子

向对象/数字/字符串原型添加方法

免责声明

  • 该帖子旨在为遇到类似问题的其他人提供帮助,并检查是否有更好的解决方案。我将附上我自己的解决方案,但欢迎提出想法和改进(除了使其更通用)。
  • 我知道,一般来说,扩展内置对象是一个坏主意。因此,该线程的假设是有充分的理由并且没有办法解决它。

设想

作为一名开发人员,我想向所有 Javascript 对象添加一个方法,其中、和someMethod的实现不同。ObjectNumberString

我希望该解决方案满足以下验收标准:

  • A) 该解决方案在浏览器中运行
    • A1) 该解决方案在严格模式下工作,以防脚本在严格上下文中使用
    • A2) 该解决方案在非严格模式下工作,因为'use strict';在压缩过程中将被删除,例如YUI 压缩机[1]
  • B) 该解决方案适用于Node.js
    • B1) 该解决方案在严格模式下工作(原因参见 A1)
    • B2) 该解决方案在非严格模式下工作,原因与 B2 相同,而且 Node.js 中的严格模式无法在函数级别激活[2]
  • C) 我希望允许其他对象覆盖此方法
  • D)如果可能的话,我想控制该方法是否出现在循环中for .. in以避免与其他库发生冲突
  • E) 解决方案应实际修改原型。

[1] Minfication 删除了严格指令
[2]有什么方法可以在节点中强制使用严格模式?

javascript

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

IntelliJ 找不到 Scanner 类

我正在使用 Intellij IDEA。

这是我的代码:

public static void main(String[] args) {
        java.util.Scanner scanner = new java.util.Scanner(System.in);

        int a = scanner.nextInt();
        System.out.println(a);
}
Run Code Online (Sandbox Code Playgroud)

问题是当我运行它时,它起作用了。但是,Intellij 找不到 Scanner 类。它用红色下划线。

如何解决这个问题?

java intellij-idea

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

XCB - 未在所有窗口上接收动作通知事件

我正在尝试通知任何指针运动.因为我不想作为窗口管理器运行,所以我需要XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | XCB_EVENT_MASK_POINTER_MOTION在启动时和创建通知事件时设置所有窗口.

这似乎一般工作正常,我在所有窗口上收到动作通知事件.但是,不知何故,谷歌Chrome窗口不是这样.我之后通过显式查询它来检查事件掩码,并且它已正确设置.我也没有在传播掩模中看到任何异常.

什么可能导致谷歌浏览器不报告动作通知事件?AFAIK,X协议不允许除了Chrome肯定没有的活动指针抓取.

这是我在所有现有窗口上注册的方式.我打电话register_events给根窗口,每当我收到一个创建通知事件时:

static void register_events(xcb_window_t window) {
    xcb_void_cookie_t cookie = xcb_change_window_attributes_checked(connection,                                         
        window, XCB_CW_EVENT_MASK, (uint32_t[]) { XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | XCB_EVENT_MASK_POINTER_MOTION | XCB_EVENT_MASK_LEAVE_WINDOW });
    xcb_generic_error_t *error = xcb_request_check(connection, cookie);
    if (error != NULL) {
        xcb_disconnect(connection);
        errx(EXIT_FAILURE, "could not subscribe to events on a window, bailing out");
    }   
}

static void register_existing_windows(void) {
    xcb_query_tree_reply_t *reply;
    if ((reply = xcb_query_tree_reply(connection, xcb_query_tree(connection, root), 0)) == NULL) {
        return;
    }   

    int len = xcb_query_tree_children_length(reply);
    xcb_window_t *children = xcb_query_tree_children(reply);
    for …
Run Code Online (Sandbox Code Playgroud)

c x11 google-chrome xcb

5
推荐指数
2
解决办法
993
查看次数

将 Tizen 应用程序部署到 Gear S2:使用了不受信任的证书

在让 Tizen Studio 工作后,我(未成功)尝试将示例应用程序部署到 Samsung Gear S2。该应用程序是示例之一,我已经按照说明中的说明设置了用于商业设备的证书。

当我选择“允许安装应用程序”时,我得到了正确的成功响应,我还可以看到device-profile.xml设备上的 DUID 正确。

但是,尝试部署应用程序(从 IDE 和通过 sdb)仍然会导致错误:

tizen@buerk:~/tizen-studio/tools$ ./sdb install ../../workspace/FirstExample/FirstExample.wgt                                                                                                                                                                
WARNING: Your data is to be sent over an unencrypted connection and could be read by others.
pushed               FirstExample.wgt   100%       1681KB       0KB/s
1 file(s) pushed. 0 file(s) skipped.
../../workspace/FirstExample/FirstExample.wgt   553KB/s (1721589 bytes in 3.035s)
path is /opt/usr/apps/tmp/FirstExample.wgt
__return_cb req_id[21310002] pkg_type[wgt] pkgid[RGUVa9zGKK] key[start] val[install]
__return_cb req_id[21310002] pkg_type[wgt] pkgid[RGUVa9zGKK] key[install_percent] val[3]
__return_cb req_id[21310002] pkg_type[wgt] pkgid[RGUVa9zGKK] key[install_percent] val[22]
__return_cb req_id[21310002] pkg_type[wgt] pkgid[RGUVa9zGKK] key[install_percent] …
Run Code Online (Sandbox Code Playgroud)

tizen tizen-wearable-sdk

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

处理字符串时的神秘'1'

我正在尝试处理每个字符的文件字符输入,但有一些1显示我不知道它们来自哪里.考虑这个例子:

文件 input

First row;
Second row;

Third row;
Run Code Online (Sandbox Code Playgroud)

文件 test.pl

#!/usr/bin/perl

open FILE, "<input";

my @characters = split //, join //, <FILE>;
for( @characters ) {
  print $_;
}

close FILE;
Run Code Online (Sandbox Code Playgroud)

我希望这个脚本只打印内容input(虽然以一种非常复杂的方式 - 它只是一个例子).但是,当我运行时./test.pl,我得到这个输出:

First row;
1Second row;
1
1Third row;
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:这些1角色来自哪里?

perl

4
推荐指数
2
解决办法
104
查看次数

git - 命令提交按日期引入"TODO"

我想找到引入的提交添加了"TODO"或"FIXME"注释并按日期排序.

我知道这git log -G'TODO|FIXME'将显示包含评论的提交,我可以做类似的事情

git log --format='%ci' -G'TODO|FIXME' | cut -d' ' -f 1
Run Code Online (Sandbox Code Playgroud)

但是,这不会尊重它应该只提交引入这样的评论.

有谁知道我怎么能找到提交此类评论的提交并按日期订购?如果实际的SHA-1包含在该列表中,那将更加令人敬畏.

git git-log todo

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

递归可观察

我正在使用RxJ,必须建立一种轮询机制才能从服务器检索更新。

我需要每秒发出一个请求,解析更新,发出请求并记住它的ID,因为我需要它来请求下一个更新包,例如getUpdate(lastId + 1)

第一部分是容易的,所以我只是用intervalmergeMap

let lastId = 0
const updates = Rx.Observable.interval(1000)
    .map(() => lastId)
    .mergeMap((offset) => getUpdates(offset + 1))
Run Code Online (Sandbox Code Playgroud)

我正在收集这样的标识符:

updates.pluck('update_id').scan(Math.max, 0).subscribe(val => lastId = val)
Run Code Online (Sandbox Code Playgroud)

但是这种解决方案不是纯粹的反应性的,我正在寻找一种方法来省略“全局”变量的使用。

我如何改进代码,同时仍然能够返回仅包含调用者更新的Observable?

UPD。

服务器对getUpdates(id)的响应如下所示:

[
  { update_id: 1, payload: { ... } },
  { update_id: 3, payload: { ... } },
  { update_id: 2, payload: { ... } }
]
Run Code Online (Sandbox Code Playgroud)

它可以按任何顺序包含0到Infinity更新

rxjs reactivex

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

jQuery Mobile - 具有相对高度的内容网格

我试图在jquery mobile中构建一个网格,为了一个例子,它类似于数字键盘.

我想要的是网格占据页面高度的给定百分比(例如75%).我的尝试是将content部分拉伸到height: 100%实际网格height: 75%,然后将每个块拉伸到height: 20%(因为它是5行).

但是,它似乎不起作用(小提琴).检查元素,看起来该content部分忽略了height: 100%(page包装器确实具有完整的大小).但我似乎无法找到原因.

有人能指出我为什么会这样,以及如何拉伸网格占据可用高度的75%?

似乎这个问题是关于同样的问题,但在那里找不到答案.

html css jquery css3 jquery-mobile

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

postgresql:在 JSON 数组中过滤

假设我们有一个items包含列name和的表attributes

CREATE TABLE students (
  name VARCHAR(100),
  attributes JSON
)
Run Code Online (Sandbox Code Playgroud)

其中属性是一组(总是结构相同的)JSON 文档,例如

[{"name":"Attribute 1","value":"Value 1"},{"name":"Attribute 2","value":"Value 2"}]
Run Code Online (Sandbox Code Playgroud)

我现在想找到任何属性值与某些内容(例如Foo%)匹配的所有学生。这是一个游乐场示例

我意识到这并不是最直接的设计,但就目前而言,这是我必须使用的设计,尽管这种搜索的性能绝对是非常低效的,这当然是一个值得关注的问题。

sql postgresql

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

如何在打字稿中声明对象数组?

我想指定该函数将对象数组作为参数,但是我没有为该对象定义特定类型(某种“匿名类型”)

bagTotal = (products) => {
 // function does stuff
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以这样做:

bagTotal = (products: any[]) => {
 // function does stuff
}
Run Code Online (Sandbox Code Playgroud)

但这比我想要的要轻松一些:严格限制我的打字稿。

products 是一组外观相同的对象,就像所有对象都有名称,价格,描述一样。

我该怎么宣布呢?

我想做类似的事情

bagTotal = (products: [{name: string, price: number, description: string}]) => {
 // function does stuff
}
Run Code Online (Sandbox Code Playgroud)

但这是不对的。我该如何声明?

javascript typescript reactjs

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

RxJs/NgRx - 有没有办法在延迟运算符之后“取消”流

我在使用 NgRx 的 Angular 应用程序中使用轮询方案。

为了简化事情,我有如下内容......

    public stopPolling$ = createEffect(() => this.actions$.pipe(
        ofType(actions.stopPolling),
        tap(_ => this.isPollingActive = false),    
        map(_ => actions.stopPolling())
      ), { dispatch: false });

     public continuePolling$ = createEffect(() => this.actions$.pipe(
        ofType(actions.getData),
        tap(_ => this.logger.debug('continue polling')),    
        delay(8000),    
        switchMap(_ => this.pollData())
      ), { dispatch: false });


    private pollData() {
       if (!this.isPollingActive)
         return;
    }
Run Code Online (Sandbox Code Playgroud)

在我的“StopPolling”中,我设置了一个标志,但是如果它在我处于delay(8000).

所以,我的问题是,有没有办法switchMap(_ => this.pollData())在延迟之后逐步调用被调用 - 即是否有某种方式在超时期限之前“强制延迟退出”?

几乎(如果你知道 C#/.net)。就像manualResetEvent.WaitOne(8000)可以通过调用Set()manualResetEvent 对象取消的一样。

我希望我已经清楚地描述了这一点?

提前致谢

rxjs ngrx angular

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