blog

bbPressのカスタマイズをいろいろやったのでまとめておきます

bbPress

bbPressはWordPressにフォーラム機能(掲示板)を追加するプラグインです。

記事執筆時点でのアクティブインストール数は30万以上となっていて人気のプラグインであることが分かります。

プラグイン作者にはWordPress創始者の一人であるMattさんも入ってます。

2018年1月時点では開発も継続的に行われているようです。

そんなbbPressをカスタマイズする機会があったので忘備録としてコードサンプルを残しておきたいと思います。

カスタマイズ要件とコードサンプル

トピック&回答の追加・編集にフックする

例えば、「トピックや回答にあらかじめ設定しておいたキーワードが入力されていたらメールする」といった時に検知することができます。

bbPressにその名の通りのフックポイントがあるのでフックすればOKです。

キーマスターにメールする

トピックや回答などの任意のタイミングでキーマスターにメールを飛ばしたいときなどに使用する関数です。キーマスターが複数いる場合は、ループで回してあげればよいでしょう。

トピックの回答フォームに入力項目を追加する

ここでは、回答時に「この回答を会員専用にする」というチェックボックスを追加するサンプルを紹介します。

「今後の返信をメールで通知」の後に、「この回答を会員限定にする」というチェックボックスを追加しています。

さらにトピックの作成・編集時にチェック状況を回答のメタ情報として保存します。

※チェックの状態は保存しますが、会員しか読めない制御は別途実装が必要です。

ログインしている状態でログインページにアクセスした時に任意のページにリダイレクトする

bbPressではフォーラムユーザーをWordPressユーザーとして管理しています。

ログインはWordPressログインページではなく、固定ページ・投稿に[bbp-login]というショートコードを設置することでログインフォームを表示させることができます。

ただ、このログインページはログインした状態でもアクセスでき、その場合は「既にログイン済みです」というメッセージが表示されるだけとなります。

サンプルでは、ログインページに次の機能を追加しています。

  • 未ログインの場合は通常通りログインフォーム表示
  • ログイン済の場合は、アクセス元もしくはトップページにリダイレクトする

例えば、「特定のコンテンツは会員限定にしたい」といった場合。

そのページにアクセスされた時にログインページに、「?re=エンコードされたURL」としてあげればログイン後に元のリダイレクトさせることができます。

他にも追加していきます。


mt8ではbbPressのカスタマイズも行なっておりますので、上記以外にもカスタマイズのご依頼があれば問い合わせフォームよりご連絡をお願いします。

草コイン、BitZenyのVPSマイニング状況

Time4VPSで国産仮想通貨「BitZeny」をクラウド(VPS)マイニングという記事がとても読まれているようなので、一ヶ月のTime4VPSでのマイニング成果を紹介しておきたいと思います。

契約しているサーバープラン

検証や、その他仕事の用途のためにXSからXLまでの各プランを複数台ずつ契約しています。

そのうち、あまり稼働してなかったXSからXLまでの各サーバーを1台ずつ計5台を使ってBitZenyのマイニングを行いました。

プランごとのハッシュレートは?

約1ヶ月マイニングを稼働させて、だいたい平均値が出てきたのでまとめておきたいと思います。

なお、CPU Minerはcpulimitを使って75%程の制限をかけてマイニングしています。

プラン ハッシュレート
XS 0.09
S 0.02
M 0.22
L 0.57
XL 0.66

マイニング成果

上記5台稼働で、1日あたり平均8.5枚ほどマイニングできています。

Time4VPSで2年プランで契約しているので簡単に1日あたりの収支を計算してみると以下のようになります。

前提

各通過のレートは記事執筆時で計算しています。(小数点四捨五入)


EUR/JPY:136円

ZNY/JPY:27.5円


