小编kri*_*ina的帖子

是否有一种优雅的方法可以使类中的每个方法都以某个代码块开头?

我有一个类,每个方法都以相同的方式启动:

class Foo {
  public void bar() {
    if (!fooIsEnabled) return;
    //...
  }
  public void baz() {
    if (!fooIsEnabled) return;
    //...
  }
  public void bat() {
    if (!fooIsEnabled) return;
    //...
  }
}
Run Code Online (Sandbox Code Playgroud)

fooIsEnabled对于类中的每个公共方法,是否有一种很好的方法要求(并且希望不是每次都写入)该部分?

java design-patterns

141
推荐指数
7
解决办法
3万
查看次数

Emacs:在启动时重新打开上次会话的缓冲区?

我每天都启动emacs并打开前一天打开的完全相同的文件.有什么我可以添加到init.el文件,所以它将重新打开我上次退出emacs时使用的所有缓冲区?

emacs

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

如何执行动态加载的JavaScript块?

我正在开发一个网页,我正在进行一个AJAX调用,返回一大块HTML,如:

<div>
  <!-- some html -->
  <script type="text/javascript">
    /** some javascript */
  </script>
</div>
Run Code Online (Sandbox Code Playgroud)

我将整个东西插入DOM,但JavaScript没有运行.有没有办法运行它?

一些细节:我无法控制脚本块中的内容(因此我无法将其更改为可以调用的函数),我只需要执行整个块.我无法在响应上调用eval,因为JavaScript位于更大的HTML块中.我可以做某种正则表达式来分离出JavaScript,然后在它上面调用eval,但这很令人讨厌.谁知道更好的方法?

javascript ajax

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

填充va_list

有没有办法va_list从头开始创建?我正在尝试调用一个va_list带有参数的函数:

func(void **entry, int num_args, va_list args, char *key); 
Run Code Online (Sandbox Code Playgroud)

...来自不采用可变数量参数的函数.我能想到的唯一方法是创建一个中间函数,它接受varargs然后传递它的va_list,这是非常愚蠢的:

