パッケージマネージャがパッケージをインストールする仕組み

この記事は CAMPHOR- Advent Calendar 2017 の20日目の記事です.

Python では pip,Ruby では Bundler,JavaScript (Node.js) では npm と様々なパッケージマネージャが存在します.これらを使うと,パッケージをいい感じにインストールして使えるようにしてくれますが,どのようにしてパッケージがインストールされているのかあまりよく把握していない人もいると思います.また,Ruby では GemfileGemfile.lock, Python では requirements.txt,Node.js では package.jsonpackage-lock.jsonyarn.lock といったファイルがパッケージマネージャによって使われていますが,このようなファイルは何のために存在するのか分からない人もいるかと思います.

この記事では,パッケージマネージャがどのようにパッケージをインストールしているのかを紹介します.まず,パッケージマネージャが存在しない場合を仮定してみて,そこから様々な機能を追加していくことでパッケージマネージャが何をしているかを順に見ていきます.

“パッケージマネージャがパッケージをインストールする仕組み” の続きを読む

ポートフォリオをリニューアルしました

2016年5月にポートフォリオをリニューアルしましたので, 利用している技術などを簡単に紹介します. ソースコードは MIT ライセンスで GitHub 上で公開しています.

“ポートフォリオをリニューアルしました” の続きを読む

socket.io-client で HTTP ヘッダーを設定する

Socket.IO を利用する際に, HTTP ヘッダーに認証トークンや Cookie を設定したいというケースがあります. 従来 HTTP ヘッダーを Socket.IO で設定することは難しいとされていましたが, socket.io-client 1.4 以降では extraHeaders を用いて設定できるようになっています.

“socket.io-client で HTTP ヘッダーを設定する” の続きを読む

Django Compressor + Babel で Django でも簡単に ES6 コードを扱う方法

ECMAScript 6 の実装は各処理系で少しずつ進んでいますが, 現実的に Web ブラウザで ECMAScript 6 のコードを実行するには一部の機能のみを用いるか, Babel 等のコンパイラを用いて ECMAScript 5 互換のコードに変換して利用することになります.

この記事では Python の Web アプリケーションフレームワーク Django と Django で静的ファイルの圧縮等を行う Django Compressor と Babel を組み合わせて利用する方法を紹介します.

“Django Compressor + Babel で Django でも簡単に ES6 コードを扱う方法” の続きを読む

Debian Wheezy に Hubot をインストールする方法

Debian Wheezy で GitHub が提供しているボット Hubot を動作させる方法をまとめます.
出来る限り, Debian 標準のパッケージを使って環境を整備します.

“Debian Wheezy に Hubot をインストールする方法” の続きを読む