終電逃したはずなのに、終電に乗れた謎

本当は、某U君からMarkdownで書くスライド作成ツールについて聞いたので、それについて調べてかいてみようかと思ったけど、スマホだとなかなか難しいので(これはスマホで書いてます)別のことをさっとかいて終わりにすることにしました。

終電間に合わなかったはずなのに……

TUTの最寄り駅のひとつ、八王子みなみ野。今日私は、終電に間に合うためには乗らなければならないみなみ野発の電車に乗り損ねました。
結果、普段使う駅より二つか三つ離れた駅から徒歩で帰る必要があることになる……はずでした。

気がつけば私はいま、家の最寄り駅に止まる終電に乗っています。……なんで?

ネタバレ

別にテレポートしたわけではありません。単純に、電車が人身事故で遅延しただけどす。
朝の人身事故はだいたい長くても1時間で運転再開しますが、夜の人身事故は2時間たっても片付けが終わりませんでした。夜だから色々見にくいのでしょうか。
外気温は氷点下、この寒空のなかで扉全開で駅に留まる電車の車内は、もはや極寒です。二時間も待たされると死にそうになります。

終電に間に合ったことは嬉しいですが、夜の人身事故は処理が大変なので、可能な限りお昼頃にお願いします。

centosを再インストールしてrubyとrailsを入れて公開鍵認証しただけの一日だった

この記事はt以下略
というわけで、tg研技術力最下位を独走する私のブログ13日分です。
昨日はこんなことがあったので
miyafubu.hatenablog.com
今日は題名通りの一日でした。
とりあえず書くこともないので、今日やったことの一通りのことを書いておきます。

centosの再インスコは省略。特に詰まる事が無かったので、飛ばします。
前やった時はゲートウェイ設定できないマンでしたが、今回は無事にできました。流石に二度目はないです。

で、次にするのはrubyインスコ
今回、私はrbenvを使ってrubyを入れました。
rbenvはgithubに上がっているので、そっからcloneしてきます。
あ、gitは適当に入れておいてください。

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

次に、bash_profileにrbenvへとパスを通すように記述する。

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

echoで追記したけど、viで書いた方が早かった気がする。
ログ見た感じ、このコマンドで失敗したのかvi使った形跡があったしね。

 $ source ~/.bash_profile

最後に、なんでrunではないのかわからないコマンドを実行して、次へ。

今度はruby-buildを入れます。
これもgitに上がってるので、下のコマンドでcloneしてきます。

 $ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
 $ sudo .rbenv/pluginsruby-build/install.sh

これでおけ……な、はず。
心配だったので一応確認してみました。

$ rbenv -v
rbenv 1.1.1-28-gb943955

おっけー入ってる。

こっからrubyのインストールに入ります。
(この記事を書いている時点で、最新のバージョンは2.4.2です)
まず、rubyの一覧を表示。

$ rbenv install -l
Available versions:
  1.8.5-p52
  1.8.5-p113
  1.8.5-p114
  1.8.5-p115
  1.8.5-p231
  1.8.6
  1.8.6-p36
  1.8.6-p110
  1.8.6-p111
  1.8.6-p114
  1.8.6-p230
  1.8.6-p286
  1.8.6-p287
  1.8.6-p368
  1.8.6-p369
  1.8.6-p383
  1.8.6-p388
  1.8.6-p398
  1.8.6-p399
  1.8.6-p420
  1.8.7-preview1
  1.8.7-preview2
   …………

上ではそのままズラッと出しましたが、私は多くて見にくいのでテキストファイルに投げました。
これで、rbenvでインストールできる最新版が2.4.2だと確認できたので、ruby2.4.2をインストールします。

$ rbenv install 2.4.2

ここからすることは流石に印象深かったので覚えてました。
実は上のコマンド、rbenvでインストールするrubyはbz2の形式で圧縮されているそうなので、bzip2が入ってないと失敗します。
なので、先に以下のコマンドを実行。

