问题列表 - 第48881页

Erlang OTP应用程序设计

当我将一些代码转换为OTP应用程序时,我正在努力解决OTP开发模型.

我本质上是一个网络爬虫,我只是不知道在哪里放置实际工作的代码.

我有一个主管,开始我的工人:

-behaviour(supervisor).
-define(CHILD(I, Type), {I, {I, start_link, []}, permanent, 5000, Type, [I]}).

init(_Args) ->          
  Children = [
    ?CHILD(crawler, worker)
  ],  
  RestartStrategy = {one_for_one, 0, 1},
  {ok, {RestartStrategy, Children}}.
Run Code Online (Sandbox Code Playgroud)

在此设计中,Crawler Worker负责执行实际工作:

-behaviour(gen_server).

start_link() ->
  gen_server:start_link(?MODULE, [], []).

init([]) ->
  inets:start(),        
  httpc:set_options([{verbose_mode,true}]), 
  % gen_server:cast(?MODULE, crawl),
  % ok = do_crawl(),
  {ok, #state{}}.

do_crawl() ->
  % crawl!
  ok.

handle_cast(crawl}, State) -> 
  ok = do_crawl(),
  {noreply, State};
Run Code Online (Sandbox Code Playgroud)

do_crawl产生了大量的进程和请求,用于处理通过http进行爬网的工作.

问题,最终是:实际抓取应该在哪里发生?从上面可以看出,我一直在尝试不同的触发实际工作的方法,但仍然缺少一些对于整合事物的方式至关重要的概念.

注意:为简洁起见,省略了一些OTP管道 - 管道就在那里,系统全部挂在一起

architecture erlang erlang-otp

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

为什么Glassfish管理控制台这么慢?

我正在运行GlassFish Server Open Source Edition 3.0.1(版本22).在我的开发环境(Mac OSX,4核和8GB RAM)和生产(Linux,2核,4GB)中,控制台启动都非常缓慢.

机器很大程度上是空闲的.什么是玻璃鱼呢?有什么需要调整才能让它更快启动?

更新1:

示例 - 我一直在尝试复制一些我在本地实现并测试到我的服务器的JDBC配置.我只是浪费了一小时试图复制配置因为我不能同时打开dev和prod glassfish控制台而没有其中一个超时.

我将打开开发控制台,然后最终生成一个,但是当我在开发窗口中单击它时它已经超时,现在尝试重新启动.

疯了吧.一小时复制一个简单的JDBC连接?有没有人真正成功地在生产中成功使用它?

更新:2

我发现两件事情产生了巨大的变化:

  1. Glassfish UI的Ajax方面看起来非常脆弱.我打开了两个浏览器标签,一个打开,localhost:4848另一个打开localhost:9000.第一个选项卡是实际在localhost上运行的glassfish服务器.第二个是远程服务器,端口转发以通过ssh显示为本地服务器.通常这不是问题,但我怀疑它会混淆glassfish中的会话处理,以便在同一个"主机"上看到两个服务器,即使它们位于不同的端口上.

  2. 我将3.0更新为3.1.这似乎已经消除了很多启动延迟.

我希望这篇文章可以帮助别人不受这种创伤.谢谢大家的建议.

glassfish

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

模型关联返回的数组不是数组?

我们有一个模型关联,看起来像这样:

class Example < ActiveRecord::Base
  has_many :others, :order => 'others.rank'
end
Run Code Online (Sandbox Code Playgroud)

rank列是整数类型.虽然我们发现其他模型之间的其他has_many关联存在同样的问题,但这些特定模型的细节并不重要.

我们还添加了Enumerable模块:

module Enumerable
  def method_missing(name)
    super unless name.to_s[0..7] == 'collect_'
    method = name.to_s[8..-1]
    collect{|element| element.send(method)}
  end
end
Run Code Online (Sandbox Code Playgroud)

这会添加一个collect_id方法,我们可以使用它从ActiveRecord对象数组中获取记录ID数组.

因此,如果我们使用普通的ActiveRecord find:all,我们得到一个很好的数组,然后我们可以使用collect_id,但如果我们使用Example.others.collect_id,我们得到

