*いしのなかにいる*

oops ! I am in rock !

S3バケットにアップロードしたファイルを一括ダウンロードする方法

f:id:malor:20171004094925p:plain:w600

S3に置いてあるファイルを一括でタウンロードしたい

既存の Wordpress サイトを Local by Flywheel に移行するため、S3に上げたファイルを一括ダウンロードする必要が出てきたのですが、、

S3のファイルってAWSコンソールからだと一つずつしかダウンロードできないのですね。。

リソースが少ない場合はそれで問題ないのですが、私は画像ファイルやらなんやらをたくさん置いていたので大問題。

結論、AWS-CLIを使えば可能!

google先生に聞いた結果、AWS-CLI(AWS Command Line Interface )というものを使えばできる!ということがわかりました。

AWS-CLIってなんじゃい!という方はこちらをご参照ください。

やり方がわかってしまえばあとは簡単。

$ aws s3 cp s3://S3バケット名/ ダウンロード先パス --recursive

はい、コマンド一発!

一応コマンドの補足をしておきますと、

  • aws s3: S3を操作するAWS-CLI のコマンド名
  • cp: コピーして持ってくるということ(S3のファイルはそのまんま)他にmv, rm, ls などがある
  • S3バケット名: 名前の通りS3のバケット名
  • ダウンロード先パス: ローカルの保存先(例: ~/Downloads)
  • --recursive: バケット内のフォルダを再帰的に辿ってくれる。要はバケットの中身全部持ってくるということ

感想

AWS-CLIはすごい便利!
どんどんコマンドを覚えていこうと思いました。

たったの3ステップでローカルWordPress環境が構築できる Local by Flywheel が便利すぎる

f:id:malor:20170928045328j:plain

Webサイトを構築するときにWordPressを利用している人は多いと思います。

でも少しデザインを変えたいとか、新しいテーマを試してみたい、という場合に運用しているサイトを直接いじるのは勇気がいりますよね。

そんな時は自由に試せるWordPress環境を作ってしまいましょう。
新しいプラグインを試すのも、サイトをカスタマイズするのも全然平気!誰にも迷惑をかけません。

ただ、わざわざちょっとしたカスタマイズを試すために1つサイトを作るのは面倒なんですよね。

なので簡単に自分のPC上に WordPress 環境を作成できる Local by Flywheel を試してみました。

このアプリ、サイト構築の手間を全部すっ飛ばしてわずか3ステップで環境構築ができてしまう優れものです。

実際に使ってみたところあまりに簡単にサイトを構築できてしまったので、インストールからセットアップまでの手順をご紹介します。

ダウンロード〜アプリ登録

まず手始めにFlywheelをアプリを登録します。 以下のサイトからダウンロードできます。

local.getflywheel.com

ダウンロード

サイト右上の DOWNLOAD ボタンからダウンロードします。

f:id:malor:20170927170923p:plain

ボタンをクリックすると、名前とかメアドを聞かれます。
ここはメールアドレスだけ入力すればOKです。

f:id:malor:20170927170902p:plain

ダウンロードサイズは500MBくらいあります。結構時間がかかるのでゆっくり待ちましょう。
私の環境(Mac)の場合、サイズは466MBで5〜6分ほどかかりました。

あっという間にローカルWordPress環境が作れてしまうFlywheelですが、ダウンロードやバージョンアップにはかなり時間がかかります。

唯一イマイチなところです。

アプリケーションを登録

f:id:malor:20170927112425p:plain

ダウンロードしてきたファイル(local-by-flywheel-x-x-x-mac.zip)を解凍すると 「Local by Flywheel.app」 というファイルが出てくるのでそのままアプリケーションに移動させます。

Local br Flywheel のインストール 〜 WordPressサイトの構築

インストール

Local by Flywheel.appを起動すると、初回起動時はインストール画面が表示されます。

画面下部の LET'S GO! ボタンを押すとインストールがスタート。

f:id:malor:20170927170919p:plain

