記事

Unixコマンドメモ

コンピューターアーキテクチャ

概要Unixコマンドのメモ。 jqJSON形式のデータを加工するコマンド。 JSONのPretty Printecho '[{"name": "Tom", "age": 20}}]' | jq . Pretty Print以外にもオブジェクトからプロパティを指定してデータを取り出したり、オブジェクトの長さを取得したり、色々...

unixコマンド jq tee

プロセスとスレッドの違い

コンピューターアーキテクチャ

概要プロセスとスレッドの違いについてまとめる プロセスとは プログラムの実行単位 CPU上で実行される リソースの共有はできない 専用のメモリ領域を使用 仮想アドレス空間を保持している プロセスの切り替えには仮想アドレスと物理アドレスのマッピング必要 プロセスの保持するデータ構造プロセスがメモリに保持しているデータ構造は2つのセグメントに分かれている。 テキストセグメント プログラムの...

os スレッド プロセス スタック ヒープ

プログラムはなぜ動くのか 知っておきたいプログラミングの基礎 第2版

アルゴリズムとデータ構造

プログラムはなぜ動くのか 知っておきたいプログラミングの基礎 第2版 第1章 プログラマにとってCPUとは 第2章 データを2進数でイメージしよう 第3章 コンピュータが小数点数の計算を間違える理由 第4章 四角いメモリーを丸く使う 第5章 メモリーとディスクの親密な関係 第6章 自分でデータを圧縮してみよう 第7章 プログラムはどんな環境で動くのか 第8章 ソース・ファイルから実行可能ファイルが...

os CPU メモリー

GraphQLとは

アプリケーション

GraphQLとは Facebookが開発 APIのためのクエリ言語 APIのリクエストのデータ形式とレスポンスのデータ形式が似ているため、ユーザーフレンドリー RESTはアーキテクチャ(設計)であり、GraphQLは言語(DSL)である REST APIとGraphQLの比較REST APIのAPI形式エンドポイントに対して、HTTP動詞でリクエストを投げる curl https://ap...

API HTTP REST GraphQL

Atom×TidalCycles×SuperColliderでライブコーディングをはじめる

アプリケーション

概要プログラミングで音楽をつくってみたいと思い、音響プログラミングに手を出してみた。 準備 Mac Atom Git Homebrew Haskell Tidalcycles SuperCollider Mac、Git、Atom、Homebrewは既に用意されている前提で話を進める。 HomebrewでHaskellとTidalCyclesをインストールするbrew install ghc br...

Atom Git haskell homebrew tidalcycles

さくらVPSでDocker環境を構築する

インフラストラクチャ

概要さくらVPS上にDocker環境を構築する。サーバーの初期設定等は割愛。 構築手順操作はすべてsudo権限を持った一般ユーザーで行うものとする。 Dockerには無償のCE版と商用版のEE版があるが、今回はCE版を使用する。 リポジトリをセットアップインストールsudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm...

Docker さくらのVPS

SPAを構築したときにハマったこと

アプリケーション

概要以前、LaravelにSPAを組み込む時に考えたディレクトリ構成とnginxのconfファイルというタイトルの記事を書いたが、そこで記載したnginxのconfが不十分だったため、改めて問題点を整理、解決した。 前提 History API nginx SPAを構築したときにハマったことnginxの設定リロードしても常にindex.htmlを返すように設定する必要がある。こんな感じでtry...

Nginx SPA

DIとサービスロケーター

アプリケーション

概要DIとService Locatorの違いについてまとめる DIとは デザインパターンの一種 依存性注入 オブジェクト間の依存性を分離 オブジェクトの実行時に必要なオブジェクトが注入されるようにする テストしやすくなる DIパターンの実装DIパターン(コンストラクタインジェクション)を実装してみる。なお、DIパターンには、コンストラクタインジェクション、セッターインジェクション、メソッド...

DI サービスロケーター デザインパターン

シンボリックリンクとハードリンクの違い

コンピューターアーキテクチャ

概要シンボリックリンクとハードリンクの違いについてまとめる 前提 inode データ構造 ファイルシステム上の属性情報(作成者、グループ、作成日時など)をデータとして持つ ls -i1 /またはstat /でinode番号を確認できる シンボリックリンクとは 元のファイルまたはディレクトリのパスを参照するディレクトリエントリを追加 実験touch a.md ln -s a.md a_symb...

シンボリックリンク ハードリンク

開発環境を見直してvimライクにした。

ツール

概要開発の効率化を図り、vimを取り入れ、開発環境諸々を刷新したのでまとめておく。各ツールの細かい設定や導入しているプラグイン詳細などは省く。  エディタ Atom 開発で使うメインエディタ vimのキーバインドを使えるようにプラグインを導入 vim-mode-plus-ex-mode vim-mode-plus 画面分割やペイン移動などもvimっぽくできるようにキーバインドを少しいじった ...

tmux vim Atom iTerm