github.com fdk-aacとそのgoバインディングのgo-fdkaacを使ってやってみたので、試行錯誤過程のメモ。 ffmpegみたいなツールを用いた変換方法はネット上にゴロゴロしているのに、スタンドアロンなライブラリを使ってデコードをするとなると情報がめちゃくち…
izumisy.work 上記の記事のビルドをやっている前提 # libavformatは必須らしい $ sudo apt install libavformat-dev # fdk-aac配下でサンプルがあるブランチに切り替え $ cd fdk-aac $ git checkout decoder-example # m4a-dec.cをビルド # (https://github.…
github.com リポジトリにはREADMEどころか何も書かれていないのでメモしておく # ビルドに必要なパッケージをインストール $ sudo apt install autoconf libtool # リポジトリをクローン $ git clone git@github.com:mstorsjo/fdk-aac.git # ビルド $ cd fdk…
名称が分からないが、実際の例で言うとcloudspannerecosystem/yoにあるこういうやつ。 // YOLog provides the log func used by generated queries. var YOLog = func(context.Context, string, ...interface{}) {} これだけ見ると何のために定義されている…
うちのコンサルが「システムアーキテクチャを決めるためには、ビジネスアーキテクチャを先に固めることが必要」と言ったら、お客様が「事業構造の変化が激しすぎてビジネスアーキテクチャを固めることが難しい」と仰った。そうだよなぁ。システムの寿命より…
自分が開発しているgo-cleanarchitectureの中でドメインイベントのPublisher実装としてredigoを使ったPubSubアダプタの実装を用意したが、思ったよりもredigoを使ったRedisのPubSub周りに関連する実装があまりネットに転がっていなかった。 domainsパッケー…
自分はvim-fugitiveとvim-flogを使っている Plug 'tpope/vim-fugitive' Plug 'rbong/vim-flog' fugitiveだけでもgit logは見れるが --decorate や --graph などのコマンドを使っても色がつかないのでコミットログを見ることに関しては若干微妙。 ログを見る…
engineering.mercari.com メルカリShopsの開発組織に関する記事が興味深かった。ソフトウェアエンジニアがフロントエンド/バックエンド関係なく開発をするというのは、たしかに開発組織の理想形だと思う。 2020年にオークランドで開催されたDeveloperWeek 2…
最近思うがなんとなくフルスタックと一口に言っても、ソフトウェアエンジニアにおける"フルスタック"にはサーバーサイドとしてのフルスタックと、フロントエンドとしてのフルスタックがあるような気がしている。この言い方が妥当かどうかは分からない。 サー…
golangのdatabase/sqlには設計に関するドキュメントが用意されており、これが興味深い。 ドキュメント自体は非常に短い。以下のリンクでサクッと読める。 golang.org 中でも個人的に印象的なのは以下の説明で、ここからgolangにおけるdatabase/sqlの設計思想…
izumisy.work 上記の記事をstackoverflowで質問したら回答がついた。 stackoverflow.com 結論から言うと自分はmakeの使い方を間違えていて、makeの第3引数にあたるcapacityを省略してスライスを作成するとそこには空データが埋まってしまうとのこと。 なので…
goコンパイラの最適化によって、可変長配列であってもリテラル値でlength指定されていればコンパイルする時点で確保するデータサイズが決定し結果的にランタイム時にアロケーションを発生させなくなるのではないかという仮説。 テストコード package app imp…
package main import ( "io" "io/ioutil" "strings" "os" ) func main() { a := strings.NewReader("123456789") r := io.LimitReader(a, 5) t := io.TeeReader(r, ioutil.Discard) io.ReadAll(t) io.Copy(os.Stdout, a) // 6789 }
ioutil パッケージに Discard という /dev/null 的な io.Writer が用意されている。 最近これを使うタイミングがあったのでメモ。以下のようなコードがあるとする。 package main import ( "fmt" "io" "io/ioutil" "strings" ) func main() { a := strings.N…
stackoverflow.com こんな感じで使える。 package main import ( "fmt" "net/mail" ) func main() { addr, err := mail.ParseAddress("izumisy.test@example.com") if err != nil { panic(err) } fmt.Println(addr.Address) // izumisy.test@example.com } …
こういうやつ type Closer struct{ Value string } func (c *Closer) Close(id string) { fmt.Printf("Closed(%s): %p\n", id, c) } func newCloser(c *Closer) { n := &Closer{Value: "aaa"} fmt.Printf("New: %p\n", n) c = n } func main() { c := &Close…
これを買った TP-Link Bluetooth USBアダプタ ブルートゥース子機 PC用/ナノサイズ / Ver4.0 / 3年保証 UB400TP-LINKAmazon デバイス情報を見てみるとどうやら Cambridge Silicon Radio とかいうやつらしい。 at 15:26:52 ❯ lsusb Bus 005 Device 001: ID 1d…
後学のために自分の考えていることをまとめてみる。 考えられるパターン これまでの経験から以下4つのパターンがある。 ローカルStateでprop-drillingする ローカルStateかつイベント経由でデータ交換をする グローバルStoreとローカルStateを併用する グロ…
ここで触れられてた話がおもしろいかったのでざっくり紹介 discourse.elm-lang.org 文字列比較はcase文のほうが早い(ことがある) これは遅い ensureNonBreakingSpace : Char -> Char ensureNonBreakingSpace char = if char == ' ' then nonBreakingSpace …
Elmにおけるビルダパターンというのは以下のようなインターフェイスを指す。 -- setXxxのような関数をパイプでつないでいく雰囲気のやつ Button.new |> setPadding 10 |> setBackground "blue" |> setLabel "next" |> view このインターフェイスの優れた点は…
自分のチームでは朝会と夕会を両方実施しているので、その話を書きます。 (アジャイルとかスクラムとかは分からないです、念のため) 自分のチームにおける朝会の課題 もともと自分のチームでは「朝会」のみをデイリーのmtgとして実施しており、そこで「今…
elm-firestoreのパス組み立て周りの実装を型安全な設計にしてみたのでその話。 github.com Firestoreにおけるパスの仕様 まず大前提としてFirestoreにはリソースの場所を示すパスという概念があり、ざっくりパスは以下のようなルールに基づいている。 ルート…
引き続きチビチビと作り続けていたelm-firestoreだが、とうとうv10をリリースした。 I finally have just rolled out elm-firestore v10.0.0! It has Query opertion support and fixes interface of transaction-related functions. Plus, integration test…
Acer C720というChromebookが手元にあるのだが、しばらく前にサポートが切れたので気合を入れてUbuntuをクリーンインストールする。 ついでにSSDも換装する。 acer ChromeBook C720 (日本正規品)発売日: 2014/11/13メディア: Personal Computers SeaBIOSを有…
elm-typedというパッケージを作った。詳しくは以下のGithubのREADMEに書いている。 github.com パッケージ自体が根本的に実現したいことはPunie/elm-idとかjoneshf/elm-taggedあたりとほぼほぼ同じ。プリミティブ型をそのまま使わず型エイリアスでもなく、プ…
社内で以下のScalaコードがコンパイルエラーにならないというのが盛り上がっていた。 println(1 == "a") // コンパイル通るし結果はfalseになる 普段ElmとGoばっかり書いている&Scalaのことをとりあえず型に厳しい言語だと思いこんでいたこともあり若干意外…
J:COMから現時点で正式なアナウンスはなにもないが、どうやら千葉県船橋市内一帯で2/17から2/20にかけて通信障害が発生していたらしい。 この障害の影響で、上り速度が1Mbps以下しかでない日が3日間ほど続いた。症状としては上り回線の輻輳状態のような感じ…
Elmアプリケーションで比較的モジュール多めなアプリケーションの機能開発をするときに同僚とトライしている手法について。 言語的なElmのテクニックみたいな話ではなく、どちらかといえばもっと抽象的なハナシ。 1. 画面からざっくりとモジュールを見つけ出…
2020年内はいろいろ忙しくて振り返りとか書けなかったので、代わりに2021の今思っていることを。 ソフトウェア・エンジニアとしてのキャリアについて 去年はマネージャロールへの転向という自分の中での転換点の年であり、対外的な活動よりもいったん自分の…
現代では官僚制というとなんだか政治的でネガティブな面ばかりが取り沙汰されている面があるが、実際には業務の効率化という観点では、近代的な合理性を追求する優れたモデルである。 官僚制にはネガティブな面はあるものの、組織としてスケーラビリティを維…