投稿

1月 6, 2019の投稿を表示しています

仕事がイヤでたまらなくなったときに試すべき12のこと

仕事がイヤでたまらなくなったときに試すべき12のこと https://www.lifehacker.jp/2019/01/the-best-gifts-to-send-to-someone-in-another-country-1.html

AWS lambdaを使ってBatchにjobを投げる

AWS lambdaを使ってBatchにjobを投げる https://qiita.com/kurakura0916/items/d5cf54aecb1d587c0b56

ワンライナーでゴリ押し元号対応に挑戦してみる

ワンライナーでゴリ押し元号対応に挑戦してみる https://qiita.com/yoccan/items/945e045250327126255c

JavaScript 文字・文字列が大文字(小文字)かどうか判定する方法いろいろ

JavaScript 文字・文字列が大文字(小文字)かどうか判定する方法いろいろ https://qiita.com/dskymd/items/65cf0c27081facf255fe

Uberの共同創業者も参画!フードデリバリー専門店をクラウド化する「CloudKitchens」

Uberの共同創業者も参画!フードデリバリー専門店をクラウド化する「CloudKitchens」 https://techable.jp/archives/90228

定理証明リンク集 - The curse of λ

定理証明リンク集 - The curse of λ https://myuon.github.io/posts/start-learning-proof-assistant/

Excelの光と影 ~Excelデータ分析を超えていけ~ - にほんごのれんしゅう

Excelの光と影 ~Excelデータ分析を超えていけ~ - にほんごのれんしゅう http://catindog.hatenablog.com/entry/2019/01/06/181055

難民の食糧支援にかかっていた手数料を98%削減 途上国で進む、ブロックチェーン活用事情 - ログミー[o_O]

難民の食糧支援にかかっていた手数料を98%削減 途上国で進む、ブロックチェーン活用事情 - ログミー[o_O] https://logmi.jp/business/articles/320512

高層ビルを楽々クライミングできる安全靴「Column Climber」

高層ビルを楽々クライミングできる安全靴「Column Climber」 https://techable.jp/archives/90293

HTML5/CSS3のニュースやTIPSなどのまとめ (2019年1月7日)

HTML5/CSS3のニュースやTIPSなどのまとめ (2019年1月7日) https://dothtml5.com/archives/20190107_clips.html

「悟りってどんな状態?」悟った50人に心理学的手法で詳しく聞いてみた結果とは TransTech Conferenceから

「悟りってどんな状態?」悟った50人に心理学的手法で詳しく聞いてみた結果とは TransTech Conferenceから | AI新聞=AI Weekly= https://aishinbun.com/clm/20181218/1888/

JavaScriptの配列のベターな使い方4点 - Qiita

JavaScriptの配列のベターな使い方4点 - Qiita https://qiita.com/rana_kualu/items/ab2e9e299f577ff5cb91

2018年、安定してバズった「はてなブログ」は何か。 - プリキュアの数字ブログ

2018年、安定してバズった「はてなブログ」は何か。 - プリキュアの数字ブログ http://prehyou2015.hatenablog.com/entry/hatenablog

スタートアップ/企業の調べ方 · GitHub

スタートアップ/企業の調べ方 · GitHub https://gist.github.com/azu/a852b849b90b6655e425e128dc9c39a7

正月早々こんな気分にさせられるとは思わなかったので注意喚起させていただきます。

正月早々こんな気分にさせられるとは思わなかったので注意喚起させていただきます。 pic.twitte… https://tr.twipple.jp/p/ab/bea660.html

【リスクなし】Amazonチャージだけで1000ポイントキャンペーンのやり方 - ミニマリストのび太の無印良品大好きブログ

【リスクなし】Amazonチャージだけで1000ポイントキャンペーンのやり方 - ミニマリストのび太の無印良品大好きブログ http://www.muji-nobita.com/entry/amazon-gift-charge

楽天ブックス書籍検索APIを使用して、著書名で本を検索する(JavaScript)

楽天ブックス書籍検索APIを使用して、著書名で本を検索する(JavaScript) https://qiita.com/bluesDD/items/0ff8c1956f7c2c5c0e71

iOSアプリ胸部疾患臨床治験など

