小编ins*_*itu的帖子

使用 GHC 分析器时,如何将花费在 I/O 上的时间包括在内?

当使用 GHC 的分析器功能时,例如传递+RTS -p -RTS选项,它不会考虑等待 I/O 操作所花费的时间。这是有道理的,但我有兴趣分析我的应用程序,因为我想确保这段代码不会引入大量开销(这是一个测试驱动程序应用程序通过网络与我们的系统对话,所以我希望花在 HTTP 查询上的时间使任何其他成本相形见绌)。

有没有办法使用 GHC 做到这一点?

haskell ghc

5
推荐指数
0
解决办法
71
查看次数

在 Azure 中保存 webapp 日志的正确方法是什么?

我们正在开发一个基于 Azure Web 应用程序的应用程序,但在理解如何从中获取基本日志时遇到了困难。似乎至少有 3 种不同的方法来获取一些日志:

  • 我可以使用 URL https://my-webapp.scm.azurewebsites.net/访问 Kudu (?) 日志
  • 我应该能够使用访问相同的(?)日志az webapp log,但是当我使用show命令时,它说没有激活日志
  • 我还可以使用Diagnose and Solve ProblemsAzure UI 中的菜单访问一些日志,但这很麻烦

我想要的很简单,就是能够tail在正在运行的 Web 应用程序上执行日志操作并获取其生成的所有日志,无论是来自托管 HTTP 服务器的 HTTP 请求日志、系统日志还是应用程序级别日志。

有人能给我指出正确的文件来解释什么是正确的方法吗?

azure azure-web-app-service

5
推荐指数
0
解决办法
1288
查看次数

如何干净地覆盖Jersey使用的默认ServiceLocator?

我正在开发一个应用程序,它使用Jersey(2.5)作为其REST前端,Jetty作为嵌入式HTTP(S)服务器,两者都采用所谓的"嵌入式"方式,例如.不.war 依靠制作和部署它,而是通过处理程序,资源,注入的程序化配置......

我想以某种方式覆盖ServiceLocatorJersey在服务器端使用的HK2 ,或者可能为父服务定位器提供一个父服务器来解析在应用程序的REST部分之外定义的依赖关系.从我看到的代码来看,这似乎是不可能的:ServiceLocator在ApplicationHandler通过调用内部实例化Injections:

if (customBinder == null) {
        this.locator = Injections.createLocator(new ServerBinder(application.getProperties()), new ApplicationBinder());
    } else {
        this.locator = Injections.createLocator(new ServerBinder(application.getProperties()), new ApplicationBinder(),
                                                customBinder);
    }
Run Code Online (Sandbox Code Playgroud)

注射中的代码告诉我以下内容:

 public static ServiceLocator createLocator(Binder... binders) {
    return _createLocator(null, null, binders);
 }
Run Code Online (Sandbox Code Playgroud)

这意味着新创建的服务定位器具有一些任意生成的名称,并且没有父项.

是否有(干净的)方法来改变这种行为,以便我将自己的ServiceLocator注入应用程序的父级?

java rest jersey jersey-2.0

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

我可以在类型构造函数中强制存在量化的参数吗?

我有一个数据类型,其(单个)构造函数包含一个存在量化的类型变量:

data LogEvent = forall a . ToJSON a =>
            LogEvent { logTimestamp     :: Date
                     , logEventCategory :: Category
                     , logEventLevel    :: LogLevel
                     , logThreadId      :: ThreadId
                     , logPayload       :: a
                     }
Run Code Online (Sandbox Code Playgroud)

当我最初编写该类型时,我隐藏了多态有效负载,因为我当时感兴趣的是输出到某个文件/流.但现在我想做更多有趣的事情,我需要观察它的实际类型a.

我从这个问题和其他读物中了解到,存在量化的类型变量在每个实例化时都是唯一的.但是,给定类型是ToJSON a我可以像下面这样(伪代码):

 let x :: Result Foo = fromJSON $ toJSON (logPayload event)
Run Code Online (Sandbox Code Playgroud)

能够以更精确的类型转换为JSON和从JSON转换似乎很奇怪,尽管我可以理解其背后的基本原理.