プラン 契約金額(EUR) 1日あたり(730分の1)
XS 6,495円(47.76) 約9円
S 9,759円(71.76) 約13円
M 14,655円(107.76) 約20円
L 24,447円(147.76) 約33円
XL 44,031円(323.76) 約60円

5台のVPS費用が1日あたり135円ということになります。

1日のマイニング数が8.5枚なので27.5円×8.5=約234円となり、1日あたり約99円の黒字ということになります。

同じXLプランでもハッシュレートがすごく低いものもあったりするので、当たり外れはあるようでした。

上記表だけを見ると、XSプランを複数台運用が効率がいいのかもしれませんね。

XSプランなら6,000円ちょっとで始めることができるのでチャレンジしてみてはいかがでしょうか。

Time4VPSは以下から契約することができます。↓

Time4VPS.EU - VPS hosting in Europe

 

ちなみに、BitZenyを買い増しする時は以下のステップがおすすめです。

Time4VPSで国産仮想通貨「BitZeny」をクラウド(VPS)マイニング

BitZeny

国産コインのBitZenyが注目を集めつつあるようです。

BitZeny(ビットゼニー)のウォレット開設・購入方法

BitZenyのウォレット(口座)作成と、購入方法は以下のブログが詳しいので参考にしましょう。

大暴騰!第二のモナコインとなるか?「BitZeny」の購入方法。

ビットゼニー(ZNY)をCryptoBridge(クリプトブリッジ)で買う方法!【日本語対応】

C-CEXという海外の取引所でもBitZenyの購入が可能なのですが、ユーザー数の急増によるメンテナンスの常時化や、「仮想通貨を捨てるボタン」の実装など信頼面で微妙な印象です。

2017年12月現在だと、CryptoBridgeが日本語対応していてスムーズに取引ができました。

BitZenyをマイニングする!

以前から興味があった仮想通貨のマイニングをリトアニアの超格安のクラウドベースのVPS、Time4VPSで試してみたので、手順をまとめておきたいと思います。

BitZenyのマイニング環境を思っていたよりも簡単に構築できてしまったので、興味のある方は是非トライしてみて下さい。

マイニングプールの設定

プールへの登録

LA Poolに、BitZenyのプールがあるので登録します。

以下のように入力しましょう。

項目 入力内容 備考
ユーザーネーム(Username) ユーザー名 マイニングの設定ファイル名に使用
Coin Address コインアドレス Bitzenyのウォレットのアドレス
パスワード(Password) パスワード LA Poolへのログインに使用
Email メールアドレス LA Poolへのログインに使用
暗証番号(PIN) PINコード アカウント情報変更する時、マイニングしたコインをウォレットに送信する時に使用。

忘れないように(リセット可能)

https://lapool.me/bitzeny/index.php?page=register

ワーカーの作成

LA Poolに登録したら、ログインして以下のメニューからワーカーを作成します。

[My Account] – [ワーカーの編集 – My Workers]

“Worker Name”、”Worker Password”ともに任意の値でOKです。

※マイニングの設定ファイルに記述することになるので忘れないようにします。

ワーカーは複数作ることができるので、手元のPCや、VPSも契約ごとに分けて作成した方がハッシュレートやマイニング結果とかを確認しやすくて便利なのでオススメです。

********************

BitZenyのマイニングに対応しているプールについて。

LA Poolをはじめ、ほとんどのマイニングプールがMPOSというオープンソースソフトウェアで稼働しているようです。

各マイニングプールへの登録手順・ワーカーの設定手順は同じでした。

また、有志の方が「BitZeny Mining Pool Information」というBitZenyのマイニングプールの稼働状況を可視化するサービスを開発してくれていますのでプール選びの参考にしてみるとよいでしょう。

※stratumのアドレスはトップページかヘルプページに記載されていますので確認しましょう。

********************

Time4VPS

Time4VPSにユーザー登録

まずはTime4VPSにアクセスして、からユーザー登録を行います。 (バナークリックでTime4VPSに飛びます。)


