小编Lie*_*yan的帖子

Jquery - 如何将字符插入输入

有人可以帮我解决这个问题吗...

我正在做一个网络表格.我想将美元符号插入到一些具有数字类的INPUT中.我希望用户的内容遵循美元符号或课程.

这会插入美元符号OK,但内容最终会在它前面.

$('input.numberfield').val('$');
Run Code Online (Sandbox Code Playgroud)

注意 - 美元符号是必需的,因为这是财务数据(与jquery无关!:))

换句话说 - 有人输入'100'并且它变成'100美元')

jquery

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

斯卡拉鸭打字模式匹配

我有一个类似下面的案例类:

// parent class
sealed abstract class Exp()

// the case classes I want to match have compatible constructors
case class A (a : Exp, b : Exp) extends Exp
case class B (a : Exp, b : Exp) extends Exp
case class C (a : Exp, b : Exp) extends Exp

// there are other case classes extending Exp that have incompatible constructor, e.g.
//     case class D (a : Exp) extends Exp
//     case class E () extends …
Run Code Online (Sandbox Code Playgroud)

scala pattern-matching case-class

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

如何防止在 mmap() 处理文件后对底层文件的更改对我的程序可见?

根据mmap()手册页:

MAP_PRIVATE

创建私有写时复制映射。映射的更新对于映射同一文件的其他进程来说是不可见的,并且不会传递到底层文件。 未指定 mmap() 调用后对文件所做的更改是否在映射区域中可见。

问题:如何防止在 mmap() 处理文件后对底层文件的更改对我的程序可见?


背景:我正在为文本编辑器设计一个数据结构,旨在允许有效地编辑巨大的文本文件。数据结构类似于磁盘上的绳索,但实际字符串是指向原始文件中 mmap() 范围的指针。

由于文件可能非常大,因此设计有一些限制:

  1. 不得将整个文件加载到 RAM 中,因为该文件可能大于可用的物理 RAM

  2. 不得在打开时复制文件,因为这会使打开新文件变得非常慢

  3. 必须适用于不支持写时复制 ( cp --reflink/ ioctl_ficlone)的文件系统,例如 ext4

  4. 不得依赖强制文件锁定,因为这已被弃用,并且需要-o mand文件系统中的特定挂载选项

  5. 只要更改在我的 mmap() 中不可见,底层文件就可以在文件系统上更改

  6. 只需要支持最近的Linux并且使用Linux特定的系统API就可以了

我正在设计的数据结构将通过将范围的开始和结束索引存储到 mmap()-ed 缓冲区中来跟踪文件中未编辑和已编辑范围的列表。当用户浏览文件时,从未被用户修改过的文本范围将直接从mmap()原始文件中读取,而交换文件将存储用户已编辑但已更改的文本范围。没有被拯救。

当用户保存文件时,数据结构会使用copy_file_range来拼接交换文件和原始文件以组装新文件。为了使这种拼接发挥作用,我的程序所看到的原始文件必须在整个编辑会话期间保持不变。

问题:在我的文本编辑器中进行未保存的更改后,用户可能同时让其他程序修改同一文件,可能是其他文本编辑器或就地修改文本文件的其他程序。

在这种情况下,编辑器可以使用 inotify 检测此类外部更改,然后我想为用户提供两个关于如何继续的选项:

  1. 放弃所有未保存的更改并从磁盘重新读取文件,实现此选项相当简单

  2. 允许用户继续编辑文件,稍后用户应该能够将未保存的更改保存在新位置或覆盖其他程序所做的更改,但实现这一点似乎很棘手

由于我的编辑器在打开文件时没有复制该文件,因此当其他程序覆盖该文件时,我的数据结构正在跟踪的文本范围可能会变得无效,因为磁盘上的数据已更改,并且这些更改现在已更改通过我可见mmap()。这意味着,如果我的编辑器在从另一个进程修改文件后尝试写入未保存的更改,则可能会使用新文件中的数据来拼接旧文件中的文本范围,这可能意味着我的编辑器可能会生成保存未保存的更改时损坏的文件。

