• #24 楼 @bhuztez 嗯我说得太粗略了。其实和 session 的实现相关,rails 里 session 默认是整个 base64 或者加密了加上签名存 cookie 里的,然后 cookie 中的这个 session 项的生命期是没设的,所以关闭浏览器就没了。session 用数据库或者内存存储的话处理会不太一样. 但是实现 remember me 的话,往往是加上一个 expire 比较长的 cookie (那么 cookie 就变成 session=...;remember_me=...;expires=... 了), 关闭浏览器也还存在,清空 session 的动作是不消除其它 cookie 的,这种情况基本没影响... 但如果像 ruby-china 这样,把 session 项也设置上生命期来记住用户登录状态,重置 session 确实什么都没了。

  • Ruby 社区应该去 Rails 化了 at 2013年03月27日

    #46 楼 @bhuztez django 其实去年也改了 yaml 的安全漏洞... 用比较老的 django 也会有和比较老的 rails 一样的安全问题... 但是老版本已经没有讨论意义了,关注 CVE 搞 0day 爆破才有效益...

  • ruby 调用 OTS 可以啊,直接上 fiddle 就行了,估计结果差不多。

    #21 楼 @ywjno 日语的分词工具最流行的是 mecab, 用二元语法 (bi-gram, 就是只记录相邻两个字之间的条件概率), CRF 模型,用 viterbi 算法搞的,中科院分词啥的感觉就是照抄了 mecab, 然后加上一些无关紧要的经验判断做调料,根本就和什么语没关系...

    数学之美里面介绍的是最大熵方法,也算一种分词方式,好处是不受词典限制。

    viterbi 算法是从隐马模型来的,有个做得挺精致的 ppt. HMM 的 viterbi 算法扩展一下就能搞 CRF 了。

    类似的东西还有个 SGD, 研究反向传播算法的家伙特别喜欢,(例如 dejavu 格式的作者 ), 只是好像没见过用来分词...

  • #16 楼 @aisensiy 响应头有个 Set-Cookie 段修改的。

    把你扩展页面发的请求附上正确的 csrf token, 修好不就没问题了么... 又没有谁在攻击你

  • 使用声波传递文件 at 2013年03月27日

    #7 楼 @feitian124 声音的频率按 10000 Hz 算,调幅数字信号的理论最大传输速度就是 10kB/s, 但是加上校验或者用调频方式,加上波幅调整的技术精度限制,估计有 1kB/s 就不错了...

  • #8 楼 @bhuztez #11 楼 @aisensiy

    csrf 这个处理方式是凝聚了无数经验的结果...

    有跨站的需要就 protect_from_forgery except: [...] 呗。或者对 API 调用整个关掉 csrf 验证。

    跑题:csrf 还有各种坑在里面,例如浏览器会缓存页面,如果打开一个登录页面,关闭浏览器再打开浏览器,session 失效,session 里的 csrf token 就和页面上的不一致了,但登录是能成功的。因为 csrf 失效只是清空了 session, 然后登录的话不用验证 session 里的 user id 的,所以还能正常登录,而且这样是没有危险的...

  • Ruby 社区应该去 Rails 化了 at 2013年03月27日

    #72 楼 @bhuztez -_- 不然读者就能看出这个比较没实用意义了

  • 使用声波传递文件 at 2013年03月27日

    #2 楼 @feitian124

    另外如果把字节用调幅信号传送,听得见的声波的频率在 (20-16000Hz), 比微波信号 (300M-300GHz) 的频率和带宽都低很多,不管调频 (FM, 传输率和带宽相关) 还是调幅 (AM, 传输率和频率相关) 都比蓝牙慢很多的... 调相或者调相差分传输率也和频率/带宽相关。还有环境音干扰失真也很严重... 玩一下挺有意思,不实用...

  • Ruby 社区应该去 Rails 化了 at 2013年03月27日

    只有长连接需要高并发,特别是聊天或者游戏服务器的场景,而且都有相应的解决方案... 大部分网页都是一下就搞定的并发有个鬼用...

    @zhangjingqiang @bhuztez 写页面绝对是 django 比较慢,那个模板略蛋疼啊... 一个 admin 搞这么久是他们不对,都不会查一下各种 admin 的 gem...

  • 使用声波传递文件 at 2013年03月27日

    声波的频率太低,限制了波特率,也就传歌比较效率... 可以把歌压缩成超声波传送...

  • 可以记录 csrf 的 referrer 来提醒用户该网页有问题... airbrake 的异常统计里也能看到哪个站在使坏或者被注入了...

    另外重置的是 session 不是 cookie, 如果有"记住我"的设置的话一般会写到 cookie 中而不是 session 中,所以登出的用户只包含没点选"记住我"的那些...

  • P.S. 现在 ruby-china 的 markdown parser 被搞得很奇怪,~~删除~~ 前后不加空格的话就不能做删除线,代码中的空行也被自动消灭了 ...

  • 可以的哦,前提是 f 是在源文件中定义的,看你的描述应该满足。

    假设有方法 f

    def f a=1, b=2
      # ...
    end
    

    那么获取它的默认参数的值可以这么做:

    require "method_source"
    require "ripper"
    class OptParamsBuilder < Ripper::SexpBuilder
      def initialize meth
        @src = meth.source
        super @src
      end
    
      def on_def *xs
        @method_name ||= xs[0][1]
        super
      end
    
      def on_params *xs
        @opt_params ||= xs[1]
        super
      end
    
      def opt_params
        parse
        params = @opt_params.map do |(_, param), value|
          param
        end
        first_line = @src.lines.to_a[0]
        eval "#{first_line}\nreturn #{params.join ' , '}\nend"
        send @method_name
      end
    end
    
    p OptParamsBuilder.new(method(:f)).opt_params #=> [1, 2]
    
  • Ruby 社区应该去 Rails 化了 at 2013年03月26日

    @robbin 新博客很漂亮啊

  • 学 bilibili, 每半小时解析一次优酷视频地址 然后用 <video><source><source>...</video> 生成干净的播放器...

  • #8 楼 @justend 这么写没问题的,问题应该在别的地方

  • 首先应该查找触发条件:是光?声音?静电?温度?电容变化?爱恶作剧的某同事在附近?做实验才是正确的寻找答案的方法

    楼主可以尝试表演很惊讶害怕,不知所措的表情,附近有人憋笑的话就知道答案了. 如果让别人把外套放椅子上也能启动,就表明和楼主个人无关,如果不能,就很可能是楼主的电容或者气场异于常人 (学名叫电波体质). 如果用东西蒙着电脑,电脑看不见也能启动,就表明光线变化不是启动条件 (macbook 的键盘就能探知光线变化决定是否发光). ...

  • 被 Python 社区吐槽了... at 2013年03月22日

    python 的新网站挺好看的

  • iciba 和常见词典经常搜不到一些生僻词或者流行语的,urbandictionary 基本可以

    例如 Taylor Swifting, AMA, w/o 之类的

  • 什么叫企业级? at 2013年03月21日

    @sailtsao @chenge

    编译和解释的界定要看宾语...

    编译 = code generation, 这个 code 可以是任何代码 (源文件,字节码,机器码,数据,文本...), 编译的结果可以存在文件里,也可以存在内存里。

    ruby 可以是编译器:把源文件编译成字节码 ruby 也可以是解释器:解释执行字节码

    javac 是编译器:把源文件编译成类 (字节码) java 可以是解释器:解释执行字节码 java 也可以是编译器:把热的字节码编译成机器码 (JIT), 不经过汇编


    只有放在可执行内存里的机器码可以直接送给 cpu, cpu 是机器码的解释器

    字节码是语言设计的比较效率的中间代码表示,生成字节码不需要申请可执行内存。

    汇编是一种 语言 , 基本可以 1:1 由 assembler 翻译成机器码。gcc -S 生成的就是汇编,gcc 编译 C 语言是先编译成汇编,然后调用 gas 把汇编编译成机器码。

    debug 时看到的 xor %rax, %rax 之类的就是 反编译 出来的内容 (机器码 => 汇编).


    常常有人分不清 强/弱类型 和 静态/动态类型 的区别... 这和有些语言卖广告时喜欢混淆视听也有关系...

  • 能的

    export ACK_OPTIONS='--text --ignore-dir=log --smart-case'
    
  • 原因很多... 例如防火墙把你的连接喀擦了,或者是你的 socket 对象 close 掉了,没代码没真相...

  • 什么叫企业级? at 2013年03月20日

    和企业号同型的船叫企业级

    从帆船到太空船都有

  • 什么是 TinyTDS at 2013年03月20日

    用了 FreeTDS, 应该是 Unix 和 Linux 都能用的跨平台 sql server 驱动

  • @chenge 你不爱用 migration 可以用 datamapper 代替 activerecord, migration 和交互工具都不需要了。

    只是数据库的演化往往不是简单的把 sql 放版本控制就能搞定的。等到你以后碰到实际问题,自己重造出一套 migration 工具后,就会理解为什么有 migration. 等你 migration 写多了,就会理解为什么要专门为此设计一套 dsl...

  • #4 楼 @lzm110 没源码就只能从机器码级别 debug 了,VS2008 也能 debug 不带源码的程序的。另外可以试试 IDA pro 或者 Ollydbg

  • Ruby 原来内置 RSS 库的 at 2013年03月20日

    还内置 berkley db 呢... 以前还内置过 soap, 不过删掉了...

  • #2 楼 @lzm110 那符号表格式应该不一样的... 用 VS2008 debug 吧