My own progress

software engineering

The difference btw Docker-CE and Moby

It's a single memo for my own study. The difference btw Docker-CE and Moby To come to the point, Moby is the open-source core which Docker-CE(Community Edition) is built. So If you want to make a new container management system from scratc…

システムコール SELECT(2)について

### SystemCall SELECT(2)とは 端的にいうと、ある特定のプロセスがブロッキングすることなく、多数のI/Oストリーム(ファイルディスクリプタ)を監視することを可能にするシステムコールである。 ### どこで使われているの?有名なアプリケーションは? Webエ…

CloudFrontとAnsibleで自動でサクッとRuby on Railsの本番環境を作ってみる

AWS

CloudFrontとAnsibleで自動でサクッとRuby on Railsの本番環境を作ってみる タイトルの通りですが、CloudFrontとAnsibleを使ってRuby on Railsの本番環境を作ってみましょう。 なぜ、Ruby onRailsなのかというと、比較的初学者がRailsの学習を行なっているこ…

Webプログラマが理解したいHook(フック)とは

フックとは フックは、プログラマの中にプログラマが独自の処理をインクルードできる処理のことである。 普段ライブラリを使っている側からしたら、当たり前のように使っている機能であるが、実装にどういう箇所で使われているか、その内部実装に関しても解…

Unicord, ASCII文字コードを勉強してみた

文字コードとは?? 今回、PostgresQLの開発をするにあたり、文字コードの理解が曖昧と感じる場面が多くあったので、調べたことをまとめたいと思っています。参考にした記事 gihyo.jp よく耳にする文字コード ASCII, UTF-8, Unicord, Shift-JISなどの言葉を…

PostgreSQLをソースコードからビルドして起動する

PostgreSQLの開発をするにあたって、Ubuntu18.04 LTSで環境構築した手順をまとめます。qiita.comこちらのQiitaを参考にしました。 ソースコードのインストール PostgreSQL: Downloads こちらのサイトより、適宜自分の環境のソースコードをダウンロードできま…

ブラウザのHTTPリクエストからレスポンス取得までのHTTPパケットの流れ詳解

Webエンジニアやインフラ系のエンジニアであれば当たり前だと思いますが、HTTPリクエストを送ってからレスポンスを取得するまでの流れをパケットレベルでの理解は、なかなか怪しいと思ったので、このさい復習してみることにしました。 大前提 普段自分が利用…

なぜRailsのWebアプリにunicornが必要なのか

Railsを開発、デプロイする際に、unicornだのpumaだのwebrickだのpassengerだの、、 HTTPサーバーであることは理解しているものの、なぜこれが必要なのか理解していない人も多いのではないでしょうか。 私自身も理解が深いわけではありませんが、現在の段階…

Javascriptでブロッキングなsleepメソッドを実装する

基本的にシングルスレッドで実行されるブラウザ上のJavaScriptでは、基本的には、他の処理系でよくあるようなsleep()やdelay()に相当するブロッキングに処理を待つような機能は提供されていません。そのため、下記のような書き方をすると、 setTimeout(funct…

秋葉原でPCパーツを購入するところからUbuntu起動まで

自作パソコンの購入 非情報系学部出身の自分にとって、日々ハードウェアやカーネルの勉強をするものの、なんとなくハードよりの知識が乏しく、ハードウェアのイメージがわかないので、意を決して自作パソコンを作ることにした。 決めたからには即行動という…

2019年のDOCをKerasで実装して工業製品の異常検知をしてみた

Learning Deep Features for One-Class Classificationとは 「 Learning Deep Features for One-Class Classification」(以下、DOC)は、CNNを利用して、入力画像が特定のクラスCiに属しているかを推論するディープラーニングのモデルである。 良いところと…

低水準入出力関数と高水準入力関数の違い

先日、ファイルディスクリプタ(file descriptor) low-programing.hatenablog.com について勉強したことを書きなぐったが、今日更に発展して、入出力関数についても学習したので簡単にまとめる。 入出力関数とは c言語だと、普段使うような printf("hello w…

意外と意味を知らずに使っているパイプ記号について

エンジニアでパイプ記号を使わずに毎日を過ごしている人なんていませんよね。それくらい、日々の仕事で使うことの多いパイプ記号ですが、実際どういう意味か理解していますか。 例えば、起動中のプロセスから特定のコマンドを含んだものを探したいとき、 ps …

Windows上のシェルでDドライブに移動する方法

普段MacやUbuntuなど、UnixLikeなOSばかり使っており、なかなかDドライブに移動する機会もなく、戸惑ったのでメモを残します。 WindowsのシェルからDドライブに移動する方法 D:でオッケー。気持ちとしては、cdコマンドで移動したくなるが、ぐっとこらえてcd…

プログラムの実行中、カーネルは何をしているか

CPUが1つだけあると仮定する。 問としては、プログラムの実行中OS本体のプログラムであるカーネルは何をしているか。 ミクロな答えとしては、何もしていない。CPUがユーザーアプリケーションを実行しているときは、CPUのプログラムカウンタは、アプリケーシ…

C++で画像をPOSTする、HTTPClientを作成する

Windows環境でC++またはCのWinsockを使って、HTTPプロトコル上で画像のPOSTを行う実装を行った際、いくつかつまずいた点をまとめたいと思います。 Content-Lengthの値 C++でバイナリの画像データをHTTPPOSTするやり方はいくつかあると思います。 複数のファ…

TypeScriptのコンパイルエラーでハマった

kanejaku.org この方のブログを参考にして、解決しました。 状況 書いた側からしたら、HTMLVideoElementと認識しているのにも関わらず、TypeScrptのコンパイラ的には、アウト... この場合、上記のブログの説明のように、 const videoEl = document.getElemen…

ファイルディスクリプタについて

Webアプリの領域から、少し低いレイヤーをやってみたいとネットワークプログラミングやOSのシステムコール周りを勉強していて、たまたま今日nginxのアーキテクチャどうなってるんだろうと思って、色々勉強してみたものの、ファイルディスクリプタで積んだの…

Webサーバーとファイルディスクリプタの関係性について

ふと、nginxのアーキテクチャを勉強していて気になったのだが、nginxはイベント駆動アーキテクチャで、ユーザーのリクエストがくると、マスタープロセスに紐付くワーカープロセスがユーザーからのリクエストを受け持ち、色々とバックエンドの処理を実行して…