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

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

computer science

Oauthを簡単なプロセス通信でそれっぽく再現して覚える

ワイ認証が全然分かっていない 認証部分は自分が実装する前にパイセンエンジニアが既におおむね、下地を作った状態で、「これ使ってね〜」状態になっている事が多く、初期の開発に参加出来なかったりする。過去に趣味開発でOauthなりを使用したことはあるが…

ElixirでListMonadを作ってみる

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

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

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

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

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

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

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

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

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

【並行処理vs逐次処理】プロセスを事前に立ち上げることによって高速化されるのか【めちゃ速】

前回の話 「並行コンピューティング技法」を読み進める中で「並行和」の実装をElixirを用いて行なった。何とか実装が完了した並行和の処理を複数プロセスを立ち上げてチャンクを分割して実行する並行処理(parallel)と、チャンクを分割せずにメインの1つのプ…

【並行処理vs逐次処理】Elixirで実装した並行和と逐次和をベンチマーク測定をして比較した結果【完全敗北】

前回までのお話 「並行コンピューティング技法」という書籍を読み進める中で「並行和」という並行処理にてデータの要素の合計値を求めるアルゴリズムをElixirを用いて実装してみた。何とか動くところまで作れたものの、実行速度がどれだけ逐次処理と異なるか…

【並行コンピューティング技法】第3章のまとめ

前回までのあらすじ 実際に並行処理を記述する際にどのように手法を決めて実装していくのかという話が第2章のメインであった。 並行処理の方針を決める手法は以下の2通りで、第2章ではそれぞれの特徴やマナー、サンプルに触れながら内容が進んでいく。 タス…

【並行コンピューティング技法】第2章のまとめ

前回までのあらすじ 以前から気になっていた「並行コンピューティング技法」を衝動買い。全体の構造を読み解き、どんな知識がこの本から得られるかを考察した。合わせて、第1章を読み、内容を簡潔にまとめた。第1章は大きく以下のような内容を扱っている 並…

ElixirのString.contains?で第1引数にbinaryを第2引数に日本語ひらがなを与えるとfalseになる理由についての調査報告

事の発端 たまたまElixirでhttp responseのbinary情報に対して、特定の日本語が含まれているかという判定式を記述していたところで、この現象に遭遇した。 iex> body = <<201, 202, 197, ...>> iex> String.contains?(body, "いちご") false 間違いなくbinar…

【擬似実装コード有り】Pythonでswitch構文っぽいものを表現する方法について

かゆい所に手が届くswitch構文 別にswitch構文がなくても、おそらくその処理は工夫次第で記述することが可能だろう。しかし、golangやjavascriptに見られるswitch構文を用いることで少なくとも可読性は上がるし、拡張性もif elseの組み合わせよりは良いはず…

【書評】Elixirの歴史を辿るうちに「電話はなぜつながるのか」をふと読んでいた

なぜ読んだのか 【新品】【本】電話はなぜつながるのか 知っておきたいNTT電話、IP電話、携帯電話の基礎知識 米田正明/著posted with カエレバ楽天市場Amazon7net 個人的な興味があって、以前よりElixirというプログラミング言語を学んでいる。このElixirの…

【現役エンジニアが考察】はじめてのプログラミング言語習得のコツ。挫折しないためにはどう学ぶべきか

この記事を書く理由 個人的にElixirというプログラミング言語の勉強会を主催したり、セミナーに登壇する中で多くのプログラミングの初学者や、現在、学習をしているが、何をしていいのか分からないなど多くの相談を受けた。毎度、回答する中で「参考になりま…

Elixrのプロセスとは一体何なのか。探索の旅に出てた

今更だけど Node間通信のチャットサーバーを作っている時にふとなぜか、「Elixirでspawnとかした後に返ってくるPIDって一体何なんだ?」と思い立った なぜsend(target_pid, message)とするだけで対象のプロセスにdataを送ることが可能なのだろか。Node間通信…

【第14回清流elixir勉強会】Elixirのマクロを完全に理解する会

トピック elixir-sr.connpass.com 第14回目となる清流elixirの勉強会を開催しました 今回からは本格的にリモート参加枠を用意した。しかし、これが思っていたよりも何倍も難しい。会場のホットな温度感や議論が始まるとリモート参加者にはその現場感を伝える…

【メタプログラミング入門】Elixirのマクロに非黒魔術士が挑む

マクロは黒魔術 以前からメタプログラミングという単語を耳にしたことはあり、存在は認知していた。マクロはメタプログラミングを行うための機能、言語という意味で捉えれば良い(マクロ in メタプログラミングという階層になっている) 要するに言語拡張のた…

【レポート】第11回清流elixir勉強会を開催しました【Taskを使った並行処理に入門】

トピック 今回で第11回目の勉強会を開催致しました elixir-sr.connpass.com 隔週にて勉強会を開催していたのですが、先月は仕事の都合で日程が合わずで3週間時間が空いてしまった こういうのは一回サボる癖が付いてしまうと徐々に習慣化してしまうので気をつ…

【Enun.sum vs Enum.reduce】Elixirでの実行速度の測定と色々と実験してみた

測定に至る背景 再来週に開催する清流elixirの勉強会でifとパターンマッチでそれだけ実行速度に差が出るのかを測定しようと企画している そのために自身の予習を兼ねて、Elixirでの実行速度の測定方法について調査し、簡単な実験を行なってみた 以前から気に…

【Elixirで学ぶCS】ElixirでアセンブラとVM変換器を実装するまで

なにこれ(5度目 Elixirでコンピューターサイエンスを学ぶシリーズの第5弾で以下記事の続編です www.okb-shelf.work この本を参考に勉強しつつコードを書いています www.oreilly.co.jp 以前の記事まではかなり低レイヤーの部分をメインとして扱っていた 論理…

【Elixirで学ぶCS】ElixirでDフリップフロップと1Bitレジスタを実装するまで

なにこれ(4度目 Elixirでコンピューターサイエンスを学ぶシリーズの第4弾で以下記事の続編です www.okb-shelf.work この本を参考に勉強しつつコードを書いています www.oreilly.co.jp 今回は順次回路と呼ばれるCPUのクロックを受けて同期する回路の作成に取…

【Elixirで学ぶCS】ElixirでそれっぽいALUが実装できるまで

なにこれ(3度目 Elixirでコンピューターサイエンスを学ぶシリーズの第3弾で以下記事の続編です www.okb-shelf.work この本を参考に勉強しつつコードを書いています www.oreilly.co.jp 相変わらず内容に結構つまづいている 今、土日はだいたいこの本 + couser…

【Elixirで学ぶCS】Elixirで加算器を実装するまで

なにこれ(既視感 前回の記事の続編です www.okb-shelf.work まだ挫折してないです www.oreilly.co.jp この本を勉強しているつもりなのですが、普通に難しい 僕のレベルが低いのもあるが、説明があるようでなかったりと結局ググらないと分からない部分が多い …

【Elixirで学ぶCS】Elixirで論理ゲートを実装するまで

なにこれ 僕は一応、理工学部の出身ではありますが建築土木が専攻でした この業界にいながらcsについての知識が皆無 前からやらねば...やらねば..と思ってはいたが触れる機会がない & 一度挫折済み しかし、アルゴリズムの勉強を始める中でデータ構造の重要…