Ruby China
  • 社区
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • 注册
  • 登录
Zete
@luikore
高级会员
第 2880 位会员 / 2012-07-16

55 篇帖子 / 3422 条回帖
245 关注者
6 正在关注
32 收藏
GitHub Public Repos
  • triez 140

    fast, efficient, unicode aware HAT trie with prefix / suffix support for Ruby

  • rsec 78

    Parser / Regexp Combinator For Ruby

  • regexp_optimized_union 11

    Regexp.optimized_union(word_list, regexp_options) generates optimized regexp for matching union o...

  • zscan 9

    Improved string scanner

  • stimulus-bind 9

    Enable simple data binding for stimulusjs

  • vscode-hypertab 3

    The Missing Tab Completion for VS Code

  • property-list 1

    Property list (plist) library with all formats support

  • keycap 1

    1.5u keycap for Kailh low profile switch

  • ffi-clang 0

    Ruby FFI bindings for libclang 3.4+.

  • llvm-node 0

    Node LLVM 4.0+ Bindings

More on GitHub
  • 概况
  • 话题
  • 回帖
  • 收藏
  • 正在关注
  • 关注者
  • 揭露流氓 - "快用苹果助手 “ at 2013年04月24日

    对这种不能姑息,必须曝光,最好能上电视...

  • 吐槽 textmate at 2013年04月24日

    textmate 2 查找替换基本不用调出对话框的:

    ctrl+s 增量查找 cmd+e 将选中内容变成查找目标,cmd+g 就到下一个了。常用的组合是 ctrl+w (选中当前词) -> cmd+e -> cmd+g cmd+opt+f 同时编辑文件内所有匹配查找目标的内容

    另外全工程替换效果也很赞。可以进一步编辑工程下面的 .tm_properties 设置工程内查找可以忽略哪些文件。例如忽略 vendor 目录,.bundle 文件,.sfd 文件和压缩的 js 可以这么写:

    exclude = "{$exclude,vendor/**/*,*.bundle,*.sfd,*.sfd~,*.a,*.min.js}"
    

    键盘操作限定搜索范围在一个文件夹内的方法:cmd+opt+tab 把焦点切换到目录中选中文件夹 (焦点在目录时可以连续敲入文件的前几个字母快速跳到那个文件上,就和在 finder 中差不多), 然后就可以 cmd+shift+f 了。

  • 为什么 ruby 不能编译成二进制 at 2013年04月23日

    Cython 也是要虚拟机的吧?

  • adhearsion gem 使用 at 2013年04月23日

    可以做 "恭喜你中了六合彩" 之类的声讯台..

  • Mac 用户快来滚雪球啊... at 2013年04月23日

    剩下那个是小卡车?

  • Ruby class variable 求教 at 2013年04月23日

    #2 楼 @iBachue 今年要是能把 class variable 删掉就是最大的改进了...

  • Ruby class variable 求教 at 2013年04月23日

    class var 各种坑尽量别用...

  • ruby 和 "脚本语言" at 2013年04月23日

    #1 楼 @bhuztez SQL 错就错在 where clause 不是一等公民...

  • XahLee 你们还认识吗? at 2013年04月23日

    之前据说他已经找到了工作?

  • 王垠谈编辑器与 IDE at 2013年04月23日

    搬家没网错过了 party 啊...

    IDE 的做法是折中的:内存中既保存文本又有 AST, IDE 追踪文本的修改然后尝试把 AST 的变化最小化。但 parse 就是个世纪难题,增量 parse 依然有很高的复杂度也很难并行化。而且 CPU 的单核速度已经发展到极限,没法再快了。所以人们开发出二相着色和 flymake 等各种技术 (自然会被科学家鄙视,但是科学一直没发展,怪谁呢)...

    结构化编辑器的载体就完全是树,保存的时候才生成文本或者干脆就不要文本了。smalltalk 时代结构化编辑器就辉煌了,smalltalk 就不谈文件,谈 image... 现在所谓的 refactor 命令都是结构化编辑器上的基本编辑动作...

    另外结构化版本控制工具没跟上的话,结构化编辑器都还不够实用 -- 难道是变相给 ydiff 做广告?? (其实之前 @hlxwell 提的 xib 版本控制问题,如果 git 支持 ydiff 就直接解决了...)

    其实我最喜欢经典编辑器... 就是在平面上搞文本。高亮是通过词法为主,语法辅助的方式做,着色都是 "99% works and nobody complains"... 什么都能做还可以 out-of-box 的思考:例如把 end 这个关键字编辑改成 endo 这个方法,或者把整段代码用引号包起来,或者为了对齐某个符号鼓捣一些奇怪的缩进和空格...

    只是现在,IDE, 文本编辑器,结构化编辑器已经没有明显的分界线了... 多多少少什么都有掺杂...

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    #65 楼 @method_missing

    PyStringObject 的话,像下面这么写最多只能表示长度为 0-3 的字符串:

    PyStringObject o;
    

    一般这种 struct 必须整个用动态分配的,像 #41 楼 那样写在栈上还是错的。@hhuai 的代码或者写成这样也可以:

    string* ss = (string*)malloc(sizeof(string) + MALLOC_SIZE);
    ss->length = MALLOC_SIZE;
    memset(ss->p, '-', MALLOC_SIZE);
    

    但这样就更不能 COW 啦。

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    #59 楼 @hhuai c 和 c++ 就像 斯巴达和斯巴达克斯的区别吧...

    说到 c 的话,市面上任何一款 c 实现的 string, 只要是靠谱的 opaque type (封装隐藏了内部实现), 就不能 copy-on-write...

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    #59 楼 @hhuai char p[1]; 就是错的,明显你对 C 太不熟悉了... 你可以试试

    char p[1] = "hello world";
    printf("%s", p);
    

    有些版本的 c 编译器可以这么写:

    char p[] = "hello world";
    

    但是 char p[1] 就是不行

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    #51 楼 @hhuai 你的代码是错的... 而且是常见错误:把指针赋给了数组 (不要以为指针和数组是完全等价的...) 简单 fix 就是把 char p[1]; 改成 char* p;

    另外就算 fix 了这个错误,还有别的问题。例如别人得到了你的这个字符串 b, 他怎么知道 b.p 能否 free? 最后还是编程者必须知道字符串的内部结构和生命周期,全手动管理,就和没有封装字符串这个 struct 一样。

    字符串可以说是 C/C++ 世界里的亘古难题 (说是编程世界的难题都不为过), std::string 的包装就已经是 C++ 语法里能表示得最好的了... C++ 里要做 COW 的封装必须引入引用计数或者类似 GC 的机制,否则只能暴露内部表示让编程者去 hack

  • Handlebars 截断字符的 helpers at 2013年04月20日

    不过这个 helper 还是有用的,有时真的是需要固定字符串长度而不是刚好装得进一个框...

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    #41 楼 @hhuai 这就是比较丑的实现了,而且不是 c++... 丑的实现不仅写起来慢,而且容易出错

    例如你的代码就有问题,你可以试试 printf("%c",ss.p[0]); 看看能不能打出个减号

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    @reus @wendal 是我不好把文件没找到的错误扔掉了... 已经修改代码,别忘了 a.gt 这个模板哦

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    @reus @wendal 我正在往 linux 机装 go 中... 可能真是 mac 的错...

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    #37 楼 @hhuai 你可以试试跑跑这几个例子,我都把原因列出来了,什么地方解释得不对的请指正。你可以说大部分情况下 ruby 慢成一坨屎,但这几个例子都是事实不是 yy. (除了 go 的例子和 @wendal 大大执行的结果不一样...)

  • Handlebars 截断字符的 helpers at 2013年04月20日

    不用 css 搞?

    text-overflow: ellipsis;
    

    跨浏览器 ellipsis: http://compass-style.org/reference/compass/typography/text/ellipsis/

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    #30 楼 @wendal 好吧刚 checkout 了 go 的 edge 版本,在我的机器上速度有较大改进,接近 ruby slim 了。

    $ go version
    go version devel +13e00572ed0b Thu Apr 18 17:37:21 2013 -0700 darwin/amd64
    $ go build b.go
    $ time ./b
    ...
    1.415287306s
    ./b  1.38s user 0.05s system 100% cpu 1.435 total
    

    还是比 ruby 慢一点,如果换成 html/template:

    $ time ./b
    6.516209338s
    ./b  6.45s user 0.11s system 100% cpu 6.554 total
    
  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    #34 楼 @hhuai c++ 换个难看的写法是可以。java 的例子已经比曼德布罗集或者 n 体问题 之类的八辈子都用不到的 benchmark 有实用意义多了。

    ruby 做命令行工具的性能和内存优势都很大。

    ruby 也有带 jit 的实现:rubinius. 算上 jruby 的话就是有两个带 jit 的实现了。官方 python 也和 cruby 一样没有 jit 的哦。jit 说白了就是用内存和代码的灵活度换性能。例如在 js 的代码里轮流给一个变量赋不同的类型的值,jit 的 assumption 就会被打破,会拖慢程序... 另外不区分整型和浮点的 js 本身就是残废语言,和主题无关就不展开了...

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    #24 楼 @skandhas C++ string 各种坑... 每个库干事情之前都先自己定义一个新的 string 类...

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    @wendal 我为了让例子中的 go 代码尽可能跑得快,还专门用了 text/template 而不是 html/template, 你 time 出来的 59ms 忽略了 system 部分吧

    老实说 go 这个慢都能感觉出来的...

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    #23 楼 @bhuztez ... 例子一改改是可以比 C++ 快的,其它的就靠你了

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    #20 楼 @wendal 你的机器真好,我的机器上 go build 以后和 go run 结果是一样的,你用的 go 版本是什么?不会是 gccgo 吧?你跑这段渲染有结果么?

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    #12 楼 @kkk 是的,社会上都在说 ruby 死慢... 所以我才整几个 controversal 的例子...

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    #9 楼 @kkk

    那个是噱头啊,看 readme:

    This talk is analyzing the performance of JavaScript vs C-Bindings for MySQL in node.js, but not JavaScript vs. C itself.

    很多语言的优化 (如分代 GC 要移动对象) 会搞得 FFI 很复杂,所以 C-binding 速度很慢。Ruby 就是完全不做这类优化,所以 C-binding 速度很快...

  • [扬长避短] cruby 在什么情况下比 C++, JavaScript, Go, Java, Haskell 更效率... at 2013年04月20日

    #6 楼 @kkk 可以啊,不过我避而不谈... 求 js 比 c 快的例子。

    hello world 性能对于完成日常小任务的脚本很重要的。你用 java 实现个 brew 看看,看它不卡死你。

  • cruby 的实现和 js 引擎 v8 的实现,根本不在同一级别上。 at 2013年04月19日

    #11 楼 @bhuztez benchmark 水分太多了,待我写几个例子表明 ruby 是如何内存占用比 C++ 小,速度比 go 快,库函数比 java 效率,并行度比 haskell 高的...

  • 上一页
  • 1
  • 2
  • …
  • 84
  • 85
  • 86
  • 87
  • 88
  • …
  • 111
  • 112
  • 下一页
关于 / RubyConf / Ruby 镜像 / RubyGems 镜像 / 活跃会员 / 组织 / API / 贡献者
由众多爱好者共同维护的 Ruby 中文社区,本站使用 Homeland 构建,并采用 Docker 部署。
服务器由 赞助 CDN 由 赞助
iOS 客户端 / Android 客户端 简体中文 / English