某
s ankak ucomplex.c om
也是 rails 呢...
palindrome
把 transaction 牵涉到的所有数据放到同一个文档中,用原子操作就可以了,如果没法做到,请不要用 mongodb. 或者自己用文件锁实现逻辑事务也可以。如果部署到多台机器,那你可以在一个挂载的公共磁盘上锁... 最后还是直接用关系数据库方便...
这个 iv 是 128 位的 base64, 不适合用做 aes-256 的 iv
aes 有很多变种的,ruby 中用标准库 openssl 的 aes 就和 mcrypt 的算法一致了
require 'openssl'
aes = OpenSSL::Cipher::AES256.new('CBC').encrypt
aes.key = "aee18b71a9c35809baa8aa8f61fe6d8e"
p aes.random_iv # "nYV\xAFj\xF6\x98\x95\xDA4\xE7\xE9\xAD\x90}2"
message = "hello;world"
enc = aes.update(message) << aes.final
p enc # "hX\xCB\r3\x12\xC4\x840\xDB\xF4\x8F\xCBzJ\xD2"
对应的 php 大概是这样
<?php
$str = "hX\xCB\r3\x12\xC4\x840\xDB\xF4\x8F\xCBzJ\xD2";
$key = "aee18b71a9c35809baa8aa8f61fe6d8e";
$iv = "nYV\xAFj\xF6\x98\x95\xDA4\xE7\xE9\xAD\x90}2";
$message = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $str, MCRYPT_MODE_CBC, $iv);
?>
是显示的问题,或者你可以 101.chr.encode('utf-16be').force_encoding 'binary'
看看
ruby 是用 string 类型表示的
101.chr.encode 'utf-16be' # "\x00\x65"
"\x00\x65".unpack('H*').first # "0065"
"0065".gsub(/(..)/, '\x\1') # '\x00\x65'
#5 楼 @seamon md5 可以表示成 32 个 16 进制 数字而不是任意 ascii 字符,排列数约 3.40E38, 但是由于 birthday paradox, 网盘里如果总共有 2.2E19 个文件 (目前应该达不到这么多), 就有 50% 的几率出现 md5 相同的文件,另外由于 md5 hash 长度比较短,人为制造相同的哈希需要的计算量,远比穷举哈希空间需要的计算量少得多,别说 "不可能". 虽然网盘还可以进一步对 md5 相同的文件做内容比较再决定是否合并,但涉及安全的地方别用 md5 是常识才对...
#13 楼 @small_fish__ brew update
先
如果是要 web_user_id 不重复:
array.uniq_by &:web_user_id
要表达的更清楚,多改几次就可以了,慢工出细活,但这样必然影响你的绩效... 要表达的更有意思,就要多看书,脑子里才有迸发灵感的材料。很多作家都是看书无数。
499 抢到一张~
#18 楼 @yedingding 起名字的时候没想到当着一群人念出来耻度会这么高...
我喜欢 Ansible ... 的名字,安德的游戏第一部今年 10 月就要出了,Ansible 应该会在第二部里提到...
完了还没出门,还没粗饭买包蓝蓝路先...
#2 楼 @p0p3 例如标准库的测试模块的 assert 就是要修改 caller 的,assert 不对就会扔出 AssertionError, 但显示的栈里就不没必要把 assert 方法包括进来
https://github.com/ruby/ruby/blob/trunk/lib/test/unit/assertions.rb
功能完整的 sinatra 程序和 rails 在 rack 层是一样的
当你 enable :cookies
和 use Rack::Flash
后会看到性能大幅下降
orm 层更加是瓶颈,如果用 ActiveRecord, 就和 rails 没什么区别了...
benchmark 性能好的框架是因为没开各种功能,开了和 rails 区别还真不大...
除了 gimp
传过去
class C < ..
def index
Post.find(params[:id]).f session
...
end
end
class M < ..
def f session
...
end
end
以 MRI 64 位机器为例:
值类型 nil, true, false, 小整数和符号 8 字节
对象类型一种是堆的
struct RObject {
VALUE flags;
VALUE klass;
struct {
long numiv; // 实例变量数
VALUE *ivptr; // 指向实例变量数组,可以为空
struct st_table *iv_index_tbl; // 指向共用的实例变量索引表
} heap;
};
至少得 4 * 8 + 4 = 36 字节
一种是嵌入的
struct RObject {
VALUE flags;
VALUE klass;
VALUE ary[3]; // 默认是 3, 但可以改
};
至少得 3 * 8 = 24 字节
Unix 就是最好的 IDE.