Ruby China
  • Topics
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • Sign Up
  • Sign In
MARK24
@Mark24
Member
NO. 81765 / 2019-05-26

[email protected]
43 Topics / 226 Replies
46 Followers
83 Following
166 Favorites
多喝热水,重启试试
GitHub Public Repos
  • rime-auto-deploy 1538

    Rime输入法安装脚本,让一切更轻松。Make using Rime easy.

  • convert2ascii 41

    Convert Image/Video to ASCII art. 🔮

  • firew0rks 11

    Fireworks in your terminal(Ruby Verison) 🎆

  • aseprite-build-and-ins... 1

    Aseprite build and install on macos

  • snakes 1

    Snakes game write by Ruby

  • mark24code.github.io 1

    Blog

  • cline 0

    Autonomous coding agent right in your IDE, capable of creating/editing files, executing commands,...

  • AstrBotCustom 0

    ✨ 易上手的多平台 LLM 聊天机器人及开发框架 ✨ 平台支持 QQ、QQ频道、Telegram、微信、企微、飞书 | MCP 服务器、OpenAI、DeepSeek、Gemini、硅基流动、月...

  • YieArKUNGFUZig 0

    A Yie Ar Kung-Fu clone created in Zig with raylib.

  • leetcode-javascript 0

    1,505 JavaScript solutions to various LeetCode problems

