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

この記事は 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 といったファイルがパッケージマネージャによって使われていますが,このようなファイルは何のために存在するのか分からない人もいるかと思います.

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

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

論文執筆を支える継続的インテグレーション: Git から Amazon S3 まで

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

学位論文を書く季節になってきました.論文を書く際にはきちんとバックアップを取っておかなければならないなど,実際の執筆以外でも気を遣わなければならないことが多くあります.この記事では,ソフトウェア開発における継続的インテグレーション (CI) や継続的デリバリー (CD) の考え方を取り入れ,様々なツールを活用することで,論文の執筆に集中できる環境を整備する方法を紹介します.

“論文執筆を支える継続的インテグレーション: Git から Amazon S3 まで” の続きを読む

「ネットワークの調子が悪い」ときの原因の見つけ方

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

「ネットワークの調子が悪い」という話をしばしば耳にします.このようなときにとりあえず設定をいじってみたり,機器の電源を入れ直してみたりして問題を解決して,根本的な原因がよく分からないままになることがあると思います.また,「ネットワークの調子が悪いのでなんとかしてくれ」と言ったことをよく人に言われて対応するのですが,実際にネットワークが悪いこともあれば,サービスが落ちていることもあったり,クレームを言っている人が設定を間違っていたりなど原因は様々です.

この記事ではネットワークの知識を使って,機器を再起動してしまう前にもう少しまともに原因を究明する方法について紹介します.ネットワークを支えるそれぞれのプロトコルについての説明はよく見られますが,具体的に問題が発生したときに原因を見つける方法が書かれている資料はあまりないように思うので,この記事が皆さんのお役に立てれば幸いです.

“「ネットワークの調子が悪い」ときの原因の見つけ方” の続きを読む

ISUCON7 本選で学生枠1位になりました

チームMLとして @ishiy1993 と2人で ISUCON7 の本選に出て,学生枠の1位 (全体の7位) になりました.使用した言語は Python で,最終スコアは 19,172 でした.満足のいくスコアではありませんでしたが,我々が今持っている力は出し切れたかなあと思っています.

“ISUCON7 本選で学生枠1位になりました” の続きを読む