void stupid_func(void **entry, char *key, int num_args, ...) {
    va_list args;
    va_start(args, num_args);

    func(entry, num_args, args, key);

    va_end(args);
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?我不能改变func签名.

c variadic-functions

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

是nice()用于更改线程优先级或进程优先级?

nice说"nice()" 的手册页将inc添加到调用进程的nice值.那么,我们可以使用它来更改由创建的线程的nice值pthread_create吗?

编辑:我们似乎可以为每个线程设置好的值.

我写了一个应用程序,为不同的线程设置了不同的好的值,并观察到"更好"的线程已被安排在较低的优先级.检查输出,我发现字符串"高优先级................"更频繁地输出.

void * thread_function1(void *arg)
{

 pid_t tid = syscall(SYS_gettid);

 int ret = setpriority(PRIO_PROCESS, tid, -10);
 printf("tid of high priority thread %d , %d\n",tid ,getpriority(PRIO_PROCESS,tid));
 while(1){
  printf("high priority ................\n");
    }

}


void * thread_function(void *arg)
{
 pid_t tid = syscall(SYS_gettid);
 int ret = setpriority(PRIO_PROCESS, tid, 10);
 printf("tid of low priority thread %d , %d \n",tid ,getpriority(PRIO_PROCESS,tid));
while(1) 
{

  printf("lower priority\n");
}
}


int main()
{

pthread_t id1;
pthread_t id2;

pid_t pid = …
Run Code Online (Sandbox Code Playgroud)

linux pthreads scheduler nice

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

如何在C中用Perl 5.12创建qr?

这在5.8和5.10中一直在为我工作,但在5.12中我的代码创建了这个奇怪的非qr对象:

# running "print Dumper($regex)"
$VAR1 = bless( do{\(my $o = '')}, 'Regexp' );
Run Code Online (Sandbox Code Playgroud)

打印qr //不是由我的代码创建的,如下所示:

# running "print Dumper(qr/foo/i)"
$VAR1 = qr/(?i-xsm:foo)/;
Run Code Online (Sandbox Code Playgroud)

我的代码基本上是:

REGEXP *rx = re_compile(pattern, flags);
SV *regex = sv_2mortal(newSVpv("",0));

sv_magic(regex, (SV*)rx, PERL_MAGIC_qr, 0, 0);

stash = gv_stashpv("Regexp", 0);
sv_bless(newRV((SV*)regex), stash);
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何从5.12中的字符串正确创建一个正则表达式?

regex perl xs qr-operator

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

JavaScript中的"name"变量有什么特别之处?

在Chrome开发者工具窗口中,我输入了:

> name = ["a", "b", "c"]
["a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)

但是,name成了一个字符串:

> typeof name
"string"
> name
"a,b,c"
> name[1]
","
Run Code Online (Sandbox Code Playgroud)

对于其他变量名称显然不是这样!

> foo = ["a", "b", "c"]
["a", "b", "c"]
> typeof foo
"object"
> foo[1]
"b"
Run Code Online (Sandbox Code Playgroud)

并且name被定义为页面加载时的空字符串(据我所知,除了字符串之外不能成为任何其他内容).

那么,有什么用name

javascript google-chrome

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

为什么flask会占用我所有的内存?

我创建了我能想象到的最简单的 Flask 应用程序:

import flask
from flask import Flask

application = Flask(__name__)

@application.route('/')
def index():
    return flask.jsonify(ok=True)
Run Code Online (Sandbox Code Playgroud)

我于 1/26 将此应用程序部署到 Elastic Beanstalk。自部署以来,它已为 0 个请求提供服务。这是使用Amazon 的内存监控脚本的内存使用情况图:

Flask,你为什么没有free?

您可以看到(我假设)垃圾收集发生在 1/29 的地方。但是到底是什么分配了这么多内存呢?如果这是正常的,我应该如何监控内存,以便我可以真正确定我的(真实)应用程序是否存在内存泄漏?这是 Flask 的错、Python 的错、AWS 的错,还是……其他原因?

编辑补充:我今天下午改用 mod_wsgi,但似乎没有任何效果。更新图(dips 正在部署新版本,需要尝试几次才能使配置正确):

WSGI 的持续内存问题

的输出free -m

             total       used       free     shared    buffers     cached
Mem:           532        501         31          0         81         37
-/+ buffers/cache:        381        150
Swap:            0          0          0
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services flask

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

Drag event not firing with angular 2

I have a canvas and I want users to be able to drag graphic elements around it. Thus, I don't want the canvas itself to drag, but I want to handle dragstart, drag, and drop events when the mouse does those things.

I'm using Angular 2, so I have:

<!-- editor.component.html -->
<div #rendererContainer
  draggable="true"
  (dragstart)="onDragStart($event)"
  (drag)="onDrag($event)" 
  (dragover)="onDrag($event)" 
  (drop)="onDragEnd($event)"
  (dragend)="onDragEnd($event)"> 
</div>
Run Code Online (Sandbox Code Playgroud)

Then in editor.component.ts:

onDragStart(event) {
  console.log(`starting`);
  event.preventDefault();
}

onDrag(event) {
  console.log('dragging');
  event.preventDefault();
}

onDragEnd(event) {
  console.log('drag end');
  event.preventDefault();
} …
Run Code Online (Sandbox Code Playgroud)

javascript angular

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

如何在C++中隐藏一些类的字段

我想开源项目,但我有一个头文件,如下所示:

class Foo {
 public:
  int bar;
  int super_secret_field;
};
Run Code Online (Sandbox Code Playgroud)

我希望开源标头有bar字段,但不是super_secret_field.我仍然想要一个封闭源版本super_secret_field.

我不能使用两个单独的头文件,因为那么使用的类Foo将具有奇怪的包含.我可以用#includes做一些hacky然后在发布的版本中删除它们,但我宁愿不这样做.

有没有更好的办法?

c++

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

在Emacs中为每个目录设置c-basic-offset

我有一个使用2空格缩进的C项目(在/ projects/c中)和一个带有4空格缩进的C++项目(在/ projects/cpp中).我无法弄清楚如何让Emacs自动做正确的间距,具体取决于我打开文件的位置.

我可以告诉它使用c++-mode(4个空格)表示.cpp文件,但.h文件(在cpp项目中)仍默认为c-mode(2个空格).

有什么东西可以放在我的.emacs文件中,以缩进.h文件不同的空格数或更改模式,具体取决于目录?

c c++ emacs

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

为什么我的Perl对象不能找到它的skip()方法,即使我可以将其称为子例程?

我正在研究一个Perl模块,每当我调用skip()我用以下方式编写的方法时:

$cursor->skip(4);
Run Code Online (Sandbox Code Playgroud)

我明白了:

Undefined subroutine &MyModule::Cursor::skip called at t/tester.pl line 24.
        (in cleanup) invalid object at t/tester.pl line 24.

当我称之为:

MyModule::Cursor::skip($cursor, 4);
Run Code Online (Sandbox Code Playgroud)

Perl发现了!

奇怪的是,如果我将" skip" 命名为" "(" skipper"," hello"),则此语法有效:

$cursor->skipper(4);
Run Code Online (Sandbox Code Playgroud)

我想也许skip()是一个"秘密"保留的关键词或者其他东西,但我也有方法命名sort()next()(我知道是保留的),这些工作正常.

我真的很想把这个方法命名为" skip." 有谁知道为什么Perl找不到它?

perl perl-module xs

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

有什么方法可以查看开发人员控制台的后台任务和弹出窗口吗?

我正在使用背景脚本和弹出窗口创建chrome扩展程序。我可以右键单击扩展图标,然后选择“检查弹出窗口”以调试弹出窗口,然后单击“检查视图:背景页面”以调试后台脚本。但是,由于必须在两个调试器之间保持切换,这很烦人,因为打开一个调试器会关闭另一个调试器。

有什么方法可以使两者保持一致,或者最好是在一个调试控制台下统一它们?

编辑添加:这不是此问题的重复,因为我能够同时看到弹出窗口和后台任务的输出。

google-chrome-extension developer-console

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