我不认为咨询锁在所有情况下都能挽救这种情况,因为其他程序可能不支持咨询锁。

我理想的解决方案是,当其他程序覆盖该文件时,系统应该透明地复制该文件,以允许我的程序继续看到旧版本,而其他程序完成对磁盘的写入并使其版本在文件中可见。文件系统。我认为 ioctl_ficlone 可以使这成为可能,但据我了解,这只适用于像 btrfs 这样的写时复制文件系统。

这样的事可能吗?


任何其他解决此问题的建议也将受到欢迎。

linux locking mmap file copy-on-write

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

OpenGL缓冲区的状态如何在程序运行之间持续存在?

我正在编写一个绘制到辅助缓冲区的OpenGL程序,然后辅助缓冲区的内容在GL_RETURN-ed到Back缓冲区之前累积到累积缓冲区(基本上要合成到屏幕).简而言之,我正在做一些运动模糊.然而奇怪的是,当我重新编译并重新运行我的程序时,我看到前一个程序中的辅助/累积缓冲区的内容运行.这根本不符合逻辑.我误解了什么,当程序重启时,OpenGL的状态是否应该完全重置?

我正在GeForoo Linux nVidia驱动程序195.36.31上编写一个SDL/OpenGL程序,在GeForce Go 6150上.

c++ opengl sdl framebuffer

5
推荐指数
2
解决办法
351
查看次数

如何在Wing IDE中终止Python shell?

我是Python的新手,并且一直在使用Wing IDE来使用这些功能.我在环顾四周时可以找到的一件事是在执行一个不会很快终止的命令时如何强制终止Python shell.一个例子是:

import math
math.factorial(1000000)
Run Code Online (Sandbox Code Playgroud)

我知道在Visual Studio C++中,命令是Ctrl + C,但Python究竟是什么呢?

python shell wing-ide

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

为网页设计RESTful URL

大多数REST教程安排资源如下:

GET  /car/      -> list of cars
GET  /car/<id>/ -> info about specific car
POST /car/      -> create a new car
Run Code Online (Sandbox Code Playgroud)

但是当构建用于浏览器的Web应用程序时,有一个很少讨论的缺失链接,在你发布到/ car /之前,你需要获取一个用于创建新资源(汽车)的表单.该表单的URL应该是什么?

我通常使用:

 GET  /car/new/ -> form for creating a new car
 POST /car/new/ -> redirect to /car/<id>/ if item is created else show form with invalid fields highlighted
Run Code Online (Sandbox Code Playgroud)

但根据http://www.slideshare.net/Wombert/phpjp-urls-rest,这不是一个好的REST URL.我可以看出为什么它不是一个好的REST,因为"new"实际上被用作动词而不是资源,但是那时应该在哪里表单,因为GET /car/已经用于列出汽车,所以你不能GET /car/用于表单对于新车.

简而言之,我的问题是:"创建资源表单的RESTful URL是什么?"

在一个稍微相关的说明中,即使在Web服务中,有时并不总是明智地依赖客户提前知道模式,因此即使在Web服务中,也可能需要客户端请求资源的当前方式.架构.AFAICS,这与需要获取创建表单的类似情况(即表单有点像描述如何构造用于创建资源的POST查询的模式).我的思路是否正确?

rest web-applications django-urls

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

正则表达式 - 字符串替换"按原样"

我想这样做:

单词test应该在某些文本中找到并替换为<strong>test</strong>.但事情是,Test应该也被抓住并被替换<strong>Test</strong>.

我试过这个:

word = "someword"
text = "Someword and many words with someword"
pattern = re.compile(word, re.IGNORECASE)
result = pattern.sub('<strong>'+word+'</strong>',text)
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,Someword正在成为someword.我用re错了吗?

我想要 <strong>Someword</strong> and many words with <strong>someword</strong>

python regex

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

清除不同高度的浮动块行

