在看过BlackTree不再支持QuickSilver并且已经开源之后,我注意到越来越多的人切换到/建议其他应用程序启动器,即Buttler和LaunchBar.
QuickSilver仍然相关吗?自从它开源以来,有没有人经历过任何不稳定?
我尝试外化我编写的任何应用程序中使用的所有字符串(和其他常量),原因很多,这可能是大多数堆栈溢出程序的第二天性,但我想要的是能够自动执行任何拼写检查.用户可见的字符串.这会带来几个问题:
你如何将这样的东西融入你的构建过程/测试套件中?每次更改应用程序时,有人手动拼写检查应用程序中的所有字符串是不可行的 - 并且第一次拼写错误的可能性不大.
我正在使用类似模板的编辑器创建DSL,就像Alice中的规则系统一样.用户将能够从列表中选择关系以及要应用关系的对象.应根据可接受的类型过滤这两个列表 - 例如,如果关系"大于",则可用对象必须是实现"大于"的类型.
类似地,如果选择的对象与大于的对象不可比,那么该关系不应该在潜在关系列表中.我认为这个问题的核心是类型检查器,但我不确定在我的应用程序中合并这种类型的逻辑的最佳方法.是否有人知道DSL的现有类型检查库?
我对开源和跨平台技术特别感兴趣.Java可能是我们最终会使用的语言,但这不是固定的.
我经常需要在java中运行reduce(也称为foldl/foldr,具体取决于你的上下文)来聚合Itterable的元素.
Reduce采用集合/可迭代/ etc,两个参数的函数和可选的起始值(取决于实现细节).该函数连续应用于集合的元素和先前调用的输出reduce,直到处理完所有元素,并返回最终值.
在任何常见的java api中是否存在类型安全的reduce实现?Google Collections 似乎应该有一个,但我一直无法找到它.(可能是因为我不知道它会使用什么其他名称.)
我遇到了今天Java没有调用我预期的方法的情况 - 这是最小的测试用例:(对不起,这似乎是人为的 - '真实世界'场景要复杂得多,而且更有意义从"究竟为什么会怎么做那?"的立场.)
我特别感兴趣的是为什么会这样,我不关心重新设计的建议.我有一种感觉,这是在Java Puzzlers,但我没有我的副本方便.
请参阅以下Test <T> .getValue()中的具体问题:
public class Ol2 {
public static void main(String[] args) {
Test<Integer> t = new Test<Integer>() {
protected Integer value() { return 5; }
};
System.out.println(t.getValue());
}
}
abstract class Test<T> {
protected abstract T value();
public String getValue() {
// Why does this always invoke makeString(Object)?
// The type of value() is available at compile-time.
return Util.makeString(value());
}
}
class Util {
public static String makeString(Integer i){
return …
Run Code Online (Sandbox Code Playgroud) 我需要将数据类型序列化为使用的磁盘Data.Text
,这是一个例子:
{-# LANGUAGE DeriveGeneric #-}
import Data.Serialize (Serialize)
import Data.Text (Text)
import GHC.Generics
data Foo = Foo Text deriving (Read, Show, Eq, Ord, Generic)
instance Serialize Foo
-- instance Serialize Text
Run Code Online (Sandbox Code Playgroud)
如上所述,这会产生错误:
No instance for (Serialize Text)
arising from a use of `Data.Serialize.$gdmput'
Possible fix: add an instance declaration for (Serialize Text)
In the expression: (Data.Serialize.$gdmput)
In an equation for `put': put = (Data.Serialize.$gdmput)
In the instance declaration for `Serialize Foo'
Run Code Online (Sandbox Code Playgroud)
如果我取消注释该instance Serialize Text
行,那么这个更加神秘的错误就出现了:
No instance …
Run Code Online (Sandbox Code Playgroud) 我经常需要实现某种用户可编辑的规则系统 - 要求通常不同,以至于同一系统不能直接应用,所以我经常遇到同样的问题 - 如何设计规则系统那
我认为规则系统/ DSL非常有价值,但我对我正确设计它们的能力感到不舒服.
您提供哪些参考/提示可能有助于使这更容易?
由于我遇到的问题的性质,现有的语言通常不适用.(例如,你不能要求普通计算机用户学习,以写电子邮件过滤器蟒蛇.)同样,规则语言,如JESS,都只能解决部分问题,因为一些(简单)的用户界面需要建立在 - 规则语言的顶层,以便非程序员可以使用它.该界面总是涉及移除一些特征,或使这些特征更难以使用,并且该过程带来上述相同的问题.
编辑:为了澄清,问题是关于设计规则引擎,我不是在寻找预建的规则引擎.如果您建议使用规则引擎,请解释它如何解决有关做出正确设计决策的问题.
是否有一种简单的方法可以识别Android应用程序所需的所有API调用,以便在Android M(6,API 23)中使用运行时权限?
您似乎只需通过测试,试验和错误或专家知识来解决这些问题(例如:倾注API文档和源代码).我预计Google会发布迁移工具,但我没有看到任何证据. 如果有人在安装后禁用对权限的访问权限,即使您没有在清单中使用运行时权限标记,也不会这样做会使您的应用程序容易受到运行时崩溃的影响.
迁移到运行时权限的最佳做法是什么?
我经常需要对具有区分大小写的不同要求的Data.Text值进行比较 - 当我使用chatter进行NLP任务时,这经常会出现.
例如,在搜索令牌以寻找信息提取任务时,我经常需要根据比标准字符串相等性更少限制的等式关系进行搜索.区分大小写是这些更改中最常见的,但它通常是特定标记的函数.像"激活"这样的术语通常可能是小写,但如果它是句子中的第一个单词,它将以一个主要资本开头,或者如果在标题文本中使用可能是全部大写或大写中句,那么忽略案例的比较是有道理的.相反,首字母缩略词(例如,"US")具有取决于大小写的不同语义.
这就是说我不能轻易地为每个相等类创建一个类型类包装器,因为它是一个价值驱动的方面.(所以不区分大小写的包看起来不像它会起作用).
到目前为止,我正在使用toLower
规范表示,并比较这些表示,以便我可以创建带有敏感性标记的文本比较函数的自定义版本,例如:
matches :: CaseSensitive -> Text -> Text -> Bool
matches Sensitive x y = x == y
matches Insensitive x y = (T.toLower x) == (T.toLower y)
Run Code Online (Sandbox Code Playgroud)
但是,我担心这需要额外传递输入文本.我可以想象它在某些情况下融合,但可能不是全部(例如:T.isSuffixOf,T.isInfixOf).
有一个更好的方法吗?
java ×3
dsl ×2
haskell ×2
android ×1
app-launcher ×1
build ×1
collections ×1
comparison ×1
filtering ×1
generics ×1
intellisense ×1
macos ×1
migration ×1
overloading ×1
permissions ×1
quicksilver ×1
reduce ×1
rules ×1
text ×1
types ×1