Ruby China
  • Topics
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • Sign Up
  • Sign In
Zete
@luikore
VIP
NO. 2880 / 2012-07-16

55 Topics / 3422 Replies
245 Followers
6 Following
32 Favorites
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
  • Overview
  • Topics
  • Replies
  • Favorites
  • Following
  • Followers
  • 记一起由 Clang 编译器优化触发的 Crash at December 24, 2020

    所以问题不在最初那个函数,而是编译器没料到在 union 里放 bool 这种骚操作……

  • .NET 5 速度太快了,MVC 编译速度比 Golang 的还快 at November 19, 2020

    写 Dictionary 字面量麻烦…… 最后还是在 .net 用 Scriban 这种类似 Ruby 语法的模板引擎舒服

  • 从实践谈 Ruby 语法上的几个设计不一致带来的问题。 at November 16, 2020

    几种写法各有利弊,Ruby 不做裁决,而是把自由裁量的权力交给你。

    你的编辑器支持这些小功能就不会难受了:一键切换后缀 if / unless,一键切换 do ... end 和 {}

  • [上海][2020年11月3日] Ruby 聚会召集 at November 16, 2020

    ppt 很弱🐔就不放了,还是看 Rust by Example 这种更好

  • Ruby 3.0.0-preview 版发布了 at November 01, 2020

    其实一行 def 挺流行的,我发现 DotNet 的模板引擎 Scriban 也加入了 smart mode 支持 def foo(x, y) = ...

  • [上海][2020年11月3日] Ruby 聚会召集 at October 30, 2020

    卸腰,还没学会 Rust,有点方……

  • Rails UJS + Stimulusjs + Turbolinks 5 = ❤️ at September 26, 2020

    不是,是在客户端造个假的 API 例如用 msw https://mswjs.io/docs/

    假设你有个 API 不想走服务器渲染了,就在客户端 mock 之,修改之前服务器返回的响应,交给 mock service worker 就可以了

  • Rails UJS + Stimulusjs + Turbolinks 5 = ❤️ at August 28, 2020

    Turbolinks 还有返回的页面过大,渲染过多消耗服务器 CPU 和传输带宽的问题。

    一些 render partial 可以用 custom element 代替,那样返回的内容就接近 json ajax 了,只是你用 HTML 格式化而已。

    不过 custom element 也有难用的地方……

  • Rails UJS + Stimulusjs + Turbolinks 5 = ❤️ at August 28, 2020

    不过 Stimulus 还是有些比较难搞的问题,controller 其实并没有很好的 scope 控制。

    重交互的页面或者树形的节点,得把 controller 放在比较高的节点里,并且最好只出现一次。

  • Rails UJS + Stimulusjs + Turbolinks 5 = ❤️ at August 28, 2020

    我甚至搞了个 stimulus-bind 去做绑定,然后就能类似 vue / react 的写 class,不用手动 add / remove class 了

    不过由于实现过于简陋,要触发更新得更新 root object。或许现在有更好的办法

  • Rails UJS + Stimulusjs + Turbolinks 5 = ❤️ at August 28, 2020

    下面说一下 turbolinks 5 和 ujs 的一些坑,我们知道使用 turbolinks 之后,内部链接之间切换不会刷新页面,体验要比每次重新刷新页面好很多,但对于服务器端来说,整个页面还是要渲染一遍,相关的查询也要执行一遍,想有更好的体验也需要一些专门的 ajax 的请求,返回局部内容,比如分页和过滤场景。

    其实可以用 service worker 来处理一些 URL,然后就不会访问到服务器啦。具体例子在:

    https://github.com/turbolinks/turbolinks/issues/468

  • 公司有地毯,对码农还是很重要的 at August 28, 2020

    地毯的正确维护方式,是整个换掉拿去专门的厂里清洗。低成本的维护方式是拿吸尘器吸,那就会变成细菌乐园。

  • 问个正则表达式的更优美写法 at August 28, 2020
    text.gsub!(/\[quote\].*?\[uid.*?\](.*?)\[\/uid\].*?\[\/b\](.*?)\[\/quote\]/m){
      author = $1
      mid = $2.gsub("\n", "\n>")
      ">#{author} 说:\n>#{mid}\n"
    }
    
  • 偿试在 Windows 7 下用 Ruby 2.7 开发桌面应用程序框架,寻求 ruby-core 技术支持 at August 10, 2020

    我很久之前也尝试了下做一个 Windows 下的 Ruby GUI 框架,基本就是在 C-ext 里包装 Win32API,然后展示一个比较简洁友好的(类似 Shoes / REBOL view)的编程环境。

    代码在 https://github.com/luikore/cici2 可以参考下,只是现在 Ruby / Windows API 已不同跑不起来了。

    有些坑分享一下:

    • Windows API 有 A 系列和 W 系列,和 UTF-8 编码的 Ruby 程序一起工作要经常转码比较麻烦。
    • 在 C 里调用 Ruby 代码,如果出现异常不捕获会 Segfault,需要了解清楚 C extension 的机制。
    • 得找机会给 Ruby GC,或者用独立线程跑 Ruby。
    • 两个世界文化很不妥贴,用 Visual Studio 编译 Ruby 可以 debug 进去。

    如果让我再来一遍的话,我会选择改造成两个进程:一个 Ruby 进程负责处理事件和返回 DOM tree,一个原生 GUI 进程负责转发事件给后面的 Ruby 进程。这样就可以避掉上面的一些坑并且可以统一处理好转码。GUI 进程用纯 C 的 Win32 API 搞,或者现在流行的什么 WPF 搞都可以了。

    参考书就是特别古老的 Programming Windows。

  • Ruby 标准库中缺少 rbtree, 严重影响开箱即用,谁能帮忙给核心开发者提议加入 rbtree。 at August 03, 2020

    有道理…… 那我也支持

    就差实现性能超过数组 sort 然后 bsearch 了

  • Ruby 标准库中缺少 rbtree, 严重影响开箱即用,谁能帮忙给核心开发者提议加入 rbtree。 at July 29, 2020

    Ruby 标准库缺的数据结构多了去了,例如 list,double array,burst tree,radix tree,merkle-patricia tree,HAMT,HAT-tree …… 为何厚此薄彼?

    我明白红黑树是入门数据结构书讲的,但就一定比别的数据结构有用咩?

  • Ruby 标准库中缺少 rbtree, 严重影响开箱即用,谁能帮忙给核心开发者提议加入 rbtree。 at July 29, 2020

    事实上,当我们需要一棵特别大的平衡树的时候,我们就用数据库,例如 redis 的 zset

    显然也能做管理 timer 等用途……

    我觉得平衡树的应用场景被好多基础软件做了,以至于在 Ruby 中并没有什么发挥的空间了

  • 调用 DLL 接口,接口里面 C 代码的 recv 函数返回了中断错误 at May 18, 2020

    你一定要 trap CHLD 的话,可以试试在 C 里 trap, 这样可能可以绕过 Ruby 的 hijack ...

    另外用 system 成本不一定高的,测测才知道

  • 调用 DLL 接口,接口里面 C 代码的 recv 函数返回了中断错误 at May 02, 2020

    我猜你调用的这个接口是启动了一个子进程,然后让子进程输出一些东西,然后 recv 这些东西。

    然而子进程退出时会发出 SIGCHILD 信号,信号正好在 recv 调用中被父进程收到,然后就 EINTR 了。

    建议想办法更改子进程退出的时机,或者父进程不要 wait 子进程,或者把子进程的管理在 Ruby 里做。 又或者,把调用 DLL 的代码写成不依赖 Ruby 的独立可执行文件 (不过我怀疑依然会 EINTR),在 Ruby 里 system 或者 backtick 调用。

  • 讨人厌的后缀表达式 at March 27, 2020

    还好,编辑器可以一键切换前后缀表达

  • 在数组的循环内删除数组元素的问题? at February 23, 2020

    用 delete_if

  • SQLBuilder - 一个简单的 SQL 生成器 at January 06, 2020

    可以稍微再简单点

    def SQLBuilder s
      SQLBuilder.new s
    end
    
    SQLBuilder("SELECT * FROM users")...
    
  • 用 editor.md 当编辑器, 当 @ 一个会员。并在编辑器取的焦点。写了两个 js 函数。都不成功? at December 21, 2019

    你可以网上搜索一下“如何看网页的源代码”

  • 在 Ruby 中实现一个信号订阅通知功能 (一) at December 20, 2019

    Qt 还有一步 connect counter, :onchange, led_screen, :onchange 你没写。

    Qt 这么做其实很绕,原因是传递函数的话,类型写起来会很复杂,所以才用 signal / slot 的方式解耦合。

    然而 Ruby method call 就已经是 signal / slot 机制了。简单实现 (也可以抽出个 connect() 函数做点元编程):

    class Counter
      def initialize
        @onchange = []
      end
      def onchange method
        @onchange << method
      end
      def increment
        @value.succ!
        @onchange.each {|m| m.(@value) }
      end
    end
    
    class LedScreen
      def onchange v
        @value = v
        display
      end
      def display
      end
    end
    
    counter = Counter.new
    led_screen = LedScreen.new
    counter.onchange led_screen.method :display
    

    当然上面的实现有个问题,就是事件触发没有异步化,在事件响应的触发点,把 method call 扔到别的执行线程就完整了。

    Cocoa 也有类似机制,叫 responder

  • 那我也来发个贴吧;我们家狗子刚来的时候; at December 19, 2019

    差点骗了我一个赞…… 在这个论坛骗赞有意义吗?

  • 用 editor.md 当编辑器, 当 @ 一个会员。并在编辑器取的焦点。写了两个 js 函数。都不成功? at December 19, 2019

    富文本编辑器不是用 textarea 实现的,这个 textarea 只是一个方便初始化的东西。js 执行后会把它隐藏掉。

    真正的实现是 js 生成一个 div 元素并且使它进入 edit mode

    你给的这个 md 编辑器是用 codemirror 实现的,你可以搜索一下 codemirror 的文档看看

  • 切割数学算式来获取符号,不同方法的性能比较的疑问 at December 18, 2019

    tf = tf.sub(t1, '') 太慢,可以改成 tf = tf[t1.size..]

  • 扫描文件为何找不到换行符? at December 12, 2019

    因为单引号里面反斜线基本就是反斜线而不是转义字符, '\n' 相当于 "\\n"

  • 在力扣做的一道题,相当之诡异 at October 25, 2019

    你的代码早就 O(n) * m 了

    应该是你修改了传入的参数 nums 造成的问题

  • 在力扣做的一道题,相当之诡异 at October 24, 2019

    在方法体开头加一行 nums = nums.dup 应该就好

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