VirtualBoxがインストールされていない場合は合わせて自動でインストールしてくれます。
この辺り、自分で設定していたりすると意味不明なエラーが出てハマったりするので助かります。というかすっごい楽!

WordPressサイトのセットアップ

インストールが完了したらあとはサイトのセットアップだけです。

画面真ん中の CREATE A NEW SITE をクリック

f:id:malor:20170927170853p:plain

STEP 1 サイト名を入力

What's your site's name? と聞かれるのでサイト名を入力します。
ここに入力したサイト名 + .dev がデフォルトのドメイン名になります。

f:id:malor:20170927170912p:plain

サイト名にハイフンを含めた場合、ドメイン名からは省かれるようです。

ADVANCED OPTIONS を指定するとローカル環境のドメイン名やサイトの格納先パスを細かく設定できます。
必要に応じて設定してください。

f:id:malor:20170927170931p:plain

STEP 2 環境を選択

ここでは

  • PHP のバージョン
  • Web Server
  • MySQLのバージョン

が指定できます。

特にこだわりがなければ Preferred で OK です。
こちらも必要に応じて設定を変更しましょう。

f:id:malor:20170927170906p:plain

STEP 3 環境を選択

最後にWordPressのログインに使用するユーザ名とパスワード、サイトのメールアドレスをしたら完了です。

ADD SITE ボタンを押すと サイトの構築が開始します。
(だいたい30秒〜1分くらいで完了)

f:id:malor:20170927170928p:plain

サイトの確認

構築が完了すると、出来上がったサイトの設定内容が表示されます。

f:id:malor:20170927170934p:plain

右上の VIEW SITE ボタンをクリックすると、出来立てホヤホヤのサイトが確認できます。

f:id:malor:20170928043814p:plain

もう一つの ADMIN ボタンからは サイトのダッシュボードにアクセスできます。
残念ながら初期状態は英語です。

f:id:malor:20170928043820p:plain

まとめ

以上の手順でローカル環境にWordPress環境が構築できちゃいます。

言語を日本語に変更しなければならないのはちょっと面倒ですが、インストールが完了していればローカルサイトの構築がものの2、3分でできてしまいます。

驚くべきスピード!

実際にローカルサイトをパブリックに公開するには一手間が必要ですけど、「ちょこっと試してみたい!」とか「サッとすばやく WordPress サイトを構築したい」というときに非常に役立ちます。

アフィリサイトを量産するのにも使えそうですね!

WordPressサイトの構築は最初は敷居が高いイメージがありますが、このアプリを使えば全然怖くないのでぜひぜひお試しあれ!

f:id:malor:20171003154636j:plain

【Ruby】配列内の文字列を数値に一括変換する

カンマ区切りの数字の文字列を一気に数値に変換したいときってありませんか?

たとえばこんなやつです。

“1,2,3…”

これ、何も考えずにカンマで分割すると、文字列の配列になっちゃうんですよね。

こんな感じに

> "1,2,3".split(",")
=> ["1", "2", "3"]

ActiveRecordの検索に使う分には問題ないのですが、数値として使いたいときとかにちょいちょい不便。

なので、配列内の文字列を数値に一括置換する方法を調べてみました。

map(&:to_i)を呼び出して一括変換

> "1,2,3".split(",").map(&:to_i)
=> [1, 2, 3]

これだけです!

ちなみにmapは新しい配列を作って返すだけなので、元のリストを書き換えちゃっていい場合はmap!を使いましょう。

map, map! (Array) - Rubyリファレンス - AmiWiki

mapメソッドは、要素の数だけ繰り返しブロックを実行し、ブロックの戻り値を集めた配列を作成して返します

とのことなので、結局やっていることは配列内の各要素のto_iをしているだけなんだろうけど、 メソッドを呼ぶだけで一発で変換できるのは気持ちいいですね!

リストに文字列が含まれている場合は?

ちなみに配列の中に文字列が入っていた場合は 0 に変換されるようです。
(これはto_iの動作ですね)

> ["1", "2", "hoge"].map(&:to_i)
=> [1, 2, 0]

以上!

