新さくらVPSへの引越し vol.1 初期設定
新さくらのVPSへの引越しメモ vol.1 初期設定
vol.1 目次
- ユーザ作成
- 接続設定
- ファイアウォール設定
- サービス設定
- パッケージ管理設定
始める前に
さくらのVPSに契約すると、まずはrootでログインしてWebコンソールから初期設定を行う必要がある。
接続設定でSSHの設定をしてからは、普段使っている端末からリモートログインして作業を行うことが可能。
新さくらのVPSへの引越のついでにGitLab+Unicorn+Nginxで最新バージョン管理環境構築
さくらのVPSのリニューアルが発表された。
メモリやHDD容量がかなり強化されていて、HerokuなどのPaaSや、さくらのクラウド・AmazonなどのIaaSに流れていった人もさくらのVPSに戻ってきそうな勢いらしい。
4/20まで乗換キャンペーンもやっているようなので早速新しいVPSに引越してみた。
せっかくなので、GitLab + Unicorn + Nginxで最新のバージョン管理環境を作ってみようかと。
GitLabとは、プライベートなGitHubを目指したOSSで、GitHubでホスティングされている。
GitLab - Self Hosted Git Management
GitHubの無料アカウントではパブリックなリポジトリしか持てないので、仲間内でこそこそ開発してる人とか、スタートアップでお金があまりない時期の人とか、みんなに見せるほどでもないものを管理したりするのにはGitLabがちょうどいい。
ただ!!GitLabは導入が難しく開発も盛んでドキュメントもあまりないので、はまりやすく敷居が高いとの噂。
以下、新さくらのVPSへの乗換とGitLabの導入がうまくいったので、メモしておく。
再インストールしてやってみてもできたので、乗換の人ならハマらずにそのままいけるはず。
初回起動からGitLab起動まで、目安は1時間〜1時間半です。引っ越す人はぜひ!!
環境
新さくらのVPS CentOS6.2(デフォルト)1GB
Problem 2
問題
フィボナッチ数列の項は直前の2項の和である。 最初の2項を 1, 2 とすれば、最初の10項は以下のようになる。
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
400万以下の項のうち、偶数項の総和を求めよ。
回答
loop.inject([0, 0, 1]) {|(sum, a, b), _| raise StopIteration if a > 4_000_000 [ sum + a.even? ? a : 0, b, a + b ] }[0]
def fibs( max ): a, b = 0, 1 while b <= max: yield b a, b = b, a + b sum([ x for x in fibs(4000000) if x % 2 == 0 ])
手続き型の解法+ジェネレータ、畳込み演算、リスト内包表記など使ってみた。
手続き型と関数型がごっちゃだけど、そこのバランス感覚を身につけたい。
Haskellは調べてみたけどかっこよすぎて別次元。。。
The Fibonacci sequence - Haskell Wiki
sum [x | x <- takeWhile (< 4000000) fibs, even x] where fibs = 1 : 2 : zipWith (+) fibs (tail fibs)
遅延評価学ばねば。Haskell学ぶとRubyやPythonの書き方も変わる気がする。
そしてRubyで無限ストリームほしい![0..]とか書きたい!
Rubyで遅延Enumerable作ってる方がいたので参考にさせて頂きます。
ディレクトリ構造を保ったまま欲しいファイルだけをコピーする方法
Problem 1
問題
10未満の自然数の中で3 または 5 の倍数の数は 3, 5, 6, 9 であり、 これらの合計は 23 である。
同様に、1,000 未満の 3 か 5 の倍数になっている数字の合計を求めよ。
回答
- Haskell ※ご指摘頂いたので修正しました。ありがとうございます!
sum [ x | x <- [1..999], rem x 3 == 0 || rem x 5 == 0 ]
(1..999).select { |x| x % 3 == 0 || x % 5 == 0 }.inject(&:+)
sum([ x for x in range(1000) if x % 5 == 0 or x % 3 == 0 ])
リストの内包表記と配列のsumを使えるHaskell, Pythonはほぼ同様に書ける。
Rubyにはリストの内包表記とsumがないので、injectを使った。
ActiveSupportにArray#sumがあるが、内部ではinjectを使って実装されているようだ。
- activesupport-3.1.3/lib/active_support/core_ext/enumerable.rb
def sum(identity = 0, &block) if block_given? map(&block).sum(identity) else inject { |sum, element| sum + element } || identity end end
Array#sumを使うとしたらこうなるか
- Ruby w/Array#sum
(1...1000).select { |x| x % 3 == 0 || x % 5 == 0 }.sum
個人的にはHaskellやPythonのリストの内包表記、sumの使い方はどうも処理が追いにくい。
がしがし書かれるとどこから読んでいいか迷いそう。
その点Rubyはリスト操作が左から順に処理を追えるので見やすい。慣れですかね。