$ sudo yum install bzip2

次に、さっきのコマンドはbzip2で解凍したファイルをcでコンパイルしているようなので、cのコンパイラが入ってないと失敗します。
gccでもpccでも何でもいいと思いますが、とりあえず私はgccを入れました。

$ sudo yum install gcc

これでも終わりではありません。
この状態でrbenv install 2.4.2を実行するとわかると思いますが、

$ rbenv install 2.4.2
   ………
  Try running `yum install -y openssl-devel readline-devel zlib-devel` to fetch missing dependencies.

たしか、こんなこと言われた気がします。なので、上の言われた通り実行しましょう。

$ sudo yum install -y openssl-devel readline-devel zlib-devel

きちんとできたら、インスコ

$ rbenv install 2.4.2

これで、ちゃんと入ると思います。
心配だったら、以下のコマンドで確認してください。

$ rails -v
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]

もし、実行結果が2.0.0とか言われたら、たしかpathがどっか間違っているはずなので、きちんと確認しましょう。

$ rbenv global 2.4.2
$ ruby -v

これできちんと出たらおっけーです。
あとは、railsとbundlerのインストール。
もうgemが使えるようになっているはずなので、gemで入れちゃいましょっか。

$ gem install rails
$ rbenv rehash
$ rails -v
$ gem install bundler

これにて完了です。

おわりに

この記事は、historyコマンドで確認しながら書きました。
実はこのこと以外にも、昨日みたいな失敗をしないよう、簡単なキーロガー自作して仕込もうとしていたりしていましたが、成果が出ずにネタとしては没になりました。
公開鍵認証に関しては、時間がないので明日に。

VMでsudo ができなくなった件

本記事はtg研に監視されています。

この記事は、12日分の記事です。

研究室のVMがいう事を聞かない

 そもそも何があったのか

 きっかけは、Cygwinsshをしたときのことでした。

$ ssh MiyaFubu
ssh_exchange_identification: Connection closed by remote host

 というわけで、sshを弾かれました。

 よく考えればローカル側に問題がある可能性もあったのですが、私はとりあえずVMを疑ってVMを起動してみました。

 

localhost login:■■■■■
password:
Last login: ■■■■■■■■■■■■■■■■■
-bash: /dev/null:Permission denied
-bash: /dev/null:Permission denied
-bash: /dev/null:Permission denied
-bash: /dev/null:Permission denied
-bash: /dev/null:Permission denied
-bash: /dev/null:Permission denied
-bash: /dev/null:Permission denied
-bash: /dev/null:Permission denied
-bash: /dev/null:Permission denied
/home/■■■■/.rbenv/bin/rbenv: line 23: /dev/null: Permission denied
/home/■■■■/.rbenv/libexec/rbenv-init: line 36: /dev/null: Permission denied
-bash: /dev/null:Permission denied
[■■■■■@■■■■■ ~]$

 ……ん?

 こんな表示あったっけ?

 

 とりあえず、パーミッションだからchmodを使うのかな?

 chmodを使うごとにsudoするのは面倒なので、suを打つ。

[■■■■■@■■■■■ ~]$ su
Password:
su : cannot set groups: Operation not permitted
[■■■■■@■■■■■ ~]$

  あれ……suできない?

 rootのパスじゃなくて、ユーザーのパスだったっけ。

[■■■■■@■■■■■ ~]$ su
Password:
su : Authentication failure
[■■■■■@■■■■■ ~]$

 うん、やっぱりrootのパスだ。

 そうなると、どっかポカってるな。

 というわけで、管理者権限が使えなくなりました。

試行錯誤してみる

 /dev/null:Permission deniedとあったので、/dev/nullのパーミッションを確認してみる。

[■■■■■@■■■■■ ~]$ ls -l /dev/null
crwxrwxr-x 1 root root 1, 3 Dec 7 15:11 /dev/null 

 別のと比較。