iOSアプリ胸部疾患臨床治験など https://kaigyoi.blogspot.com/2019/01/ios.html

TaigaをAWSに立ち上げる

TaigaをAWSに立ち上げる https://qiita.com/MH35JP/items/a89f4921d96a6a2631d5

Djangoマスターを目指す

Djangoマスターを目指す https://qiita.com/Shirokuma_0607/items/3885f177c86906eec24f

ReactでGeolocation APIを使って現在位置の緯度を表してみた

ReactでGeolocation APIを使って現在位置の緯度を表してみた https://qiita.com/10shinya/items/21620cc85820cb6e4015

NativeなJavaScriptでFetch APIを利用しAjaxを行う

NativeなJavaScriptでFetch APIを利用しAjaxを行う https://qiita.com/doriven/items/503fdc6de9bc0e725334

IOSTバウンティプログラム

IOSTバウンティプログラム https://qiita.com/otamakoto/items/b0adf8d10e3cc532670a

AWS S3のアクセス拒否の解決方法

AWS S3のアクセス拒否の解決方法 https://qiita.com/37malin/items/f5cd44760e83e2f1f482

[JavaScript] スラッシュ区切りの文字列から特定の文字列のみを切り出す

[JavaScript] スラッシュ区切りの文字列から特定の文字列のみを切り出す https://qiita.com/shosho/items/83689107d8621a96fd9e

ASCII.jp:Windows 10のコマンドライン超入門 (1/4)|Windows Info

ASCII.jp:Windows 10のコマンドライン超入門 (1/4)|Windows Info http://ascii.jp/elem/000/001/793/1793563/

週刊SPA!「ヤレる女子大学生RANKING」記事に反対署名1万7000件  「日本の恥さらし」と怒りの声も - ねとらぼ

週刊SPA!「ヤレる女子大学生RANKING」記事に反対署名1万7000件  「日本の恥さらし」と怒りの声も - ねとらぼ http://nlab.itmedia.co.jp/nl/articles/1901/06/news017.html

実践「最高のアジャイルチーム」を作る方法 - ログミーTech

実践「最高のアジャイルチーム」を作る方法 - ログミーTech https://logmi.jp/tech/articles/320513

Ubuntu増加 - 1月Webサイト向けLinuxシェア

Ubuntu増加 - 1月Webサイト向けLinuxシェア https://news.mynavi.jp/article/20190106-750441/index.html

WordPressが増加 - 1月Webサイト向けCMSシェア

WordPressが増加 - 1月Webサイト向けCMSシェア https://news.mynavi.jp/article/20190106-750555/index.html

元アップル技術者、コーヒーに挑む(探検!九州・沖縄)  :日本経済新聞

元アップル技術者、コーヒーに挑む(探検!九州・沖縄)  :日本経済新聞 https://www.nikkei.com/article/DGXMZO39648610U9A100C1MLY000/

IT屋と業務知識について - novtanの日常

IT屋と業務知識について - novtanの日常 http://novtan.hatenablog.com/entry/2019/01/05/220549

AnyPicks(エニーピックス)

AnyPicks(エニーピックス) https://www.anypicks.jp/

クライアントとサーバーどちらに実装するかの設計指針をチームで持つこと - tomoima525's blog

クライアントとサーバーどちらに実装するかの設計指針をチームで持つこと - tomoima525's blog http://tomoima525.hatenablog.com/entry/2019/01/06/075644

前澤友作社長から100万円を貰うためにTwitterのフォローとリツイートを自動化する - Qiita

前澤友作社長から100万円を貰うためにTwitterのフォローとリツイートを自動化する - Qiita https://qiita.com/relu/items/d37f746c85c6494c3799

バグを減らすために『気をつけて』作る」のではなく「バグらせるのが難しくなるように『考えて』作る」 - s平面の左側

「バグを減らすために『気をつけて』作る」のではなく「バグらせるのが難しくなるように『考えて』作る」 - s平面の左側 https://blog.okashoi.net/entry/2018/12/25/010153

パソコン興味ないのにITで働いて3年経とうとしてる件

パソコン興味ないのにITで働いて3年経とうとしてる件 http://blog.livedoor.jp/bluejay01-review/archives/54696998.html

