我想以类似于 stackoverflow 的“提问”页面右侧的“如何格式化”的方式使用 bootstrap 词缀。
.affix { top: 70px }我可以通过添加 css并在 html 中使用来使其附加到视口class='affix' data-spy='affix',但是如果我希望将附加元素固定到父元素怎么办?
例如,如果我有这样的html:
<div class='affix-container'>
<div class='left-panel'>
some form, including a textarea
</div>
<div class='right-panel affix' data-spy='affix'>
how to format
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我right-panel只想相对于 进行粘贴affix-container,因此当我向下滚动时,如果affix-container仍在视口中,则粘贴right-panel,否则right-panel向上滚动。
如果 affix-container 的大小可以调整,我还可以这样做吗?IE。它的大小/高度随着它包含的文本区域的大小的调整而增加?
我正要在我的应用程序中使用winston,然后我意识到它无法在日志中显示函数名称/行号,我认为这对于调试服务器端应用程序非常重要。
经过一番挖掘,我在温斯顿的 github 问题页面上找到了解释。
他们非常清楚地解释了原因是性能,在每个日志记录调用上获取堆栈跟踪非常昂贵。
然而,当我寻找温斯顿替代品时,我发现一些库已经提供了记录行号的功能,例如 Bunyan、Scribe和Bristol。我查看了Bristol的源代码,它对函数有以下注释getOrigin:
/**
* Finds the origin of the Bristol log call, and supplies the file path and
* line number.
* This function uses JavaScriptStackTraceApi to be as fast as possible:
* https://code.google.com/p/v8-wiki/wiki/JavaScriptStackTraceApi
Run Code Online (Sandbox Code Playgroud)
我找到了关于这里的文档JavaScriptStackTraceApi
我只是好奇,这与温斯顿家伙谈论的堆栈跟踪类型相同吗?获取行号是 Nodejs 中固有的问题,没有日志库可以解决吗?
我希望记录行号,但不希望以严重的性能损失为代价。Bristol看起来确实不错,有人看过它的性能基准吗?或者任何打开行号功能的日志库的性能基准?
我知道导入限定名称有利于避免名称冲突.我纯粹是从可读性的角度来看问题.
不熟悉haskell标准库,我在阅读haskell代码(主要来自在线书籍和教程)时发现的一件事是,当我遇到一个函数时,我不知道它是属于导入的模块还是将由用户以后.
来自C++背景,通常认为使用命名空间调用标准库函数是一种很好的做法,例如std :: find.haskell是一样的吗?如果没有,那么你如何克服我上面提到的问题?
通常,如果我make test使用cmake生成的makefile 键入,它将显示如下内容:
Start 1: UnitTest
1/2 Test #1: UnitTest .........................***Failed 0.01 sec
Start 2: PerfTest
2/2 Test #2: PerfTest ......................... Passed 0.01 sec
50% tests passed, 1 tests failed out of 2
Total Test time (real) = 0.02 sec
The following tests FAILED:
1 - UnitTest (Failed)
Run Code Online (Sandbox Code Playgroud)
但是,如果我想看看googletest的实际输出,它告诉我究竟什么失败了怎么办?有没有办法强迫cmake/ctest吐出来?
更新:现在我知道我可以键入ctest -V以显示详细输出,但我怎样才能实现相同的使用make test?
如果我想使用Web服务器,消息队列和x N工作进程处理客户端请求,通常的模式是什么?
我能想到的是:
工作人员从队列中取出作业,处理它,保存结果供客户端轮询.因此,Web服务器和工作者之间没有通信
工作人员从队列中取出作业,处理它,将其发送到结果队列,这将由Web服务器使用(如何使用express执行此操作?),然后Web服务器将其发送回客户端.同时客户端将等待(这仍称为长轮询吗?)
Web服务器立即返回响应,将作业推送到工作队列.工作人员从队列中获取作业,处理它,将其发送到结果队列,该队列将由Web服务器使用,然后Web服务器通过websocket将其发送给客户端.在这种情况下,客户端不必.
以下哪些最常用?或者有更好的解决方案吗?
我有一个迷你AST结构,其中每个节点可能有一个左和右子,例如:
class AstNode;
typedef std::shared_ptr<AstNode> AstNodePtr;
class AstNode
{
public:
AstNode()
: m_children(2)
{
}
virtual ~AstNode()
{
}
virtual void accept(AstNodeVisitor& visitor) = 0;
void addLeft(const AstNodePtr& child);
void addRight(const AstNodePtr& child);
const AstNodePtr left() const;
const AstNodePtr right() const;
private:
std::vector<AstNodePtr> m_children;
};
Run Code Online (Sandbox Code Playgroud)
它对我到目前为止所需的操作非常有用,但是当涉及到一个分支语句时,我不知道如何使用这个二叉树结构来实现它.根据维基,分支声明将有3个叶子:

我现在可以侥幸逃脱,因为我的大部分if语句都没有,所以条件将是左子,if-body将是正确的孩子.但它不适用于其他身体.我可以在分支节点本身中嵌入条件,这意味着在分支节点上进行预先遍历遍历,但是感觉不舒服,因为在评估自身时没有其他类型的节点涉及潜在的子树遍历.
也许AST不应该是二叉树,而是每个节点都可以有任意数量的子节点,但这(我认为)会使实现有点尴尬.有什么建议吗?
Haskell中Int(有界整数)的大小是多少,或者我应该在GHC中说什么?
作为练习,我编写了一个简短的程序来获取Int中设置的位数
import Data.Bits
getBits :: Int -> Int
getBits x
| x == 0 = 0
| otherwise = 1 + (getBits y)
where y = x .&. (x - 1)
main = do
putStrLn "type a integer"
num <- getLine
let n = read num :: Int
putStrLn $ "result is: " ++ show (getBits n)
Run Code Online (Sandbox Code Playgroud)
如果输入数字-1,则结果为64,表示Int的大小为64位.为什么会这样?为什么它不像C/C++那样是32位?
c++ ×3
haskell ×2
javascript ×2
node.js ×2
cmake ×1
css ×1
express ×1
googletest ×1
http ×1
line-numbers ×1
logging ×1
performance ×1
websocket ×1