Category:

puppeteerでファイルをダウンロード

この記事は Node.js Advent Calendar 2020 の2日目の記事です。 puppeteer でファイルダウンロードする方法はこちらの issue がまだopenなことからも分かるように、すんなり実現できる公式の方法はなさそうです。 とはいっても、スクレイピングをしてて、ファイルダウンロードしたいケースはあるわけで、実際に試してみようと思います。 前準備 とりあえず、puppeteerをインストールします。puppeteer以外に必要なライブラリは、個別に追記しています。 npm install puppeteer –save 実行方法 サンプルソースを適当な名前のファイル(たとえばsample.js)にコピペしてnodeコマンドで実行するだけで、実際に動かすことができます。 node sample.js ファイルをダウンロードする 方法1【△】: 単純にブラウザのファ Continue Reading

Posted On :

Webブラウザ上でニコニコ動画風にコメントを表示

コロナの影響で、リモートでの勉強会が増えてきましたが、プレゼン中に反応が少なくて寂しいなぁと感じることがあります。 でも意外にチャットは盛り上がってることが多いので、画面共有しているブラウザ上にニコニコ動画風にメッセージをアニメーション表示する機能を作ってみることにしました。 やりたいこと プレゼンターが会議URLを発行する 参加者は会議URLからコメントを入力する プレゼンターのWebブラウザ上に、参加者のコメントがニコニコ動画風にアニメーション表示される アーキテクチャ 検討の結果、以下の技術を採用することにしました。 ブラウザ上でコメント常時受付(フロント、プレゼンター側) => WebSocket(socket.io) 任意のページ上にコメント表示(フロント、プレゼンター側) => ブックマークレット(良いものができたらChrome拡張化して公開) コメント常時受付(サ Continue Reading

Posted On :
Category:

GitLab-CIのTips

GitLab CIのTips的なものを記載していきます。 環境(stg / prd)毎に異なるレジストリにpushする 実際の運用では、stagingとproductionのDockerイメージを、異なるレジストリで管理することもあると思います。そのようなケースではEnvironment scopeを使うと良いと思います。 まず、以下のイメージのように同名のカスタム変数を異なるEnvironment scope(stg / prd)で登録します。 その上で、.gitlab-ci.ymlを以下のようにします。 元々のbuildの内容は.buildとしてテンプレート化する build_stgとbuild_prdを新たに作って.buildをextendする タグ名$CI_COMMIT_TAGのパターンマッチで、x.y.zの形式なら環境名をprdとし、それ以外なら環境名をstgとする(それにより読 Continue Reading

Posted On :
Category:

GitLab CI + kaniko でDockerイメージをビルド

業務ではGITリポジトリとしてGitLabを使ってるのですが、ローカルPCでDockerイメージを作成する運用だと ローカルの変更が混じってしまう可能性がある イメージを作成するタイミングがあいまいだし、作成忘れがあったりする などの問題があり微妙だったので、GitLabにタグ(1.5.2など)をプッシュしたタイミングで、自動的にDockerイメージを作成してGCRにビルドさせることにしました。 少し前に 会社のブログ で kaniko を使うケースを紹介してくれていたので、やってみることにしました。 GitLabでDockerイメージをビルドする方法の候補 改めてGitLabの ドキュメント を見てみると、以下のように書いてあります。 There are three methods to enable the use of docker build and docker run duri Continue Reading

Posted On :
Category:

標準モジュールunittestでpythonのテストを書く

Pythonで本格的?にテストを書き始めました。標準ライブラリの unittest が普通にまあまあ使いやすいので、使い方をまとめていきます。 基本的な書き方 基本は以下の構造になります。 import unittest class TestSimple(unittest.TestCase): @classmethod def setUpClass(cls): """各クラスが実行される直前に一度だけ呼び出される""" print('setUpClass called.') @classmethod def tearDownClass(cls): """各クラスが実行された直後に一度だけ呼び出される""" print('tearDownCla Continue Reading

Posted On :
Category:

Pythonでasyncioを使った非同期処理

Pythonで非同期処理を実装する場合、 asyncio モジュールを使うのが一般的だと思いますが、並行処理をさせたり、ネストしたりするケースは多少気をつけることもあったので、メモ的にやり方を残しておきます。 シーケンシャルな非同期処理 まずはシンプルなケースとして、3サイト(qiita, google, yahoo)の合計6ページについて、pyppeteer(chromiumを起動して非同期スクレイピングするライブラリ)を使って、HTMLを取得するケースを書いてみました。 from pyppeteer.browser import Browser from pyppeteer.page import Page from pyppeteer.launcher import launch from typing import List import datetime from asyncio Continue Reading

Posted On :
Category:

投資について調べてみた

最近「中田敦彦のYouTube大学」を見ていて、ちゃんと投資をしないとなーという気持ちになったものの、投資に関しては全くの素人だし書籍を読み込むほどの情熱も持てないので、YouTubeを見たり証券会社のWebサイトを見たりしながら、投資関連の知識をメモしていこうと思います。 前提知識 所得税 (会社員の場合) 所得税 = 課税所得 * 所得税率 そもそも「所得」とは収入からその収入を得るために使った経費を抜いた金額というような意味 課税所得は、課税対象になる所得のこと(課税対象は給与収入ではない) 所得税率は、累進課税。課税所得が多いほど税率が高くなる。最高で45% 課税所得 = 給与収入 – 給与所得控除 – 所得控除 給与収入は会社から支払われる給与・賞与の合計金額 給与所得控除は、給与収入から計算さる。収入が多いほど控除額も大きくなるが上限195万円。給与所得控除は「みなし経費」とも Continue Reading

Posted On :
Category:

GCR(Google Container Registry)を使ってみる

Google Container Registry(GCR)はGCPが提供するプライベートなDocker Registryです。Docker Hubと同じようにDockerイメージのアップロード/ダウンロードができ、かつ、外部から利用されることもありません。 今回は、自作したDockerイメージをサービスアカウントを通じてCLIでGCRにpushしてpullするところまでを検証してみようと思います。基本的には公式のクイックスタートをベースに検証を進めます。 GCRの特徴 以下の様なことができるみたいです。 Docker Registoryとして、Dockerイメージをpushしたりpullしたりできる アクセス制御ができる CI/CDシステムと連動できる 今回はこれのうち1.と2.あたりを軽く検証してみます。 事前準備 GCP側の設定 こちらからGCPのプロジェクトを作成/選択します 今回 Continue Reading

Posted On :
Category:

AirflowでDockerOperatorを動かす

Airflowは、ワークフローをプログラムで作成、スケジュール、および監視するためのプラットフォームです。仕事でAirflowを採用することにしたので、今回はAirflowをローカルPC上で動かして、DockerOperatorで任意のDockerコンテナを実行しつつ、必要な要素(DAG実行時のパラメータ指定とか環境変数渡しなど)を試していきたいと思います。 Airflowについて 公式のトップページから引っ張ってきただけですが、以下のような原則・特徴があるそうです。 原則 スケーラブル Airflowはモジュール化されたアーキテクチャを備えていて、Messageキューを使用して任意の数のワーカーを調整でき、無限に拡張できる 動的 AirflowのパイプラインはPythonで定義されており、動的にパイプラインを生成することができる 拡張可能 独自の演算子を簡単に定義し、ライブラリを拡張して Continue Reading

Posted On :
Category:

Poetry+direnvで環境管理しているPythonアプリをVS Code上でDebug実行する

ここ最近Pythonのローカル開発環境においては、Poetryで仮想環境+パッケージ管理を行い、direnvで環境変数管理を行うスタンスなのですが、VS Code上でDebug実行しようと思ったら少し設定が必要だったのでメモ的に残しておきます。 Poetry Poetryは仮想環境構築とパッケージ管理をまとめて実行できる便利なツールです。つまり、venvとpipの代替ツールとなります。詳細は以前記事を書いたのでそちらを参照ください。 poetryでパッケージ・仮想環境を管理 direnv 12 factor を意識して、設定は環境変数に格納するというのが一般的になってきていると思いますが、ターミナルであるディレクトリにcdしたさいに、現在のディレクトリもしくは親ディレクトリを探索して、.envrcが存在していた場合そこに記載されている内容を環境変数にロードしてくれる便利なツールです。別のデ Continue Reading

Posted On :