*いしのなかにいる*

oops ! I am in rock !

【Mac】秘密鍵に設定したパスフレーズを解除する方法

すっごい今更なのですが、秘密鍵のパスフレーズを解除しました。

というのも、サーバにsshで接続するときやgitでpushするときなんかに毎回パスフレーズ聞かれるんですよね。
つどつど律儀に入力していたのですが、さすがに入力が面倒になってきました。
(毎回パスフレーズを入力していたという・・・ 非生産の極みですね。)

という訳で、秘密鍵に設定したパスフレーズを解除する方法です。

秘密鍵のパスフレーズを解除

やることは簡単で、下記のコマンドを打つだけです。

openssl rsa -in /Users/user/.ssh/hoge_rsa -out new_rsa

このコマンドを実行すると、hoge_rsa に設定したパスフレーズを聞かれます。

Enter pass phrase for /Users/user/.ssh/hoge_rsa:

ここに正しいパスフレーズを入力すると、パスフレーズなしの秘密鍵が生成されます。
(new_rsa がパスフレーズなしの秘密鍵)

これを使用すれば、今までパスフレーズを設定していた面倒な生活とおさらばできます!

ただし!パスフレーズを解除しちゃっているので取り扱いには要注意です。
間違っても公開されたフォルダに配置したりしないようにしましょう。

【Ruby】NameErrorが出てrakeタスクが実行できない!

rakeタスクの作成にチャレンジしてみました。

Capybaraでサイト情報を解析するクローラを作っていたので、 こいつを呼び出すように実装してみたのですが、どうにもうまくいかず。

やったこと

クローラのモジュールをrakeタスクから呼び出すだけ、だと思っていたのですが・・・
なかなかうまくいかなかったです。

コードは次のような感じに作りました。

rakeファイル

namespace :crawler do

  desc 'クローラだよ'
  task :anlyze, ['platform'] => :environment do |t, args|
     HogeCrawler.anlyze
  end
end

クローラ

module HogeCrawler

  class << self

    def anlyze
 

こんな感じに作ってみました。

さて、実行!

$ bundle exec rake crawler:anlyze

結果、エラー

rake aborted!
NameError: uninitialized constant HogeCrawler
/Users/user/anlyzer/lib/tasks/crawler.rake:5:in `block (2 levels) in <top (required)>'
Tasks: TOP => crawler:anlyze
(See full trace by running task with --trace)

となってしまって実行できない。 –traceつけてみてもわからずでした。

bundle exec rake crawler:anlyze --trace
** Invoke crawler:anlyze (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute crawler:anlyze
rake aborted!
NameError: uninitialized constant HogeCrawler
/Users/user/anlyzer/lib/tasks/crawler.rake:5:in `block (2 levels) in <top (required)>'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/lib/rake/task.rb:248:in `block in execute'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/lib/rake/task.rb:243:in `each'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/lib/rake/task.rb:243:in `execute'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/lib/rake/task.rb:187:in `block in invoke_with_call_chain'
/Users/user/.rbenv/versions/2.3.0/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/lib/rake/task.rb:180:in `invoke_with_call_chain'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/lib/rake/task.rb:173:in `invoke'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/lib/rake/application.rb:150:in `invoke_task'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/lib/rake/application.rb:106:in `block (2 levels) in top_level'
/Users/zuser/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/lib/rake/application.rb:106:in `each'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/lib/rake/application.rb:106:in `block in top_level'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/lib/rake/application.rb:115:in `run_with_threads'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/lib/rake/application.rb:100:in `top_level'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/lib/rake/application.rb:78:in `block in run'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/lib/rake/application.rb:176:in `standard_exception_handling'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/lib/rake/application.rb:75:in `run'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/gems/rake-11.1.2/bin/rake:33:in `<top (required)>'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/bin/rake:23:in `load'
/Users/user/anlyzer/vendor/bundle/ruby/2.3.0/bin/rake:23:in `<main>'
Tasks: TOP => crawler:anlyze

原因

結局のところエラーの通りでした。 命名規約に沿ってなかっただけ。

rakeで呼び出そうとしているモジュールとメソッドは合ってるんだけど、ファイル名が「hogehoge.rb」ってなってたせい。

うわぁ・・・

クローラのファイル名をモジュール名に合わせて『hoge_crawler.rb』としたら動くようになりましたとさ。 Rails、もっと勉強しないとなぁ。

参考リンク

rake コマンドで NameError: uninitialized constant エラー rake task だけで起きる NameError: uninitialized constant ModelName

【資格試験】HTML5プロフェッショナル(LEVEL2)に合格しました

「Web技術者、Webデザイナー、ITプロフェッショナルが取得したい資格No.1」

という触れ込みのHTML5プロフェッショナル認定試験

LEVEL2も合格してきました!

なんと合格点ギリギリ・・・

難しかったです。

使用した教材

  • 本(HTML5プロフェッショナル認定試験 レベル2 対策テキスト&問題集 (Mynavi Examination Library))

