问题列表 - 第5139页

我是否需要为HABTM联接表手动创建迁移?

我现在正努力让HATBM正常工作.我有一个被打败的scanario:文章和标签.我认为,HABTM应该在这里使用,因为它是一种多对多的关系.我不知道是否应该手动创建连接表(在这种情况下为articles_tags).

我的代码目前如下:

class Article < ActiveRecord::Base
  has_and_belongs_to_many :tags  
end

class Tag < ActiveRecord::Base
  has_and_belongs_to_many :articles
end
Run Code Online (Sandbox Code Playgroud)

运行迁移时,不会创建第3个表.另外,我想补充一点,我的第三个表没有任何域逻辑,只是盲目分配.

我正在使用Rails 2.2.2

ruby-on-rails

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

我应该使用数字或电子邮件ID来识别网站上的用户吗?

我有一个网络应用程序,我根据他们的电子邮件ID注册用户.

从设计/易用性/灵活性的角度来看,我应该为每个用户分配一个唯一的号码还是根据emailid识别用户?

分配唯一号码的优点:

  1. 我可以在以后更改登录本身而不会丢失用户的数据(灵活).

坏处:

  1. 使用sql命令行时我必须处理数字(容易出错).

哪个更好?您是否看到任何一个方案需要考虑的其他问题?

database database-design

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

实现线程安全

问题如何确保我的应用程序是线程安全的?他们的任何常见做法,测试方法,要避免的事情,要寻找的东西是什么?

背景我目前正在开发一个服务器应用程序,它在不同的线程中执行许多后台任务,并使用Indy与客户端进行通信(使用另一组自动生成的线程进行通信).由于应用程序应该是高度可用的,程序崩溃是一件非常糟糕的事情,我想确保应用程序是线程安全的.无论如何,我不时发现一段代码抛出一个以前从未发生过的异常,在大多数情况下我发现它是某种同步错误,我忘了正确地同步我的对象.因此,我的问题涉及最佳实践,线程安全测试和类似的事情.

mghie:谢谢你的回答!我或许应该更准确一点.为了清楚起见,我了解多线程的原理,我在整个程序中使用同步(监视器),我知道如何将线程问题与其他实现问题区分开来.但尽管如此,我仍然忘记不时添加适当的同步.举个例子,我在代码中使用了RTL排序功能.看起来像

FKeyList.Sort (CompareKeysFunc);
Run Code Online (Sandbox Code Playgroud)

事实证明,我必须在排序时同步FKeyList.在最初编写那么简单的代码行时,我才想起它.这是我想谈的这些问题.一个人容易忘记添加同步代码的地方有哪些?您如何确保在所有重要位置添加同步代码?

delphi multithreading synchronization thread-safety

19
推荐指数
2
解决办法
2570
查看次数

你能在if子句中存储一个变量吗?

我有点等待这个问题的'不'答案.

我很感兴趣,如果你在if子句中检查变量时可以同时保存变量.

假设我有这个代码.

if(foo!=null){
  if(foo.getBar()!=null){
    Bar bar = foo.getBar();
    System.out.println("Success: " + bar);
  } else {
    System.out.println("Failure.");
  }
} else {
  System.out.println("Failure.");
}
Run Code Online (Sandbox Code Playgroud)

我现在处理"失败"状态 - 即使结果是相同的,也是独立的.我可以这样把他们聚在一起:

if(foo!=null && foo.getBar()!=null){
  Bar bar = foo.getBar();
  System.out.println("Success: " + bar);
} else {
  System.out.println("Failure.");
} 
Run Code Online (Sandbox Code Playgroud)

已经有更简洁的代码了.如果foo为null,它将停在那里并且不会尝试foo.getBar(在if中)所以我不会得到NPE.我想要提升的最后一件事,主要问题是:我真的给过两次调用foo.getBar()吗?如果getBar()将是一个非常繁重的操作,那么离开第二个相同的调用将是很好的.所以我想知道是否有可能做一些与此类似的事情:

if(foo!=null && (Bar bar = foo.getBar())!=null){
  Bar bar = foo.getBar();
  System.out.println("Success: " + bar);
} else {
  System.out.println("Failure.");
}
Run Code Online (Sandbox Code Playgroud)

如果我愿意,我将不得不将其分解为两个不同的if

Bar bar = foo.getBar();
if (bar!=null) ...
Run Code Online (Sandbox Code Playgroud)

java if-statement initialization

17
推荐指数
3
解决办法
7732
查看次数

在linux上展开文件

我有一个巨大的文本文件,在liux上有大约400,000行80个字符.

需要"展开"文件,将四行合并成一行,最后有1/4行,每行80*4行长.

有什么建议?

linux file folding

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

C#:在KeyDown事件中,我应该使用什么来检查键是什么?

在KeyDown事件中,我有KeyEventArgs可以使用.它具有(除其他外)这三个属性:

  • e.KeyCode
  • e.KeyData
  • e.KeyValue

我应该使用哪一个?

c# keyboard

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

"非侵入式代码隐藏"是一种好的还是坏的做法?

我有点惊讶的是,在学习WPF/XAML/Silverlight时,我遇到的几乎所有XAML/C#示例都在XAML中有"Click"事件,在Window或Page构造函数中很少.

由于现在所有的重点都放在"非侵入式Javascript"上,我认为更多的开发人员实际上会像这样构建他们的XAML /代码隐藏:

XAML:

<Grid>
    <Button x:Name="btnEdit"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

代码背后:

public Window1()
{
    InitializeComponent();

    btnEdit.Content = "Edit";
    btnEdit.Click += new RoutedEventHandler(btnEdit_Click);
}

private void btnEdit_Click(object sender, RoutedEventArgs e)
{
    btnEdit.Content = "This button was clicked.";
}
Run Code Online (Sandbox Code Playgroud)

有关为什么这会是一个好的或坏的做法的任何想法?

xaml code-behind

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

用于C#/ .NET应用程序的沙箱中的脚本语言

[这个问题类似于这一个,但我也有兴趣在沙箱中的可能性.]

我正在考虑在我的C#/ .NET应用程序中嵌入脚本语言,然后将我的一些应用程序API暴露给脚本.似乎有很多好的选择(Lua,Boo,IronPython等),但有没有简单的选项限制脚本语言的内置函数被使用?例如,我不希望脚本能够执行I/O,除非通过我明确公开的API,因此不打印到控制台,打开文件等.这些脚本语言中的任何一种都提供了一种简单的方法这个?

c# embedded scripting-language

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

将通用List/Enumerable转换为DataTable?

我有几个返回不同通用列表的方法.

在.net中存在任何类静态方法或将任何列表转换为数据表的任何东西?我唯一可以想象的是使用Reflection来做到这一点.

如果我有这个:

List<Whatever> whatever = new List<Whatever>();
Run Code Online (Sandbox Code Playgroud)

(下一个代码当然不起作用,但我想有可能:

DataTable dt = (DataTable) whatever;
Run Code Online (Sandbox Code Playgroud)

c# generics datatable list

245
推荐指数
13
解决办法
40万
查看次数

XML解析问题

我有一个XML解析器崩溃不完整的XML数据.因此,提供给它的XML数据可能是以下之一:

<one><two>twocontent</two</one>

<a/><b/> ( the parser treats it as two root elements )
Run Code Online (Sandbox Code Playgroud)

元素属性也被处理(虽然上面没有显示).

现在,问题是当我从套接字I中读取数据时,我会在片段中获取数据.例如:

<one>one

content</two>

</one>
Run Code Online (Sandbox Code Playgroud)

因此,在将XML发送到解析器之前,我必须构造一个有效的XML并发送它.什么编程构造(如迭代,递归等)最适合这种情况.

我用C++编程.

请帮忙.

c++ xml

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