我尝试git-svn的动机是毫不费力的合并和分支.然后我注意到男人git-svn(1)说:
不建议在您计划提交的分支上运行git-merge或git-pull.Subversion不以任何合理或有用的方式表示合并; 因此使用Subversion的用户无法看到您所做的任何合并.此外,如果您从作为SVN分支镜像的git分支合并或拉出,则dcommit可能会提交到错误的分支.
这是否意味着我无法从svn/trunk(或分支)创建本地分支,破解,合并回svn/trunk,然后dcommit?我知道svn用户会看到同样的混乱,在svn pre 1.5.x中一直是合并,但是还有其他缺点吗?最后一句也让我担心.人们经常做这些事吗?
什么是clone命令吗?在svn中有没有相同的东西?
有什么区别
git remote add test git://github.com/user/test.git
Run Code Online (Sandbox Code Playgroud)
和
git clone git://github.com/user/test.git
Run Code Online (Sandbox Code Playgroud)
创建的repo的名称是否重要?
我正在使用Ruby(ruby 2.1.2p95 (2014-05-08) [x86_64-linux-gnu]在我的机器上,ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]在生产环境中)和Nori将XML文档(最初使用Nokogiri进行处理以进行一些验证)转换为Ruby Hash,但后来我发现Nori正在删除最深层XML元素的属性.
为此,我使用的代码类似于以下内容:
xml = Nokogiri::XML(File.open('file.xml')) { |config| config.strict.noblanks }
hash = Nori.new.parse xml.to_s
Run Code Online (Sandbox Code Playgroud)
除一种情况外,代码通常按预期工作.每当Nori解析XML文本时,它都会从叶元素(即没有子元素的元素)中删除元素属性.
例如,以下文档:
<?xml version="1.0"?>
<root>
<objects>
<object>
<fields>
<id>1</id>
<name>The name</name>
<description>A description</description>
</fields>
</object>
</objects>
</root>
Run Code Online (Sandbox Code Playgroud)
...被转换为预期的Hash(为简洁起见省略了一些输出):
irb(main):066:0> xml = Nokogiri::XML(txt) { |config| config.strict.noblanks }
irb(main):071:0> ap Nori.new.parse(xml.to_s), :indent => -2
{
"root" => {
"objects" => {
"object" => {
"fields" => {
"id" => "1",
"name" => "The name" …Run Code Online (Sandbox Code Playgroud) 我目前正在处理分层场景图中的节点,并且我难以相对于特定的转换空间(例如父节点)正确地转换/旋转节点.
如何在场景图中相对于其父节点正确平移/旋转节点?
考虑以下水分子图(没有连接线)用于场景节点的父/子结构,其中O xygen原子是父节点,2 H ydrogen原子是子节点.
如果您抓住父O xygen原子并翻译结构,您希望H ydrogen儿童跟随并保持与父母相同的相对位置.如果你抓住一个孩子H原子并翻译它,那么只有孩子会受到影响.这通常是它目前的工作方式.当O原子被翻译时,H原子会随着它自动移动,正如层次图所预期的那样.
然而,当翻译父母时,孩子们最终还会积累额外的翻译,这实际上会导致孩子们在同一个方向"翻译两次"并远离他们的父母而不是保持相同的相对距离.
如果您抓住父O节点并旋转它,您希望子节点H节点也旋转,但在轨道中,因为旋转正由父节点执行.这按预期工作.
但是,如果你抓住一个子H节点并告诉它相对于它的父节点旋转,我预计只有孩子会以同样的方式绕其父节点绕轨道运行,但这不会发生.相反,孩子在其当前位置以更快的速度(例如,相对于其自身局部空间旋转的两倍)在其自身轴上旋转.
我真的希望这个描述足够公平,但如果不是,请告诉我,我会根据需要澄清.
我使用4×4 列优先矩阵(即Matrix4)和列向量(即Vector3,Vector4).
下面不正确的逻辑是我最接近正确的行为.请注意,我选择使用Java的像语法,运算符重载,使数学更容易在这里找到.当我以为我已经把它想出来的时候,我尝试了不同的东西,但我真的没有.
translate(Vector3 tv /* translation vector */, TransformSpace relativeTo):
switch (relativeTo):
case LOCAL:
localTranslation = localTranslation * TranslationMatrix4(tv);
break;
case PARENT:
if parentNode != null:
localTranslation = parentNode.worldTranslation …Run Code Online (Sandbox Code Playgroud) 我的普通矩阵有些麻烦.
vs.glsl
#version 440
in vec3 vPosition;
in vec3 vNormal;
out vec4 eyeCordFs;
out vec4 eyeNormalFs;
uniform mat4 model;
uniform mat4 view;
uniform mat4 proj;
void main()
{
mat4 modelView = view * model;
mat4 normalMatrix = view * transpose(inverse(model));
vec4 eyeNorm = normalize(normalMatrix * vec4(vNormal, 0.0));
vec4 eyeCord= modelView * vec4(vPosition, 1.0);
eyeCordFs = eyeCord;
eyeNormalFs = eyeNorm;
gl_Position = proj * modelView * vec4( vPosition,1.0);
}
Run Code Online (Sandbox Code Playgroud)
fs.glsl
#version 440
in vec4 eyeCordFs;
in vec4 eyeNormalFs;
out vec3 outputColor; …Run Code Online (Sandbox Code Playgroud) 我正在阅读K&R的"The C Programming Language"一书.在"结构"一章中,在"表查找"(页144)的子主题下,我找到了此哈希生成函数
#define HASHSIZE 101
struct nlist {
struct nlist *next;
char *name;
char *defn;
}
static struct nlist *hashtab[HASHSIZE];
unsigned hash(char *s)
{
unsigned hashval;
for (hashval = 0; *s != '\0'; s++)
hashval = *s + 31 * hashval;
return hashval % HASHSIZE;
}
Run Code Online (Sandbox Code Playgroud)
我不明白的是这个功能实际上是做什么的.
我认为它为给定的字符串(char*s)生成一个唯一的地址(作为hashtab的索引).
但我认为两个不同的字符串可以被赋予相同的索引,因为(hashval%HASHSIZE)是给定的地址(203%101 = 405%101 = 1).
为什么HASHSIZE 101和hashval乘以31?为什么不是100或32?
只要旋转/轴与世界一致,我就会Camera附加一个SceneNode并且运动工作正常SceneNode.然而,当物体在旋转不同的方向,以"看",并告知"前进"它并没有沿着新的"前进"方向移动.相反,它继续沿着应用旋转之前面向的方向移动.
我有一个场景图来管理3D场景.图形是一个SceneNode对象树,它们知道它们相对于父元素和世界的变换.
根据TL; DR; 片段,假设你有一个cameraNode零旋转(例如朝北),然后cameraNode围绕+ Y"向上"轴向左旋转90度,即向西看.到目前为止事情还可以.如果你现在尝试移动cameraNode现在向西的"向前",那么cameraNode移动就好像"向前"仍然面向北方.
简而言之,它就像从未旋转过一样.
下面的代码显示了我最近尝试过的内容以及我(当前)最佳猜测,即缩小最可能与问题相关的区域.
SceneNode成员该SceneNode实施具有以下字段(仅是有关这个问题显示):
class GenericSceneNode implements SceneNode {
// this node's parent; always null for the root scene node in the graph
private SceneNode parentNode;
// transforms are relative to a parent scene node, if any
private Vector3 relativePosition = Vector3f.createZeroVector();
private Matrix3 relativeRotation …Run Code Online (Sandbox Code Playgroud) 我正在使用Java 8(特别是OpenJDK 8)进行项目,我需要从JPG文件中读取图像.一开始搜索到了一些类似的问题(例如,将字节数组读入没有ImageIO的缓冲图像,是否有100%的Java替代ImageIO来读取JPEG文件?),但我的问题不同,那里的解决方案不符合我的要求要求.
事实证明,JPEGImageReader班级仍然缺失.(请参阅openjdk-8:libjavajpeg.so中缺少JPEGImageReader函数)虽然该错误报告是针对Debian的,但我使用的是Kubuntu 14.10,它也受到了影响.
根据该报告的最后一条消息,此时似乎没有人正在处理这个问题......
重现此错误的代码段是:
// ...
BufferedImage img = null;
try {
img = ImageIO.read(new File(filename));
} catch (IOException e) {
throw new RuntimeException(e);
}
// ...
Run Code Online (Sandbox Code Playgroud)
该文件的路径是有效的,如果我使用Java 1.7,这将正常工作,但更改为1.8会导致以下激活ImageIO.read:
Caught UnsatisfiedLinkError: com.sun.imageio.plugins.jpeg.JPEGImageReader.initReaderIDs(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;)
Run Code Online (Sandbox Code Playgroud)
我想帮助解决这个问题,同时避免:
工作代码片段表示赞赏.
编辑1:在列表中添加了第4点.
EDIT-2:重新编写主要部分的一部分并添加了另一个参考.
在golang颜色包中,有一种方法可以从RGBA对象中获取r,g,b,一个值:
func (c RGBA) RGBA() (r, g, b, a uint32) {
r = uint32(c.R)
r |= r << 8
g = uint32(c.G)
g |= g << 8
b = uint32(c.B)
b |= b << 8
a = uint32(c.A)
a |= a << 8
return
}
Run Code Online (Sandbox Code Playgroud)
如果我要实现这个简单的函数,我会写这个
func (c RGBA) RGBA() (r, g, b, a uint32) {
r = uint32(c.R)
g = uint32(c.G)
b = uint32(c.B)
a = uint32(c.A)
return
}
Run Code Online (Sandbox Code Playgroud)
是什么原因r |= r << 8使用?
我有以下测试用例无法从以下位置检索值Map:
package tests;
import java.util.HashMap;
import java.util.Map;
public class ClassTest {
interface A {}
interface B extends A {}
interface C extends A {}
class D implements B {}
class E implements C {}
public ClassTest() {
Map<Class<? extends A>, A> map = new HashMap<>();
A d = new D();
A e = new E();
map.put(d.getClass(), d);
map.put(e.getClass(), e);
System.out.println(B.class.getSimpleName() + ": " + map.get(B.class));
System.out.println(C.class.getSimpleName() + ": " + map.get(C.class));
}
public static void main(String[] args) { …Run Code Online (Sandbox Code Playgroud)