小编Mat*_*ari的帖子

在非标准位置使用SSL支持构建Python

我需要在RHEL上安装几个Python模块,我没有root访问权限.至少有一个模块也需要访问Python.h.

在这种情况下,我发现最好的方法是安装python及其依赖项~/local.它通常只是工作,但这次Python无法构建SSL模块(请参阅下面的详细信息).这是我正在做的事情的痕迹.

所以我下载了python 6源码然后关闭了我:

./configure --prefix=/home/fds/rms/local
make >& make.log
Run Code Online (Sandbox Code Playgroud)

对日志的检查显示ssl模块尚未编译,但没有提及原因(make或configure中没有其他ssl出现):

Failed to find the necessary bits to build these modules:
_bsddb             _curses            _curses_panel
_hashlib           _sqlite3           _ssl   <----------
Run Code Online (Sandbox Code Playgroud)

所以我想,python根本找不到任何ssl库(这很奇怪,但是嘿......).所以我下载openssl-0.9.8r和

./config --prefix=/home/fds/rms/local shared
make
make install
Run Code Online (Sandbox Code Playgroud)

现在回到Python,我./configure并重新制作.它失败了,但这一次有所不同:

Failed to build these modules:
_hashlib           _ssl
Run Code Online (Sandbox Code Playgroud)

仔细检查日志文件可以发现:

gcc -pthread -shared build/temp.linux-x86_64-2.6/home/fds/rms/installers/Python-2.6.6/Modules/_ssl.o -L/home/fds/rms/local/lib -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-2.6/_ssl.so
*** WARNING: renaming "_ssl" since importing it failed: libssl.so.0.9.8: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

所以现在它正在拿起图书馆,但不是很正确(文件应该在哪里):

$ find /home/fds/rms/local …
Run Code Online (Sandbox Code Playgroud)

python openssl compilation

56
推荐指数
4
解决办法
7万
查看次数

如何在erlang中进行依赖注入和模拟?

在Java中编写代码时,通过模拟协作对象,使用组合依赖注入非常有帮助,从而可以轻松地进行纯单元测试.

我发现在Erlang中做同样的事情并不那么简单,而且代码更脏.

这可能是我的错,因为我对Erlang很新,并且对JUnit,EasyMock和java接口非常沉迷......

假设我有这个愚蠢的功能:

%% module mymod
handle_announce(Announce) ->
    AnnounceDetails = details_db:fetch_details(Announce),
    AnnounceStats = stats_db:fetch_stats(Announce),
    {AnnounceDetails, AnnounceStats}.
Run Code Online (Sandbox Code Playgroud)

在单元测试时mymod,我只想证明details_dbstats_db使用正确的参数调用,并且正确使用了返回值.在其他地方测试details_dbstats_db生成正确值的能力.

为了解决这个问题,我可以这样重构我的代码:

%% module mymod
handle_announce(Announce, [DetailsDb, StatsDb]) ->
    AnnounceDetails = DetailsDb:fetch_details(Announce),
    AnnounceStats = StatsDb:fetch_stats(Announce),
    {AnnounceDetails, AnnounceStats}.
Run Code Online (Sandbox Code Playgroud)

并以这种方式进行测试(基本上将调用直接存入测试模块):

%% module mymod_test
handle_announce_test() ->
    R = mymod:handle_announce({announce, a_value}, [?MODULE, ?MODULE, ?MODULE]),
    ?assertEqual({details,stats}, R).

fetch_details({announce, a_value}) ->
    details.

fetch_stats({announce, a_value}) ->
    stats.
Run Code Online (Sandbox Code Playgroud)

它工作正常,但应用程序代码变脏了,我总是要随身携带那些丑陋的模块列表.