那么logPayload如果我知道它的类型,如何重写该类型以允许提取?一世

haskell types existential-type gadt

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

如何将单个实体类动态映射到多个表?

由于与现有遗留代码和流程相关的各种原因,我希望能够使用 Hibernate 将单个实体类映射到具有相同结构的不同表。这些表是在运行时从另一个已知表动态创建的。例如,我有以下课程:

public class Item {

   private int id;
   private String label;
    ...
}
Run Code Online (Sandbox Code Playgroud)

这将被映射到 3 个不同的表,ITEM1并且所有ITEM2ITEM3都具有相同的结构:

 CREATE TABLE ITEM[1|2|3] (
    NUMBER id PRIMARY KEY,
    VARCHAR label NOT NULL)
Run Code Online (Sandbox Code Playgroud)

如前所述,表将根据某些外部配置/条件在运行时创建。

我已经回顾了以下关于SO的问题:

所提出的解决方案(子类化)虽然可能,但并不是真正有吸引力。这意味着在运行时动态类创建的一些黑魔法,如果可以的话我宁愿避免。

这篇文章这篇博客文章中,我相信可以创建动态 Hibernate 映射,将同一实体映射到多个表。

有谁有更多实现这种动态映射的经验吗?

java orm hibernate jpa

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

如何使用 Azure AD 身份验证在 Azure Web 应用程序中流式传输 kudu 日志?

我正在尝试使用 kudu 流端点来流式传输 Azure Web 应用程序公开的日志,例如。curl https://my-webapp.scm.azurewebsites.net/api/logstream。当然,这不起作用并返回 401,因为我没有通过身份验证。我在网上找到了有关如何使用 BasicAuth 进行身份验证的参考资料(例如https://github.com/projectkudu/kudu/wiki/REST-API),但不使用 Azure AD 提供令牌。如果我尝试使用身份验证,az account get-access-token --resource=...我不知道要传递什么资源:使用 web 应用程序的资源 URL 不起作用。

我希望能够做的只是:

curl -H "Authorization: Bearer $(... get somehow token ...)" https://my-webapp.scm.azurewebsites.net/logs/streaming
Run Code Online (Sandbox Code Playgroud)

并获取我的网络应用程序的实时日志流。

azure azure-web-app-service

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

为什么/ etc/hosts文件在我的docker容器中为空?

我在https://github.com/snoyberg/haskell-scratch之后创建了一个最小的docker容器,其中包含一个Haskell应用程序.运行时,应用程序工作正常,但它无法解析主机,/etc/hosts因为它是空的,这意味着链接不能正常工作(或者至少我需要使用不切实际的数字地址......).

我可以看到HostsPath容器配置中指向的文件已正确填充,但它似乎在容器启动时的某个时刻被覆盖.

在Mac OS X Yosemite上,docker版本是1.6.2.

集装箱分为几个阶段.第一阶段使用特殊填充的文件系统构建容器:

FROM ubuntu:trusty  
MAINTAINER arnaud@capital-match.com

RUN apt-get install -qqy libgmp-dev netbase

ADD . /

RUN chmod +x /create_rootfs.sh
RUN /create_rootfs.sh 
Run Code Online (Sandbox Code Playgroud)

create_rootfs.sh文件包含以下内容:

 #!/bin/sh

 ROOTFS=/rootfs

 echo "Creating directories"

 mkdir -p /rootfs/bin
 mkdir -p /rootfs/lib
 mkdir /rootfs/lib/x86_64-linux-gnu
 mkdir /rootfs/lib64
 mkdir -p /rootfs/usr/lib/x86_64-linux-gnu/gconv
 # mkdir -p /rootfs/etc

 echo "Copying library files"

 cp -L /bin/sh /rootfs/bin/
 #cp -L /etc/protocols /rootfs/etc
 #cp -L /etc/services /rootfs/etc
 cp -L /lib/x86_64-linux-gnu/libc.so.6 /rootfs/lib/x86_64-linux-gnu/
 cp -L /lib/x86_64-linux-gnu/libdl.so.2 …
Run Code Online (Sandbox Code Playgroud)

docker

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