clairvyの日記

思ったこと,調べたことを書きます

CentOS6.5 をインストールした

Docker やってて,Mac では試せていたけど,LinuxWindows でも試そうと
思っていて,とりあえず久し振りに Linux をインストールするか.と思った次第.

とりあえず,光学メディアを用意するのが面倒だったので,
PXE ブートを試す.

この辺をそのままやった感じです.
DHCP が居るので,ProxyDHCP にて.
(この辺もうちょっと調べてみたい)

$ brew install dnsmasq
$ rehash
$ mkdir /tmp/tftpboot
cat >>EOL > /usr/local/etc/dnsmasq.conf
no-daemon
dhcp-leasefile=/tmp/dnsmasq.lease
port=0
dhcp-range=192.168.1.0,proxy
pxe-service=x86PC,install,pxelinux
enable-tftp
tftp-root=/tmp/tftpboot
EOL
$ cd /tmp/tftpboot
$ mkdir pxelinux.cfg
$ cat >>EOL > pxelinux.cfg/default
label install
kernel vmlinuz
append load initrd=initrd.img
EOL

192.168.1.0 はDHCP に合わせた適当な値で.

イメージを落としてくる.

$ curl -LO http://ftp.iij.ad.jp/pub/linux/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-bin-DVD1.iso

これをマウントして,ファイルを取り出す.
(rpm2cpio が無かったから途中で入れました)

$ cd /tmp/tftpboot
$ cp /Volumes/CentOS_6.5_Final/images/pxeboot/initrd.img .
$ cp /Volumes/CentOS_6.5_Final/images/pxeboot/vmlinuz .
$ cp /Volumes/CentOS_6.5_Final/Packages/syslinux-4.02-8.el6.x86_64.rpm .
$ brew install rpm2cpio
$ rehash
$ rpm2cpio.pl syslinux-4.02-8.el6.x86_64.rpm | cpio -id ./usr/share/syslinux/pxelinux.0
$ mv ./usr/share/syslinux/pxelinux.0 .
$ rm -rf usr syslinux-4.02-8.el6.x86_64.rpm

$ ls
initrd.img
pxelinux.0
pxelinux.cfg/
vmlinuz
$ sudo dnsmasq

これでPXEブート選択すればできました.

Rails Girls Nagoya を見学してきた

たまたま機会があったので,Rails Girls Nagoya 1st Nagoya 7-8th March 2014 を見学させてもらいました.
スタッフの方ありがとうございます.

そのときに,見学するだけなのもアレなので,
自分でもやってみようと思っていたので,
やっていたが,なかなかうまくいかなかったので,
とりあえずこの記事に追記していこうと思う.

これくらいで環境を作りたい.(MacOSX の場合)

$ brew bundle
$ rehash
$ VBoxManage  "boot2docker-vm" --natpf1 "tcp-port3000,tcp,,3000,,3000"
$ boot2docker up
$ docker run -p 3000:3000 -rm clairvy/railsgirls

又は

$ brew bundle
$ VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port3000,tcp,,3000,,3000"
$ boot2docker up
$ docker build -t clairvy/railsgirls .
$ docker run -p 3000:3000 clairvy/railsgirls
2014/3/17


gist9591930

今んとこ,source ~/.rvm/script/rvm のところで,途中で抜けているみたい.
set -e と関係ありそうだけど,

$ bash <( echo 'set -e; source ~/.rvm/scripts/rvm; echo $?' )
$

って書きながら思ったけど,source で $? って変化しなくね?
と思ったらしていた.

$ cat a
bash -c 'exit 1'
$ bash <( echo 'source a;  echo $?' )
1

とりあえず今はこんな感じ.

2014/3/18

これで一応動くは動くのだけど.

$ curl -s https://raw.github.com/railsgirls/installation-scripts/master/rails-install-fedora.sh | sed -e 's#source ~/.rvm/scripts/rvm#set +e;source ~/.rvm/scripts/rvm;echo $?;set -e#' | bash
2014/3/23

issm さんに,boot2docker ですよ.と言われたので入れてみる.

Brewfile で,boot2docker を入れる.(イマドキ brew bundle はもう修正されているかもしれないけど,とりあえずWarning を抜くのを入れてある)

install boot2docker 2>&1 | egrep -v '^Warning: ' || true

