なんじゃくにっき

プログラミングの話題中心。

CentOSにemacsをインストールする

CentOSemacsをインストールします。

1. yumで入れる

yum install emacs

はい。コマンド一発です。 でもこれで入れるとバージョンがちょっと古いのです・・

この記事書いている時点だと最新版が24.3に対してインストールされるのは23.1.1

2. ソースから入れる

最新版が欲しい場合はソースからインストールします。 既にemacsが入っている場合は先に削除しておきます。

yum remove emacs

ビルドに必要なものをあらかじめ入れておきます。

yum install wget gcc make ncurses-devel

↓からソースをダウンロードしてインストールします http://core.ring.gr.jp/pub/GNU/emacs/

2.1 GUIいらない(テキストモードonly)の場合

wget http://core.ring.gr.jp/pub/GNU/emacs/emacs-24.3.tar.gz
tar zxvf emacs-24.3.tar.gz
cd emacs-24.3
 ./configure --without-x --with-x-toolkit=no --with-xpm=no --with-jpeg=no --with-gif=no --with-tiff=no --with-png=no --without-selinux
make                      
make install

ガチでemacs初心者が開発環境構築するまで

背景

おっさんですがemacsを使いこなせるようになりたいと思いました。 マルチプラットフォームで使えるエディタ、ということならEclipseに逃げてしまえばいいんですが、 GUIないと使えないのと、起動が重いので別のも覚えようかと。

周りにはvi(m)使いが多いのでどうせなら少数派で・・というのは半分冗談半分本気で。

手順

1. インストール

CentOSにemacsをインストールする - なんじゃくにっき2

MacにEmacsをインストール - なんじゃくにっき2

Ubuntuにemacsインストール - なんじゃくにっき2

まだまだ途中!

CentOS 6.5から7.0へアップグレード!

下記記事参考にさせて頂きました。 他力本願。

CentOS 6.5 から CentOS 7 にアップグレードする: ある SE のつぶやき

CUI部分はそのまま動いたが、 GUI部分は動かなかったり、表示がおかしかったりするので 自分でちょろちょろ直していった。

解像度おかしい -> 設定から直す 日本語入力できない -> 入れ直し Google Chrome動かない -> 入れ直し

錯覚美術館

明治大学の錯覚美術館に行ってきた。

錯覚を起こす絵とか立体を展示している場所です。 典型的な美術館というより研究室の展示っぽい感じでした。

計算錯覚学 | 錯覚美術館

小川町駅もしくは淡路町駅から歩いてすぐ(自分は自転車で行った)。 土曜日しかやってないので注意。 無料なので気軽にいけます。

ビルの2階の1室にあって、観覧客は10数人いた。 研究室のメンバー(?)らしき人が解説してくれて質問すると答えてくれます。

錯覚は計算して作れるんだなーってのが感想。 まあ管轄が先端数理科学インスティテュートってだけあってモロ数学なわけですが。

「だまし絵と線形代数」とかいう書籍も出版されていると知った。

だまし絵と線形代数 / 三村 昌泰 竹内 康博 森田 善久 編集 杉原 厚吉 著 | 共立出版

よく忘れるRubyの基本的記法

個人用メモ。 ※見てくれる人が多いようなので追記しました。 そのうちまた追記します

リテラル

詳しくはドキュメント読みましょう http://docs.ruby-lang.org/ja/2.1.0/doc/spec=2fliteral.html

Stringの配列
%w(a b)   # ["a", "b"]
%w|a b|   # ["a", "b"] 区切り文字は()以外にも<>とか[]とか||でも
Stringの配列で式展開(W大文字)
c="CCC"
%W|a b #{c}|     # ["a", "b", "CCC"]
Symbolの配列
%i(a b)   # [:a, :b]
Symbolの配列でも式展開できる
c="CCC"
%I|a b #{c}|     # [:a, :b, :CCC]
正規表現
/Ruby/i     # 大文字小文字区別しない

String

1文字
?a    # "a"
普通の式展開
x = "fuga"
"hoge #{x}"    # "hoge fuga"
sprintfっぽい式展開
x = "fuga"
y = 100

