node.js API文档在生成子进程时使用额外的stdio(fd = 4):
// Open an extra fd=4, to interact with programs present a
// startd-style interface.
spawn('prg', [], { stdio: ['pipe', null, null, null, 'pipe'] });
Run Code Online (Sandbox Code Playgroud)
那个stdio可以通过父进程使用ChildProcess.stdio[fd].
子进程如何访问这些额外的stdios?让我们在文件描述符3(fd = 3)上使用流而不是管道.
/* parent process */
// open file for read/write
var mStream = fs.openSync('./shared-stream', 'r+');
// spawn child process with stream object as fd=3
spawn('node', ['/path/to/child.js'], {stdio: [0, 1, 2, mStream] });
Run Code Online (Sandbox Code Playgroud) 我是d3.js的新手,不知道要使用哪种d3功能.
我需要围绕原点(圆圈)同心放置一组元素.
svg.selectAll('circle').each(function() {
d3.select(this)
.attr('cx', r * Math.cos(theta))
.attr('cy', r * Math.sin(theta));
theta += thetaInc;
});
Run Code Online (Sandbox Code Playgroud)
所以不是像上面的代码那样单调乏味,这样做的d3方法是什么?
想象一下,在一个球体中包含一组混合的3D物体,您的目标是创建整个场景的圆柱形等面积投影.使用OpenGL,你可能想从在后处理着色器旋转的摄像机绕中心轴线,然后校正径向失真缝合在一起的多个渲染目标纹理(4是精确的),因为上投影的平面上,而不是一个圆筒.理想情况下,你能够通过球的整个体积扫相机的平截头体,没有任何重叠,并且使得每个渲染填充矩形纹理的整个像素的空间(如圆柱形突起做).
因此,为了清楚起见,这里是球形场景(其中包含对象)的可视化,以及围绕Y轴跨越PI/2的相机平截头体.