Time4VPS.EU - VPS hosting in Europe

英語ですが難しい内容は特になく、簡単に登録できましたよ。

VPSサーバーを購入する

Time4VPSにユーザー登録が終わったら、ダッシュボードにアクセスします。

こんな感じのメニューがあるので、「Order new service」から新規VPSの契約をします。

ちなみにTime4VPSのサーバープランはこんな感じ

月額:2.99ユーロからとなっていますが、これは2年契約した場合の価格。

今回は最小構成のXS Planで試してみました。

“Biennially”というのが2年契約です。

XSプランのスペックは以下のような感じになってました。

CPU 1コア 2.40GHz
RAM 512 MB
HDD 20 GB (IOPS)

マイニングに関係するのはCPUだけなのでディスク容量が少なくてもよいです。

購入前の確認画面

Addonsは特に必要ありません。

また、Time4VPSはたまーにプロモーションコードを配布しているようです。

最近だと、ハロウィンやブラックフライデーで配布がありました。(次はクリスマス?)

プロモーションコードを持っている人はこの画面で「Use Promotiolan code」をクリックします。

注文画面

Time4VPSは以下の支払い方法に対応しています。

  • クレジットカード
  • WebMoney
  • 銀行振込(日本からできるのか不明)
  • PayPal
  • ビットコイン

ビットコインに対応しているのはさすが海外のサービスといった感じですね。

今回はPayPalを選択しました。

“I have read and accepted Terms of Service, Privacy Policy and Refund Policy”にチェックを入れて、「CheckOut」をクリックすれば購入完了です。

購入完了画面

この状態だと支払いが終わっていない状態なので、”Submit payment”をクリックして支払いを済ませます。

この画面から移動してしまった人は、ダッシュボードの「Invoices」からでも同じ画面に行くことができます。

インボイス画面

内容が正しければ、”PayPal Check Out”のボタンから決済を行います。

VPSサーバーの設定

VPSサーバーを購入したら、ダッシュボードの「Services」の一覧にVSPサーバーが以下のように表示されます。

“Manage”をクリックすることで、サーバーの管理パネルに入ることができます。

ただし、購入してすぐは以下のように”It can take up to 15 minutes to get your instance ready after received payment. Please wait, thank you for patience!”というメッセージが表示されますので、少し待ちましょう。

(VPSサーバーの初期設定に15分ほどかかります)

準備完了

“Hostname”を控えておき、”Install OS”をクリックします。

OSのインストール画面

OSは、Ubuntu 16.04(64-bit)を選択しました。

“Are you sure you want yo reinstall server?*”ってなってますが、新規インストールなので、気にせずに”Yes”を選択して”Continue”をクリックします。

インストール中の画面

OSのインストールに3-5分かかります。少し待ってから、”Instration Results”をクリックすると、rootのパスワードなどが確認できます。

インストール結果画面

ここでSSH接続に必要な”Host”と、”Password”を控えておきます。

VPSにマイニング環境を整える

ここからの作業はCUI(コマンドライン)での作業を含むため、Gistにコードを置いておきますので参考にしてください。

また、セキュリティのため、私は以下の設定を行なってからVPSでのBitzenyマイニングを行なっています。

  • SSH接続のキー認証有効化
  • パスワードでのSSH接続を禁止する
  • rootユーザーでのSSH接続を禁止する
  • zenyというユーザーを作ってマイニングを行う

Gistにも書きましたが、以下は頑張って事前に作業してください。

  • 「zeny」等の作業用ユーザーを作成する
  •  SSH接続をキー認証方式に変える
  • rootユーザーでのSSH接続を禁止する

***更新ここから***

この手順がよく分からないというご意見をたくさんもらいましたので、Gistに追加しました。Macでの手順になりますが、参考にして下さい。

※Gistでは最低限、SSH接続をキー認証のみにする設定を載せていますが、ポート番号の変更、rootユーザーでのSSH接続の禁止もした方がよいと思います。

