小编Dan*_*sky的帖子

Clojure:休息与下一个

我很难理解Clojure restnextClojure 之间的区别.官方网站关于懒惰的页面表明偏好可能应该是使用rest,但它并没有真正解释两者之间的差异.任何人都能提供一些见解吗?

clojure lazy-evaluation

66
推荐指数
3
解决办法
9254
查看次数

是否有任何非轮询方式来检测DOM元素的大小或位置何时发生变化?

很长一段时间以来,我一直在寻找一种方法来检测DOM元素的大小或位置何时发生了变化.可能是因为窗口已调整大小,或者因为新的子元素已添加到元素中,或者因为在此元素周围添加了新元素,或者因为CSS规则已更改,或者因为用户更改了浏览器的字体大小.元素的大小或位置会发生变化的原因有很多.

我可以为许多事件挂钩事件处理程序,但我认为有些情况没有涉及.我曾希望使用MutationObservers来观察元素的offsetWidth或clientWidth,但看起来它们只适用于DOM属性,而不是Node属性(或者可能就是Webkit所实现的).所以,要真正防弹,看起来我还是需要运行一个轮询循环.

它是否正确?我错过了重要的事吗?轮询唯一的防弹方式来检测元素的大小或位置何时发生变化?

编辑

为了给出更多的上下文,这与任何一个特定的用例无关.对我来说,它一次又一次地出现.在我目前的情况下,我希望通过CSS设置一个画布,它的父级宽度和高度都是100%.我希望脚本在offsetWidth或clientWidth更改时调整画布的宽度和高度属性(这适用​​于WebGL,其中width和height属性会影响帧缓冲区的分辨率).在另一个项目中,我想要一个扩展高度的元素来填充用户浏览器窗口中的剩余空间.我一次又一次遇到这种情况,不可避免地,解决方案似乎是:

  1. 听听window.resize
  2. 挂钩你编写的任何可能改变DOM的代码(或者使用Mutation Events或Mutation Observers)
  3. 进行定期轮询操作以清理任何遗漏的案件

(大多数人停在1,也许做一点2)

我只是想确保我没有遗漏一些重要的东西.

顺便说一句,在我的WebGL情况下,监听window.resize就足够了(并且稍微有点优选,因为那时画布尺寸和渲染分辨率会同时发生变化).

javascript dom

27
推荐指数
2
解决办法
4824
查看次数

在Scala中,是否有缩写泛型类型的简写的简写?

我想调用Scalaz的pure方法将值放入State monad.以下作品:

type IntState[A] = State[Int, A]
val a = "a".pure[IntState]
a(1)
    (Int, java.lang.String) = (1,a)
Run Code Online (Sandbox Code Playgroud)

我也可以删除类型别名(感谢Scalaz的Pure.scala):