github のアカウントが「Your account has been flagged.」になってしまった

ある日、githubを開いたらこんなメッセージが表示されていました。

f:id:malor:20170605145415p:plain

何かの設定エラーか?

特に何かしたつもりもなかったので、ポリシーでも変わったのかな〜と思っていました。 (赤いメッセージなのがチョット怖いですが)

英語力はまるでないので、google先生で翻訳。

Your account has been flagged.
Because of that, your profile is hidden from the public. If you believe this is a mistake, contact support to have your account status reviewed.
(訳:あなたのアカウントにはフラグが立てられています。
そのため、あなたのプロフィールは公開されていません。これが間違いだと思われる場合は、サポートに連絡してアカウントステータスを確認してください。)

「フラグが立てられています」と言われてもなんのことやらさっぱりですね。

githubで何かを公開している訳でもないので放っておいても問題なさそうですが、実はウイルスとかが原因で他の方に迷惑をかけていたりしたら嫌なのでサポートに連絡してみることにしました。

サポートに連絡してみた

送った文章はこんな感じです。 とはいっても自分で英語の文は作れないので、全部google翻訳で作ってもらいました。

To the github support team

"Your account has been flagged."

When I logged into github I got a message like this because I got an email.

Did I have used something wrong?

Since I do not remember especially, if it does not seem to be a problem please cancel the flag.

内容としては、 「悪い子としたつもりはないんだけど、こんなメッセージ出ちゃった。問題ないなら直して!」 って感じで書いています。

コンタクトページに記入して送信!

f:id:malor:20170605145502p:plain

すぐに返信が来た

コンタクトを送信してから待つこと1時間半ほど。 すぐにサポートチーム?のジミーから返信がありました。

Hi there,

Sorry about that! Sometimes our spam-detecting robots get a little carried away. I've reinstated your profile and you're good to go. You shouldn't see that message anymore.

Have an awesome day!
Jimmy


訳:
こんにちは、

それについて申し訳ありません!場合によっては、迷惑メールを検出するロボットが少し迷惑をかけることもあります。私はあなたのプロフィールを元に戻しました。あなたは元気です。もうメッセージは表示されません。

すばらしい一日を!
ジミー

詳しいことはわかりませんが、何やら迷惑メールを検出するボットの誤動作だったようです。

ジミーがプロフィールをもとに戻してくれたそうで、すぐに元気(?)になりました!

というわけで解決

ググッてみたら同じことになっている先人たちがいたようです。

a-habakiri.hateblo.jp

みんな身に覚えがない様で、なんか変な操作をしたために「フラグが立った」のではなく、迷惑メール検出ボットの抽選に通った感じなのかな?

拙い英文でも即座に解除してくれるので、もしフラグが立ってしまったらサポートチームに連絡することをおすすめします。

エラーっぽいメッセージが出っぱなしというのは気持ち悪いですからね!

MySQLのデータベースの名前を変更する

先日Railsでアプリ作成していて、ふと名称を変更したくなったのでやり方を調べてみました。 というのも、ちょいとアプリの名前を変更したくなったんです。そしたら合わせてフォルダ名とかも変えたくなって…

データベース名の変更がしたい

結論から言うとコマンド1発でポンッという感じにはできなそうです。
(個人的には rename database みたいなコマンドで変更できると嬉しかったのですが。)

なので、先に新しい(変更後)の名前のデータベースを用意して、そこに古い(変更前)のデータベースのデータを移し替えてやる必要があります。 めんどくさい。。。

実際にやった手順は以下の通り。

1.新しいデータベースの作成

まずMySQLにログインして新しいデータベースを作ります。

# MySQLにログイン
$ mysql -u ユーザ名 -p
Enter password:

# 新しいデータベースを作成
mysql> create database 新しいデータベース名 character set utf8;

# MySQLからログアウト
mysql> exit

2.古いデータベースからデータをエクスポート

次にmysqldumpコマンドを使って旧データベースに保存されているデータを抜き出します。

