orangain flavor

じっくりコトコト煮込んだみかん2。知らないことを知りたい。

内部実装から理解するRenovateの処理の流れ

Renovateはアプリケーションで使用している依存ライブラリを更新するためのPull Requestを自動で作成してくれるソフトウェアです。 柔軟な設定が可能で便利な反面、設定項目は150以上と非常に多く、思い通りに設定するのが難しい場合もあります。 意図した通…

ぷよぷよプログラミングをReactにしてみた

10代のプログラミングをやり始めたばかりの頃に、ちょっとしたゲームを作ったこともあったけど、長い間遠ざかっていた。一般的なGUIのアプリケーションがイベント駆動で処理を行うのに対し、ゲームは自分でメインループを回して毎フレーム描画するもの*1で、…

2021年を振り返って

2021年を振り返って このブログでの2021年の記事は1件のみで、個人としてのアウトプットが少ない1年となりました。 勤務先での開発は相変わらず楽しくやってますが、それ以外の時間は疲れていることが多かったというのが正直なところです。 家にいる時間は昨…

Ktor Serverのリクエストハンドラーで同期処理を行うと何が起きるのか

Ktor Server はKotlinのコルーチンを活用したWebアプリケーションフレームワークです。 コルーチンによる非同期処理性能を発揮するためには同期処理をなるべく避けるべきですが、例えばJVM言語におけるデータベース接続で広く使われているJDBCでは、同期処理…

2020年を振り返って

2020年を振り返って 2020年は大変な一年となり、家に居る時間が圧倒的に増えました。元からインドア派なことや、リングフィットアドベンチャーやFitDeskなどの室内で運動する手段があったことから、それほど体調を崩すこともなく暮らせたのは幸いでした。 勤…

Cloud Run(フルマネージド)でリクエスト外に処理をすると200倍遅くなる

gcp

はじめに Cloud Runはサーバーレスなコンテナ実行基盤です。この記事ではフルマネージド版のCloud Runのみを対象とし、フルマネージド版のCloud Runを指して、単にCloud Runと表記します。 Cloud Runの料金プランの特徴として、リクエストの実行中のみ課金対…

monorepoのCI/CDで変更された部分だけをビルド/デプロイする

2020-07-11: Cloud Buildでの記述が誤っていたので修正しました。 はじめに 今年のゴールデンウィークは暇があり、勤務先で複数のリポジトリを使っているのが辛く感じてきていたため、monorepoについて調べてみました。monorepoについての説明やメリットにつ…

動的な値を含むJSON文字列をテストするための json-fuzzy-match を作った

APIなどのテストで、JSONが意図した形式・値になっているかチェックしたいことがあります。 文字列として比較してチェックする場合、JSONに含まれる空白がちょっと変わっただけでエラーになりますし、チェック対象のJSON文字列が整形されていないとテストの…

2019年を振り返って