val a = "a".pure[({type T[A]=State[Int,A]})#T]
a(1)
    (Int, java.lang.String) = (1,a)
Run Code Online (Sandbox Code Playgroud)

但这非常笨重.是否有更短的方法来合成这样的类型?就像函数文字的占位符语法一样,有类似的东西:

"a".pure[State[Int, *]]
Run Code Online (Sandbox Code Playgroud)

generics scala scalaz

11
推荐指数
2
解决办法
752
查看次数

关于在Android上保留数据的建议?

有一个Web服务提供我的应用程序使用的一些数据.这个数据相当大,只是很少变化所以我认为如果应用程序可以将其缓存在SD卡上并且只在需要时更新它会很好.

目前我正在抓取数据(XML文件)并使用SAX将其解析为对象树.此过程比我的WIFI(最多)需要2-3秒.但是,将生成的对象序列化到SDCard需要更长的时间(一分钟或更长时间),并且反序列化它仍然需要比首先下载/解析更长的时间.

有没有人有任何建议来改进这个或替代想法来持久化这些数据(除了每次保存XML文件和重新分析)?

更新:这不仅仅是一个简单的记录集合.对象图实际上非常复杂,将其存储到数据库中会导致数十个表中每个表只有一个记录.

serialization android object

8
推荐指数
1
解决办法
5102
查看次数

GLSL采样器如何确定纹理的缩小,从而确定mipmap级别?

我正在使用OpenGL ES(通过WebGL),但我认为这个问题也适用于完整的OpenGL配置文件.

假设我创建了一个具有完整mipmap级别的OpenGL纹理,并将其TEXTURE_MIN_FILTER设置为NEAREST_MIPMAP_NEAREST.还假设我有一个片段着色器来对此纹理进行采样.根据纹理的缩小程度选择mipmap级别,但是如何选择缩小程度?

在我的例子中,我正在合成(在着色器内)我用来对纹理进行采样的纹理坐标.实际上,我的纹理坐标不是基于任何传入的变化.即使我在这个纹理上启用了mipmapping,它似乎也没有任何效果.这是预期的吗?我是否需要自己计算LOD并将bias参数用于texture2D?(没有texture2DLOD,因为我正在使用ES)

opengl opengl-es glsl mipmaps

7
推荐指数
1
解决办法
3688
查看次数

Eclipse:有一种简单的方法来协调整个团队中的"已安装的JRE"吗?

我有一个由大约10个不同的Eclipse项目组成的应用程序.有些项目必须使用Java 5构建,其他项目必须使用Java 6.我将这两个JDK分别在Eclipse的"已安装的JRE"列表中注册为"jdk5"和"jdk6".

适当的JRE位于每个项目的构建类路径上,该路径反映在.classpath文件中.但是,我团队中的其他成员正在他们的计算机上为这些JRE使用不同的符号名称.此外,.classpath文件被检入源代码管理.因此,人们需要对其.classpath文件进行本地更改才能构建.

我的直觉是为已安装的JRE列表选择一个命名约定,并要求所有团队成员坚持使用它.但是,这只会使设置新开发人员的过程变得复杂.真的,我只想说"用Java 5构建这个项目"和"用Java 6构建该项目".我不在乎它们的安装位置,或者它们的符号名称.Eclipse是否支持这种配置?

eclipse classpath

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

Safari 5 Extension:如何检测窗口当前选项卡的更改时间?

我有一个包含工具栏的Safari 5扩展.每当当前选项卡更改时,应更新该工具栏.我想从我的酒吧脚本中做这样的事情:

safari.self.browserWindow.addEventListener("activeTab", tabChanged, false);
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不起作用.我也尝试了许多其他事件名称:

  • activeTab
  • activeTabChanged
  • onActiveTab
  • onActiveTabChanged
  • 标签
  • tabChanged
  • onTab
  • onTabChanged
  • 参考selectionChanged
  • onSelectionChanged

有人知道如何检测活动标签何时更改?

并不是说这有任何关联,但看起来我会在Chrome中执行此操作:

 chrome.tabs.onSelectionChanged.addListener(tabChanged);
Run Code Online (Sandbox Code Playgroud)

safari events safari-extension

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

为什么小部件的创建顺序很重要?

以下代码工作正常.它显示一个panedwindow,顶部有一个蓝色框,下面是一个绿色框:

panedwindow .root -orient vertical -showhandle true -background red
frame .top -background blue -width 100 -height 100
frame .bot -background green -width 100 -height 100
.root add .top .bot
pack .root -expand true -fill both
Run Code Online (Sandbox Code Playgroud)

但是,当我panedwindow向下移动命令时,事情就会停止工作.顶部的蓝色框未显示.相反,panedwindow它本身的红色闪耀着:

frame .top -background blue -width 100 -height 100
panedwindow .root -orient vertical -showhandle true -background red
frame .bot -background green -width 100 -height 100
.root add .top .bot
pack .root -expand true -fill both
Run Code Online (Sandbox Code Playgroud)

为什么会这样?可以将panedwindow真的只管理后创建的小部件?我已经看到了与打包器类似的行为,它将拒绝打包-in …

tk-toolkit tcl

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