小编Tom*_*tin的帖子

在OpenGL ES(Android)中使用带纹理的索引缓冲区有什么意义吗?

我正在使用OpenGL ES来显示从Blender导出的一些对象.Blender提供顶点列表,面部索引列表和2d纹理坐标列表.在Blender中,我通常相信OpenGL,纹理坐标映射到索引数组中描述的每个顶点.

我想我有两个问题:

  1. 我理解(参见"应用纹理"部分),在OpenGL ES中,纹理坐标仅映射到顶点缓冲区,而不是索引缓冲区.是这种情况还是有一种方法将纹理co-ords绑定到索引缓冲区?

  2. 如果上述情况属实,那么使用索引缓冲区有什么好处吗?毕竟要正确映射纹理,需要使用索引缓冲区保存的所有冗余写出顶点缓冲区.是否仍然可以获得性能提升,或者纹理数据的索引缓冲区是多余的?

java 3d android textures opengl-es

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

为什么我的Predis Client的PHPUnit模拟不符合我的期望?

我试图在PHPUnit测试中模拟Predis客户端.当我调用方法时,我试图模拟出来,在测试结束时,PHPUnit告诉我没有满足期望.

这是一个重现我的问题的代码示例:

class MockRedisTest extends \PHPUnit_Framework_TestCase {
private $mockRedis;

public function testMockRedis() {

    $mockRedis =  $this->getMock('Predis\\Client');

    $mockRedis->expects(  $this->once())
      ->method("exists")
      ->with($this->equalTo("query-key"))
      ->will($this->returnValue(true));

    $mockRedis->exists("query-key");
}
Run Code Online (Sandbox Code Playgroud)

}

并且PHPUnit认为该方法未被调用:

1)MockRedisTest :: testMockRedis方法名称的期望失败等于1次调用时.预计方法被调用1次,实际上被称为0次.

为什么?是因为Predis客户端似乎使用__call来响应与redis命令匹配的方法调用吗?

更新:我得到的印象是它与__call方法有关.将代码更改为此工作原理:

public function testMockRedis() {

    $mockRedis =  $this->getMock('Predis\\Client');

    $mockRedis->expects(  $this->once())
      ->method("__call")
      ->with("exists", $this->equalTo(array("query-key")))
      ->will($this->returnValue(true));

    $mockRedis->exists("query-key");
}
Run Code Online (Sandbox Code Playgroud)

不确定我对此感到满意.有没有更好的方法来模拟使用__call代理方法的类?

php phpunit mocking redis predis

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

列表排名项目的最有效的相似性度量

我们试图找到项目(以及后来的用户)之间的相似性,其中项目在用户的各种列表中排名(想想Hi Fidelity中的 Rob,Barry和Dick ).给定列表中较低的索引意味着较高的评级.

我想一个标准的方法是使用Pearson相关性,然后以某种方式反转索引.

然而,正如我所理解的那样,Pearson相关性的目的是弥补用户之间的差异,这些用户通常评价较高或较低但具有相似的相对评级.

在我看来,如果列表是连续的(虽然任意长度),这个位置所暗示的评级不会以这种方式倾斜.

我想在这种情况下,基于欧几里德的相似性就足够了.是这样的吗?使用Pearson相关性会产生负面影响并找到不合适的相关性吗?什么相似性度量可能最适合这些数据?

此外,虽然我们希望列表中的位置生效,但我们不希望惩罚相距太远的排名.两个用户同时列出具有非常不同排名的列表中的项目仍应被视为相似.

recommendation-engine collaborative-filtering mahout

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

跟踪JFlex中的状态

我正在编写一个自定义的flex文件来生成用于JSyntaxpane的词法分析器。

我需要使用lex的自定义语言具有不同的状态,这些状态可以以某种堆栈形式相互嵌入。

在IE中,您可能正在编写一个包含单引号的表达式,然后使用特殊标记eval()将另一个表达式嵌入该字符串中。但是您也可以将表达式嵌入双引号字符串中。

例如:

someExpressionFunction('a single-quoted string with an eval(expression) embedded in it', "a double-quoted string with an eval(expression) embedded in it")
Run Code Online (Sandbox Code Playgroud)

这是一种简化,状态要多于此,但是假设我需要为DOUBLE_STRING和SINGLE_STRING使用不同的状态,它足以描述我的情况。

确保关闭eval表达式后返回正确状态的最佳方法是什么(即如果我使用双引号,则返回DOUBLE_STRING;如果我使用单引号,则返回SINGLE_STRING)

我想出的解决方案是可行的,它使用堆栈和一些自定义方法来跟踪状态,以代替使用yybegin来启动不同的状态。

private Stack<Integer> stack = new Stack<Integer>();

public void yypushState(int newState) {
  stack.push(yystate());
  yybegin(newState);
}

public void yypopState() {
  yybegin(stack.pop());
}
Run Code Online (Sandbox Code Playgroud)

这是实现此目标的最佳方法吗?我可以利用JFlex的更简单的内置功能还是应该了解的最佳实践?

java parsing jsyntaxpane jflex

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

Mahout Euclidean实施中的NaN距离

我们使用EuclideanDistanceSimilarity类来计算使用Hadoop的一堆项目的相似性.

不幸的是,尽管与物品非常相似,但是有些物品得到零或很少,导致类似的物品.

我想我已经在EuclideanDistanceSimilarity类中跟踪到了这一行:

double euclideanDistance = Math.sqrt(normA - 2 * dots + normB);

传递给sqrt的值有时是负数,在这种情况下返回NaN.我想也许在那里应该有一个Math.abs,但是我的数学不够强大,无法理解欧几里德计算是如何重新排列的,所以不确定效果会是什么.

任何人都可以更好地解释数学并确认是否

double euclideanDistance = Math.sqrt(Math.abs(normA - 2 * dots + normB));

是一个可接受的修复?

hadoop euclidean-distance mahout

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

尝试删除Facebook测试用户时,为什么会出现"未实施的方法"错误

我正在使用Apache提供的Java DefaultHttpClient来发布删除我们通过此处描述的/ app_id/accounts/test-users端点注册的测试用户http://developers.facebook.com/docs/test_users/

返回的响应是以下HTML:

<HTML><HEAD>
<TITLE>400 Bad Request</TITLE>
</HEAD><BODY>
<H1>Method Not Implemented</H1>
Invalid method in request<P>
</BODY></HTML>
Run Code Online (Sandbox Code Playgroud)

使用DefaultHttpClient POST和GET到测试用户api工作正常,它只是发送问题的DELETE.同时我也可以使用Python脚本,通过curl和使用Firefox REST Client扩展来实现DELETE(对于相同的用户和访问令牌).

有没有人知道错误意味着什么,或者在使用Facebook Graph API使用DefaultHttpClient时是否存在任何已知问题/陷阱?

更新:我已经尝试使用tcpdump分析不同的请求,正如Peter在评论中所建议的那样:sudo tcpdump -i eth2

但我所看到的只是数据包在我和Facebook之间来回传递,这似乎是诊断问题的一种低级方法.

java https facebook

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