【2019年版】世界最先端の認証認可技術、実装者による『CIBA』解説 - Qiita

【2019年版】世界最先端の認証認可技術、実装者による『CIBA』解説 - Qiita https://qiita.com/TakahikoKawasaki/items/9b9616b999d4ce959ba3

身をくねらせて水陸そして氷の上も移動できるロボット「Velox」が万能すぎる!

身をくねらせて水陸そして氷の上も移動できるロボット「Velox」が万能すぎる! https://techable.jp/archives/90270

GCEでJupiterを構築 | GMOアドパートナーズグループ TECH BLOG byGMO

GCEでJupiterを構築 | GMOアドパートナーズグループ TECH BLOG byGMO https://techblog.gmo-ap.jp/2019/01/05/gce%E3%81%A7jupiter%E3%82%92%E6%A7%8B%E7%AF%89/

KB4461627インストール後、EXCEL2010が起動できなくなりました - マイクロソフト コミュニティ

KB4461627インストール後、EXCEL2010が起動できなくなりました - マイクロソフト コミュニティ https://answers.microsoft.com/ja-jp/msoffice/forum/all/kb4461627%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88/68b80965-87c5-4c04-b3ab-64101c1b33bd

2019年01月06日 ロボット業界ニュースヘッドライン

2019年01月06日 ロボット業界ニュースヘッドライン https://robotstart.info/2019/01/06/robot-news-matome20190106.html

三角関数は何に使えるのか 〜 サイン・コサイン・タンジェントの活躍 〜 - Qiita

三角関数は何に使えるのか 〜 サイン・コサイン・タンジェントの活躍 〜 - Qiita https://qiita.com/drken/items/41b4ec6bde794cbcd0f6

iPhone売上不振でアップルが「緊急社内ミーティング」開催へ | Forbes JAPAN(フォーブス ジャパン)

iPhone売上不振でアップルが「緊急社内ミーティング」開催へ | Forbes JAPAN(フォーブス ジャパン) https://forbesjapan.com/articles/detail/24770#

スマホからのアクセス増 - 12月デバイスタイプ別シェア

スマホからのアクセス増 - 12月デバイスタイプ別シェア https://news.mynavi.jp/article/20190106-750545/index.html

Node-redのJSONata事例 ~ある配列の値を使って、別配列中のObjectを処理する~(ボツネタだけど動くよ)

