2016年1月15日金曜日

EC2にRuby on Rails環境を作る

いろいろな記事を参考にして、自分の場合はこれでできたメモ。
まっさらのEC2を立てる。

まずアップデート。
#sudo yum -y update
#sudo yum -y install git gcc-c++ glibc-headers openssl-devel readline libyaml-devel readline-devel zlib zlib-devel libffi-devel libxml2 libxslt libxml2-devel libxslt-devel sqlite-devel ruby-devel
railsをインストール
#gem install rails
Gemfileを開いて、therubyracerの行のコメントを外す
#vi Gemfile
また、適当なソースにrequireを追加
require 'v8'
そのうえで、
#gem install libv8#bundle install
バンドルができたら、
#rails s
動けばOK。

rbenvでrailsのバージョン管理

ruby-buildインストール
#git clone git://github.com/sstephenson/ruby-build.git
#cd ruby-build
#sudo ./install.sh

rbenvインストール
#git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
#echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
#echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
#source ~/.bashrc
#exec $SHELL -l
#rbenv install -l
で一覧がでたら成功かな
#rbenv install 2.2.3
#rbenv rehash
#rbenv global 2.2.3







2016年1月12日火曜日

makita掃除機CL100DWを買いました

オフィスで長いことエルゴラピードを使っていました。


2008年からなのでかなり長かったのですが、ついにバッテリーが寿命を向かえまして。
バッテリーを交換するにはハンディクリーナー部分を買い換える必要あり、とのことで、この機会に掃除機を変えることにしました。

候補はmakitaのクリーナー。
廉価でシンプル、使い勝手が良い、との噂でしたので。

makitaクリーナーは大きく4種類あるんですね。
パワー強パワー弱
サイクロン
CL140FDRFW

CL100DW
紙パック
CL182FDRFW

CL102DW

まずはサイクロンの方が集塵パワーが強いようなので、サイクロン。
そしてパワーの強弱で金額が8,000円くらい違うので、安い方のCL100DWでいいかなという結論で、CL100DWを購入しました。

使ってみた感想

エルゴラピードと比べると、かなり細身で軽い印象です。
スイッチの強弱はないですが、問題なしです。
集塵力も問題なし。最初に試したら、パックいっぱいに埃が取れました。

充電が、エルゴラピードのように本体ごと充電器に立てかけるというものではなく、充電器を外して充電する方式なのが、少し手間ですが、まぁ少しです。

ただ、本体の長さが女性用なのか少し短いので、少々腰に負担があるのが気になりますが、掃除の時間はさほど長くないので、よしと思います。




2015年11月14日土曜日

奴隷のしつけ方

久々にローマ関係の本を見つけたので購入。
その名も「奴隷のしつけ方」

”奴隷”というと、鞭で叩かれながら大きな石を運びピラミッドを作り、酷使されたあげる命を落とす、そんな過酷な使役を思い浮かべる方が多いと思います。
奴隷と一口に言っても、それは時代や文明によって大きく内容が異なります。
本書は、古代ローマ時代の奴隷とはどういうものだったのか、マルクスという架空の人物による指南書という体裁で紹介する本です。古代から遺っている蔵書の中に、断片的に触れられている奴隷についての記述をわかりやすくまとめられています。

内容は、主人の心得、奴隷の買い方、奴隷の活用法、奴隷の罰し方、奴隷の解放といった運用面についての説明と、奴隷と性、奴隷は劣った存在かなど風俗や社会通念にも踏み込んでいます。

古代ローマファンとして、通常のローマ本からはなかなか知り得ない奴隷の実情を知るのは楽しいことですが、本書から何かしら現代に活かせる内容を読み取るのもまた面白いかと思います。
昨今は”ブラック企業”という言葉が生まれ、従業員が自らを自虐的に”社畜”なんて呼ぶこともあります。従業員と奴隷はもちろん全然違いますが、”人にどう仕事をしてもらうか”という点では、共通する部分もあるのではないでしょうか。

古代ローマ時代の奴隷は、基本的には戦争で敗れた他国民です。他には借金のカタに自分を売った人、孤児、海賊に誘拐されて奴隷商人に売られた人たちがいます。
奴隷の仕事は、農園や鉱山の肉体労働だけでなく、給仕や清掃、雑務、帳簿の管理、理髪、教師、医師など多岐に渡ります。奴隷のスキルに合わせてなんでもしていました。現代でいえば、労働力であり、家電であり、パソコンでもありました。ローマ市民(自由民)との相違点は、主人の所有財産であり、法的な人格を持たなかったことです。