tap 'phinze/cask' 2>&1 | egrep -v '^Warning: ' || true
install brew-cask 2>&1 | egrep -v '^Warning: ' || true

cask install virtualbox 2>&1 | egrep -v '^Warning: ' || true
$ brew bundle
$ rehash
$ boot2docker
Usage /usr/local/bin/boot2docker {init|start|up|save|pause|stop|restart|status|info|delete|ssh|download}
$ docker -v
Docker version 0.9.0, build 2b3fdf2
$ boot2docker init
$ boot2docker status
[2014-03-23 15:35:01] boot2docker-vm is stopped.
$ boot2docker up
[2014-03-23 15:35:19] Starting boot2docker-vm...
[2014-03-23 15:35:38] Started.

To connect the docker client to the Docker daemon, please set:
export DOCKER_HOST=tcp://localhost:4243

$ boot2docker status
[2014-03-23 15:36:26] boot2docker-vm is running.
$ DOCKER_HOST=tcp://localhost:4243 docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ DOCKER_HOST=tcp://localhost:4243 docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

とりあえず,環境変数で指定するの面倒だったので,いつか直りそうだけど,
今使えるものを書く..zshrc とかに.


gist9719817

これで,boot2docker up → docker build . である程度できそうな気がしてきました.

2014/3/25

とりあえず,docker push しておいたので,見られるようになった.
USER とかDockerfile にまだ修正するつもりだが動くようになった.

$ docker pull clairvy/railsgirls

https://index.docker.io/u/clairvy/railsgirls/

VBoxManage が覚えられない.
なのでスクリプトにして,必要になったときだけ直接書けばいいかな.と思った.

