我正在尝试在Pharo/PetitParser中实施EPD的BNF.
digit18 := $1 asParser / $2 asParser / $3 asParser / $4 asParser / $5 asParser / $6 asParser / $7 asParser / $8 asParser.
piecePromotion := $N asParser / $B asParser / $R asParser / $Q asParser.
promotion := ($= asParser) , piecePromotion.
fileLetter := ($a asParser / $b asParser / $c asParser / $d asParser / $e asParser / $f asParser / $g asParser / $h asParser).
targetSquare := fileLetter , digit18.
disambiguation …Run Code Online (Sandbox Code Playgroud) 假设我想看看如何在Dictionary类中实现"复制".目前我使用系统浏览器并手动遍历继承层次结构(自下而上),直到找到实现给定消息的类.是否有工作空间的单行,这将在正确的位置打开系统浏览器?
我有一个Linux x86-32 GAS汇编程序终止如下:
movl $1, %eax
movl $0, %ebx # argument for _exit
int $0x80
Run Code Online (Sandbox Code Playgroud)
当我像这样退出时,程序正常运行,但如果我尝试读取stdout输出,我什么也得不到(使用ie less或wc).
我尝试编译一个最小的C程序并比较strace输出.我发现的唯一区别是,GCC使得C程序(int main() { printf("donkey\n"); })隐含地退出exit_group(0)了strace输出.
我尝试修改我的ASM程序以退出call exit而不是原始系统调用.stdout现在可以正常读取.
测试用例
.data
douout: .string "monkey\n"
.text
.globl main
main:
pushl $douout
call printf
# Exit
movl $1, %eax
movl $0, %ebx
int $0x80
Run Code Online (Sandbox Code Playgroud)
编译并运行:
$ yasm -g dwarf2 -f elf -p gas t.asm && gcc -g -melf_i386 -o t t.o && ./t | wc -c
0
Run Code Online (Sandbox Code Playgroud)
预期:
7
Run Code Online (Sandbox Code Playgroud)
编辑:
我打过电话都 …
我试图将此CORS过滤器移植到JAX-RS 2.
不过,我看不出如何让响应对象(如旧代码)从ContainerResponseContext我得到的重载方法传递ContainerResponseFilter.
如果有一种更优雅的方式来使用JAX-RS 2进行CORS,那当然是首选.提前致谢.
我正在构建我使用以下配置的flex-2.5.39:
./configure --enable-static LDFLAGS=-static CC=/x86_64-linux-musl/bin/x86_64-linux-musl-gcc
Run Code Online (Sandbox Code Playgroud)
但最后,libtool并没有静态链接.事实上,它只是丢弃旗帜:
[ root@836843e09b55:/flex-2.5.39 ]$ make flex
/bin/bash ./libtool --tag=CC --mode=link /x86_64-linux-musl/bin/x86_64-linux-musl-gcc -g -O2 -static -o flex ccl.o dfa.o ecs.o scanflags.o gen.o main.o misc.o nfa.o parse.o scan.o skel.o sym.o tblcmp.o yylex.o options.o scanopt.o buf.o tables.o tables_shared.o filter.o regex.o lib/libcompat.la -lm
libtool: link: /x86_64-linux-musl/bin/x86_64-linux-musl-gcc -g -O2 -o flex ccl.o dfa.o ecs.o scanflags.o gen.o main.o misc.o nfa.o parse.o scan.o skel.o sym.o tblcmp.o yylex.o options.o scanopt.o buf.o tables.o tables_shared.o filter.o regex.o lib/.libs/libcompat.a -lm
[ root@836843e09b55:/flex-2.5.39 ]$
Run Code Online (Sandbox Code Playgroud)
如何让libtool接受标志并传递它?
我在 Ubuntu 17.10 上。我安装了 NVIDIA 的 CUDA 9.1 SDK。
这是我尝试过的:
~/GrinGoldMiner/src/Cudacka$ clang++-5.0 -Wl,--cuda-path=/usr/local/cuda-9.1 kernel.cu
clang: error: cannot find libdevice for sm_20. Provide path to different CUDA installation via --cuda-path, or pass -nocudalib to build without linking with libdevice.
clang: error: cannot find CUDA installation. Provide its path via --cuda-path, or pass -nocudainc to build without CUDA includes.
clang: error: cannot find CUDA installation. Provide its path via --cuda-path, or pass -nocudainc to build without CUDA includes.
Run Code Online (Sandbox Code Playgroud)
显然这是行不通的。似乎链接器标志没有通过。我怎样才能正确地传递它们?
我正在尝试在以下部分中实现该功能:Per-commitment Secret Requirements。
generate_from_seed(seed, I):
P = seed
for B in 47 down to 0:
if B set in I:
flip(B) in P
P = SHA256(P)
return P
Run Code Online (Sandbox Code Playgroud)
其中“flip(B)”替换值 P 中的第 B 个最低有效位。
根据这个定义,如果我们有seed=0x0101010101010101010101010101010101010101010101010101010101010101和I=1,我希望结果是
>>> from hashlib import sha256
>>> from binascii import hexlify
>>> hexlify(sha256(int(("00000001"*31)+"00000000",2).to_bytes(length=32,byteorder="big")).digest())
b'79356295f56e69998b9140cb77c63d3d80c93874259793a38d1dbd8678809ca9'
Run Code Online (Sandbox Code Playgroud)
因为flip函数执行一次,将第 0 个 LSB(最右边的位)设置为 0。
相反,结果是(测试向量):
>>> hexlify(sha256(int("00000000"+("00000001"*31),2).to_bytes(length=32,byteorder="big")).digest())
b'915c75942a26bb3a433a8ce2cb0427c29ec6c1775cfc78328b57f6ba7bfeaa9c'
Run Code Online (Sandbox Code Playgroud)
查看一个实现,很明显人们正在使用:
output[lp / 8] ^= (1 << (lp % 8));
Run Code Online (Sandbox Code Playgroud)
这在我看来是错误的,因为它正在改变字节的 LSB,如果 …
pseudocode endianness bitwise-operators bitcoin lightning-network
我正在尝试在线平面交叉算法上实现.根据维基百科,我需要飞机上的三个非共线点来做到这一点.
因此,我尝试在C++中实现此算法.有些东西肯定是错的,因为没有任何意义我可以选择任何x和y坐标,它们都适合飞机.如果平面是垂直的并且沿着x轴怎么办?然后y = 1的任何点都不在平面内.
我意识到这个问题已经在StackOverflow上发布了很多,我看到很多解决方案,其中平面由3个点定义.但我只有一个正常和一个位置.在我整理非共线点检测器之前,我无法测试我的线平面交点算法.
现在的问题是,我除了normal.z,而且当normal.z为0时,这显然不起作用.
我正在测试这个平面:Plane*p = new Plane(Color(),Vec3d(0.0,0.0,0.0),Vec3d(0.0,1.0,0.0)); //第二个参数:position,第三个参数:normal
当前代码给出了错误答案:
{0 , 0 , 0} // alright, this is the original
{12.8377 , 17.2728 , -inf} // obviously this is not a non-colinear point on the given plane
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
std::vector<Vec3d>* Plane::getThreeNonColinearPoints() {
std::vector<Vec3d>* v = new std::vector<Vec3d>();
v->push_back(Vec3d(position.x, position.y, position.z)); // original position can serve as one of the three non-colinear points.
srandom(time(NULL));
double rx, ry, rz, start;
rx = Plane::fRand(10.0, 20.0);
ry = …Run Code Online (Sandbox Code Playgroud) 我有以下事实和规则:
% frequents(D,P) % D=drinker, P=pub
% serves(P,B) % B=beer
% likes(D,B)
frequents(janus, godthaab).
frequents(janus, goldenekrone).
frequents(yanai, goldenekrone).
frequents(dimi, schlosskeller).
serves(godthaab, tuborg).
serves(godthaab, carlsberg).
serves(goldenekrone, pfungstaedter).
serves(schlosskeller, fix).
likes(janus, tuborg).
likes(janus, carlsberg).
count_good_beers_for_at(D,P,F) :- group_by((frequents(D,P), serves(P,B), likes(D,B)),[D,P],(F = count)).
possible_beers_served_for_at(D,P,B) :- lj(serves(P,B), frequents(D,R), P=R).
Run Code Online (Sandbox Code Playgroud)
现在我想构建一个规则,当每个酒吧的“饮酒者”“频率”大于 0 的可用“喜欢”啤酒的数量时,该规则应该像一个返回“真”的谓词一样工作。
当规则不返回元组时,我会认为谓词为真。如果谓词为假,我打算让它返回没有单一“喜欢”啤酒的酒吧。
如您所见,我已经制定了一个规则,可以计算特定酒吧中特定饮酒者的优质啤酒。我也有一个规则,给我提供啤酒的数量。
DES> count_good_beers_for_at(A,B,C)
{
count_good_beers_for_at(janus,godthaab,2)
}
Info: 1 tuple computed.
Run Code Online (Sandbox Code Playgroud)
如您所见,柜台没有返回经常光顾的酒吧,但有 0 个喜欢的啤酒。我计划通过使用左外连接来解决这个问题。
DES> is_happy_at(D,P,Z) :- lj(serves(P,B), count_good_beers_for_at(D,Y,Z), (Y=P))
Info: Processing:
is_happy_at(D,P,Z) :-
lj(serves(P,B),count_good_beers_for_at(D,Y,Z),Y = P).
{
is_happy_at(janus,godthaab,2),
is_happy_at(null,goldenekrone,null),
is_happy_at(null,schlosskeller,null)
}
Info: …Run Code Online (Sandbox Code Playgroud) 假设我有以下代码
module A where
x :: Int
x = 5
module Main where
import A
import Lib
main :: IO ()
main = print (x + y)
Run Code Online (Sandbox Code Playgroud)
以及在外部库中
module Lib where
y :: Int
y = 10
Run Code Online (Sandbox Code Playgroud)
一切都很好,该库的版本为 v0.1.0.0,我将其包含在边界中mylib == 0.1.*
现在,该名称x :: Int已添加到 MyLib 的导出列表中,并且新版本已发布。它的版本是 v0.1.1.0,如PVP 流程图所示:
在这种情况下,只有[...]函数[...]被添加到库的导出接口中。不会导致破损 [...]
这个说法如何正确呢?当然我的代码不再编译。因为它不知道x从哪里拉。