小编Edw*_*ang的帖子

跨浏览器"跳转到"/"滚动"textarea

我有一个带有许多输入行的textarea,并且会触发一个JavaScript事件,这需要我将textarea滚动到第345行.

scrollTop除了我可以告诉它的像素级别,我想要的是我想要的东西,我想要一个在线级操作的东西.令事情复杂化的是,再次说明,不可能使textareas不是换行.

html javascript css

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

找到Swing/AWT对象的"真实"高度/宽度

由于Canvas3D无法使用父框架动态调整大小,因此我希望能够跟踪用户何时调整窗口大小,然后自己手动调整大小.(如果这最终导致崩溃Canvas3D,正如一些文档建议的那样,当用户调整窗口大小时,我将简单地销毁并重新创建它).此过程的一部分涉及能够准确地判断容器面板的开始程度.

我试过的两种方法:

panel.getHeight();
panel.getPreferredSize().height;

似乎没有准确报告事物:getHeight()总是为零,并getPreferredSize()返回实际上与面板的实际大小无关的数字.

有任何想法吗?

编辑:所以,我把一个调试器带到面板对象并手动检查非对象属性,我没有看到任何类似宽度/高度的东西.当然,有一些我没看过的子对象.此外,当我查询高度/对象时,可能窗口必须是可见的(它不是,当我正在连接对象时)?

编辑2:所以,Swing类是AWT类的子类,所以我想如果你能够找到那些的高度/宽度,那么这种方法会概括.我相应地修改了标题.

java swing

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

检查两个yacc语法是否相同

你已经编写了一个yacc语法(或者你选择的工具中的其他一些LALR语法),并且你已经决定要重构一些产品以提高效率,清晰度等等.例如,你有:

xs : xs ';' x
   | xs ';'
   | x
Run Code Online (Sandbox Code Playgroud)

您希望更明显的是可以有多个分号,因此您将其重写为:

semi_plus : semi_plus ';'
          | ';'
xs : xs semi_plus x
   | x
Run Code Online (Sandbox Code Playgroud)

好吧,看起来似乎有道理......但我确实正确地进行了重构吗?如果我可以将这些声明传递给一个可以告诉我语法是否相同的工具,那就太好了.(现在,让我们仅考虑一下我们是否认可相同语言的问题.)

一个下意识的反应是引用上下文无关语法等价是不可判定的.事实上,即使确定CFG是否规则的问题也是不可判定的.但yacc不承认CFG:它识别确定性上下文无关语法,并且对于这些,已知等价是可判定的.但有没有人实施过任何这些决策程序?

complexity-theory parsing

8
推荐指数
0
解决办法
233
查看次数

检测NUL文件描述符(isatty是伪造的)

当NUL通过管道输出时,以下C文件给出了伪造的结果:

int main()
{
  printf("_isatty = %d\n", _isatty(0));
}
Run Code Online (Sandbox Code Playgroud)

结果是:

C:\Users\Edward\Dev\nulltest> test.exe < NUL
_isatty = 64
Run Code Online (Sandbox Code Playgroud)

我很确定NUL(又名/ dev/null)不是终端设备!所以我需要以另一种方式检测文件描述符是否对应于NUL.这个数字没有任何具体含义; 当我确实连接了一个终端时,我看到了它.

我该怎么办?这个问题建议使用粗略的未记录的函数来获取基础名称,可能是将它与NUL进行比较,但这对我来说感觉不太理想.有没有更好的办法?

PS这将有助于解决这个GHC错误.

c windows terminal

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

链接到Yesod中没有Haskell标识符的静态文件

给定一个默认的Yesod脚手架,通过将上传的文件移动到static目录中实现文件上传,如何链接到静态目录中的文件?对于普通的静态文件,staticFiles拼接会生成一个我可以引用的标识符,但对于用户上传的文件显然我不能对这些标识符进行硬编码.我可以通过手动使用#{}拼接来做到这一点,但我希望可能有更多类型安全的东西,即使唯一可检查的组件是我static/正确使用了前缀.

haskell yesod

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

当元素消失时,onmouseout不会被触发

我有一个mouseover事件触发工具提示; 我希望这个工具提示在移除鼠标时消失.onmouseout效果很好,除非元素消失.

这是一个使用背景更改而不是工具提示的简化示例(因此您可以轻松地运行它):

<div id="bar">
  <div onmouseover="document.bgColor='gray'" onmouseout="document.bgColor='white'" style="border:1px solid black;">
   <span onclick="document.getElementById('bar').innerHTML = ''">Remove me</span>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

问题是这样的:当我点击"删除我"时,我的鼠标不再"超过"div,但是onmouseout不会触发,因为它已经消失了.我想要的是这个例子在我点击"删除我"时恢复到白色背景.

