• 网站维护或者部署,返回的不是 xml, Nokogiri parse 就挂了

  • 这个有几种常见可能:

    • 用错了,用了 encrypt
    • 密文不完整或者被截断
      • 你还没解 base64 就扔给 decrypt
      • 传输没完,截断了
      • 多此一举先解了 padding 对不齐了
  • 不,费曼是物理界的垠神

  • Gemfile 要改名了 at 2017年09月11日

    以前 Makefile 流行,现在 webpack.config.js 流行...

  • 分一个 case sensitive 的卷就好,不然玩不了游戏

  • Clojure 和 Racket 还算相似... 不过你干点什么事情都得找 Java 的库看 Java, 这不仅是一门语言...

  • 是啊,Common Lisp 你一个 Lisp 搞什么 Object, Meta-Object Protocol?

    你跟别人讲我用 Common Lisp 啦,下了一个世界最快的编译器 sbcl ! 别人说好牛哦那你能 call/cc 吗?玩不了这些花为什么不用 Java? 你就 sb 了...

    讲真 Racket 的社区比 CL 更活跃,Scheme 也更纯粹简单,装个 Racket 什么都有了,何苦搞 CL?

  • 嗯 Lisp 的正统是 Scheme, Scheme 的正统是 Racket ...

    Racket 不仅开箱即 R5RS, R6RS, R7RS... 现在还能跑在 Chez Scheme 上了,Chez Scheme 那代码库克隆下来都上 G 了咯。

    小心莫走进 Clojure 或者 Common Lisp 的邪路呀!

  • 说不定哪个操作里一不小心就锁上了,最好用 rb_thread_call_without_gvl

  • 关于数组&quot 转译问题 at 2017年08月25日

    这样?

    var test = <%== @test.to_json %>

  • 关于 rerender 的问题 at 2017年08月25日

    有,不过需要做比较大的修改:反过来控制,从 server 通知客户端更新

  • 可以获取字节码然后修改之,不过 InstructionSequence 还没提供 from array 的构造函数

  • @jakit 你说的多线程编程问题在所有 GC 里都有,如果你在 GC 体系外自己创建了新线程,而新线程里带有待 GC 对象,你就得向 GC 注册你自己创建的线程。例如 Boehm GC 就得调用:

    GC_register_my_thread / GC_unregister_my_thread 去处理

    Geek 人群是可以关闭 GVL 的 -- 首先你得知道你在干啥,会不会有影响。对应的 API 是 rb_thread_call_without_gvl

  • 因为 Ruby 都是把数据不管二进制还是字符流存在 String,数据大了很卡

    没有任何因果关系....

    MRI 或无法回收 pthread 里面执行的堆栈的 VALUE

    可以的,你 segment fault 的原因可能是没有把 thread 注册进去 Ruby VM, 导致 GC mark 不到各个 thread 的 stack, mark 不到就会回收掉。不是无法回收而是过早回收了...

    如何让 GC 知道所有 thread 呢?

    VM 对所有在 Ruby 中创建的线程有跟踪,rb_vm_t 有个列表字段叫 living_threads, 其中的每个元素的类型是 rb_thread_t.

    rb_thread_t 结构体有个 machine 字段,它里面有 stack_start/stack_end/register_stack_start/register_stack_end 字段。

    所以在 GC 的时候 living_threads 的所有 stack 的 VALUE 都可以 mark 到。

    简单的办法就是:你直接用 Ruby 的 thread API 去创建线程就好了。如果你还是坚持自己用 pthread 或者 win_thread 去创建,你可以把创建后的 thread 包装成 Ruby thread 然后注册到 GC 的 root set 中去。

  • 为啥不撸一个 jenkins ... 感觉更有用一点

  • 办法就是我说的那么简单,但挨个改链接是个很费事的工作,你去搜搜说不定有人做过可以给你复制粘贴一下

    B 方案 碰到 redirect 的时候还要 rewrite header

    A 方案比较好办一些,如果你的 8080 端口的服务是 rails 就更好办了,改一下 asset host, 直接 mount 在 /test/ 就好,都不用 proxy_pass 了

  • 所以是串行的

    不要听风就是雨好不好

    你自己试试 MRI puma 单进程两个线程,两个并发请求会不会堵塞再来说话

  • A 办法:加回你的 proxy_set_header, 在 10.111.12.13 的代码中判断如果请求是否是从 proxy 过来的,是就就改掉 js/css (如果有图片字体图标等等的路径也一起改...)

    B 办法:加上 body_filter_by_lua 替换掉 html / js / css 中的路径 (有点痛苦)

  • NetBeans 还活着?会不会听错了?

  • 先看文档说有哪些,文档懒得写的话就看代码实现...

  • MiniMagic 动态生成图片 at 2017年08月11日

    应该这么写:

    image.run_command *%W"convert -pointsize 16 -kerning 1 +noise Laplacian -undercolor lightgrey #{"label:#{label} "} mini_captcha.jpg"
    

    它会根据第一个参数名去找一个 constant

    给 "convert" 它就会去找 MiniMagic::Tool::Convert, 但你给了全命令它就去找 MiniMagic::Tool::Convert -pointsize ... 这显然没定义

  • 你 openssl 的版本太老,所以没这个函数,尝试装个新的?

  • 去 windows store 装一个 linux 子系统就可以了: https://www.microsoft.com/en-us/store/p/ubuntu/9nblggh4msv6

  • 困惑于去日本的 IT 工作 at 2017年08月11日

    自己肯定够花,但如果要养一个日本老婆的话,可能得跳槽 (如果是比较传统的行业或者城市就不太容易) 或者搞点外快 (一年四季带名表...)

  • Ruby 模仿:|> at 2017年08月05日

    Breaker.break_workds 就行了吧?

    Breaker.break_words(some_text).map {|word| word[:text] }
    

    为了 OO 而 OO 就会连 print object 都得写成 object.print 了...

    Ruby 里要不要 patch String, 得看这个方法是否真的属于 String, 怕泄漏只要局部 patch 你还可以用 using, 但是感觉这个 using 也没什么人用,我们要的就是全局污染的爽快...

    链起来可以省掉起变量名的麻烦,但是链长了也不好 debug ... pipe 比链是更强一点,加上一些组合子,不管怎么都能 pipe 上 (就和 jQuery 的链式调用一样了...), 如果能再简洁点我就入教了

    但一步一个脚印的指令式代码其实有时还挺适合 debug 的

  • 可以研究啊,为了做个更好的...

    不过是真的很费时间,十万星的框架用起来经常有一种"这什么垃圾玩意"的感觉...

  • bcrypt 加密解密问题 at 2017年08月03日

    其实 bcrypt 用的 blowfish 是加密,但 bcrypt 的做法是截一段密文就... 变成哈希了

  • 如何读文档? at 2017年07月31日

    &. 也有类似 o.try(:[], k) 的用法:

    o&.[](k)
    

    然后比较深的话...

    o&.dig k1, k2, k3, k4
    

    于是现在我已经不用 try 了

  • 我错了...

  • 你和服务器之间并没有直接连接的一根线,这些数据包要通过很多路由器网关网桥网 xx 才能抵达服务器。

    HTTP 是明文的,中间的路由器上完全可以将你的请求一层层还原出来,然后修改你的请求或者伪造一个响应。

    对 HTTP 不论是 POST 还是 GET 都可以给你注入一段电信的联通的广告,或者缓存结果,或者怎么改都可以. 你当然可以在 HTTP 上加一些请求校验机制 (例如 Oauth 1 的请求摘要计算), 但是会搞得很复杂而且他们还是有办法搞你,这时直接用 HTTPS 即可。

    你听到的是狭隘经验主义的说法,有些网络提供商会选择缓存一些热门资源的 GET 来提速或者实现其他目的,但不代表他们不能搞你的 POST/PATCH/DELETE/OPTION/HEAD/... 请求