[■■■■■@■■■■■ ~]$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 11月 7 12:11 2017 /dev/null 

  比較した感じ、違うのはやっぱりパーミッションかな。chmod 666してみる。

[■■■■■@■■■■■ ~]$ chmod 666 /dev/null
chmod: changing permission of '/dev/null': Operation not permitted

  あー、権限ないか。よしsudoを……あれ、何か忘れている様な

[■■■■■@■■■■■ ~]$ sudo chmod 666 /dev/null
sudo: /etc/sudo.conf is group writable
sudo: /bin/sudo most be owned by uid 0 and have the setuid bit set

 そりゃ、suができないならsudoもできないよね。

 ちなみに、nullは名前通り空っぽでした。記述内容に何か問題があるわけではなかったという事です。

 悩むこと1時間。ふと、rootでログインしてみたらできてしまいました。

 というわけで、rootで実行

[root@■■■■■ ~]$ chmod 666 /dev/null
[root@■■■■■ ~]$ ls -l
crw-rw-rw- 1 root root 1, 3 Dec 7 15:11 /dev/null 

  何とかできた。さあ、sudoできるかな……

[■■■■■@■■■■■ ~]$ sudo
sudo: /etc/sudo.conf is group writable
sudo: /bin/sudo most be owned by uid 0 and have the setuid bit set

  全然できない。

 ただ、ログイン時に出ていた変な表示は出なくなったので一歩前進。

最終的に…… 

 そろそろ手詰まりになって来たので、"sudo: /bin/sudo most be owned by uid 0 and have the setuid bit set"でググってみる。

 すると、再インストールしろとの話がずらっと。

 なんでも、レスキューモードからsudoコマンドそのものを復旧させることはできるみたいなのですが、それ以外の部分に色々と致命的な問題が発生しているようで、それらをすべて直すくらいなら、再インストールした方が安全で楽だそうです。

 さ、再インストールかー、またrubyとrails入れるのかー。

 明日の記事は、rubyとrailsを入れる話になりそうです。まあ、herokuを入れなくていい分楽かな。

 

追記

tg研の先輩曰く、dev/nullを弄らなければ取り返しがついたかもしれないらしい。

問題が出たからそれを直せばいいや的な発想は、非常に危険だったみたいですね。

積みゲーを消化したい

寝ていなければセーフだと思うので、11日の記事です。

今日からこのブログはtg研に監視されるようになりました。ピンチです。パニックです。恐怖で夜も眠れません。

しかも、本日は技術的な話ではなく、私が積んでしまっているゲームになります。つまり昨日よりもゴミ記事です。明日なんと言われるか……

巨影都市

積みゲーその1は、PS4のゲーム【巨影都市】です。

【PS4】巨影都市

【PS4】巨影都市

 

 紹介しておいてなんですが、クソゲーらしいです。

元々、絶体絶命都市が好きだったために購入したのですが、物凄いクソゲーだそうなので、やる前から買ったことを後悔し始めています。

フィリスのアトリエ 不思議な旅の錬金術

 有名なアトリエシリーズ最新作(21日に最新作ではなくなります)、そのvita版です。

 アイテム作成ゲーです。ひたすら大量にアイテムを量産していくゲームです。

アトリエシリーズのほとんどの作品は、どこかの街に工房を構えてアイテムを調合するのですが、今作は旅をしながらアイテムを調合するらしいです。

日数制限が鬼畜だとか話を聞いているので、少し楽しみにしています。

 

ガンダムブレイカー3

このゲームを積んでいるのは、正直本当に辛いです。発売何時だったっけ……

 方向性的にはビルドファイターズ路線、ガンプラで戦うゲームです。

前作で核兵器を連射してストレスを発散していた私としては、ストレス発散の為にもさっさと消化したいゲームです。

トトリのアトリエ  アーランドの錬金術師2

