Image from Gyazo

フィヨルドブートキャンプでリアクションにGitHubにもあるアイコンに独自に少し追加したんですが、プログラミングスクールとしては💪がすごく使い勝手が良い。

すごく日本人的かもですが、頑張ります!とか頑張ろ!って意味ですごく使いやすい。

フィヨルドブートキャンプのカリキュラムでlsをrubyで実装するというのがあるんですが、パーミッションの八進表記を記号表記(symbolic notation)に変換する部分をどう実装するのがベターなのかなというのを悩んでおります。

rubyのFile::Statで取れるのは八進表記。

$ ruby -e 'printf "%o\n", open("./foo").stat.mode'
100644

これを記号表記 -rw-r--r--に変換したい。

このrとかwとかがどこで定義されているのかがわからなかった。

何か共通の定義があってrubyでも簡単に読み込めるならそれを使うべきだし、本物のlsでもプログラム中で個別に定義してるならruby内で自分も定義して使っちゃっていいのかなと考え、macのソースコードを調べてました。

twitterで@massoさんなどに助言をいただき調べたところ、Libcのstrmodeの中に書いてありました。(lsもstrmodeを使って表示している)

strmode.c

    /* usr */
    if (mode & S_IRUSR)
        *p++ = 'r';
    else
        *p++ = '-';
    if (mode & S_IWUSR)
        *p++ = 'w';
    else
        *p++ = '-';
    switch (mode & (S_IXUSR | S_ISUID)) {
    case 0:
        *p++ = '-';
        break;
    case S_IXUSR:
        *p++ = 'x';
        break;
    case S_ISUID:
        *p++ = 'S';
        break;
    case S_IXUSR | S_ISUID:
        *p++ = 's';
        break;
    }

chmodなどはこれを使ってなくて直接chmod.cに書いてあったりしました。

今のところrubyから簡単にstrmodeを使う方法もなさそうなのでrubyコードの中に自分で定義しちゃうのでいいのかなというのが現状です。

もし「こういう方法が一般的 or スマート」というのをご存知の方がいらっしゃったらtwitterの@komagataまで教えていただければありがたいです〜。

PC向けのスピーカーを探してたんですが、イマイチ可愛いのが見つかりません。自作すればスピーカーボックスが選び放題。カワイイやつも結構あったので初心者向けのセットを買いました。

ss

FOSTEX フォステクス かんすぴセット(6.5cm) KANSPI-6

Image from Gyazo

木ネジでスピーカーユニットを留めてケーブルをアンプに繋ぐだけ。スピーカーボックスもただの箱ですね。構造がシンプルなので壊れても修理が楽そうです。

Image from Gyazo

やった〜カワイイ!

音量の物理ツマミも欲しかったので嬉しい。

ゲーミングPCも同じのを共有してるのでヘッドホンしなくてもだらだらゲームができるようになりました。

プログラミングスクールのフィヨルドブートキャンプの提出物のレビューでよく指摘するシリーズ。

Bad:

# frozen_string_literal: true

class Foo
  require "optparse"

  attr_reader :xxxx

  def initialize
    # xxxx
  end
end

Good:

# frozen_string_literal: true

require "optparse"

class Foo
  attr_reader :xxxx

  def initialize
    # xxxx
  end
end

requireは主にライブラリを読み込むために使います。書いた場所のスコープに読み込むわけではないのでファイルの一番上(マジックコメントよりは下)に書くのが一般的です。

ついでにloadとの違いを押さえておくと良いかもです。

プログラミングスクールのフィヨルドブートキャンプの提出物のレビューでよく指摘するシリーズ。

Bad:

def kana(name)
  result = ""
  if name == "komagata"
    result = "コマガタ"
  elsif name == "machida"
    result = "マチダ"
  elsif name == "tanaka"
    result = "タナカ"
  elsif name == "yamada"
    result = "ヤマダ"
  end
  result
end

Good:

def kana(name)
  {
    "komagata" => "コマガタ",
    "machida" => "マチダ",
    "tanaka" => "タナカ",
    "yamada" => "ヤマダ"
  }[name]
end

こういう分岐数が多いやつはハッシュで分岐数を削減できる。

今月頭に引っ越してから、新しい家ではNURO光を申し込んだんですがほぼ1ヶ月待ち。仕方ないのでレンタルWiFiを2台体制(1台目は1日目で通信制限に引っかかった)で無線LAN生活を送っています。

家の仕事用のMac miniは問題ないんですが、WindowsのゲーミングPCには有線LANしかないことに気づいて無線LANボードを購入してみました。

B07MDH8HV4

TP-Link WiFi 無線LAN アダプター AC1200

Image from Gyazo

なかなかイカツイ見た目ですね。

Image from Gyazo

無事ネットにつながりましたが、WindowsアップデートやSteamのゲームのアップデートの阻止に目を光らせながら使っています。(一瞬で通信制限突破しそう)

NURO光が開通した後も、作業部屋はルーターが設置される予定のリビングとは壁を隔てているので速度が出るか心配です。

B081L2Q7ND

UMEMORY

これとても良かった。

机の上にケーブルが3本必要だったのが1つになってスッキリ。

Image from Gyazo

あまりに良かったので妻に白いやつを買いました。

vimからneovimにうつって、なんか書き味が違う。

多分、キー入力とキー入力の間、「これだけの間何も入力しなかったら別の入力とみなす」って部分の秒数が長くなってる気がする。

だからvimのノリで移動して:wって打っても前の入力の続きと見なされて無効になっちゃう。

これってなんていうんだろう?なんていうキーワードでググればいいのかわからん・・・

どこかで設定できるのかな?

一年半程RubyMineを使ってきたんですが、またvimに戻ってしまいました・・・(何度目?)

「vimとgrepで10年戦えた。あと10年いける!」

などと言ってたのが2012年だそうなので本当になってしまいそうでヤバイ。

(上記のような事をいってたからvim使ってるのになぜ自分だけRubyMineを使ってるのかと責められていた)

ツールの変化

2002年

  • vim
  • grep
  • screen

2020年

  • neovim (new!)
  • ag
  • screen

ちょっと進化した!

という発表をBurikaigi2020 - connpassでさせていただきました。

Image from Gyazo

プログラミングスクールの問題点

一番言いたかったのは「未学習」と「未経験」を一緒にするのはやめようっていう話です。

Burikaigi

.net/C#・Java・Rubyという感じに三つの部屋に分かれていました。もちろん僕はRubyの部屋で、とても発表も面白かったんですが、他の2部屋の内容もめっちゃ気になりました。

C#はUnityをやってる時にやっていて、まだ全然習熟してないのでもし話聞いたらすごく勉強になりそうだし(Blazerとか聞きたかったわぁ)、Javaは最新の話題を全然キャッチアップできてないので聞きたかったです。

両方とも最近の話題がキャッチアップできるイベントがあったら行きたいなと思います。

Image from Gyazo

年齢層高めの我々おっさんにとっては最高の食事群でしたね。

鰤しゃぶ以外にも富山(主に魚!)の名物が満載。我々の好きなものばっかりじゃん。鰤しゃぶは昆布に日本酒をなみなみと注ぎ、火をつけてアルコールを飛ばした上でしゃぶしゃぶ…はかどるわぁ〜。

Image from Gyazo

Ruby部屋の皆さんは知った顔ばかり和みました。@muryoimplさんの地元の金沢も行きたいからイベントやって欲しいなどと話つつ、とても楽しく飲み食いできました。

もうおっさんの好きなもの全て集めて、千葉のホテル三日月とかでイベントやって欲しいですね😁