Rubyをrbenv使ってアップデートする #ruby #rbenv

rbenv 使って Rubyをアップデートしてみた。

前提

  • rubyとrbenvは既に入っている
  • CentOS release 6.7

手順

rbenvをアップデートできるようにする

rbenvを導入する
https://github.com/rkh/rbenv-update

ReadMeの通りやればOK

rbenvをアップデートする

rbenv update

導入したいrubyをインストールする

rbenv install —list
rbenv install -v {installしたいバージョン}

使いたいバージョンに切り替え

rbenv global {installしたバージョン}

反映を確認
ruby —version

余談

rbenvは「あーるびーえんぶ」と読むらしい

CircleCI と Slack を連携させて思ったこと #ちら裏

CircleCIの結果をSlackに通知させて見たわけですが、ま〜楽ね楽。
便利な世の中になりました。

んで思ったんだけど、ツールの類はどんどんAPI公開して、Integrationが前提になっていってる。

そうするとツールの選定の際に、以下にスタンダードなものか、Integrationは容易か、ってのを検討することが大事になってくる。

スタンダードなものであればCircleCIとSlackみたいに、デフォで連携が提供されているし。

APIが公開されてても、自分たちでAPIを叩く処理を作らなきゃいけないし、APIの変更にも自前で追従する必要がでてくる。
あと、APIの仕様がそもそもイケてなかったりすると目も当てられない状況になりますね。

そうすると、結局ツール単独だとコストが安くても、俯瞰で見た時に運用も金額もかさんでくる可能性がある。
あっちのツールのデータをこっちでも使いたい!とかよくあるでしょ。

もちろん総合的なツール群を提供しているところもあるけど、ロックインのリスクどう考えるのかとか、カスタマイズ性とか。

そういう観点の優先順位を上げていかないと、ツール自体がボトルネックになっちゃうよなぁ、と思った。

Mac + IntelliJ IDEA で構造選択する #intellij

