小编bas*_*ibe的帖子

如何调试ruby代码?

我运行Ubuntu 10.10.我只是想调试一个简单的脚本.在花了半天时间试图弄清楚如何做到这一点后,我放弃了.我该怎么办?

ruby-dev从Ubuntu存储库安装
我运行sudo gem install ruby-debugsudo gem install ruby-debug-ide

我尝试了几种不同的方法来完成这项工作.我尝试require 'ruby-debug'然后debugger在代码中设置某个地方.但是Ruby找不到ruby-debug.
我尝试设置vim-ruby-debugger,这将需要很长时间才能执行:Rdebugger myScript.rb,并允许我设置断点,但似乎没有办法使用该调试器执行我的代码.
我尝试使用NetBeans,每次设置项目并单击任何内容时,它都会崩溃.

所以,亲爱的社区:必须有一种方法来调试Ruby.不是Rails.没有什么花哨.只是一些CLI脚本.请帮助我,否则我将失去理智.

编辑: gem exec dir不在我的路径中.所以,至少rdebug现在似乎有效.

ruby debugging

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

LaTeX表中的自动换行符

在我的论文中,我有一个词汇表,解释了我使用的一些缩写.我把它放在桌子上让它看起来更好.但是,LaTeX不会在页面末尾打破行.

我知道我可以在表格中的任何一点强制换行,但它是一个很长的表(很多工作!)和手动换行使文本看起来锯齿状和丑陋.有没有一种很好的方法可以有一个漂亮的词汇表或在表中自动制作LaTeX断行?

......如果LaTeX不经常做这些事情我会非常喜欢它.就这样,我不断在感情和愤怒之间切换......

latex

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

如何将Numpy数组传递给cffi函数以及如何将其返回?

我正在使用Python和Numpy开发音频算法.现在我想通过在C中实现它的一部分来加速该算法.在过去,我使用cython完成了这个.现在我想用新的cffi做同样的事情.

出于测试目的,我写了一个简单的C函数:

void copy(float *in, float *out, int len) {
    for (int i=0; i<len; i++) {
        out[i] = in[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想创建两个numpy数组,并由这个函数处理.我想出了一种方法:

import numpy as np
from cffi import FFI

ffi = FFI()
ffi.cdef("void copy(float *in, float *out, int len);")
C = ffi.dlopen("/path/to/copy.dll")

float_in = ffi.new("float[16]")
float_out = ffi.new("float[16]")

arr_in = 42*np.ones(16, dtype=np.float32)

float_in[0:16] = arr_in[0:16]
C.copy(float_in, float_out, 16)
arr_out = np.frombuffer(ffi.buffer(float_out, 16*4), dtype=np.float32)
Run Code Online (Sandbox Code Playgroud)

但是,我想改进这段代码:

  1. 有没有办法直接访问numpy数组的底层浮点缓冲区而不复制它们?
  2. ffi.buffer非常方便快速转换为C数组的内容到Numpy数组.是否有一种等效方法可以快速将numpy数组转换为C数组而无需复制单个元素?
  3. 对于某些应用程序,float_in[0:16] = arr_in[0:16]是一种访问数据的便捷方式.相反,arr_out[0:16] = float_out[0:16] …

python arrays numpy python-cffi

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

如何在命令行中使用Visual Studio编译x64代码?

我想使用Windows命令行编译一个简单的hello-world风格的程序.

cl file_name.c
Run Code Online (Sandbox Code Playgroud)

很容易.现在我想在64位中做同样的事情.我该怎么办?

c compiler-construction 64-bit command-line visual-studio

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

函数声明中的"*&"是什么意思?

我按照以下方式编写了一个函数:

void myFunc(myStruct *&out) {
    out = new myStruct;
    out->field1 = 1;
    out->field2 = 2;
}
Run Code Online (Sandbox Code Playgroud)

现在在一个调用函数中,我可能会写这样的东西:

myStruct *data;
myFunc(data);
Run Code Online (Sandbox Code Playgroud)

这将填补所有领域data.如果我省略&声明中的' ',这将无效.(或者更确切地说,它只能在函数本地工作,但不会改变调用者中的任何内容)

有人可以向我解释这*&实际上是做什么的吗?它看起来很奇怪,我只是无法理解它.

c++ pointers reference

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

Visual Studio有什么好处?

在我作为程序员的短暂时间内,我在许多平台上使用了许多开发环境.最值得注意的是,Eclipse/Linux,XCode/OSX,CLI /编辑器/ Linux,VisualDSP/Blackfin/Windows和MSVC/Windows.(我用了几个月)

几乎所有这些都有很好的功能.但不知何故,我在MSVC中找不到任何东西.话又说回来,所以很多人似乎真的很喜欢它,所以我可能失去了一些东西.所以请告诉我:Visual Studio的优点是什么?

我喜欢的事:

  • Eclipse中的重构工具
  • 在XCode和Eclipse中构建错误突出显示
  • 在XCode中编辑全部范围
  • XCode中的Profiler
  • Eclipse和CLI /编辑器的灵活性
  • VisualDSP中的数据绘图

我不喜欢的事情

  • 在MSVC中构建错误显示(未在代码中突出显示)

老实说,这并不意味着咆哮.当然我是一个Mac头并且有点偏向地狱,但我必须在工作中使用MSVC,所以我真的很想喜欢它.

eclipse xcode visual-studio

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

NSValue如何发挥其魔力?

我有一个MVC应用程序.该模型具有一个结构属性NSSize.这是可写的:

- (void)setSize:(NSSize)aSize;
Run Code Online (Sandbox Code Playgroud)

视图NSSize使用键值编码设置它.但是,你不能对结构进行键值编码,所以我把它包装在一个NSValue像这样的对象中:

[theView setValue:[NSValue valueWithSize:mySize]
           forKey:@"theModel.size"];
Run Code Online (Sandbox Code Playgroud)

据我所知,这应该不起作用,因为访问器需要一个结构而不是一个结构NSValue.但它完美无缺.奇妙的.

这怎么可能?

struct objective-c key-value-coding

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

如何相互捕获两个文件但分别省略最后一行?

我有两个文件想要一起玩.但是,应省略第一个文件的最后一行和最后一个文件的第一行.

我确信这可以在UNIX shell(或者更确切地说,Cygwin)中完成.但是怎么样?

bash line text-files

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

使用预处理器对C/C++进行元编程

所以我有这个巨大的树,基本上是一个大的开关/案例,带有字符串键和一个公共对象上的不同函数调用,具体取决于键和一个元数据.

每个条目基本上都是这样的

} else if ( strcmp(key, "key_string") == 0) {
    ((class_name*)object)->do_something();
} else if ( ...
Run Code Online (Sandbox Code Playgroud)

哪里do_something可以有不同的调用,所以我不能只使用函数指针.此外,某些键需要将对象强制转换为子类.

现在,如果我用更高级别的语言编写代码,我会使用lambdas字典来简化这一过程.

在我看来,我可以使用宏来简化这类

case_call("key_string", class_name, do_something());
case_call( /* ... */ )
Run Code Online (Sandbox Code Playgroud)

哪个case_call是将此代码扩展到第一个代码段的宏.

然而,我非常关注这是否会被视为好风格.我的意思是,它会减少打字工作并改善代码的干燥度,但它确实似乎在某种程度上滥用了宏系统.

你会走那条路,还是整理出整条路?你这样做的原因是什么?

编辑

一些澄清:

此代码用作简化脚本API之间的粘合层,该API作为简单的键值属性访问C++ API的几个不同方面.这些属性在C++中以不同的方式实现:有些具有getter/setter方法,有些是在特殊结构中设置的.脚本操作引用C++对象转换为公共基类.但是,某些操作仅适用于某些子类,必须进行转换.

接下来,我可能会更改实际的C++ API,但目前,它必须被视为不可更改.此外,这必须在嵌入式编译器上工作,因此(遗憾的是)boost或C++ 11不可用.

c c++ macros coding-style metaprogramming

13
推荐指数
2
解决办法
1092
查看次数

引爆自动释放的NSOperationQueue是危险的吗?

我有一个需要相当长时间的任务,应该在后台运行.根据文档,这可以使用NSOperationQueue.但是,我不想保留类的全局副本,NSOperationQueue因为我实际上只将它用于那个任务.因此,我只是将其设置为自动释放,并希望在任务完成之前不会释放它.有用.
像这样:

NSInvocationOperation *theTask = [NSInvocationOperation alloc];
theTask = [theTask initWithTarget:self
                         selector:@selector(doTask:)
                           object:nil];
NSOperationQueue *operationQueue = [[NSOperationQueue new] autorelease];
[operationQueue addOperation:theTask];
[theTask release];
Run Code Online (Sandbox Code Playgroud)

不过,我有点担心.这保证有效吗?或者可能operationQueue会在某个时候取消分配并接受theTask它?

concurrency cocoa objective-c autorelease

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