***更新ここまで***

また、Time4VPSは共用サーバーなので他の人に迷惑をかけないようにcpulimitというソフトウェアを使ってCPU MinerのCPU利用率を制限しています。

このあたりは適宜調整しましょう。

マイニングしたら・・・

結果の確認

LA Poolのダッシュボードから確認することができます。

“Confirmed”が確認済みでBitZenyウォレットに移動可能なコインの数量です。

“Unconfirmed”が確認待ちの状態。2時間ぐらいかかるようです。

LA Bitzeny Poolからウォレットへの送金

マイニングし、Confirmedとなったコインはウォレットへ送ることができます。

まずは[My Account] – [アカウントの編集]で、払い出し先のアドレス(ウォレットのアドレス)をPayment Addressに設定します。

Account Detailsの更新時には、4桁のDigit Pinが必要です。(LA Poolにアカウント作成時に設定したもの)

この設定が終われば同じ画面にある、Cash Outから送金ができるようになります。

送金時にも4桁のDigit Pinが必要です。

LA Poolのアカウント作成時に設定した4桁のDigit Pinを忘れた場合は、アカウント編集画面にある、Reset PINから変更が可能です。(要パスワード)

最後に

Time4VPSを使ってのマイニングについて書きました。

ちなみに、XSプランの費用が2年で47.76ユーロ。購入時のレートで6 380円でした。つまり1日あたり、6380÷(365×2) = 約8.7円ということになります。安すぎる・・・。

いまはマイニング参加者が少ないのか1日1ZNYぐらいになっているのでプラスの状態です。(ZNY/JPYが40円ぐらい)

2年後がどうなっているかは分かりませんが、第二のモナコインとなることを夢見ておきます。

Time4VPSの申し込みはこちらから。

Time4VPS.EU - VPS hosting in Europe

**********

一ヶ月のマイニング成果をまとめてみました。

記事はコチラ→草コイン、BitZenyのVPSマイニング状況

**********

 

Alexa Skillを開発しました(株式会社Secual様)

Amazon Echo日本上陸

2017年11月8日、Amazonより日本語に対応したAmazon Echoがリリースされました。

アメリカでの発売の2014年11月6日から約3年越しでの日本版リリースとなります。

日本語に対応したAlexaスキルの開発

mt8では、このリリースに合わせる形で株式会社Secual様のホームセキュリティサービスを音声操作することができるAlexa SkillをTinmsと共同開発を行いました。

本スキルは日本語での操作が可能です。

リンク

株式会社Secual | スマート・セキュリティのSecual(セキュアル) 、「Amazon Alexa」に対応開始 ~「Secual」のAlexaスキルを一般公開、音声コントロールが可能に~

Tinms | Amazon Echo に対応した スマートホーム Alexaスキル開発事例 (株式会社 Secual 様)

1時間で新規WordPressを#getshifterするメモ

Shifter

クローズドベータから少し触っていたShifterをちゃんと使う機会がやってきたので、さくっと手順をまとめておきます。

慣れていれば1時間もあれば独自ドメインでShifterによって静的化されたWordPressサイトを立ち上げることができますよ。

※スクリーンショットは面倒なので撮ってません。

事前準備

※AWS Route53でもドメイン取得可能ですが、個人的にドメインの取得はお名前.comにまとめています。ドメイン登録できればどこでもOKです。

※独自ドメインを割り当てるので、Shifterのプランはpersonal以上を選択しましょう。月払いの場合$20/月、年払いの場合$15/月となります。

ドメイン取得・ネームサーバー設定

レジストラでドメインが取得できたら、ネームサーバーはとりあえずAWSのRoute53に設定しましょう。それが近道です。

お名前.comで取得したドメインをRoute53に設定するには以下の記事を参考に。

