小编Bla*_*lia的帖子

node.js进程的额外stdio流

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)

node.js node.js-stream

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

d3.js使用极坐标绘制元素

我是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方法是什么?

javascript d3.js

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

伪圆柱投影的投影矩阵

想象一下,在一个球体中包含一组混合的3D物体,您的目标是创建整个场景的圆柱形等面积投影.使用OpenGL,你可能想从在后处理着色器旋转的摄像机绕中心轴线,然后校正径向失真缝合在一起的多个渲染目标纹理(4是精确的),因为上投影的平面上,而不是一个圆筒.理想情况下,你能够通过球的整个体积扫相机的平截头体,没有任何重叠,并且使得每个渲染填充矩形纹理的整个像素的空间(如圆柱形突起做).

因此,为了清楚起见,这里是球形场景(其中包含对象)的可视化,以及围绕Y轴跨越PI/2的相机平截头体. 圆柱投影相机视锥的可视化

请注意,"远"平面缩小为一条直线,该直线与球体的Y轴共线.在平截头体的外表面上形成"X"的白色相交线表示相机的原点,或者在眼睛空间中的(0,0,0).该外表面也是"近"平面,距离相机0 Z单位.

这个想法是,球体的中心轴项目光线向外,使得所有的光线行进平行于Y平面(即,具有正常的平面(0,1,0)),并且每个射线从球体发出的原点相交的球体的表面在垂直角度.

我的问题:

天真地,我认为OpenGL投影矩阵可以做到这一点 - 据我所知,我在这里的预测是线性的,因此可能吗?但是,我似乎无法正确解决方程式:

让我们s成为球体的半径.

因此,在眼睛空间,从相机的起源:
  • 近平面的左右边缘分别位于X轴-ssX轴的单位
  • 近平面的顶部和底部边缘分别位于Y轴s-sY轴的单位
  • 远平面的左右边缘共同位于-s沿Z轴的单位(请记住,在眼睛空间中,Z值在相机前面是负的)
在OpenGL投影矩阵中:
  • -w_c < x_c < w_c
  • x_n = x_c / w_c

由于左右平截头体平面汇聚在相机前面,我解决了一个方程式,将我的输入映射到它们的预期输出,并得出结论:
  • x_n = x_e / (z_e + s)
这意味着x_c = x_ew_c = z_e + s.这在我的投影矩阵上填充了两行:

是啊


---------- 这就是我被卡住的地方 ----------

很明显,y_n它不依赖于x_e或根本不存在z_e,它的等式应该是:
  • y_n = y_e / s
这类似于正交投影.然而,这引入了与w_c我已经在 …

projection webgl projection-matrix

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

使用泛型将super()调用到父类

我有几个类都延伸相同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)

java generics

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

bash:“映射”函数参数?

在将列表转发到其他命令之前,通过某种转换(例如连接每个字符串)本质上“映射”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.

bash xargs

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

SPARQL:选择第n个空白节点

请看下面的图表:

: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会在查询之间返回不同的空白节点顺序.任何聪明的想法?

sparql blank-nodes

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

将输出重定向到命令结果给出的文件名

假设我有一个文件格式,我想将数据库备份保存为这样的:

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并尝试执行它?

linux bash shell

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

SPARQL选择变量前缀"?" 和"$"

根据规范,使用"?"之间绝对没有区别.和"$"变量前缀字符,即使在混合和匹配时也是如此.例如,这是完全合法的:

SELECT  $title
WHERE   { <book1>  dc:title  ?title }
Run Code Online (Sandbox Code Playgroud)

SPARQL文档,即使有这样的补充:

使用"?"标记查询变量 或"$"; "?" 或"$"不是变量名称的一部分.在查询中,$ abc和?abc标识相同的变量

有人知道为什么他们创建了两个冗余的方法来为变量添加前缀吗?直到今天我还不知道"$",同时略读语法的生产规则.使用"?" 现在是如此常见,似乎"$"只是一个字符的词汇浪费.

sparql

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

SPARQL代数:如果任何三元组不存在,则从命名图形中获取棘手的ASK

拿这两个命名图:

# 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)

semantic-web sparql triples linked-data named-graphs

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