"hoge %s" % x    # "hoge fuga"
"hoge %s %i" % [x, y]    # "hoge fuga 100"  複数もいけるで!
Hashも展開できる

"Hello %{name} !" % {name: "world"} # "Hello world!"

書式指定もできる

"%{year}-%02d-%02d" % {year: 1970, month: 1, day: 1} # "1970-01-01"

Array

積集合
[1, 3, 5, 7, 9] & [1, 2, 3, 4, 5]   # [1, 3, 5]
headとtailに分解
head, *tail = [1, 2, 3]
head  # 1
tail  # [2, 3]
zip, transpose
[1, 2, 3].zip [4, 5, 6] # [[1, 4], [2, 5], [3, 6]]
arr1, arr2 = [[1, 4], [2, 5], [3, 6]].transpose
arr1   # [1, 2, 3]
arr2   # [4, 5, 6]
組み合わせ
[1, 2, 3, 4].combination(2).sort_by{|item| [item[0], item[1]]}
# combinationは順番保証しないことになっているので適宜sort_by

Enumerable

each_slice

(1..7).each_slice(3).to_a # [[1, 2, 3], [4, 5, 6], [7]]

たまにはcall使いたくなる

if nantoka_flag {
  $('#hoge').show();
} else {
  $('#hoge').hide();
}

みたいなコード書くのだっりぃーなと思った。 $('#hoge')が2回出てくるのがだるい。

var $hoge = $('#hoge') 
if nantoka_flag {
  $hoge.show();
} else {
  $hoge.hide();
}

セレクタ書くの1回になったので保守性は上がったがコード量増えててだるお。

じゃあこれでドヤ

(function(){
  if (nantoka_flag){
    this.hide();
  } else{
    this.show();
  }
}).call($('#hoge'));

$とかセレクタとか1回で済むがthisが2回出てくるのがだっるい。 そもそも無名関数書くのだるい。

(nantoka_flag ? $.prototype.show : $.prototype.hide).call($('#hoge'))

無名関数消してみた。 $.prototype 2回出てくる・・

$.prototype[nantoka_flag ? "show" : "hide"].call($("#hoge"))

まあこんなもんすかね。

(new $)[nantoka_flag ? "show" : "hide"].call($("#hoge"))

って書いた方がちょっと短い。

仕事で書くと怒られそう

影明かし

http://www16.atpages.jp/foomal/game_kageakashi.html

ウディコン第5回で3位を取った作品。
テンポ良く進む短篇RPGで1時間程で終わるので時間無くてもできるので◎
ノーマルモードでクリアした後ハードモードが出るのでさらにクリアして2時間くらい遊んだ。
ともかく操作性が良くてストレス感じるようなところが極力削がれてるのがすごい。
難易度はノーマルはたまにボスでアイテム使わないと勝てないくらいでちょうど良いくらい。

年賀状はチケットショップで買うとお得

年賀状はチケットショップで買うとお得です。
1枚47円とか48円で買えます。

割と有名な話ですが、
なぜチケットショップに大量に出回っているというと、
郵便局員の人が大量に持ち込むからですね。

ノルマが厳しくて親戚・知人に買ってもらっても達成できないからチケットショップに持ち込む・・ということで。
このご時世、年賀状送らずにメールで送ることが多いのに多量のノルマって歪んだ構造ではありますが。

Ruby 2.1.0にアップデート[Mac][CentOS]

【rvm使っている場合】
前提としてrvmは入っているものとする

http://d.hatena.ne.jp/nanjakkun/20121110
http://d.hatena.ne.jp/nanjakkun/20130715

まずはrvm自体の更新
$ rvm get stable

インストールできるバージョン確認して
$ rvm list known

インストール
$ rvm install 2.1.0

$ rvm use 2.1.0


brewでrvenv入れてある場合】
ruby-buildのアップデート
$ brew upgrade ruby-build

インストールできるバージョン確認して
$ rbenv install --list

インストール
$ rbenv install 2.1.0

$ rbenv global 2.1.0

あとはお好みでgem等入れる