网站维护或者部署,返回的不是 xml, Nokogiri parse 就挂了
这个有几种常见可能:
不,费曼是物理界的垠神
以前 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
这样?
var test = <%== @test.to_json %>
有,不过需要做比较大的修改:反过来控制,从 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 还活着?会不会听错了?
先看文档说有哪些,文档懒得写的话就看代码实现...
应该这么写:
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
自己肯定够花,但如果要养一个日本老婆的话,可能得跳槽 (如果是比较传统的行业或者城市就不太容易) 或者搞点外快 (一年四季带名表...)
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 用的 blowfish 是加密,但 bcrypt 的做法是截一段密文就... 变成哈希了
&.
也有类似 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/... 请求