# boot2docker
if whence -p VBoxManage 2>&1 > /dev/null; then
  alias boot2dockershowpf='VBoxManage showvminfo boot2docker-vm | egrep "NIC.*Rule" | perl -lpe '\''s/NIC (\d+) Rule\(\d+\)/natpf\1/;s/,[^,]+ = /,/g;s/:[^:]+ = / /g'\'''
  alias boot2dockershowpf-name='boot2dockershowpf | awk -F, '\''{print $1}'\'
  function boot2docker-add-pf {
    if [[ $# -lt 1 ]]; then
      echo "usage : $0 <port>"
    else
      VBoxManage controlvm boot2docker-vm natpf1 "tp$1,tcp,,$1,,$1"
    fi
  }
  function boot2docker-del-pf {
    if [[ $# -lt 1 ]]; then
      echo "usage : $0 <name>"
    else
      VBoxManage controlvm boot2docker-vm natpf1 delete $1
    fi
  }
fi

2014/3/28

centos だと EPEL 導入後だったら,でいいんすかね.

$ sudo yum -y install docker-io
$ rehash
$ sudo service docker start
$ sudo chkconfig docker on

Windows のテスト環境ってどうやって作るといいんだろ?


WEB+DB PRESS Vol.79

WEB+DB PRESS Vol.79

  • 作者: 成瀬ゆい,そらは(福森匠大),西磨翁,小川航佑,佐藤新悟,塚越啓介,藤原亮,堀哲也,田村孝文,桑野章弘,松浦隼人,中村俊之,田中哲,福永亘,杉山仁則,伊藤直也,登尾徳誠,近藤宇智朗,若原祥正,松木雅幸,奥野幹也,後藤秀宣,羽二生厚美,笹田耕一,平河正博,東舘智浩,渡邊恵太,中島聡,A-Listers,はまちや2,川添貴生,山田育矢,伊藤友隆,村田賢太,まつもとゆきひろ,佐野岳人,山口恭兵,千葉俊輝,平松亮介,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2014/02/22
  • メディア: 大型本
  • この商品を含むブログ (2件) を見る

CPS変換ってことでもないこと

最近プログラミング言語SCHEME を読んでいる.

継続が昔からよくわからんので丁寧に読んでいる感じ.

http://www.shido.info/lisp/scheme_cc.html

この辺とかも見てる.

CPS 変換してみたり,クロージャの連鎖という表現,末尾再帰とリンクするような.

もにゃっとしてる.

#!/usr/bin/env gosh

(define reciprocals
  (lambda (ls)
    (call/cc
     (lambda (k)
       (map (lambda (x)
              (display x)
              (if (= x 0)
                  (k "zero found")
                  (/ 1 x)))
            ls)))))

(reciprocals '(1 2 3)) ; => (1 1/2 1/3)
(reciprocals '(1 2 3 0 4 5 6)) ; => "zero found"

(define reciprocals2
  (lambda (ls)
    ;; (define map1
    ;;   (lambda (p ls k)
    ;;     (let ((break k))
    ;;       (let f ((ls ls) (k k))
    ;;         (if (null? ls)
    ;;             (k '())
    ;;             (f (cdr ls) (lambda (r)
    ;;                           (p (car ls) (lambda (x)
    ;;                                         (k (cons x r))) break))))))))

    (define map1
      (lambda (p ls k)
        (let ((break k))
          (let f ((ls ls) (k k))
            (if (null? ls)
                (k '())
                (p (car ls) (lambda (x)
                              (f (cdr ls) (lambda (r)
                                            (k (cons x r)))))
                   break))))))

    (map1 (lambda (x k break)
            (display x)
            (if (= x 0)
                (break "zero found")
                (k (/ 1 x))))
          ls (lambda (x) x))))

(reciprocals2 '(1 2 3)) ; => (1 1/2 1/3)
(reciprocals2 '(1 2 3 0 4 5 6)) ; => "zero found"

これの結果がこんな感じで,逆順になるのがわかるんだけど,
もにゃっとしてる.

123(1 1/2 1/3)
1230"zero found"
321(1 1/2 1/3)
6540"zero found"

って書いてから思ったけど,これCPS 関係なくて,
ただ問題が等価変換じゃないだけのような気がした.
ということで,p の適応を前に持ってきた.
これでいいのかも.

プログラミング言語SCHEME

プログラミング言語SCHEME

  • 作者: R.ケントディヴィグ,R.Kent Dybvig,村上雅章
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/05
  • メディア: 単行本
  • 購入: 2人 クリック: 71回
  • この商品を含むブログ (19件) を見る

初心者向けのこと

とりあえずメモ的なものを残しておきます.

これは編集する予定です.

 

初心者向けの会をやろうと思っています.

やりたいこと.

  1. バーチャルマシンをインストール
    1. インストール
    2. Snapshot を取る
    3. Perl インストール
  2. ハローワールド(perl -e)
    1. perl -le 'print "Hello World!"'
    2. perldoc
  3. 文法要素を書く(*.t)
    1. git init
    2. mkdir t
    3. vi t/sample1.t
    4. perl t/sample1.t
    5. git commit -a
    6. スカラ(数値,文字列), リスト, if, foreach, map, grep, コメント, Pod, 演算子
  4. スクリプト
    1. sub, package, リファレンス, ハッシュ
    2. 正規表現, スコープ
    3. use, bless
  5. Web とか発展形

みたいなことを考えている.

 *.t から書くのは,プログラミングの基礎を最近ちょっと見てたからです.

  1. 目的
  2. 入力,出力
  3. 場合分けの例
  4. 構造を持つ場合

バーチャルマシンなのは,Windows 対策ですかね.それと snapshot

なんかこう.3回くらいで終わって,同じのをやるというのもアリかも.

そうすると発展形は別の機会の方がわかりやすいかも.

プログラミングの基礎 (Computer Science Library)

プログラミングの基礎 (Computer Science Library)

初めてのPerl 第6版

初めてのPerl 第6版

続・初めてのPerl 改訂版

続・初めてのPerl 改訂版

初期設定

たまたま,Mac を初期設定をする機会があったので残しておいてみる.

  1. Xcode
  2. Homebrew
  3. perlbrew

Xcode は普通でいい.

Homebrewも,そのまま

$ brew install lv
$ brew install zsh
$ brew install emacs --HEAD --use-git-head --cocoa --srgb

Perlbrewもそのまま.

$ curl -kL http://install.perlbrew.pl | bash
$ source ~/.zshrc
$ rehash
$ perlbrew install perl-5.16.1
$ perlbrew lib create jwt
$ perlbrew switch perl-5.16.1@jwt
$ perlbrew list
$ perlbrew install-cpanm
$ cpanm Module::Install
$ cpanm Module::Install::AuthorTests
$ cpanm Module::Install::Repository

みたいな.