我尝试了几个模拟库(erlymock和(另一个),但我并不满意.

你如何对你的erlang代码进行单元测试?

谢谢!

erlang unit-testing dependency-injection mocking

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

如何在IntelliJ构思中运行scala ScalaTest?

我正在尝试在Intellij IDEA(最新的社区版本,最新的Scala插件)​​中运行scala flatspec测试,但我不断收到"空测试套件"错误.

我尝试右键单击使用正常的"运行"菜单,但它不起作用.我也尝试过创建一个新的ScalaTest配置,但是跑步者仍然没有接受测试.

我能够将JScalaTest与单元一起使用,但我更喜欢使用flatspec语法.

更新:注释类@RunWith(classOf[JUnitRunner])并没有帮助

谢谢!

class SampleTestSpec extends FlatSpec with ShouldMatchers {
    "test" should "fail" in {
        "this" should equal ("that")
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:从ScalaTest切换到Spec,解决了问题.我仍然更喜欢使用FlatSpec的ScalaTest,但这已经足够了.有效的代码:

import org.specs._
object SampleTestSpec extends Specification {
    "'hello world' has 11 characters" in {
     "hello world".size must be equalTo(113)
  }
  "'hello world' matches 'h.* w.*'" in {
     "hello world" must be matching("h.* w.*")
  }
}
Run Code Online (Sandbox Code Playgroud)

-TeO

unit-testing scala intellij-idea scalatest

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

Erlang:如何在体内引用匿名函数?

Erlang中有一种方式引用当前正在执行的函数)?

这对产生无限循环很有用:

spawn(fun() -> do_something, this_fun() end)
Run Code Online (Sandbox Code Playgroud)

在JavaScript arguments.callee中就是这样,请参阅MDC规范.

编辑回答'为什么你会这样做':主要是好奇心; 在prorotyping时定义一个计时器也很有用:

Self = self(),
spawn(fun() -> Self ! wake_up, receive after 1000 -> nil end, this_fun() end),
%% ...
Run Code Online (Sandbox Code Playgroud)

erlang

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

如何在新的AppDomain中运行WPF应用程序?ExecuteAssembly失败

我正在尝试使用应用程序域从控制台应用程序启动WPF应用程序,但是当我这样做时,我收到意外错误.

可以独立运行WPF应用程序.

这段代码也适用:

var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
var path = string.Format("{0}AddressbookDesktop.exe", baseDirectory);
var processInfo = new ProcessStartInfo(path, "");
Process.Start(processInfo);    
Run Code Online (Sandbox Code Playgroud)

但是此代码失败并出现以下错误.错误似乎在构造函数中,该构造函数为空:

var addressbookDomain = AppDomain.CreateDomain("addressbookDomain");
addressbookDomain.ExecuteAssembly("AddressbookDesktop.exe");
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

System.Windows.Markup.XamlParseException: Cannot create instance of 
'AddressbookMainWindow' defined in assembly 'AddressbookDesktop, Version=1.0.0.0, 
Culture=neutral, PublicKeyToken=null'. Exception has been thrown
by the target of an invocation. Error in markup file 'AddressbookMainWindow.xaml' Line     1 Position 9.
---> System.Reflection.TargetInvocationException: Exception has been thrown by the
target of an invocation. ---> System.InvalidOperationException: The calling thread must 
be STA, because many …
Run Code Online (Sandbox Code Playgroud)

c# wpf applicationdomain

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

如何在scala中使用泛型创建部分函数?

我正在尝试为Scala编写性能测量库.我的想法是透明地"标记"部分,以便可以收集执行时间.不幸的是我无法按照我的意愿弯曲编译器.

一个公认的例子,说明了我的想法:

// generate a timing function
val myTimer = mkTimer('myTimer) 

// see how the timing function returns the right type depending on the
// type of the function it is passed to it
val act = actor {
    loop { 
        receive {

            case 'Int =>
                val calc = myTimer { (1 to 100000).sum }
                val result = calc + 10 // calc must be Int
                self reply (result)

            case 'String =>
                val calc = myTimer { (1 to 100000).mkString …
Run Code Online (Sandbox Code Playgroud)

scala anonymous-function currying

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

如何将弹簧控制器映射到扩展名为.jsp的URL?

我们正在将仅限jsp的应用程序迁移到Spring-MVC.由于各种原因,我们无法更改当前页面的扩展名.(对login.jsp的调用需要由将使用jsp文件作为视图的spring控制器处理).

我们正在迭代地执行此操作,因此一些页面需要保留jsp文件(对welcome.jsp的调用将不会由控制器处理).

为此,我将DispatcherDervlet和HandlerMapping映射到*.jsp,并以标准方式配置JstlView.

不幸的是,如果我浏览到//login.jsp,我会收到错误消息

<No mapping found for HTTP request with URI [/<context>/WEB-INF/jsp/login.jsp] in DispatcherServlet with name 'spring'>
Run Code Online (Sandbox Code Playgroud)

如果我将.jsp更改为DispatcherServlet和HandlerMapping中的任何其他扩展名,则一切正常.

web.xml中:

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.jsp</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

为spring-servlet.xml:

<!-- View resolver -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>

<!-- URL Mapping -->
<bean id="publicUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="urlMap">
        <map>
            <entry key="/login.jsp" value-ref="loginController"/>
        </map>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

非常感谢.

更新:我刚刚验证过,如果我将.jsp文件重命名为其他东西(.jst)并相应地更新viewResolver,那么一切正常.显然,如果视图被解析为扩展名为.jsp的文件,spring会尝试将视图转发到另一个控制器.

java spring jsp tomcat spring-mvc

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

我应该停止破坏.NET事件指南吗?

我一遍又一遍地发现自己按照指南在C#中实现事件,然后当客户端代码不需要指南添加的任何好处时,回到使用Action的更简单的实现.

可以说,我将添加省略发送方对象,除非它实际需要是一件好事,因为它促进了触发器和处理程序的分离.更一般地说,我认为避免编写不需要的代码是一个好习惯.

我并不是说应该总是驳回指南,遵循它们有好处(见下面的链接).我的问题是我是否应该一直遵循它.

下面的示例显示了如何将"天真事件"模式与指南模式进行比较.

// This is neat
class NaiveEvents
{
    public event Action<string> OnAlert;
    public void TriggerOnAlert(string message)
    {
        OnAlert(message);
    }   
}

// Is this bloated?
class ProperEvents
{    
    public event EventHandler<OnAlertEventArgs> OnAlertEvent;

    public void TriggerOnAlert(string message)
    {
        OnAlertEvent(this, new OnAlertEventArgs(message));
    }

    public class OnAlertEventArgs : EventArgs
    {
        private readonly string _message;
        public OnAlertEventArgs(string message)
        {
            _message = message;
        }
        public string Message { get { return _message; } }
    } …
Run Code Online (Sandbox Code Playgroud)

.net c# events event-handling

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

在erlang/OTP中,如何启动appmon来监控现有节点?

我有一个正在运行的erlang应用程序,使用此命令行启动

erl -boot start_sasl -config config/cfg_qa -detached -name peasy -cookie peasy -pa ./ebin -pa ./ebin/mochiweb -s peasy start
Run Code Online (Sandbox Code Playgroud)

如果我启动一个新节点并运行appmon:start(),即使使用相同的cookie,'peasy'节点也不会显示.webtool也是如此:start()

任何人?

erlang erlang-otp

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

最终与erlang一致的mnesia数据库.最好的做法是谁?

我在erlang写了一个bittorrent跟踪器.鉴于服务的性质,我不需要绝对的一致性(即客户可以完全满意稍微过时的同行列表或torrent状态).

到目前为止,我的策略是在启用了disc_copies的情况下在RAM中创建mnesia表,以便在日志大小超过特定大小时让mnesia自动将内存转储到磁盘.

如果服务器崩溃,某些信息将丢失.没有大碍.

另一种方法是实例化两个表(仅一个ram和一个磁盘),并且每分钟左右都有一个从ram到磁盘的进程副本.这更天真,但是只允许转储内存中的一部分,减少整体磁盘开销,并可能完全避免使用日志(我实际上不确定这最后的语句).

我确信还有很多其他方法可以做到这一点.你的是啥呢?

-TeO

erlang mnesia eventual-consistency

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

当Restlet返回400 Bad Request时,它是否返回415不支持的媒体类型?

我正在使用Restlet 2.1与jackson构建一个json REST api.

当我使用预期的内容类型但是格式错误的主体发出请求时,我会收到415"Unsuppored Media Type"状态代码.我认为正确的错误代码应为400"错误请求".

显然,当杰克逊尝试并且无法解码垃圾时,混合就会发生.

我将尝试用一些代码使案例更清晰:

// java method mapping
@Post("json")
public Project create(Project project) {
Run Code Online (Sandbox Code Playgroud)

curl的服务调用

$ curl -i -XPOST -H 'content-type: application/json' -d '{xgarbage}' http://localhost:8080/projects HTTP/1.1 415 Unsupported Media Type
Run Code Online (Sandbox Code Playgroud)

并且堆栈跟踪的碎片记录在日志中:

Nov 29, 2010 9:51:56 PM org.restlet.ext.jackson.JacksonRepresentation getObject
WARNING: Unable to parse the object with Jackson.
org.codehaus.jackson.JsonParseException: Unexpected character ('x' (code 120)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
 at [Source: java.io.ByteArrayInputStream@693e4a5a; line: 1, column: 2]
at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:929)
Run Code Online (Sandbox Code Playgroud)

该服务的实际实现从未被命中,因此某处决定将乱码内容映射到415.

现在,我的问题是:这是正确的吗?如果我正确地阅读了"RESTful …

java rest content-type jackson restlet-2.0

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

在javascript中如何检测浏览器是否显示或下载pdf?

说我有

  • 包含iframe的网页:
  • 指向pdf文档的网址:http://www.example.com
  • 一些将执行iframe.src = pdfurl的javascript
  • 一个按钮,将触发这样的JavaScript

    • 如果浏览器要显示内嵌pdf,按钮会显示"查看pdf",点击后会显示iframe

    • 否则会说"下载pdf"

我找到了一种方法来检测pdf已经加载到iframe中:在onload触发后读取iframe.contentDocument.contentType,但是

  • 这将不允许我显示正确的按钮
  • 如果正在下载文件,则不会触发onload

谢谢 :)

javascript

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