computer science
僕がプログラミングを始めたばかりの頃、よく「ファイルをクローズし忘れてるよ」と指摘されていました。 当時は「ファイルはオープンしたらクローズするもの...」と反射的にファイルをクローズするようにしていました。しかし、今になって思うと「なぜオー…
トレイト(trait)すごい 「コンセプトから理解するRust」を読んで衝撃を受けました...。 トレイト(trait)は今まで自分が出会ったことがない概念です。 コンセプトから理解するRust作者:原 旅人技術評論社Amazon 多くの言語ではinterfaceや基底クラスを作って…
部分適用とは何か。またよく混同されるカリー化という手法とは何か。部分適用とカリー化の説明をしながら、2つの違いを明確にしていきます。解説にはJavaScriptのサンプルコードを用いています。関数型言語の概念や知識がなくても理解できるように書きました…
Elixirでの並行処理 Elixirでは並行処理を行うためにアクターモデルに従ってプロセス間同士でメッセージを送受(メッセージパッシング)し合います。 アクターモデルとは並行処理を効率よく実装するための手法の一つです。Elixirにおいては、アクター(軽量プロ…
ワイ認証が全然分かっていない 認証部分は自分が実装する前にパイセンエンジニアが既におおむね、下地を作った状態で、「これ使ってね〜」状態になっている事が多く、初期の開発に参加出来なかったりする。過去に趣味開発でOauthなりを使用したことはあるが…
Monad(モナド)の魅力 関数型言語に触れていれば少なからず「Monad(モナド)」という言葉を耳にする。残念ながら私の愛するElixirではMonad(モナド)を大々的に取り扱うことはない(知らないだけなのかも)はないが、純粋関数型言語として有名なHaskellではMonad(…
Hooksについて Reactのバージョン16.8に導入されたHooksという機能によって、class componentを使用せずとも、functional component(以降: FCと記述)にstateを用意することが可能になりました。 FCにstateを用意するのは非常に簡単で以下の構文を記述するの…
毎回調べているのでまとめた 何気なく「並行処理にすると....」だとか「ここは並列処理にして...」という会話をすることが普段多いが、「並行と並列って何が違うのよ?」と前からよく思っていた。その度に、ググっては「あー。そういうことね」と理解するも…
今更作った理由 たまたまgoogle scholarで並行処理に関する資料を眺めていたらダイクストラ法で有名なエドガー・ダイクストラさんの名前を見かけた。自分の中では数学者という認識をしていたが、実は分散コンピューティングの分野で、どのようにシステムの信…
golangを学ぶ上での壁goroutine golangを業務で使い始めてから約半年になりました。業務ではgolangを使ってWebsocketを使ったチャットサーバーを作っています。golangの文法は非常にシンプルで分かりやすくシンプルなので、可読性が非常に良いです。普通にgo…
前回の話 「並行コンピューティング技法」を読み進める中で「並行和」の実装をElixirを用いて行なった。何とか実装が完了した並行和の処理を複数プロセスを立ち上げてチャンクを分割して実行する並行処理(parallel)と、チャンクを分割せずにメインの1つのプ…
前回までのお話 「並行コンピューティング技法」という書籍を読み進める中で「並行和」という並行処理にてデータの要素の合計値を求めるアルゴリズムをElixirを用いて実装してみた。何とか動くところまで作れたものの、実行速度がどれだけ逐次処理と異なるか…
前回までのあらすじ 実際に並行処理を記述する際にどのように手法を決めて実装していくのかという話が第2章のメインであった。 並行処理の方針を決める手法は以下の2通りで、第2章ではそれぞれの特徴やマナー、サンプルに触れながら内容が進んでいく。 タス…
前回までのあらすじ 以前から気になっていた「並行コンピューティング技法」を衝動買い。全体の構造を読み解き、どんな知識がこの本から得られるかを考察した。合わせて、第1章を読み、内容を簡潔にまとめた。第1章は大きく以下のような内容を扱っている 並…
事の発端 たまたまElixirでhttp responseのbinary情報に対して、特定の日本語が含まれているかという判定式を記述していたところで、この現象に遭遇した。 iex> body = <<201, 202, 197, ...>> iex> String.contains?(body, "いちご") false 間違いなくbinar…
かゆい所に手が届くswitch構文 別にswitch構文がなくても、おそらくその処理は工夫次第で記述することが可能だろう。しかし、golangやjavascriptに見られるswitch構文を用いることで少なくとも可読性は上がるし、拡張性もif elseの組み合わせよりは良いはず…
なぜ読んだのか 【新品】【本】電話はなぜつながるのか 知っておきたいNTT電話、IP電話、携帯電話の基礎知識 米田正明/著posted with カエレバ楽天市場Amazon7net 個人的な興味があって、以前よりElixirというプログラミング言語を学んでいる。このElixirの…
この記事を書く理由 個人的にElixirというプログラミング言語の勉強会を主催したり、セミナーに登壇する中で多くのプログラミングの初学者や、現在、学習をしているが、何をしていいのか分からないなど多くの相談を受けた。毎度、回答する中で「参考になりま…
今更だけど Node間通信のチャットサーバーを作っている時にふとなぜか、「Elixirでspawnとかした後に返ってくるPIDって一体何なんだ?」と思い立った なぜsend(target_pid, message)とするだけで対象のプロセスにdataを送ることが可能なのだろか。Node間通信…
トピック elixir-sr.connpass.com 第14回目となる清流elixirの勉強会を開催しました 今回からは本格的にリモート参加枠を用意した。しかし、これが思っていたよりも何倍も難しい。会場のホットな温度感や議論が始まるとリモート参加者にはその現場感を伝える…
マクロは黒魔術 以前からメタプログラミングという単語を耳にしたことはあり、存在は認知していた。マクロはメタプログラミングを行うための機能、言語という意味で捉えれば良い(マクロ in メタプログラミングという階層になっている) 要するに言語拡張のた…
トピック 今回で第11回目の勉強会を開催致しました elixir-sr.connpass.com 隔週にて勉強会を開催していたのですが、先月は仕事の都合で日程が合わずで3週間時間が空いてしまった こういうのは一回サボる癖が付いてしまうと徐々に習慣化してしまうので気をつ…
測定に至る背景 再来週に開催する清流elixirの勉強会でifとパターンマッチでそれだけ実行速度に差が出るのかを測定しようと企画している そのために自身の予習を兼ねて、Elixirでの実行速度の測定方法について調査し、簡単な実験を行なってみた 以前から気に…
なにこれ(5度目 Elixirでコンピューターサイエンスを学ぶシリーズの第5弾で以下記事の続編です www.okb-shelf.work この本を参考に勉強しつつコードを書いています www.oreilly.co.jp 以前の記事まではかなり低レイヤーの部分をメインとして扱っていた 論理…
なにこれ(4度目 Elixirでコンピューターサイエンスを学ぶシリーズの第4弾で以下記事の続編です www.okb-shelf.work この本を参考に勉強しつつコードを書いています www.oreilly.co.jp 今回は順次回路と呼ばれるCPUのクロックを受けて同期する回路の作成に取…
なにこれ(3度目 Elixirでコンピューターサイエンスを学ぶシリーズの第3弾で以下記事の続編です www.okb-shelf.work この本を参考に勉強しつつコードを書いています 並行コンピューティング技法 ―実践マルチコア/マルチスレッドプログラミング作者:Clay Bresh…
なにこれ(既視感 前回の記事の続編です www.okb-shelf.work まだ挫折してないです www.oreilly.co.jp この本を勉強しているつもりなのですが、普通に難しい 僕のレベルが低いのもあるが、説明があるようでなかったりと結局ググらないと分からない部分が多い …
なにこれ 僕は一応、理工学部の出身ではありますが建築土木が専攻でした この業界にいながらcsについての知識が皆無 前からやらねば...やらねば..と思ってはいたが触れる機会がない & 一度挫折済み しかし、アルゴリズムの勉強を始める中でデータ構造の重要…