我一直在努力让我们的Rails 2.3.8应用程序在JRuby下正常运行.一切正常,直到我启用config.threadsafe!为了实现JRuby提供的并发性.这导致lib /中的模块和类不再自动加载.
与config.threadsafe!启用:
$ ruby script/runner -e production 'p Sim::Sim200Provisioner'
/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in `const_missing': uninitialized constant Sim::Sim200Provisioner (NameError)
from (eval):1
Run Code Online (Sandbox Code Playgroud)
与config.threadsafe!禁用:
$ ruby script/runner -e production 'p Sim::Sim200Provisioner'
Sim::Sim200Provisioner
Run Code Online (Sandbox Code Playgroud)
有问题的文件是LIB/SIM/sim200_provisioner.rb那里SIM卡是应用程序/模型/ sim.rb.Rails通常可以轻松找到并加载文件.
我是否需要手动要求我们所有的库,或者是否有更多类似Rails的方法来处理它我缺少的?
当我加载并在Ruby 1.9中我收到警告
andand.rb:111: warning: undefining 'object_id' may cause serious problem
Run Code Online (Sandbox Code Playgroud)
有没有人知道一种方法,除了修改和不删除object_id,以避免这种警告?
谢谢!
我发现第一次加载UITableView时,它不会响应滚动触摸 - 如果它没有比屏幕上更多的行.如果我关闭视图,然后重新打开同一个对象 - 它现在将响应触摸 - 即使它包含相同数量的行.
除了响应行数的UITableViewDataSource方法并自己生成行之外,我没有做任何事情.每次出现视图时我都在重新加载表格.
谁能解释这种行为?
我正在创建像这样的单元格:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *tableId = @"NewIndexTableId";
Note *note = [notes objectAtIndex:[indexPath row]];
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:tableId];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:tableId] autorelease];
cell.textLabel.text = note.text;
cell.detailTextLabel.text = [note changedDelta];
cell.accessoryView = multipleAccounts ? [note.account imageView] : nil;
return cell;
}
Run Code Online (Sandbox Code Playgroud) 在Firefox中,您只需调用:
myInputTextField.selectionStart或myInputTextField.selectionEnd
获取输入框中所选文本的第一个和最后一个索引.
在IE中,我知道你可以调用document.selection.createRange()来调整选择.然而,对于我的生活,我没有找到任何代表选择中的字符偏移的值.
我错过了什么吗?有没有办法在IE中获得相同的价值?
谢谢!
亚历克斯
假设我有一个这样的支付表:
PaymentID INT,CustomerID INT,Value INT,PaidOn DATE
我想针对每个客户的最高付款运行查询.这是否可以使用单个SQL查询,以避免挖掘我不感兴趣的每一行 - 或者更糟糕的是,为每个客户运行查询?
我到目前为止所提出的最好的是:
SELECT CustomerID,MAX(Value)FROM Payments GROUP BY CustomerID;
但这并没有给我找到的行的PaymentId或PaidOn值.
我遇到了一个网络服务器的问题,该服务器接收来自我公司生产的设备的信号.该设备偶尔会重用它刚才使用的源端口.这会导致服务器删除SYN.然后,设备将重试,直到旧套接字在服务器上超出TIME_WAIT.然后服务器进行SYN-ACK.
服务器是用Java编写的.遗憾的是,修改设备以正确循环端口不是一种选择,因为该领域有许多,并且不能更新现有单元.旧的软件是用C++编写的,并以某种方式从Windows TCP堆栈的列表中清除了TIME_WAIT端口.
任何人都可以向我提供有关如何在Windows上绕过Java的TIME_WAIT的建议吗?
编辑:我确实在Wireshark中确认该设备正在重用最近使用的端口.
在服务器套接字上,我使用以下选项:
socket = new ServerSocket();
socket.setPerformancePreferences(3, 2, 1);
socket.setReuseAddress(true);
socket.setSoTimeout(CLIENT_READ_TIMEOUT);
socket.bind(new InetSocketAddress(group.getPort()), MAX_TCP_BACKLOG);
Run Code Online (Sandbox Code Playgroud)
并且客户端套接字在收到后具有以下设置:
Socket client = server.accept();
client.setKeepAlive(false);
client.setSoLinger(true, 0);
client.setReuseAddress(true);
client.setTcpNoDelay(true);
client.setSoTimeout(CLIENT_READ_TIMEOUT);
Run Code Online (Sandbox Code Playgroud)
我已经尝试了SO_LINGER作为true和false,具有完全相同的跟踪结果.CLIENT_READ_TIMEOUT设置为10秒.