小编Jam*_*mie的帖子

重新调整浮点方程

我想知道是否有办法提高计算斜率的准确性.(这想出了几个月前在这里).

似乎通过改变:

float get_slope(float dXa, float dXb, float dYa, float dYb) {
    return (dXa - dXb)/(dYa - dYb);
}
Run Code Online (Sandbox Code Playgroud)

float get_slope(float dXa, float dXb, float dYa, float dYb) {
    return  dXa/(dYa - dYb) - dXb/(dYa - dYb);
}
Run Code Online (Sandbox Code Playgroud)

可能是一种进步.建议?

编辑:我追求的是精确度,而不是效率.

floating-point precision linear-algebra

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

这对`cat`来说是无用的吗?

我不知道如何在不使用猫的情况下完成以下工作.我并不担心分叉过程或任何事情,它让我感到不安:

$ printf "<format specification string>" $(cat source-file.txt)
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

bash

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

为什么这个阻塞套接字读取返回零并且没有错误?

这段代码在Linux上运行:

int r, c;
...
assert(0 == (O_NONBLOCK & fcntl(sockfd, F_GETFL, 0)));
errno = 0;
r = read(sockfd, &c, 1);
if (r == 0 && errno == 0) { 
    printf("What gives?\n");
}
...
Run Code Online (Sandbox Code Playgroud)

从套接字执行读操作,偶尔会返回零(in r)并将errnoset设置为零(0).我遇到什么情况?除非出现错误,否则我真的想要读取块.

c sockets linux io

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

这是垂直切片字典列表以获取唯一值的最有效方法吗?

我有一个字典列表,我正在寻找其中一个键的唯一值列表.

这就是我想出来的,但不禁想知道它的效率,时间和/或记忆是否明智:

list(set([d['key'] for d in my_list]))
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

python python-2.7

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

我可以使用set comprehension从更大的dict列表中创建dict列表吗?

我正在使用非规范化表,这在提取唯一信息时提供了一些挑战.如果表格被标准化:

unique_data = list({d['value'] for d in mydata})
Run Code Online (Sandbox Code Playgroud)

会做的伎俩.

但表格没有标准化.

我可以创建一组dict然后我可以变成列表吗?有点像(这给我一个错误):

unique_data_with_id = list({{'id':d['id'], 'value':d['value']} for d in mydata})
Run Code Online (Sandbox Code Playgroud)

python dictionary set python-2.7

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

这个调用`device_show_int()`是一个Linux内核错误吗?

我首先提出这个问题:如何为平台驱动程序正确初始化属性组?

并得出结论,函数调用device_show_int()正在使用错误的函数原型.

代码问题首先struct dev_ext_attribute使用DEVICE_INT_ATTR()宏定义 结构.该[struct device_attribute][1]结构将show字段定义为指向函数的指针,该函数采用三(3)个参数:

struct device_attribute {
    struct attribute        attr;
    ssize_t (*show)(struct device *dev, struct device_attribute *attr,
                    char *buf);
    ssize_t (*store)(struct device *dev, struct device_attribute *attr,
                     const char *buf, size_t count);
};
Run Code Online (Sandbox Code Playgroud)

然而在我的调用堆栈中(请参考上面提到的问题),只使用drv_attr_show()中的两(2)个参数调用dereferenced函数:

if (drv_attr->show)
        ret = drv_attr->show(drv_priv->driver, buf);
Run Code Online (Sandbox Code Playgroud)

这看起来非常令人震惊,它是一个错误还是我以某种方式设法搞砸了内核构建?(ARM,内核3.12)

c linux linux-kernel

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

如何将 32 位整数编码为字节数组?

我需要通过串行连接发送一个 32 位整数,如下所示:0xc6bf6f34应该变成:b'\xc6\xbf\x6f\x34'

为此,我创建了这一点,但是,一如既往后这种编码,我想知道,如果它的pythonicism可以与标准libary东西加以改进:

def ltonlba(value):
    ''' ltonlba : Long to Network Long Byte Array '''
    from socket import htonl
    value = htonl(value)
    ba = b''
    for i in range(4):
            ba += chr((value) & 0xff)
            value >>= 8
    return ba
Run Code Online (Sandbox Code Playgroud)

python arrays string

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

如何在awk脚本中嵌入参数?

这是这两个问题的演变,在这里这里.

