小编use*_*541的帖子

在生产模式下登录Ruby on Rails

我想在控制器中查看一些变量,它尝试了以下内容:

Rails.logger.debug "Year: #{Time.now.year}"

puts "Year: #{Time.now.year}, Month: #{@month}"

在哪里可以看到Logger或Puts在生产模式下的输出?我需要这样设置一些东西来查看这些吗?

logging production ruby-on-rails

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

C/C++文字

有人可以帮我识别标准(C99和C++ 03)下面的行会发生什么?

uint16_t a = 5;
Run Code Online (Sandbox Code Playgroud)

因此,左边是类型变量,右边是文字,文字值何时以及如何获得变量的类型?

上述作业是否等同于以下声明?

uint16_t a = (uint16_t)5;  /* C */
uint16_t a = reinterpret_cast<uint16_t>(5);  // C++
Run Code Online (Sandbox Code Playgroud)

怎么样:

uint16_t a = 5u;
Run Code Online (Sandbox Code Playgroud)

如果你有类似的东西:

uint32_t b = a + 5;
Run Code Online (Sandbox Code Playgroud)

以上陈述是否等同于以下陈述?

uint32_t b = (uint32_t)(a + (uint16_t)(5));  /* C */
uint32_t b = reinterpret_cast<uint32_t>(a + reinterpret_cast<uint16_t>(5));  // C++
Run Code Online (Sandbox Code Playgroud)

C11和C++ 14的变化是什么?另外,请假设系统int是32位.

我已经在C编写了一段时间,但从来没有真正理解它,但它总是困扰我,所以如果有人可以帮助我解决它,我将不胜感激.

谢谢...

(编辑:假设int是32位)

c c++

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

C/C++条件返回语句

我正在研究嵌入式程序,在某些情况下如果没有条件,我想尽快从函数返回.如果我有以下代码,我正在进行嵌入式编程:

foo() {
   if (a < b) {
       return 0;  // bail, since condition is met
   } else {
       // lots of calculations in this block
   }
   return 1;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,有多个return语句是不是很糟糕?这是不好的做法吗?有更好的方法吗?MISRA是否对此有所说明?

注意:这个问题特别针对嵌入式系统,与MISRA有关,而不仅仅是C/C++

谢谢...

c c++ misra

8
推荐指数
2
解决办法
8328
查看次数

在C++中将函数指针转换为整数

我有一个无符号整数数组,需要存储指向数据和函数以及一些数据的指针.在我正在使用的设备中,sizeof指针与sizeof unsigned int相同.如何将指向函数的指针转换为unsigned int?我知道这使代码不可移植,但它是微控制器特定的.我试过这个:

stackPtr[4] = reinterpret_cast<unsigned int>(task_ptr);
Run Code Online (Sandbox Code Playgroud)

但它给我一个错误"无效的类型转换"

将它转换为void指针然后转换为int是混乱的.

stackPtr[4] = reinterpret_cast<unsigned int>(static_cast<void *> (task_ptr));
Run Code Online (Sandbox Code Playgroud)

这样做有干净的方法吗?

编辑 - task_ptr是函数指针 void task_ptr(void)

爱巴马尔的回答,将我的便携性缺点带走了.此外,void指针数组实际上比无符号Ints更有意义.谢谢Barmar和isaach1000.

编辑2:知道了,我的编译器正在考虑使用大内存模型,因此它使用的是32位指针,而不是我期望的16位(小型微处理器,总内存为17K).

c++

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

在 Python 中执行 Shellcode

下面的代码可以在 C 语言中运行,但是是否可以在 Python 中执行类似的操作?它可以是 2.7.x 或 3.x。

char bytes[] = "\x90\x90\x90\x90\x90\x90\x90\x90\xeb\x1a\x5e\x31\xc0"
               "\x88\x46\x07\x8d\x1e\x89\x5e\x08\x89\x46\x0c\xb0\x0b"
               "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\xe8\xe1\xff"
               "\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68\x20";

int main() {
   ((int (*)())bytes)();
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

#!/usr/bin/python
import ctypes
from subprocess import call

lib = ctypes.cdll.LoadLibrary(None)

shellcode = (b"\x90\x90\x90\x90\x90\x90\x90\x90\xeb\x1a\x5e\x31\xc0"
              "\x88\x46\x07\x8d\x1e\x89\x5e\x08\x89\x46\x0c\xb0\x0b"
              "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\xe8\xe1\xff"
              "\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68\x20")

code = ctypes.create_string_buffer(shellcode)
addr = id(shellcode)

# Test Shellcode
functype = ctypes.CFUNCTYPE(ctypes.c_int)
func = functype(addr)
func()
Run Code Online (Sandbox Code Playgroud)

我不断得到Segmentation fault (core dumped)

python

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

在Rails中使用google-maps-for-rails gem时设置标记颜色

如何使用google-maps-for-rails将颜色参数传递给google maps api?我想根据一个值设置控制器内每个标记的颜色,所以有些是红色,有些是黄色,有些是绿色.我相信它是Symbol中的图标属性,它看着:

https://developers.google.com/maps/documentation/javascript/reference#MarkerOptions

另外,我想在标记内有一个1-99的数字,是否可能?到目前为止,我有这个.

@json = Device.all.to_gmaps4rails do |device, marker|
end
Run Code Online (Sandbox Code Playgroud)

几天来我一直在努力,任何帮助都会受到赞赏.

ruby-on-rails ruby-on-rails-3 gmaps4rails

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

从路径鱼贝壳提取的文件夹名称

我有多个目录,这样

~/project/foo/Debug
~/project/bar/Debug
... and so on
Run Code Online (Sandbox Code Playgroud)

文件夹projectDebug是常数。

我在Debug目录中,foo并且bar是项目名称。当我在~/project/bar/Debug,是有可能的变量设置为字符串bar,而当我在目录时,~/project/xxxxx/Debug该变量设置为xxxxx

fish

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

如果(x - y){}与if(x!= y){}相同,这些陈述是否相同

我已经编程了一段时间,在我看来,以下两个if语句会产生相同的结果,但我总是质疑它,有人可以帮我解决这个问题吗?

int x, y;
if (x - y) {
  //some code
}
Run Code Online (Sandbox Code Playgroud)

VS

int x, y;
if (x != y) (
  // some code
}
Run Code Online (Sandbox Code Playgroud)

谢谢...

c c++

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

为介子构建运行特定测试

使用介子构建,如果我在中定义了多个测试meson.build(如此处所示),是否可以构建并运行特定的单个测试?假设我正在开发一个特定的模块,并且想使用命令提示符运行该模块的测试?

meson-build

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

在C++中使用接口进行多重继承

具有接口类的多重继承是一种很好的设计实践吗?

它似乎工作,使运行gtest unittest套件方便.那么在下面的例子中,B类的多重继承是一个糟糕的设计实践吗?

#include <stdio.h>

class BInterface {
 public:
    virtual ~BInterface() {}
    virtual void idb() = 0;
};

class A {
 public:
    A() {}
    void ida() {printf("I am A\n");}
};

class B : public A, public BInterface {  // ###########  Is this OK?  ############
 public:
    B() {}
    void idb() {printf("I am B\n");}
};

int main() {

    B BObject;

    BInterface* BI = &BObject;

    BI->idb();

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

编辑:我只是继承接口类,但在这种情况下是多重继承是一种糟糕的设计,考虑到大多数代码专家建议不要使用多重继承.

c++ oop

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