windows10で再起動後にDockerがうまく動かない時の対処法

最近、IMEの表示が変わっているにも関わらず、急に日本語が入力できなくなり再起動をせざるを得ないシーンが多々ありました💦
そして、再起動後にDockerがうまく動いてくれない……

そんなときの対処法です

①タスクマネージャーを開いてDockerDesktopを「 タスク終了 」

②下のほうにあるDockerServiceも消しておく

③スタートウィンドからDockerDesktopを開く

APIGatewayでマッピングテンプレートを使いたい

こんな感じでサーバレスなアプリケーションを作成したい時ありませんか?
そして、運が悪いことに①からPOSTされるContent-Typeが「
application/x-www-form-urlencoded 」だった~なんてことありますよね….
( application/jsonになっていれば、うまいことLambdaのハンドラに渡してくれるっぽい )

そんな時は、APIGatewayでマッピングテンプレートを使ってうまいことLambdaに渡してあげましょう!

①対象リソースのメソッドを選択後、

メソッドリクエスト → 統合リクエスト → Lambda
メソッドレスポンス ← 統合レスポンス ← Lambda

と表示されている「統合リクエスト」のリンクをクリックする。

②画面下部に「マッピングテンプレート」が表示されるので、「マッピングテンプレートの追加」を選択し、「application/x-www-form-urlencoded」を入力する。

完成形

③追加したContent-Typeをクリックすると謎の自由入力欄が表示されるので、下記の内容を入力する


完成形
{
    #foreach( $token in $input.path('$').split('&') )
        #set( $keyVal = $token.split('=') )
        #set( $keyValSize = $keyVal.size() )
        #if( $keyValSize >= 1 )
            #set( $key = $util.urlDecode($keyVal[0]) )
            #if( $keyValSize >= 2 )
                #set( $val = $keyVal[1] )
            #else
                #set( $val = '' )
            #end
            "$key": "$val"#if($foreach.hasNext),#end
        #end
    #end
}

※ここでは、keyのみをurlデコードしてvalueは日本語や改行が含まれている場合、うまく処理できないのでLambdaに渡してからそこでデコードする形にしました。
pythonであれば、下記のようにすればうまく動くはずです。

import json
import requests
import urllib.parse

def lambda_handler(event, context):

    parse_test = urllib.parse.unquote(event['test'])

    return {
        'statusCode': 200,
        'body': json.dumps(parse_test)
    }
    

こんな感じで動くのでは?ないでしょうか….

まとめ
   Content-Typeは、「application/json」で送ってほしいナ💦

beeceptorが便利だった件

webhookを使って何か便利にしたいとき、beeceptorを使えば、爆速で実現することができます。

https://beeceptor.com/

アクセスすると、下記のような画面が表示されます

①赤丸部分にエンドポイントとなる名前を入力し、青い「Create Endpoint」をクリック

②画面遷移後、エンドポイントのURLが表示されるのでこれをコピーして、webhookの指定URLへ貼り付け

③この画面のまま待機し、POSTやGET等でこのエンドポイントに投げると結果が表示。

どんな内容が投げられてくるのかわからない・仕様が明記されていない場合でも、単純明快(*^^*)

初めてのPHP サンプルコードの在処

サンプルコードを写経する作業がきついので、サンプルコードを引っ張ってきて動作確認をしたいときありますよね?

そんな時はこちら
リンク[https://github.com/oreillymedia/Learning_PHP]

こんな…ありがとうございます!なんていうのは少し早くて、対応表の見方が少々難解なので書いておきます。

display-code/に各章に記載してるサンプルコードがあります。また、そのディレクトリ下(例: display-code/ data-groups←4章を指す)に、toc.txtなるものが存在します。こちらは、各章内のサンプルコードとの対応表です。

nginxでbasic認証してみた

1.動機

・リンクを知られていると誰でも見れるのは少し気持ち悪いなと感じたため

2.環境

・ubuntu 20.04.1 LTS(64bit)
 visualboxの仮想環境
・nginx 1.18.0
・apache2-utils
 →htpasswd作成用

3.手順

① htpasswdで認証情報を作成
  →下記コマンド実行後、設定パスワードを入力

$htpasswd -c (パス)/.htpasswd (ユーザー名)

② ①で設定したファイルをnginxで読み込む


  ・/devにアクセスした際に認証をかけたい場合、
   /etc/nginx/sites-availavle/defaultを下のように編集
  
  location /dev {
    auth_basic “認証画面で表示する文言”;
    auth_basic_user_fire ①で設定したパス;
    …
  }

③ nginxの設定再読み込み

$nginx -s reload
$service nginx restart

④ 完成
  ①で設定したユーザー名とパスワードを入力してログイン