问题列表 - 第30880页

Haskell多参数类型类中的上下文是什么

在Real World Haskell的第15章中,定义了一个类型类:

class (Monad m) => MonadSupply s m | m -> s where
Run Code Online (Sandbox Code Playgroud)

稍后几段,它说因为上下文而不需要定义>> =和return.但是没有进一步解释上下文意味着什么.

如果只有'm'是Monad的实例,编译器如何知道MonadSupply是Monad的实例?

monads haskell typeclass

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

从Eclipse中的当前工作空间获取所有类

我正在编写Eclipse插件,我试图创建一个方法,在ArrayList <\ Class <\?>>中返回工作空间中的所有类(我添加了"\"以包含通用括号,因为html不会让我这样做吧.

这是我的代码:

private ArrayList<Class<?>> getAllClasses() throws JavaModelException {

 ArrayList<Class<?>> classList = new ArrayList<Class<?>>();

 IWorkspace workspace = ResourcesPlugin.getWorkspace();
 IWorkspaceRoot root = workspace.getRoot();
 IProject[] projects = root.getProjects();

 for (IProject project : projects) {
  IJavaProject javaProject = JavaCore.create(project);
  IPackageFragment[] packages = javaProject.getPackageFragments();

  for (IPackageFragment myPackage : packages) {
   IClassFile[] classes = myPackage.getClassFiles();

   for (IClassFile myClass : classes) {
    classList.add(myClass.getClass());
   }
  }
 }

    return classList;
}
Run Code Online (Sandbox Code Playgroud)

然而,这似乎不起作用.我有一些印刷线,我发现它还包括不相关的类(即来自Java\jre6\lib\rt.jar的类).有什么建议?

java eclipse plugins class

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

获取HTML元素相对于Window的边界框的正确方法是什么?

我正在写一个Firefox扩展.我试图将它限制为只有XUL + Javascript(没有XPCOM).当我得到一个mouseoverHTML元素的事件时,我需要在windows坐标系中获取它的边界框(即内置的XUL文档browser.xul).

显而易见的地方是在mouseover事件处理程序中放置这样的东西:

var rect = e.target.getBoundingClientRect();
Run Code Online (Sandbox Code Playgroud)

这很棒,但是它给了我HTML文档坐标系中的矩形,它相对于HTML绘图区域的左上角.我想在这个图像附近使用panel.openPopup()显示一个xul:panel元素(但不使用其中一个预定义的弹出位置),所以我需要翻译坐标.

我尝试过以下(在XUL dom中)来获取偏移量来进行翻译,它适用于某些网站,但不是全部,并且似乎没有考虑到侧边栏所需的x翻译.

var appcontent = document.getElementById("appcontent");
if (appcontent) {
  chromeOffsetX = r.left;
  chromeOffsetY = r.top;
}
Run Code Online (Sandbox Code Playgroud)

那么,最好的方法是什么?

注意:对于IE扩展,我会使用(并使用过)IDisplayServices :: TransformRect() - 对于Firefox有类似的东西吗?

现在有赏金!

javascript xul firefox-addon bounding-box

7
推荐指数
1
解决办法
6413
查看次数

数值数组的Numpy对象数组

我想创建一个数组dtype=np.object,其中每个元素都是一个数字类型的数组,例如int或float.例如:

>>> a = np.array([1,2,3])
>>> b = np.empty(3,dtype=np.object)
>>> b[0] = a
>>> b[1] = a
>>> b[2] = a
Run Code Online (Sandbox Code Playgroud)

创造我想要的东西:

>>> print b.dtype
object

>>> print b.shape
(3,)

>>> print b[0].dtype
int64
Run Code Online (Sandbox Code Playgroud)

但我想知道是否没有办法在一行中写入第3行到第6行(特别是因为我可能想要连接100个数组).我试过了

>>> b = np.array([a,a,a],dtype=np.object)
Run Code Online (Sandbox Code Playgroud)

但这实际上将所有元素转换为np.object:

>>> print b.dtype
object

>>> print b.shape
(3,)

>>> print b[0].dtype
object
Run Code Online (Sandbox Code Playgroud)

有没有人有任何想法如何避免这种情况?

python arrays numpy

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

强制python脚本从STDIN获取输入

我需要运行的python脚本仅从作为命令行参数传递的文件中获取输入,如下所示:

$ markdown.py input_file
Run Code Online (Sandbox Code Playgroud)

有没有办法让它接受来自STDIN的输入?我希望能够通过Bash完成此操作,而无需显着修改python脚本:

$ echo "Some text here" | markdown.py
Run Code Online (Sandbox Code Playgroud)

如果我必须修改Python脚本,我该怎么做呢?

(编辑:是解析命令行选项的脚本.)

python bash

7
推荐指数
1
解决办法
3200
查看次数

重构单元测试代码的实践

假设我有这样的函数:

public void AddEntry(Entry entry)
{
    if (entry.Size < 0)
        throw new ArgumentException("Entry size must be greater than zero");
    DB.Entries.Add(entry);
}
Run Code Online (Sandbox Code Playgroud)

并进行相应的单元测试:

[TestMethod]
[ExpectedException(typeof(ArgumentException), "Entry size must be greater than zero")]
public void AddEntry_TermSizeLessThanZero_ThrowException()
{
    Entry e = new Entry(-5);

    AddEntry(e);
}
Run Code Online (Sandbox Code Playgroud)

然后我重构验证码:

public void AddEntry(Entry entry)
{
    Validate(entry);
    DB.Entries.Add(entry);
}

public void Validate(Entry entry)
{
    if (entry.Size < 0)
        throw new ArgumentException("Entry size must be greater than zero");
}
Run Code Online (Sandbox Code Playgroud)

单元测试不再描述验证代码.

在这种情况下,最好的做法是什么?我是否只是通过AddEntry离开Validate()进行测试?

编辑:澄清一下,假设我有理由将折射代码公开(在这种情况下有点做作),我想复制测试代码是否彻底?

c# testing unit-testing

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

使用vim从现有的标记块中轻松创建Ruby on Rails部分

目前是否有一个插件可以在rails开发人员身上使用macvim/gvim/vim,它允许你快速获取一段代码并从中创建一部分代码?我知道TextMate这样做了,想到有人已将它移植到vim也.

ruby vim ruby-on-rails macvim

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

这个Python程序发生了什么?

我想知道第8行的内容是什么.

# Iterators

class Fibs:
    def __init__(self):
        self.a = 0
        self.b = 1
    def next(self):
        self.a, self.b = self.b, self.a+self.b # <--- here
        return self.a
    def __iter__(self):
        return self

fibs = Fibs()

for f in fibs:
    if f > 1000:
        print f
        break
Run Code Online (Sandbox Code Playgroud)

程序的其余部分我真的不需要太多解释.我不确定是什么分配给了什么.

python iterator variable-assignment

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

如何使用数据库制作Android单例和自定义数据类?

我想使用单例模式来保存我的Android应用程序的数据库和一些其他数据/方法.

我意识到有很多理由反对单身人士,但对于这种情况我想使用它.

我已经对UIApplication进行了细分,并在其中创建了一个名为MyAppData的数据类.

MyAppData需要访问SQLite数据库.

当我创建数据库时,我需要传递一个上下文.我可以传递应用程序上下文,但它不会直接与MyAppData相关.

我不知道这是否会导致我的代码出现问题.

所以我的想法是让MyAppdata扩展android.content.ContextWrapper.我认为我不应该扩展Activity,因为它实际上不是一个活动,它是一个带有访问数据库方法的数据类.

我想知道我是否扩展了ContextWrapper会不会在我遗漏的代码中有一些深层的东西会导致很大的问题(内存泄漏等).

这可能不是理想的方法(我考虑过其他方案),但我的目标是:

在UIApplication中有一个单例类,可以封装数据库,并可以从我的应用程序中的任何活动轻松检索.

提前感谢您的建议/警告/建议.

sqlite android

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

实体框架v4:通过更新模型向导防止存储模型覆盖

在我的Entity Framework v4项目中,我有一个包含两列的表,这些列由数据库计算(通过触发器等).为了让EF正确地将记录插入到表中,我必须在EF存储模型(StoreGeneratedPattern属性)中手动将列标记为"已计算",这是设计者不支持的 - 所以我必须制作手动编辑.EDMX文件中的XML.

问题是,每当我的数据库架构发生变化,并且我需要更新项目中的存储模型时,"更新模型向导"将覆盖.EDMX的整个存储模型部分,从而消除了我的手动更改.这意味着我必须保留这些更改的特殊列表,并在每次更新时手动重新应用它们!对于上帝的爱,这必须是EF中最愚蠢的故障之一.

无论如何,我对蜂巢的问题是这样的...有没有办法阻止存储模型覆盖?有没有办法标记数据库中的列,以便EF会自动将它们标记为计算?作为最后的手段,是否有一些非常简单的XML工具/技术可以在每次刷新后自动为我应用更改?

谢谢,哦,我学习StackOverflow贡献者,以缓解我的痛苦,并帮助我解决这个问题,即使我还没有在网站上的任何状态.总有一天,当我有4位数的声望时,我会记住你.

布赖恩


更新

内部人员告诉我,一个解决方案可能是查看"Designer Power Pack"(下面的链接),它允许您自定义存储模型的生成.到目前为止,我只是略读了这些信息,但在我看来,可能会有一两天的学习曲线来解决这个问题.有没有人对Designer Power Pack或任何其他想法有任何经验?

http://blogs.msdn.com/b/adonet/archive/2010/02/08/entity-designer-database-generation-power-pack.aspx

再次感谢,Brian

.net sql sql-server asp.net entity-framework

7
推荐指数
1
解决办法
1693
查看次数