对于我自己的学习,我正在尝试使用以下代码完成两个(更多)事情:

  1. 我没有调用我的脚本,而是 # myscript -F "," file_to_process如何将' -F ","'部分折叠到脚本本身?
  2. 我如何初始化变量,以便我只分配一次值(忽略后续匹配? 你可以从脚本中看到我解析每条规则中的秒和微秒,我想保留第一个分配,sec所以我可以从printf()语句中的后续匹配中减去它.

    #!/usr/bin/awk -f
    /DIAG:/  {
        lbl = $3;
        sec = $5;
        usec = $6;
        /Test-S/ {
            stgt = $7;
            s1  = $30;
            s2  = $31;
        }
        /Test-A/ {
            atgt = $7;
            a = $8;
        }
        /Test-H/ {
            htgt = $7;
            h = $8;
        }
        /Test-C/ {
            ctgt = $7;
            c = $8;
        }
    }
    /WARN:/ {
        sec = $4;
        usec = …
    Run Code Online (Sandbox Code Playgroud)

scripting awk

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

如何在裸仓库中解除分支中最后几个提交?

这个问题联系起来处理从主分支重新提交的提交.我可以git reset --soft在回购中的分支上使用类似的命令,还是应该尝试理解git revert

最后,我想在裸仓库中通过两次或三次提交(不仅仅是最后一次)来回放两个分支.

git

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

如何在 Python CGI 脚本中访问 URL 的查询字符串?

我正在尝试访问 python 脚本中的查询字符串:在 bash 中,我将使用${QUERY_STRING}环境变量访问它。

我遇到过这样的事情:/sf/answers/193537571/,但是这个脚本,由 Apache2 运行:

#!/usr/bin/python

print self.request.query_string
Run Code Online (Sandbox Code Playgroud)

不打印任何内容,在命令行中,同样会产生此错误:

$ ./testing.py
Traceback (most recent call last):
  File "./testing.py", line 3, in <module>
    print self.request.query_string
NameError: name 'self' is not defined
Run Code Online (Sandbox Code Playgroud)

我如何阅读query_string

cgi apache2 python-2.7

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

为什么我不能拆分这个python列表?

我有一些代码来解析apache日志文件(start_search并且end_search是在apache日志中找到的格式的日期字符串):

with open("/var/log/apache2/access.log",'r') as log:
    from itertools import takewhile, dropwhile
    s_log = dropwhile(lambda L: start_search not in L, log)
    e_log = takewhile(lambda L: end_search not in L, s_log)
    query = [line for line in e_log if re.search(r'GET /(.+veggies|.+fruits)',line)]

    import csv
    query_dict = csv.DictReader(query,fieldnames=('ip','na-1','na-2','time', 'zone', 'url', 'refer', 'client'),quotechar='"',delimiter=" ")

    import re
    veggies = [ x for x in query_dict if re.search('veggies',x['url']) ]
    fruits = [ x for x in query_dict if re.search('fruits',x['url']) ]
Run Code Online (Sandbox Code Playgroud)

第二个列表生成器始终为空; 也就是说,如果我切换最后两行的顺序:

    fruits = …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

如何将命令输出分配给GNU make target规则中的变量?

在BASH提示符下,我可以执行以下操作:

~/repo$ HISTORY_LOG=$(git log $(get_old_version)..$(get_new_version)); [[ ! -z ${HISTOR_LOG} ]] && ( echo "Some header"; echo "${HISTORY_LOG}" )
Run Code Online (Sandbox Code Playgroud)

git log我实际拥有的显示简化版本在哪里.

在make文件中,我将以下命令作为目标的一部分:

$(OUTPUT): $(INPUT)
        ...
        echo "Some header" > $(LOG_FILE)
        git log $(shell get_old_version)..$(shell get_new_version) >> $(LOG_FILE)
Run Code Online (Sandbox Code Playgroud)

如何重写make目标以使其像bash命令一样?

如果我这样做,则会删除以下换行符:

$(OUTPUT): $(INPUT)
        ...
        HISTORY_LOG="$(shell git log $(shell get_old_version)..$(shell get_new_version))" ; \
           [ -z "$${HISTORY_LOG}" ] && \
             true || \ 
             (echo "Some header" ; echo "$${HISTORY_LOG}" )
Run Code Online (Sandbox Code Playgroud)

运行时看起来像:

~/repo $ make
commit 2b4d87b0e64d129028c1a7a0b46ccde2f42c5e93     Author: Jamie   <Jamie@mymail.com>   Date:   Mon Jun 25 18:46:27 …
Run Code Online (Sandbox Code Playgroud)

sh gnu-make

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