背景:我正在做一些需要检测人们是否注意的用户界面测试.但是,这个问题是不是有关的页面知名度API.
具体来说,我想知道如果在不同的浏览器中当前选项卡未激活或浏览器窗口未激活,我的Javascript代码将如何受到影响.到目前为止,我已经挖出了以下内容:
setInterval
而setTimeout
当标签不主动延迟降低 -看起来这只是最近开始出现,并可以搞砸茉莉花单元测试,周围的其他事物.requestAnimationFrame
选项卡未激活时速度变慢(合理,无法想到为什么这会对任何人造成太大影响)我有以下问题:
setInterval
重复?它只是减少到一个限度或一个百分比?例如,如果我有一个10ms重复而不是5000ms重复,那么每个都会受到怎样的影响?我正在尝试选择合适的技术来更新项目,该项目基本上可以在可缩放的可缩放图形中渲染数千个点.使用Protovis的当前实现表现不佳.看看这里:
http://www.planethunters.org/classify
完全缩小时大约有2000个点.尝试使用底部的手柄放大一点,然后拖动它以平移.除非你有一台真正快速的计算机,否则你会发现它非常不稳定,你的CPU使用率可能在一个核心上达到100%.对焦点区域的每次更改都会调用重绘为protovis,这种方法非常慢,并且绘制的点数越多越差.
我想对界面进行一些更新,以及更改底层可视化技术,以便更灵敏地进行动画和交互.从下面的文章看,似乎是在另一个基于SVG的库或基于画布的库之间进行选择:
http://www.sitepoint.com/how-to-choose-between-canvas-and-svg/
d3.js,源自Protovis,基于SVG,应该更好地渲染动画.但是,我怀疑它有多好,它的性能上限是多少.出于这个原因,我也在考虑使用像KineticJS这样的基于画布的库进行更彻底的改造.然而,在我使用一种或另一种方法之前,我想听听那些使用这么多数据做过类似Web应用程序并得到他们意见的人.
最重要的是性能,第二个重点是易于添加其他交互功能和编程动画.一次可能不会超过2000个点,每个点上的误差小.放大,缩小和平移需要顺利进行.如果最新的SVG库在这方面还不错,那么使用d3的方便性可能会超过KineticJS的增加设置等.但是如果使用画布有巨大的性能优势,特别是对于计算机速度较慢的人来说,那么我肯定会喜欢这样.
使用SVG的纽约时报制作的应用程序示例,但仍然可以顺利地动画:http://www.nytimes.com/interactive/2012/05/17/business/dealbook/how-the-facebook-offering-compares.html .如果我可以获得该性能而不必编写自己的画布绘图代码,我可能会选择SVG.
我注意到一些用户使用了混合的d3.js操作和画布渲染.但是,我无法在网上找到很多关于此的文档或与该帖子的OP联系.如果有人有任何使用DOM-to-Canvas(演示,代码)实现的经验,我也想听听你的意见.它似乎是一个很好的混合体,能够操纵数据和自定义控制如何渲染它(以及因此性能),但我想知道是否必须将所有内容加载到DOM仍然会减慢速度.
我知道有一些类似于这个问题的现有问题,但它们都没有提出同样的问题.谢谢你的帮助.
后续行动:我最终使用的实现是https://github.com/zooniverse/LightCurves
Maven很棒.它主要通过在pom
配置中指定依赖包的版本来使我脱离jar依赖地狱,并自动应用它们.它还通过m2e与Eclipse进行了很好的集成,因此可以在IDE中无缝地工作.
这对于Maven全局已知的依赖项来说非常有用.但是,有时候,有些库需要包含在Maven存储库中不可用的项目中.在这种情况下,我通常将它们添加到lib/
项目中的目录中.只要它们在类路径中就可以编译.
但是,问题是导入项目时会自动包含它们.我一直在容忍这个问题,包括半生不熟的修复和黑客攻击太久了.每当有人安装这个项目时,我都要告诉他们手动将jar添加lib/
到他们的Eclipse构建路径中,以便所有错误都消失.类似于以下内容:
我正在寻找一种方法来自动化这个过程,它既适用于mvn
命令行程序又适用于Eclipse:更多的是强调Eclipse,因为在导入它们时只需要编译的项目很好.
我不想为此设置一个repo服务器,也没有任何内部专有组件可以保证在本地设置任何东西.我只有一些jar文件,开发人员不使用Maven; 我想和他们一起编译......我应该能够将它们包含在我的软件发行中,对吗?
我真的在寻找一种合理的方法来实现它,它也可以在Eclipse中运行而不用大惊小怪.这是我发现有希望的一个解决方案,但肯定似乎没有这个问题的权威解决方案.唯一接近的另一件事是maven-addjars-plugin,它可以正常工作但只能在命令行上运行.这个插件也不错,配置非常合理:
<plugin>
<groupId>com.googlecode.addjars-maven-plugin</groupId>
<artifactId>addjars-maven-plugin</artifactId>
<version>1.0.5</version>
<executions>
<execution>
<goals>
<goal>add-jars</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/lib/java-aws-mturk</directory>
</resource>
<resource>
<directory>${project.basedir}/lib/not-in-maven</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
但是,尝试让它在Eclipse中运行会涉及到以下关于生命周期映射的混乱pom.xml
,我从未开始工作; 我甚至认为它没有配置为实际向Eclipse构建路径添加任何内容.
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
com.googlecode.addjars-maven-plugin …
Run Code Online (Sandbox Code Playgroud) ES6/ES7 中已经有很多很酷的功能来定义Javascript对象.但是,以下模式在Javascript中很常见:
const obj = {
requiredKey1: ...,
requiredKey2: ...
};
if (someCondition) {
obj.optionalKey1 = ...;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法用可选键和必需键同时定义对象?
根据这个帖子,如果我想从Java使用Redis,Jedis是最好用的.
但是,我想知道是否有任何库/包提供与Redis中已存在的类似的高效设置操作,但是可以直接嵌入Java应用程序而无需设置单独的服务器.(即,使用Jetty作为Web服务器).
更确切地说,我希望能够有效地执行以下操作:
以上以并行方式发生.当M和N很大时,Redis比SQL查询更有效地完成上述任务.有没有办法使用比启动Redis服务器更轻量级的可嵌入Java库来实现这一点?
我认识到使用Java的并发库编写一堆代码是可能的,这些库将粗略地估计这个(在某种程度上,我已经完成了),但这并不是我在这里寻找的.
我在Mongo中使用下划线命名了一个集合,并且无法从shell访问它:
meteor:PRIMARY> show collections
_assignments
chatmessages
(... other stuff)
Run Code Online (Sandbox Code Playgroud)
尝试在第一个集合上运行任何函数会导致错误:
meteor:PRIMARY> db._assignments.find()
Thu Jun 19 10:53:28.450 TypeError: Cannot call method 'find' of undefined
Run Code Online (Sandbox Code Playgroud)
但是,其他集合工作正常:
meteor:PRIMARY> db.chatmessages.find()
{ "room" : "j5oau9DJ6GNpT9nR8", "userId" : "at9Kt8NNL4aeof6LE", "text" : "@nomad943 can you take a look at event #1?", "timestamp" : 1391806611977, "_id" : "26GbXa6c4B65FYRxC" }
{ "room" : "T7JfjBhri48bNHAfQ", "userId" : "B82LxmPBZWDnN4N2p", "text" : "Thinking #60 should be deleted, it's a duplicate of #36 and the region is wrong for the province", "timestamp" : …
Run Code Online (Sandbox Code Playgroud) 是否可以使用CSS来定义具有两个交替颜色的线条(或形状边缘)?也就是说,如果1和2是不同颜色的像素,那么
1212121212121212或112211221122
我基本上想要一些方法来使用两种颜色的stroke-dasharray.线条本身是完全着色的.
如果这不可能,那么接近它的好方法是什么?例如,我可以创建一个交替的两种颜色的重复线性渐变,但这很难从javascript设置两种颜色.
使用jQuery有什么好处
$(window).blur(function() { ... })
Run Code Online (Sandbox Code Playgroud)
附加事件处理程序与直接设置它
window.onblur = function() { ... }
Run Code Online (Sandbox Code Playgroud)
似乎后者不太健壮,因为它只支持一个模糊处理程序,并且当与其他包一起使用时,其他代码可能会window.blur
用另一个函数覆盖该值.但是,这也不会发生在jQuery实现上,它可能window.blur
用作底层实现吗?
编辑:有几个人也提到了window.addEventListener
替代方案,可以用来添加'onblur'
除上述方法之外的事件.
我最近发现了在调用Java方法时显式声明泛型类型的奇怪语法.例如:
Collections.<String>emptyList();
Run Code Online (Sandbox Code Playgroud)
返回一个空的List<String>
.但是,这看起来很愚蠢,因为实现<T> emptyList()
只是未经检查的类型转换(List<T>) EMPTY_LIST
,因此所有结果都具有相同的类型擦除(并且是相同的对象.)此外,通常不需要这种显式类型声明,因为编译器通常可以推断类型:
List<String> empty = Collections.emptyList();
Run Code Online (Sandbox Code Playgroud)
在做了一些挖掘之后,我发现了另外两次你想要使用这种语法,并且它们都是由于使用了Guava库并且显然试图在一行上放置太多语句.
装饰集合,例如使用同步包装器,并且编译器无法推断类型.如果您取出类型声明,则以下内容不起作用cannot convert from Set<Object> to Set<String>
:
Set<String> set = Collections.synchronizedSet(Sets.<String>newHashSet());
Run Code Online (Sandbox Code Playgroud)在编译器尝试创建过于具体的类型参数时,获取较少的特定类型参数.例如,如果没有类型声明,以下语句也会抱怨cannot convert from Map<String, String> to Map<String, Object>
:
Map<String, Object> toJson = ImmutableMap.<String, Object>of("foo", "bar");
Run Code Online (Sandbox Code Playgroud)我觉得具有讽刺意味的是,在第一种情况下,推断类型参数过于笼统,在第二种情况下它们过于具体,但我认为这只是Java中泛型系统的一个工件.
然而,除了在番石榴团队发明的这些奇怪的用例之外,这种语言结构本身似乎是可以避免的.此外,看似平淡,我认为那里是编译器推断类型参数同时在上面的例子中的方式,而开发商只是选择不这样做.是否有在Java编程中使用此构造所必需或有用的示例,还是仅仅为了使编译器更简单/ JDK开发人员的生活更容易存在?
我正在构建一个聊天窗口小部件,允许人们在Web应用程序中相互通信.因此大多数聊天都只是文字,但我想让人们说
它应该出现在聊天中(例如)
键入@
符号的位置允许Joe
从用户列表中自动完成,也可以呈现为某种不仅仅是文本的HTML元素.
一个很好的例子是在StackOverflow上提问或编辑问题时的标签框 - 你可以输入自动填充一个或多个标签的自由文本; 我基本上希望标签用特定符号激活(@
在这种情况下),否则仍然允许自由文本.另一个例子是StackOverflow中的注释回复字段,您可以在其中键入@fooUser this is my response to your comment
并fooUser
成为链接.
GitHub也这样做; 它为#
(issue)和@
(user)提供了不同的自动完成,即:
我知道诸如Twitter/Bootstrap typeahead和jQuery UI自动完成之类的库,但它们似乎自动完成整个输入并且不够灵活,不能做这样的事情.这里有两个主要问题:
我也没有在文本输入/文本区域中呈现DOM元素,但我找不到任何执行此类混合自由文本/自动完成的库.
另外,我在Meteor中这样做,因此自动完成的数据源将是Meteor集合.虽然这不应该影响数据如何过多地连接,但是流星感知的答案会更有帮助.
与textarea中的Twitter式自动完成相关,但这个问题已经超过2年,没有好的答案,希望现在有更好的东西出现.
javascript autocomplete jquery-autocomplete meteor bootstrap-typeahead
javascript ×5
java ×3
meteor ×2
svg ×2
autocomplete ×1
blur ×1
browser ×1
canvas ×1
colors ×1
css ×1
d3.js ×1
eclipse ×1
ecmascript-6 ×1
ecmascript-7 ×1
embed ×1
generics ×1
html5 ×1
jquery ×1
kineticjs ×1
line ×1
m2e ×1
m2eclipse ×1
maven ×1
mongodb ×1
onblur ×1
redis ×1
set ×1
syntax ×1
types ×1