しかしながら当然奴隷も人間。
喜びもするし腹を立てたりもします。戦争で負けて奴隷にはなったものの、できれば人間として生きたいと望みます。
ですから、いかに主人の所有物といえども、モチベーションが無ければ全力でサボりますし、残酷に扱えば主人の寝首を掻くこともあります。

そういうわけで主人は、いかに奴隷をマネジメントし、お値段以上の価値を出させるか、苦慮していたわけです。

奴隷との関係は、購入のときから始まります。奴隷の相場価格は、今でいうと40万円くらいでしょうか。けっして安くはない買い物ですので、いかにサボらない、勤勉で忠誠心のある奴隷を見つけるか、そこから勝負なわけです。また農場か、給仕か、財務か、必要な仕事にあわせて奴隷を探さないといけません。

*奴隷の価格は1000セステルティウス。4人家族の主食2年分だそうです。ローマの長い時代では一概に換算できませんが、パンの価格から計算すると40万円くらいになるようです。

そして購入をしたら短期間で仕事を覚えさせ、使いこなさなくてはいけません。
飴と鞭をバランス良く使い分けます。甘すぎると増長し、厳しすぎると反抗します。
金銭であったり、ワインであったり、自由時間であったり、または責任ある立場を与え、向上心を呼び起こします。少々の失敗はきつく罰せず、とはいえ他の奴隷に示しがつく程度の罰則を課します。
怒るべき時には怒ります。必要であれば懲罰代行サービスを呼び、むち打ちなどさせます。自分で行わず第三者を挟むのは、自分への恨みを逸らす効果があります。ただし奴隷はあくまで財産ですので、罰しすぎて体調を崩させては仕事になりません。
そして最後は奴隷を解放することができます。奴隷解放にも税金がかかりますが、自分に尽くしてくれた奴隷への最大の労いとなります。解放した奴隷には、快く独り立ちのお膳立てをしてやり、新しい人生の門出を祝ってやります。

こうして良い働きには報い、悪い行いは公正に罰し、家族(ファミリア)という社会単位のバランスを絶妙に取るのです。

年老いて使えなくなった奴隷は捨てるのではなく、最後まで責任を持たなければなりません。無意味に何百人も奴隷を買って金持ちアピールをするのではなく、品とスキルのある奴隷を使いこなすのが主人の評価をあげます。リーダーは生まれつきリーダーなのではなく、”なる”ものです。そして主人と奴隷の違いも生まれつきではなく、運命のいたずらに過ぎないのです。
公正に寛大に振る舞い、過ちを許し、言葉をかわし、食事を共にする。
これが古代ローマ人のあるべき主人の姿です。

本書にはこうした奴隷をいかに使いこなすかということについて、例を交えて解説しています。
読み通してみると、「自分はこの本に出てるような、いけすかない主人になってしまっていないだろうか?」「自分はブラックなファミリア運営をしてしまっていないだろうか?」「自分の従業員が最大限のパフォーマンスをあげるようなマネジメントできてるだろうか?」「従業員の独立を、祝ってあげられてないな」なんていろいろ気付くかもしれません。

そんな古代ローマを紐解く「奴隷のしつけ方」。一度読んでみてはいかがでしょうか。最後に、従業員を奴隷扱いするのはダメ、絶対。






2015年10月29日木曜日

Heroku + Resque + Redis Cloud とても苦労した

何日か唸ってようやく動きました。

なんかresqueのバージョンだとによっても設定が違うみたいなので、1例としてみてください。
Herokuに、Redis Cloudを使っています。
最終的には、Procfileの赤字部分の書き方で詰まっていたようでした。

Gemfile
gem 'rails', '4.2.3'
gem "resque"
gem 'redis'

config/environments/production.rb
config.x.resque.redis = ENV["REDISCLOUD_URL"]

Procfile
resque: env TERM_CHILD=1 QUEUE=* bundle exec rake environment resque:work

config/initializers/redis.rb
if ENV["REDISCLOUD_URL"]
  $redis = Resque.redis = Redis.new(:url => ENV["REDISCLOUD_URL"])
end

config/initializers/load_resque.rb
require 'resque'
Resque.redis = Rails.configuration.x.resque.redis

キューに放り込むところ
Resque.enqueue(Test:: Updatetables, article.id)

実行ファイル
module Test
  class Updatetables
    @queue = :default
    def self.perform(id)
      article = Article.find_by(id: id)
      article.save
    end
  end
end

2015年9月8日火曜日

FacebookページにPHPから自動投稿するための準備メモ

メモですので簡単に流れだけ書きます。

1.まず、FacebookAppのIDとシークレットキーをメモします。

https://developers.facebook.com/apps/

2.コードを取得する

$redirect_uri={FacebookAppのURL};
echo "https://graph.facebook.com/oauth/authorize?client_id={FACEBOOK_APP_ID}&scope=publish_actions,manage_pages&redirect_uri=".urlencode($redirect_uri);

