当使用 GHC 的分析器功能时,例如传递+RTS -p -RTS选项,它不会考虑等待 I/O 操作所花费的时间。这是有道理的,但我有兴趣分析我的应用程序,因为我想确保这段代码不会引入大量开销(这是一个测试驱动程序应用程序通过网络与我们的系统对话,所以我希望花在 HTTP 查询上的时间使任何其他成本相形见绌)。
有没有办法使用 GHC 做到这一点?
我们正在开发一个基于 Azure Web 应用程序的应用程序,但在理解如何从中获取基本日志时遇到了困难。似乎至少有 3 种不同的方法来获取一些日志:
az webapp log,但是当我使用show命令时,它说没有激活日志Diagnose and Solve ProblemsAzure UI 中的菜单访问一些日志,但这很麻烦我想要的很简单,就是能够tail在正在运行的 Web 应用程序上执行日志操作并获取其生成的所有日志,无论是来自托管 HTTP 服务器的 HTTP 请求日志、系统日志还是应用程序级别日志。
有人能给我指出正确的文件来解释什么是正确的方法吗?
我正在开发一个应用程序,它使用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注入应用程序的父级?
我有一个数据类型,其(单个)构造函数包含一个存在量化的类型变量:
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如果我知道它的类型,如何重写该类型以允许提取?一世
由于与现有遗留代码和流程相关的各种原因,我希望能够使用 Hibernate 将单个实体类映射到具有相同结构的不同表。这些表是在运行时从另一个已知表动态创建的。例如,我有以下课程:
public class Item {
private int id;
private String label;
...
}
Run Code Online (Sandbox Code Playgroud)
这将被映射到 3 个不同的表,ITEM1并且所有ITEM2表ITEM3都具有相同的结构:
CREATE TABLE ITEM[1|2|3] (
NUMBER id PRIMARY KEY,
VARCHAR label NOT NULL)
Run Code Online (Sandbox Code Playgroud)
如前所述,表将根据某些外部配置/条件在运行时创建。
我已经回顾了以下关于SO的问题:
所提出的解决方案(子类化)虽然可能,但并不是真正有吸引力。这意味着在运行时动态类创建的一些黑魔法,如果可以的话我宁愿避免。
从这篇文章和这篇博客文章中,我相信可以创建动态 Hibernate 映射,将同一实体映射到多个表。
有谁有更多实现这种动态映射的经验吗?
我正在尝试使用 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)
并获取我的网络应用程序的实时日志流。
我在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)