こんにちはー。yuikと申します。
みなさん、いかがお過ごしでしょうか。最近涼しくなってきましたね☺️
今回はRuby Hack Challenge Holiday #6に参加してきましたので!やってきたことを記事にまとめました!!
作業する環境
VPSのUbuntu18.04にsshでつないで作業
しようとしましたが、なぜかVPSにSSH接続できませんでした...ので環境構築(?)などを一からやっていきます。また今回は便利なコマンドについても学んできました。
今回の作業環境
最近構築した、vagrant+VirtualBoxでUbuntu環境で作業、ちなみにgitすら入っていないまっさらな状態ですので環境構築から始めたいと思います...
関係する言語 : Ruby,C
今回やったこと
VPSを直すというか、ssh接続できるようにするために色々やりましたが、ダメでした...
ので前回やったことをPCに入っている(?)仮想環境のUbuntuで一からやりました()2回目の参加なので詳しく書けるところは詳しく書こうと思います。
まずはじめに
まずはじめにコマンド周りを
```$ sudo apt-get install git ruby autoconf bison gcc make zlib1g-dev libffi-dev libreadline-dev libgdbm-dev libssl-dev```
で一気にインストール
次に
$ mkdir workdir
でworkdirを作る
次に
$ cd workdir
でworkdirに移動して

$ git clone https://github.com/ruby/ruby.git
でworkdirにMRIのソースコードをclone
*MRIとは、 Matz Ruby Interpreter のこと
次に
$ cd workdir でworkdirに移動
$ cd ruby でworkdir/rubyに移動
$ autoconf このコマンド前回も実行したんですけどどんな意味があるのかわかってないです..
$ cd ..で上の階層に移動する
$ mkdir buildでworkdir/buildを作成する
$ cd buildでworkdir/buildに移動
$ よくわかってないコマンドを入力して実行...()
$ make -jでビルドしました
$ make installで/installに色々インストールされる

$ ../install/bin/ruby -vでRubyがインストールされたことと、バージョンを確認しました。画像を確認するとわかると思いますがRubyのバージョンはruby 2.7.0~みたいです。
上でビルドしたRubyでプログラムを実行してみたいと思います
Rubyをビルドした時にminirubyという実行ファイルができたので、それを使ってプログラムを実行したいと思います。
はじめに ~/workdir/build の中に$ touch test.rbでtest.rbファイルを作ります。

test.rb を作りました。

次にvimでtest.rbを開いて、RubyのHello Worldのプログラムを書きました。
(スクショする時に間違えて"これを改行してしまったみたいです...あとで気づいて直しておきました)
Hello Worldのコードが書けたら./miniruby test.rbで実行します

やったー!ビルドしたRubyでHello Worldのプログラムが実行できました!🎉
表記の変更
ruby -vを実行したときに自分のRubyだとわかるように、何か表示を変えてみようと思います。
1.~/workdir/rubyの中にある、version.cをvimで開く

2.ruby_show_version()という関数が怪しいと教材に書いてありましたので、そこをいじってみようと思います。
3.fflush() が、出力を確定するC言語の関数なので、この前に何らかの出力をすれば良いとのこと。

4.書くのはなんでもいいとのことなので、fflush(stdout);の上の行にprintf("yuik-no-Ruby-2\n");と書きました。
5.$ mv version.c ../build/でversion.cを~/workdir/Rubyから~/workdir/buildに移動させる。
5.移動できたら$ make minirubyで、いじったソースコードをビルドします。
6.$ ./miniruby -vでバージョンを確認してみます。

確認したら、yuik-no-Ruby-2って表示されてる!!
やったー!!🎉
時間なので、今回はここで終わりにしたいと思います。
今回覚えたコマンド
Ctrl + Rで過去に使ったコマンドを検索できる
↑すげぇ..すごいことを教わりました!!(ありがとうございます!!)
次に
$ ls --versionみたいに-とかが二個つくやつあるじゃないですか
それって独自の文化を歩んできたらしいんですよね。詳しくはまだ理解してないです()
次に
ls --help
すると色々なコマンドの一覧が出てくることを教わりました
次に
$ ls | lessみたいなlessにlsを実行(?)するパイプのコマンドを教わりました

(ノートに自分で教わったことを書きました)
これすごいですよね
標準入出力っていう仕組みも教わりました
すごいことを教えてくださり、ありがとうございました!!!
これも聞いた話なんですけど、linuxとかmacのコマンドとWindowsのコマンドは全く違うみたいですね.それぞれ独自の文化を歩んできたとか。まだ詳しく理解してないです...ごめんなさい🙇♂️
最後に
すごいことを教えていただいたり、Rubyを実行できたりでめっちゃ楽しかったです。
Ruby Hack Challengeに参加すると色々なことが聞けていいですね、また参加したいです!!
ありがとうございました!!
雑な記事で申し訳ありません..🙇♂️
コマンドはこちらを参照しました!
まだ理解できていない部分もあるので、間違ったことを書いていたら本当にごめんなさい...🙇♂️
*投稿はEndohさんの許可を取りました。