orangain flavor

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

「Pythonクローリング&スクレイピング」という本を書きました

2016-12-23更新: 電子書籍書籍版の情報を更新しました。電子書籍版も好評発売中です! Pythonを使ってクローリング・スクレイピングを行い、データを収集・活用する方法を解説した書籍です。 Pythonの基本から、サードパーティライブラリを使ったスクレイピ…

画像内の秘密情報をOCRでマスクするコマンドmasecretを作った

2017-02-05 更新 v0.2.0へのバージョンアップに伴って、使い方を更新しました。 スクリーンショットを撮影していると、しばしばマスクしておきたい値が存在します。数枚ならば手作業で塗りつぶしてもいいですが、手順書を作成するようなときは枚数が多くなっ…

Python 3をサポートしたScrapy 1.1が公開されました

2016-12-09追記 「Pythonクローリング&スクレイピング」という本を書きました!Scrapyについても1つの章を割いて解説しています。 Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-作者: 加藤耕太出版社/メーカー: 技術評論社発…

Re:VIEWのDash用Docsetを作った

Re:VIEWはドキュメント作成のためのツールで、DashはOS Xでドキュメントを閲覧するためのビューアーです。 タイトルの通り、Re:VIEWのFormat Guideを閲覧できるDash用Docsetを作りました。 使い方 DashのPreferences > Downloads > User Contributedから検索…

2015年を振り返って

2015年を振り返って 今年はブログなどでのアウトプットが少なかったですが、一応活動していました。 昨年のMBSハッカソンで優勝したことで、ITを活用した30分のテレビ番組の企画に参加して、その中で使うアプリの開発を行いました。テレビ番組の撮影の裏側も…

PythonでブログのHTMLから本文抽出 2015

2015-12-20 19:14追記: readabilityの説明を追加・修正しました。 Webページをクロールした時に、ざっくりと本文 (ページ内の重要なコンテンツ) のみを抽出できると便利です。 Google検索すると、特に日本語だとExtractContent以外の情報があまり見つかりま…

JavaScriptレンダリングサーバーSplashでスクレイピング

これはクローラー/Webスクレイピング Advent Calendar 2015の9日目の記事です。 本記事では、Scrapinghub社*1が開発しているSplashというオープンソースソフトウェアを紹介します。 github.com JavaScriptを使ったページからスクレイピングする方法としては…

Scrapy 1.0が公開されました

Pythonの有名なWebスクレイピングフレームワークのScrapyがバージョン1.0になりました。*1 0.24からの主要な変更点は下記のとおりです。 SpiderでItemの代わりにdictを返せるようになった Spiderごとにsettingsを設定できるようになった Twistedのloggingの…

LinuxディストリビューションにおけるPython 3デフォルト化の流れ

2015年6月2日修正:henrichさんのコメントを受け、Debianの記述を修正しました。 最近のLinuxディストリビューションにおいてPython 3がデフォルトになってきているという話をチラホラ聞くので、状況を調べてみました。 結論 PEP 394にディストリビューショ…

Joel on Softwareを読んだ

元MicrosoftのJoel氏が書いたエッセイ集です。 自分の中で感じていてもうまく言語化できなかったことが明確に言語化されていて素晴らしかったです。 Joel on Software作者: Joel Spolsky,青木靖出版社/メーカー: オーム社発売日: 2005/12メディア: 単行本購…

ハッカーと画家を読んだ

Y Combinator創業者のポール・グレアム氏が書いたエッセイ集です。 ハッカーと画家 コンピュータ時代の創造者たち作者: ポールグレアム,Paul Graham,川合史朗出版社/メーカー: オーム社発売日: 2005/01メディア: 単行本購入: 109人 クリック: 4,884回この商…

UNIXという考え方を読んだ

もともとUNIXの考え方は理解しているつもりでしたが、ちゃんと言語化されているものを読んだことがなかったので読んでみました。新しい発見があった箇所や非常に頷ける箇所をピックアップします。 UNIXという考え方―その設計思想と哲学作者: Mike Gancarz,芳…

プログラミングしながら運動できるエアロバイク FitDesk X-2.0を買った

2016-01-16追記: 購入した当初は高いと思っていたサドルですが、座り方で多少改善されるようです。身長160cmの妻でも漕げています。 平日の家に帰ってご飯を食べてから寝るまでの時間はコードを書いていることが多いのですが、まったく運動しないことが気に…

Re:VIEWとDockerとCircleCIで原稿を継続的インテグレーション

Re:VIEW で執筆する原稿を継続的インテグレーションしたかったので、以下の図のような仕組みを作りました。 ローカル執筆環境の前提条件 Docker 1.3以降がインストールされている Re:VIEW形式の原稿のフォルダがある Re:VIEWやLaTeXはDockerイメージのものを…

2014年を振り返って

2014年を振り返って 2014年は対外的に評価される機会があって嬉しかったです。 IBM Bluemix Challengeで賞をもらった IBM developerWorks 日本語版 : IBM Bluemix Challenge: 概要 Webページには載ってませんが、美術館を探したり記録をメモできるモバイルア…