2019年を振り返って 2019年は勤務先での仕事が楽しい1年でした。 長く開発・運用されてきた大規模なアプリケーションへの追加開発を通して、コードの保守しやすさについて考えることが多く、とても良い経験になりました。 年の後半はGCP (Google Cloud Platf…

JVM系言語のSQLマッパーについてPostgreSQLの型への対応状況を比較検証

KotlinでWebアプリケーションを作るにあたり、SQLを直接記述できるタイプのO/Rマッパー(本稿ではSQLマッパーと呼びます)を探し求めました。 SQLマッパーに求める機能 SQLマッパーに求める機能はBindとMapです。この記事ではBindとMapを次のように定義しま…

Pythonクローリング&スクレイピングの初版の詰まりどころ

Pythonクローリング&スクレイピングの初版(表紙の文字が青い本)は2017年に出版され、現在では動かなくなってしまったコードもあります。 そこで初版を手にしてくださった方のために、主な詰まりどころと対策をまとめておきます。初版のサポートページには…

SeleniumとHeadless ChromeでAmazonの注文履歴を取得する

Pythonクローリング&スクレイピングの初版ではAmazonの注文履歴を取得するサンプルコードを掲載していました。増補改訂版の執筆の際、RoboBrowserのようなJavaScriptを扱えないクローラーではログインが難しくなっていたので、対象のサイトを変更しました。 …

Pythonクローリング&スクレイピングの増補改訂版が出版されます

Pythonクローリング&スクレイピングはおかげさまでご好評いただき、この度、増補改訂版を出版する運びとなりました。紙版は本日8/10発売で、電子書籍版は既に発売中です。 Pythonクローリング&スクレイピング[増補改訂版] -データ収集・解析のための実践開発…

Pythonクローリング&スクレイピングの韓国語版が出版されました

表紙のクモは光沢処理されてて綺麗です。 https://wikibook.co.kr/python-for-web-scraping/ 原書では日本のWebサイトを多く扱っているので、翻訳して大丈夫なのかと勝手に心配していましたが、韓国のサイトに置き換えられていました。他にも自然言語処理でM…

2018年を振り返って

主に子育てで時間の取れない生活が続いており、1つ前の記事が2017年の振り返りなのは非常に良くないですが、少なくとも1年に1回は書けてよかったです。 2018年を振り返って 今年は転職したのが大きなイベントでした。まあ楽しくやってますということで、勤務…

2017年を振り返って

年末にCivilization Revolution 2にハマってしまい時間がなくなりました。 2017年を振り返って 2016年末に出版されたPythonクローリング&スクレイピングが高い評価をいただけていて、とてもありがたく思っています。 また、書籍に関連してコミュニティでの発…

【1万部突破】Pythonクローリング&スクレイピングの発売から約1年

先月ツイートしましたが、Pythonクローリング&スクレイピングは第5刷となり、累計発行部数が1万部を突破しました。 【1万部突破!】Pythonクローリング&スクレイピングの増刷(第5刷)が決まり、発売1年足らずで累計発行部数が1万部を突破しました!読者の皆…

AWS FargateとLambdaでサーバーレスなクローラー運用

これはWebスクレイピング Advent Calendar 2017の7日目の記事です。こんな感じでAWS FargateとAWS Lambdaを使ってサーバーレス(EC2レス)なクローラーを作ります。 この記事はFargateでのクローリング処理にフォーカスしており、クロールしたHTMLをS3に保存…

言語実装パターンを読んだ

言語実装パターン ―コンパイラ技術によるテキスト処理から言語実装まで作者: Terence Parr,中田育男,伊藤真浩出版社/メーカー: オライリージャパン発売日: 2011/12/24メディア: 大型本購入: 5人 クリック: 333回この商品を含むブログ (13件) を見る 「言語実…

可視化のお供に「PythonユーザのためのJupyter[実践]入門」

PythonユーザのためのJupyter[実践]入門を頂きました。ありがとうございます。そして出版おめでとうございます。 PythonユーザのためのJupyter[実践]入門作者: 池内孝啓,片柳薫子,岩尾エマはるか,@driller出版社/メーカー: 技術評論社発売日: 2017/09/09メ…

ElementTreeやlxmlで名前空間を含むXMLの要素を取得する

PythonでElementTreeやlxmlを使って名前空間つきのXMLから要素を取得しようとしても、思い通りに取得できないことがあります。これはよくあるハマりどころですが、あまりまとまった情報がないのでまとめておきます。 Python 3.6.0で検証しました。 目次: 解…

「プログラミングHaskell」を読んだ

ちょっと前の記事で宣言したように「プログラミングHaskell」を読んだ。 A5判で本文は185ページと読みやすい分量なのに、小さな関数を1つずつ作りながらしっかりと理解できて良かった。これもHaskellの記述の簡潔さのおかげと言えるだろう。若干説明が足りな…

神戸Pythonの会でクローリングとスクレイピングについて話した

だいぶ日が経ってしまいましたが、神戸Pythonの会でクローリング・スクレイピングについて2回話してきました。 1回目はRequestsとBeautiful Soupを使った基本的なスクレイピングについて、2回目はHeadless Chromeを使ったスクレイピングについて話してきまし…

「スモールコンパイラの制作で学ぶプログラムのしくみ」を読んだ

最後まで実装したわけではないが、とりあえず関数呼び出しや四則演算を伴う鶴亀算のコードは動くようになり、あとは時間さえかければ機能を増やせるところまでできたので満足した。 結果として、知識としてなんとなく知っているレベルだったことに実感が伴う…

将棋の定跡を勉強するためのアプリ「Kifu Notebook」を作った

最近3月のライオンを見て、子供の頃以来の将棋を始めるなどした。 最近は将棋も改めて勉強してる。直接のきっかけは3月のライオンを見たことだけど、大人になってからボードゲームをやると子供の頃とは違うように見えることに気づいたというのもある— かと (…

Glance NewsというAndroidアプリを公開しました

Glance Newsはサッと見るだけで世の中の流れをつかむためのニュースアプリです。 NHK NEWS WEBのトップニュース7つを表示するだけの機能を持っています。 デフォルトでは毎日4回、朝8時、昼12時、夕方18時、夜21時に更新され、通知が表示されます。 Android…

Pythonクローリング&スクレイピングの増刷が決まりました

おかげさまで売れ行き好調のようで、Pythonクローリング&スクレイピングの増刷が決まりました。 scraping-book.com 現在Amazonでは新品の紙の本が品切れで、在庫のステータスも表示されない状態になっていますが、2月1日以降は順次在庫が復活するとのことで…

RequestsとBeautiful Soupでのスクレイピング時に文字化けを減らす

多様なWebサイトからスクレイピングする際、Webサイトによっては文字化けが発生することがあります。 RequestsとBeautiful Soupを組み合わせる場合に、なるべく文字化けを減らす方法を解説します。 Beautiful Soupはパーサーを選択できますが、ここではhtml.…

2016年を振り返って

2016年を振り返って 今年はやはり書籍「Pythonクローリング&スクレイピング」を出版できたのが大きかったです。お陰様で良い評価をいただけているようで、ありがたいことです。 scraping-book.com 2013年の振り返りの時点で、やりたいことの1つとして「ブロ…

PhantomJSとか使わずに簡単なJavaScriptを処理してスクレイピング

この記事はクローラー/Webスクレイピング Advent Calendar 2016 16日目の記事です。 JavaScriptが使われているWebページからスクレイピングする場合、PhantomJSなどのヘッドレスブラウザーを使うのが一般的です。 ただ、ちょっとしたJavaScriptを解釈できれ…