更新:我试图简化这里的真实示例以清楚地解释我的选项,但这并没有真正起作用.到目前为止,下面的链接示例过于笼统,甚至无法使用这个简单的示例.
我能够一直用SVN做这种事情并且非常熟练.现在我发现在Git中非常困难,并开始相信我的历史基本上太过密集,无法将它拉开.
真实世界的问题:我已经移动并重命名了十几个文件.他们的历史与数百个其他文件的历史混杂在一起,我想完全删除历史记录.
在SVN中,我可以使用dump/include-filter/exclude-filter/load序列来修剪存储库,很少我可能需要在加载之前在转储文件中手动重命名路径.
像这样的东西,我会做的:
SET Includes=trunk/src/Foo.aaa trunk/src/Foo.bbb trunk/src/Foo trunk/src/Bar
SET Excludes=trunk/src/Bar/Blah.aaa trunk/src/Foo/Blah.aaa
svnadmin dump FooSrc > Full.dump 2> Dump.log
svndumpfilter include %Includes% --skip-missing-merge-sources --renumber-revs --drop-empty-revs < Full.dump > Filter_1.dump 2> Filter_1.log
svndumpfilter exclude %Excludes% --skip-missing-merge-sources --renumber-revs --drop-empty-revs < Filter_1.dump > Filter_2.dump 2> Filter_2.log
svnadmin create FooDest
svnadmin load FooDest --ignore-uuid < Filter_2.dump > Load.log 2> Load_Errors.log
Run Code Online (Sandbox Code Playgroud)
有没有人有一个很好的例子,这不仅仅是一个简单的删除单个文件或导出单个子目录?
我可以定义文件集的最简单方法是使用7个目录路径的列表.这些目录中的所有内容都需要保存,外部的所有内容都需要从历史记录中删除.
简化问题:
我有一个Git存储库,它有一些我想要提取到自己的存储库中的文件.问题是这些文件是在原始存储库的整个历史记录中创建和修改的,因此我无法弄清楚如何干净地提取它们.
以下是我的历史记录的要点(只有更多的提交和更多要忽略).正如你所看到的,我显然不打算稍后将这些文件从历史中挑选出来:
commit 4a09d3f977a8595d9e3f61766a5fd743e4265a56
M src/Foo/Bar/FileToExtract2.foo
A src/Foo/Bar/FileToExtract3.bar
D src/Foo/AnotherFileToIgnore.txt
commit 05d26f23518083270cc45bf037ced29bec45e064
M src/Foo/Blah/IgnoreThisOneToo.foo
M src/Foo/AnotherFileToIgnore.txt
commit 343187228f4bd8e4427395453034c34ebd9a95f3 …
Run Code Online (Sandbox Code Playgroud) 问题:我希望能够在Java中一般地访问Java ojbect上的任何属性/字段,类似于动态语言(想想Groovy,JavaScript)的方式.我不知道当时我正在编写这个管道代码它是什么类型的对象或属性/字段名称是什么.但是当我去使用它时,我会知道属性/字段名称.
我目前的解决方案:到目前为止,我已经编写了一个简单的包装类,用于java.beans.Introspector
获取Bean/POJO的属性并将它们公开为Map<String, Object>
.它很粗糙但适用于简单的情况.
我的问题是除了反射/转换为Map之外还有哪些方法可以解决这个问题?
在我走上这条道路之前,我想知道是否有人知道我如何能够从Rhino中蚕食一些东西,或者javax.script.*
是否有一个经过深思熟虑的实施这个概念的东西.或者也许是一种我没有考虑过的完全不同的方法.
编辑:是的我熟悉反射(我相信它是Introspector在引擎盖下使用的东西).如果还有其他经过深思熟虑的解决方案,我只是很好奇.
编辑2:似乎最流行的答案涉及1)直接或通过辅助类反映,和/或2)映射到实现所需类成员的接口.关于利用Groovy的评论,我真的很感兴趣.由于Groovy具有真正的duck-typing并且它是一种JVM语言,有没有办法在Groovy中创建一个简单的帮助器并从Java调用它?这将非常酷,可能更灵活,性能更好.
答:我认为Mike的答案是最好的,因为它是一个最接近的完整概念.对于这种特殊情况,我可能不会采用这种方式,但它肯定是一种有用的方法.任何看过这个的人都应该确保阅读这里的对话,因为那里有很多有用的信息.
谢谢!
我知道标题可能看起来像苹果和橘子,但听我说... :)
我正在构建MVC应用程序的体系结构,并考虑将什么用于控制器/服务的核心.该堆栈还将用作RESTful API,与UI同样重要.
我正在缩小我的堆栈,用Grails或JAX-RS构建(此时我已经排除了其他选项,并且对扩展此列表并不感兴趣).无论哪种方式,我都将使用Groovy,我的模型和视图几乎不会受到这种选择的影响,因此可以进一步平衡两者之间的一些差异.以下是我一直在思考的优点/缺点,并且想知道是否有人有任何其他意见或警告经验.
看起来每个用于创建动作和路由的功能非常相似(尽管实现样式不同).事实上还有其他SO问题希望触及这一点,所以我不太关心.
我正在阅读有关HTML5应用缓存清单的详细信息(特别是来自这篇优秀的文章).我很好奇这个想法是否有用:
我们在子域内的CDN上托管所有静态资源(脚本,CSS,字体,图像)(例如cdn.example.com和app在www.example.com上).是否可以在CDN上托管应用缓存清单?例如,
<!doctype html>
<html manifest="http://cdn.example.com/appcache.manifest">
...
<script src="http://cdn.example.com/foo.js"></script>
...
</html>
Run Code Online (Sandbox Code Playgroud)
如果是,清单列表是否可以来自CDN根目录?例如,在清单中:
CACHE MANIFEST
/foo.js
Run Code Online (Sandbox Code Playgroud)
有没有人有这方面的经验和/或知道任何警告?
编辑: WHATWG规范的工作草案它说" 脱机应用程序缓存清单可以使用绝对路径甚至绝对URL ",然后显示一个带有图像的CDN URL的示例.
假设我有一个IQueryable<T>
表达式,我想封装它的定义,存储它并重用它,或者稍后将它嵌入到更大的查询中.例如:
IQueryable<Foo> myQuery =
from foo in blah.Foos
where foo.Bar == bar
select foo;
Run Code Online (Sandbox Code Playgroud)
现在我相信我可以保持myQuery对象并像我描述的那样使用它.但有些事情我不确定:
如何最好地参数化?最初我在一个方法中定义了这个,然后IQueryable<T>
作为方法的结果返回.这样我就可以定义blah
和bar
作为方法参数,我猜它IQueryable<T>
每次都会创建一个新的.这是封装逻辑的最佳方法IQueryable<T>
吗?还有其他方法吗?
如果我的查询解析为标量而不是IQueryable
? 例如,如果我希望此查询完全如所示,但附加.Any()
只是让我知道是否有任何匹配的结果?如果我添加,(...).Any()
则结果bool
立即执行,对吧?有没有使用这些方式Queryable
运营(Any
,SindleOrDefault
,等),但不立即执行?LINQ-to-SQL如何处理这个问题?
编辑:第2部分更多的是试图了解IQueryable<T>.Where(Expression<Func<T, bool>>)
vs. 之间的限制差异IQueryable<T>.Any(Expression<Func<T, bool>>)
.在创建要延迟执行的大型查询时,似乎后者并不灵活.的Where()
可以追加,然后在其它构建体可以稍后所附,然后最终执行.由于Any()
返回标量值,因此它可以在构建其余查询之前立即执行.
我很好奇是否有办法通过W3C DOM创建DocType节点?该规范明确指出它们是只读的并且无法编辑,但它们是否能够被创建?
http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-412266927
Document接口似乎没有任何create方法:
也许更广泛的问题是:可以通过DOM以编程方式构建全新的HTML文档吗?我知道document.createDocumentFragment()
但我的意思是相当于具有特定doctype的根HTML文档等.
更新:它看起来像最近的Gecko和WebKit实现DOMImplementation.createDocument
,DOMImplementation.createDocumentType
但不是IE8或之前(没有检查IE9).所以很遗憾,我仍然被困在那里.
我也有点不确定一旦拥有它,我可以用这个新的Document实例做什么.所有当前的DOM方法都挂起了全局文档对象,所以似乎没有办法将它与新的交换.
我有一种情况需要生成一个带有大字符串const的类.我控制之外的代码导致我生成的CodeDom树被发送到C#源,然后被编译为更大的Assembly的一部分.
不幸的是,我遇到这种情况,如果这个字符串的长度超过Win2K8 x64中的335440个字符(Win2K3 x86中的926240),则C#编译器会以致命错误退出:
MSDN称CS1647是"编译器中的堆栈溢出"(没有双关语!).仔细观察我已经确定CodeDom"很好地"将我的字符串const包装在80个字符处.这导致编译器连接4193个字符串块,这显然是x64 NetFx中C#编译器的堆栈深度.CSC.exe必须在内部递归计算此表达式以"重新水化"我的单个字符串.
我最初的问题是:"有没有人知道改变代码生成器如何发出字符串的解决办法? "我无法控制外部系统使用C#source作为中间件的事实,我希望这是一个常量(而不是而不是字符串的运行时串联).
或者,我该怎么制定这个表达式使得一定数量的字符后,我仍然能够创造一个恒定的,但它是由多个的大型块?
完整的repro在这里:
// this string breaks CSC: 335440 is Win2K8 x64 max, 926240 is Win2K3 x86 max
string HugeString = new String('X', 926300);
CodeDomProvider provider = CodeDomProvider.CreateProvider("C#");
CodeCompileUnit code = new CodeCompileUnit();
// namespace Foo {}
CodeNamespace ns = new CodeNamespace("Foo");
code.Namespaces.Add(ns);
// public class Bar {}
CodeTypeDeclaration type = new CodeTypeDeclaration();
type.IsClass = true;
type.Name = "Bar";
type.Attributes = MemberAttributes.Public;
ns.Types.Add(type);
// public const string HugeString …
Run Code Online (Sandbox Code Playgroud) 出于某种原因,我正在努力使用我的Amazon S3上传策略的签名生成.我发誓,我有一点工作,但不再.任何帮助将非常感激.我需要一双新鲜的眼睛.
与Amazon S3 Signature Tester的输出进行比较时,我没有得到相同的签名.但是,当我直接使用该工具发出的签名时,一切正常.所以问题肯定在我的签署过程中.此外,该工具中出现的"要签名的字符串"十六进制解码与我签名的输入策略相同.
AWS文档说构建策略签名的过程应该是这样的:
似乎足够直截了当.模棱两可的唯一地方可能是#3.AWS文档显示了用于生成HMAC-SHA1的示例代码段,这与我见过的其他Java加密示例一致.
我正在使用Apache Commons的Base64的v1.6.我的签名代码基本上如下所示:
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
/* ... */
private static final String UTF8 = "UTF-8";
private static final String HMACSHA1 = "HmacSHA1";
public static String sign(String secret, String data) {
byte[] dataBytes = data.getBytes(UTF8);
byte[] secretBytes = secret.getBytes(UTF8);
SecretKeySpec signingKey = new SecretKeySpec(secretBytes, HMACSHA1);
Mac mac = Mac.getInstance(HMACSHA1);
mac.init(signingKey);
byte[] signature = mac.doFinal(dataBytes);
return …
Run Code Online (Sandbox Code Playgroud) 我很享受JAX-RS(特别是Jersey)的自动HTTP内容协商,即它能够通过"Accept"和/或"Content-Type"标头来路由我的资源.但是我发现有时它会在发生冲突时给我足够的控制权.
例如,请考虑以下端点:
@Path("/order")
public class OrderController {
@GET
@Path("{orderID: \\d+}")
@Produces("text/html")
public View getOrderView(@PathParam("orderID") long id) {
Order order = this.getOrderData(id);
return new OrderView(order);
}
@GET
@Path("{orderID: \\d+}")
@Produces({"application/json", "application/xml"})
public Order getOrderData(@PathParam("orderID") long id) {
return new OrderService.findOrder(id);
}
}
Run Code Online (Sandbox Code Playgroud)
我会在Firefox和Chrome之间得到不同的结果.Firefox将映射到HTML端点,而当我将每个端点URL导航到端点URL时,Chrome将触发XML端点.它们之间的区别在于它们的Accept标头中列出的MIME类型的顺序.Chrome发送以下内容:
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.107 Safari/534.13
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Run Code Online (Sandbox Code Playgroud)
与Firefox相比,它首先列出了HTML:
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Run Code Online (Sandbox Code Playgroud)
似乎逻辑上,当所有加权相同时,它将匹配第一个条目.但在我的情况下,我得到的结果与我想要的不同,所以确定更好的打破方法会更好.
我的问题:如果没有将标题信息注入这些方法并自己执行媒体类型处理,有没有办法"调整权重",以便在出现平局时说话?例如,我可以告诉它总是用HTML来胜过XML吗?我的RESTful客户端非常清楚他们想要什么类型,但浏览器众所周知地使用Accept标头.(就我个人而言,我认为他们应该将HTML重量略高于XML,因为这是用户所期望的,但这有点晚了.)
或者,我可以在某个集中位置执行自己的自定义内容协商吗?我并不反对手动编写这个逻辑,但如果它意味着将它应用于我的每个资源实例都不会.JAX-RS是否有一些向管道添加过滤器的概念,以便在路由之前调整请求?
我正在寻找一种更清晰的方法来检测实际的名称transitionend
.我已经看到很多例子只是强力添加处理程序到所有的变化.另外,我不想依赖jQuery(或类似的框架).
我基本上从这个列表开始,并希望绑定最合适的(即列表中的第一个匹配).
var transitionendName,
events = [
'transitionend',
'webkitTransitionEnd',
'MozTransitionEnd',
'oTransitionEnd'
];
// ^^^^^ your code here
myElem.addEventListener(transitionendName, myHandler, false);
Run Code Online (Sandbox Code Playgroud)
有人觉得他们有一个干净的解决方案吗?相同的解决方案可能适用于animationend
事件.
编辑: msTransitionEnd和'-ms-'前缀属性在最终的IE10发布候选版本中被删除.
javascript-events css3 css-transitions browser-feature-detection