问题列表 - 第16757页

我应该在多大程度上采用参考透明度?

我正在使用erlang,mnesia和webmachine构建一个网站.我读过的大多数文档都赞扬了具有引用透明功能的优点.

问题是,所有数据库访问都是外部状态.这意味着任何命中数据库的方法都不再是引用透明的.

假设我在数据库中有一个用户对象和一些处理身份验证的函数.

参考不透明的函数可能看起来像:

handle_web_request(http_info) ->
  is_authorized_user(http_info.userid),
  ...
%referentially opaque
is_authorized_user(userid) ->
  User = get_user_from_db(userid),
  User.is_authorized.

%referentially opaque
lots_of_other_functions(that_are_similar) ->
  db_access(),
  foo.
Run Code Online (Sandbox Code Playgroud)

引用透明度要求我最小化引用不透明代码的数量,因此调用者必须从数据库中获取对象并将其作为参数传递给函数:

handle_web_request(http_info) ->
  User = get_user(http_info.userid),
  is_authorized_user(User),
  ...

%referentially opaque
get_user(userid) ->
  get_user_from_db(userid).

%referentially transparent      
is_authorized(userobj) ->
  userobj.is_authorized.

%referentially transparent    
lots_of_other_functions(that_are_similar) ->
  foo.
Run Code Online (Sandbox Code Playgroud)

上面的代码显然不是生产代码 - 它纯粹是出于说明目的而编写的.

我不想陷入教条.引用透明代码(如可证明的单元测试)的好处是否证明了不太友好的接口?我应该在追求传教的过程中走多远?

erlang functional-programming mnesia

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

最有用的用户自制C-宏(在GCC中,也是C99)?

您认为哪种C宏最有用?我找到了以下一个,用于在C中进行矢量运算:

#define v3_op_v3(x, op, y, z) {z[0]=x[0] op y[0]; \
                               z[1]=x[1] op y[1]; \
                               z[2]=x[2] op y[2];}
Run Code Online (Sandbox Code Playgroud)

它的工作方式如下:

v3_op_v3(vectorA, +, vectorB, vectorC);
v3_op_v3(vectorE, *, vectorF, vectorJ);
...
Run Code Online (Sandbox Code Playgroud)

c macros c99 c-preprocessor

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

使用svn + ssh进行pysvn

我正在使用pysvn,我正在尝试找到一种合适的方法来处理只能通过svn + ssh访问的存储库.显然,SSH密钥使这一切变得异常简单,但我无法保证最终用户将使用SSH密钥.这也必须能够在没有用户交互的情况下运行,因为它将进行一些svn日志解析.

最大的问题是,使用svn + ssh会弹出一个交互式提示进行身份验证.显然我希望能够让pysvn自动使用一组给定的凭据登录,但是set_default_username和set_default_password在这方面对我没有任何帮助.如果我不能拥有它,我至少希望能够失败,并记录一条消息告诉用户设置SSH密钥.但是,set_interactive似乎与此无关,我仍然会提示输入client.log('svn + ssh:// path')的密码.

有关如何解决这个问题的任何想法?是否真的有可能在没有SSH密钥的情况下处理这个问题,因为SSH正在抛出提示?

python svn ssh pysvn

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

使用App.config设置强类型变量

我是运行.NET 3.5的C#新手,我想在App.config中存储一堆应用程序默认值,因为设置可能因服务器环境(例如开发,登台,生产)而异.我想要做的是类似于StackOverflow文章中描述的内容,但我也希望能够使用非字符串值(例如int,bool).像这样的东西(名称值只是例子,顺便说一句):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <applicationSettings>
        <MyApp>
            <setting name="InitText" serializeAs="String">
                <value>Hello</value>
            </setting>
            <setting name="StartAt" serializeAs="Integer">
                <value>5</value>
            </setting>
            <setting name="IsWeekend" serializeAs="Boolean">
                <value>True</value>
            </setting>
        </MyApp>
    </applicationSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

有人可以提供一个如何执行此操作的示例,以及如何通过C#检索值?我已经看过很多需要使用的例子,但是我不确定我是否需要这些元素,如果需要,如何创建它们.

c# app-config configuration-files .net-3.5

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

Rails中的RSpec:如何跳过before_filter?

我正在尝试测试我的控制器并保持关注点的分离.

第一个问题是"谁能够执行哪个行动?"
我使用authlogic进行身份验证,使用be9的acl9进行授权.但这应该不重要,我所有的授权问题都是在a before_filter.我正在before_filter通过类似的东西测试这样的:

describe SomeModelsController, "GET to index (authorization)" do
  before(:each) do
    @siteadmin = mock_model(User)
    @siteadmin.stub!(:has_role?).with("siteadmin", nil).and_return(true)
  end

  it "should grant access to a siteadmin" do
    controller.should_receive(:current_user).at_least(:once).and_return(@siteadmin)
    get :index
    response.should be_success
  end
end
Run Code Online (Sandbox Code Playgroud)

这个规格工作得很好!

现在,第二个问题是"行动是否做了应该做的事情?"
这不涉及检查授权.最好/最干净的解决方案是将before_filter所有内容一起跳过,并执行以下操作:

describe SomeModelsController, "GET to index (functional)" do
  it "should find all Models" do
    Model.should_receive(:find).with(:all)
  end