请注意,"远"平面缩小为一条直线,该直线与球体的Y轴共线.在平截头体的外表面上形成"X"的白色相交线表示相机的原点,或者在眼睛空间中的(0,0,0).该外表面也是"近"平面,距离相机0 Z单位.
这个想法是,球体的中心轴项目光线向外,使得所有的光线行进平行于Y平面(即,具有正常的平面(0,1,0)),并且每个射线从球体发出的原点相交的球体的表面在垂直角度.
天真地,我认为OpenGL投影矩阵可以做到这一点 - 据我所知,我在这里的预测是线性的,因此可能吗?但是,我似乎无法正确解决方程式:
让我们s成为球体的半径.
因此,在眼睛空间,从相机的起源:在OpenGL投影矩阵中:
- 近平面的左右边缘分别位于X轴
-s和sX轴的单位- 近平面的顶部和底部边缘分别位于Y轴
s和-sY轴的单位- 远平面的左右边缘共同位于
-s沿Z轴的单位(请记住,在眼睛空间中,Z值在相机前面是负的)
-w_c < x_c < w_cx_n = x_c / w_c
由于左右平截头体平面汇聚在相机前面,我解决了一个方程式,将我的输入映射到它们的预期输出,并得出结论:这意味着
x_n = x_e / (z_e + s)x_c = x_e和w_c = z_e + s.这在我的投影矩阵上填充了两行:
---------- 这就是我被卡住的地方 ----------
很明显,y_n它不依赖于x_e或根本不存在z_e,它的等式应该是:这类似于正交投影.然而,这引入了与
y_n = y_e / sw_c我已经在 …
我有几个类都延伸相同abstract class Encoder.抽象类要求其子级覆盖接受泛型类型参数的抽象方法(Subscriber<T>在此示例中).覆盖此方法的每个子类对此参数使用不同的类型.
abstract class Encoder<T> {
protected String mSomeArg;
public Encoder(String someArg) {
mSomeArg = someArg+" super";
}
public abstract void start(Subscriber<T> subscriber);
}
class ExampleEncoder extends Encoder {
public ExampleEncoder(String arg) {
super(arg); // how to make super class get generic type?
// eg: new Encoder<Message>(arg)
}
@Override
public void start(Subscriber<Message> subscriber) {
Message msg = new Message("hi "+mSomeArg);
subscriber.event(msg);
}
}
Run Code Online (Sandbox Code Playgroud)
示例用例:
Encoder sample = new ExampleEncoder();
sample.start(new Subscriber<Message>() {
@Override
public void …Run Code Online (Sandbox Code Playgroud) 在将列表转发到其他命令之前,通过某种转换(例如连接每个字符串)本质上“映射”bash 参数列表的最优雅的方法是什么?我想到了使用xargs,但我似乎无法概念化如何做到这一点。
function do_something {
# hypothetically
for arg in "$@"; do
arg="$arg.txt"
done
command "$@"
}
do_something file1 file2 file3
Run Code Online (Sandbox Code Playgroud)
这样的结果将是调用command file1.txt file2.txt file3.txt.
请看下面的图表:
:Foo :p _:b0 ;
:p _:b1 ;
:p _:b2 .
_:b0 :p1 :apple ;
:p2 :banana .
_:b1 :p3 :cantaloupe ;
:p4 :date ;
:p5 :elderberry .
_:b2 :p6 :fig .
Run Code Online (Sandbox Code Playgroud)
注意: :Foo是具有相同谓词的三个三元组的主语:p.每个三元组都有一个空白节点作为其对象.
是否可以编写一个SPARQL查询来选择仅_:b1作为主题的所有三元组?
编辑:在提出答案之前,请理解我正在寻找一个聪明的解决方案来解决我在SPARQL中的问题.假设三重存储是固定的(即:无法完成任何更改数据).我在上面展示的图表是人为的; 每个空白节点没有相同数量的p/o三元组.但是如果他们每个都有一个三元组,那么以下SPARQL查询可能就足够了:
select ?b1 where {
:Foo :p ?bn .
?bn ?p ?o
} limit 1 offset 1
Run Code Online (Sandbox Code Playgroud)
显然,这里的关注点是每次返回相同的空白节点.我知道这是一套固有的无序,因此无法保证可重复的结果排序; 但老实说......对于一个固定的三重商店,我真诚地怀疑DFA会在查询之间返回不同的空白节点顺序.任何聪明的想法?
假设我有一个文件格式,我想将数据库备份保存为这样的:
echo "~/backups/$(date +'%Y-%m-%d_%H-%M-%S').sql"
Run Code Online (Sandbox Code Playgroud)
现在如何将此结果指定为 shell 中输出的文件名?
mysqldump my_db > ....?
Run Code Online (Sandbox Code Playgroud)
顺便说一句: shell 将嵌套的 echo 命令的结果解释为可执行命令/文件。所以 看起来:
mysqldump my_db > $(echo "something")
Run Code Online (Sandbox Code Playgroud)
不起作用。相反,shell 会查找一个名为的文件something并尝试执行它?
根据规范,使用"?"之间绝对没有区别.和"$"变量前缀字符,即使在混合和匹配时也是如此.例如,这是完全合法的:
SELECT $title
WHERE { <book1> dc:title ?title }
Run Code Online (Sandbox Code Playgroud)
该SPARQL文档,即使有这样的补充:
使用"?"标记查询变量 或"$"; "?" 或"$"不是变量名称的一部分.在查询中,$ abc和?abc标识相同的变量
有人知道为什么他们创建了两个冗余的方法来为变量添加前缀吗?直到今天我还不知道"$",同时略读语法的生产规则.使用"?" 现在是如此常见,似乎"$"只是一个字符的词汇浪费.
拿这两个命名图:
# graph :yesterday
:Foo
:likes :Bar ;
:likes :Qux .
# graph :today
:Foo
:likes :Bar ;
:likes :Baz .
Run Code Online (Sandbox Code Playgroud)
现在说你想知道图表中:yesterday是否存在图表中的任何三元组:today.你怎么会ASK这个查询?
ASK
FROM NAMED :yesterday
FROM NAMED :today
{
GRAPH :yesterday {
?s ?p ?o .
...
}
}
Run Code Online (Sandbox Code Playgroud) sparql ×3
bash ×2
blank-nodes ×1
d3.js ×1
generics ×1
java ×1
javascript ×1
linked-data ×1
linux ×1
named-graphs ×1
node.js ×1
projection ×1
semantic-web ×1
shell ×1
triples ×1
webgl ×1
xargs ×1