アトリエシリーズ史上、最高傑作の地位を争う作品です。 

トトリのアトリエ Plus ~アーランドの錬金術士2~ (通常版)

トトリのアトリエ Plus ~アーランドの錬金術士2~ (通常版)

 

 正確には少し齧っている(1周だけしてる)ので積みゲーではないんですが、実質的に積みゲー化しています。

知り合いのアトリエファンに知られたら、間違いなく怒られるでしょう。それくらい傑作です。

デート・ア・ライブ 凛緒リンカーネイション

 宣伝の文句で90%損をしているラノベデート・ア・ライブ」のぎゃるげーです。

 初回限定版を買ったのに放置しています。箱こそあけましたが、パッケージは開けてすらいません。ちなみにこれのラノベもそこそこ積んでます。

 

本当はもっといろいろありますが(MuvLuvとか、セブンスドラゴン2とか)、きちんと覚えているのはこれぐらいです。

ネタがないのでこんな記事しか書けずに申し訳ない。今度こそちゃんとした記事書きます。

CSSのフレームワークについて書いてみる

 本記事は、TUT(愛知とか中国とかフィンランドにない方)の田胡研究室で行っているアドベントカレンダー10日目の記事になります。

adventar.org

 実質的に人生初の記事です。

 家庭の事情により土曜日がつぶれたため、予定よりも記事の規模を縮小してお送りします。予定を聞いていた方々、ごめんなさい。

 所詮、tg研技術力ランキングワースト1を全速力で突っ走っている私の記事なので、あまり期待しないでください。

前置き:CSSフレームワークって?

 ご存知の方は、飛ばしてください

 正直な話、この記事を見ているであろうtg研の方々は、cssフレームワークって何なのかなんて話は必要としていないと思います。ですが、某デスソースの申し子の方がbootstrapの存在を知らなかったので、念のため説明しようかと思います。(あれ、なんでrailsチュートリアル終わってるのにBootstrapを知らなかったんだろう?)

 

 cssフレームワークとは、その名の通りCSSフレームワークです。以上。

 

 ……冗談です。いや、これ以上の説明は必要ないと思いますが、これじゃ説明不足なのでもう少し書きます。

 ここでのフレームワークとは、ソフトウェアフレームワークのことを指します。ソフトウェアの骨組みという名前の通り、ソフトウェアの一般的な機能を用意した……ちょっと違いますが、イメージ的にはお手軽なAPIみたいなものです。

 例を挙げてみましょう。
 例えば、私がとあるページのnavbarを作りたいと考えたとします。例なので機能は最低限、タイトルが出て、適当な背景色がついているだけのものを書くとしましょう
 そうなった場合、最初に書き始める部分はおそらくhtmlでしょう。

<nav>
  <a class="background-black" href="/">Navbar</a>
</nav>

こんな感じかな? 最低限だけのって考えると、たぶんこんな感じです。
そして、このあとcssの方に背景色と、テキストの大きさやら字体やら何やらの設定を書いてそれで完成ってところになると思います。

 では、次にcssフレームワークを導入した状態で書く場合どうなるでしょうか。
この例では、bootstrapというフレームワークを使用しているとして記述します。
 では、まずhtmlを記述します。

<nav class="navbar navbar-light bg-light">
  <a class="navbar-brand" href="/">Navbar</a>
</nav>

 次に……いえ、次はありません。これで終わりです。

 特にこだわりがなければ、cssも何も書く必要がありません。これで終わりです。

 ん? そんなに労力変わってなくない?

 そう思う人もいるかもしれません。実際、この三行程度だとそこまで大きく変化はないと思います。せいぜい、ページを移動しなくて楽かな? 程度でしょう。

 ですが、これが何百行ものコードになるとどうなるでしょうか。CSSに膨大な記述をするのは見にくく醜くなりますし、非常に非効率です。

 ですが、フレームワークを使用すれば、そんなコードから解放されます。比較的見やすくてきれいなコードで、効率も上がります。

 まあ、何を言いたいのかと言えば、フレームワークは凄いよってことです。

 

