小编d11*_*wtq的帖子

可搜索,离线的Erlang文档?

有没有我可以下载易于搜索的Erlang文档副本的地方,以便我可以在长途飞行中使用它,例如?

erlang

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

在RSpec 2中动态生成共享示例?

我试图通过创建一个共享示例组来保持我的规范DRY,该组对所有管理控制器(Admin我项目命名空间下的所有控制器)执行样板检查.我正在努力弄清楚如何去做,因为共享示例需要提供有关使用哪些操作和参数的信息.如果测试失败,理想情况下应该存在有意义的错误(即包括它正在测试的操作的细节).

require 'spec_helper'

shared_examples "an admin controller" do

  before(:each) do
    @non_admin = User.make
    @admin = User.make(:admin)
  end

  context "as an admin user" do
    @actions.each do |action, params|

      specify "I should be able to access ##{action.last} via #{action.first}" do
        self.active_user = @admin
        send(action.first, action.last, params)

        response.status.should be_ok
      end

    end   
  end

  context "as a regular user" do
    @actions.each do |action, params|

      specify "I should be denied access to ##{action.last}" do
        self.active_user = @non_admin
        send(action.first, action.last, params)

        response.status.should be 403
      end …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails rspec2

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

类型转换.如何在C中的libpq中使用PostgreSQL OID值?

我正在使用PostgreSQL C API,libpq.我需要能够将a中的值转换为PGresult*Ruby中的等效数据类型.我目前只是选择所有数据并使用PQgetvalue(),这给了我一个char*我可以转换成ruby String的东西.这很简单.但是否有任何的例子有人可以共享从做一个类型转换char*,比方说,int,float或者double,根据OID由归国PQftype()

实际上,简而言之,我不知道如何解释OID,文档似乎没有给出任何指示.我找到了这个页面,但这无助于理解如何使用此OID在C API中进行类型转换.我猜这里有一个常量列表,我可以从中做出一个很大的转换声明吗?

c postgresql libpq

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

在CALayer的蒙版区域周围添加阴影

我正在CAGradientLayer使用a 屏蔽a CAShapeLayer以生成位于表格中某些行内的书签.

在此输入图像描述

        CGMutablePathRef path = CGPathCreateMutable();
        CGPathAddLines(path,
                       NULL,
                       (CGPoint[]){
                           CGPointMake(8, 0),
                           CGPointMake(22, 0),
                           CGPointMake(22, 22),
                           CGPointMake(15, 16),
                           CGPointMake(8, 22)
                       },
                       5);
        CGPathCloseSubpath(path);

        CAShapeLayer *mask = [CAShapeLayer layer];
        mask.fillColor = [UIColor redColor].CGColor;
        mask.bounds = CGRectMake(0, 0, 30, 30);
        mask.path = path;
        mask.anchorPoint = CGPointMake(0, 0);

        CGPathRelease(path);

        CAGradientLayer *favoriteBadge = [CAGradientLayer layer];
        favoriteBadge.colors =
            @[(id)[UIColor colorWithRed:.97f green:0.5f blue:0.1f alpha:1.f].CGColor, // orange
              (id)[UIColor colorWithRed:1.f green:.8f blue:0.f alpha:1.f].CGColor]; // yellow
        favoriteBadge.locations = @[@0.0, @1.0];
        favoriteBadge.bounds = CGRectMake(0, 0, 30, 30); …
Run Code Online (Sandbox Code Playgroud)

iphone core-animation

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

单元测试基于线程的代码?强迫竞争条件

在使用我的应用程序时,我偶然发现了一些代码中的竞争条件,这些代码使用在NSOperationQueue用户触发的事件之后异步运行任务.我知道如何修复竞争条件,因为这是一个愚蠢的设计错误,我不会深入研究,但我想用测试用例来证明这个错误(这样在进一步优化/重构时它就不会回来了)下线).这让我很难过.如何测试多线程的东西,特别是当测试的目的是产生竞争条件时?

在处理线程和单元测试时,有没有人可以参考我可以参考的参考资料?我对种族条件的产生特别感兴趣.

cocoa multithreading unit-testing objective-c

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

database.yml和引用无效

我们刚刚将虚拟机升级到我认为相同的ruby配置(通过RVM ...... Ruby 1.9.2,Rails 3.0.7,DataMapper 1.1.0).最大的区别是我们从MySQL 5.0到5.1.

出于某种原因,在我们的旧虚拟机上工作的完全相同的代码/ database.yml现在在我们尝试连接到数据库时的新代码上失败了.

问题是这个YAML:

mysql_defaults: &mysql_defaults
  adapter: mysql
  encoding: UTF-8
  username: user
  password: pass
  host: localhost

development:
  <<: *mysql_defaults
  database: devdb

production:
  <<: *mysql_defaults
  database: productiondb
  host: master.db.site.com
Run Code Online (Sandbox Code Playgroud)

只是扩展到:

  "mysql_defaults" => {
    "adapter"=>"mysql",
    "encoding"=>"UTF-8",
    "username"=>"user",
    "password"=>"pass",
    "host"=>"localhost"
  },
  "development" => {
    "adapter"=>"mysql",
    "encoding"=>"UTF-8",
    "username"=>"user",
    "password"=>"pass",
    "host"=>"localhost"
  },
  "production" => {
    "adapter"=>"mysql",
    "encoding"=>"UTF-8",
    "username"=>"user",
    "password"=>"pass",
    "host"=>"localhost"
  }
