我正在为Web应用程序编写一个日志文件查看器,为此我想通过日志文件的行分页.文件中的项目是基于行的,底部是最新项目.
所以我需要一种tail()
方法,可以n
从底部读取行并支持偏移量.我想出的是这样的:
def tail(f, n, offset=0):
"""Reads a n lines from f with an offset of offset lines."""
avg_line_length = 74
to_read = n + offset
while 1:
try:
f.seek(-(avg_line_length * to_read), 2)
except IOError:
# woops. apparently file is smaller than what we want
# to step back, go to the beginning instead
f.seek(0)
pos = f.tell()
lines = f.read().splitlines()
if len(lines) >= to_read or pos == 0:
return lines[-to_read:offset and -offset or None]
avg_line_length …
Run Code Online (Sandbox Code Playgroud) 对于我的项目,我很乐意为特定的textarea提供自动完成功能.类似于intellisense/omnicomplete的工作原理.然而,我必须找出绝对光标位置,以便我知道DIV应该出现在哪里.
事实证明:那是(几乎我希望)无法实现的.有没有人有一些巧妙的想法如何解决这个问题?
不久之前,我遇到了一个Python库,它将常规文本格式化为HTML,类似于Markdown,reStructuredText和Textile,只是它根本没有语法.它仅检测到缩进,引号,链接和换行/段落.
不幸的是,我丢失了图书馆的名称而无法使用谷歌.任何想法?
编辑: reStructuredText又名rst == docutils.这不是我想要的:)
现在我正在设置一个即将打开的窗口的位置:
-(void) setActiveNodeDialog:(ISKNodeDialogController *)dialog
{
if (activeNodeDialog)
[[activeNodeDialog window] close];
activeNodeDialog = dialog;
if (activeNodeDialog) {
[activeNodeDialog setMainWindowController:self];
NSRect windowRect = [[self window] frame];
NSRect dialogRect = [[activeNodeDialog window] frame];
NSPoint pos;
pos.x = windowRect.origin.x + windowRect.size.width - dialogRect.size.width - 10;
pos.y = windowRect.origin.y + 32;
[[activeNodeDialog window] setFrameOrigin:pos];
[[activeNodeDialog window] makeKeyAndOrderFront:nil];
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,窗口将在显示时"跳转".即使我在使用"makeKeyAndOrderFront"显示窗口之前设置了位置.窗户是NSPanel *
.任何想法如何解决跳跃?
在awakeFromNib中设置位置不是一个选项,因为稍后会设置主控制器.
我想检查HTML5画布中两个Sprite之间的碰撞.因此,为了讨论,让我们假设两个精灵都是IMG对象,并且碰撞意味着alpha通道不是0.现在这两个精灵都可以围绕对象的中心旋转,但是如果这样做则没有其他变换更容易.
现在,我想出的明显解决方案是:
我看到的问题是:a)JavaScript中没有矩阵类,这意味着我必须在JavaScript中这样做,这可能非常慢,我必须测试每帧的冲突,这使得这相当昂贵.此外,我必须复制我在绘图时必须做的事情(或者画布对我来说,设置矩阵).
我想知道我在这里是否遗漏了什么,以及是否有更容易的碰撞检测解决方案.
我有一个实现交互式shell的应用程序,类似于Python控制台/ irb的工作方式.现在的问题是,如果用户意外命中^D
EOF,我的getline()
调用将返回一个空字符串,我将其视为"无输入"并再次显示提示.
然后,这将导致无限循环打印提示.
现在在Python中我会通过捕获来解决这个问题EOFError
,但是在C++中没有引发异常,我可以捕获并且似乎没有设置cin
忽略EOF.
任何提示?
我正在尝试开发一个reStructuredText插件并做一些基本的错误.
我的插件对象如下所示:
class RSTPlugin(Plugin):
name = 'RST'
description = 'RST plugin'
def on_setup_env(self, **extra):
self.env.jinja_env.filters['markdown'] = \
jinja2.contextfilter(lambda ctx, *a, **kw: RST(*a, **kw))
Run Code Online (Sandbox Code Playgroud)
现在:on_setup_env
调用该函数.请注意,我正在替换markdown dict条目(暂时).但是当我运行lektor时,原来的Markdown类被调用而不是我的RST类.