お名前.comで取得したドメインのネームサーバーをRoute53に変更しELB配下のWebページをドメインで引けるようにする – Qiita

取得したドメインでメール受信ができるようにする

Shifterでドメイン認証をする際にメール受信ができる必要があります。

わざわざメールサーバーを立てずとも、AWSのSESを使えば取得したてのドメインもすぐにメール受信ができますよ。

手順は以下。

  • Route53にドメイン登録
  • S3にメール受信用のバケットを作成
  • SESでドメイン認証
  • SESでメール受信設定(受信用メールアドレスは「admin@ドメイン」)

※SESは東京リージョンに対応していないので、バージニアリージョンあたりで設定しましょう。

今回はそれに伴ってメール受信用のバケットもバージニアリージョンにしておきました。

SESでメール受信してS3にメールを保存するには以下の記事を参考に。

[新機能]Amazon SES でメール受信が出来るようになりました! | Developers.IO

ちなみに、SESでメール受信するS3バケットには以下のようなバケットポリシーを設定しておかないと、SESで受信ルールを作成するときにエラーになりました。

{
 "Version": "2008-10-17",
 "Statement": [
 {
 "Sid": "GiveSESPermissionToWriteEmail",
 "Effect": "Allow",
 "Principal": {
 "Service": "ses.amazonaws.com"
 },
 "Action": "s3:PutObject",
 "Resource": "arn:aws:s3:::バケット名/*",
 "Condition": {
 "StringEquals": {
 "aws:Referer": "数字のAWSアカウントID"
 }
 }
 }
 ]
}

参考:Amazon SES に対する E メール受信に関するアクセス権限の付与 – Amazon Simple Email Service

Shifterにドメインを登録する

Shifterダッシュボードの、Project – Domainsにすすみ、取得しRoute53に設定したドメインを追加します。

なお、ドメインはネイキッドドメインではなくて、www.などのサブドメインを登録しましょう。

ドメインを追加すると、admin@ドメイン等のメールアドレスにAWSから認証メールが届きますので、SESでメール受信設定をしたS3バケットを確認します。

S3に保存されているメールのオブジェクト名はハッシュ値のような名前になっています。

テキストエディタなどで開いて、以下のような文章を探して下さい。

To approve this request, go to Amazon Certificate Approvals at
https://certificates.amazon.com/approvals?code=ここは認証コード
and follow the instructions on the page.

見つかったら、ブラウザにURLを貼り付けて開きます。

表示されているドメインが正しければ「I Approve」をクリックしましょう。

これで、AWSのACMのSSL証明書が使えるようになりました。

Shifterで初めてのWordPressプロジェクトを作成する

Shifterでは既存のWordPressをインポートすることもできますが、今回は新規のWordPressを作成します。

プロジェクトの作成が終わったら、Step 1: Start WordPress SiteでPHPのバージョンを選んで、StartをクリックしてWordPressを立ち上げましょう。

立ち上げるごとにURLが変わる編集用のWordPressで構築などを一通り終えたら、StopをクリックしてWordPressを止めておきましょう。

ShifterのWordPressを静的化する

Step 2: Generate your websiteより、Generateをクリックして編集用のWordPressを静的化します。記事の数にもよりますが、少し時間がかかります。

ShifterのCDNから配信する(完了)

Step 3: Publish websiteより、配信を行うCDNを選択します。

記事を書いている時点では以下の2つのCDNが選択できます。

  • Netlify
  • Shifter CDN

今回はShifter CDNを選択しました。

Shifter CDN CNAMEsに表示されているドメインを取得したドメインのCNAMEに設定すれば、独自ドメインよりShifterで静的化されたWordPressサイトの公開が可能となります。

Twitterのツイート時間がずれている?と思ったときに確認すること

Twitter

Twitterのミッションは、言語や文化などの障壁をなくして、思いついたアイデアや見つけた情報を一瞬にして共有する力をすべての人に提供することです。