$code={上でとったコード};

3.自分のトークン発行

$token_url =  "https://graph.facebook.com/oauth/access_token?client_id={FACEBOOK_APP_ID}&redirect_uri=".urlencode($redirect_uri)."&client_secret={FACEBOOK_SECRET}&code=".($code);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $token_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$token = curl_exec($ch);
echo $token;

$access_token={自分のトークン};

4.Facebookページのトークン取得

echo "https://graph.facebook.com/me/accounts?access_token=".$access_token;
もしくは
https://developers.facebook.com/tools/explorer/
ここに自分のトークンをいれて、/me/accounts

で自分が管理しているFacebookページ全てのトークンを取得出来ました。

2015年4月2日木曜日

他人を連絡帳に登録するとき、変な名称を付けてはいけない件

Gmailでやりとりしているとたまにヘッダの名前がおかしい場合が有ります。
特にこれから新入社員としてメールのやり取りをすることが増える方には、最初にとんでもないミスをやらかさないよう、注意してほしいと思い、投稿します。

実は、自分が連絡帳に登録をするときに付けた名称が、相手に見えてしまう場合があるということをご存知でしょうか?
どういうことか、以下、例をお見せします。

登場人物は3人。全部サンプルです。
・私(tetsuya@infotest.jp)
・インフォ工業 将積哲哉さん(shojaku@example.com)
・インフォ工業 山田太郎さん(yamada@example.com)

まず、インフォ工業の将積さんから私へのメールです。
送信者は、インフォ工業将積さんが自分の連絡帳に登録した名称が表示されています。
インフォ工業(株) 将積哲哉」の部分です。


さて、その次にインフォ工業将積さんの同僚である、山田さんから私へのメールを御覧ください。

インフォ工業の山田さんが、将積さんを山田さんの連絡帳に登録している名称が表示されています。山田さんは同僚の将積さんを「薄らハゲ野郎」と登録しているようです。

_人人人人人人_
> 薄らハゲ野郎 <
 ̄Y^Y^Y^Y^Y^Y



表示するブラウザによって、このように表示される場合とされない場合がありますが、少なくとも自分が登録している他人の名前もデータとしては送信されます。

名刺交換をした方、同僚の方、上司の方などを、変な名前で登録しておくと、思わぬところでそれが見えてしまう場合があります。微笑ましい場合もありますが、ディスってしまった場合は取り返しがつきません。

「名刺交換したけど、覚えておくために特徴も書いておくか!」など、危険この上ありません。

是非、ご注意を。

2015年3月11日水曜日

ウェブサイト軽量化まとめ

メモです。

http://spritegen.website-performance.org/
背景画像を一枚にまとめるための補助ツール。
画像をまとめ、CSSのポジションを吐いてくれる。


http://www.punypng.com/
画像の質を落とさずに、軽量化してくれる。


imgではHTMLかCSSで必ずwidth、heightを指定。
そうすることで、レイアウトの計算時間を短縮できる。
画像のオリジナルサイズと違う値を指定すると、
当然処理時間がかかる。
ちなみにtableも横縦の大きさを指定しないと計算分重くなる。


ul#global-nav
こういうCSSの指定は丁寧だが、重くなる。
#global-nav
で十分。
入れ子もできる限り避けるほうが良い。
#global-navigation ul li a → .global-navigation


a以外のタグに:hoverを利用すると、IE7とIE8ではレンダリング速度が落ちてしまう。


HEADの中で、CSSは上に固め、JSは下に固める。
レンダリングの順序の理由からこれが望ましい。

FileETag Noneをhttpd.confに差し込む

JSファイルを軽量化する。
JSMin 、 YUI Compressor などのソフトを使う事で、コメントや改行を削除し、軽量化させることができる。

GNU zip (gzip) を利用すると、圧縮した状態でブラウザに渡すことができる。
LoadModule deflate_module modules/mod_deflate.so

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript


イラレやフォトショで画像を吐きだすとき、pngが一番ファイルサイズが大きい気がするけど、pngが最も推奨される最適化されたファイルだそうな。



CSSやJS、画像をキャッシュさせることができる。
LoadModule expires_module modules/mod_expires.so

ExpiresActive on
ExpiresByType image/png "access plus 1 days"
ExpiresByType image/jpeg "access plus 1 days"
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/x-icon "access plus 3 days"
ExpiresByType image/vnd.microsoft.icon "access plus 3 days"
ExpiresByType text/css "access plus 1 days"
ExpiresByType application/x-javascript "access plus 1 days"
ExpiresByType text/javascript "access plus 1 days"
ExpiresByType application/javascript "access plus 1 days"