小编Mag*_*sch的帖子

从帮助程序规范中获取'action_name'或'controller'

假设我在application_helper.rb中有以下代码:

def do_something
 if action_name == 'index'
   'do'
 else
   'dont'
 end
end
Run Code Online (Sandbox Code Playgroud)

如果在索引操作中调用,它将执行某些操作.

问:如何在application_helper_spec.rb中重写辅助规范以模拟来自'index'动作的调用?

describe 'when called from "index" action' do
  it 'should do' do
    helper.do_something.should == 'do' # will always return 'dont'
  end
end

describe 'when called from "other" action' do
  it 'should do' do
    helper.do_something.should == 'dont'
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby bdd rspec ruby-on-rails

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

C中的逻辑运算符有什么意义?

我只是想知道C中是否有一个XOR逻辑运算符(类似于&&表示AND,但是对于XOR).我知道我可以将XOR分成AND,NOT和OR,但简单的XOR会好得多.然后我想到如果我在两个条件之间使用普通的XOR位运算符,它可能会起作用.对于我的测试,它做到了.

考虑:

int i = 3;
int j = 7;
int k = 8;
Run Code Online (Sandbox Code Playgroud)

仅仅为了这个相当愚蠢的例子,如果我需要k大于i或大于j而不是两者,XOR将是非常方便的.

if ((k > i) XOR (k > j))
   printf("Valid");
else
   printf("Invalid");
Run Code Online (Sandbox Code Playgroud)

要么

printf("%s",((k > i) XOR (k > j)) ? "Valid" : "Invalid");
Run Code Online (Sandbox Code Playgroud)

我把按位XOR ^,它产生"无效".将两个比较的结果放在两个整数中导致2个整数包含1,因此XOR产生错误.然后我用&和|尝试了 按位运算符和两者都给出了预期的结果.知道真实条件具有非零值,而虚假条件具有零值,所有这些都是有意义的.

我想知道,是否有理由使用逻辑&&和|| 当按位运算符&,| 和^工作一样吗?

c xor bitwise-operators logical-operators

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

具有增益调整功能的AudioRecord无法在Samsung Device上运行

我已经编写了用于录制音频文件的代码,AudioRecord并且在SD卡上写入文件时,我正在制作两个版本.

版本1 录制的文件原样保存在SD卡上.

版本2 我在录制文件上应用增益功能并保存在SD卡上.

这在索尼爱立信手机上非常棒.同时音量也在很大程度上得到提升.

但我正在努力使其适用于三星设备.

当我播放录制的文件时,它听起来像会说话的汤姆:P

最初我认为Samusung设备不喜欢我曾经创建的组合 AudioRecorder.

所以我使用以下方法,其中我循环到可用配置并使用最佳配置来初始化AudioRecord.

