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

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

【第17回清流elixir勉強会】Elixirを用いた並行和アルゴリズムの実装

トピック あけましておめでとうございます。1月2月は色々と忙しくて、全く清流elixirにて勉強会を開催できず... 2ヶ月ぶりの開催となりましたが常連の方、新規の方、リモートでの接続、多くの方に参加して頂けました。ありがとうございました。ハッピーター…

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

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

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

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

【並行コンピューティング技法】全体の構成と得られる知識 & 第1章のまとめ

今回の購入物 前から買おうとは思っていたが、読む時間ないなぁと手を出さずにいた「並行コンピューティング技法」をたまたま立ち寄った本屋にて発見し、思い切って購入。最近、学習に対するモチベーションが下がっているので気持ち新たにスタートするために…

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

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

紅茶を茶葉から淹れ始めて2週間が経過したが上手く淹れられるようになったのか【めちゃくちゃ初心者】

前回までのあらすじ 良い機会だったので紅茶を茶葉から淹れることに初めて挑戦した。結果は惨敗。お世辞にも美味しいと言える紅茶を淹れることは出来なかった。それから、筋トレや四大行にひたすらに取り組んだわけではないが、様々な淹れ方を試して、「美味…

Pythonでswitch構文を使いたいので無理やり作る【if False: ...elseと無名関数リストでの擬似実装】

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

何度も同じようなテストを書くのがつらいので無名関数を使って楽しくしよう【golang/Elixirのサンプル有】

反応が良かったツイート テストを無名関数で書くと楽しいよという旨のツイートの反応が良かった。ただ言葉だけだと正確に情報が伝わらないので実際にどうやっているのかをコードに落としてみた テストケースを複数書くときは無名関数が凄く便利。わざわざ外…

上手く淹れられなかった紅茶を5日間、色々な淹れ方で検証した

前回の反省 人生で初めて紅茶を茶葉から淹れるという挑戦を試みたが、全く上手く出来たかった。味の感想としては「温かい良い香りの水」。しかも、紅茶の知識が全くないため、何がダメだったのかも分からない。上手く淹れられている証となるジャンピングが全…

エンジニアなのにコーヒー飲めないので「0から始める本格紅茶」を片手に初めて茶葉から紅茶を淹れてみた

前段: コーヒーというか苦いものが苦手 何故かエンジニアは「いつもコーヒーを飲んでいる」というイメージがある。実際に同じ職場のエンジニアも毎日のようにコンビニで買ったコーヒーを飲んでいたり、豆から淹れているような方もいる。そんな中で、「コーヒ…

数値をASCIIを用いてaからzまで(半角英字)の文字列に変換

何をしたいのか 業務で書いたコードなのだが、作成する元になったアイディアがボツになったため、お蔵入り。需要は無いだろうけど、せっかくなので当時、ググっても出てこなかったので公開しておこうと思う。1から始まる任意の数字をASCIIで定義されている数…

【golang】structを要素に持つ配列を複数条件のソートを無名関数を使っていい感じに

何をしようとしているのか struct(以降、構造体と表記)を要素に持つ、配列をソートする必要がある場面に出くわした。通常というか一般的な数値や文字列のソートと異なり、構造体のAフィールドの値が大きい順番かつ、Bフィールドの値が小さい順かつ...のよう…

【第16回清流elixir勉強会】今年のElixirに関する学習を振り返る会

トピック elixir-sr.connpass.com 早いもので今年ももう終わろうとしています。今年度より清流elixirというコミュニティを立ち上げて勉強会を行い今回を含めて合計16回の勉強会を開催することが出来た。幅広い方に参加して頂き、多くの方と知り合うことが出…

golangでいい感じのclosure使ったカウンターが作れたのでElixirでも無理矢理に実装した

closureとは何か 難しい概念の説明は強いエンジニアや大学の賢い先生方にお任せするため、深い説明は行わない。ざっくりと言うと、関数の中である値を保持させておいて、その値を変化させる(操作する)ための変数を保持している関数の内部に用意された無名関…

Elixirの歴史を辿るうちに「電話はなぜつながるのか」を読んでいたので、その感想

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

websocketを使ったgolang産チャットアプリのやらかしスレッド設計をkubernetesでスケール可能に修正した

