タグ

goに関するmas-higaのブックマーク (10)

  • 有効期限を過ぎても消えないインメモリキャッシュの謎 - 私が歌川です

    tl;dr キーワードは「monotonic clock」です。 あらすじ Goで以下のようなコードを書いていた*1*2。あるAPIを叩くクライアントで、APIコールに必要なアクセストークンを4時間キャッシュしている。c.getToken() で得られたトークンを使ってAPIコールを行えばよい。 type Client struct { mu sync.RWMutex expiresAt time.Time token string } // トークンのキャッシュがあればキャッシュから返し、なければ更新してから返す func (c *Client) getToken() string { if cachedToken, ok := c.getTokenFromCache(); ok { return cachedToken } return c.refreshToken() } // トー

    有効期限を過ぎても消えないインメモリキャッシュの謎 - 私が歌川です
    mas-higa
    mas-higa 2023/02/27
  • 11種類のオペレーティング・システムについてまとめてみた - Qiita

    TL;DR 「オペレーティングシステム?知ってるよ。WindowsとかMacのことだよね」というぐらいの知識だった私が、二週間ほどひたすらWikipediaでインプットしまくったクソ浅い情報を共有します。 最初の動機 「Go言語が対応しているアーキテクチャってなんだろ?」 Go言語には環境変数をコンパイラに渡すことで、出力されるバイナリの対応するOSとアーキテクチャを変えることができます。 GOOS がオペレーティングシステム(OS)、 GOARCH がアーキテクチャです。 こんな感じにビルドすると、 linux というオペレーティングシステムで、 ppc64 というアーキテクチャに対応したバイナリが出力されます。 なるほど。 じゃあ、 Go言語が対応しているOSとアーキテクチャって何があるの? と疑問が湧いてきますね。 その疑問に応えるコマンドが go tool dist list です

    11種類のオペレーティング・システムについてまとめてみた - Qiita
  • テストのためだけに`interface`を書きたくないでござる — KaoriYa

    golangでテストのためだけにinterfaceを書くのが死ぬほど嫌だったので編み出した技を紹介します。 TL;DR テスト(=mock)のためだけにinterfaceは切りたくない 型エイリアスとビルドタグを組み合わせるとinterfaceがなくてもモックが作れる この手法に必要なモックを自動生成するプログラムを作った interfaceは当に必要なシーンで使うべき Background 現在モックを使った単体テストは一般的です。 Javaでの例を挙げると、モックしたいコンポーネントについて予めinterfaceを定義しておき、モックではそのインターフェースを実装するのが定石です。 しかしgolangのinterfaceはJavaなどのそれとは若干性質が異なるため、テスト=モックのためだけにinterfaceを書くのはオーバーワーク気味です。 そうテストのためだけにinterface

  • Go初心者が気を付けること

    Go初心者がやってしまいがちなやらない方がいいことを書き出してみました。 情報検索や環境構築 golang.jpを見に行ってしまう Golang(ごーらんぐ)と呼んでしまう(by hogedigo) depが最新推奨のパッケージマネージャだと勘違いする(Go標準の「go mod」を使おう) 「GO???」環境変数を理解せずに設定しまくる(わからない場合は一切設定しないのが正しい) しょっぱなからgvm,gobrew,goenvなどのマルチバージョンのマネージャを入れようとしてエディタ連携環境構築に失敗する (複数バージョンのGoの運用は既に標準のGoだけでできるようになっている) エディタにgoimportsやgolintを設定し忘れる OSのパッケージマネージャまかせで古いGoやgccgoをインストールしてしまう エラーハンドリング周り err変数名のバリエーションを増やしすぎる(ほとん

    mas-higa
    mas-higa 2019/12/19
    で、どうしたらいいのさ
  • さようなら ImageMagick - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。 一般的な Web アプリケーションがそうであるように、サイボウズのグループウェアにも画像をサムネイルで表示する機能があります。サイボウズでは日々数万件やそれ以上のサムネイルを生成しており、それらは全て ImageMagick によって生成されていました。 そこで得た知見はこちらの記事で公開されています。 blog.cybozu.io しかし現在、サイボウズから ImageMagick は消え去りました。その理由と、我々が取った代替手段について紹介します。 ImageMagick を外した理由 言うまでもなく ImageMagick は優秀なツールで、画像変換に関する何らかのサービスやツールを作る場合には採用の第一候補になることでしょう。あらゆる画像フォーマットに対応し、出力画像をきめ細かに制御できる膨大なオプシ

    さようなら ImageMagick - Cybozu Inside Out | サイボウズエンジニアのブログ
    mas-higa
    mas-higa 2018/08/22
    これ公表して大丈夫なん?
  • なぜGo言語は成功を収めることができたのか - Googleの人が語る(翻訳) - Qiita

    Goの特徴となぜGoがここまで成功したかをGoogleの方がまとめたスライドがとても「簡潔」で分かりやすかったので、翻訳(要約)してまとめてみました。 Go使いとして、Goの思想を捉えた上で開発を進めていきたいです。 Rob Pike, "Simplicity is Complicated", 2015 なぜGoは成功したか よく挙げられている理由には コンパイルのスピード 実行スピード デプロイ ツール ライブラリ があるが、これらは言語の特徴ではない。 めったに挙げられない理由としては、インターフェースや並行性といった真の言語の特徴がある。 これらは重要ではあるが当の答えではない。 私の答えは、Simplicity(簡潔さ)である。 Java, JavaScript (ECMAScript), Typescript, C#, C++, Hack (PHP)などの話を聞いていると、これ

    なぜGo言語は成功を収めることができたのか - Googleの人が語る(翻訳) - Qiita
    mas-higa
    mas-higa 2018/06/20
    google だからでしょ (読んでない)
  • Golangの defer をRubyでも使いたい - たごもりすメモ

    前にRubyでtry-with-resourcesが使いたいという話を書いてそのときにリリースしたgemもあるが、人類の安全に・便利にリソースを解放したいという欲求には際限がない。 try-with-resources は便利なんだけど欠点がないわけではなくて、リソースの確保と解放を一ヶ所でまとめてやらないとネストが深くなる。複数箇所に分けて書くならネストも2段になってしまう。 これはこれで整理されたコードを書く圧力になるので悪くない面もあるんだけど、とはいえもうちょっと自由にやりたい、いい方法は無いもんか、という話。 defer ある。Golangの defer が便利そう。defer foobar って書いとくと、そのスコープを外れるときに自動的に foobar の内容が実行される。あるスコープのどこに何度書いてもいい。これは便利。 # GolangのdeferのままRubyにもってき

    Golangの defer をRubyでも使いたい - たごもりすメモ
    mas-higa
    mas-higa 2018/03/16
    嬉しさが理解できなかった
  • シュッと golang に入門する話 - ちなみに

    photo by ajstarks なんか最近みんな書いてる golang 。OSS へのコントリビュートチャンスも増えてきました。自分でバリバリ書くには時間も自信もない。でも、バグ修正くらいならやってみたい。それくらいの目的のために最低限必要な知識を書いてみました。 この記事では、自分ではバリバリ書けないけれど、golang の OSS プロジェクトには貢献したいという人向けに、出来るだけシュッと学べるように重要なポイントのみ絞って紹介していきます。 初心者向けの優しい解説記事という訳ではないので、自分で調べるためのキッカケとしての読み方を想定しています。また、自分自身が想定読者のため、間違ったことを書いている可能性もあります。という逃げも書いておきます。 開発環境 基的に Mac OSX + HomeBrew + Atom を前提とします。といいつつ、golang も Atom もす

    シュッと golang に入門する話 - ちなみに
    mas-higa
    mas-higa 2015/04/02
    []rune(hoge) の hoge が理解できなくてシュッとできない
  • [翻訳]なんでGoってみんなに嫌われてるの? - Qiita

    原文:http://npf.io/2014/10/why-everyone-hates-go/ 酔っぱらった勢いで訳出してるので、違ってたら修正リクエストください。 訳者の1行でわかるサマリ それって、Goのシンプルな言語哲学が、ML系言語好きのアイデンティティを挑発しちゃってるからじゃないの? いや、実際みんなって訳じゃないんだろうけど。最近、なんてGoをみんなそんなに批判的なのかって言うquoraの質問が出たもんで。(わるい、普段はquoraへのリンクを張らないんだけど、それがこの記事のきっかけだからね。)この質問への回答を見るまえにもう、僕には、次みたいなことが書かれていることがわかってた: Goは70年代に立ち往生した言語だ Goは40年間に及ぶプログラミング言語研究の成果を無視してる Goはブルーカラーの凡夫のための言語だ Go使いはJava1.0で仕事しても大丈夫なんだろう。

    [翻訳]なんでGoってみんなに嫌われてるの? - Qiita
    mas-higa
    mas-higa 2014/10/17
    Google のゴリおしだからじゃないの
  • 囲碁のフリーペーパー「碁的」がものすごいことになっていた:カフェオレ・ライター

    プロフィール マルコ フリーライター/BL研究家やってます。お仕事のご依頼、ネタのタレコミはメール、またはtwitterあてにお気軽に。お仕事について詳しくはこちら。 メールアドレスはma-cafe@hotmail.co.jp 書いている人のことがなんとなくわかる記事↓ 生きていく上でまったく知る必要のないボーイズラブの最新事情まとめ ダニに噛まれたと思っていた脇腹の傷が、とんでもない病気だった話 テニスの王子様は18年でどれだけインフレしたのか 最近、コンピューターの将棋ソフトがついにプロを打ち負かしたとかで話題になっています。 詳細はこのあたりの記事に詳しく出ていますが、とうとうコンピューターはここまできたのか……と、何だか複雑な気持ちです。 ところで、その超スゴイコンピューター将棋ソフトをイメージした公式マスコットキャラはこんな感じらしいです。 ナメとんのかー!! もうちょっと他に何

  • 1