end
Run Code Online (Sandbox Code Playgroud)

无需担心具有哪个角色的用户必须首先登录.现在我解决了这个问题:

describe SomeModelsController, "GET to index (functional)" do
  before(:each) do
    @siteadmin = mock_model(User)
    @siteadmin.stub!(:has_role?).with("siteadmin", nil).and_return(true)
    controller.stub!(:current_user).and_return(@siteadmin)
   end

  it …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails before-filter separation-of-concerns

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

使用Sinatra和MongoDB - 什么是"保持活跃"http请求之间的mongodb连接的推荐方法?

我使用过ASP.NET,现在我正在使用Sinatra/MongoDB应用程序.使用ASP.NET体系结构,给定请求使用的数据库连接来自ADO.NET管理的连接池.在请求之间,池中的连接保持活动状态,因此不会为每个http请求支付构建和拆除连接的成本.

Sinatra MongoDB应用程序中是否有类似的机制,或者我是否需要连接/断开每个请求?如果有机制,代码是什么样的?

编辑1:以下不起作用.浏览器发送的每个HTTP请求都会命中new.db行,包括对css,js,jpeg文件的请求.

require 'mongo'
include Mongo

db = Mongo::Connection.new.db("MyDb")

class MyApp < Sinatra::Base
    get '/' do
       etc
Run Code Online (Sandbox Code Playgroud)

ruby sinatra mongodb

11
推荐指数
2
解决办法
8697
查看次数

从JavaScript中获取KeyCode中的Character值...然后修剪

这就是我现在拥有的:

$("input").bind("keydown",function(e){
    var value = this.value + String.fromCharCode(e.keyCode);
}
Run Code Online (Sandbox Code Playgroud)

如果e.keyCode可能不是一个ASCII字符(Alt,backspace,del,arrows,,等)......我现在需要trim这些价值从value某种程度上(最好是编程-不查找表).

我正在使用jQuery.

我必须使用这个keydown活动.keyPress不会激活某些键我需要捕捉(Esc,del,backspace等).

我无法setTimeout用来获取输入的值.setTimeout(function(){},0)太慢了.

javascript jquery keycode special-characters

146
推荐指数
4
解决办法
27万
查看次数

List <List <String >>是Collection <Collection <T >>的实例吗?

我编写了这个方便的通用函数,用于将集合集合转换为单个集合:

public static <T> Set<T> makeSet(Collection<Collection<T>> a_collection) {
    Iterator<Collection<T>> it = a_collection.iterator();
    Set<T> result = new HashSet<T>();
    while (it.hasNext()) {
        result.addAll(it.next());
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

然后我试着打电话给它:

    List<List<String>> resultLists = ... ;
    Set<String> labelsSet = CollectionsHelper.makeSet(resultLists);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

<T>makeSet(java.util.Collection<java.util.Collection<T>>) in CollectionsHelper 
cannot be applied to (java.util.List<java.util.List<java.lang.String>>)
Run Code Online (Sandbox Code Playgroud)

现在a List 是a Collection,a String 是a T.那么为什么这不起作用,我该如何解决呢?

java generics collections covariance

8
推荐指数
2
解决办法
2149
查看次数

将Structs与WCF服务一起使用

有没有关于使用结构作为WCF服务的返回类型的官方建议?

我目前正在与一项我没有写过的服务进行互动,并发现自己受到启发,要求查看我的烦恼是否合理.

我过去总是使用类 - 可能部分是因为这是样本总是显示的,但正如我现在想的那样,出于其他"直观"的原因:

  • 我通过定义一个单独的项目来开始合同样式,该项目的接口表示服务来回传递的类型.

  • 我使用LINQ很多,因此对于可空性的测试是隐含的引用类型,而对于结构和其他值类型,我总是需要标记为可空.

虽然我承认它比我脑子里的项目符号列表更直观,但有些东西会马上来找我.我想问这个问题,因为我正在处理一个返回结构的服务,并且在处理返回值时必须写:

var foo = Bar.Value.MyField;
Run Code Online (Sandbox Code Playgroud)

代替

var foo = Bar.Value;
Run Code Online (Sandbox Code Playgroud)

c# wcf struct value-type

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

具有大量子句的SQL'LIKE'语句的效率

我需要从文本字段中提取信息,该文本字段可以包含许多值中的一个.SQL看起来像:

SELECT fieldname
FROM table
WHERE bigtextfield LIKE '%val1%'
   OR bigtextfield LIKE '%val2%'
   OR bigtextfield LIKE '%val3%'
   .
   .
   .
   OR bigtextfield LIKE '%valn%'
Run Code Online (Sandbox Code Playgroud)

我的问题是:当数值接近数百,可能数千时,这有多高效?有一个更好的方法吗?

一种解决方案是创建一个新的表/列,只包含我之后的值并执行以下操作:

SELECT fieldname
FROM othertable
WHERE value IN ('val1', 'val2', 'val3', ... 'valn')
Run Code Online (Sandbox Code Playgroud)

我想象的是更高效,因为它只需要进行精确的字符串匹配.这样做的问题是保持这个表最新是很多工作.

顺便说一句我正在使用MS SQL Server 2005.

sql string performance search sql-server-2005

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