我目前在我的数据库中有多个表,它们包含相同的"基本字段",如:
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 对其进行规范化,但我不喜欢这个想法,因为它是一种"数据库中的数据库"方案,我没有办法要求某些键/字段也不需要特殊类型,以后获取和排序数据将是一个巨大的痛苦.
所以我现在正在寻找一种方法来在多个表之间"共享"主键,甚至更好:通过使用通用表和多个专用表来规范化它.
使用C++在Microsoft Windows上生成唯一硬件ID的最佳方法是什么,这种方法不易被欺骗(例如更改MAC地址)?
我正在使用Rails 3.1.1和PostgreSQL 9.1以及地球距离模块.为了能够正确计算不同位置之间的距离,我earth在branches表格中设置了一个类型的列.
我现在遇到的问题是我的Rails应用程序使用此表不理解地球类型,因此我得到了这个db/schema.rb:
# Could not dump table "branches" because of following StandardError # Unknown type 'earth' for column 'location'
这是有问题的,因为现在我无法从schema.rb创建我的测试数据库.
如何将此类型添加到AR或使其忽略该列?
我使用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) 我只是想用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.closeRun Code Online (Sandbox Code Playgroud)
这导致服务器上完全垃圾就绪的文件看起来遍布:
我的下一步是将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 Vitvitskiy的Multipart-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) 我正在开发一个使用SQLite作为数据库管理系统的PHP应用程序,MySQL和PostgreSQL等不是一个替代方案(虽然我真的很想使用pgsql),因为我希望设置非常适合初学者和零头痛一样.现在很多人都使用共享主机,而且很多人只提供对htdocs目录的直接FTP访问,但不能超过它.这意味着客户必须将SQLite-Database-File放在他们的htdocs中,这意味着全世界都可以访问它,任何人都可以下载它.
为客户提供某种保护的最佳方法是什么,这很简单并且在所有HTTP服务器上都受支持?
在MySQL中,你可以简单地用文件读取文件SELECT load_file('foo.txt')并用文件写入文件SELECT 'text' INTO DUMPFILE 'foo.txt'.
我正在寻找一种方法在MSSQL 2000中执行此操作,而无需使用任何外部工具,只需查询或存储过程.
我是在我的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提供商提供的电子邮件?