我正在使用略微修改的Soh Tanaka的Smart Columns,但在他的示例中,所有块/列具有相同的高度.如果我有不同高度的div,那么该技术就像下面的jsfiddle一样.我不喜欢DeSandro的Masonry如何处理高度问题,因为它根据窗口大小重新对块进行解扰,因此列表失去了隐含的顺序排序,所以我正在探索一个不同的解决方案.

我目前正在尝试的解决方案就是这个,但是我在尝试清除行/行的两侧时遇到了问题.我可以使用javascript在<span style="clear: both;"></span>每个行/行的末尾插入一个,但是当调整窗口大小并且单个页面中有多组这样的智能列时,这会导致更多问题.虽然我确信我可以编写一个脚本来处理这些案例,但我认为可能有一种更简单的方法.

最简单的方法是什么,当浮动块的列表需要换行时,它应该从前一行/行的最高框的底部开始?仅支持CSS的解决方案,但基于javascript/jQuery的解决方案是可以接受的.

换句话说,我希望浮动块,就像不同大小的字母"浮动"一样(默认情况下,字母在其基线处垂直对齐,但对于div块,顶部对齐可能看起来更好):

在此输入图像描述

html css

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

从Linux上的汇编代码调用SDL/OpenGL

我正在大会上为学习目的写一个简单的基于图形的程序; 为此,我打算使用OpenGL或SDL.我试图从汇编中调用OpenGL/SDL的功能.

问题是,与我在互联网上发现的许多汇编和OpenGL/SDL教程不同,我机器中的OpenGL/SDL显然不使用C调用约定.我在C中编写了一个简单的程序,将其编译为程序集(使用-S开关),显然GCC生成的汇编代码通过在寄存器中传递参数而不是被推送到堆栈来调用OpenGL/SDL函数.

现在,问题是,如何确定如何将参数传递给这些OpenGL/SDL函数?也就是说,我如何确定哪个参数对应哪个寄存器?

显然,由于GCC可以编译C代码来调用OpenGL/SDL,因此必须有办法找出函数参数和寄存器之间的对应关系.在C调用约定中,规则很简单,向后推送参数并在eax/rax中返回值,我可以简单地阅读他们的C文档,我可以很容易地弄清楚如何传递参数.但这些怎么样?

有没有办法使用C调用约定调用OpenGL/SDL?

顺便说一下,我正在使用yasm,gcc/ld作为Gentoo Linux amd64上的链接器.

assembly x86-64 calling-convention

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

为什么我的深度优先搜索实施被破坏了

我一直在尝试实现深度优先搜索的不同方法.我找到了一些工作方法,但它们涉及一些相当繁琐的字典工作.我使用列表开发了一个新想法,但此实现返回的操作与所需的结果不匹配.我会尝试尽可能清楚地评论代码:

start = problem.getStartState()            ## returns an (x, y) tuple
children = problem.getSuccessors(start)    ##returns the children of a parent node in ((start                  
                                           state), action, cost) format. 
stack = Stack()                            ##creates a Stack (LIFO) data structure
visited = []                               ##list of visited nodes
visited.append(start)
for child in children:
    stack.push((child, [], [], 0))         ##push children to fringe in the format of (child,
    while stack:                           ##path taken, actions taken, cost) 
        parent = stack.pop()
        node = parent[0]
        if parent[0] in visited: continue
        visited.append(parent[0])
        path …
Run Code Online (Sandbox Code Playgroud)

python algorithm depth-first-search

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

我的基地在哪里创建?

如果我有:

struct Base
{
};

struct Derived : Base
{
};
Run Code Online (Sandbox Code Playgroud)

我创建了Derived in main:

Derived* d = new Derived;
Run Code Online (Sandbox Code Playgroud)

我的基地创建在哪里(在堆上或堆栈上)?我是否正确地推断Base是Derived的一部分,因此它是在创建Derived的地方创建的?或者它以其他方式工作?

c++ inheritance

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