小编Max*_*Max的帖子

如何在关注点(或模块中)访问模型名称?

我在rails应用程序中有以下问题:

module Authenticable
  extend ActiveSupport::Concern

  included do
    # ...
  end

  module ClassMethods
    def quoted_table_name
      self.class.name.downcase.pluralize # returns "classes"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

如果我有一个用户类:

class User
  include Authenticable
end
Run Code Online (Sandbox Code Playgroud)

然后我想User.quoted_table_name回来"users".目前,User.quoted_table_name退货"classes".我也试过以下,但没有改变.

def quoted_table_name
  Proc.new { self.class.name.downcase.pluralize }.call
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

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

使用此GADT进行模式匹配:

我已经定义了以下GADT:

data Vector v where
    Zero    :: Num a => Vector a
    Scalar  :: Num a => a -> Vector a
    Vector  :: Num a => [a] -> Vector [a]
    TVector :: Num a => [a] -> Vector [a]
Run Code Online (Sandbox Code Playgroud)

如果它不明显,我正在尝试实现一个简单的向量空间.所有向量空间都需要向量加法,所以我想通过make Vectorinstanceof 来实现它Num.在向量空间中,添加不同长度的向量没有意义,这是我想要强制执行的.我认为这样做的一种方法是使用警卫:

instance Num (Vector v) where
    (Vector a) + (Vector b) | length a == length b =  
                                Vector $ zipWith (+) a b
                            | otherwise = 
                                error "Only add vectors with the same …
Run Code Online (Sandbox Code Playgroud)

haskell

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

DynamoDB的条件更新如何与其最终的一致性模型一起工作?

我正在阅读DynamoDB文档,发现了两个有趣的功能:

  1. 最终一致读取
  2. 高度一致的读取
  3. 有条件的更新

我的问题是,这三件事如何相互影响?通常,我想知道它们的条件更新是否使用强一致性读取来检查条件,还是它们使用最终一致性读取?如果是较晚的版本,则仍然存在竞争状况,对吗?

amazon-web-services amazon-dynamodb

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

这些 Elastic Beanstalk VPC 选项是什么意思(公共 IP、ELB/EC2 的子网和安全组)?

我正在使用 Elastic Beanstalk 设置环境,并且希望主机位于我账户的默认 VPC 之外。我不太明白这些选项的含义。请参阅下图的示例:

在此输入图像描述

  1. 关联公共 IP 地址- 这与 ELB 可见性有何不同?
  2. ELB 和 EC2 的子网- 这些子网有什么作用?设置向导要求至少选择一个框。在我的设置过程中,我选择了所有的框。
  3. VPC 安全组- 这与 EC2 主机的安全组有何不同。我使用安全组通过 SSH 连接到主机。为什么VPC需要安全组?

amazon-web-services amazon-elastic-beanstalk

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

当密钥库密码与密钥本身一样易受攻击时,Java 密钥库(JKS、JCEKS)的意义何在?

我有一些代码可以加密一些用户数据。目前,我将密钥存储在运行时加载的配置文件中。这很糟糕,原因有很多,即如果有人可以访问配置文件,他们就可以访问密钥。所以我开始研究 Java 密钥库,但我似乎无法证明它们是合理的。密钥库需要密码,这与对密钥进行硬编码一样容易受到攻击。我是否遗漏了什么,或者密钥存储是否遭受与对密钥进行硬编码相同的弱点?

java keystore

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

go/types: Config.Check 找不到包

我正在使用该go/types包作为解析 Go 源代码的工具。我的代码如下所示:

packageName := "github.com/something/my-test-package"
imported, err := build.Default.Import(packageName, ".", build.FindOnly)
if err != nil {
    return nil, errors.Wrapf(err, "Error importing package %s", packageName)
}

packages, err := parser.ParseDir(fileSet, imported.Dir, nil, 0)
if err != nil {
    return nil, errors.Wrapf(err, "Error parsing package %s", packageName)
}

for _, astPkg := range packages {
    var files []*ast.File
    for _, file := range astPkg.Files {
        files = append(files, file)
    }

    info := &types.Info{
        Defs: make(map[*ast.Ident]types.Object),
    }

    conf := types.Config{ …
Run Code Online (Sandbox Code Playgroud)

go

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

在控制器中执行权限检查的最佳方法.

我正在尝试在我的网络应用程序中实现原始权限系统,我想知道你们都认为检查控制器权限的最佳方法.当我开始编写应用程序时,我原本以为使用before_filter是个好主意,我的代码最终看起来像这样:

before_filter :authenticate, :only => [:new, :create, :show, :edit, :update, :destroy, :delete]
before_filter :check_league_existence
before_filter :check_league_relation_existence, :except => [:new, :create, :index]
before_filter :check_ownership, :only => [:delete, :destroy]
before_filter :check_user_joinability, :only => [:new, :create]
before_filter :require_moderator, :only => [:edit, :update]
Run Code Online (Sandbox Code Playgroud)

我的过滤器看起来像这样:

def check_league_relation_existence
  raise ActiveRecord::RecordNotFound.new('Not Found') unless current_league_relation && current_league.league_relations.include?(current_league_relation)
end

def check_ownership
  raise ActionController::RoutingError.new('You do not own this league relation. Permission Denied.') unless current_league_relation.user == current_user || current_user_league_relation.moderator?
end
Run Code Online (Sandbox Code Playgroud)

现在这个系统在某种程度上确实有效,但是它有很多问题.其中最大的两个是:1)很难理解发生了什么,因为有太多的过滤器,2)我不知道如何为此编写功能测试,因为在测试未授权时总是会收到错误访问.有没有人有更好的方法来检查权限?

ruby-on-rails ruby-on-rails-3

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

(int(*)[30])中的(*)是什么意思?

(int (*)[30])在C 中意味着什么?例如,在:

int (*b)[30] = (int (*) [30]) malloc(30 * sizeof(int [20]));
Run Code Online (Sandbox Code Playgroud)

c

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

运行初始化方法实施后的方法

我想编写运行初始化方法被调用后,一些Ruby代码.此代码可以在类或模块中.我会怎么写呢?

这是我想要的一个例子:

class Base
  def after_init
    puts "after init"
  end

class A < Base # Option 1, use a class
end

class B < Base
  def initialize
    puts "in init"
  end
end

module MyMod
  def after_init
    puts "after init"
  end
end

class C
  include Module
end

$> A.new
=> "after init"
$> B.new
=> "in init"
=> "after init"
$> C.new
=> "after init"
Run Code Online (Sandbox Code Playgroud)

我绝对不想做的就是显式调用super.有没有办法做到这一点?如果它使用了大量红宝石的反射能力的我不在乎.谢谢!

ruby

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

Files.newOutputStream(path, CREATE_NEW, DELETE_ON_CLOSE) 不写入文件

我有以下代码:

import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;

import static java.nio.file.StandardOpenOption.CREATE_NEW;
import static java.nio.file.StandardOpenOption.DELETE_ON_CLOSE;

public class Test {
    public static void main(String[] args) throws IOException {
        try (OutputStream outputStream = Files.newOutputStream(Paths.get("test"), CREATE_NEW, DELETE_ON_CLOSE)) {
            outputStream.write(123);
            outputStream.flush();
            System.out.println("done");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在调用上设置了一个断点System.out.println并检查了我的工作目录。没有名为test. 为什么输出流不写入文件?

java nio

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