NoMethodError: undefined method `collect_id' for #<Class:0x2aaaac0060a0>
Run Code Online (Sandbox Code Playgroud)

Example.others.class返回"数组",所以它是说谎还是混淆?

到目前为止,我们的解决方案一直是这样使用它:

Example.others.to_a.collect_id 
Run Code Online (Sandbox Code Playgroud)

这有效,但这似乎有点奇怪.你为什么要那样做?

我们使用的是Ruby 1.8.7和Rails 2.3.4

ruby ruby-on-rails associations

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

MS Scrum模板安装正确但未找到

我从他们的网站安装了Microsoft Scrum 1.0模板,安装时没有任何错误,但是当我尝试创建一个新的团队项目时,它没有显示在模板列表中.只有MSF Agile和MSF CMMI.

可能是什么导致了这个?

tfs scrum tfs2010

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

如何使用C++确定ARM Cortex的适当堆栈和堆大小

cortex M3处理器启动文件允许您指定专用于堆栈和堆的RAM量.对于c ++代码库,是否有一般的经验法则或者更明确的方法来确定堆栈和堆大小的值?例如,您是否会计算唯一对象的数量和大小,或者使用已编译的代码大小?

c++ embedded arm cortex-m3

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

C++/CLI数组初始化程序编译错误

有人可以解释为什么以下代码将无法编译(格式奇怪,使其更容易看到问题):

ListView ^ listview = gcnew ListView();
listview->Items->AddRange( gcnew array<ListViewItem^> { 
    gcnew ListViewItem( gcnew array<String^> { L"red", L"fish" } ), 
    gcnew ListViewItem( gcnew array<String^> { L"green", L"eggs" } ) 
});
Run Code Online (Sandbox Code Playgroud)

这给出了编译错误

错误C2440:'初始化':无法从'const wchar_t [4]'转换为'System :: Windows :: Forms :: ListViewItem ^'

如果代码分为两行,如下所示,那么一切都很好:

ListView^ listview = gcnew ListView();
ListViewItem^ lvi1 = gcnew ListViewItem( gcnew array<String^> { L"red", L"fish" } );
ListViewItem^ lvi2 = gcnew ListViewItem( gcnew array<String^> { L"green", L"eggs" } );
listview->Items->AddRange( gcnew array<ListViewItem^> { 
    lvi1, 
    lvi2 
});
Run Code Online (Sandbox Code Playgroud)

忽略为什么有人想制作一个单片的单行来填充ListView,为什么编译器在原始代码中设置ListViewItems有困难,以及如何编写这样的单行程序?

compiler-construction c++-cli

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

如何在ASP.Net MVC 3中路由遗留的QueryString参数?

我正在使用第三方服务,该服务对我提供给他们的URL执行异步回调.所以我告诉他们使用http://www.mysite.com/Status/Incoming.这显然必须映射到我的StatusController上的Incoming()方法.

但是,我无法控制的是他们称之为URL的参数格式.例如,他们将进行回调,例如:http://www.mysite.com/Status/Incoming?param1 = val1¶m2 = val2¶m3 = val3

我想将此映射到我的action方法的参数:Incoming(string param1,string param2,int param3)

我该怎么做呢?

我发现了许多关于自定义路由的东西,但没有关于遗留的QueryString参数.

asp.net-mvc asp.net-mvc-3

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

如何为Android选择正确的图像分辨率

我一直在和这个争斗几天.我正在尝试写一个小的自定义评级栏.有一些自定义图像.当我检查我的HTC Desire上的图像时,图像看起来非常混乱.我尝试过使用不同的分辨率和不同的尺寸,仍然无法弄清楚什么样的分辨率/如何创造出好的质量.

我已经阅读了android网站上的指南,但无济于事.我认为我遇到的问题是在更高的dpi显示器上显示更低分辨率的图像.因此系统升级了图像.但我不知道如何解决这个问题.分辨率更高的图像 更大的图像?

任何建议都会很棒.

亚历克斯

android uiimage

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

关于C const的问题

可能重复:
关于"int const*p"和"const int*p"

之间的区别

const  char *p
Run Code Online (Sandbox Code Playgroud)

char * const p?
Run Code Online (Sandbox Code Playgroud)

是拳头一个意思是不能改变char.后来一种方法无法改变指针.我对吗?谢谢!

c const

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

Mathematica"AppendTo"功能问题

我是Mathematica的新手,我在向数据表中添加列时遇到了严重的故障.我在Vista中运行Mathematica 7.在问这里之前我花了很多时间做RFD.

我有一个包含三列五行的数据表(mydata).我正在尝试向表中添加两个包含五个元素的列表(有效地向数据表添加两列).

非常有效:

Table[AppendTo[mydata[[i]],myfirstlist[[i]]],{i,4}] 
Run Code Online (Sandbox Code Playgroud)

打印出表格:mydata // TableForm显示添加的列.

但是,当我尝试添加我的第二个列表时

Table[AppendTo[mydata[[i]],mysecondlist[[i]]],{i,5}]
Run Code Online (Sandbox Code Playgroud)

无论是数学崩溃(!)或者,我得到的转换Part::partwPart::spec错误说第5部分不存在.

但是,在所有错误消息(如果Mathematica没有崩溃)之后,再次打印出数据表:mydata // TableForm显示数据表有五列,就像我想要的那样.TableForm修订数据表上的所有格式选项都可以正常工作.

谁能告诉我我做错了什么?提前致谢!

wolfram-mathematica

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