public AudioRecord findAudioRecord() {
    for (int rate: mSampleRates) {
        for (short audioFormat: new short[] {
            AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT
        }) {
            for (short channelConfig: new short[] {
                AudioFormat.CHANNEL_IN_MONO, AudioFormat.CHANNEL_IN_STEREO
            }) {
                try {
                    Log.i("vipul", "Attempting rate " + rate + "Hz, bits: " + audioFormat + ", channel: " + channelConfig);
                    int bufferSize = AudioRecord.getMinBufferSize(rate, channelConfig, audioFormat);

                    if (bufferSize != AudioRecord.ERROR_BAD_VALUE) {
                        // check if we can instantiate …
Run Code Online (Sandbox Code Playgroud)

audio android audio-recording android-audiorecord

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

在字符数组结束前使用\ 0的安全性

我正在为一个嵌入式系统编写驱动程序,该系统运行自定义版本的修改后的linux(它是一个手工扫描器).制造商提供自定义Eclipse Juno发行版,其中包含一些库和示例入站.

我从comport收到的输出是标准字符数组的形式.我使用数组中的单个字符来传达信息(错误ID和错误代码),如下所示:

if (tmp[i] == 250])
Run Code Online (Sandbox Code Playgroud)

其中tmp是char形式的字符数组,tmp[500];首先被初始化为0然后填充来自comport的输入.

我的问题是:

假设我遍历数组的每一部分,在数组结束之前的任何时候使用0(如何\0)都是安全的吗?假设我是:

  1. 不将其视为字符串(迭代并像int数组一样使用它)
  2. 知道将要在那里发生什么,以及它中间的这个随机\ 0应该是什么意思.

我问的原因是因为我有几个同事告诉我,我不应该\0在结束之前使用包含的字符数组,无论情况如何.

我这样做的代码目前按预期执行,但我不确定它是否会在以后引起问题.

重写它以避免这种行为将是一件非常重要的工作.

c char

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

OpenGL模型、视图、投影矩阵

我试图理解 opengl 中使用矩阵的相机。

我编写了一个简单的着色器,如下所示:

#version 330 core

layout (location = 0) in vec3 a_pos;
layout (location = 1) in vec4 a_col;

uniform mat4 u_mvp_mat;
uniform mat4 u_mod_mat;
uniform mat4 u_view_mat;
uniform mat4 u_proj_mat;

out vec4 f_color;

void main()
{
    vec4 v = u_mvp_mat * vec4(0.0, 0.0, 1.0, 1.0);
    gl_Position =   u_mvp_mat * vec4(a_pos, 1.0);
    //gl_Position =   u_proj_mat * u_view_mat * u_mod_mat * vec4(a_pos, 1.0);
    f_color = a_col;
}
Run Code Online (Sandbox Code Playgroud)

这有点冗长,但那是因为我正在测试传递模型、视图或投影矩阵并在 GPU 上进行乘法,或者在 cpu 上进行乘法并传递 mvp 矩阵,然后只进行 mvp * 位置矩阵乘法。

我知道后者可以提高性能,但绘制 1 …

c opengl matrix

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

如何在Python中动态分配内存

python中有什么方法可以用来从堆中获取内存块,并可以使用变量来引用它。就像关键字“ new”或malloc()其他语言的函数一样:

Object *obj = (Object *) malloc(sizeof(Object)); 
Object *obj = new Object();
Run Code Online (Sandbox Code Playgroud)

在项目中,我的程序正在等待以不确定的时间间隔接收某些数据,并且在正确时具有一定的字节长度。

我习惯这样:

void receive()// callback
{
  if(getSize()<=sizeof(DataStruct))
  {
   DataStruct *pData=malloc(sizeof(DataStruct));
   if(recvData(pData)>0)
   list_add(globalList,pData);
  }   
}

void worker()
{
  init()
  while(!isFinish)
 {
  dataProcess(globalList);
 }

}
Run Code Online (Sandbox Code Playgroud)

现在,我想将这些旧项目迁移到python,并尝试这样做:

def reveive():
 data=dataRecv()
 globalList.append(data)
Run Code Online (Sandbox Code Playgroud)

但是,我得到列表中的所有项目都是相同的,并且等于最新收到的项目。显而易见,所有列表项都指向相同的内存地址,并且我想为每个调用该函数的用户获取一个新的内存地址。

python memory heap

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

PHP内存耗尽

任何想法为什么我得到....

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to
Run Code Online (Sandbox Code Playgroud)

在第77行的/home/frich/public_html/creation/systemc/sMain/upload_image.php中分配9792个字节)

在以下行

$oldImage = imagecreatefromjpeg($img);
Run Code Online (Sandbox Code Playgroud)

php从HTML表单中获取图像并调整其大小.

如果它是一个小文件,工作完全正常.就是几百KB

尝试使用更大的文件,因为我想要最多4mb.我得到错误的图像是ca. 2MB

提前致谢

php memory file-upload

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

使用Flask时如何安全地写入文件?

我需要在Flask服务器上编写一个方法,它将部分请求写入日志文件.但是,如果我理解正确,Flask是多线程的,并且很有可能写入文件是不安全的.

不可否认,我或多或少都是python和多线程编程的新手一般,所以我需要有人稍微握住我的手一点点:)

到目前为止我的代码(略有修改,没有任何部分会让我在网上发布麻烦)

@app.route('/store_test')
def store_test():
    now = str(time.time())
    ip_address = request.remote_addr
    agent = request.user_agent.string

    log_data = [now,ip_address,agent]
    log_data_string = "\t".join(log_data)

    filename = "log.dat"

    f = open(filename,'a')
    f.write(log_data_string + "\n")
    f.close()

    return 'OK'
Run Code Online (Sandbox Code Playgroud)

我猜我需要围绕open和close语句包含一些代码,但我不知道是什么,我正在阅读"果壳中的Python"一书中的Threads and Processes章节,它并没有真正给我很多关于如何实际使用这些方法的想法.

任何帮助,将不胜感激.

python thread-safety flask

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

对于详尽的模型选择搜索,R的跳跃包中的regsubsets如何优化?

我正在运行一些模型选择程序,基于对大约50个变量给出答案的人的43次调查.我已经将足够有用的变量缩小到22并丢弃其余变量.

我想使用R中leaps库中的详尽regsubsets算法进行模型选择.我设置nvmax = 22 - 我的集合中预测变量的数量 - regsubsets以速度吹走了我 - 只需几秒钟就可以运行2 ^ 22 ~4百万次回归.这不可能枚举22选择k的所有组合从1到22的所有k并且回归,可以吗?

regsubsets是否以某种方式进行了优化,以便"详尽"的算法可以巧妙地省略绝大多数回归,它可以知道先验相对于最佳可用的R ^ 2会有什么不好?

我发现当我运行lm(y~.x,data = some.df)时,这只需要25秒就可以进行10,000次回归 - 这与regsubsets分析400万次回归所用的3或4秒相差甚远 - 所以很明显在代码中有一些优化.如何实施优化?

r brute-force

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

在GoDaddy主机上安装composer会导致解析错误

我正在尝试在我的共享Godaddy托管上安装作曲家.我需要作曲家来安装laravel.我正在使用PUTTY通过SSH连接.键入时,我成功连接

-bash-3.2$ ls
Run Code Online (Sandbox Code Playgroud)

我得到这些文件夹:

 data  html  scctmp  tmp
Run Code Online (Sandbox Code Playgroud)

然后我输入:

curl -sS https://getcomposer.org/installer | php
Run Code Online (Sandbox Code Playgroud)

它回报我:

Content-type: text/html

<br />
<b>Parse error</b>:  syntax error, unexpected T_NEW in <b>-</b> on line <b>382</b><br />
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

install composer-php

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