Node-redのJSONata事例 ~ある配列の値を使って、別配列中のObjectを処理する~(ボツネタだけど動くよ) : 概要 Node-redのJSONata式のボツネタだけど事例なので載せます。 背景 ・HTMLフォームから最大3つの画像(URLかファイルで、1、2、3とナンバリングされる)を受け取りたい。 ・ユーザーはラジオボタンでURLかファイルを選択する。 ・ユーザーは一度ファイルをブラウザ上で指定した後に「やっぱURLで」と気が変わったらURLを指定してSubmitできる。 →この場合に、ラジオボタンの選択内容と実際にPOSTで受け取るファイルの個数がずれる場合が出てくる可能性があるので、要らないデータは保存したく無い!というのがやりたい事。 さて (色々すっ飛ばして、)以下の様な msg.req.files と msg.msgs が存在する。 { "req":{ "files":[ { "fieldname": "msg_1_img_file", "originalname": "hogehoge.png", "encoding": "7bit", "mimetype": "image/png", "size": 60708 } ]}, "msgs": [ { "index": 0, "type": "image", "imgtype": "url", "img": { "url":...

Node-redのJSONata事例 ~特定のフィールド名を持つものだけを取り出す~

Node-redのJSONata事例 ~特定のフィールド名を持つものだけを取り出す~ : 概要 タイトルの通りです。 説明 payloadで渡された複数あるObjectの中で、msg_で始まるものだけを拾いたい場合は以下で動きます。 ( $.payload.$sift(function($v, $k) { $match($k,/msg_/)}); ) というか、JSONataのドキュメントに載ってるsiftの事例まんまです。 謎なのは、/msg_/だと動くけど、/msg/だと動かない点。msgが予約語なんだろうか。。 あまり深く調べずに先に進んでしまったので、だれかご存知だったら教えてください。

IPv4 によるマルチユニキャスト

イメージ
IPv4 によるマルチユニキャスト : 1. 概要 この記事では、主にクラウド対策として IPv4 による “マルチユニキャスト 1 ” 実現のための Golang サンプルコードを投稿します。 2. はじめに 前回までの記事で、マルチキャストやブロードキャストについて投稿してきました。 IPv4 によるマルチキャスト IPv6 によるマルチキャスト IPv4 マルチキャストによるフェイルオーバー IPv4 マルチキャストによる自律ネットワークシステムの構築 IPv4 によるブロードキャスト が、クラウドのインフラ環境(AWS, GCP, Azure など)においては、マルチキャストやブロードキャストなどの通信は制限されているのが通例だと思います。 また、同じサブネット環境ならばマルチキャストやブロードキャストなどはシンプルに利用できて有用ですが、異なるサブネット環境や、グローバル環境においては、複雑化したり現実的ではないことが多くあります。 そこで、今回の記事では、これらの対策として、マルチユニキャスト 1 の Golang サンプルコードを投稿します。 これは、マルチキャストの代換案の一つですが、実際には、マルチにユニキャストしているだけの大した内容ではありません(笑)。 が、このサンプルでは、不特定多数のノードを扱えるマルチキャストの利点に近づけるため、ノードをマルチユニキャストグループへ自動参加させるコードも併せて投稿しておきました。 これは、ノード数が多く、ユニキャストアドレスペアを各ノードの設定ファイルへ静的に追加するのが困難な場合にも有用かもしれません。 3. 環境 RHEL-7系 Go 1.9 4. 構成 node1 192.0.2.1/24 node2 192.0.2.2/24 5. 設計 6. Golang サンプルコード 6-1. シンプルなマルチユニキャストのサンプル $ sudo nvim ~/go/multi_unicast_only.go ~/go/multi_unicast_only.go func SendMultiUnicast(addresses []string, message string) { // Start mul...

Node-redでAPIを呼び出す際のRetry処理(デザインパターン?)

イメージ
Node-redでAPIを呼び出す際のRetry処理(デザインパターン?) : 背景 Node-redで外部のAPIを呼び出すことが良くありますが、その時に相手が万が一落ちてた時に速攻失敗にするのは嫌なので、念のためループさせてます。 (あんまりダメだった事ないけど) そこで使ってるループ処理を晒しておきます。 解説 set loop params ループの際のパラメータを指定します。 delay はミリ秒で指定し、 _retryCounter はまんまです。 _okStatusCode は、APIの戻り値が msg.StatusCode に入っている前提で、その値が何であればLoopをExitするかという値です。 something お好きなAPI処理を突っ込んでください。 loop/timeout 一つめのSwitchでStatusCodeをチェック、NGならカウンター減らし、二つ目のSwitchでカウンターが残っていたら指定秒数Wait、ダメならExitします。 そのあとのOKとERRORはただの箱なので自由に使ってください。 ソースコード [{"id":"2618b143.9cc716","type":"subflow","name":"loop/timeout","info":"入力項目: \n \nmsg._retryCounter \n as number\n ex: 60 (times)\n \nmsg.delay\n as number \n ex: 10000 (msec) \n defalut, 10000(msec) \n \nmsg._okStatusCode \n as number \n ex: 201 \n describe OK case's http statusCode. \n ","category":"","in":[{"x":620,"y":440,"wir...

AWS IoT ボタンと IFTTT を繋いで活用してみる

イメージ
AWS IoT ボタンと IFTTT を繋いで活用してみる : 概要 衝動買い的に、Wi-Fi でつながる「 AWS IoT エンタープライズボタン 」と LTE でつながる「 SORACOM LTE-M Button powered by AWS 」を購入したので、とりあえず IFTTT と繋いでみました。 コード 手順はソラコムの中の人が書かれている以下の記事が大変わかりやすいです。 1-click/functions/ifttt at master · j3tm0t0/1-click - GitHub AWS lambda でコードを動かす必要がありますが、一度作ってしまえばいじる必要なし。 AWS IoT 1-Click の管理画面でボタン毎の設定をして、それに合わせて IFTTT で Applet を作ればいろんな使い方ができるようになっています。 ちなみに私は、上記記事で公開されている AWS lambda 用の node.js スクリプトの仕様を少し変更して、python で書き直して使ってます。コードは以下に置いておきます。 Python script for AWS lambda to forward AWS IoT 1-Click event to IFTTT - GitHubGist 活用例 ボタンが IFTTT に繋がるようになったので、実際の使い方を2つほど組んでみました。 1. スマートコンセントの ON/OFF ボタン 家で使ってるスマートコンセント( tp-link HS105 )を AWS IoT エンタープライズボタンでリモートコントロールします。 ◆ AWS IoT 1-Click でのプレイスメント作成 ◆ IFTTT での Applet 作成 ボタンの押し方(LONG/SINGLE/DOUBLE)に応じて、スマートコンセントの ON/OFF を切り替え。 今までスマートコンセントはスマートスピーカー経由で使っていましたが、手元のボタン押すだけで済むのは意外と便利です。ボタンってすごい。 2. 子供に持たせる連絡ボタン 子供に持たせて、ボタンが押されたら LINE でメッセージを飛ばします。 ◆ AWS IoT 1-Click でのプレイスメント作成 ◆ IFTTT ...

AWS EC2 のインスタンスのコピーを作成

イメージ
AWS EC2 のインスタンスのコピーを作成 : AWS EC2 のインスタンスのコピーを作成してサーバーを動かす方法です。 OS を環境ごとまるごとコピーして、IP アドレスを変えて動作させることです。 1) 既存の OS から 自分の AMi を作成 2) 自分の AMI からインスタンスを作成 の2つのステップになります。 私は、Ubuntu 18.04 で次の手順で行いました。 1) 既存の OS から 自分の AMi を作成 instance-id は変更して下さい。 ws ec2 create-image --instance-id i-0ebb41a6f489999b9 --name "Second server" --no-reboot そうすると、次のように出力されます。 { "ImageId": "ami-0045ec213e5999b99" } 2) 自分の AMI からインスタンスを作成 この作業はコンソールで行いました。

AWS Global Acceleratorを試してみた

イメージ
AWS Global Acceleratorを試してみた : AWS Global Acceleratorを試してみました。 どんなもの? リージョンにまたがって配置されたEIP, NLB, ALBに対して、Static IPに対し接続したトラフィックを分散するサービスです。 前準備 あらかじめ動作確認用に、us-east-1とus-west-1にALB+EC2(nginx)の環境を作成しておきます。 1. Acceleratorを作成する 2. Listenerを追加する 3. Endpoint Groupを追加する 4. Endpointを追加する あらかじめ作成しておいたALBを指定します。 作成されるとStatic IPが2個払い出されます。 5. 接続してみる 東京に近いus-west-1の方に接続されます。 us-west-1の方のnginxを止めると、statusがunhealthyになり 502の後 しばらくすると今度はus-east-1の方に接続されます。 us-west-1の方のnginxを起動してしばらくすると、また東京に近いus-west-1の方に接続されます。 その状態で、今度はus-west-1のTraffic dialを1%に変更します。 するとus-east-1の方に接続されます。 雑感 Route53でトラフィックを分散するのと違いDNSのキャッシュを考慮しなくて良いのでいいですね。

AWS Step Functionsを用いた低信頼性処理の提案

イメージ
AWS Step Functionsを用いた低信頼性処理の提案 : 概要 時々エラーが発生したりメンテナンスで停止させる必要のある逐次処理に対して、運用負荷の低いリカバリ処理方法を提案する。 課題 動画処理のように処理時間が長くコストの大きな処理フローで、エラー復旧時の再処理のエンジニアオペレーションを簡易にしたい。 課題の背景事情 A処理→B処理→C処理 のような一連の処理フローがあり、数分から数時間と処理時間が長い。これを毎日数百件程度処理を行っている。 フローの特定のプロセスで外部のAPIを叩くのだが、その外部APIは時々エラーになる可能性があり、数時間メンテナンスに入ることがある。また、ベストエフォート運用で深夜休日になんらかの異常で停止した場合、翌営業日の復旧の可能性がある。 このシステムを運用するチームにシステムエンジニアは1名しかいない(つまり自分だ)。隣接システムの障害に24時間対応はしたくない。幸い、隣接システムが復旧するまで、このシステムが処理遅延しても問題はないので、隣接システム復旧後に誰でも簡単に再処理ができる方法があればよい。 従来の手法 処理が失敗したらリトライをするような実装だと、隣接システムが落ちている間に何度もリトライするが、停止原因によってはリトライしてほしくない場合がある。例えば、メンテナンスで動作チェックをしているような場合である。 処理が一度でも失敗したら停止するような実装の場合、上記の問題は解決できるが、都度復旧対応が必要であり復旧時にログをさかのぼって失敗した処理を特定してやり直す必要があった。頻度が多いと運用上大変になる。 課題解決の方針 従来シェルスクリプトで書いていたようなフロー処理を AWS Step Functions に置き換える。Step Functions ならリトライ処理を定義できて、自分で書かなくてよい。 エラーになった処理を任意のタイミングで再処理するために、エラーデータをSQSキューに保管する。具体的にはメイン処理の入力パラメータをキューに保存し、再処理したいときには再度キューからパラメータを取り出してメイン処理に流せばよい SQSを選択した理由 : Step Function 単体で任意のタイミングまで特定処理を待たせることが実現できないか検討したが、現時点の...

HTML5/CSS3のニュースやTIPSなどのまとめ (2019年1月6日)

HTML5/CSS3のニュースやTIPSなどのまとめ (2019年1月6日) : 2018年下期「スマホのみ」でインターネットを利用する人が49%を占める (Web担当者Forum) 平均年収15万ドルで5万人採用 - アマゾンの新拠点選びに学ぶ、最高に優秀な人材の集め方 (BUSINESS INSIDER) すべての企業が「IT企業」になる時代へ (WSJ) タイトルだけ考えたら漫画にしてくれるサービス「まんがか」爆誕 - 数万件の会話データと「いらすとや」の画像を駆使 (ITmedia) グーグルフォトに感じる漠然とした恐怖 (東洋経済) クラウドワークスとラクスルの決算資料が神レベルな件 (決算が読めるようになるノート) モジラがメールクライアントThunderbirdの高速化、美観アップ、そしてGmailのサポートを約束 (TechCrunch) Screenshoteer - CLIでサイトのスクリーンショット取得 (MOONGIFT) 大企業機械学習エンジニアに立ちはだかる3つの壁おじさん (BizDeep) 詳細を読む

[Rails, jQuery]インクリメンタルサーチ+αを実装

イメージ
[Rails, jQuery]インクリメンタルサーチ+αを実装 : はじめに 現在プログラミングスクールにて学習中です。 カリキュラムでchatアプリの開発をしていて、インクリメンタルサーチをajaxを使用し、実装するところでハマった部分があったので記録に残そうと思います。 chatアプリ概要 今回作成しているchatアプリでは、groupsテーブル、usersテーブル、messagesテーブルがあり、groupsとusersは多対多の関係です。 中間テーブルはgroup_usersとしていてgroup_idとuser_idで紐づいています。 インクリメンタルサーチはgroupの新規作成とgroup編集で使用します。 メンバー検索欄に文字を入力するとuserの候補がでてくる仕様です。 そもそもインクリメンタルサーチとは Googleなどで検索欄に文字を打つと色々候補が出て来ると思いますが、それのことです。 対象読者 インクリメンタルサーチの実装はできているが、group新規作成でcurrent_userを検索候補で非表示にしたい方。 group編集でcurrent_user含め既にgroupに所属しているuserを検索候補から非表示にしたい方。 group新規作成について group新規作成の際にcurrent_userを検索で表示しないようにします。 最初からグループに参加していてほしいユーザーになるので、検索する時にcurrent_userを参加させますか?と出てきたら変ですよね。 それを防ぐためにcontrollerで処理をしてあげます。 users_controller.rb def index @users = User.where('(name LIKE(?) and (id != ?)', "%#{params[:keyword}%", "#{current_user.id}") respond_to do |format| format.json end end LIKE句でUserモデルから曖昧検索をします。 name LIKE(?)の?部分にparams[:keyword]が入ります。 これで曖昧検索...

【AWS】Pythonの開発環境Chaliceを使ってみる - アマゾン売れ筋ランキング

イメージ
【AWS】Pythonの開発環境Chaliceを使ってみる - アマゾン売れ筋ランキング : PythonのLambda関数の開発環境 Chalice を使って、アマゾン売れ筋ランキング(本)の情報をスクレイピングして毎日定時にメールで送信してくれるシステム(とは言っても単に小さなプログラム)をつくってみます。 1.プログラム概要 本システムはPythonのプログラムのコア機能として、 BeautifulSoup を使って、アマゾンの「売れ筋ランキング(本)」のページをスクレイピングします。スクレイピングについては以下の記事が詳しいですね。 PythonでWebスクレイピングする時の知見をまとめておく コア機能に、次のAWSの機能を2つ追加します。このプログラムはLambda関数として CloudWatch Events で毎日定時に起動されます。また SES を使ってスクレイピングの結果をメールでお知らせします。 Lambda関数の開発環境として Chalice を使えば、AWSの面倒なRoleやPolcyの設定が自動的に行われるので、楽にdeployできるようになります。またPythonからAWSにアクセスするために定番の boto3 を使います。 今回のプログラムは、コア機能を除けば、以下の過去記事と同じものです。 【AWS】Pythonの開発環境Chaliceを使ってみる - CloudWatch Events 2.ライブラリインストール 環境は基本的に以下の記事の環境設定を基本としています。 【AWS】Python Lambdaのdeploy - Chalice 次にプロジェクトを作成作成します。 $ chalice new-project amazon-rank $ cd amazon-rank BeautifulSoupとlxmlをカレントの vendor ディレクトリにインストールします。Chaliceはdeploy時にvendorディレクトリのパッケージを一緒にアップしてくれます。 pip install beautifulsoup4 -t vendor pip install lxml -t vendor 3.ソースコード app.py from chalice import Chalice import ...

Gmail APIで安全なメール解除サポートサイトを作ってみる

イメージ
Gmail APIで安全なメール解除サポートサイトを作ってみる : 昨年末急に「世の中の役に立つWebサービスを作りたい」と思い立ち、 とりま月に1本ずつWebサービスを作ってみようと思ってます。いつまで続くかはわかりません。ペースもおおむねという感じです。 で、先月は、株式関連で適時開示IRをWebSocket接続でGoogle以上に深く?サクサク検索できる 「株だネット」 という検索ツールを作ってみたのですが、まぁ東証さんに許可が取れなければ閉鎖するかも。(もし東証に権利を持っている方で使いたいという方がいらっしゃればご連絡ください) さて、今月は目先を変えてメール関連の便利サービスを作ってみることにしました。 これです。 「メール解除サポート」 では、UIは手抜きですが (^^; Gmail API を使って処理した機能の解説をします。 動機 楽天やYahoo!やAmazonなどを使う時、注意していないといつのまにかメール配信サービスへの登録がどんどん増えていきます。 やがてそれらの大半は開くことも無くなりますが、延々と届き続け、自分のメーラーを埋め尽くし、必要なメールの閲覧を困難にしていきます。 それはインターネットリソースの無駄使いでもあります。 でも、それらのメールをひとつひとつ開いて解除する作業は意外に面倒で億劫です。 そこで、それを抽出して作業を楽にしてくれるサービス 「メール解除サポート」 を作ってみました。 受信メールから配信解除リンク等を抽出してリストアップし、不要なメールの配信解除を簡単にします。 また、重複する配信先は最新のものひとつだけに限定するので無数のメールから自分で探すよりも楽です。 今回は Gmail API を使うので Gmail 利用者限定。 安全性は下にも書きましたが、サイト側からはメール内容に一切触れる事すらできないようにしているので安全といえるかもしれません。 Gmail API用のOAuthクライアントIDの取得 Gmail API を有効化 Gmailをプログラムから利用するには、まず、自分の Google アカウントで Google Developer Console へ入り 最初に Gmail API を有効化する必要があります。 「APIとサービスの有効化」で...