やわらかテック

興味のあること。業務を通して得られた発見。個人的に試してみたことをアウトプットしています🍵

golang

MarkdownパーサーをWeb Assemblyにして公開しました

先日、以下の記事を公開しました。 タイトルの通り、Golangを使ってMarkdownをHtmlに変換するパーサーを作ってみたよ〜という記事です。 www.okb-shelf.work ただモノを作ったのに公開しないのはもったいないな...と思ったのでGolangのコードをWeb Assembly…

Markdownをhtmlに変換するパーサーを作った

最近はパーサーの実装にハマっており、直近だとRubyでJSONパーサー(json形式のテキストをRubyのハッシュに変換)を作りました。 www.okb-shelf.work 少し間が空いてしまいましたが、今回はMarkdown形式のテキストをhtmlに変換するパーサーを作ってみました。 …

ステータスを返すだけのAPIをほぼ無料・爆速でCloud Runに作成する

ただスタータスを返すだけのAPIが別のホストに必要になったので作ってみました。 多くのケースではPrismでモックサーバーを立てれば十分ですが、ヘッダーにPreferの指定ができない上に固定のステータスが返ってくれば良いだけだったので自分で作ることにしま…

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

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

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

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

【サンプルコード有り】golangで三項演算子っぽいものを記述する方法について

嫌だなぁと感じる場面 業務を進める中で、以下の様なコードを書くことが多かった。 drink := "" if orderNum { drink = "green tea" } else { drink = "tea" } orderNumの様な関数の引数で指定される値であったり、http経由で指定されたqueryによって値をセ…

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

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

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

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

【サンプルコード有り】golangで複数条件のソートを無名関数を使っていい感じに実装してみた

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

【サンプルコード有り】golangとclosureで作ったクールなカウンターをElixirで書き直した

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

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

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

【Golangとの比較あり】新たなプログラミング言語の選択肢としてElixirをオススメしたい理由

elixir-lang.org 1分ぐらいで分かるElixirの長所短所 長所編 Elixirは動的型付けの関数型言語です。Haskellのようにガチガチな厳しい仕様ではなく、関数型言語でありながら同じ変数に対して再代入(正しくは再パターンマッチ)することが可能です(個人的に非推…