スポットインスタンスで個人開発 Web サーバーを運用する技術

最近の私の個人開発 Web サーバーの運用方法を簡単に説明します。

「ハイパフォーマンスブラウザネットワーキング」を読んだ

ISUCON11を振り返る - さんちゃのblog に書いたとおり、ブラウザ・HTTP周りの知識の少なさを感じていた。この問題を解決するために、「ハイパフォーマンスブラウザネットワーキング」を読んだ。 ハイパフォーマンス ブラウザネットワーキング ―ネットワーク…

自宅の最強の加湿器、あるいは私は如何にして心配するのを止めて加湿器を起動するようになったか

最強の加湿器 世の中には「最強の加湿器」を作った人がいる。 最強の加湿器を作った from Arata Sato www.slideshare.net 曰く、「最強の加湿器」は湿度を自動で適切な値に維持してくれる*1。この加湿器が欲しくなったので作ることにした。 作成中に発覚した…

ブラウザオンラインゲームを Ruby on Rails で作る

この記事は、CAMPHOR- Advent Calendar 2021の21日目の記事です。 Ruby on Rails に hotwire-rails という gem を導入すると、ブラウザ・サーバー間の双方向通信がかんたんに実装できます。 それを利用して、ある種のブラウザオンラインゲームを簡単に実装に…

ISUCON11を振り返る

@ebiebievidence と @uni745e の2人と一緒に「ここにチーム名を入れる」というチームを組んで、ISUCON11に出場しました。 結果は予選敗退、最高スコアは45180、最終スコアは40952、公開Leaderboard での順位は 105位でした*1。 この記事では、準備したこと、…

「はじめて学ぶソフトウェアのテスト技法」を読んだ

よく考えてみたら「テスト」について勉強したことなかったなと思って、本を読んでみた。 はじめて学ぶソフトウェアのテスト技法作者:リー・コープランド発売日: 2005/11/03メディア: 単行本 本の解説 「はじめて学ぶソフトウェアのテスト技法」は、バグを効…

Rubyで設定を書けるLinux用キーマッパー 「rumap」をRustで作った

この記事は、 CAMPHOR- アドベントカレンダー 2020の8日目の記事です。 Rubyで設定を書けるLinux用のキーマッパーをRustで実装した話をします。

標準入力からヒストグラムを描画するCLIツールを作った

標準入力をいい感じにヒストグラムにするCLIツールを作りました。 GitHub - genya0407/hist インストール Releases · genya0407/hist · GitHub からお好きなバイナリをダウンロードして、適当なパスに展開してください 使い方 なんかこういう感じのテキスト…

scanコマンドというcliツールを作った

scanコマンドというcliツールを作った。 GitHub - genya0407/scan scanコマンドは、標準入力の各行に対して正規表現を適用し、ほしい部分を取り出すコマンドだ。使い方は以下の通り。 $ scan --help Usage: scan [options] OUTPUT_FORMAT -p [PATTERN] speci…

画像入りzipを人物認識してエクセルに変換する「マイクロサービス」を作った

概要 例の建築家の同期が、動画に映る人の位置を1秒ごとに目視で認識するという虚無作業をしていたので、自動化するWebアプリ的なものを作りました。 github.com 使い方 まず、人物認識したい動画をお好みの間隔(1秒毎とか)で画像に切り出し、適当なフォルダ…

駆け出し建築家にHTMLの書き方を教えた話

この記事は CAMPHOR- Advent Calendar 2019 19日目の記事です。 "駆け出し建築家" にWebサイトの作り方を教えた話をします。

ブログを移転し、ブログを集約するページを作った

ブログを移転した ブログを移転しました。 https://genya0407.github.io/ Atomフィードもあるので、僕のブログを継続的に読みたい人がいたらRSSリーダーに登録してください*1。 https://genya0407.github.io/feed.xml この新しいブログは、JekyllとGitHub Pa…

CAMPHOR-についてここらでひとこと言っておくか

京都のIT系学生コミュニティ「CAMPHOR-(カンファー)」に私が出入りするようになったのは2016年の冬なので,足掛け4年ほどCAMPHOR-に関わっていたことになります. この記事では,CAMPHOR-について説明した後,私がCAMPHOR-に感じた魅力を語ります. ※この記…

質問箱クローンをRustで作った話

1年ぐらい前に質問箱(peing.net)を真似て匿名質問サービスを作成しました. これに関して技術的な話と技術的でない話をします.技術的な話というのはRustでWebサービスを作る知見で,技術的でない話というのは質問箱を自分で運用するとどういう感じになるか…

Pythonのコレクション操作をメソッドチェーンでやる

