MacBook での開発環境構築

今まで Windows10 での WSL(Windows Subsystem for Linux)で rails の勉強をしていたのですが、MacBook Proを購入したので開発環境構築から始めています。

 

rubyrailsMySQLPostgreSQLなどのインストールはハマらず、すんなり終了。

 

一番時間がかかったのがEmacsの設定関連でした。

使用している Emacs は  brew cask install emacs でインストールした Emacs For Mac OS X です。

 

 左CommandキーをMetaキー(M-)として設定

ミニバッファでの履歴をたどるとき M-p を入力したつもりで Command+p をすると印刷ダイアログが出てきてしまうので、困りました。

 

以下のページを参考にして解決。

init.el: MacのキーボードでMetaAltSuperHyper - Qiita

(when (eq system-type 'darwin)

  (setq mac-command-modifier 'meta))

 

Command+F1で別フレームに切り替える

MacBookがTouchBarモデルで、外部ディスプレイ+外部キーボードを使用していることもあってか、Command+F1でフレームが切り替わらず画面ミラーリングモードになってしまいました。

 

init.el に以下のように書いて解決。

;; command+F1で別フレームに切り替え
(global-set-key (kbd "<M-f1>") 'other-frame) 

 

MacBook Pro を購入

MacBook Pro を購入しました!

 

今まで会社では2014年モデルのMacBook Proを使っていましたが、個人では持っていなかったので思い切って15インチモデルを購入。

 

Touch Bar は正直どっちでもいいなと思ったので、13インチのTouch Barなしと迷ったのですが、持ち運びはせず家使いメインになるので大きい方がいいと考えました。

 

これでSwiftの勉強も始められる!

仕事の方も少し落ち着いてきたので、勉強のペースも上げていきたいです。

いろいろと勉強中

いろいろと思うところもあり、週末を中心にWeb開発まわりを勉強しています。

 

私の知識は2009年ごろでストップしてしまっているので、この10年の進化に追いつくことが当面の目標。

2月くらいから少しづつやり始めていたのですが、3月から仕事が忙しくなりあまり時間が取れませんでした。

ようやく仕事の方が一段落ついたのでこれからはペースを上げていきたいです。

 

5月末ころには SPA とか TypeScript とか、Kubernetes とかがバリバリ使えるようになりたい。

 

とりあえず、今は jQuery を再勉強。私もよく使っていましたが、しっているのは jQuery1.x まででした。

昔よく見ていた 

jQuery 日本語リファレンス

は2010年から更新がとまっていて残念。

O'reilly の Docker本で logspout と logstash の連携に失敗する件

最近、遅ればせながら Docker をちゃんと勉強しようと O'reilly の Docker本を読んでいます。

 

サンプルなども写経しながら動作確認しつつ進めていると、「10章 ロギングとモニタリング」のサンプルコードが上手く動かなくてハマりました。

 

logspout と logstash のコンテナを立ち上げ、logspout から logstash://logstash:5000 にログを流すのですが、logstash 側の listener が開始する前に logspout からコネクションを貼ろうとして「write: connection refused」とエラーになり logspout コンテナが終了してしまいます。

 

いろいろ調べると、結構同じエラーに悩んでいる人はいるようで、logspout の方で解決されているようですが、本に書いてある amouat/logspout-logstash イメージでは反映さていないのかな?

github.com

 

logspout コンテナの環境変数で「RETRY_SEND」や「RETRY_STARTUP」を指定すると RETRY できるイメージもあるようです。

github.com

 

ちなみに、この本、単に Docker の使い方だけではなく、マイクロサービス の哲学や関連するメジャーなプロダクトの情報なども学ぶことができ、非常におもしろくためになる本です。

 

おすすめします!

 

 

昨日、息子にプログラミングを教えました

昨日、6才の息子に初めてプログラミングを教えました。

内容はRubyで、別のファイルを読み込んで、何時間何分という時間の書かれたリストから全部の合計時間を計算するというものです。

ソースはこんな感じ。

total_hour, total_minute = 0, 0
File.foreach("video-time-list.txt") do |line|
  next unless line =~ /(\d+):(\d+)/
  hour, minute = $1.to_i, $2.to_i
  total_hour += hour
  total_minute += minute
  if total_minute >= 60
    total_hour += 1
    total_minute -= 60
  end
end

puts "%dじかん%dふん" % [total_hour, total_minute]

puts "%dにちかん%dじかん%dふん" % [(total_hour / 24), (total_hour % 24), total_minute]

きっかけが、HDDレコーダーにある息子の録画した番組のリストから全部で何時間か計算したいと言い出したことだったので、そのようなプログラムにしました。

最初は紙と鉛筆でがんばって計算していたのですが、ビデオのリストが150個もあり、30個くらいのところで挫折して、じゃあプログラムで計算してみよう!と私から提案しました。

もちろん、がんばればExcelでもできるような計算ですが、ちょうどプログラミングを教えるいい機会かなと思った次第です。

とりあえず、順次実行と条件分岐と繰り返しの3つがあるよということを教えてから、実際のプログラムを作ってビデオリストの合計時間を計算するところまでは達成しました(≧▽≦)

その時の説明文書が以下です。


プログラムとは

コンピュータにはたらかせる めいれい をかいたもの

プログラムをかく ほうほうも たくさんあります

たとえば、ひとが はなす ことばにも にほんご や えいご や ちゅうごくご があるように
プログラムにも いろんな げんご があります

たとえば C Java ruby perl php python C# ...

きょうは そのなかで ruby という げんご で プログラムします

プログラムは きほんてきに

じゅんばんに めいれいを じっこうする
じょうけんぶんき (あるばあいと そうでないばあいで じっこうする めいれいをかえる)
くりかえし

この3つをつかってつくります

1つ目のプログラム

# じゅんばんに めいれいを じっこうする

puts "こんにちは"  # puts はがめんに もじを ひょうじする めいれい
puts "◯◯くん"    # ◯◯は息子の名前
puts "きょうは よろしくね"

# けいさんをしてみよう
# けいさんをするには へんすう というものをつかいます

a = 1   # この a をへんすうといいます
        # すうじを いれることができる はこ のようなもの

puts a

puts a + a
puts a + 1

b = 2

puts "a + b = %d" % (a + b)

2つ目のプログラム

# じょうけんぶんき
a = ARGV[0].to_i

puts a

if a > 10
  puts "おおきい"
else
  puts "ちいさい"
end

3つ目のプログラム

# くりかえし
2.times do |i|
  puts "%d: こんにちは" % i
end

9.times do |i|
  9.times do |j|
    puts "#{i+1} × #{j+1} = %d" % ((i+1) * (j+1))
  end
end

どの程度理解したかは分かりませんが、楽しんでくれたようだったので良かったです(^^;;

AngularJSを勉強中

全然ブログを更新できていませんが、AngularJSを勉強中です。

 

ここしばらくは、仕事でExcelの資料作りみたいなことが中心だったのですが、AngularJS+dropwizardでプロトタイプを作ろうと考えています。

 

AngularJS: http://angularjs.org

dropwizard: http://dropwizard.codahale.com

 

dropwizardでRESTfulなバックエンドを作成し、フロントをAngularJSで作成するつもりです。

 

dropwizardはJavaなので、ある程度すぐに理解できたのですが、AngularJSは苦戦中です。

 

JavaScriptの開発をするのが、5年ぶりくらいないので、完全に浦島太郎状態。

当時は prototype.jsscript.aculo.usjQuery のどれがいいだろう?みたいな状況で、document.all を使うのはやめましょう、とかそういう話をしていたのが、まったく別次元な感じです。

 

とりあえず、AngularJSのtutorialを実行中。

先は長そうですが、少しずつ頑張ります!

 

 

MacBook Pro に homebrew + rbenv で Ruby 環境をインストール

Mavericksにはデフォルトで ruby-2.0.0 が入っていようですが、

今後、環境を切り替えたくなるだろうことを想定して、

homebrew + rbenv で Ruby環境をインストールしました。

 

このページを参考に基本的に書いてあるままで OK でした!

Ruby 2.0.0 を Homebrew + rbenv で OS X Mountain Lion にインストール - noanoa 日々の日記

http://blog.livedoor.jp/noanoa07/archives/1897747.html

 

最近の Mac OS X 上での Web開発関連って、

こういう情報がすぐに取得できるところがいいですね。