有一个明显的解决方案,我想避免.我不希望删除元素的onclick处理程序手动"修复"文档.这是因为可能有任意多个处理程序可以使用onmouseout删除div.通常,所有鼠标移除和移除处理程序可以动态生成,并且需要彼此了解.为了使事情进一步复杂化,我可能会遇到可移动元素彼此嵌套的情况,并且可以删除其中的任何元素.(我可能会删除此约束,但这需要一些工作.)


以下是一个可行的解决方案示例:在鼠标悬停时,将模态对话注册为"活动"; 然后每当删除元素时,迭代所有模态对话并查找不再在文档中的对话框.但这需要我保持对话的全局存储,并花费时间O(n*m),其中n是活动对话的数量,m是对话在DOM中的深度嵌套.此外,每当我删除元素时,我都需要运行此操作,即使它很明显没有任何影响.

这是另一个可行的解决方案:如果您可以实现onremovedfromdocument事件,那么我们只需将onmouseout处理程序复制为onremovedfromdocument事件,该示例也将正常工作.(我听说jQuery可能支持这个,但我需要与非jQuery代码进行互操作.)

这是另一种可能的解决方案:让每个模态对话重复轮询以查看其父级是否在文档中.如果不是,请让它承诺seppuku.但民意调查真的很难看.(如果没有什么更好的话,我想我会愿意这样做!)

这是另一个想法:使用事件捕获来允许onmouseout元素首先捕获click元素,并设置一个计时器以在点击完成后检查它是否仍在文档中.


作为参考,这是我真正想要做的:我有一个JS小部件,它构建一个复杂的树结构.对窗口小部件的许多编辑涉及单击树中的某个按钮,然后从树中添加或删除(可能删除自身.)但是,某些节点需要更复杂的编辑过程,所以我想提出一个工具提示当用户将鼠标悬停在他们上面时,可以使用说明和可能的更多按钮,或者甚至在用户点击它们时保持对话.但是用户可能会改变主意并决定删除节点或节点的任何父节点,在这种情况下对话应该消失.您可以查看我目前在这里手动创建对话的实现.我想开始使用一个漂亮的工具提示库,但所有这些都有我上面描述的错误.

javascript javascript-events

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

将Yesod应用程序配置为CGI

鉴于一个刚刚搭建的Yesod应用程序,获取作为CGI程序的可执行文件所需的最小变更集是什么?包装程序是可以接受的.如果'cabal build'构建的默认可执行文件是CGI程序,则必须设置哪些环境变量才能充当CGI(默认情况下,它将绑定到端口并尝试在那里提供请求.)

对于FastCGI的类似答案也将受到赞赏.

haskell cgi fastcgi yesod

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

Yesod就地编辑小部件

我很有兴趣在Yesod中创建一个具有以下属性的小部件:

  • 默认情况下,它只是呈现为某些文本"标题"
  • 当moused-over时,右上角会出现一个"编辑此内容"的小链接
  • 如果用户点击链接或将鼠标悬停在其上,则文本将替换为文本字段/区域,其中包含文本,以进行编辑
  • 当用户按下ENTER时,向服务器发出REST请求以更新该值; 确认更新后,表单消失,文档中现在出现更新的文本

在很大程度上,这是一个严格的JS工作,大部分超出了Yesod的范围.但是,有一点很重要:我们希望表单本身应该由Yesod使用yesod-forms生成,而不是手动连接.但是这里的情况有点奇怪:通常表单是静态的,但是这里表单需要根据数据的不同而不同,并且Yesod可能需要在REST更新后向用户发送新表单.Yesod可以这样做吗?另外,就验证而言,故事是什么?

haskell yesod

6
推荐指数
0
解决办法
267
查看次数

如何将git repo与嵌套在子树中的子模块一起使用

显然,添加具有子模块的存储库的子树将破坏git submodule init。这是一个重现该问题的脚本:

#!/bin/sh
set -ex

mkdir submod
cd submod
git init
touch foo
git add foo
git commit -asm "This is a submodule"
cd ..

mkdir subtree
cd subtree
git init
git submodule add `realpath ../submod` submod
git commit -asm "This has reference to submodule"
cd ..

mkdir top
cd top
git init
touch bar
git add bar
git commit -asm "Dummy commit so HEAD resolves correctly"
git subtree add --prefix=subtree `realpath ../subtree` master

# This fails! …
Run Code Online (Sandbox Code Playgroud)

git git-submodules git-subtree

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

等同于'git rebase --skip'与'hg rebase'

我正在进行Mercurial变基(由引起hg histedit),并且遇到一个冲突,我意识到实际上应该删除此补丁程序。在git中,我刚做完git rebase --skip。在水银中有同等的吗?

mercurial

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