我试图通过Facebook对象调试器验证我的网站,我遇到以下错误:
"smallteaser:teaser"类型的网址" http://www.example.com/latest "上的对象无效,因为指定的应用程序ID"597566643589666"不允许使用域"www.example.com".
这个错误非常有意义,因为我没有允许example.com域特定访问Facebook应用程序.但我真的需要吗?
我想要实现的与Tumblr在使用自定义域时的工作方式类似.比方说,例如,网站www.davidslog.com:它有以下元标记:
<meta property="fb:app_id" content="48119224995" />
--> This is the Tumblr app ID
<meta property="og:url" content="http://www.davidslog.com/?og=1" />
--> This is a custom domain which points to a Tumblr blog
<meta property="og:type" content="tumblr-feed:tumblelog" />
--> This is a custom Tumblr object type (in namespace tumblr-feed)
Run Code Online (Sandbox Code Playgroud)
然后,如果您将其与例如域名theartofnotwriting.tumblr.com进行比较,该域具有以下元数据:
<meta property="fb:app_id" content="48119224995">
--> This is the same Tumblr app ID
<meta property="og:url" content="http://theartofnotwriting.tumblr.com/?og=1">
--> This is a different domain
<meta property="og:type" content="tumblr-feed:tumblelog">
Run Code Online (Sandbox Code Playgroud)
您可以清楚地看到相同的Tumblr应用程序有多个URL,一切都正确验证.
那么为什么这个Tumblr页面正确验证而我的页面没有?如何配置Facebook应用程序以允许在多个域上使用?
Play框架的一大优点是它完全无状态,只有面向请求/响应.这非常好,因为它允许我将我的应用程序部署到云端并扩展负载均衡器后面的播放实例数量,而不必担心状态(会话)复制......
但是,最近,我需要在HTTP请求之外执行一些应用程序逻辑,并发现Play可以定义完全由框架管理的作业.听起来很棒,但它提出了一个问题:这些工作如何适应Play使用的无状态模型?
假设我有一个需要每小时运行一次的维护任务,我为此定义了一个预定的作业.如果我然后在负载均衡器后面部署多个Play实例,那么该作业是否会在每个实例上同时启动?如果是这样,那么处理需要"专门"运营的工作的好方法是什么?
我正在考虑在非集群服务器上创建一个新的播放实例,重新使用现有(集群)实例的JPA模型(从而连接到同一个数据库).此新实例仅包含维护作业,并且由于它托管在非群集服务器上,因此不存在同时运行作业的风险.同时,这将允许我保持现有的群集实例完全无状态且易于托管/负载平衡.这会是一个好方法吗?
我有一个包含该元素的HTML 5文档:
<time datetime='2013-04-18T12:57:59+01:00' pubdate='pubdate'>Thu, 18 Apr 2013 at 0:57PM</time>
Run Code Online (Sandbox Code Playgroud)
这不会验证.错误是"此时元素时间不允许属性pubdate".
知道如何更正此验证错误吗?
谢谢!
我有兴趣将AWS Cloud Search用于我的网络应用程序.我有3种不同的文档类型,我想要搜索(用户 - 文章 - 图像).
使用Cloud Search执行此操作的最佳方法是什么?我是否需要创建3个不同的AWS搜索域?这是否意味着我需要支付至少3个搜索实例?
或者我可以将它们全部放在1个域/实例中并使用索引或类型之类的东西(使用弹性搜索术语)?
谢谢!
在同时处理2个元素的同时迭代列表的最佳方法是什么?
例:
List<String> strings = Arrays.asList("item 1", "item 2", "item 3", "item 4");
for(int i = 0; i < strings.size(); i++){
String first = strings.get(i);
String second = null;
if(strings.size() > i + 1){
second = strings.get(i + 1);
}
System.out.println("First [" + first + "] - Second [" + second + "]");
}
Run Code Online (Sandbox Code Playgroud)
结果是:
First [item 1] - Second [item 2]
First [item 2] - Second [item 3]
First [item 3] - Second [item 4]
First [item 4] - …Run Code Online (Sandbox Code Playgroud) 我正在使用DynamoDB来存储事件.它们存储在1个事件表中,其中包含散列键"Source ID"和范围键"version".每当源发生新事件时,我想添加一个带有源ID和增加版本号的新项目.
是否可以指定条件写入,以便重复项(相同的散列键和相同的范围键)永远不会存在?如果是这样,你会怎么做?
我已经成功地为只有一个哈希键的表做了这个:
Map<String, ExpectedAttributeValue> expected = new HashMap<String, ExpectedAttributeValue>();
expected.put("key", new ExpectedAttributeValue().withExists(false));
Run Code Online (Sandbox Code Playgroud)
但不知道如何处理哈希+范围键....
我正在尝试使用Play中的异步作业运行长时间运行的任务(不阻止HTTP请求执行池).Play中的Jobs完全由框架管理,因此Play将负责数据库连接和事务.这意味着作业在单个事务中作为普通调用运行.这对于大多数用例来说都很棒,但是如果你需要在作业完成之前提交一些数据呢?
那么,据Guillaume Bort说,一种选择就是
将您的流程分成几个小工作
他给出了以下例子:
@On("0 0 12 * * ?")
public class UpdateCounters extends Job {
public void doJob() {
List<Employee> empList = Employee.find("long and boring SQL :)").fetch();
for(Employee emp : empList) {
new UpdateEmployeeJob(emp).now().get();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这很酷......每个新工作都有自己的事务,所以当这个新工作完成时,它会提交数据.干净简单!但是如果你不想这样做呢?假设您需要等到数据提交后再继续初始作业?
通常,您将从新作业中检索Promise并调用await(jobPromise),但这在作业中不起作用(等待仅在扩展Controller时可用且未在作业上实现)...
那么,在新的小型工作完成之前暂停初始工作的最佳方法是什么?
我的应用程序是一个 Web 套接字客户端,它使用 Jackson 2.9.4 不断解析 JSon。我遇到内存泄漏,线程本地中的 SoftReferences 未被清除。
我已将 Jackson 配置为不使用 Thread Local,如下所示:
JsonFactory factory = new JsonFactory();
factory = factory.disable(JsonFactory.Feature.USE_THREAD_LOCAL_FOR_BUFFER_RECYCLING);
objectMapper = new ObjectMapper(factory);
Run Code Online (Sandbox Code Playgroud)
但是尽管有这个设置,我仍然看到 BufferRecycler 引用的 char[] 增加:
这会占用大约 40% 的物理内存,并且无论内存压力如何都会不断增长,直到我用完物理内存。
谢谢,
斯蒂克