今回はServerless FrameworkでRESTfulAPIを介しS3からデータを取得したり保存したりします。
DynamoDBの回と同様に、プロジェクトの設定ファイルであるserverless.ymlにCloud Formationの書式でS3の設定からIAM周りまで一元管理できます。分かってくると楽しいですね。逆に詰まるとネット上に情報があまり転がってなくて地獄ですがw
続きを読む
今回はServerless FrameworkでRESTfulAPIを介しS3からデータを取得したり保存したりします。
DynamoDBの回と同様に、プロジェクトの設定ファイルであるserverless.ymlにCloud Formationの書式でS3の設定からIAM周りまで一元管理できます。分かってくると楽しいですね。逆に詰まるとネット上に情報があまり転がってなくて地獄ですがw
続きを読む
Quora回答シリーズです。
プログラマやエンジニア、デスクワークをされている方に質問です。仕事中な何を飲まれていますか?やはりコーヒーですか?コーヒー以外におすすめはありますか?
https://qr.ae/pNy6J9
酒ですね!
時代はアルコール駆動開発ですよ!←
続きを読む
Quora回答シリーズです。
Macで使えるお勧め動画編集ソフト教えて下さい Mac初心者です。目的はビデオ編集です。 有償でもかまいませんので、ソフトを教えて下さい。 出来れば、日本語対応でユーザーが多いソフトをお願いします
https://qr.ae/pNy6MP
ちょっとした作業だったらiMovieで十分なんですよね。最近はFinalCutProx使ってますが切り貼りだけならiMovieが楽かもしれないw
Quora回答シリーズです。
今どきはWebサーバー毎にアクセスログやエラーログを保存せずに共通の別サーバーに保存するのが主流ですか?
https://qr.ae/pNy6HG
一定規模以上のサービスだとよくやるやつですね。
続きを読む
Quora回答シリーズです。
Webサーバー2台でPHPのセッションを使いたいのですが、2台が共通で参照できる領域がありません。DBは負荷の懸念があるので避けたいのですが他に何か方法はありませんか?
https://qr.ae/pNy6h8
回答には書きませんでしたが、以下のようなことも念頭に置いて考える感じですかね。
あとPHPは最初からmemcahedにセッション情報を保存する機能が付いているのでこれを使うのも手ですかねぇ。
Quora回答シリーズです。
高校生にプログラミングの仕事をアルバイトで委託することは法律上、問題ありませんか?
https://qr.ae/pNy6GX
地方毎に何らかの条例がある可能性もありますが、一般的には高校生というより年齢による制限があります。
続きを読む
今回はServerless FrameworkでRESTfulAPIを介しDynamoDBを触ります。
プロジェクトの設定ファイルであるserverless.ymlにCloud Formationの書式でいろいろ定義できるのでテーブルの作成やIAM周りの設定もすべて一元管理できます。テキストファイルでほとんどが完結するのほんと最高ですね。
続きを読む
Lambdaから外部のサーバとHTTPによる通信を行ってみます。
とは言っても特別な制約はありませんので基本的に自由行うことができますが、実行時間によって課金される点に注意が必要です。相手方のサーバからレスポンスが中々返って来ないとその時間分だけ課金されます。またVPCの中にLambdaを置いて実行する場合はインターネットゲートウェイなどの設定が必要になります。
では行ってみましょう。
続きを読む
AWSにServerless Frameworkを利用してRESTfulAPIを作成する際、クエリー文字列などの引数を取得する方法についてメモします。今回はAPI Gatewayのテンプレート関連の機能は使わず、Lambda側ですべて処理します。利用する言語はNode.jsです。
続きを読む
Quora回答シリーズです。
同僚のプログラマーで目立つ存在でもない人のGitHubを見つけたところ、スター100以上のEmacs Packageを開発していました。私なら自慢したくなるものの、プログラマーは爪を隠すのでしょうか?
https://qr.ae/pNyMyU
後述しますがこの回答が高評価もPVも自己ベストとなりましたw どうして……(;´∀`)
続きを読む
Quora回答シリーズです。
AWS (EC2) を使った受託開発は、納品時にインスタンスを移管することができないので、開発開始時にクライアントにAWSアカウントを作ってもらう必要がありますか?
https://qr.ae/pNyMrE
この質問には以下の参考URLが添えられていたのですが、移管できること自体を理解されているのかよく分からなかったので、一般的なお話をしました。
Quora回答シリーズです。
これからの時代、プログラマーはフリーランスを目指すべきですか?
https://qr.ae/pNyMvz
「会社員」という仕組みはは先人が苦労して積み上げてきた物なので実は多大なメリットがあったりします。そのメリットを捨てるだけの勝算があるのかというお話をしてみました。私も今はフリーでやってますが、早期リタイアしなければ目安として年金が支給される65歳まで続けるかどうかは正直疑問があったりしますw
Quora回答シリーズです。
JavaScriptのconstとletの使い分けについてですが、皆様はどのようにされていますか?
https://qr.ae/pNyMvh
8割くらいはconst
で用が足りるんですよね。
小ネタが続いてますが、今回も小ネタですw
Webサイトの改ざん検知を手軽にパパッと行いたい場合、単純にcurlなどで取得したファイルをdiffで比較するだけでも実現できます。
というわけで以下がコード。ここでは最終的にSlackに通知しています。
#!/bin/bash
#
# 簡易的な改ざん検知からのSlack投稿
#
# 対象ページ
TARGET_URL='https://blog.katsubemakito.net/'
# 投稿先のSlack URL
WEB_HOOK_URL='https://hooks.slack.com/services/xxxxxxxx/xxxxxxxx/xxxxxxxxxxxxxxxxxx'
# 保存先ディレクトリ
STORE_DIR='/home/katsube/'
#-----------------------------------
# 最新のHTMLを取得
#-----------------------------------
cd $STORE_DIR
curl -s $TARGET_URL -o current.html
if [ $? -ne 0 ]; then
echo "Can not get TARGET_URL: $TARGET_URL" >&2
exit 1
fi
#-----------------------------------
# 前回のファイルと比較する
#-----------------------------------
if [ -f ./prev1.html ]; then
result=`diff prev1.html current.html`
if [ -z ${result} ]; then
text="変化はありません"
else
text="<!channel> 変化がありました"
fi
# Slackに投げる
curl -X POST --data-urlencode "payload={\"text\": \"${text}\"}" $WEB_HOOK_URL
if [ $? -ne 0 ]; then
echo "Can not post Slack, diff is ${result}" >&2
exit 1
fi
fi
#-----------------------------------
# 今回取得したファイルの名称変更
#-----------------------------------
# 1世代残す
if [ -f ./prev1.html ]; then
mv prev1.html prev2.html
fi
mv current.html prev1.html
非常に簡易的な物ですので、実際に利用する場合は要件に応じてカスタマイズしてください。
続きを読む
小ネタです。
csv-writerモジュールを使うとJSON的なデータをCSV形式でかんたんに保存することができます。
// CSVにしたいデータ(オブジェクト)
const data = [
{id:1, title:"吾輩は猫である", view:123},
{id:2, title:"坊っちゃん", view:456},
{id:3, title:"こころ", view:789}
];
// 準備
const createCsvWriter = require('csv-writer').createObjectCsvWriter;
const csvWriter = createCsvWriter({
path: '/var/tmp/data.csv', // 保存する先のパス(すでにファイルがある場合は上書き保存)
header: ['id', 'title', 'view'] // 出力する項目(ここにない項目はスキップされる)
});
// 書き込み
csvWriter.writeRecords(data)
.then(() => {
console.log('done');
});
次のようなファイルが生成されます。
$ cat /var/tmp/data.csv
1,吾輩は猫である,123
2,坊っちゃん,456
3,こころ,789