Webサイトのクローラビリティをチェックする

これはクローラー/スクレイピング Advent Calendar 2014の18日目の記事です。 Webサイトをクローリング、スクレイピングしたいと思ったとき、はじめに何をするでしょうか? 私はとりあえずブラウザの開発者ツールでDOMを覗きますが、その後robots.txtや利用…

クローラーをデーモンとして動かす ― Scrapyd

この記事はクローラー/スクレイピング Advent Calendar 2014の12日目の記事です。 ScrapyはPythonにおけるクローリング・スクレイピングのフレームワークとして有名ですが、Scrapydという興味深い機能があるので今日はこれを紹介します。 Scrapydはその名の…

Pythonでクローリング・スクレイピングに使えるライブラリいろいろ

2016-12-09追記 「Pythonクローリング&スクレイピング」という本を書きました! Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-作者: 加藤耕太出版社/メーカー: 技術評論社発売日: 2016/12/16メディア: 大型本この商品を含む…

#isucon 2014予選の延長戦をやってみた

予選の時間内では足りてないことばかりだったので、もう少し試行錯誤することにしました。 #isucon 2014の予選をほぼ一人で戦うハメになった話 - orangain flavor 目標は50000点、できれば60000点出したい。 予選終了時 Python実装 DBはRedisのみを使う Cook…

#isucon 2014の予選をほぼ一人で戦うハメになった話

AMI提出した!2人目が起きたのが14時、3人目は17時という厳しい状況の割には頑張ったと思う。10位には入れなかったけど。めっちゃ楽しかったー!運営の方、ありがとうございました #isucon— かと (@orangain) 2014, 9月 28 まとめ リモートでタイムゾーンが…

プロフェッショナルのための実践Heroku入門 の紹介

以前公開した、 The Twelve-Factor Appの日本語訳が書籍に収録されるということで、一冊頂けました。ありがとうございます。せっかくなので簡単に紹介します。 Herokuの哲学 私が初めてHerokuを触ったとき*1に感動したのはそのオープンさです。Heroku独自の…

PyCon JP 2014に参加しました

2014年12月23日 編集:資料・動画の埋め込みは重かったのでリンクにし、いくつかの資料へのリンクを追加しました。 毎回行きたいと思いながらも用事があって行けなかったPyConに初めて参加しました。 感想 Kenneth Reitzさんによる1日目の基調講演は、言語、…

RequireJSを始めて戸惑ったこと

公式のGetting Started単純すぎでは? 自作のhelper/util.jsをAMD使って書いてるような意識高い人は、今さらGetting Startedを読まないと思うのです。。 Examplesからリンクされている以下のサンプルを眺めるのがオススメです。 Simple one page app Multipa…

Amazon S3のUS Standardリージョンって何?

aws

EC2などのサービスでは US East (Northern Virginia) というリージョンが存在しますが、S3だけは US East の代わりに、US Standard というリージョンが存在します。何故なのか気になるのでちょっと調べてみました。 AWS公式資料から US Standardへのリクエス…

Heroku上のDjangoアプリで静的ファイルをS3から配信する(後編)

前編 までで静的ファイルをS3から配信することができました。しかし、実際にHerokuにpushしてみると、毎回全ファイルがアップロードされてしまい、非常に時間がかかります。 原因はこうです。collectstaticはファイルのタイムスタンプを比較してファイルが変…

Heroku上のDjangoアプリで静的ファイルをS3から配信する(前編)

HerokuにDjangoアプリケーションを置いて、静的ファイルもHerokuから配信した場合、USまでのレイテンシがあるので1ファイルごとに結構な時間がかかります。 試しに同じアプリケーションをさくらVPS(大阪)と、Heroku(US)に置いた場合、さくらでは 30ms〜1…

Rubyによるデザインパターンを読んだ

恥ずかしながら10年以上プログラミングをやっていて、今までちゃんとデザインパターンを勉強したことがありませんでした。 それぞれのパターンはなんとなく知っているけど、ちゃんと理解できてはいないという状態でした。 デザインパターンを勉強しようとし…

Mac OS X 10.9.2でGitHubにアクセスするとサーバー証明書のエラーが発生する場合の解決策

問題 Mavericks の最新のアップデート(10.9.2)をインストールした後、Google ChromeでGitHubにアクセスした時に、SSLサーバー証明書のエラーが表示されるようになりました。 このように「実際の github.com に接続できない」と表示されます。 アドレスバー…

Python/FlaskアプリからOAuthでGitHub APIを使う

このようなサンプルが意外と見つからなかったので作りました。 GitHub API GitHubはWeb API を提供しており、リポジトリやユーザーなどをAPI経由で取得・操作することができます。 執筆時の2014年2月現在では、v3とbetaの2つのバージョンがあり、デフォルト…

unattended-upgradesはインストールしただけでは動かない

2018-06-17追記: パッケージの自動削除について追記しました。検証環境はUbuntu 16.04 LTS x86_64です。 ということを知らなかったので、Debian/Ubuntuでの自動アップデートについて改めて調べてみました。 動作を確認した環境は、Ubuntu Server 12.04 LTS x…