Bootstrapに代わるCSSフレームワークを探してみる。

 ここからが、本題になります。

 CSSフレームワークって何使う?

 そう聞けば、tg研の人場合は最低でも50%位の人がBootstrapを使うと答えるでしょう*1。Bootstrapは、それくらい有名で便利なCSSフレームワークです。

 しかし、時にはBootstrap以外を書きたいということもあるでしょう。その場合の選択肢についてここでは書きたいと思います。

 というか、Bootstrapが重いからとか具体的な理由がない限り、つまり気分で変えたい時って、実質的にほぼ二択ですよね。

 Foundation

 まずは、Foundation. ZURBの提供しているフレームワークです。

f:id:MiyaFubu:20171210182935p:plain

 The most advanced responsive front-end framework in the world. | Foundation

 最新のバージョンは6.4.2 gemも存在するのでrailsでも手軽に使えます。

 おそらく、Bootstrap以外を考えた時に真っ先に上がる候補はこれではないでしょうか。

 Bootstrap並みに豊富な機能と、書きやすさ。デザインもBootstrapぽくないので、Bootstrap臭がするページはもう嫌だ! という人にはいいかもしれません。

 ただし、普通に使う分には特に問題ありませんが、tg研で流行っているruby on railsにてこれを使いたい場合、少し問題があります。詳しくは後で。

 Semantic UI

 次に提案するのは、Semantic UIです。

f:id:MiyaFubu:20171210184355p:plain

 Semantic UI

 最新は2.2.13 これにもgemがもあります。

 semanticの名前通り、非常にわかりやすいです。

 機能はBootstrapやFoundationには劣りますが、十分に揃えられています。公式docが複数言語にある程度対応しているので、元々の機能が明瞭なのにのも相まって慣れていない人にもわかりやすいです。

で、結局どっちがいいの?

 Bootstrapを使いこなしている方には、Foundationがいいのではないかと思います。

 逆に、フレームワークってなんぞ? という人には、Semantic-UIを推します。Bootstrapよりも推します。機能面だけではなく検索しやすさでも、わかりやすさはSemantic UIが一番ではないでしょうか*2

 

 また、わかりやすさ以外にもSemantic UIを推すのには理由があります。正確には、【Foundationを推さない理由】ですが。

 実は、Foundationのgem 'foundation-rails'は、使用するにあたって致命的な欠陥を抱えています。なんとこのgem、JSがどっかで干渉を起こしているらしく、単純にインストールしただけだと一部機能(ドロップダウンなど)が正常に動作しないという不具合を抱えています。

 一応、色々弄れば何とかなりますが、何とかするのは大変です。

 tg研3年生のrails使用率を考えると、foundationを使用する際の環境はかなりの確率でrailsでしょう。その場合、多数の死傷者が出ると予想されます。

 というわけで、素直にBootstrapかSemantic UIを使いましょう。

 

終わりに

 以上で、本記事を閉めさせていただきます。かなりグダグダでごめんなさい。自分の技術力と文章構成能力のなさに、穴に入りたいばかりです。

 明日のアドベントカレンダーは、偉大なるlu_iskunさんです。なんでも、幣研で楽をする方法だとか。とても楽しみです。

 

*1:偏見です。実際に調査したわけではありません

*2:意見には個人差があります

とりあえず最初の記事

 はじめに

 人生初めてのブログである。名前はまだない。

しょっぱなからセンスのなさが露呈している記事であるが、初めてなので勘弁願いたい。

 

このブログでは、たぶんTwitterに近い感じで何か変なことを書く予定である。

ただし、いつ書くのかの予定は未定。

 

とりあえず、最初の記事は私が所属する研究室のAdventCalendarになります。はてなブログで良い感じのlinkってどう書くんだろ