小编Ian*_*Ian的帖子

在Sublime Text 2中使用Ctrl + D进行多项选择时如何跳过匹配?

我有一些代码:

testVar = { a: 1 };
testVariable1 = 2;
var c = testVar.a + testVariable2;
var d = testVar;
Run Code Online (Sandbox Code Playgroud)

我想重命名"testVar"变量.当我使用Ctrl+ D和编辑变量设置多个游标时,也会选择并编辑"testVariable".

有没有办法在用Ctrl+ 设置多个游标时跳过一些选择D

windows sublimetext2

173
推荐指数
5
解决办法
4万
查看次数

在Python中嵌入低性能脚本语言

我有一个网络应用程序.作为其中的一部分,我需要应用程序的用户能够编写(或复制和粘贴)非常简单的脚本来运行他们的数据.

脚本确实非常简单,性能只是最小的问题.脚本的复杂性的例子我的意思是:

ratio = 1.2345678
minimum = 10

def convert(money)
    return money * ratio
end

if price < minimum
    cost = convert(minimum)
else
    cost = convert(price)
end
Run Code Online (Sandbox Code Playgroud)

价格和成本是全局变量(我可以将这些变量提供给环境并在计算后访问).

但是,我确实需要保证一些东西.

  1. 运行的任何脚本都无法访问Python环境.他们无法导入东西,调用我没有明确公开的方法,读取或写入文件,生成线程等等.我需要完全锁定.

  2. 我需要能够对脚本运行的"周期"数量进行硬限制.Cycles是这里的通用术语.如果语言是字节编译的,则可以是VM指令.Apply-调用Eval/Apply循环.或者只是通过一些运行脚本的中央处理循环进行迭代.细节并不像我能够在短时间内停止运行并向所有者发送电子邮件并说"你的脚本似乎只是添加几个数字 - 将它们整理出来".

  3. 它必须在Vanilla未修补的CPython上运行.

到目前为止,我一直在编写自己的DSL来完成这项任务.我能做到.但我想知道我是否可以建立在巨人的肩膀上.是否有可用于Python的迷你语言?

有很多hacky Lisp变种(即使是我在Github上写过的),但是我更喜欢具有更多非专业语法的东西(比如更多的C或Pascal),并且我正在考虑将其作为编码的替代方案一个人,我想要一些更成熟的东西.

有任何想法吗?

python scripting-language embedded-language

17
推荐指数
3
解决办法
2807
查看次数

在v8中为值句柄转换为ToXXX

我将V8作为辅助语言嵌入到C++程序中.

Handle<Value>当我打电话的时候,我从V8中检索了一个

Handle<Value> value_handle = context->Global()->Get(key_handle);
Run Code Online (Sandbox Code Playgroud)

然后我可以发现它是(比方说)一个字符串value_handle->IsString().如果是这样,我可以将其转换Handle<String>为访问其特定于字符串的方法.

但似乎有两种方法可以做到:

Handle<String> string = value_handle->ToString();
Run Code Online (Sandbox Code Playgroud)

要么

Handle<String> string = Handle<String>::Cast(value_handle);
Run Code Online (Sandbox Code Playgroud)

但是,对于数组和函数,没有toArray()toFunction方法,只有转换.

所以我的问题是:a)是ToXXX铸造的唯一语法糖?并且,如果不是b)ToXXX方法在做什么?

javascript c++ v8

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

Haskell表达式等价物

我是一个非常新的Haskell学习者.我有一个工作表达式:

do x <- try parseA <|> parseB
   return x
Run Code Online (Sandbox Code Playgroud)

看起来效果很好(我正在使用这个Parsec包,但我希望这个问题与它的功能无关,据我所知<|>是Parsec定义的中缀运算符).parseA并且parseB两者都具有Parser Foomonad类型,整个表达式也是如此.

根据我到目前为止所读到的内容,它似乎应该相当于

do return (try parseA <|> parseB)
Run Code Online (Sandbox Code Playgroud)

do return $ try parseA <|> parseB
Run Code Online (Sandbox Code Playgroud)

但后者没有编译,他们抱怨不匹配的类型(下面的错误).

我的其他尝试重写这个,如

(try parseA <|> parse B) >>= return
Run Code Online (Sandbox Code Playgroud)

似乎工作.但如果我也误解了这一点,请说.

所以我的问题是,有人可以解释为什么前三个是不同的.我很困惑他们为什么不等同.我错过了什么?