勉強期間

1ヶ月くらい

勉強方法

本読む 章末の練習問題解く 公式サイトに掲載されているサンプル問題を解く←結構大事です

受けてみての感想

ノンプログラマはもちろん、プログラマさんもきっと本を読んだだけで合格は厳しいです。

Create a new fiddle - JSFiddle

でチョロッと試せますので、プログラム経験のない方はこれを機にJavascriptを勉強してみてくださいね。 (合格点ギリギリの私が言えたことじゃありませんが)

出題範囲でいうと、Javascriptに関してはスコープとかちゃんと確認しておいたほうがいいです。

ごちゃっとしたプログラムが書いてあって、 「最終的にこの変数に何が入ってるか?」 みたいなことを問われます。

他については各セクションから満遍なく聞かれますね。 グラフィックスなんて普段使うことはないと思うんですけど、結構細かいこと聞かれました。

どこもちゃんと覚える必要ありますが、私が使用した教材のCapter4は必読です。 少ないページ数に重要キーワードがつまってます。(密度濃すぎ!)

でも試験の内容はプログラマにはとっつきやすい範囲だと思うので勉強は苦じゃないんじゃないかな。 普段HTML5を使っていない人には新しいことばかりなので、そこは興味を持てるかなと。

次に受ける試験

LPICを受けてみようと思います。

最後に

LEVEL2、私が購入した参考書は非常に良くまとまっていたので勉強しやすかったです。

とはいえ、GeoLocationとオフラインアプリケーションとマルチメディアは正答率0%でした。 合格で終わりにせず、積極的にHTML5の技術を使っていかなきゃなー。

(追記) 2017年3月1日からVer2.0に変わるらしいです。 変更点

より範囲が広くなるそうで、、更に大変になりますね。。

【資格試験】HTML5プロフェッショナル(LEVEL1)に合格しました

「Web技術者、Webデザイナー、ITプロフェッショナルが取得したい資格No.1」

という触れ込みのHTML5プロフェッショナル認定試験

受けよう受けようと思っていましたが、なかなかまとまった勉強時間が取れず、、
先日やっとこさLEVEL1に合格しました

使用した教材

  • 本(HTML5プロフェッショナル認定試験 レベル1 対策テキスト&問題集 (Mynavi Examination Library))

勉強期間

1ヶ月くらい

勉強方法

本読む(HTMLタグの話とか、CSSプロパティの話はまずは流し読みで)  ↓ 実際HTMLを書いてみる

受けてみての感想

本を読んだだけでは合格は難しいかも。

問題文にかかれているHTMLとCSSを読んで結果がどうなるか?みたいな問題が(結構)出るので
本だけの知識だとなかなかイメージしづらいと思います。

Create a new fiddle - JSFiddle

とかを利用して、実際にHTMLとCSSを書いてみるのが一番だと思います。

HTMLのタグについては、
「どれが新しいタグでしょう?」
みたいなものは出なかったです。

が、新しいタグのプロパティあたりについては結構細かく覚えておくといいですね。

次に受ける試験

HTML5プロフェッショナル(LEVEL2)

最後に

HTML5についての勉強ということで、HTMLのタグのこととかCSSのプロパティとかを勉強するわけですが、これがなかなか面白かったです。

普段仕事でHTMLとかを書いたりはしますけど、ちゃんと体系立てて勉強したことってなかったんですよね。

なので、

このタグはこういう意味だったのか!

とか

CSSのこんなプロパティがあったのね!!

みたいに色々発見があり、勉強するだけでも価値のある試験だったなー、と感じました。

【資格試験】CompTIA Security+認定資格に合格しました

資格試験、次はHTML5プロフェッショナルの試験を受けようと思っていたのですが
ちょいと事情があり、差し込みでCompTIA Security+を取得しました。

率直な感想として、Cloud+を取得した時に比べてだいぶ楽でしたね。
(IPAのセキュリティスペシャリストの勉強をしていたからかもしれませんが)

この試験もあまり情報がなくて、初めて受けるときにドキドキする試験だと思うので、私が勉強した方法をメモっておきます。

使用した教材

  • 本(Security+ テキスト SY0‐401対応 (実務で役立つIT資格CompTIAシリーズ))←全部読まなくてもいいかも
  • 問題集(Security+ 問題集 SY0‐401対応 (実務で役立つIT資格CompTIAシリーズ))←買わなくてもいいかも
  • TAC模試(リテイクバウチャー付き)←なるはやで受かることが目標なら必須

勉強期間

3週間くらい

勉強方法

基本的にCloud+と同じ勉強方法でいきましたが、そこまでしなくても良かったなと言う感じです。

  • 本全て読む
  • TACの模試受ける
  • 問題集を一通り
  • 本の内容を再確認
  • TAC模試で再確認

受けてみての感想

TACの模試から近い問題が結構でる。(前に受けたcloud系の試験に比べても多い感じ)

