我想知道是否有办法提高计算斜率的准确性.(这想出了几个月前在这里).
似乎通过改变:
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)
可能是一种进步.建议?
编辑:我追求的是精确度,而不是效率.
我不知道如何在不使用猫的情况下完成以下工作.我并不担心分叉过程或任何事情,它让我感到不安:
$ printf "<format specification string>" $(cat source-file.txt)
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
这段代码在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
)并将errno
set设置为零(0).我遇到什么情况?除非出现错误,否则我真的想要读取块.
我有一个字典列表,我正在寻找其中一个键的唯一值列表.
这就是我想出来的,但不禁想知道它的效率,时间和/或记忆是否明智:
list(set([d['key'] for d in my_list]))
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
我正在使用非规范化表,这在提取唯一信息时提供了一些挑战.如果表格被标准化:
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) 我首先提出这个问题:如何为平台驱动程序正确初始化属性组?
并得出结论,函数调用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)
我需要通过串行连接发送一个 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) 对于我自己的学习,我正在尝试使用以下代码完成两个(更多)事情:
# myscript -F "," file_to_process
如何将' -F ","
'部分折叠到脚本本身?我如何初始化变量,以便我只分配一次值(忽略后续匹配? 你可以从脚本中看到我解析每条规则中的秒和微秒,我想保留第一个分配,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)这个问题联系起来处理从主分支重新提交的提交.我可以git reset --soft
在回购中的分支上使用类似的命令,还是应该尝试理解git revert
?
最后,我想在裸仓库中通过两次或三次提交(不仅仅是最后一次)来回放两个分支.
我正在尝试访问 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?
我有一些代码来解析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) 在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)