我有一个DB,其中有一个shows带有多语言列的表title.我想通过添加如下索引来优化全文搜索:
CREATE INDEX title_idx ON shows USING gin(to_tsvector(title));
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
ERROR: functions in index expression must be marked IMMUTABLE
Run Code Online (Sandbox Code Playgroud)
它基本上要求我添加语言参数以使to_tsvector不可变.结果将是:
CREATE INDEX title_idx ON shows USING gin(to_tsvector(LANGUAGE, title));
Run Code Online (Sandbox Code Playgroud)
哪里LANGUAGE是我的目标语言之一.
是否可以创建适用于多种语言的索引?
我需要创建一个OpenSSL连接,我可以直接读/写握手数据.原因是握手数据将以UDP连接方式传输(DTLS不是一个选项,因为数据不是直接在数据报中,而是在另一个协议包内,如果你好奇则是EAP).到目前为止,我已经创建了一个OpenSSL连接,但我甚至无法读取客户端的握手以发送到服务器.
在我的研究,我发现我需要一个内存BIO读/写的连接,但无法弄清楚如何提取握手数据.以下是我初始化客户端连接的方法:
SSL_library_init();
SSL_load_error_strings();
OpenSSL_add_all_algorithms();
ctx = SSL_CTX_new(SSLv3_client_method());
SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, NULL);
ssl = SSL_new(ctx);
rbio = BIO_new(BIO_s_mem());
wbio = BIO_new(BIO_s_mem());
SSL_set_bio(ssl, rbio, wbio);
SSL_set_connect_state(ssl);
Run Code Online (Sandbox Code Playgroud)
我尝试过doint SSL_connect,发起握手:
int ret = SSL_connect(ssl);
Run Code Online (Sandbox Code Playgroud)
但是返回-1,并且SSL_get_error(ssl, res)我得到一个错误代码2,然后我执行ERR_error_string该代码并得到:
error:00000002:lib(0):func(0):system lib
Run Code Online (Sandbox Code Playgroud)
此外,如果我使用SSL_do_handshake而不是SSL_connect我得到完全相同的错误.
我已经能够通过TCP设置OpenSSL连接,但从未使用Memory BIO这样做,所以对此的任何帮助都将非常感激.谢谢!
我正在实现支持EAP(PEAP)身份验证的RADIUS服务器.RADIUS依赖于UDP,每个数据包将包含带有身份验证数据的EAP消息.为简化起见,每个EAP(PEAP)消息都包含TLS数据包,因此客户端将首先发送包含服务器将处理的TLS客户端握手的EAP数据包,然后返回TLS服务器握手,依此类推以下包.
我已经能够通过TCP实现一个简单的TLS服务器,但我需要的是直接在SSL连接中写入TLS字节.
SSLConn_init_thread();
SSL_load_error_strings();
ERR_load_crypto_strings();
SSL_library_init();
SSL_CTX *ctx;
...
ctx = SSL_CTX_new(SSLv23_server_method());
SSL_CTX_use_PrivateKey(...);
SSL_CTX_use_certificate(...);
ssl = SSL_new(ctx); // I want to read/write TLS packets directly with this object
Run Code Online (Sandbox Code Playgroud)
我已经研究过OpenSSL 文档,但它没有很好的文档记录.在本指南中说,可以使用SSL_set_accept_state()with SSL_read和SSL_write "手动"进行握手,但我不明白如何做到这一点.
任何有关此或关于在不依赖TCP的情况下处理OpenSSL连接的建议都将非常感激.
如何在我的.yml中为has_many和belongs_to变量创建样本数据.
这是将这些文件添加到终端中的简单rails new lab命令的示例.我真的不知道如何用英语解释这个.但我希望我的代码能够显示足够的细节来解决问题.
man.rb
class Man < ActiveRecord::Base
attr_accessible :name
has_many :items
end
Run Code Online (Sandbox Code Playgroud)
item.rb的
class Item < ActiveRecord::Base
attr_accessible :name
belongs_to :man
end
Run Code Online (Sandbox Code Playgroud)
men.yml
one:
name: ManOne
#items: one, two
two:
name: ManTwo
#items: one, two
Run Code Online (Sandbox Code Playgroud)
items.yml
one:
name: ItemOne
two:
name: ItemTwo
Run Code Online (Sandbox Code Playgroud)
man_test.rb
require 'test_helper'
class ManTest < ActiveSupport::TestCase
def test_man
Man.all.each do |man|
puts man.name.to_s + ": " + man.items.to_s
end
assert true
end
end
Run Code Online (Sandbox Code Playgroud) 当我尝试使用循环变量填充数组数组时,我注意到了一种奇怪的行为.
N = 5
M = 4
m = Array.new(N, Array.new(M, -1))
for j in 0..N-1
m[j][0] = j
end
m
Run Code Online (Sandbox Code Playgroud)
这样做最终会:
4 -1 -1 -1
4 -1 -1 -1
4 -1 -1 -1
4 -1 -1 -1
4 -1 -1 -1
Run Code Online (Sandbox Code Playgroud)
但我预计:
0 -1 -1 -1
1 -1 -1 -1
2 -1 -1 -1
3 -1 -1 -1
4 -1 -1 -1
Run Code Online (Sandbox Code Playgroud)
另一方面,这可以按预期工作:
N = 5
m = Array.new(N)
for i in 0..N-1
m[i] = i
end
puts m …Run Code Online (Sandbox Code Playgroud) 我尝试使用以下语法向我的网站动态添加一些 JavaScript:
$('head').append('<script type="text/javascript" src="js/myjavascript.js"><\/script>');
Run Code Online (Sandbox Code Playgroud)
它加载,但是当我观察抛出 chrome 网络选项卡时,我观察到它持有的请求?
例如在这种情况下,JavaScript 的请求 url 是:
$('head').append('<script type="text/javascript" src="js/myjavascript.js"><\/script>');
Run Code Online (Sandbox Code Playgroud)
我不知道最终的数字是什么,没有在任何地方设置它,但我想用这个数字浏览器无法缓存我的 JavaScript。
有人知道如何在没有该标志的情况下动态添加 JavaScript 吗?
继续关于 dll 的最后一个未解决的问题,我尝试使用 g95 使用以下命令创建 fortran dll:
g95 -c FCall.f90
g95 -shared -mrtd -o FCall.dll FCall.o
当我将它链接到 VB 时,它显示“无法在 DLL 'C:\Users\Hp\Documents\Visual Studio 2010\Projects\WindowsApplication5\WindowsApplication5\FCall.dll' 中找到名为 'FortranCall' 的入口点。”
这是 FORTRAN 代码:
SUBROUTINE FortranCall (r1, num)
!DEC$ ATTRIBUTES DLLEXPORT :: FortranCall
!DEC$ ATTRIBUTES ALIAS:'FortranCall' :: FortranCall
REAL,INTENT(IN) :: r1
REAL,INTENT(OUT) :: num
num = MOD (r1, 256.0)
END SUBROUTINE
Run Code Online (Sandbox Code Playgroud)
这是VB代码:
Private Sub Command1_Click()
r1 = 456.78
Call FortranCall(r1, Num)
Text1.Text = Str$(Num)
End Sub
Run Code Online (Sandbox Code Playgroud)
VB中的模块代码:
Declare Sub FortranCall Lib"C:\Users\Hp\Documents\Visual Studio 2010\Projects\WindowsApplication5\WindowsApplication5\FCall.dll"
(r1 As …
c ×2
openssl ×2
ruby ×2
ssl ×2
arrays ×1
dll ×1
entry-point ×1
fixtures ×1
fortran ×1
javascript ×1
jquery ×1
postgresql ×1
radius ×1
sequel ×1