エディタで構造選択するときのショートカットキーを調べると、「Cmd + w」と紹介されているところが多いのだが、実際にはエディタが閉じられてしまう(´・ω・`)

どうやればできるか

どうも調べた結果、option + ↑/↓で出来る模様。

メモ

Stefanさんが僕と同じことで悩んでいた
30 Days with IntelliJ IDEA. Editor Basics | IntelliJ IDEA Blog

なんでも検索(shift2連打)→「keymap」で検索。

「Keymap Reference」を選択。
そうするとMacのKeymap一覧PDFが開く。

  • option + ↑
    • Select successively increasing code blocks
  • option + ↓
    • Decrease current selection to previous state
  • cmd + w
    • Close active editor tab

情熱プログラマーを読んだ #PaDD

www.amazon.co.jp

本のタイトルは昔から知っていたのだが、ようやく手に取った本。
ソフトウェア開発者がどのように生きていくか、その心構えや具体的な行動の起こし方を短いテーマごとにまとめている。
逆に技術的なことはほとんど触れていない。

ソフトウェア開発は楽しい!

僕はPaDDエンジニアを名乗っている訳ですが、PaDDはその大前提で
「仕事なんかそもそも楽しいものじゃない→どうやって楽しくするかを考えるもの」
と言っているわけです。

でもこのフレーズっていうのは極論を持ち込んでいるので、本質は別のところにあります。

仕事はもちろんつまらないこともあるし、嫌なこともあるし、やってられない気持ちになることもあります。

だけど、僕が自分の人生を投資している「この仕事」は前提として本当につまらないものなのでしょうか?

そんなことはないんです。
この仕事には楽しさ、面白さ、やりがいがたくさんあるから続けていられるのです。
本当につまらないものだったら、どうやっても楽しくならないし、きっと続けられないです。

この本は結局のところエンジニアリングが大好きな人がその仕事を素晴らしいと思って書いていて、それがとても伝わってきます。

悩むときはある

hatsugen.zakzak.co.jp

ちょっと前に、上記の記事が一部で話題になっていました。

  • 新卒文系未経験
  • C言語研修
  • ちんぷんかんぷん

これ、自分と全く同じなんですよね。
配列が0から始まるのに納得いかなかったなぁ。。
辛辣な意見も多く、何か自分もプログラマやエンジニアにはなるべきじゃなかったのかもしれないなんて思ったり。。
(実はそもそもの採用も技術職枠じゃなかったのに配属が開発部門だった(笑))

なんでこんなことをやっているんだろう? このままこの仕事を続けていっていいのか?
これが本当に自分のやりたいことなのか?

新人の時から何度自問したか分かりません。

でもやっぱり楽しい

僕は前述の通り、何故かソフトウェア開発の世界に来てしまった人です。
今でも情けないことに、時々心に迷いが生じることはしばしばあります。

だからこそ、この本のように、この仕事を愛してやまない人のメッセージは突き刺さるものがあります。 そして思い出します、何度迷ったり不安になっても、僕がこの仕事を続けている理由を。

  • 見えないものをカタチにしていくこと
  • 誰かの問題が解決されて、世界が少しよくなること
  • もしかしたら未来を作り出しているのかもしれないこと
  • なにより楽しいこと!

一番心に残った一節は、座右の銘になるレベルですね!

ソフトウェア開発は、芸術活動のようにクリエイティブでありながら、具体的な価値を生み出せる素晴らしい職業だ。 ソフトウェア開発は楽しい!

MySQLでカラムの値から一部を取り出す

こんなテーブルと値があるとする。

id(number) profile(varchar)
1 sex:male, name:yamada, age:30
2 sex:female, name:sato, age:20

ここから、nameの値だけを取り出すことを目的にする。

name
yamada
sato

SQL

select
    LEFT( 
        SUBSTRING( 
            profile, 
            LOCATE('name:', profile) + LENGTH( 'name:' )
        ), 
        LOCATE ( 
            ',' , 
            SUBSTRING( 
                profile, 
                LOCATE('name:', profile) + LENGTH( 'name:' )
            )
        )
    ) AS "name"
from 
   hoge
;

処理の流れ

  1. name: の始まりの位置を取得する
  2. LOCATE('name:', profile)
  3. name値の始まりの位置を取得する
  4. name: の開始位置から、「name:」分ずれた位置と考える
  5. LOCATE('name:', profile) + LENGTH( 'name:' )
  6. name値の開始から文字列の終了までを切り出す
  7. SUBSTRING( profile, LOCATE('name:', profile) + LENGTH( 'name:' ))
  8. 「yamada, age:30」が取れている状態
  9. name値の終了位置を取得する
  10. 「,」が来たら終了と考える
  11. LOCATE ( ',' , 'yamada, age:30')
  12. なので、 LOCATE ( ',' , SUBSTRING( profile, LOCATE('name:', profile) + LENGTH( 'name:' )))
  13. name値の終了までを取り出す
  14. name値の開始から文字列の終了から、name値の終わりまでを切り取る
  15. LEFT( SUBSTRING( name, LOCATE('name:', profile) + LENGTH( 'name:' )), LOCATE ( ',' , SUBSTRING( profile, LOCATE('name:', profile) + LENGTH( 'name:' ))))

余談

本来であればカラムの値はそれだけで意味を為すようにしたい。 値を加工するにしてもできればSQLではやりたくない。 (SQLは問い合わせに振りきりたくて、ロジカルなことはあんまりやらせたくない派なので)

まぁでも、調査だったり既存のデータ構造だったりで力技が必要になることはある。

IntelliJ IDEAのプロジェクトをGitHubのリポジトリに連携する

既存の空リポジトリに連携する

リポジトリGitHub側で作成して、そこに入れ込む場合はgit remote addをコマンドラインでやるしかない模様。 https://youtrack.jetbrains.com/issue/IDEA-87099

ターミナル起動のショートカットは手に馴染ませたいところ。。

  1. プロジェクトをGit管理にする [VCS]→[Enable Version Control Integration...]→[Git]
  2. option + F12でターミナル起動
git remote add origin ${リポジトリURL}
git pull origin master
git add .
git commit -m "initial commit"
git push origin master

新規リポジトリに連携する

  1. [VCS]→[Import Into Version Control]→[Share Project on GitHub]

これだけでよさげ。 ただGitHubで先にリポジトリを作ると、.gitignoreだったりライセンスのReadMeだったりを自動生成できる。 個人的にはGitHubで先に作っちゃうほうがいい気がする。