OmniAICreator/Qiita-1.07M huggingface dataset:
PayPal IPNスクリプトのURLを指定する方法を教えてください。

即時支払い通知(IPN)は、リアルタイムでの購入確認を処理するためのPayPalの決済APIです。IPNを使用して、ソフトウェアのダウンロード、ユーザーログイン、およびその他のPayPal対応のウェブサービスおよび通信を管理できます。IPNを使用すると、お客さまのサーバーに取引詳細を送信することによって、PayPal支払いをいつ受け取っても取引のステータスがいつ変更されても、業務の特定部分を自動的に処理できます。
####**IPNスクリプトのURLを指定する方法を教えてください。**
お客さまのIPNスクリプトのURLは、以下の3つの方法で指定できます。

 - PayPalの個人設定で、即時支払い通知のURLを追加します。
     1. PayPalのプレミアアカウントまたはビジネスアカウントにログインします。
     2. [個人設定]、[即時支払い通知の設定]の順にクリックします。
     3. IPNのメッセージを受信するURLを入力します。
 - PayPalスタンダードのHTMLコードに、値としてIPNのスクリプトのURLを指定したnotify_urlを追加します。
 - PayPalプロのスクリプトに、値としてIPNのスクリプトのURLを指定したNotifyURLを追加します。この機能に関する詳細は、[ここ](https://www.paypal.com/ipn)をクリックしてご覧ください。


PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
PayPal API署名の表示、削除方法

API署名の表示または削除は、以下のステップにしたがってお願いいたします。
 
1. [https://www.paypal.jp](https://www.paypal.jp)を開き、PayPalアカウントにログインしてください。
2. ページ上部の[個人設定]をクリックします。
3. [販売ツール]をクリックします。
4. [APIアクセス]の横の[更新]をクリックします。
5. [API署名の表示]をクリックします。
6. API署名の削除を希望する場合は[削除]をクリックします。
7. [削除]を再度クリックします。


PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
PayPal APIユーザー名の変更について

APIユーザー名は一つのPayPalアカウントに一つのユーザー名が適用されます。メールアドレスの変更を行った場合、もしくはAPIを再取得した場合であっても、APIユーザー名が変更されることはありません。


PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
PayPal API署名/API証明書とは

API認証情報は、お客さまが、APIオペレーションの実行権限のあるPayPalビジネスアカウント保有者であることを特定します。以下のいずれかの認証方法を選択します。

 - API署名: ユーザー名、パスワード、および数字と文字の一意の文字列を使用してアカウントが特定されます。API署名の有効期限はありません。
 - API証明書: ユーザー名、パスワード、およびダウンロード可能な証明書を使用して、アカウントが特定されます。API証明書の有効期間は3年です。期限切れになる前に更新する必要があります。

お客さまのAPI署名/API証明書を請求するには、[ここ](https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1953&viewlocale=en_US)をクリックします。
 
**Q:** API認証情報には、API署名を使用すべきですか。API証明書を使用すべきですか。
**A:** API認証情報のAPI署名の方が、実装が簡単で、一般的にもよく使用されています。最適なセキュリティには、API証明書が推奨されます。
 
**Q:** API認証情報にAPI署名とAPI証明書を同時に使用することはできますか。
**A:** いいえ、API署名またはAPI証明書のいずれかの認証を選択する必要があります。両方を使用する必要がある場合は、アカウントを2つ作成する必要があります。
 
**Q:** API証明書の更新が重要なのはなぜですか。
**A:** API証明書は、PayPal APIの認証に使用されるため、証明書の有効期限が切れると、PayPalは、お客さまを有効なAPIユーザーとして認証できなくなります。その結果、お客さまは、APIを使用して取引を処理することができなくなります。
 
**Q:** REST API認証情報を作成する方法を教えてください。
**A:** PayPalのREST APIを使用するには、クライアントIDとシークレット情報が含まれるREST API認証情報が必要です。詳細については、[ここ](https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1949&viewlocale=en_US)をクリックしてください。
 
**Q:** Payflow API認証情報を作成する方法を教えてください。

 - ペイメントプロ: PayPalペイメントプロのアカウントでPayflow API認証情報を生成する方法についての詳細は、[ここ](https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1944&viewlocale=en_US)をクリックしてください。
 - Payflowマネージャ: お客さまが[PayPal Manager](https://manager.paypal.com/)へのアクセス権がある場合は、お客さまのパートナー/ベンダー/ユーザー(オプション) /パスワード情報をログイン情報として使用します。PayPal Managerでサブユーザーを作成するには、[ここ](https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1818&viewlocale=en_US)をクリックします。
 
Q: 本番環境とSandboxのAPI認証情報は何が違うのですか。

 - 本番環境のPayPal取引には、本番環境のAPI認証情報が必要です。
 - テスト取引には、SandboxのAPI認証情報が必要です。

この2つは完全に別の環境です。Sandboxの認証情報で本番環境の取引を完了することはできません。本番環境の認証情報でSandboxの取引を完了することもできません。
カスタムコードの実装をテストするには、本番環境の取引を実行する前に、[Sandboxアカウントを作成](https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1408&viewlocale=en_US)して、数件のテスト取引を処理することをおすすめします。


PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
素数判定をワンライナーで書いてみた(C#)

初投稿です｡

1~1000までの素数を列挙するコードをC#(LINQ)で書いてみました｡  

```C#
Console.Write(String.Join(",",Enumerable.Range(2,1000).Select(x=>Enumerable.Range(2,1000).Count(y=>x%y==0)<=1?x:2).Distinct().ToList()));

```
とりあえずパフォーマンスは無視
できるだけバイト数を少なくできるように頑張りました｡
結果は137バイト(Console.Writeなしなら122バイト)

おそらく無駄がまだまだ多いと思います｡
特にEnumerable.Range(2,1000)が2回出てくるのどうにかできないかな...

追記
ちょっと変えてみました
2回目のEnumerable.Range(2,1000)をEnumerable.Range(2,x)に変更

```C#
Console.Write(String.Join(",",Enumerable.Range(2,1000).Select(x=>Enumerable.Range(2,x).Count(y=>x%y==0)==1?x:2).Distinct().ToList()));

```
結果は134バイト(Console.Writeなしなら119バイト)

更に追記
@midori44 さんのおかげで109バイト(Console.Writeなしで94バイト!)まで短くなりました!

```C#
Console.Write(String.Join(",",Enumerable.Range(2,1000).Where(x=>Enumerable.Range(2,x).Count(y=>x%y==0)==1)));

```
横スクロールが出ない!w
そして自分の勉強不足を痛感しました...

更に更に追記
@muro さんのおかげで更に短くなりました!
結果は105バイト(Console.Writeなしで89バイト!)

```C#
Console.Write(String.Join(",",Enumerable.Range(2,999).Where(x=>Enumerable.Range(2,x-2).All(y=>x%y!=0))));

```
こんな拙い記事にコメントしてくれただけでなく､とてもわかり易い改善案､解説をしてくれたお二方には感謝の言葉しかありません｡
思い切って投稿してみて良かったです!
Mac | GoogleSpreadSheet | 新しい行を挿入するショートカット (  Ctrl+Opt+I → W )

# 答え

`Ctrl+Opt+I` を押してから `W` を押す。

( I は Line の「エル」かと思いきや「アイ」なので注意 )

# 連続技

`Ctrl+Opt` を押し続けながら `I` → `W` → `I` → `W`  って押してくと、連続で何行も挿入できる。

# 覚え方

`Insert doWn` と覚えたら良いかも。

# 例

`Ctrl+Option+I` を押すとこんなメニューが出てくる。

![image](https://qiita-image-store.s3.amazonaws.com/0/89618/4c51aabf-fde1-a3fc-3b4c-883cd568befd.png)

次に `W` を押すと、カーソルの下に行が挿入される。

![image](https://qiita-image-store.s3.amazonaws.com/0/89618/a251e43c-c8d1-a12d-5cd4-2ab14214f29f.png)


# 参考

- [Google スプレッドシートのキーボード ショートカット](https://support.google.com/docs/answer/181110?hl=ja)








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
PayPal API署名/API証明書を請求する方法

お客さまのPayPalアカウントのAPI署名またはAPI証明書を請求する手順は以下のとおりです。

 1. PayPalの[本番環境](https://www.paypal.com/)または[Sandbox](https://www.sandbox.paypal.com/)のアカウントにログインします。
 2. [アカウント設定]の下の[プロフィール設定]を選択します。
 ![API1.png](https://qiita-image-store.s3.amazonaws.com/0/124793/3f8e2898-ea25-7391-5dac-fe020f7f6f0c.png)
 3. [販売ツール]をクリックします。
![API2.png](https://qiita-image-store.s3.amazonaws.com/0/124793/9b503690-035b-bb38-88d4-b7a3b85d584e.png)

 4. [APIアクセス]セクションの[更新]をクリックします。
![API3.png](https://qiita-image-store.s3.amazonaws.com/0/124793/ea61617c-1ff4-fed9-5c43-255b04ce820e.png)

 5. [NVP/SOAP APIの実装]の下の[API認証情報を要求する]をクリックします。
![API4.png](https://qiita-image-store.s3.amazonaws.com/0/124793/ca57bdbe-70de-075c-a1b1-03574c1960e9.png)

 - API署名を生成済みの場合は、[API署名の表示]が表示されます。既存のAPI署名を表示または[削除](https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1955&viewlocale=en_US)するには、そのオプションをクリックします。
 - API証明書を生成済みの場合は、[API証明書の表示]が表示されます。既存のAPI証明書を表示または[削除](https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1955&viewlocale=en_US)するには、そのオプションをクリックします。

注: PayPalアカウントの認証を求められた場合は、画面の指示にしたがいます。

 6.以下のオプションの1つを選択して、[同意して送信]をクリックします。\

 - API署名の請求 – API署名の認証の場合に選択します。
![API5.png](https://qiita-image-store.s3.amazonaws.com/0/124793/fc85faa9-4762-ffe9-7b5e-83083d906619.png)

 - API証明書の請求 – API証明書の認証の場合に選択します。
![API6.png](https://qiita-image-store.s3.amazonaws.com/0/124793/bdfe1e3b-924b-5194-2eae-d985b6a14a27.png)

 7. PayPalは、以下のAPI認証情報を生成します。

 - API署名の認証情報には、APIユーザー名、APIパスワード、署名が含まれます。有効期限はありません。これらの値は、セキュリティのため、初期設定では表示されません。オンとオフを切り替えるには、[表示/非表示]をクリックします。終了したら、[完了]をクリックします。
![API7.png](https://qiita-image-store.s3.amazonaws.com/0/124793/36f239c8-5f34-059d-7762-ad1c6b7d2163.png)

 - API証明書の認証情報には、APIユーザー名、APIパスワード、証明書が含まれます。3年間後に自動的に期限が切れます。API証明書をお使いのコンピュータに保存するには、[証明書のダウンロード]をクリックします。
![API8.png](https://qiita-image-store.s3.amazonaws.com/0/124793/0a1c08e1-1c43-5506-d31d-2b1797a46a50.png)

注:

 - API認証情報をインストールするには、[ここ](https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1954&viewlocale=en_US)をクリックします。
 - API認証情報を更新するには、[ここ](https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1955&viewlocale=en_US)をクリックします。


PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
[Security]Symantec製品の脆弱性

以下、自分用のメモ

脆弱性に関する重要なお知らせ：圧縮解除エンジンの解析に脆弱性 - Symantec
https://www.symantec.com/content/ja/jp/enterprise/other_resources/sym16-010.pdf

Symantec 製品の脆弱性対策について(CVE-2016-3647 等) - IPA
https://www.ipa.go.jp/security/ciadr/vul/20160705-symantec.html

いちおう6/28付のLiveUpdateで脆弱性の悪用の試みを遮断/検出するシグネチャがリリースされているため、被害が生じる可能性は極めて低いが、パッチ（SEP 12.1 RU6 MP5）適用により脆弱性そのものをなくすことが最善策となる。
PayPalウェブペイメントスタンダードとは

PayPalペイメントスタンダードでは、HTMLをカット&ペーストするだけで、支払いとチェックアウトのボタンをウェブサイトに追加できます。このボタンを使用して、クレジットカード、デビットカード、またはPayPal支払いをより安全に受け取ることができます。

 - PayPalペイメントスタンダードの概要については、[ここ](https://developer.paypal.com/webapps/developer/docs/classic/paypal-payments-standard/integration-guide/wp_standard_overview/)をクリックしてください。
 - PayPalペイメントスタンダードの利用開始の詳細については、[ここ](https://developer.paypal.com/webapps/developer/docs/classic/products/paypal-payments-standard/)をクリックしてください。
 - 製品案内(日本語)：
https://www.paypal.com/jp/webapps/mpp/website-payments-standard
 - 導入ガイド(日本語)：
https://www.paypal.jp/jp/contents/support/introduction/web-payment-standard/
https://www.paypal.jp/uploadedFiles/wwwpaypaljp/Supporting_Content/jp/manual/PP_JP_Website_Payments_Standard_Integration_Guide-J.pdf


PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
PayPalエクスプレスチェックアウトで支払いが保留されているのはなぜですか。

エクスプレス チェックアウトで支払いオプションに「承認」または「注文」が設定されている場合、支払いが保留されます。

 - 承認 - 売り手が承認済みの支払い額を全額回収するための期間が、最長29日間あります。
 - 注文 -売り手が、注文商品の配送を準備しながら、承認済みの支払い額の一部を回収するための期間が、最長29日間あります。

エクスプレス チェックアウトの決済オプションの違いを教えてください。

 - 詳細については[ここ](https://www.paypal-knowledge.com/infocenter/index?page=content&id=FAQ1501&pmv=print&impressions=false&viewlocale=ja_JP)をクリックしてご覧ください。


PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
Wordpressのタグ削除ではなく、記事とタグの関係を「切断」する方法

WordPressのタグ管理で、使用したくないタグを消去しても、自動タグ付与（simple_tagsのプラグイン等）を利用していると、再度タグが付けられて、なおかつIDが別で振られることになります。

そこで、タグのIDは削除せず、使用されている記事とタグの関係を「切断」する形で使用すれば、いいかもしれません。（定期的なCRONなどで自動実行形式に）

実際私のところのサイト運用では、あるタグ（例「www」、IDは１２０、件数は３０）に関連づく、各記事のタグを消去するようなツールをCRONで定期的に稼働させて消去させています。

ソースコードは醜いですが、以下のような感じです。

```syori.php
<?php

// WordPressのインストール先の「wp-load.php」を読み込む
require dirname(__FILE__) . "/wp-load.php";

// 削除（消去）するキーワード一覧のファイル名
$filename = dirname(__FILE__) . "/keywords.ini";

// キーワード一覧を読み込む
$term_name = file_get_contents($filename);

// 改行ごとで配列化
$term_name2 = explode("\n",$term_name);
// 配列の件数
$cnt = count($term_name2);

$str = array();

// 一度に処理する件数（単語の件数）
$scope_count = 20;
for($i=0;$i < $cnt; $i++){
    if( ($i % $scope_count == 0 ) && ( $i != 0 ) ){
        $term_name3[] = $str;
        $str = array();
    }
    $str[] = $term_name2[$i];
}

// print_r($term_name3);


// =========

// 読み込む
foreach($term_name3 as $terms){

    // 配列から件数分を「カンマ区切り」にする
    $term_name = implode(",",$terms);
    echo "term_name[" . $term_name . "]\n";

    // query_postsに突っ込むキーワードはカンマ区切りが必須
    // キーワードが使われいる記事を最大５００件取得
    query_posts('posts_per_page=500&tag=' . $term_name );

    if (have_posts()) :
        while (have_posts()) : the_post();

// echo get_the_title();
//        echo '<a href="' . get_permalink() . '">' . get_the_title() . '/' . get_the_ID() . '</a><br />' . "\n";

        echo "    " .get_the_title() . '/' . get_the_ID() . "\n";
        // 当該記事に関連付けられているキーワードを配列で渡し、削除（消去）する
        wp_remove_object_terms(get_the_ID(), $terms,"post_tag");

        endwhile;
    endif;

    wp_reset_query();
}

?>

```

```keyword.ini
http
https
www
com
co
posts
jp
facebook
````

お役に立てれば。
PayPal APIを使用すると、どのようなエラー(エラーコード)が発生する可能性がありますか。

APIエラーコードの一覧は、PayPalデベロッパーポータルの[「API Error and Warning Codes(APIエラー/警告コード)」](https://developer.paypal.com/webapps/developer/docs/classic/api/errorcodes/)ページを参照してください。


PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
PayPal Sandboxとは

PayPal Sandboxは、PayPalの本番環境とほぼ同一の、自己完結型の仮想テスト環境です。このテスト環境では、お客さまのPayPalルーチンを、本番環境に移行する前により安全に微調整できます。PayPal APIの呼び出しで、実際のPayPalアカウントを参照する代わりにテスト用のアカウントおよび認証情報を使用して、お客さまのアプリケーションをテストおよびデバッグできます。
Sandboxの使用時、Sandboxアカウント宛のメールは、ダミーのSandboxアカウントの通知センターにのみ送信されます。Sandbox環境の外の実際のSTMPアカウントにメールを送信することはできません。実際のSTMPアカウントにメールを送信するには、Sandbox内の本番用のメールアドレスをしてください。1つしかないアカウントであれば使用できます。
PayPalの処理は、Sandbox環境でも実稼働サーバーと同じように実行されますが、以下を行うことはできません。

 - PayPal決済引出しまたは自動スイープ機能のテスト。
 - チャージバックおよびクレームのシミュレーション。
 - リスク要因による取引の拒否や、不審な取引によるSandboxアカウントのロック。

PayPalデベロッパーサイトのSandboxに関する詳細は、[ここ](https://developer.paypal.com/webapps/developer/docs/classic/lifecycle/ug_sandbox/)してご覧ください。
Sandboxアカウントの作成方法は、[ここ](https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1408)をクリックしてご覧ください。


PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
ElasticeSearchのindexが遅くなったら対処したこと

こちらを参考にした
http://stackoverflow.com/questions/33952089/slow-index-speed-of-elasticsearch

https://www.elastic.co/guide/en/elasticsearch/guide/current/heap-sizing.html
ここを参考にHEAPサイズ調整とswap無効にする

### 1.メモリ不足して、swapが大量に発生していないかの調査

```
$ free
total       used       free     shared    buffers     cached
Mem:       2052380    1967252      85128          4      40220     250592
-/+ buffers/cache:    1676440     375940
Swap:      1048572     175832     872740
```
結構発生してる。

### 2.HEAPサイズを調整
ES_HEAP_SIZEを物理メモリの半分にする

### 3.swapを無効
http://kakakazuma.hatenablog.com/entry/2015/03/12/015504
こちらを参考に設定

```
vim /etc/sysconfig/elasticsearch
ES_HEAP_SIZE=1024m #物理メモリの半分 
MAX_LOCKED_MEMORY=unlimited
```

### 4.elasticesearchを再起動
[公式ページのおすすめ手順でやる](https://www.elastic.co/guide/en/elasticsearch/guide/current/_rolling_restarts.html)

```shell
# rebalance無効化、これでshardsの自動調整が止める
$ curl -XPUT 'http://localhost:9200/_cluster/settings' -d '{
    "transient" : {
        "cluster.routing.allocation.enable" : "none"
    }
}'

# elasticsearch再起動
$ sudo service elasticsearch restart

# rebalance有効化
$ curl -XPUT 'http://localhost:9200/_cluster/settings' -d '{
    "transient" : {
        "cluster.routing.allocation.enable" : "all"
    }
}'

# head pluginでshardsの調整できたことを確認
```

### 5.swapが無効になってることを確認(mlockallがtrueになってること)

```
http://localhost::9200/_nodes/process?pretty

"process": {
  "refresh_interval_in_millis": 1000,
  "id": 1232,
  "max_file_descriptors": 65535,
  "mlockall": true
}
```

### 作業中困ったこと
##### なぜかelasticsearch起動に失敗した
1. /var/log/elasticsearch/したのログを調査したが、特になし
2. システムからのエラーと疑って、/var/log/messagesを調査

```
Out of memory: Kill process 11560 (java) score 948 or sacrifice child
Killed process 11560 (java) total-vm:2949556kB, anon-rss:1929660kB, file-rss:13048kB
```
調べたら、elasticsearchが利用してるメモリが多くので、OOM Killerに殺させた。

物理メモリが2Gのマシンに、HEAPサイズを1.5Gに設定されたため、OOM Killerに殺させた
HEAPサイズを勧めの物理メモリの半分1Gにして、これで起動できた
PayPalデモポータルとは

[PayPalデモポータル](http://demo.paypal.com/)は、本稼働環境で異なるPayPal APIがどのように通信するかを確認することができる、インタラクティブなオンラインツールです。これにより、マーチャントおよび開発者は、実際の支払い手続きを、本番環境内に構築または開発することなく体験できます。

 - これまでの、クライアント/マーチャントや開発者向けのさまざまなオプションおよび支払いフローのデモには、テスト/開発ドメインの設定や1つまたは複数の支払いオプションの実装などが含まれていました。デモポータルでは、ユーザーがいくつかの構成オプションを変更して、ユーザー体験がどのように変わるかを確認できます。
 - デモポータルが構成されると、コードおよび成功事例の情報も確認でき、これによって開発者は、適切な実装に推奨される/推奨されない操作を把握できます。また、デモポータルは、マーチャントのベストプラクティスを紹介し、支払いフローを細部にわたって実際に操作してみることもできます。
 - さらに、ウェブ、モバイル、ネイティブアプリの表示を切り替えることができ、選択した決済ソリューションおよび実装ソリューションの完全なエンドユーザー体験を提供します。
 - PayPalデモポータルには、ユーザーの支払い体験の各ステップをナビゲートするインタラクティブなガイドが組み込まれており、ユーザーが行う各手順や操作の一部として想定されるインタラクションのタイプについて説明しています。

初回リリースは北米オプションおよび主要な実装オプションに限定されていますが、今後数ヶ月間にほかの国および地域でもAPIおよびSDKオプションの追加リリースが予定されております。マーチャントのアセットやブランドによってユーザー体験をカスタマイズする追加オプションのリリース予定もあります。
[ここ](http://demo.paypal.com/)クリックすると、デモポータルにアクセスできます。

###デモポータルに関するよくあるご質問

 - Q: PayPalデモポータルとは何ですか。

    A: デモポータルを使って、PayPalの機能がご自身のビジネスと連動して動作するしくみを短時間で理解できます。デモポータルでは、すべてのPayPal製品についてグローバルレベルであらゆるユーザー体験をご覧になれます。デモポータルを使用すると、PayPalの成功事例の基準について理解し、表示されたフローに応じたコード例を確認できます。つまり、デモポータルはPayPal製品の短時間での実装に役立ちます。
<br /> 
 - Q: デモポータルにアクセスするには、PayPalアカウントへのログインが必要ですか。

    A: デモポータルはどなたでもアクセスできます。PayPalアカウントの作成や、ポータルサイトにアクセスするためのPayPalへのログインは不要です。さらに、ポータルにログインしなくても、ポータルが提供するサンプルコードを表示およびダウンロードできます。
<br /> 
 - Q: 私が住んでいる地域でもデモポータルを利用できますか。

    A: デモポータルは現在、北米の地域限定でご利用いただけます。PayPalが対応しているほとんどの地域でポータルをご利用いただけるよう、現在積極的に取り組んでおります。新しい地域でのご利用が可能になりましたら、順次お知らせいたします。
<br /> 
 - Q: デモポータルがサポートしている言語を教えてください。

    A: デモポータルは現在、英語のみをサポートしていますが、できるだけ多くの言語をサポートするよう取り組んでおります。
<br /> 
 - Q: デモポータルは、PayPalウェブサイトにホストされているのですか。

    A: はい、デモポータルはPayPalのサイトです。
<br /> 
 - Q: デモポータルと、[PayPalデベロッパーポータル](https://developer.paypal.com/)および[PayPal Sandbox](https://www.sandbox.paypal.com/)の違いは何ですか。

    A: デモポータルでは主に、PayPal製品についてあらゆるユーザー体験をご覧になれます。また、選択された製品の基本機能とともに、ビジネスを立ち上げて運営するために役立つサンプルコードもダウンロードできます。ダウンロードできるコードは細分化されており、Sandbox環境でサンプルのAPIコールを実行するには、PayPalデベロッパーポータルでSandboxテストアカウントを作成する必要があります。詳細な製品資料を含む追加の製品サポートは、デベロッパーポータルでご覧になれます。
<br /> 
 - Q: 技術的な質問がある場合は、どこにアクセスすればよいですか。

    A: [StackOverflow PayPalフォーラム](http://stackoverflow.com/questions/tagged/paypal)のコミュニティにお尋ねください。
<br /> 
 - Q: バグや技術的な問題を報告する場合は、どこにアクセスしますか。

    A: 弊社テクニカルサポート部門に、問題の詳細をお知らせください。
<br /> 
 - Q: アカウント関連のサポートを希望する場合は、どこにアクセスすればよいですか。

    A: アカウント関連のサポートは、[PayPalサポート](https://www.paypal.com/us/webapps/helpcenter/helphub/home/)にアクセスしてください。


PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
Markdownから楽してフォーマット変換する方法


O'Reilly Atlasの簡易版みたいな仕組みで製品マニュアルを作って欲しいと言われました。
マニュアル作成にはAsciidoctorを使いたいのでAsciiDoc形式で記述することが決まったのですが、Markdown形式のほうが慣れてて楽とのことだったので、Markdown形式からAsciiDoc形式へ変換しなければならなくなりました。
pandocを使えば余裕!と思っていたのですが、意図した通りの変換ができませんでした。

# 調べたこと
pandocを使うならHaskellを勉強して直せばいいんだろうけども、時間がないのでPythonのMarkdownパーサーライブラリ使って変換プログラム作れないかな?と思って調べてみました。

表でまとめると以下の通り。

評価項目|Python-Markdown|Misaka|Mistune
---|--- |--- |---
URL|https://github.com/waylan/Python-Markdown|https://github.com/FSX/misaka|https://github.com/lepture/mistune
ライセンス|BSD|MIT|BSD
実装|python|python + C|python
対応バージョン|Python 2.7, 3.3+ and PyPy|Python 2.7, 3.2+ and PyPy 2.6|Python 2.6+, Python 3.3+ and PyPy
出力のカスタム|×|◯|◯
備考||Hoedownに依存|

Python-Markdownは出力をカスタムできないのでパス。Misakaは枯れてて良さそうなんだけども、Hoedownに依存している点が微妙だからパス。

消去法でMistuneに決定したので、これを使って実装してみます。


# 簡単な使いかた
## インストール
Python2.6以上で動くそうなので、2.7.11で動作確認しました。

```
pip install mistune
```

簡単ですね!

## MarkdownからHTMLへ変換
以下のMarkdown形式のファイルとHTML変換用のソースを用意しました。ほぼ公式のBasic Usageに書いてある内容と一緒です。

```Markdown:test.md
# サンプルドキュメント
## 第XX章
### 第XXX節
```

```python:convert.py
import mistune

with open('test.md', 'r') as test_file:
    markdown = mistune.Markdown()
    print markdown(test_file.read())
```

で、実行します。

```
python convert.py
```

すると、出力結果は以下のようになりました。

```html:output
<h1>サンプルドキュメント</h1>
<h2>第XX章</h2>
<h3>第XXX節</h3>
```

部分的に適用されているので、HTMLの定義などは別でテンプレートを用意しておいて、Bodyの内容だけを書き換えるような感じで作れば良さそうです。

## Markdownから自由な形式へ変換
さて本題です。

mistuneはRendererクラスを継承して、出力したい項目(メソッド)をオーバーライドすればよいそうです。
今回は見出しタグをAsciiDoc形式の[セクション](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/#section-titles)に置き換えたいので、以下のように作りました。

```python:custom_render.py
import mistune

class CustomRenderer(mistune.Renderer):
    def header(self, text, level, raw=None):
        section = '=' * level
        return '{0} {1}\n'.format(section, text)

if __name__ == '__main__':
    custom_renderer = CustomRenderer()
    with open('test.md', 'r') as test_file:
        markdown = mistune.Markdown(renderer=custom_renderer)
        print markdown(test_file.read())

```

実行します。

```
python custom_render.py
```

以下のような結果になりました。

```asciidoc:output
= サンプルドキュメント
== 第XX章
=== 第XXX節
```

想定していた結果が得られました!

あとは、必要な構文からメソッドをオーバーライドしていって、出力形式を整えればフォーマット変換ができますね。
PayPal APIのタイムアウトの問題を解決する方法

PayPalおよびPayflowのAPIベースの機能でタイムアウトの問題が発生している場合は、以下のヒントを参考にして問題を解決してください。

 - ここをクリックして、PayPal通知のシステム更新セクションで既知の問題を確認してください。
 - アプリケーションとPayPalまたはPayflowサーバーの接続を妨げている可能性のあるファイアウォールまたはその他のアクセスコントロールがないかどうか確認してください。
 - クライアントコードのタイムアウトの設定を確認します。
     - PayPalでは、タイムアウトの最低時間を30秒に設定することをおすすめします。それよりもはるかに短い時間でAPIリクエストを処理できると考えられる場合も同様です。
     - 最低でも30秒に設定すると、クレジットカード発行会社の応答が遅れた場合でもより柔軟に対応できます。
     - これより短い時間に設定されている場合は、30秒に増やします。
 - アプリケーションが接続しているAPIのURLでnslookup (「nslookup」が使用できない場合は「dig」または「host」コマンド)を実行し、返されたIPアドレスをメモします。
    - ここに一覧表示されているIPアドレスに照らし合わせて確認してください。
    - 返されたURLのIPアドレスがリストのアドレスと異なる場合は、さらに(DNS、「ホスト」ファイルなどを)確認する必要があります。
 - Javaベースの実装環境では、APIのURLのIPアドレスが変更された場合、DNSのキャッシュの更新が必要な可能性あります。
     - この場合は通常、JVM/アプリケーションサーバー(JBoss、GlassFishなど)を再起動する必要があります。
     - Javaベースのアプリケーションでは、java.net.InetAddressクラスおよびnetworkaddress.cache.ttlプロパティを調べると詳細を把握できます。
 - お客さまのサーバーまたはプロキシサーバー(いずれかを使用している場合)からPayPal APIエンドポイントに対して「traceroute」コマンドを実行します。次に、PayPalにアクセスできる場所(お客さまのネットワーク外が理想的)から同じコマンドを実行し、結果を比較します。
     - PayPalのAPIエンドポイントとお客さまのサーバー間の途中で、特定ホップ後にtracerouteが停止する場合は、ルート上のホップのいずれかがリクエストをブロックしている可能性があります。
     - たとえば、現在、AT&Tネットワークでブロックされるマーチャントが少数いらっしゃいます。PayPalのAPIエンドポイントへのルートは(その他の多くのネットワークの中で) AT&Tネットワークを経由するので、それらのマーチャントはAPIエンドポイントに到達できません。AT&T Abuse (不正対応)チームおよび/またはNOCチームと協力して、AT&Tネットワークのブロックを解決する必要があります。
 - OpenSSLを使用して、PayPal APIのエンドポイントまたはその他のIPアドレスとの接続を確認します。
     - 以下に例を示します。 openssl s_client -connect api-3t.paypal.com:443
     - 正常に接続している場合は、先頭行に「CONNECTED」と表示されます。
     - ご使用のオペレーティングシステムにOpenSSLがインストールされていない場合は、ここをクリックしてバイナリをダウンロードします。
     - **警告**: どのような状況でも、PayPal APIエンドポイントまたはその他のIPアドレスへの接続の確認にTelnetを使用しないでください。TelnetはSSL非対応でSSLハンドシェイクを処理できないため、PayPal側で一時的にブラックリストがトリガーされ、トラブルシューティングがさらに複雑になる可能性があります。
 - 複数のサーバーでアプリケーションが実行されている場合は、特定のサーバーからのリクエストについてタイムアウトが発生しているのか、すべてのサーバーでタイムアウトが発生しているのかを判断できます。
     - 1つのサーバーでのみタイムアウトが発生している場合は、問題のサーバーおよび影響を受けていないと思われるサーバーで「nslookup」 (「nslookup」が使用できない場合は「dig」または「host」コマンド)を実行し、結果を比較します。
     - 問題のサーバーが同じURLについて異なるIPアドレスを示している場合、サーバーを再起動すると問題を解決できる可能性があります。

上記の推奨事項のいずれでもタイムアウトが解消しない場合は、以下の情報をご用意のうえ、テクニカルサポートまでご連絡ください。

 - nslookupの結果
 - タイムアウトの頻度(%)。たとえば、すべてのAPIコールで発生しますか?50%ですか?など。
 - タイムアウトが発生し始めたおおよその日付と時刻
 - タイムアウトの発生に先立ち、ネットワークまたはコードが変更されたかどうか
 - APIリクエストの送信元のIPアドレス
 - エクスプレス チェックアウト、ダイレクト決済、参照取引などの資金移動APIの場合は、タイムアウトに関係なく、APIコールが処理されているかどうかがわかります。PayPal ManagerまたはPaypal.comからアカウントを確認し、取引がAPIリクエストから作成されているかどうかを判断できます。

PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
C# 大量の文字列連結にはStringBuilderだよねってサンプル

最適化の指摘をいただいたので、進捗を除外・StringBuilderのキャパシティを設定にて
再度実行結果を観測しました。
結果にばらつきがあるため、3回分の結果を掲載しておきます。

ソースコード(修正済み)は [こちら] (https://github.com/Synashida/CSharpStringBuilderSample)
SDK : Visual Studio Community 2015 Update 3

**1回目**
![スクリーンショット 2016-07-13 14.12.24.png](https://qiita-image-store.s3.amazonaws.com/0/57579/0d1a5bc1-4e96-647d-cb50-8c237cf961cc.png)

**2回目**
![スクリーンショット 2016-07-13 14.13.13.png](https://qiita-image-store.s3.amazonaws.com/0/57579/55c998df-006f-4563-83c6-d46b67fdcc4a.png)

**3回目**
![スクリーンショット 2016-07-13 14.14.02.png](https://qiita-image-store.s3.amazonaws.com/0/57579/e17524be-edd3-4624-3763-e645d458b354.png)


**最適化後の抜粋**

```
        private void btnExec_Click(object sender, EventArgs e)
        {
            NormalLoop();
            StringBuilderLoop();
            PachimonStringBuilderLoop();
            MessageBox.Show("Done.");
        }

        private void NormalLoop()
        {
            string lines = "";
            DateTime timer = DateTime.Now;
            long loopMax = (long)loopLimit.Value;

            for (long i = 0; i < loopMax; i++)
            {
                lines += string.Format("{0},data{1},{2}{3}", i, i, DateTime.Now, System.Environment.NewLine);
            }
            txtNormal.Text = ((Double)(DateTime.Now.Ticks - timer.Ticks) / 10000000.0).ToString();
        }

        private void StringBuilderLoop()
        {
            StringBuilder lines = new StringBuilder(32 * (int)loopLimit.Value);
            DateTime timer = DateTime.Now;
            long loopMax = (long)loopLimit.Value;

            for (long i = 0; i < loopMax; i++)
            {
                lines.Append(i).Append(",").Append("data").Append(i).Append(",").Append(DateTime.Now);
            }
            txtStringBuilder.Text = ((Double)(DateTime.Now.Ticks - timer.Ticks) / 10000000.0).ToString();
        }

        private void PachimonStringBuilderLoop()
        {
            StringBuilder lines = new StringBuilder(32 * (int)loopLimit.Value);
            DateTime timer = DateTime.Now;
            long loopMax = (long)loopLimit.Value;

            for (long i = 0; i < loopMax; i++)
            {
              lines.Append(string.Format("{0},data{1},{2}{3}", i, i, DateTime.Now, System.Environment.NewLine));
            }
            txtPachimon.Text = ((Double)(DateTime.Now.Ticks - timer.Ticks) / 10000000.0).ToString();
        }
```
PayPal SandboxのAPI認証情報を確認する方法

PayPalのSandboxでテスト用のビジネスアカウントを作成すると、そのアカウントのAPI署名が自動的に生成されます。この情報を確認する手順は以下のとおりです。

1. [ここ](https://developer.paypal.com/)をクリックして、PayPalデベロッパーアカウントにログインします。
2. [Dashboard]をクリックします。
3. [Sandbox]の下の[Accounts]をクリックします。
4. 確認する認証情報を保有しているビジネスアカウントのメールアドレスをクリックします。
5. [Profile]をクリックします。
 ![Sandbox1.png](https://qiita-image-store.s3.amazonaws.com/0/124793/9aaaa7fe-ddee-16e7-4da8-8f2cf3b615a2.png)

6. アカウント詳細画面で、[API credentials]をクリックします。
何らかの理由でAPI認証情報がこの画面に表示されない場合は、お客さまのSandboxアカウントで確認することもできます。アカウント詳細画面で[Close]をクリックして、以下の手順にしたがいます。
![Sandbox2.png](https://qiita-image-store.s3.amazonaws.com/0/124793/78057db0-b9ab-acd3-b734-befb5654aaee.png)

7. 確認する信用情報を保有しているビジネスアカウントの横にあるボックスをチェックして、[Enter Sandbox site]をクリックします。
![Sandbox3.png](https://qiita-image-store.s3.amazonaws.com/0/124793/e85b23cd-0db0-2354-9361-359fdde01622.png)

8. Sandboxのそのビジネスアカウントにログインします。
9. [My Account(マイ アカウント)]タブで、[Profile(アカウント設定)]ドロップダウンリストから[My Selling Tools(販売ツール)]を選択します。
![Sandbox4.png](https://qiita-image-store.s3.amazonaws.com/0/124793/37f7b1ee-9ae3-c1d1-5372-249f8602cf95.png)

10. 「My Profile(個人設定)」画面で、[API access(APIアクセス)]の横にある[Update(更新)]をクリックします。
![Sandbox5.png](https://qiita-image-store.s3.amazonaws.com/0/124793/2685bc8f-230e-eb6d-beb3-b579b0225986.png)

11. 「API Access(APIアクセス)」画面で、オプション2の下の[View API Signature(API署名の表示)]をクリックします(API認証情報の請求がオプション2の下に表示される場合、これは、お客さまがAPI認証情報をまだ請求していないためである可能性があります。API署名の請求についての詳細は、ここをクリックしてください)。
![Sandbox6.png](https://qiita-image-store.s3.amazonaws.com/0/124793/34eb9d7f-3f37-3569-332c-42243fbd57f5.png)

 

PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
PayPal IPNのメッセージを受信しない原因

即時支払い通知(IPN)のメッセージを受信しない場合は、以下を確認してください。
####**受信アカウントのメールアドレスを確認する**
支払いが送信されているアカウントのメールアドレスの確認手続きが完了していることを確認してください。個人設定ベースのIPNの場合は、IPNがスクリプトに送信されるには、受信アカウントのメールアドレスの確認が完了している必要があります。
####**個人設定を確認する**
個人設定ベースのIPNを使用している場合は、アカウントの個人設定でIPNが無効になっていないことを確認してください。確認手順

1. [ここ](https://www.paypal.com/)をクリックしてPayPalアカウントにログインします。
2. [個人設定]をクリックします。(新しい画面では、右上の[事業情報]アイコンをクリックし、ドロップダウンメニューから[個人設定と設定]を選択します。)
3. [即時支払い通知の設定]をクリックします。(新しい画面では、[販売ツール]をクリックし、「即時支払い通知]の横の[更新]をクリックします。)
4. IPNがオンまたは有効に設定されていることを確認します。
####**ファイアウォールを確認する**
即時支払い通知は、PayPalによって開始されるHTTP POSTです。サーバーでファイアウォールを使用している場合は、PayPalからのPOSTをブロックされていないことを確認します。
お客さまのネットワークでIPNを許可するようファイアウォールを設定する必要がある場合は、以下のIPアドレス情報に関するよくあるご質問をご覧ください。
 - 本番環境
 - Sandbox


####**設定、テスト、利用方法、およびPayPal IPNシミュレータに関する詳細情報は、次のURLでご覧ください。**
即時支払い通知(IPN)ガイド - https://developer.paypal.com/webapps/developer/docs/classic/products/instant-payment-notification/
IPN Getting Started Guide(即時支払い通知(IPN)入門ガイド) -https://developer.paypal.com/webapps/developer/docs/classic/ipn/gs_IPN/
IPN Integration Guide (IPN統合ガイド) - https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNIntro/
Creating/Implementing an IPN Listener(即時支払い通知(IPN)リスナーの作成/実装) -https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNImplementation/
Instant Payment Notification Simulator(即時支払い通知(IPN)シミュレータ) -https://developer.paypal.com/developer/ipnSimulator

その他のマニュアルおよびトラブルシューティング手順は、[ここ](https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNIntro/)をクリックしてご覧ください。

PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
PayPal IPNのトラブルシューティングと設定の方法

即時支払い通知(IPN)とは、サーバー側の通知システムで、お客さまのデータベースを購入詳細情報と支払いステータスで更新する場合に使用されます。
[ここ](https://www.paypal-knowledge.com/infocenter/index?page=flow&key=AF2)をクリックして、トラブルシューティングまたはIPNの詳細についてご確認ください。


PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
デジタルオシロスコープでLTspice

#概要
デジタルオシロスコープのFDDを修理したので、データをLTspiceで使ってみた。
#準備
横河 DL1540（古いデジタルオシロ）
windowsなパソコン
Excel
ana.exe（横河のサンプルプログラム）
LTspice
#波形をFDDに保存する。
![005.JPG](https://qiita-image-store.s3.amazonaws.com/0/18104/25a544b0-a719-15be-404b-86bacc2bf0df.jpeg)

#ana.exeでテキストに変換する。
ana 001 0 > 001.txt

#Excelで加工する。
001.txtを読み込んで
左側に、タイムベースとなる数字を書き込む。
test.csvで書き込む。
```
0.000002,2.00E-02
0.000004,0.00E+00
0.000006,0.00E+00
0.000008,2.00E-02
0.00001,0.00E+00
```

#LTspiceに読み込む
![wave.JPG](https://qiita-image-store.s3.amazonaws.com/0/18104/e7dabee6-6167-4baf-f6ab-f01eb2335668.jpeg)
電源のソースをPWLにして、test.csvを指定する。
#シュミレーションする。
![wav.JPG](https://qiita-image-store.s3.amazonaws.com/0/18104/36668011-5152-c336-298e-2e22f9a4f293.jpeg)
Wercker で動いているコンテナはどのくらいメモリを使えるのか

## Dockerコンテナを動かす時のメモリ制限

Dockerにはコンテナが使えるメモリの上限を設定するオプションがあります。

ただし、Werckerがコンテナで使用可能なメモリの制限をしていることはないようです。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="en" dir="ltr"><a href="https://twitter.com/KeithYokoma">@KeithYokoma</a> currently, there is no limit for internal memory. If you&#39;re asking about storage, I&#39;ll need to get back to you!</p>&mdash; wercker (@wercker) <a href="https://twitter.com/wercker/status/720667514464706560">2016年4月14日</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

とはいえ際限なく無限にメモリが使えるかといえばそんなことはないはずなので、物理的にどの程度まで余裕があるのか見たくなりました。

## `cat /proc/meminfo`

```
MemTotal:       65965708 kB
MemFree:        19718212 kB
MemAvailable:   60278804 kB
Buffers:        17326960 kB
Cached:         18271976 kB
SwapCached:            0 kB
Active:         25406236 kB
Inactive:       13851668 kB
Active(anon):    3699772 kB
Inactive(anon):    72860 kB
Active(file):   21706464 kB
Inactive(file): 13778808 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:           1038092 kB
Writeback:             0 kB
AnonPages:       3654520 kB
Mapped:           399196 kB
Shmem:            113660 kB
Slab:            6550332 kB
SReclaimable:    5800244 kB
SUnreclaim:       750088 kB
KernelStack:       24256 kB
PageTables:        22288 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    32982852 kB
Committed_AS:    7536848 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:    655360 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      225280 kB
DirectMap2M:    67014656 kB
```

## まとめ

Power is everything
PayPalウェブペイメントの「rm」変数の使用方法

ボタンのコードに設定した復帰URLを送信する際、「rm」(復帰メソッド)変数の2つの値により、PayPalが使用するPOST/GETアクションを切り替えます。

1. rmの値:
 - rm = 1の場合はGET
 - rm = 2の場合はPOST
2. 個人設定でアカウントの即時支払い通知(IPN)が有効になっているかどうかで、アクションは以下のように異なります。
 - 個人設定でIPNが有効になっている場合
     - 初期設定の復帰メソッド(rmの指定なし)はPOSTです。
     - 個人設定でIPNが有効で、スクリプトのURLが設定されている場合、return_urlを呼び出す初期設定のアクションはPOSTです。つまり、return_urlがスクリプトの場合、初期設定がrm = 2なので、これを設定する必要はありません。
 - 個人設定でIPNが無効になっている場合
     - 初期設定の復帰メソッド(rmの指定なし)はGETです。
     - 個人設定でIPNが無効になっている場合、return_urlを呼び出す初期設定のアクションはGETです。つまり、return_urlがスクリプトの場合、IPN変数をそのURLにPOSTするには、rm = 2を設定する必要があります。


**注:**

 - 自動復帰を使用している場合、自動復帰は常にGETのため、rmは関係ありません。

 -  return_urlページが静的ウェブページで、個人設定でIPNがオンになっている場合は、return_urlページがGETによって呼び出されるよう、ボタンコードでｒm = 1を設定する必要があります。設定しないと、静的ウェブページはPOSTを受信できないので、ユーザーが復帰ページに移動しようとする際、HTTP 405エラーが発生します。

 - クエリ文字列とともに、 return=http://yoursite.com/somescript.php?name=valueなどの独自のカスタムパラメータを渡す場合、PayPalは、[送信]ボタンをクリックして完了ページに移動するよう指示するHTMLフォームを生成しますので、ご注意ください。

PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
CodeDeployの上限に引っかかった話

※こちらの記事は[個人ブログ](https://tech.tsukapah.com/limited-codedeploy/)に移行しました。

AutoScaleでEC2を100台にした後にデプロイしてみたらFailしました。
![codedeploy.jpg](https://qiita-image-store.s3.amazonaws.com/0/32208/3e09aa5c-df76-5d69-5166-36c6e7ba35af.jpeg "codedeploy.jpg")
どうやら[Limit](http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/limits.html)に引っかかったようです。

本番当日だったので泣きそうになりましたが、
まずは落ち着いて[request a limit increase](https://console.aws.amazon.com/support/home#/case/create%3FissueType=service-limit-increase)しつつ、いったんEC2を50台まで減らしてからデプロイし、改めて100台に増やしました。
使うプロダクトの上限は把握したうえで計画的に利用しましょう。
もしくは、本番当日にデプロイしないでも済むように事前に調整しましょう。
HP ProCurve [構築]


## MEMO

- 2016年6月現在 "ProCurve" の名称は消えている
- 2015年3月にHPがアルバネットワークと統合したのが関係
- しばらく音沙汰無かったが、スイッチの名称が Aruba 2530 Switch Series 等になっている (2016年1月18日のデータシートから記載を確認)
- 因みに2016年6月のInterop 2016 Tokyo にHP、アルバ共に出展無し。内部でゴタゴタでもあったのだろうか…と好きなスイッチシリーズだけに心配

## 初期化

```cmd
erase startup-config
```

## 構築1

- ページ送りを長めに設定

```cmd
terminal length 38
```

- 時刻関連

```cmd
 conf t
 time timezone 540 02/10/2015 10:00
```

- ホストネーム

```cmd
 hostname TEST
```

- Webログインを停止

```cmd
 no web-management
```

- sshを無効にする

```cmd
 no ip ssh
```

- その他不要なサービス

```cmd
 no tftp server
 no dhcp config-file-update
```

- パスワードの設定 (Configに載らないので注意)

```cmd
 password operator user-name admin
```

- 一度保存

```cmd
 exit
 wr mem
```

## 構築2

- VLANの作成

```cmd
 conf t
 vlan 40 name NET
 vlan 101 name VLAN101
 vlan 102 name VLAN102
```

- 上流のアサイン

```cmd
 vlan 40  tagged 9-10
 vlan 101 tagged 9-10
 vlan 102 tagged 9-10
```

- 上流のアサイン (リンクアグリゲーション組んだ場合)

```cmd
 trunk 9-10 trk1 trunk
 vlan 40  tagged trk1
 vlan 101 tagged trk1
 vlan 102 tagged trk1
```

- IPの設定

```cmd
 vlan 40 ip address 192.168.40.103/255.255.255.0
```

- syslogの設定

```cmd
 logging facility local1
 logging 192.168.40.6
 logging 192.168.40.7
```

- snmpの設定

```cmd
 no snmp-server community public
 snmp-server community hoge-r manager restricted
```

- NTPの設定

```cmd
 timesync sntp
 sntp unicast
 sntp server priority 1 192.168.40.6
 sntp server priority 2 192.168.40.7
```

- ループ検出の設定

```cmd
 loop-protect 1-8 receiver-action send-disable
 loop-protect disable-timer 60
```

- ACLを使用したDHCPスヌーピング(野良DHCPサーバをガード)

```cmd
 ip access-list extended udp-67
  10 deny udp 0.0.0.0 255.255.255.255 eq 67 0.0.0.0 255.255.255.255
  20 permit ip 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255
  exit
 interface 1-8
  ip access-group udp-67 in
  exit
```

- アクセス制限

```cmd
 ip authorized-managers 192.168.40.6 255.255.255.255
 ip authorized-managers 192.168.40.7 255.255.255.255
```

- 一度保存

```cmd
 exit
 wr mem
```

## 構築3

- VLANのアサイン

```cmd
 conf t
 vlan 101 untagged 1-4
 vlan 102 untagged 5-8
```

- 一度保存

```cmd
 exit
 wr mem
```

## その他 (POE関連)

- Cisco独自のPOEに対応(POE対応スイッチ)

```cmd
 power-over-ethernet pre-std-detect 1-8
```

- POE+に対応させる(POE+対応スイッチ2530シリーズとか)

```cmd
 int 1-8 poe-allocate-by value
 int 1-8 poe-value 33
 ※valueで"手動"で電力の最大供給量を明示する、という意味になる
```

## その他 (保守)

- Configアップロード

```cmd
 copy startup-config tftp 192.168.40.7 /HP/TEST_config.txt
```
./でなく$(dirname $0)がべんり

知ってる人の多いと思われる小ネタ備忘録です。

```
. ./setting
```

だとそのディレクトリでのみ実行が可能。
で、以下のようにすると、実行するシェルスクリプトと同じディレクトリのパスを指定するようになるので、違う場所からも実行可能に。べんり。

```
curdir=$(dirname $0)
. $curdir/setting
```

親ディレクトリを取りたいときはこんなかんじですかね。

```
pdir=$(cd $(dirname $0)/..;pwd)
```

参考：
http://www.task-notes.com/entry/20150214/1423882800
http://blog.hrendoh.com/get-parent-directory-with-shellscript/#.VNsyaFPaeQP
あなたのお家をスマートハウスにしてみませんか？　＃SSNG編＃

今回は特別編ということで家電製品の遠隔操作に使用するSSNGのインストール方法と使用方法について紹介したいと思います。
システムの話になってしまうので難しい話になってしまうかも知れませんがご容赦ください。 :persevere: 

まず、SSNGについて説明するところから始めようと思います。
SSNGとは**S**uper **S**peed **N**ode **G**eneratorの略称です。
SSNGの特徴としてOS側の設定をできるだけ変更しなくても使用できるように設計されているので、インターネットに接続していれば簡単に使用できる点が挙げられます。



1.	インストールの手順
下記のサイトからアプリケーションをインストールする。
https://smarthouse-center.org/sdk/download/

2.	操作手順
手順１　自分のIPアドレスを確認する。
![ssng02.jpg](https://qiita-image-store.s3.amazonaws.com/0/130490/f0e806da-e2aa-a0f8-b3b9-35e2d06e8537.jpeg)
(図1-1)実際のPC画面



手順2　送信ボタンを押し通信を開始する。
![ssng03.jpg](https://qiita-image-store.s3.amazonaws.com/0/130490/f186ec2d-0ed6-fb9a-999e-3745098a5cb2.jpeg)
(図1-2)実際のPC画面



手順3　searchボタンを押して操作したいIPアドレスを探し、選択する。
EDT1に入力したいコマンドを入力し、送信ボタンを押し起動させる。(赤、青、黄の順)
※この場合はエアコンを遠隔操作しているため、EDT1に入力するコマンドが「30」と「31」になっているが他の家電製品を操作する場合は各々のコマンドを入力する。
![ssng04.jpg](https://qiita-image-store.s3.amazonaws.com/0/130490/00e7dabf-ad90-4b7d-3827-b96c0c9bc522.jpeg)
(図1-3)実際のPC画面


今回は遠隔操作の例としてエアコンを使用したが、操作する家電によってはEDTに入力するコマンドは異なってきます。
それぞれのコマンドについては後々紹介いたします。
Rails で controller を作らずに root ページを 404 にする

Rails で `config/routes.rb` に `root` メソッドを記述しないと `/` にアクセスしたとき、Rails の "Welcome aboard" ページが表示される。

これを解消するには、ふつう `root` を適当なコントローラの `#index` なりのアクションにマッピングするだろうが、コントローラを作らずに短い記述で `/` を 404 (Not Found) にする方法を教えてもらった。

## やり方

```rb
# config/routes.rb
Rails.application.routes.draw do
  root to: ->(env) { [404, {}, []] }
end
```

このように、Rack インタフェースに準拠した Proc オブジェクトにマッピングすればよい。

もちろん、404 以外も可能で、 `[200, {"Content-Type" => "text/plain"}, ["OK"]]` なども可能だ。

`/` をアプリケーションロジックで扱わない場合に使えるテクニックだと思う。

### 引数の env について

これを省略すると、他の Rack Middleware から `@app.call(env)` と呼びだされた場合にエラーになるようだ。

## 参考

- http://railsdoc.com/routes
- http://rack.github.io/
WordPressのスケジュールで大量に発生する「do_pings」フックを削除するには

WordPressをインストール後に擬似CRONのスケジュールにて、「do_pings」フックが大量に発生したとき、同フックの削除（消去）の仕方を示します。

簡単なプログラムを以下の様に作り、実行するだけです。

```
<?php

// WordPressのインストール先の「wp-load.php」を読み込む
require dirname(__FILE__) . "/wp-load.php";

// フックのスケジュールをクリアする
wp_clear_scheduled_hook('do_pings');

?>
```

do_pingフックが大量（私の場合には１０００個単位）発生しているので、これで消去しています。

お役に立てれば。
Bluemix：簡易ETLサービス「DataConnect」で、ちょろっとデータ連携

**サービスの名前が変わったようなので、タイトルだけ名前変えてます**
**旧：DataWorks 
新：DataConnect**


Bluemixの複数のサービスを連携、ってことを試してみました。
**プログラミングとか無しに、ほぼクリックだけで環境構築できたので、手軽さは良い感じかもと思いましたので試してみると面白いかと思います**

## おおまかな流れ
下図のようなことをやっています
![スクリーンショット 2016-07-05 11.35.23.png](https://qiita-image-store.s3.amazonaws.com/0/119378/6888c4cb-74b7-78fe-606d-2571d69b1b28.png)

・データはPostgreSQLに溜まっている
・dashDBで溜まったデータを分析したいので、定期的にデータをPostgreSQLからコピーしたい
・コピーするのには、簡易ETLなクラウドサービス「Dataworks」を使ってみる
・PostgreSQLでOLTP系処理まわしてて、たまったデータをdashDBに移すイメージですかね

## 予め準備したもの
**・dashDB**
　準備の仕方はこちらをご参照。冒頭の「DB作成」だけでOK。
　http://qiita.com/azzeten/items/d10fa47d115093cffef8

**・Dataworks**
　そもそもDataworksって何？という話はこの辺で勉強しました。
　http://www-03.ibm.com/software/products/ja/dataworks
![スクリーンショット 2016-07-05 11.31.07.png](https://qiita-image-store.s3.amazonaws.com/0/119378/6fb206c8-5599-918a-938e-7258c075764a.png)

　Bluemixログイン後、以下のアイコンをクリックしてサービスを作成すれば環境完成です。

**・compose.ioで構築したPostgreSQL**
　準備の仕方はこちらをご参照。予め適当にデータは入れておきました。
　http://qiita.com/azzeten/items/c1e72b3fe3cb9421e3ba

## 手順
### 1. Dataworksで、PostgreSQL側のコネクションの設定を定義する
![スクリーンショット 2016-07-05 11.41.41.png](https://qiita-image-store.s3.amazonaws.com/0/119378/c1bb374c-26fd-48cb-204d-558bff5445f1.png)

・Create Connectionから「PostgreSQL on Compose」をクリック

・接続情報を定義します。ホスト名やポート番号、adminユーザのパスワード等はcomposeの画面（以下キャプチャ）から確認ができます。設定が終わったら、右上の緑色のボタン（CREATE CONNECTION）をクリックして内容を保存します。

![スクリーンショット 2016-07-05 11.44.12.png](https://qiita-image-store.s3.amazonaws.com/0/119378/ed28fb60-86e7-e2fd-b7c4-ba49991a1114.png)


### 2. Dataworksで、dashDB側のコネクションの設定を定義する

・Create Connectionから「dashDB」をクリック

・1の手順と同じ要領で接続情報を定義します。ホスト名やポート番号等はdashDBの管理画面にて「Connect」→「Connection Information」をクリックすると確認ができます。設定が終わったら、右上の緑色のボタン（CREATE CONNECTION）をクリックして内容を保存します。


### 3. PostgreSQL→dashDBへのデータコピージョブの定義をする
Refine & Copyからジョブの定義をします。
![スクリーンショット 2016-06-18 16.47.53.png](https://qiita-image-store.s3.amazonaws.com/0/119378/e3dae370-efd2-4929-c87a-c2451d844810.png)

データのfrom側の設定を行います。
・ConnectionではPostgreSQLの設定を選択し、スキーマやテーブルを画面に従いながらクリックしてきます。
・設定が終わったら「COPY TO TARGET」をクリック
　（ちなみにここでREFINE DATAをすると、データのクレンジングができるっぽいです。色々機能があったので全部は試してないですが、カスタマイズがききそうな印象）


![スクリーンショット 2016-06-18 16.48.33.png](https://qiita-image-store.s3.amazonaws.com/0/119378/866279db-7a4d-db74-085b-a7b8283fb98f.png)

データのTo側の設定を行います。
・こちらも画面に従っていけばOKです。
・データを追記するか、中身を入れ替えるか、などなどはTable Actionの部分で必要に応じて変更することが可能です。
・即時実行するか、スケジュール実行するかも定義することができます。ここでは即時実行したかったので「RUN」をクリックしました。


### 4. ジョブ実行
![スクリーンショット 2016-06-18 16.49.59.png](https://qiita-image-store.s3.amazonaws.com/0/119378/a1713b77-8bcf-983f-4358-08d60688b62f.png)

Activity Runsのところで「100%」と出てくれば、ジョブ完了です。
RUN ACTIVITYを見ると、ログ・ファイルっぽいものが照会できます（Sparkとか書いてあるので、Sparkの技術を使ってるんですね、きっと）。

### 5. 動作確認
![スクリーンショット 2016-07-05 11.48.57.png](https://qiita-image-store.s3.amazonaws.com/0/119378/ff42202d-0530-eec6-2a32-6ff8d6ffbe4f.png)

・dashDB側で、テーブルを確認します。データがちゃんと入っていることが確認できました。完成〜。!
JAVA long型　適当にメモ


▪️JAVA

```java
long l = 5 + 2L;
		System.out.println(l);//結果7
```

↑
異なる型で演算を行った場合、
<font color = "#ff0000">大きな型に統一されてから演算</font>

--------------------------------------------------------
###equalsと==の違い
・文字列(オブジェクト型)は、「equals」で比較する。
・数値(プリミティブ型)は、「==」で比較する。

---------------------------------------------------------
Pepperで遊ぶ①　～Choregrapheインストール編～

# **はじめに**
Pepperで遊ぶためのChoregraphe（Win版）インストール手順となります！

# **概要**
- SoftBankRoboticsでアカウントを作成
- Choregrapheのダウンロード
- Choregrapheのインストール
- Choregrapheの起動確認

※今回はWindowsでの手順となります！

# **詳細**
## **SoftBankRoboticsでアカウントを作成**
### [SoftBankRoboticsのサイト](https://developer.softbankrobotics.com/jp-ja/)にアクセスし、右上のサインインを選択
![WS000639.png](https://qiita-image-store.s3.amazonaws.com/0/79134/ba02b609-30d2-856d-7e05-1c70b9062de5.png)

### ユーザ登録を選択
![WS000640.png](https://qiita-image-store.s3.amazonaws.com/0/79134/b257c60e-468b-96ee-653f-ac6977b05ef2.png)

### 必要な情報を入力し、「アカウントを作成する」を選択
![WS000641.png](https://qiita-image-store.s3.amazonaws.com/0/79134/47952625-0a6b-00b0-08ba-dc72d6bdf229.png)

## **Choregrapheのダウンロード**
### ダウンロードを選択
![WS000642.png](https://qiita-image-store.s3.amazonaws.com/0/79134/3e79162e-252a-1f8c-d13f-9f07c76a3f8c.png)

### Pepperを選択
![WS000643.png](https://qiita-image-store.s3.amazonaws.com/0/79134/0800f7d1-0b09-5f69-681c-74003572d125.png)

### 対象のChoregrapheを選択し、ダウンロードする
![WS000644.png](https://qiita-image-store.s3.amazonaws.com/0/79134/7ff5ee85-a8e8-7ecf-d712-e1834d2c4277.png)

## **Choregrapheのインストール**
### ダウンロードしたファイルを実行し、「次へ」を選択
![WS000645.png](https://qiita-image-store.s3.amazonaws.com/0/79134/ba77403a-cc00-6ea1-0752-273d50a69f9f.png)

### 「同意します」にチェックをつけ、「次へ」を選択
![WS000646.png](https://qiita-image-store.s3.amazonaws.com/0/79134/4c845ee8-580c-dd8b-3d4a-2422756a01d8.png)

### 「評価版モード」にチェックをつけ、「次へ」を選択
![WS000647.png](https://qiita-image-store.s3.amazonaws.com/0/79134/d1ac8e8d-e373-e8d3-64b1-dd1c5bf5f410.png)

### 「Quick」にチェックをつけ、「次へ」を選択
![WS000648.png](https://qiita-image-store.s3.amazonaws.com/0/79134/d609198a-1339-e460-80aa-f7970329b27d.png)

### インストール実施
**イメージなし・・・ｗ**

## **Choregrapheの起動確認**
![WS000649.png](https://qiita-image-store.s3.amazonaws.com/0/79134/09fe578c-a922-d6be-2b1b-4a20fcb3c288.png)


**おしまい**
DataBindingでBindingのクラスが生成されない時に確認すべきこと

DataBindingはビルド時に`~Binding`という名前のクラスを生成してくれます。
こんな感じでBindingクラスを取得できますが、たまにこのクラスが生成されないことがありますので、その時に確認すべきことをまとめておきます。

```java
FragmentMainBinding binding = 
    DataBindingUtil.inflate(inflater, R.layout.fragment_main, container, false);
```

# レイアウトに<layout>タグを書いているか
レイアウトのxmlのルートに `<layout>` タグを書いていないとDataBindingに対応したレイアウトだと認識してくれません。

```xml
<layout xmlns:android="http://schemas.android.com/apk/res/android">
```

# ビルドできているか
Android Studioは猫のように気まぐれなので、たまにビルドしてくれないことがあります。
クリーンしてからビルドしなおしてみましょう。


# キャッシュが悪さしていないか
何回クリーン＆ビルドをしてもダメな場合、謎のキャッシュが悪さをしていることがあります。
最終手段として、キャッシュをクリアしてAndroid Studioを再起動してみましょう
`File -> Invalidate Caches / Restart`


----
これでもダメな場合は、Android Studioを入れなおすくらいしか思いつかないです。
PayPalエクスプレスチェックアウトとそのしくみについて

エクスプレスチェックアウトでは、任意の支払いの支払いオプションとしてPayPalを追加できます。エクスプレスチェックアウトはPayPalの利便性とセキュリティ機能を備えています。すぐに設定でき、より多くの人が買い物しやすくなるようにします。
###しくみ
エクスプレスチェックアウトにより、顧客は、PayPalにすでに安全に保存されている配送情報と請求情報を使用して、数ステップで取引を完了でき、お客さまのサイトで情報を再入力する必要がありません。エクスプレスチェックアウトを初期設定で構成した場合、顧客が支払いを完了するにはPayPalアカウントを保有している必要があります。
###必要なAPIコールは何ですか。
エクスプレスチェックアウトは、3つのAPIで構成されます。

 * SetExpressCheckoutは、エクスプレスチェックアウトを使用して、支払いを受け取ることをPayPalに通知します。顧客はPayPalにリダイレクトされ、ログインして、資金源と配送方法を選択するように促されます。SetExpressCheckoutは、残りの2つのAPIコールで使用するトークンを返します。
 * GetExpressCheckoutDetails (オプション)は、配送先住所や名前など、支払いを行う顧客に関する詳細を返します。お客さまが、SetExpressCheckoutで返されたトークンをPayPalに渡すと、PayPalから顧客の詳細が返されます。
 * DoExpressCheckoutPaymentは支払いのリクエストです。顧客が最終注文で[支払う]をクリックしたときに呼び出します。お客さまが、トークンとその他の詳細を渡すと、PayPalから特定の支払い詳細と一緒に取引IDが返されます。

エクスプレスチェックアウトは、APIアクセス権を持つマーチャントが利用できます。PayPalアカウントを保有する顧客はすべて、買い物にエクスプレスチェックアウトを使用できます。エクスプレスチェックアウトには数多くのオプションが用意され、異なる決済フローを数多くサポートしています。ここをクリックして、「ペイパル エクスプレス チェックアウト インテグレーション ガイド」をご参照ください。


PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
PayPalの自動復帰機能を使用して、顧客を自分のウェブサイトにリダイレクトする方法

PayPalペイメント スタンダードの自動復帰は、支払い完了後に買い手をお客さまのECサイトに戻す機能です。これにより、PayPalでホストされる「支払い完了」ページが、お客さまのECサイトでホストされるページに置き換えられます。
注: 自動復帰とPayPalアカウントオプションサービスの両方を有効にすると、買い手は、お客さまのECサイトに戻るオプションを選択できます。
###自動復帰をオンにする手順
1.PayPalアカウントにログインします。
2.「マイ アカウント」」ページで[個人設定]をクリックします。
3.[販売ツール]、[ウェブサイトの設定]の横の[更新]の順にクリックします。「ウェブ ペイメントの設定」ページが表示されます。
4.[オン]ラジオボタンをクリックして自動復帰を有効にします。
5.[復帰URL]フィールドには、支払いの完了後に支払人がリダイレクトされるURLを入力します。

 - 復帰URLは、支払いボタン内またはリンク内に指定されない限り、すべての自動復帰支払いに適用されます。
 - 自動復帰の復帰URLを指定する場合、対象のページはPayPalユーザー規約の要件を満たしている必要があります。
 - メッセージは、支払いの実行と取引の完了を買い手が理解できるものでなければなりません。
 - メッセージは、支払い取引の詳細を記載したメールが届くことを買い手に知らせる内容でなければなりません。
 - このページは、お客さまの顧客が満足できるユーザーエクスペリエンスを提供する必要があります。以下のような条件を満たしている必要がありますが、これに限定されません: お店のホームページのほかの部分との視覚的な一貫性があり、PayPalアカウントの詳細情報を要求していない。
 - 例: お支払いいただき、ありがとうございました。取引が完了しましたので、今回のご購入の領収書を記載したメールをお送りいたします。ここをクリックしてアカウントにログインすると、この取引の詳細をご覧になれます。

6.[保存]をクリックします。

自動復帰を設定すると、支払いデータ転送を使って、買い手に支払いの詳細を表示できます。
注: PayPalは、お客さまの復帰URLを監視する権利を有します。自動復帰機能の使用についてお客さまが義務を果たしていないことが判明した場合、適切なランディングページが指定されるまで、PayPalは自動復帰の無効化を含む必要な対応を行います。


PayPalではテクニカルサポートの部署がありますので、何かPayPal実装関連の質問や技術的な質問がありましたら、下記URLで記事を検索してみてください。
https://jp.paypal-techsupport.com/
上記URLの一番下の「お問い合わせ」リンクをクリックしてまたは下記URLをアクセスして質問を送信してください。
https://jp.paypal-techsupport.com/app/ask
composerでRatchetインストール

WebSocketサーバを実装する為Ratchetをインストールしたときのメモ

```
$ curl -sS https://getcomposer.org/installer | php
$ sudo -s mv composer.phar /usr/local/bin/composer
$ which composer
$ composer -V

$ mkdir -p /usr/share/php/ratchet`　※任意のディレクトリ。ソースコードディレクトリが良い場合など適宜変更
$ cd /usr/share/php/ratchet
$ vi composer.json
{
    "require": {
        "cboden/Ratchet": "0.2.*"
    }
}
$ composer install
$ ls -l
```

Ratchetのインストールには多くのメモリを消費するためインストールが失敗する場合がある。自分はAWS EC2(microインスタンス)上で試したせいでメモリ不足になりました。メモリを確保できない場合は以下の手順でスワップファイルを作成して対応すると良い。

```
#swap有効にする場合

$ sudo mkdir /var/swap/
$ sudo dd if=/dev/zero of=/var/swap/swap0 bs=2M count=2048
$ sudo chmod 600 /var/swap/swap0

$ sudo mkswap /var/swap/swap0
$ sudo swapon /var/swap/swap0

$ sudo cat /proc/swaps

#swap解除する場合

$ sudo swapoff /var/swap/swap0
$ sudo rm -f /var/swap/swap0`
```

あまりでかいファイルを作らないように気を付けること。
私は不運なことにFileSystemFullにしてしまい開発メンバーに迷惑をかけてしまいました(-_-;)