错误(如果这是相关的,虽然fwiw我不想'修复'我的代码 - 我有一个工作版本,我想了解版本的不同之处):

do return (try parseA <|> parseB)
Run Code Online (Sandbox Code Playgroud)

parse.hs:76:11:
    Couldn't match expected type ‘Foo’
                with actual type ‘Text.Parsec.Prim.ParsecT
                                    [Char] () Data.Functor.Identity.Identity Foo’
Run Code Online (Sandbox Code Playgroud)

do return $ try parseA <|> parseB …
Run Code Online (Sandbox Code Playgroud)

haskell

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

如何将'hermite'曲线转换为贝塞尔曲线?

正如主题所述:如何将Hermite曲线转换为Bezier曲线?具体来说,我正在寻找一种方法来转换使用Hermite插值的Curve类,使用Windows Presentation Foundation的StreamGeometry或PathGeometry绘制Microsoft XNA Framework.

我遇到了一个类似的问题([在OpenGL中绘制Hermite曲线],答案如下.

[b0] = 1 [ 3  0  0  0] [h0]
[b1]   - [ 3  0  1  0] [h1]
[b2]   3 [ 0  3  0 -1] [v0]
[b3]     [ 0  3  0  0] [v1]
Run Code Online (Sandbox Code Playgroud)

这简化为:

b0 = h0
b1 = h0 + v0/3
b2 = h1 - v1/3
b3 = h1
Run Code Online (Sandbox Code Playgroud)

即使有这些信息,我实际上仍然坚持计算控制点.问题是Curve类将TangentIn和TangentOut公开为标量.鉴于多项式的绘制发生在二维空间(时间,值)中,该标量需要被转换为二维向量以便将其应用于该公式.但是我不确定这个转换过程涉及的步骤是什么,但我怀疑我需要应用Hermite微分方程.

如果有帮助,这就是用于评估Reflector中给定时刻曲线的代码.

private static float Hermite(CurveKey k0, CurveKey k1, float t)
{
     if (k0.Continuity == CurveContinuity.Step)
     { 
         if (t >= 1f)
         {
             return k1.internalValue;
         } …
Run Code Online (Sandbox Code Playgroud)

c# math wpf xna bezier

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

仅从Travis发送数据到Coveralls,而不是在本地测试时

我有一个应用程序(https://github.com/idmillington/dendry)使用Travis CI来监控构建状态.我使用伊斯坦布尔来概括覆盖率报告,我想将其发送给Coveralls,为README生成一个覆盖按钮.

所有这些我都能开始工作.但...

当我在npm test本地运行时,我不想向工作服发送覆盖数据.npm test每次提交我通常会运行几十次.但是当我推动特拉维斯做其事时,我希望特拉维斯为我更新报道.

我可以在package.json中有这样的东西:

"scripts": {
    "test": "./node_modules/.bin/istanbul test ./node_modules/.bin/_mocha",
}
Run Code Online (Sandbox Code Playgroud)

哪个适用于本地,不更新工作服,但Travis也不会更新工作服.或者我可以这样做:

"scripts": {
    "test": "./node_modules/.bin/istanbul test ./node_modules/.bin/_mocha && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info",
}
Run Code Online (Sandbox Code Playgroud)

这对Travis来说是完美的,但每次我在npm test本地运行时都会尝试将数据推送到Coveralls .

据我所知,我不能要求特拉维斯经营其他事情npm test.

我不愿意让任何潜在的用户或贡献者记住测试使用

$ npm run-script test-local
Run Code Online (Sandbox Code Playgroud)

或某些此类,尤其是在npm test没有正确的工作服私钥的情况下运行会产生上传错误.

有没有办法在这里获得正确的行为?

node.js npm travis-ci coveralls

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

模态和子视图控制器如何交互?

我有一个自定义容器视图控制器:ContainerVC.它的工作是呈现两个内容视图控制器之一:ContentPortraitVC或者ContentLandscapeVC,根据当前的方向(尽管容器选择其视图的原因并不重要,我推测).ContentPortraitVC,在某些时候弹出ContentModalDetailVC.

因此,有两种不同的方法可以在这里显示新内容:

  • 父母与子女的关系(通过唆使addChildViewController和移除removeFromParentViewController),

  • 呈现和呈现的关系(通过发起presentViewController和删除通过dismissViewController).

如果ContainerVC添加ContentPortraitVC,然后显示ContentModalDetailVC,然后ContainerVC决定切换到ContentLandscapeVC,则ContentModalDetailVC保持可见(为什么在删除其父项时不删除?)

但是,当ContentPortraitVC被要求删除时ContentModalDetailVC,没有任何反应.模态显示保持不变.到底是怎么回事?

modal-dialog uiviewcontroller ios

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

在 makefile 规则中提取匹配项的一部分

我有一个生成文件,它在不同的地方生成一堆版本的图像:

website/img/logo_256.png
website/img/logo_152.png
/tmp/logo_64.png
Run Code Online (Sandbox Code Playgroud)

等等( /tmp/ 生成是为了以后我可以使用这些文件来生成多分辨率.ico,其细节并不重要)。

我想要一个表格规则

logo_%.png: ${SRC}
        convert $^ -thumbnail $*x$* $@
Run Code Online (Sandbox Code Playgroud)

但是,也$*引入了匹配的目录,所以我得到了以下形式的命令:

convert logo_1024.png -thumbnail /tmp/64x/tmp/64 /tmp/logo_64.png
Run Code Online (Sandbox Code Playgroud)

这是不正确的(我需要48x48,不是/tmp/48x/tmp/48)。

或者我可以写

/tmp/logo_%.png: ${SRC}
        convert $^ -thumbnail $*x$* $@
website/img/logo_%.png: ${SRC}
        convert $^ -thumbnail $*x$* $@
Run Code Online (Sandbox Code Playgroud)

这看起来很丑。

我确信有一些方法可以分解和模式匹配$@以获得我想要的东西,但我不是 makefile 专家,所以这需要一些研究。

什么是最简单的方法来做到这一点?

makefile

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

Objective C Idioms - 属性,ivars和needsDisplay

这是我经常遇到的一种情况,足以使样板代码浪费,而且我确信我不能成为唯一的代码.这是一个单一的,是否有更好的方法,或者我每次都必须这样做?

@interface SomeUIElement : UIView
@property CGFloat insetMargin; // <-- just an example of a UI parameter
@end

@implementation SomeElement
- (void)setInsetMargin:(CGFloat)insetMargin {
    _insetMargin = insetMargin;
    [self setNeedsDisplay]; // <-- the only thing that stops it being synthesized
}
@end
Run Code Online (Sandbox Code Playgroud)

现在这引发了一个编译警告,我没有一个getter,摆脱我可以添加

- (CGFloat)insetMargin {
    return _insetMargin;
}
Run Code Online (Sandbox Code Playgroud)

但现在,它抱怨我没有ivar(因为定义的getter和setter意味着没有为我创建),所以我需要添加

@interface SomeUIElement () {
    CGFloat _insetMargin;
}
Run Code Online (Sandbox Code Playgroud)

这意味着我们需要在属性发生变化时强制显示更新,这是一个巨大的开销.

有没有(a)某种方式告诉ObjC我确实打算为我创建getter和ivar,所以我只需要编写setter,或者(b)更好的方式来请求显示更新当属性相关时视觉外观变化?

Apple的SDK如何做到这一点(我假设我没有错过任何观看方式,比如UILabel来源)?

properties objective-c uikit ivar synthesize

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

关于__new__失去其论点的最佳解决方案的任何想法?

所以,我今天才意识到__new__,从python 2.6开始,对于接收参数已被弃用了(文档中没有提到它,就我所看到的__new__调用行为而言,这也是不正确的__init__).这意味着我的功能代码已经开始发出警告,我想摆脱它们.但我看不出一种优雅的解决方法.

我有一堆类在构造时执行优化.所以我有

class Conjunction(Base):
    def __new__(cls, a, b):
       if a == True: 
          return b
       elif b == True
          return a
       else:
          return super(Conjunction,cls).__new__(cls, a, b)
Run Code Online (Sandbox Code Playgroud)

等等(真实版本涵盖更多案例).因此,与Guido在此响应中所说的不同(我可以找到它的唯一引用),我的__new__方法确实使用了它的参数,并且不能被重写的__init__函数替换.

我能做的最好的就是把它分成两部分:

def Conjunction(a, b):
   if a == True: 
      return b
   elif b == True
      return a
   else:
      return ConjunctionImpl(a, b)

class ConjunctionImpl(Base):
   # ...
Run Code Online (Sandbox Code Playgroud)

但这很丑陋,对高天堂很臭.我是否缺少一种优雅的方法让类构造函数根据给定的构造函数参数返回一些任意对象?

python

3
推荐指数
2
解决办法
1160
查看次数