More on GitHub
  • Overview
  • Topics
  • Replies
  • Favorites
  • Following
  • Followers
  • 我对大语言模型的一些思考 at July 10, 2025

    有一种案子还在审理中,你直接粗暴的给判了的感觉。

    现在的 AI 就像一只会说话的鹦鹉。

  • Ruby 在 LLM 时代还有戏吗? at June 06, 2025

    更没戏。AI 对 Python、JavaScript 补全最好。

  • LLM 是如何不运行就知道代码运行的结果? at March 05, 2025

    基本靠猜。说明这段代码出现的次数太多了,以至于 AI 可以脱口而出。

    就好像,你看到 背带裤、唱、跳、Rap,你就自然会联想到 篮球。

  • Ruby 打包技术之旅 at February 23, 2025

    追加

    2025 迎来了新的方案:

    https://github.com/tamatebako/tebako

    通过各种 hack 完全可以把 ruby 打包成独立的二进制执行文件。

  • 构建 web2 的应用我感觉没太大兴趣了。。。咋办 at February 10, 2025

    做游戏 😆

  • 【翻译】为什么每个人都讨厌 fork(2) ? at February 08, 2025

    关联:

    • https://ruby-china.org/topics/44036
    • https://ruby-china.org/topics/44038
    • https://ruby-china.org/topics/44039
  • 【翻译】Ruby 的“线程竞争”就是 GVL 排队! at February 08, 2025

    这里提到了 Python GIL 问题的一些细节。

    https://ruby-china.org/topics/44038

  • 在哪里可以找到一些工具类的使用方法,比如 mkmf at January 17, 2025

    你可以用 FFI https://github.com/ffi/ffi

    比 C 拓展 容易

  • 在哪里可以找到一些工具类的使用方法,比如 mkmf at January 17, 2025

    同样关注😀

  • 感觉 Ruby 很强!(不讲速度),问一下,大家不用 Ruby 来写其它程序(ROR 除外)的原因是什么? at January 17, 2025

    Ruby 我觉得最大的优点就是 跟直觉一致。最小惊讶设计

  • 失业很久的程序员,平平无奇的 2024 at January 16, 2025

    虽然写的很丧,这是主观的。客观的 2024 你收获满满。 希望 2025 经济好一点。

  • 感觉 Ruby 很强!(不讲速度),问一下,大家不用 Ruby 来写其它程序(ROR 除外)的原因是什么? at January 16, 2025

    😆 当你发现 缩进是一个很差的设计,随便一个空格就能让程序崩溃,就会发现 ruby 是个宝藏。

  • 感觉 Ruby 很强!(不讲速度),问一下,大家不用 Ruby 来写其它程序(ROR 除外)的原因是什么? at January 16, 2025

    我用 Ruby 来写几乎所有程序,除了页面 😆

    我觉得其他语言不好用。Ruby 的内部一致性最好很符合直觉。

    Ruby 很慢么?我甚至不觉得。

    • 如果你是计算密集,就用 多进程、Ractor
    • 如果你是 I/O 密集,就用 Async、Thread

    90% 的问题都可以解决。如果你真的遇到了性能问题,可以 C 拓展、FFI 到 C 还可以 直接 加入 Crystal 解决你觉得计算慢的地方。

    整体上来说,开发速度很快。

  • 新年快乐!写了一个彩蛋送给大家! at January 13, 2025

    好问题。

    我做了一个 gem 来回答这个问题。

    https://ruby-china.org/topics/44017

  • 聊聊代码的复杂性 at January 09, 2025

    有的需求就是混乱的。导致用代码描述的时候,会自相矛盾。 PM 的角色,本质上是一个前期逻辑过滤器。

    代码的复杂性,来自于 需求衍生出来的 状态,以及状态转换。还有就是信息熵。 重构就是在不断地 逆熵的过程。

    彻底失控的熵增,处理熵增的成本 > 重写 的时候,就可以认为 这项目 死了。

  • 重写方法的疑问 at January 09, 2025

    答案:

    • 没有复制。

    alias 做的事情:将方法入口名,改为 新名字,更新方法环境变量(所在类)。新名字,最后引用原始的方法。

    CRuby 源码 简化

    void
    rb_alias(VALUE klass, ID alias_name, ID original_name)
    {
    
        // 1)查找原始方法 
        // .....
        orig_me = search_method(klass, original_name, &defined_class);
    
        // 2) 继承关键信息
        // .....
        // 如果原始方法是 super 方法(VM_METHOD_TYPE_ZSUPER),则将 klass 设置为其父类,并将 original_name 设置为原始方法的原始 ID,然后跳转到 again 标签重新查找原始方法。
        // 如果原始方法是别名方法(VM_METHOD_TYPE_ALIAS),则获取原始方法的可见性,并将 orig_me 设置为原始方法的原始方法条目。断言原始方法的类型不是别名方法,以避免无限循环。
    
        switch (orig_me->def->type) {
          case VM_METHOD_TYPE_ZSUPER:
            klass = RCLASS_SUPER(klass);
            original_name = orig_me->def->original_id;
            visi = METHOD_ENTRY_VISI(orig_me);
            goto again;
          case VM_METHOD_TYPE_ALIAS:
            visi = METHOD_ENTRY_VISI(orig_me);
            orig_me = orig_me->def->body.alias.original_me;
            VM_ASSERT(orig_me->def->type != VM_METHOD_TYPE_ALIAS);
            break;
          default: break;
        }
    
        // 处理特殊方法,边界
        // ...... 省略
    
    
        // 3)设置 方法 入口
        // 调用 method_entry_set 函数在 target_klass 中为 alias_name 设置别名方法条目
        // 并且设置关联属性
        rb_method_entry_t *alias_me;
    
        alias_me = method_entry_set(target_klass, alias_name, orig_me, visi, orig_me->owner);
        RB_OBJ_WRITE(alias_me, &alias_me->owner, target_klass);
    
        if (RB_TYPE_P(target_klass, T_MODULE)) {
            // defined_class should not be set
        }
        else {
            RB_OBJ_WRITE(alias_me, &alias_me->defined_class, orig_me->defined_class);
        }
    }
    
  • 比较轻量和高性能的 Ruby Web Framework 选择有哪些 at September 25, 2024

    发现 sinatra 最好用,api 设计的很好

  • Go 语言在国内发展的不行了吗?怎么没有看到像样的中文官方社区? at August 14, 2024

    丑的不想看

  • 我回来了,Ruby on Rails at August 07, 2024

    不用😀

  • 前端和后端的身份认证问题 at July 19, 2024

    小作坊的方式,行得通 work 可以。


    但是良好的设计,是自己有一个完整的 token 体系,openid 作为 微信小程序过来的身份信息(等同于微信上的身份证),加到当前用户的 profile 里,继续返回 token。

    用户的敏感信息不应该随意存储。openid 就像指纹一样唯一,没有谁会把自己的指纹到处贴,存档。

    有了拓展体系,未来你还可以接入 google、oauth、第三方、支付宝……

    好的设计是这样

  • imgimgimg at July 04, 2024

    很有创意,很像输入法

  • define_method 调用 yield 报错 at July 03, 2024

    你可以理解为

    def test1(&block)
      yield
    end
    

    yield 是个关键字,出现在这样的语法中,会被解析。

    def  <FuncName> 
       yield
    end
    
    

    而第二个例子 define_method 传入的是一个 block 参数,而 block 参数不是一个函数结构,所以没有 yield。

    define_method(:test2) { | &block|
      yield  #if block_given?
    }
    

    这里你可以用 block.call 实现 yield 效果。

    define_method(:test2) { | &block|
      block.call
    }
    
  • MRuby Devkit 一个简单的脚手架,帮助你像 Go 一样把 Ruby 编译成可执行二进制文件 at June 29, 2024

    上面不确定,能否转 WebAssembly。现在确认了。 @LongLonghaoran

    V1.1.0 添加 转 WebAssembly

  • Ruby 打包技术之旅 at June 29, 2024

    添加一个引用:

    https://ruby-china.org/topics/43776 《MRuby Devkit 一个简单的脚手架,帮助你像 Go 一样把 Ruby 编译成可执行二进制文件》

    使用 MRuby 可以打包出二进制

  • MRuby Devkit 一个简单的脚手架,帮助你像 Go 一样把 Ruby 编译成可执行二进制文件 at June 28, 2024

    MRuby 和 CRuby 完全不同。所以不能直接 把 Rails 转过去。

    MRuby 相当于完全重新实现的 Ruby 解释器。更偏向于 C 的特点。由于没有完全的对齐 gem、bundle 等生态,所以 MRuby 的程序得单独开发。

    跳出 Web,MRuby 就有使用场景了。

    因为 MRuby 重新实现了 Ruby:

    • 采用完全兼容的 C 实现,兼容性很好;可以在单片机、switch、游戏机里、ESP32、没有文件系统的硬件上
    • 并且利用内存精简高效
    • 解释器功能可以裁剪,按需编译;可以控制体积

    使用的场景:

    • 可以工作在 个人电脑、服务器上
    • 可以用作嵌入游戏,类似 Lua。MRuby 支持游戏平台
    • 可以用作嵌入式,单片机,路由器。官方现在支持了 时髦的 ESP32
    • 由于可以独立打包成二进制,就像 Go 可以开发管理服务器系统的脚本。
    • Dragon Ruby 用 MRuby 开发游戏引擎
    • MRuby 是纯 C 程序,理论上可以转换为 web assembly 跑在浏览器上(我不确定。Dragon Ruby 可以让 Ruby 写的游戏跑在浏览器里)
  • 请教,Rails 支持操作 word、excel 这些文档吗? at June 19, 2024

    看这里:https://www.ruby-toolbox.com/categories/reporting

  • 行锁在日常开发中用的真的不多吗?Prisma 居然没有提供行锁的 API at May 31, 2024

    是的。时髦有风险。

    Node 能做的,Sinatra + Sequel(ORM)其实都行。我经常用这个渲染页面。

    Ruby 下的 Sequel(ORM)0 BUG,实在是强。

  • 2024 年我该如何安装 Ruby on Rails ? at May 31, 2024

    https://dontusesystemruby.com/

    也提到了安装方法

  • 行锁在日常开发中用的真的不多吗?Prisma 居然没有提供行锁的 API at May 31, 2024

    Raw SQL 遇到过错误 https://github.com/prisma/prisma/issues/21570

    我以为这种 RawSQL 的 API 是软件的底层,应该先设计。结果一年多都没解决。

    吹自己是次世代,我现在对 JavaScript 的东西保持怀疑。

    次世代框架你也不能说它错,反正不是“现代”能用的框架。

  • Ruby 打包技术之旅 at May 30, 2024

    😀 放弃了

    JRuby 对 需要本地编译的 C 拓展不友好。大多数游戏 lib 都是 C。 Truffleruby 虽然说支持 C 拓展,结果一样,跑不起来。


    做一个前置的 Installer 不论是脚本,还是显式的安装器,帮用户处理

    • 安装 依赖
    • 安装 Ruby
    • 添加到 PATH
    • 安装或构建 Gems

    只有这个比较简单、中规中矩。并且可靠,是被广泛测试过可靠的路径。

    自己打包 Ruby 这条路,实际 Ruby 或者 Gem 的打包一直是动态的,需要长期跟踪,成本太高。不建议个人做。

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