希望能有完整的 I18n UI 支持
Kernel#system 是开一个 subshell 去跑,然后直接输出到 stdout 和 stderr 上
Kernel#` 也是开一个 subshell,然后把 stdout 当作返回值给你
Open3#popen3 还是开一个 subshell,把 stdin,stdout,stderr 和 pid 当作自由变量传给你
这样解释清楚了吗
得先明确下用的是 Thread 还是 Process,贴下代码是最方便的。
额,AWS 不是很早就可以用 M1 了吗
PostgreSQL
syscall 只多了一条 getcwd,在 user space 花的时间多了很多
给个建议,用英文描述你的问题,然后去 Google 上搜索
提问前可以先阅读一下 https://ruby-china.org/topics/24325
如果不想花太多时间找原因的话,试一下 homeland 的 docker 镜像?
学长必须得投一个啊(
如果你只是要打包 Ruby runtime 的话可以看一下
YouTube: RubyConf 2017: Packing your Ruby application into a single executable by Minqi Pan
lynx C 部分的代码,用了 Ruby 的 minitest 做测试
mruby-lynx 纯 Ruby 的代码,包装成了 mgem
这个是我最近刚开始写的一个类似的项目,用 Ruby 实现一套 DSL 框架,然后和 mruby 一起编程成一个 statically linked ELF executable 分发给用户,还没有太多逻辑代码,但是构建过程可以参考一下。另外这里 hack 了一下用了 musl,如果没有需求的话用原本的 glibc 那套就可以,Windows 上 mruby 也提供了一些样例配置文件。
用 mruby,把 Ruby 代码写成 mgem,然后和 mruby runtime 一起编译成一个单独的 executable
说来
按需联盟化的全球网络与多云服务融合资源湖
是个啥意思
OSTEP 是本好书,要想进阶看一下真实操作系统案例的话还可以看 The Design And Implementation Of The Freebsd Operating System
另外我还是更推荐国外的课程,比如 @Awlter1 楼上提的那些就非常好,国内的大部分课程要么是老师乱讲,要么是照搬国外的
其实 CS 学生真的学到东西不是靠 lecture,是靠 lab
国内大学的大部分 lecture 质量堪忧,面向考研的就算了吧,考研考的东西要是能答对,多半是学废了(逃
刚开始看的是 ruby-lang ,觉得 Ruby 语法糖很多,看完 Metaprogramming Ruby 之后发现其实核心的东西就是几点:
然后也明白了很多 API 为什么要做成这个样子,写出来的代码也会喷火了
在看 Metaprogramming Ruby 之前看过一点 Ruby Under a Microscope,主要看的是 Ruby 解释器内部机制的部分,对后来写 C Extension 也比较有帮助
我入门看的 Metaprogramming Ruby,非常好
快换用 Linux 吧,Linux 上开 docker 就不用了隔着虚拟机了
换用 docker 开发吧
主力在用非常旧的台式机,Dell T7610,七八年前生产的了
插了两块 Intel Xeon 2680v2,20C/40T, Ivy Bridge 架构的,连 AVX2 都没有,不过 Intel 挤了这么多年牙膏,老架构也不是不能用
插了 8 条 8G 的 DDR3 REG ECC 内存,垃圾跟不要钱一样。装了 Windows 然后把 Hyper-V 开起来,分 32G 内存出来开一个 Debian VM 写代码用,一般都是 VSCode SSH Remote 到 VM 去,然后 Windows Management PC 用来看 Chrome
我这套开发环境大概用了两年,写一点点 Ruby 但是没怎么写过 Rails
出门就用笔记本打 VPN 回去,继续用 VM 写代码
用 valgrind 里面的 massif 工具 trace heap
然后使用 massif-visualizer 进行可视化
🐂🍺
想自己找原因的话给几个建议
extconf.rb
require 'mkmf'
$CFLAGS << ' -O3 '
$CFLAGS << ' -std=c99'
create_makefile('rotate')
rotate.h
#ifndef ROTATE_H
#define ROTATE_H
/* Nothing to expose */
#endif
rotate.c
#include "rotate.h"
#include <ruby.h>
#include <stdint.h>
#ifdef __x86_64__
#ifdef __linux__
#include <x86intrin.h>
#endif
#endif
/* Support more arch/cc if you want */
static VALUE rb_mRotate;
static VALUE rb_mRotate_Native;
static VALUE rb_mRotate_Native_U64;
static VALUE rotate_native_u64_rb_left(VALUE self, VALUE src, VALUE bits);
void Init_rotate(void)
{
rb_mRotate = rb_define_module("Rotate");
rb_mRotate_Native = rb_define_module_under(rb_mRotate, "Native");
rb_mRotate_Native_U64 = rb_define_module_under(rb_mRotate_Native, "U64");
rb_define_module_function(rb_mRotate_Native_U64, "left", rotate_native_u64_rb_left, 2);
}
static VALUE rotate_native_u64_rb_left(VALUE self, VALUE src, VALUE rot)
{
uint64_t source = NUM2ULL(src);
uint64_t rotate = NUM2ULL(rot);
return ULL2NUM(__rolq(source, rotate));
}
Run ruby extconf.rb && make
test.rb
require_relative 'rotate'
puts Rotate::Native::U64.left(1,63)
# => 9223372036854775808
puts Rotate::Native::U64.left(1,64)
# => 1
逃