小编Sas*_*asQ的帖子

SVG USE元素和:悬停样式

我正在尝试使用CSS :hover伪类来设置<defs><use>标签嵌入的SVG元素,但它似乎不起作用: - /这是我的代码:

<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
 <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8"/>
 <style type="text/css" media="screen">
        .active { fill: #0BE; }
        .active:hover { opacity: 0.8; stroke: #F0F; stroke-width: 4px; }
        .active2 #p2 { fill: #0BE; }
        .active2:hover #p2 { opacity: 0.8; stroke: #F0F; stroke-width: 4px; }
        #p2:hover { opacity: 0.8; stroke: #F0F; stroke-width: 4px; }
    </style>
</head>
<body>


<svg version="1.1" width="640" height="480"
 xmlns="http://www.w3.org/2000/svg"
 xmlns:xlink="http://www.w3.org/1999/xlink">

 <defs>
  <polygon id="p0" points="100,0 50,86.6 -50,86.6 -100,0 -50,-86.6 50,-86.6" class="active"/> …
Run Code Online (Sandbox Code Playgroud)

css svg styling hover

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

Ruby嵌套模块作为命名空间

我有一个嵌套的模块结构,仅用于命名空间; 没有混合到类等.所以我有这样的代码:

module Lib

  module A
    def A.foo
      puts 'Lib::A::foo'
    end
  end

  module B
    def B.bar
      puts 'Lib::B::bar'
    end
  end

end
Run Code Online (Sandbox Code Playgroud)

现在假设我想在模块中添加一个辅助方法A,我希望它们可以被两个模块轻松使用.我得到以下内容:

module Lib

  module A
    def A.foo
      puts 'Lib::A::foo'
    end
    def A.helper
      puts 'Lib::A::helper'
    end
  end

  module B
    def B.bar
      puts 'Lib::B::bar'
      A::helper
    end
  end

end
Run Code Online (Sandbox Code Playgroud)

它似乎工作,但它有一些我想摆脱的缺点:
我不想从内部一直调用helper其完全限定名称(A::helper)B.我更喜欢以某种方式告诉Ruby这个名称空间前缀是"默认"并简单地称之为helper.在C++中,我可以using A::helper在命名空间内编写B,它可以解决问题.但是如何在Ruby中做到这一点?

我尝试添加include Aextend A内部B,但没有一个工作.当这些模块混合在一起时,它们似乎只在类内部工作,但是当它们独立时,它们仅用于命名空间.

有没有其他方法让它按我想要的方式工作?

哦,还有一件事:
假设一个不同的场景,我希望A::helper只在内部A的方法中使用它,因为它只是一些实现函数,我在其中考虑了许多函数内部使用的一些常用代码 …

ruby oop namespaces module

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

找出正则表达式失败的位置

我正在尝试用JavaScript编写一个词法分析器来查找一个简单的特定于域的语言的标记.我从一个简单的实现开始,它只是尝试匹配一行中当前位置的后续正则表达式,以确定它是否与某些令牌格式匹配并接受它.

问题是,当这样的正则表达式中的某些内容不匹配时,整个正则表达式失败,所以我不知道哪个字符确实导致它失败.

有没有办法找出字符串中导致正则表达式失败的位置?

INB4:我不是在调试我的正则表达式并验证它的正确性.它已经正确,匹配正确的字符串并删除不正确的字符串.我只想以编程方式了解正则表达式停止匹配的位置,找出用户输入中不正确的字符的位置,以及它们中有多少是正常的.

有没有办法用简单的正则表达式来实现它,而不是继续实现一个完整的有限状态自动机?

javascript regex lexical-analysis

12
推荐指数
2
解决办法
3480
查看次数

标记的类层次结构并在解析器中检查它们的类型

我正在尝试编写一个可重用的解析库(为了好玩).

我写了一个Lexer生成序列的类Tokens.Token是子类层次结构的基类,每个子类表示不同的标记类型,具有自己的特定属性.例如,有一个子类LiteralNumber(从导出Literal,并通过它从Token),其具有用于处理其词位的数值其自身特定的方法.一般处理词位的方法(检索它们的字符串表示,源中的位置等)在基类中Token,因为它们对所有标记类型都是通用的.此类层次结构的用户可以为我未预测的特定令牌类型派生自己的类.

现在我有一个Parser类来读取标记流并尝试将它们与其语法定义相匹配.例如,它有一个方法matchExpression,该方法又调用matchTerm并调用此方法,该方法matchFactor必须测试当前标记是否为(Literal或者Name都是从Token基类派生的).

问题是:
我现在需要检查流中当前令牌的类型是什么,以及它是否与语法匹配.如果没有,抛出EParseError异常.如果是,则相应地采取行动以在表达式中获取其值,生成机器代码,或者在语法匹配时执行解析器需要执行的任何操作.

但是我已经阅读了很多关于在运行时检查类型并且从中做出决定,这是一个糟糕的设计™,它应该被重构为多态虚拟方法.当然,我同意这一点.

所以我的第一次尝试是typeToken基类中放置一些虚方法,这将被派生类重写并返回一些enum类型为id的类.

但是我已经看到了这种方法的缺点:从Token他们自己的令牌类派生的用户将无法添加额外的id enum,这是在库源中!: - /目标是允许他们在需要时扩展新类型令牌的层次结构.

我也可以stringtype方法中返回一些,这样可以轻松定义新类型.

但是,在这两种情况下,基本类型的信息都会丢失(只有叶子类型从type方法返回),当有人从它派生并且覆盖它以返回其他内容时,Parser类将无法检测Literal派生类型type"Literal".

当然,这个Parser类也是用户扩展的(也就是说,编写自己的解析器,识别自己的标记和语法)并不知道Token将来会有什么类的后代.

许多有关设计的常见问题解答和书籍建议在此场景中采用需要按类型决定的代码中的行为,并将其放入派生类中的虚拟方法覆盖中.但我无法想象如何将这种行为放入Token后代,因为例如,生成机器代码或计算表达式不是他们的业务.此外,语法的某些部分需要匹配多个令牌,因此没有一个特定的令牌可以将该行为放入其中.这是特定语法规则的责任,它可以匹配多个令牌作为其终端符号. …

c++ parsing types class-design tokenize

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

解析器与词法分析器和XML

我现在正在阅读编译器和解析器架构,我想知道一件事......当你有XML,XHTML,HTML或任何基于SGML的语言时,词法分析器的作用是什么以及令牌是什么?

我读过,令牌就像为词法分析器准备的单词一样.虽然我没有找到用于语言行C,C++,Pascal等的令牌的问题,其中有关键字,名称,文字和其他由空格分隔的类似字符串的字符串,但是我有一个问题,因为它没有'任何话!它只是与标记(标签)交错的纯文本.

我心里想,可能是这些标签和纯文本片段都是令牌,类似的东西:[TXT][TAG][TAG][TXT][TAG][TXT][TAG][TAG][TXT]....这将是比较合理的,因为SGML并不关心有什么标记分隔符中<>(当然,它识别特殊处理的说明和定义时,它创立?!为下一个字符,评论属于该组太),和SGML标记生成器能是XML/HTML/XHTML解析器的基础.

但后来我意识到<标记内部可能会有一些字符作为其他语法的一部分:属性值: - /即使将<字符放在属性值中也不是很好(最好用&lt;它),许多浏览器和编辑处理这些并将它们<视为属性值的一部分,而不是标记分隔符.

它使事情变得复杂,因为我没有看到通过词法分析器中的简单确定性有限自动机(DFA)识别标记的方法.看起来它需要一个单独的自动机上下文,当它在标签内时,另一个上下文遇到一个属性值时.这需要一堆状态/上下文我认为,所以DFA可能无法处理.我对吗?

你有什么看法?从标签(标记)和纯文本制作令牌是否合适?

在这里:http://www.antlr.org/wiki/display/ANTLR3/Parsing+XML
使用某种不同的技术:他们对待<>(和<//>)作为分隔标记,标签内,他们使用GENERIC_ID的令牌等他们通常将大部分工作转移到解析器上.但是他们还必须改变标记化器的上下文:它们在纯文本中使用不同的上下文,并且在标记中使用不同(但是他们忘记了属性值上下文我认为,因为第一次出现>将在标签中结束标记).

那么解析类似SGML的语言的最佳方法是什么?那个词法分析器真的用在那里吗?如果是,那么代币是什么字符串?

xml parsing tokenize lexer dfa

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

为什么55 AA用作IBM PC上的启动签名?

为什么IBM PC体系结构55 AA引导签名的最后两个字节中使用幻数来进行引导签名

我怀疑它与它们的位模式有关:01010101 10101010但是不知道是什么.

我的猜测是:

  1. BIOS正在对这些字节一些位和/或/ XOR操作来将它们一起进行比较,如果它,例如,结果0,它可以很容易地检测和跳跃的地方.
  2. 它可能是一些平价/完整性的保障,如果其中的某些位被打破,它可以检测或东西,仍然被认为是一种有效的签名,以正确引导,即使在磁盘上这个特殊的位已经被打破或东西的系统.

也许你们中的某个人可以帮助我回答这个唠叨的问题?

我记得我曾经读过一些有关这些位模式的内容,但不记得在哪里.而且它会出现在一些纸质书中,因为我在网上找不到任何关于它的东西.

boot bootstrapping signature bootloader

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

JavaFX 中具有自动拉伸图块的 TilePane

JavaFX 中是否有任何方法可以充分利用 TilePane 或 FlowPaneGridPane?
\n这是我想要实现的目标:

\n\n

首先,我喜欢 GridPane 的想法,我可以在其中设置一个 M\xc3\x97N 网格,该网格会在其父容器内自动调整大小,以将空间平均划分为 M 列和 N 行。然后我可以放置一些完全填充每个单元格的子元素,它们将沿着网格拉伸。这很酷。
\n但有一个缺点:我需要通过设置其行号和列号来明确指定每个控件的位置。

\n\n

然后,还有诸如 FlowPane 或 TilePane 之类的布局容器,当父容器更改其大小时,它们会自动重排其子元素。当我添加另一个子元素时,它会自动附加到列表的末尾,并且当空间太少而无法容纳另一个元素时,元素列表在到达容器边缘后会自动换行。
\n但这也有一个缺点:子元素只能有严格的、预定义的大小。它们不会随其父元素一起拉伸。

\n\n

这就是我所需要的:
\n我需要这两个容器的最佳性能,也就是说,我想要一个 M × N 网格(比方说 4\xc3\x974),其中每个单元格都是 ParentWidth/M by ParentHeight/N 并沿与窗口,因此它始终是 4\xc3\x974 个单元格,但它们的大小(以及其内容的大小)相应地拉伸。\n但我不想明确告诉容器要放在哪一行和哪列中我在那里添加的每个新孩子。相反,我只想添加它,并让容器找出要放入的第一个空单元格,从左到右填充单元格,如果当前行中没有空单元格,则从上到下填充单元格。

\n\n

这些预定义容器的属性是否有一些神奇的设置可以让我实现这一目标?还是我需要自己写一个这样的容器?

\n

layout javafx flowpane gridpane

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

Linux下改变显示模式

我正在尝试使用 Xlib 和 OpenGL 来掌握编程图形。我可以创建窗口等,但我坚持改变显示模式。

我可以使用 Xrandr 函数 ( XRRSizesXRRRatesXRRGetScreenInfoXRRConfigSizes)列出可用的视频模式,检查当前设置的是哪一种 ( XRRConfigCurrentConfiguration),并更改分辨率 ( XRRSetScreenConfig)。

我可以列出可用的位深度(又名颜色深度,即每像素位数XListDepths

知道如何更改给定屏幕的位深度

我在 Xrandr 中找不到任何合适的函数来设置位深度和屏幕尺寸。它似乎对位深度完全一无所知,这真的很奇怪。我在 Xlib 文档中也找不到任何合适的函数。

所以我的问题是:
如何在 Linux 下以编程方式更改分辨率位深度?
Xlib 库或其他地方是否有任何函数?

我知道有图形,如SDL全面的库,但我并不想使用它们作为一个依赖只是改变显示模式,因为我试图写一个最小的图形库我自己,为了学习目的.

编辑:
我想要实现的目标不一定要特别用 Xlib 或 X 来完成,但它必须与 X 优雅地合作。例如,我不想完全摆脱 X ?它对于在窗口模式下显示图形仍然很有用。但我还需要一些方法来切换到全屏模式在这种模式下我需要完全控制视频模式:分辨率、颜色深度、刷新率以及直接访问帧缓冲区中的实际像素,而不是某种“模拟”。我认为有一些方法来做到这一点,因为有视频游戏谁可以做到这在Linux上。

c++ linux graphics xrandr xlib

5
推荐指数
0
解决办法
1071
查看次数

GNU readline 和键绑定

我从 GNU getline 文档中读到它能够将某些回调函数绑定到某些键。我已经知道如何TAB使用rl_bind_key函数将操作绑定到按键。

但是我如何使用它来将某些操作绑定到以下键?: CTRL+ TAB, ESC, PAUSE/BREAK

gnu readline key-bindings

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

istream_iterator在读取字符时忽略EOF(Ctrl + D)

我正试图istream_iterator用来读取人物cin.我已经读过按Ctrl+ D发送一个EOF结束输入流的字符.不幸的是,它出了问题.这是我的代码:

#include <iterator>
int main()
{
  using namespace std;

  istream_iterator<char> it(cin), eos;
  while (it != eos) clog << *(it++);
}
Run Code Online (Sandbox Code Playgroud)

我正在运行它并键入:as df,然后按Ctrl+ D.它只输出asd没有最后一个f然后挂起等待输入.当我输入gh并再次按Ctrl+ D时,它会打印f最后的剩余部分和g下一个输入,但是再次没有最后一个输入h.当我最后按Ctrl+ D而不键入任何内容时,它会打印剩余的h和退出.

我期望它能够读取asdf和退出,因为我已经在第一个序列的末尾按了Ctrl+ D.

到达后为什么还在等待输入EOF
为什么它不打印以前读过的最后一个字符EOF
为什么只有当我按Ctrl+ D之前没有输入任何内容时才会退出?
这个循环如何改变以使其按照我期望的方式运行?(即在输入中获得Ctrl …

c++ cin istream-iterator istream eof

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

C++本地范围内的多个声明

据我所知,在C++中,只要在所有这些声明中具有相同的类型,就可以多次声明相同的名称.要声明类型的对象int,但不定义它,extern则使用关键字.所以以下内容应该是正确的并且编译没有错误:

extern int x;
extern int x; // OK, still declares the same object with the same type.
int x = 5;    // Definition (with initialization) and declaration in the same
              // time, because every definition is also a declaration.
Run Code Online (Sandbox Code Playgroud)

但是一旦我将它移到函数内部,编译器(GCC 4.3.4)就会抱怨我正在重新声明x并且它是非法的.错误消息如下:

test.cc:9: error: declaration of 'int x'
test.cc:8: error: conflicts with previous declaration 'int x'
Run Code Online (Sandbox Code Playgroud)

int x = 5;第9行在哪里,extern int x在第8行.

我的问题是:
如果多个声明不应该是错误,那么为什么在这种特殊情况下它是一个错误?

c++ compiler-errors declaration definition redeclaration

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

Ruby自定义迭代器

我有一个类game,其包含自定义对象(恐龙,cacemen等),由不同的访问器返回,如某些阵列game.dinosaurs,game.cavemen等等.

目前,所有这些访问器只返回内部存储的数组.但是现在我想为这些访问器返回的这些数组添加一些自定义迭代方法,以便能够编写game.dinosaurs.each_carnivore { ... }类似于each_elementeach_attr迭代器等代码LibXML::XML::Node.但对象从我的访问器返回game.dinosaurs,并game.cavemen要表现得象阵依然.

这样的事情通常是如何在Ruby中完成的?我应该从我的访问器返回的对象是从Ruby的Array类派生的一些自定义类吗?或者我应该创建一个Enumerable混合的自定义类?

我知道我可以在我的集合中使用mapselect外部,但我想在内部封装这些迭代,我的类的用户不需要费心如何设置迭代来从内部数组中仅选择食肉动物恐龙.

编辑:我不是在询问如何使用迭代器或如何实现它们,而是如何将一些自定义迭代器添加到以前只是普通数组的对象中(并且仍然需要).

ruby arrays collections each extend

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