以前このような記事を書いた. dawn.hateblo.jp 詳しくはそちらを読んでいただくとして,Pythonのコレクション操作がイケてないという気持ちが僕にはある*1. しかし,Pythonには豊富な資産(numpy,pandas,networkx,scikit-learnなどなど...)があり,Pytho…

メソッドチェーンとダラー演算子とパイプライン演算子に対する気持ち

tl;dr ダラー演算子,メソッドチェーン,パイプライン演算子は,「関数を次々に適用するとネストが深くなってしまう」という問題を解決する.

ファストフード検索というサービスを作った

この記事は CAMPHOR- Advent Calendar 13日目の記事です. 先日ファストフード検索というWebアプリを作ったので,そのことについて書きます. ff.kuminecraft.xyz

高校の文化祭の食販の注文フローを電子化した話

この記事は CAMPHOR- Advent Calendar 2018 3日目の記事です. 高校の文化祭の食販の注文フローを電子するべくWebアプリケーションを作り,当時*1はWeb素人だったためクソ実装になったが,役には立ったという話をします. *1:2013年

「熊野寮で電子化した話」というタイトルでLTした

bit-valley.jp 先日BIT VALLEY 2018というイベントがあり、そのAFTER PARTY(懇親会)で「熊野寮で電子化した話」というタイトルでLTをした。 これがその時のスライド。 熊野寮で電子化した話 from Yusuke Sangenya 内容としては、手作業の塊みたいな地獄のタ…

MySQLの中身を時系列プロットするワンライナー

MySQLに入ってるデータの傾向をグラフで見たい、しかしgrafanaとかkibanaとかは導入したくないし、グラフを描画するプログラムを書くなんて論外という事があると思います。 そういうときにおすすめなのがこのワンライナー!必要なのはmysqlクライアントとgnu…

トップレベルスタイルSinatraの起動プロセス

Sinatraのトップレベルスタイルで書かれたWebサーバーが,どのように起動するのかを解説します.

SinatraでaタグからPUTリクエストを投げる

Ruby on Railsで記述したWebアプリケーションでは,ERBファイルに<%= link_to '/hogehoge', method: :put %>などと記述することにより,aタグがクリックされたときにPUTリクエストを投げることができます.POST,DELETEに関しても同様の記述でリクエストを投…

職人じゃないけどAAがしたい!

作ったもの*1: https://image2aa.genya0407.net/ AA(アスキーアート)とは AA(アスキーアート)というのは、上の画像のように文字で書かれた絵のことです。一般には「AA職人」が職人芸で作ります。 元々は画像が貼れない2chで絵を表現するための手段だったと…

「熊野寮生だけど質問ある?」

CAMPHOR- Advent Calendar 2017 の 7日目 の記事です。 CAMPHOR-運営メンバーの @genya0407 です。 熊野寮ネタばかりで恐縮ですが、「熊野寮生だけど質問ある?」というWebサービスを作った話をします。

熊野寮でコードを書いて感謝された話

CAMPHOR- Advent Calendar 2017 の 2日目 の記事です。 CAMPHOR-運営メンバーの @genya0407 です。 熊野寮でコードを書いて感謝された話をします。

寮外の人でも楽しめる熊野寮祭の企画

熊野寮祭において、寮生でなくても楽しめる企画を列挙し、概要を説明します。 熊野寮祭とは 熊野寮祭とは、京都大学の学生自治寮である熊野寮が毎年開催している祭りです。例年11月末〜12月初頭まで開催されます。今年はちょっと長いですが、11月29日〜12月1…

PNGを端末に表示するプログラムをRustで書いた

PNGを端末に表示するプログラムを作りました。 github.com 使い方 cargo run /Path/to/Windows_logo.png とすると、👇のように端末に画像が表示されます。透過画像も表示できます。 ちなみに、PNGの画像形式は何パターンかあるのですが、そのすべてに対応して…

PNGの規格を簡単に説明する

PNGの規格を勉強する機会があったので、その内容を簡単に説明します*1。 PNGはいくつかの"チャンク"が集まって構成されています。例えば、IHDRチャンクやIDATチャンク、PLTEチャンクなどがあります。では、PNGファイルという単なるバイト列から、どのように…

機能追加と同時にリファクタリングをしてもいいか

「機能追加と同時にリファクタリングをしてもいい」という記事がはてブに上がっていたので、思うところを述べる。 scrapbox.io 結論 機能追加とリファクタリングを同時にするのは 👍 機能追加とリファクタリングを混ぜてPRを出すのは 👎

iter()とinto_iter()の違いを整理した

VectorをIteratorに変換する時にいつも混乱していたので整理した。 混乱 あるVectorの要素すべてを3倍するコードを考える。 fn main() { let vec1 = vec![1,2,3,4,5]; let vec2 = vec1.iter() .map(|i| i * 3) .collect::<Vec<i32>>(); println!("{:?}", vec1); print</vec<i32>…