特に覚えておいたほうがいいのが、図を見てどんなセキュリティの手法を使うべきなのかの問題。
これはすべて暗記していったほうがいいです。

またCloud+と比べてしまいますが、問題文を読んで答えがパッとわかる問題が多いです。
つまり、考える問題ではなく知っているか知らないか、という問題ばかりなので、ぶっちゃけ暗記だけでなんとかなります。

次に受ける試験

こんどこそHTML5プロフェッショナル(LEVEL1)

最後に

受けるまでは相変わらずドキドキしたのですが、試験中は余裕を持って受けられました。

TACの模試が効きすぎるので、ちゃんと身につけたい人はTACの模試を使わずに勉強するといいです。
逆に言うと、合格することだけが目標であればTACの模試をやりまくればOK

どちらにしても、継続して勉強したりセキュリティ動向をチェックしたりしてないと忘れちゃいますけどね。
(私はすでに忘れ気味です。。)

まぁセキュリティなんて日進月歩なので、

「この資格持ってんだからセキュリティ詳しいだろ!」

なんてこと言われても困るわけですが、、

【Ruby】ランダムに実行したい処理の実装方法

こんちは

今回はタイトルの通り、rubyでランダム処理を実装する方法です。

乱数の取得方法

乱数を取得する方法は以下の4通り

  • rand(普通のrand)
  • Random.rand
  • Random#rand
  • Array.sample

どの方法でもランダムな値を取得可能だけど、1番のメソッドだけfloatが使えない(というかintとして判定される)

[1] pry(main)> rand 10 # 1~10の中で乱数を取得
=> 9
[2] pry(main)> rand 10..15 # 10~15の中で乱数を取得
=> 13
[3] pry(main)> Random.rand 10
=> 9
[4] pry(main)> Random.rand 10..15
=> 12
[5] pry(main)> Random.new.rand 10
=> 5
[6] pry(main)> Random.new.rand 10..15
=> 11
[7] pry(main)> [*1..10].sample
=> 9
[8] pry(main)> [*10..15].sample
=> 15
[1] pry(main)> rand 1.1
=> 0
[2] pry(main)> rand 1.2
=> 0
[3] pry(main)> rand 1.9
=> 0
[4] pry(main)> rand 4.1
=> 2
[5] pry(main)> Random.rand 1.1
=> 0.193044472967513
[6] pry(main)> Random.new.rand 1.1
=> 0.9249129201223988

これらのうち、どれかの方法を使用して分岐を組みます。

例)10分の1の確率で処理を実行する。

if rand(10) + 1 == 1
  do_something # 10分の1の確率で実行したい処理
end

最後に

こんな感じで乱数を取得して、一定の確率で行いたい処理を実装できます。

【Rails】ポート番号を指定してRailsサーバを起動する方法

こんにちは

開発環境でRailsのサーバを起動するときって、いつもこんなコマンド打ちますよね?

bundle exec rails s

今までこれで起動して困ることはなかったのですが、複数のサーバを同時にあげようとしたときに「どうすんだ?」って軽くはまったのでメモです。

複数のRailsサーバを起動するには

ローカルの開発環境で複数のRailsサーバを起動するときはポート番号を指定します。

冒頭で打ったコマンドに「-p」オプションをつけると指定可能になります。

$ bundle exec rails s -p 3001
=> Booting WEBrick
=> Rails 4.2.2 application starting in development on http://localhost:3001
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-04-30 06:47:48] INFO  WEBrick 1.3.1
[2016-04-30 06:47:48] INFO  ruby 2.3.0 (2015-12-25) [x86_64-darwin15]
[2016-04-30 06:47:48] INFO  WEBrick::HTTPServer#start: pid=38169 port=3001

これで、http://localhost:3001でサーバにアクセスできるようになります。

サーバ起動時によく使うオプション

私がサーバ起動時によく使うオプションはこんな感じです。

-p(--port=port):サーバを起動するときのポート番号を指定する

初期値:3000
使用例:ポート番号3001番でサーバを起動する

$ bundle exec rails s -p 3001

-b (--binding=ip):バインドするIPアドレスを指定する

使用例:他の端末からアクセスできるように指定

$ bundle exec rails s -b 0.0.0.0

-e (--environment=name):環境(test/development/production)を指定してサーバを起動する

初期値:development
使用例:production環境としてサーバを起動

$ bundle exec rails s -e production

そのほかのオプション

私はほとんど使わないのですが、他にはこんなオプションがあります。

オプション 説明 初期値
-c (--config=file) rackupファイルを指定
-d (--daemon) デーモンとしてサーバを起動
-u (--debugger) デバックモード
-P (--pid=pid) PIDファイルを指定 tmp/pids/server.pid
-h (--help) ヘルプを表示

最後に

複数プロジェクトを並行して開発しているときなんかに使うことがあるかもなので覚えておいて損はないオプションです。
いろんなオプションを覚えてどんどんRails力を上げていきましょう!