https://about.twitter.com/ja/company より

つぶやいていますか?

私はここ数年、Facebookを使うことの方が増えました。

特定のツイートのタイムスタンプを知りたい

諸事情であるツイートがなされた時間を記録したいというケースがありました。

ツイートごとのタイムスタンプについては、「●●時間前」「●●分前」「●●秒前」と表示されているリンクをクリックすることで確認することができます。

ツイート時間がずれている?

そこで、ツイートの時間を見るとどうも時間が合っていない気がしました。

10数時間ずれています。

ツイッターアカウントのデフォルトタイムゾーン

ツイッターのアカウント設定を確認するとすぐに分かりました。

アカウント開設した直後だと、タイムゾーンは(GMT-7:00) Pacific Time(US & Canada)になっていました。

スクリーンショット 2016-08-09 14.19.51

タイムゾーンを日本時間に変更する

(GMT+9:00)Osakaか、(GMT+9:00)Tokyoにすることで日本時間となります。

 

誰かの参考になれば

 

 

 

[AWS] Lambdaで出力するCloudWatchログのログストリームURLをLambda内で取得する(Python)

contextオブジェクトにロググループ名とログストリーム名が渡ってきているので、マネジドコンソールのURLを組み立てているだけ。

エラー時にメールで飛ばしておけば、(割と)すぐに確認することができるかもしれません。

実際の運用では、このURLをAmazon SNSに通知するなどしてメールやSlackに流しています。

Node.jsでも同じようなことができるはず。

 

参考:

Context オブジェクト (Python)

Context オブジェクト (Node.js)

 

 

[AWS] API Gatewayのリクエストステージ名をLambdaにパラメータとして渡す

とりあえず手順だけまとめておきます。

(各メソッド)統合リクエスト

  • マッピングテンプレートの追加
  • Content-Typeは、application/json
  • テンプレートに、{ "stage": "$context.stage" }

Lambda側(Python)

event['stage']で参照可能。

ちなみに

API Gatewayのテストボタンでのステージ名はtest-invoke-stageとなります。

参考

API Gateway API リクエストとレスポンスペイロードのマッピングテンプレートのリファレンス >> $context 変数へのアクセス

https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html

Hackers Champloo 2016現地レポート【DAY3】

Hackers Champloo 2016 3日目

沖縄県で開催されているHackers Champloo 2016に参加しています。

3日目、合宿最終日です。2日目のレポートはこちら

2日目は早めに寝ました。

朝焼けを見に行くために・・・(4時に起きました)

DSC05729

合宿最終日

ホテルに戻ったらすぐお仕事です。

皆さん3日目にしてこの集中!すごい。

DSC05848

ランチ

本日のランチも「情報を育てる」という視点で作られた、 自律的なチームのためのドキュメント共有サービスesaを開発・運営されている合同会社 esa様がランチスポンサーとしてご提供して下さっていました。ありがとうございます!

DSC05851

DSC05852

ランチ後

一部残っていた案件の調整を行い、目標としていた開発は80%終わりました。

そろそろ観光もしたくなってきたので、合宿開発はここで終了しました。

こんな景色を見にきました。沖縄いいですねえ。

DSC05927

開発合宿を終えて

ホテルに戻ってすぐに寝てしまい、合宿部屋のプチ打ち上げに参加できませんでした・・・申し訳ありません。

今回初めての開発合宿だったのですが、こんなに集中して作業できるとは思いませんでした。

何か成果を公開できる開発内容を持って来ればよかった・・・というのが唯一の後悔です。

実行委員の皆さん、合宿のお世話など本当にありがとうございました!

来年も参加したいと思いました!

最終日はカンファレンス

詳細はこちら→https://hackers-champloo.doorkeeper.jp/events/42325

フライトの都合上、昼過ぎには撤収しないといけませんが、最後まで楽しみにしています!

最終日もよろしくお願いします!

現場からは以上です。