田舎で並行処理の夢を見る

試したこと、需要がないかもしれないけど細々とアウトプットしてます

ElixirでListMonadを作ってみる

Monad(モナド)の魅力 関数型言語に触れていれば少なからず「Monad(モナド)」という言葉を耳にする。残念ながら私の愛するElixirではMonad(モナド)を大々的に取り扱うことはない(知らないだけなのかも)はないが、純粋関数型言語として有名なHaskellではMonad(…

【作って学ぶフロントエンド】ReactのuseStateの仕組みについて

Hooksについて Reactのバージョン16.8に導入されたHooksという機能によって、class componentを使用せずとも、functional component(以降: FCと記述)にstateを用意することが可能になりました。 FCにstateを用意するのは非常に簡単で以下の構文を記述するの…

並行・並列と並行処理・並列処理の違いについてまとめた

毎回調べているのでまとめた 何気なく「並行処理にすると....」だとか「ここは並列処理にして...」という会話をすることが普段多いが、「並行と並列って何が違うのよ?」と前からよく思っていた。その度に、ググっては「あー。そういうことね」と理解するも…

【Elixirのサンプルコード有り】条件に一致した時に再帰を停止する方法4つを書き比べてみた

なんでbreak_reduceみたいなのはないんだろう 配列(リスト)に対して、各要素を精査する際に、特定の条件にマッチする要素が見つかった時点で処理を停止して、Elixirであれば{:exist, value}のような値を返す関数をよく作成することがある。頻出の処理パター…

【実装コード有り】銀行家のアルゴリズムの実装と検証

今更作った理由 たまたまgoogle scholarで並行処理に関する資料を眺めていたらダイクストラ法で有名なエドガー・ダイクストラさんの名前を見かけた。自分の中では数学者という認識をしていたが、実は分散コンピューティングの分野で、どのようにシステムの信…

【Elixir/supervisor入門】通常のモジュールに対してsupervisorを定義する

なぜ書いたのか Elixirにおいてプロセスの死活管理に用いるsupervisorについて学習を進めていたが、どれもGenServer、すなわちElixirのbehaviorを用いたサンプルばかりだった。また、そのプロジェクトはmix new --sup project_nameとして生成されるもので、…

【収益ほぼゼロ】何の考えもなしにブログ100記事を書き終えたので反省会をしました

100記事を書くことが凄いのか よく著名なブロガーが「まずは100記事書くといいですよ」ということを仰っている。なぜ100件なのかという根拠はないが、意図としては100も記事を書けばブログを書く習慣も身に付き、言葉の扱い方も多少は様になってくる...とい…

【golangのサンプル有り】クロージャ(closure)完全に理解した人のためのクロージャを使った便利サンプル集

クロージャ完全に理解した...で何に使うの? 実は使いこなせると結構便利。特定の値に対する操作を共通化することが出来て、想定しているもの、言い方を変えれば作者の作成しているもの以外の操作を制限することも出来る。あと、かっこいい。 クロージャのユ…

【goroutineによる並行処理】サンプルを作りながら学ぶgoroutine入門

golangを学ぶ上での壁goroutine golangを業務で使い始めてから約半年になりました。業務ではgolangを使ってWebsocketを使ったチャットサーバーを作っています。golangの文法は非常にシンプルで分かりやすくシンプルなので、可読性が非常に良いです。普通にgo…

【現役エンジニア】SCRATCH(スクラッチ)で遊んで何が出来るのかを体験してみた

ビジュアルプログラミングSCRATCH SCRATCH(スクラッチ)に関しての説明はもう不要だと思いますので省きます。小学生などの低年齢層を対象にプログラミングをブラウザとGUIを使って学習することが出来るMIT開発のビジュアルプログラミングのプラットホームです…