小编Pat*_*ien的帖子

SQL数据库表中的多态性?

我目前在我的数据库中有多个表,它们包含相同的"基本字段",如:

name character varying(100),
description text,
url character varying(255)
Run Code Online (Sandbox Code Playgroud)

但我有一个基本的表,这是例子的多个专业化tv_series有田season,episode,airing,而movies表中有release_date,budget等等.

现在起初这不是问题,但我想创建第二个表,linkgroups使用这些专用表的外键调用.这意味着我会以某种方式将其自身标准化.

我听说过解决这个问题的一种方法是使用key-value-pair-table 对其进行规范化,但我不喜欢这个想法,因为它是一种"数据库中的数据库"方案,我没有办法要求某些键/字段也不需要特殊类型,以后获取和排序数据将是一个巨大的痛苦.

所以我现在正在寻找一种方法来在多个表之间"共享"主键,甚至更好:通过使用通用表和多个专用表来规范化它.

sql postgresql normalization

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

在Windows上生成硬件ID

使用C++在Microsoft Windows上生成唯一硬件ID的最佳方法是什么,这种方法不易被欺骗(例如更改MAC地址)?

c++ windows uuid unique copy-protection

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

ActiveRecord中的自定义数据库类型

我正在使用Rails 3.1.1和PostgreSQL 9.1以及地球距离模块.为了能够正确计算不同位置之间的距离,我earthbranches表格中设置了一个类型的列.

我现在遇到的问题是我的Rails应用程序使用此表不理解地球类型,因此我得到了这个db/schema.rb:

# Could not dump table "branches" because of following StandardError
#   Unknown type 'earth' for column 'location'

这是有问题的,因为现在我无法从schema.rb创建我的测试数据库.

如何将此类型添加到AR或使其忽略该列?

activerecord ruby-on-rails earthdistance

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

跟踪Ruby中的死锁

我使用BrB共享Ruby 1.9中各种工作进程的数据源,我使用Process#fork进行分叉,如下所示:

Thread.abort_on_exception = true

fork do
  puts "Initializing data source process... (PID: #{Process.pid})"
  data = DataSource.new(files)

  BrB::Service.start_service(:object => data, :verbose => false, :host => host, :port => port)
  EM.reactor_thread.join
end
Run Code Online (Sandbox Code Playgroud)

工人分叉如下:

8.times do |t|  
  fork do
    data = BrB::Tunnel.create(nil, "brb://#{host}:#{port}", :verbose => false)

    puts "Launching #{threads_num} worker threads... (PID: #{Process.pid})"    

    threads = []
    threads_num.times { |i|
      threads << Thread.new {
        while true
          begin
            worker = Worker.new(data, config)

          rescue OutOfTargetsError
            break

          rescue Exception => e
            puts "An unexpected …
Run Code Online (Sandbox Code Playgroud)

ruby multithreading deadlock locking backtrace

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

Ruby中的多部分文件上载

我只是想用POST将图像上传到服务器.就像这个任务听起来那么简单,Ruby中似乎没有简单的解决方案.

在我的应用程序中,我使用WWW :: Mechanize进行大多数事情,所以我也想使用它,并且有这样的来源:

f = File.new(filename, File::RDWR)
reply = agent.post(
    'http://rest-test.heroku.com',
    {
         :pict       =>  f,
         :function   =>  'picture2',
         :username   =>  @username,
         :password   =>  @password,
         :pict_to    =>  0,
         :pict_type  =>  0
    }
)
f.close
Run Code Online (Sandbox Code Playgroud)

这导致服务器上完全垃圾就绪的文件看起来遍布:

alt text http://imagehub.org/f/1tk8/garbage.png

我的下一步是将WWW :: Mechanize降级到版本0.8.5.这一直有效,直到我试图运行它,但失败了,例如"在hpricot_scan.so中找不到模块"这样的错误.使用Dependency Walker工具我可以发现hpricot_scan.so需要msvcrt-ruby18.dll.然而,在我将.dll放入我的Ruby/bin文件夹后,它给了我一个空的错误框,从那里我无法进一步调试.所以这里的问题是Mechanize 0.8.5依赖于Hpricot而不是Nokogiri(它完美无缺).


下一个想法是使用不同的gem,所以我尝试使用Net :: HTTP.经过简短的研究后,我发现在Net :: HTTP中没有对多部分表单的本机支持,而是你必须构建一个为你编码等的类.我能找到的最有帮助的是Stanislav VitvitskiyMultipart-class.到目前为止,这个类看起来不错,但它不能满足我的需求,因为我不想发布文件,我也想发布正常的数据,这对他的班级来说是不可能的.


我的最后一次尝试是使用RestClient.这看起来很有希望,因为有关于如何上传文件的例子.然而,我无法将其作为多部分发布.

f = File.new(filename, File::RDWR)
reply = RestClient.post(
    'http://rest-test.heroku.com',
    :pict       =>  f,
    :function   =>  'picture2',
    :username   =>  @username,
    :password   =>  @password, …
Run Code Online (Sandbox Code Playgroud)

ruby upload http mechanize multipart

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

最受支持的方式来保护flatfiles(sqlite db)免受HTTP访问?

我正在开发一个使用SQLite作为数据库管理系统的PHP应用程序,MySQL和PostgreSQL等不是一个替代方案(虽然我真的很想使用pgsql),因为我希望设置非常适合初学者和零头痛一样.现在很多人都使用共享主机,而且很多人只提供对htdocs目录的直接FTP访问,但不能超过它.这意味着客户必须将SQLite-Database-File放在他们的htdocs中,这意味着全世界都可以访问它,任何人都可以下载它.

为客户提供某种保护的最佳方法是什么,这很简单并且在所有HTTP服务器上都受支持?

database sqlite http flat-file

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

如何使用MSSQL 2000读取/写入文件?

在MySQL中,你可以简单地用文件读取文件SELECT load_file('foo.txt')并用文件写入文件SELECT 'text' INTO DUMPFILE 'foo.txt'.

我正在寻找一种方法在MSSQL 2000中执行此操作,而无需使用任何外部工具,只需查询或存储过程.

sql sql-server

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

使用Google OpenID进行Ruby open_id_authentication

我是在我的Rails应用程序中实现OpenID的第一步. open_id_authentication似乎是一个相当容易使用的插件,这就是我决定使用它的原因.

使用我的Google帐户登录似乎完美无缺,但是我没有得到我需要的sreg/AX字段.我的代码目前如下:

class SessionsController < ApplicationController

  def new; end

  def create
    open_id_authentication
  end


  protected
    def open_id_authentication
      authenticate_with_open_id(params[:openid_identifier], :required => ["http://axschema.org/contact/email"]) do |result, identity_url, registration|
        if result.successful?
          p registration.data
          @current_user = User.find_by_identity_url(identity_url)
          if @current_user
            successful_login
          else
            failed_login "Sorry, no user by that identity URL exists (#{identity_url})"
          end
        else
          failed_login result.message
        end
      end
    end


  private
    def successful_login
      session[:user_id] = @current_user.id
      redirect_to(root_url)
    end

    def failed_login(message)
      flash[:error] = message
      redirect_to(new_session_url)
    end
end
Run Code Online (Sandbox Code Playgroud)

我已经阅读了有关Google OpenID的各种讨论,并且只是说您需要使用AX架构而不是sreg字段email,但即使我这样做(正如您在上面的代码中看到的那样),registration.data仍将保留空({}).

如何通过open_id_authentication有效地要求大多数OpenID提供商提供的电子邮件?

openid ruby-on-rails

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