がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

redmineインストール殴り書き

備忘録としてですら怪しいような殴り書きなので、適当に見て下さいませ。

rubyは、1.9系にすると楽」って話が。yumで普通に入れると1.8系でした。
もしかすると、下記がとても楽になる、かも、なので、一応念のため。

試行錯誤しながらかなり「雑に」やってるので、手順が色々と滅茶苦茶なのは気にせずにw


yum install mysql
yum install mysql-devel
yum install mysql-server
yum install nginx
yum install ruby


su - gallu
sudo yum install rdoc
wget http://production.cf.rubygems.org/rubygems/rubygems-2.2.2.tgz
tar zvxf rubygems-2.2.2.tgz
sudo ruby ./setup.rb


# rootに戻って
gem uninstall -v 2.2.2 rubygems-update
gem install -v 1.8.17 rubygems-update
update_rubygems
gem -v


yum install ruby-devel


# なんかバージョンが駄目ぽいのでソースからinstall
su - gallu
wget http://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.tar.gz
./configure
make
sudo make install


gem install rails -v 3.2.3


# 気づいたのでバージョン上げておく
gem install -v 1.8.29 rubygems-update
update_rubygems


# redmine用各種
gem install bundler
exit


# 以下、galluアカウント
cd
mkdir redmine
cd redmine
wget http://www.redmine.org/releases/redmine-2.5.1.tar.gz
tar zvxf redmine-2.5.1.tar.gz
cd redmine-2.5.1


#
sudo vi /etc/my.cnf
(default-character-set=utf8)
sudo /etc/rc.d/init.d/mysqld start


SQL発行
mysql -u root -p

create database redmine default character set utf8;
grant ALTER, CREATE, DELETE, DROP, INDEX, INSERT, LOCK TABLES, SELECT, UPDATE on redmine.* to redmine@localhost identified by 'ぱすわぁど';
flush privileges ;


# redmineのinstallカレントディレクトリにて
cp -p config/database.yml.example config/database.yml
vi config/database.yml
# 3箇所ほど接続情報があるぽいので、書き換える


sudo gem install mysql2
bundle install --without development test postgresql rmagick


# ----
sudo RAILS_ENV=production bundle exec rake db:migrate

めも

rake aborted!
cannot load such file -- bundler/setup

って出てきた時、コマンドにsudo付けてなかったので。
なんか、rootがいるのかもしれない…よぉわからん。
めも終わり


sudo RAILS_ENV=production bundle exec rake redmine:load_default_data
sudo bundle exec rake generate_secret_token


# テスト用。http://IPアドレス:3000/ でアクセス確認
sudo ruby script/rails server webrick -e production


#----------------------------
sudo gem install unicorn

vi config/unicorn.rb
# あちこち未検証。あとで修正する可能性

worker_processes 2
#working_directory /home/www/rails/charag

listen File.expand_path("tmp/unicorn.sock", ENV['RAILS_ROOT'])
pid File.expand_path("tmp/unicorn.pid", ENV['RAILS_ROOT'])

timeout 60

preload_app true # ダウンタイムをなくす

stdout_path File.expand_path("log/unicorn.stdout.log", ENV['RAILS_ROOT'])
stderr_path File.expand_path("log/unicorn.stderr.log", ENV['RAILS_ROOT'])

GC.respond_to?(:copy_on_write_friendly=) and GC.copy_on_write_friendly = true

before_fork do |server, worker|
defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!