機能に関する詳細 現在、業務でwebsocketを使用したチャットアプリケーションの開発に関わっている。自分が担当しているのはサーバーサイドのみで、実装はgolangを使用している。websocketのライブラリはgorilla/websocketを採用している github.com サーバ…

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

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

プログラミングErlang7章を読んで。並行処理とアクターモデルについて考えてみた

並行処理について 人間なら誰でも並行処理を理解している。 この世界は並列だ。 Erlangのプログラミングは人間の思考と対話をモデル化している。 人間はそれぞれメッセージを送ることによって通信し合う独立した存在として動く。 誰かが死ねば、他の誰かが気…

【第15回清流elixir+fukuoka.exもくもく勉強会】Elixirでチャットサーバーを作りながらNode間通信を試す

トピック elixir-sr.connpass.com Qiitaのアドベントカレンダーの執筆したり、業務が忙しすぎたり、PIDの闇にハマっていたりで、少し間が空いてしまいましたが第15回のレポートをまとめました 今回も前回同様に、kogaさんにお声がけ頂きましてfukuoka.exさん…

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

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

ほとんど毎日パソコン触って目の疲れがやばいのでブルーライトカットメガネを買って1週間使った感想

Zoff ブルーライトカットメガネ(スクエア型 PCメガネ(|Zoff PC CLEAR PACK【ゾフ クリアレンズ 透明レンズ 軽量メガネ ブルーライトカット パソコン用メガネ PCめがね PC眼鏡 パソコンめがね メンズ レディース おしゃれ zoff_pc ブラック PCクリアパック】…

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

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

Elixirのマクロに非黒魔術士が挑む

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

人生で初めてLTしてきたので後日談【よわよわな新卒が勉強会を始めた話】

後日談とは(1週間以上経ってる いつもお世話になっているからpiacereさんから声を掛けて頂き、人生で初めての自身のネタでのLTかつリモートLTをしました fukuokaex.connpass.com 今回話したネタは「清流elixirのこれまで -東海にElixir界の異端児が生まれた…

【レポート】第13回清流elixir勉強会を開催しました【Elixirで作成されたOSSのコードを読んでみる会】

トピック elixir-sr.connpass.com 第13回目の清流elixirの勉強会を開催しました 今回はOSSのコードを読んでElixir力をあげるという目的かつ、弊コミュニティ初の試みとしてリモート(Zoom)での参加にも対応しました これで全国からのジョインが可能に!! 勉強…

Elixirでプロセスをspawnで生成してErlangの:random.uniformを呼び出すと全て同じ値になる

何が起こったのか これの実行結果が全て同じ数値になるのなぜ...???https://t.co/DoUBNy6BoJ(1..10, fn _ -> spawn(fn -> num = :random.uniform() IO.puts(num) end) end)— OKB(岡部) (@sing_mascle69) October 22, 2019 まず、プロセスを複数立ち上げて並…

Elixirで定数を定義する

Elixirには標準にconstがない ※書き方が早く知りたい方はこの章は読み飛ばして頂いて構いません Elixirはいわゆる関数型言語だが変数の再代入、正しくはパターンマッチを何度も行うことが出来る。またgo-langのような厳密な型の指定も必要ない user_input = …

【頭おかしい(褒めてる】ゼロからトースターを作ってみた結果を読了

なぜ読んだのか 下記ブログにて紹介されていたところを発見し、ぶっとんだタイトルとおそらく著者が作成したであろうトースター?のサムネイルが強烈すぎて、これは読まずにはいられない!!とAmazonにて即購入。中古品でだいたい600円ぐらい。新品だと税別で7…

docker-composeを使ってReact+phoenix+postgresの環境を構築する

概要 ほとんど個人的メモです 自身でよく構築することの多い以下の環境を毎度、調べながら作るのが面倒なのでまとめたって感じです React(front end) phoenix(backend, elixir web framework) postgres(open source database) 毎度悩むのが、dockerのimageを…

【レポート】第12回清流elixir勉強会を開催しました【elixirでミニCodeReTreatやろうぜ!!】

トピック 今回で第12回目の勉強会を開催致しました。いつのまに12回も... elixir-sr.connpass.com 以前よりずっと個人的にやりたいなーって思っていたCodeReTreatを開催しました 名古屋でも開催されているのをちらちらと見たことがありますが、中々参加でき…