Run Code Online (Sandbox Code Playgroud)

代替:

  "mysql_defaults" => {
    "adapter"=>"mysql",
    "encoding"=>"UTF-8",
    "username"=>"user",
    "password"=>"pass",
    "host"=>"localhost"
  },
  "development" => {
    "adapter"=>"mysql",
    "encoding"=>"UTF-8",
    "username"=>"user",
    "password"=>"pass",
    "host"=>"localhost", …
Run Code Online (Sandbox Code Playgroud)

ruby yaml ruby-on-rails datamapper

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

邮件宝石.将收件人显示名称和地址提取为单独的值

使用Mail gem(即Rails + ActionMailer),是否有一种干净的方式来获取收件人的显示名称?

我可以通过以下方式获取地址:

mail.to.first
Run Code Online (Sandbox Code Playgroud)

我可以使用以下格式获取格式化的显示名称+地址:

mail.header_fields.select{ |f| f.name == "To" }.first.to_s
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能得到显示名称部分(即在<和之前>).我知道有人会建议一个正则表达式,但这不是我想要的,因为我必须解析任何编码,这是Mail宝石可能已经做的事情.我是PHP中一个流行的Mailer库的作者,并且我知道在8位字符发挥作用时,在标题中假设前面的陷阱<并且>是人类可读的陷阱.

我可以做这个:

mail.header_fields.select{ |f| f.name == "To" }.first.parse.individual_recipients.first.display_name.text_value
Run Code Online (Sandbox Code Playgroud)

但必须有更好的方法吗?:)

ruby actionmailer mail-gem

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

Emacs:对齐文本,但不是整行?

我曾经使用的唯一一个支持这个的编辑器(我确定很多人都这样做)是Sublime Text 2,但希望emacs也有一个技巧.如果源保持列化,我工作的一些类具有相当声明的语法看起来更干净.当一个新行将列的长度增加一两个空格时,问题就出现了......然后你必须通过每一行来重新对齐它.

屏幕截图可能会澄清我的目标:

列化文本不对齐

在这里我添加了一行,如果它的列比其他列延伸得更远,那么我想再次重新排列它.通常我只是在箭头和空格键周围重复循环,直到我逐行重新排列所有内容,但是如果有一种方法可以选择一个矩形区域并强制它会很好将该区域的非空白部分文本对齐.

这可能吗?

emacs indentation

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

经验丰富的Schemer,letcc和guile

关于letcc这一点的一些问题在The Seasoned Schemer中使用.

(define (intersect-all sets)
  (letcc hop
    (letrec
      ((A (lambda (sets)
            (cond
              ((null? (car sets)) (hop '())
              ((null? (cdr sets)) (car sets))
              (else
                (intersect (car sets)
                           (A (cdr sets)))))))
       ; definition of intersect removed for brevity
      (cond
        ((null? sets) '())
        (else (A sets))))))
Run Code Online (Sandbox Code Playgroud)
  1. 我想我明白什么letcc实现,那就是基本类似catch,并throw在红宝石(貌似CL),这基本上意味着代码的整体结构可以通过调用任何指定的剪短letcc的.这感觉就像是最"功能性"的事情我已经在这短短的系列丛书遇到,这让我觉得有点犹豫,使用它,因为我想学习的好功能的风格.我只是误解letcc,还是它不是一个真正的函数式编程概念,只是为了提高性能?整个想法,我可以在一些例程的中间,然后突然到达代码中的另一个点感觉有点错误...就像滥用Java中的try/catch程序流程一样.

  2. letcc 似乎不存在于我在OS X中安装的guile版本(1.8.7).我应该在guile中寻找另一个名称吗?

  3. 如果我letcc通过将它与Java中的try/catch进行比较来误解,或者在ruby中捕获/抛出(这不是异常处理,只是为了清楚,对于非rubyists),它在功能级别上究竟是如何工作的?它可以用更长,更复杂的方式表达,这让我觉得它毕竟是功能性的吗?

scheme functional-programming seasoned-schemer

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

排除了软删除行的唯一约束

我们有一个表格,它有一个独特的约束,用于从一个用户留下的反馈,另一个与销售相关的反馈.

ALTER TABLE feedback
ADD CONSTRAINT unique_user_subject_and_sale
UNIQUE (user_id, subject_id, sale_id)
Run Code Online (Sandbox Code Playgroud)

这可以确保我们不会意外地获得重复的反馈行.

目前,我们有时会硬错误地删除错误的反馈并让用户再次离开.我们想要更改为软删除:

ALTER TABLE feedback
ADD COLUMN deleted_at timestamptz
Run Code Online (Sandbox Code Playgroud)

如果deleted_at IS NOT NULL,考虑删除反馈,虽然我们仍然在我们的数据库中有审计跟踪(并且可能会向网站管理员显示幻像).

当我们使用像这样的软删除时,我们如何保持我们的唯一约束?是否可以在不使用更一般的CHECK()约束的情况下进行聚合检查(我从未尝试过使用像这样的检查约束).

这就像我需要在约束中附加一个WHERE子句.

postgresql database-design constraints

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