old_pid = "#{server.config[:pid]}.oldbin"
if old_pid != server.pid
begin
sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
Process.kill(sig, File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
end
end

sleep 1
end

after_fork do |server, worker|
defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
end


vi Gemfile

# add
gem "unicorn"


# 起動&テスト
sudo bundle exec unicorn_rails -c config/unicorn.rb -E production -D -p 5001


#
sudo vi /etc/nginx/nginx.conf

http {
+ upstream redmine{
+ server 127.0.0.1:5001;
+ }

sudo vi /etc/nginx/conf.d/virtual.conf

server {
listen 80;
server_name redmine.m-fr.net;

access_log /var/log/nginx/redmine.access.log;
error_log /var/log/nginx/redmine.error.log;

location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }

### Reverse Proxy for Redmine on Unicorn
location / {
rewrite ^/(.*)$ /$1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:5001;
}
}

# サーバ起動
sudo /etc/rc.d/init.d/nginx start


# mail関連の設定を変更:内容は公式サイトあたりを確認して
cp config/configuration.yml.example config/configuration.yml
vi config/configuration.yml


感想:
うん…バージョン依存がしんどい orz
Rubyistな人達が「バージョン管理は自動でtoolで」って言っている気持ちがよくわかる…けど、それって「まず"シンプルに疎結合で作る"っていう第一歩でしくじってる」ような気もするんだけどどうなんだろう?
「新しいのだと困らない」って話もあるので、カイゼンされていると信じたい…
あと、redmine、最新に対応していただけるとありがたいんだが。
ruby2.1系とかで動くのかしらん?

RubyGemsの2.2.2入れた時、railsが上手いこと入らないような感じがしたのだけど…なんかあるのかしらん?
現状さほど興味ないので、ざっくりと疑問だけ書いてみる B-p


この辺が落ち着いて「スムーズに動く」ようになってから試すかなぁ…現状だと、なんか「環境に対するTips」が結構なコストかけてしまいそうで、若干、躊躇(苦笑

ホームベーカリーで全粉粒パン 続編

分量とかは http://d.hatena.ne.jp/gallu/20140605/p2 でチェックよろ。


蜂蜜をいれると、びっくりするほどフワフワになった…それが、全粉粒のほうの粉(の1/3ほど)を、「石臼挽 春よ恋100% 全粉粒」にしたのかが、微妙に不明ではあるんだけど。
ちなみに「とみざわからの贈り物 ホームベーカリー専用粉」を買ったので、近々、お粉のグレードがジャンプアップいたします(笑


あぁ。
焼き色はやっぱり「薄い」がうち的にはよい感じらしい。


きっちりジャンプアップしたら、もう一度追加報告の予定。

ホームベーカリーで全粉粒パン

ホームベーカリーを買ったので、実験。
sirocaってところの、SHB-622って機種。


前提として…
ドライイーストは粉の1.5〜3%
塩は粉の2%が限度
(有塩バターの塩分は重量の1.6%前後っぽい)
水の量は粉の60%〜70%
砂糖は、食パンの場合は粉の4〜6%、菓子パンの場合は5〜10%が適当
油脂は粉の5%
乳製品は牛乳を使う場合は*仕込み水をかねるので粉の70%〜80%
(スキムミルクは、水9に対してスキムミルク1、で牛乳っぽくなるらしい)


イーストと砂糖をそばに。
乳製品と塩は遠くに


らしい。
この辺を前提に、以下で作成。
水200ml
強力粉130g
全粉粒130g
ドライイースト3g
砂糖17g
バター17gくらい(有塩)
塩4g
スキムミルク18g


水は氷水で冷やしておいて。
水に半分くらいの砂糖を溶かしてから振るった粉。
中央にドライイースト、端っこに残り全部。


焼き色は「ふつう」じゃなくて「うすい」でよいかも。
若干ぱさつく感があるので…薄く切って焼いてクリスピーにいただくか、次回はとりあえず「蜂蜜 15g」を試してみる予定。

杏仁豆腐

水200ml
粉寒天 4g
砂糖 50g
牛乳 400ml
杏仁霜 大さじ2


粉寒天、水、杏仁霜、砂糖を鍋に入れて混ぜる
火にかけて、煮え玉が出てから2〜3分。とろみがついて半透明になるまで
牛乳を加える
  100mlは少量づつ入れて木べらでかき混ぜてしっかりと暖めて
  100ml入れて木べらでかき混ぜて
  200ml入れる
容器に入れて適宜冷やす


ちと堅いのと、なめらかさが足りない。
砂糖を10g、牛乳を100ml増やして。
後は、容器に入れる前に茶こしで漉すと良さそうだな。


次回、レシピの修正を。

Webアプリケーションセキュリティ

現在、Webアプリケーションセキュリティといったら、この本を語らずして何がある? という感じの一冊、でございます。


徳丸本…もとい
体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践


Webアプリ書くなら読め。読まぬならWebアプリ書くな。
そーゆーレベルの書籍です。
ちなみに、amazonの書評で星1つがあって、なんでも

誰かのレビューに書いてあるのかもしれませんが、iPhoneの画面サイズに最適化されていないので、iPhoneで読むのは無理ですTT
iPadで読むしかないですね・・・。


でもkindleで売るなら最低限iPhoneで読めるようにしてほしかったです。
自分の確認ミスなので仕方ないですが・・・。

あらら(苦笑
これは確かに、つらい。


あと。書籍ではないのですが…でもまぁPDFだからほぼ書籍か。
https://www.ipa.go.jp/security/vuln/websecurity.html
こちらにあります
・安全なウェブサイトの作り方
・安全なSQLの呼び出し方
・ウェブ健康診断仕様
はチェックしておきましょう。
ビジネス的観点も含めて、めっさお勧めです。



もう一冊、ちょいと毛色の違う辺りを。


欺術(ぎじゅつ)―史上最強のハッカーが明かす禁断の技法

欺術(ぎじゅつ)―史上最強のハッカーが明かす禁断の技法

欺術(ぎじゅつ)―史上最強のハッカーが明かす禁断の技法


非常に面白いので、一読をお勧めします。

DBの基本

インフラ、プログラムと来たので、お次はDBの基本。


達人に学ぶ SQL徹底指南書

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)


まぁ…
リレーショナル・データベースの世界
http://www.geocities.jp/mickindex/database/idx_database.html
を読めばよいという気もしなくもないのですが。書籍の紹介でもありますし、一応(苦笑


もう一冊は、こちら。
データベース実践講義 ―エンジニアのためのリレーショナル理論


…あ、amazonで見る限り、多分、絶版だ orz
難易度高めで歯ごたえありますが、「きちんとした理論背景」を学習するなら、お勧めの一冊ではあります。


DBは色々と大切で、同じくらい「動けばいいや」で雑に扱われがちなので。
このタイミングで、是非、一度「真っ当」に学習してみましょう。

技能を伸ばす理由

元ネタはこちら…ってのが最近パターン化してるなぁ。


「一人前になるには1万時間必要」は誤りだった! たった20時間で新たなスキルを身につけられる4つのコツ
http://logmi.jp/12933


とりあえず記事本文に軽く突っ込みを入れた後で本題を。
まず「4つのコツ」のあたり。

スキルを小さく分解して練習する

まぁ大事。問題があるとすると「そも、分解をする為にある程度のスキルなり知識なりが必要だよねぇ」ってところかしらん?

まずは、間違いを自己修正できるレベルを目指す

極めてYesなんだけど、これって20時間で到達可能なのかしらん?

誘惑を排除する

集中する瞬間は大事。「誘惑に負けない強い心」とかいうよりは「誘惑の原因を一通り排除する」ほうが早いしねw

「ヘタクソな自分」からの脱却

「そして実際に結果を出すまで練習を続けることが出来る」うんまぁこの領域は大事。
でもこれって20時間で到達以下略。


まぁ「20時間ってのがどうなのか」がよくわからんのですが、基本的には割と同意かなぁ、と。
あと、それ以外の部分。

博士は、これらの分野でトップに達するために、どのくらいの時間がかかるのかを調べました。

以前の、おいちゃんの考察。
http://d.hatena.ne.jp/gallu/20121115/p1
なので

博士は、これらの分野でトップに達するために、どのくらいの時間がかかるのかを調べました。

には割と異論があるかなぁ。まぁ

「1万時間の法則」は、プロレベルの成績の調査に由来するものです。フロリダ州立大学のK.アンダース・エリクソン博士という方がいます。彼が1万時間の法則の考案者です。この法則は、プロのスポーツ選手、世界的な音楽家、チェスの名人など、超競争の激しい分野の、超成績の良い人ばかりを調査して導かれたものです。

という話なので、調査対象、ちょいと偏ってると思うんだけどね。
間違いなく「1万時間椅子を暖めても」この領域には達しないので。

学習初期の段階では上達が非常に速い。それがある時点で「プラトー(高原状態)」に至って、その後だんだん上達するのが困難になり、時間がかかるようになります。

うんまぁこれは非常によくわかる。

それで私の問いは以下のようなものです。(学習曲線の図を指さして)私は上達したいわけですよね。何か新しいことを始めて、「とても下手くそで、それを自分でも自覚している」状態から、「まあまあ良い」レベルまで、それも出来るだけ最短期間で到達するためには、どのぐらい時間がかかるでしょうか? 私の調査によると、20時間です。

どっかでは40時間とか60時間とかって見たような気もするんだけど。
まぁでも、そんなもんなんだろうなぁ、と。


なので。

でも、何でもいいから20時間練習してみてください。何を学習したいですか? 言語ですか? 料理でしょうか? 絵を描くことでしょうか? 何に興味がありますか? あなたをときめかせる事はなんですか? それをやってみてください。たったの20時間しかかかりません。楽しみましょう。

これはとても素晴らしいと思う。


んと…この辺があわせて想起されるんだけど。
広がりと掘り下げの「T字」 ( http://learningpatterns.sfc.keio.ac.jp/LearningPattern_No20.html )
この「広く、浅く」の部分を、20時間をあちこちで食い散らかして広げると、とても幅広い学びになると思う。


んでまぁ。
この手のを勘違いして稀に「20時間学習したからボクはもうこの領域が"わかった!"」とか勘違いするのが稀にいるんだけど、それについてはとりあえず滅びてください、としか。
なんていうジャブを軽く入れておいて。


さて…ここからが本題。
長いなぁw


学習曲線ですが、時間を費やせば費やすほど、上達の速度は鈍化します。
だとすると「7〜8割くらい出来たらあとはそれ以上上達する意味ないんじゃね?」的な話が時々耳に入ってきて。
色々考えていたのですが、最近「あぁGURPSの技能のシステムが一番近いなぁ」とか思ったので。
http://d.hatena.ne.jp/gallu/20120122/p1 でもGURPSの話をしているし。
万能だなぁGURPS。さすが汎用システムw


おいといて。


GURPSにおける判定は、3D6(六面サイコロを3つ)振って、技能以下が出れば成功、ってのが基本です。
且つ、どんなにスキルが高くても17と18は失敗なので。
つまり、スキルが16の人も、そこから更にCP(≒学習時間)ぶちこんで17とか18とかにしても、成功率は一緒です。


じゃぁスキル上げなくていいじゃん?
ん…そうですねぇ「このままなら」。
ちょいと、スキルレベルと確率を眺めてみましょう。


とりあえず一番わかりやすいんで戦闘で。
技能レベルが12、16、18、20、25、とします。
12で「まぁそんなもんじゃない?」くらいから、16以上は一通り「達人」で片付けられるような感じです。
ちなみに確率的には、12レベルで74%程度の成功率、16レベル以上だと一律で98%ほどの成功率となります。
ちなみに11レベルだと62%程度、10レベルで50%の成功率となるので、10、11、12における「1レベル差」は、結構分かりやすく見て取れます。


さて。
普通に戦闘していても少々ラチがあかないので、少々、部位など狙うという「難易度の高い」行動を考えてみます。
とりあえず腕狙って武器が使えなくなってもらいたいなぁ、と。
GURPSによると、腕狙いは「技能-2での判定」になります。
12レベルの人は10レベル扱いになり、74%の成功率から一気に50%まで急降下。
16レベルの人は14レベル扱いになるので、98%だった成功率が90%…微妙。
18レベル以上の人は、相変わらず98%の成功率です。
ちなみに10レベルの人は8レベル扱いになるので26%の成功率…そろそろギャンブルの世界です。


もうちょっと難易度を高めに「首」とか狙ってみましょう。5のペナルティが発生します。
12レベルの人が7レベル扱い。成功確率16%ちょい…やめておいた方が賢明です。
16レベルが11レベル扱い。98%から62%への確率低下は結構深刻です。
18レベルが13レベル扱いで98%から84%弱…まぁ許容範囲?
ちなみに25レベルの人は20レベル扱いで、相変わらず98%を死守なさってます。


相手が「ガッチガチに色々着込んでいる」と。いっそ面倒なんで「目」を狙ってみたくなります。突き系の武器のみとなりますが「鎧による防御無効の上でダメージがしゃれになんない(致傷修正が4倍)」ので。
頑張れるモンなら頑張ってみたいのですがペナルティが9。…はてさて。
レベル12の人はレベル3扱い。3と4は常に成功なのですが、とはいえ成功率は2%弱。ナニもなければ74%だった成功率は影も形もありません。
レベル16で自信満々に98%だった人も成功率は16%程度にまで落ち込みます。…無理無理。
レベル18でも37%ちょい。半分切るとつらいよねぇ。
レベル20でようやっと62%ちょい。ちなみにレベル25の人はこの期に及んでなお98%の確率を死守しています。


16レベル以上は「ひとくくりに達人」とか呼ばれるのですが、難易度が上がる(ペナルティが派手になる)と、ここまで差異が出てきます。
多分。成長曲線が鈍化してもなお「学習し、学び続け、修行し続ける意味」って、この辺なんじゃないかなぁ、と思うのですよ。


普通に「平坦な道のり」のお仕事であれば、レベル12とかくらいあれば大体たりるし、16あれば神扱いだと思うのです。
でも、そんな「平坦でなんの問題も無いお仕事」ばかり、かと問われると「どうなの?」とか思うわけで。
で、問題が発生したときに。難易度が上がるととたんにがっつりと「成功確率」が落ちるので。そこでなお「戦えますか?」ってのが、多分、ある程度を越える領域における「学び」なんじゃなかろうか? と思うわけなのですよ。


だから。
なんの問題も無いところで「良い感じで出来てます」ってのは、正直、あんまり当てにならない部分があって(もちろん、何の問題も無いところ「ですら」出来てない、ってのは論外なのですが)。
「相応にハードなトラブル」があった時に、どれくらいそれに対して「対応できるか?」ってのが、技能レベルを高くする意味なんじゃないか? って思うです。


とりあえず「どれくらいまでデバッグできるか?」とかね。


そんな事を色々と考えていたのをまとめるのにちょうど良い機会だったので、memoり。