# mysqldumpで保存されているデータをエクスポート
$ mysqldump -u ユーザ名 -p 古いデータベース名 > databse_dump.sql
Enter password:

3.新しいデータベースにデータをインポート

最後に新しいデータベースに2で抜き出したデータを取り込みます。

# 新しいデータベースへデータを取り込む
$ mysql -u ユーザ名 -p データベース名 < 新しいデータベース名 < database_dump.sql
Enter password:

以上、3ステップで完了です。

面倒くさいけど、思ったよりか楽に終わりました。

おまけ

データベース名にハイフンを含める方法

普通にやるとデータベース名にハイフンを含めることができません

mysql> create database ハイフン付きの名前 character set utf8;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-a character set utf8' at line 1

で、どうやるかというと

  • バッククォートでDB名を囲む
mysql> create database `ハイフン付きの名前` character set utf8;
Query OK, 1 row affected (0.01 sec)

これでハイフン付きの名称をつけられました

【Mac】ssh-agentを使ってパスフレーズの入力を省略する

sshやらgitへのpushやらで毎回パスフレーズを入力するのが嫌で過去に

blog.malor.net

こんな記事を書きましたが、セキュリティ上あまり良くないようです。
(パスフレーズを解除するので当然といえば当然)

じゃあどうすんだ!と知人に聞いたところ、
「ssh-agent」なるものを使えばパスフレーズの入力は不要!と聞いたので、早速 ssh-agent を設定しました。

ちなみに ssh-agent というのは

SSHサーバに接続するときに秘密鍵に設定されているパスフレーズの入力を代わりにやってくれるアプリケーションとのこと。
コチラのサイトさんで詳しく説明されていました。)

面倒なパスフレーズの入力を代行してくれるだなんて、なんて素晴らしツール!

鍵の登録

さて、そんなわけで便利な ssh-agent さんですが、しっかり働いてもらうには秘密鍵を登録してあげなくてはいけません。

鍵の登録には次のコマンドを使います。 「~/.ssh/id_rsa」の部分に秘密鍵のパスを指定してください。

$ ssh-add -K ~/.ssh/id_rsa # 秘密鍵のパス
Enter passphrase for /Users/user/.ssh/id_rsa:

-Kオプションを付けないとコンソールを開くたびに再設定が必要になるので注意!

鍵を登録したらちゃんと登録されたか確認しておきましょう

登録した鍵の確認

$ ssh-add -l
2048 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /Users/user/.ssh/id_rsa (RSA)

登録した鍵のパスが表示されていればオッケーです。

これでセキュリティレベルを落とすことなく、コトあるごとにパスフレーズを打つという煩わしさもなくなりました!
VIVA! ssh-agent!!

【Mac】秘密鍵にパスフレーズを設定(変更)する方法

先日、秘密鍵に設定したパスフレーズを解除しました。

blog.malor.net

毎回パスフレーズを入力するという不毛な生活を抜け出してウハウハだったのですが・・・

この話を(自慢げに)知人にしたところ、

「ssh-agentに登録しておけばそんなことしなくてもパスフレーズは聞かれないよ?」

「しかもパスフレーズなしの鍵が他の人に渡っちゃったらアウトだからセキュリティ的にやばいよ?」

的なことを言われてしまいました。。。

セキュリティレベルを下げずに楽をする方法があったなんて・・・

という訳で今回は 秘密鍵にパスフレーズを設定する方法をご紹介します。
ちなみに設定済みのパスフレーズを変更する方法も一緒です。

秘密鍵にパスフレーズを設定する

パスフレーズを設定する方法も簡単で、下記のコマンドを打つだけ

ssh-keygen -p

すると、どの秘密鍵のパスフレーズを設定するのか聞かれます。
(カッコの中はデフォルトの秘密鍵名)

Enter file in which the key is (/Users/ユーザ名/.ssh/id_rsa): 

あとはパスフレーズを2回入力すれば完了。

Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

変更の場合は古いパスワードも聞かれます。

Enter old passphrase:
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

以上でパスフレーズの設定は完了です!

次回は ssh-agent の使い方を書きます!!