タグ

goに関するf-sugerのブックマーク (103)

  • さようなら ImageMagick - Cybozu Inside Out | サイボウズエンジニアのブログ

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

    さようなら ImageMagick - Cybozu Inside Out | サイボウズエンジニアのブログ
  • mercari.go #2 参加メモ #mercarigo - My External Storage

    所感 今回はQAやインフラよりの部分でGoがどのように使われているか、使うことができるかの紹介が多かった。 サービス自体のコードだけでなく、開発の効率化にもしっかりと開発工数をあけて問題解決に取り組んでいるのを聞くことができてさすがだなという感じだった。 インフラまわりのミドルウェアやツールでもGoの1バイナリになる成果物、高い平行性などの特徴を活かして課題解決を行なっているということだった。 開発中にある日常的な悩みをGoでどんどん解決できているのは羨ましい(と言っていないで自分もやらないといけない)。 また、GraphQLの発表もあり、実装で考慮すべき点など非常にわかりやすかった。 GraphQLを遊ぶにはGitHub API v4 APIのExplorerがインタラクティブな補完・仕様の参照ができて良いらしい。これはGraphQLに限らずAPI仕様を公開するときはこのようなUXを提供

  • Wikipediaから任意の記事を集めるサービスをGoogle App Engine/Go SEで作った

  • もう一度テストパターンを整理しよう(WebApp編)

    主にモック関連で話をしました。 ここで使った最強のツールはこれです。 https://github.com/Code-Hex/funcy-mock 読みは「ファンキーモック」 See also: https://codehex.hateblo.jp/entry/2018/07/03/211839

    もう一度テストパターンを整理しよう(WebApp編)
  • [翻訳+α] Go言語の設定ファイルライブラリ Viper - Qiita

    はじめに 自分のGoプログラムで設定ファイルやJSON周りのコードがどんどん膨れ上がって困り果てていたところ、Viperという、設定ファイルを扱える強力なライブラリを今頃知って、打ち震えた。謳い文句どおり、欲しいと思ってた機能が全部揃っている。世界に代わって泣いた。 この作者はCobraというコマンドラインの引数やオプションを扱うための総合ライブラリも公開していて、この種のライブラリをこいつらだけで終わらせるほどの勢い。これも今度訳しつつ補ってみよう。 ViperもCobraも、同じ作者のpflagというPOSIX/GNUスタイルのコマンドラインフラグライブラリを下敷きにしているっぽい。鬼や。この人は設定ファイルの鬼や。 ViperとCobraで、設定ファイルの読み書きからコマンドラインフラグ、引数処理までひととおりカバーしている。これはもうぜひまとめて標準ライブラリに昇格させて欲しい。他

    [翻訳+α] Go言語の設定ファイルライブラリ Viper - Qiita
  • AWS x Docker x Goで始める新規サーバーサイド開発

    はじめまして。株式会社トルテでサーバーサイドを担当している中川です。 レディーファーストの恋アプリTorteを開発しています。 https://sweet-torte.com/ 今年8月にリリースしたTorteのサーバーサイドのアーキテクチャについて、技術選定の理由やTipsと共にご紹介いたします。 技術選定 Go + Docker 以前担当していたサービスで急激な高負荷に耐えられないことが多々あり、EC2を使ったスケールに限界を感じていました。Docker Containerを使ったオートスケールやデプロイに関心があり、今回はDockerと、シングルバイナリで稼働して相性が良いGo言語を採用する運びとなりました。サイバーエージェントグループでの採用事例もあり、新規ならDocker + Goという流れがあったので、採用にあたって特に障壁はありませんでした。 Cloud Service クラ

    AWS x Docker x Goで始める新規サーバーサイド開発
  • init関数のふしぎ #golang - Qiita

    はじめに 知られているようで、案外知られてないことをQiitaに投稿していくのも良いと思い、軽いネタですがinit関数についてまとめたいと思います。 init関数とは init関数は特殊な関数で、パッケージの初期化に使われます。 以下のようにmainパッケージに書くとmain関数より先に実行されます。 mainパッケージでない場合は、importするだけで呼び出されます。 package main import ( "fmt" ) func init() { fmt.Println("hello, init") } func main() { fmt.Println("Hello, main") } Playgroundで動かす init関数は何に使うのか? 上記では、初期化に使うと書きました。名前からしてそれは想像できますよね。 init関数は基的にはパッケージ変数の初期化に用いられま

    init関数のふしぎ #golang - Qiita
  • 「Vue.js + Go言語 + Firebase 」で始める! Frontend & Backend API 両方で認証するセキュアなSPA開発ハンズオン! - Qiita

    Vue.js + Go言語 + Firebase 」で始める! Frontend & Backend API 両方で認証するセキュアなSPA開発ハンズオン!JavaScriptGoVue.jsFirebaseGoogleCloud こんにちは。僕です。最近は Vue.js で SPA、Go言語で APIサーバーを実装しています。ここで意識するのはフロントエンドとバックエンドの分離です。分離させたい理由は二つ。 アプリ化の際や、今後、他のサービスと連携させるためにも、バックエンドはAPIサーバーに徹したい。 Vue.jsで開発中にオートリロードしたい(Vue.jsをビルドして出来たファイルをGo言語でserveする形にすると、毎回ビルドするのが面倒) しかし、これをやろうとすると認証どうするの問題が付いてきます。APIサーバ、フロントの両方をセキュアにしようとするとそれだけで時間取られます

    「Vue.js + Go言語 + Firebase 」で始める! Frontend & Backend API 両方で認証するセキュアなSPA開発ハンズオン! - Qiita
  • Simplicity is Complicated

    Simplicity is Complicated dotGo 9 Nov 2015 Rob Pike Google Bonjour mes Gophers! 2 Success What makes Go successful? Many reasons cited: speed of compilation speed of execution deployment tools libraries These are not language features. Less often cited: true language features such as interfaces or concurrency. All are important but not really an answer. 3 Simplicity My answer: Simplicity. Go is si

  • 6年間におけるGoのベストプラクティス | POSTD

    稿は、QCon London 2016で行った講演の内容に基づいています。スライドとビデオは近日中に掲載予定です) 2014年に開催された最初のGopherConで、私は「 Best Practices in Production Environments(番環境でのベストプラクティス) 」と題した講演を行いました。 SoundCloud の私たちはGoのアーリーアダプターで、その時点までに既に2年近く、番環境向けの様々なGoコードを書き、実行し、メンテナンスしていました。そして私たちはいくつかのことを学んだので、その教訓をまとめ、多くの人に伝えたいと思ったのです。 それ以来、私はフルタイムでGoを使う仕事を続けています。SoundCloudではその後の活動やインフラチームで、そして現在は Weaveworks で Weave Scope や Weave Mesh の開発に使ってい

    6年間におけるGoのベストプラクティス | POSTD
  • GAE/Goの自動キャッシュ付きDatastoreライブラリGoonを使う - Qiita

    完全にアドベントカレンダーの存在を忘れて遅れてしまいました。 関係者各位様当に申し訳ございません。。。。 ということで。 今年のAdvent CalenderはGAE/Goネタが多いですね、とても素敵です。 願わくば早くβの文字が外れてほしい限りです。 今回はGAE/GoのDatastore周りを楽にするgoonの紹介をしたいと思います。 ちょこちょこ昔書いたQiitaにも登場させているのですがあまーつ使っている人を見たことがないので... GAE/Goの標準Datastoreパッケージとちょっとした不満 GAE/GoのDatastore周りは、appengine SDKのdatastoreパッケージが結構素敵で、 structを定義すればかなり簡単にDatastoreを扱うことができます。 //GAE/Goのdatastore周り //https://cloud.google.com/

    GAE/Goの自動キャッシュ付きDatastoreライブラリGoonを使う - Qiita
  • Goのパッケージ構成の失敗遍歴と現状確認

    この記事は Gunosy Advent Calendar 2017の5日目の記事です。前回の記事はGunosyのパーソナライズを支える技術 -ワークフロー編-でした。 GoAPIを書くときの問題僕の在籍するGunosyはGoを昔(?)から番採用しておりまして、ノウハウも潤沢に溜まっている企業だと言えます。 しかし、contextの扱いやベストなパッケージ構成、テスト、net/httpでAPIを書くノウハウなどなど、迷うことは多々あります。 これは弊社特有の事情ではなく、Goのサーバーサイドエンジニア全員にとっての問題です。中でも、パッケージ構成をどうすればいいのか(相互参照せずに快適に開発を進められるパッケージ構成とは)を見つけるのは結構難しく、各々のチームにお任せ、という状況です。 今回は上記の問題のうち、パッケージ構成に踏みこんで見たいとおもいます。会社でもよくパッケージ構成をどう

    Goのパッケージ構成の失敗遍歴と現状確認
  • Google App EngineでGoのバージョンアップを行う #golang #gae - Qiita

    はじめに メルペイ エキスパートチームの@tenntennです。 この記事は技術書典4で頒布した"こうして僕らは、書籍を売るアプリを作った 2.0.1"の一部を少し改定したものです。 Google App Engine for Go (GAE/Go)で開発する上で付き合っていかないといけない問題として、GAEのSDKのバージョンやそこで使用されるGo自体のバージョンアップが挙げられます。 GAE/Goはクラウドサービスであるため、SDKや言語のバージョンアップは必ず追従して行く必要のある問題です。 バージョンアップしなくても、一定期間はそのまま使えることが多いでしょう。 しかし、場合によっては非推奨になり、その後使えなくなる可能性もあり得ます。 そのため、特に大きな問題がない場合は積極的にバージョンアップをしていくとよいでしょう。 Goのバージョンを上げることによって、次のような恩恵を受け

    Google App EngineでGoのバージョンアップを行う #golang #gae - Qiita
  • GitHub - labstack/armor: Uncomplicated, modern HTTP server

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - labstack/armor: Uncomplicated, modern HTTP server
  • Next Currency-GAEGo

    Jetpack ComposeとGraphQLによるServer Driven UI/jetpackcompose-grahpql-serverdrivernui

    Next Currency-GAEGo
  • プライベートでコードを毎日書き続けて2年以上が過ぎた

    いつの間にか2年間継続してコードを書いていたので、その振り返りです。上のインコは日々僕を応援してくれる二羽のインコのうちの一羽です。この後をボロボロに噛みちぎっていきました。 1年目との違い去年こんなポストを書きました。 このとき、自分はコードを1年継続して書いたわけですが、その後また1年継続してコードを書いていました。 1年目とは「書きたい」と思うものも変わりました。また、習慣を維持する労力も小さくなり、コードを書くことそのもの以外の、登壇などの時間を取れるようになりました。 この1年で新たにやったことツール作成markdownをMediumポストにするCLIツールAWS SSMで管理されたパラメーターを環境変数にInjectするツールGoogle Cloud Platform API向けに使える、goonと同様のDatastoreクライアント基盤作成AWS上にTerraform+An

    プライベートでコードを毎日書き続けて2年以上が過ぎた
  • GitHub - mercari/docker-appengine-go: Projects has been moved

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - mercari/docker-appengine-go: Projects has been moved
  • Go言語で書いた Web アプリケーションの習作をサービス化して公開するところまでやってみた - えいのうにっき

    もともと数ヶ月前から、Go言語によるWebアプリケーション開発 を読みながら Go での Webアプリケーション開発の勉強をしていた。 Go言語によるWebアプリケーション開発 作者: Mat Ryer,鵜飼文敏,牧野聡出版社/メーカー: オライリージャパン発売日: 2016/01/22メディア: 大型この商品を含むブログ (3件) を見る 「実際に動くもの」を、「手を動かして作りながら学ぶ」のが僕は好きで、今回も同様、それを楽しんでやっていたのだけど、思いの外それっぽいものができあがってしまって。これをそのままローカルで動かすだけじゃおもしろくないな、もったいないな、と思ったので、それをサービス化して公開するところまでやってみた。 かんじんのアプリケーションは↓これ。Yukizuri と書いて「ゆきずり」と読む。 https://yukizuri.moshimo.worksyukizu

    Go言語で書いた Web アプリケーションの習作をサービス化して公開するところまでやってみた - えいのうにっき
  • ISUCON7本戦「Railsへの執着はもはや煩悩」で4位だった - k0kubun's blog

    ISUCON7戦に「railsへの執着はもはや煩悩の域であり、開発者一同は瞑想したほうがいいと思います。」チーム (@cnosuke, @rkmathi, @k0kubun) で参加し、4位でした。 戦の概要 予選より参加者は少ないと思うので軽く解説しておくと、クッキークリッカーを模したトラフィックのほとんどがWebSocketのアプリで、1万桁とかのスコアを計算する都合ほとんどのチームのボトルネックが最後までBigintの演算になるような問題でした。 僕らは15:00くらいに1位になり、その後はスコアをそれほど改善できず終わってしまいました。 方針 「@k0kubun 氏のチューニングした3倍速いRubyで優勝したらまじかっけーっす!」って話をした。 #isucon— FUJI Goro (@__gfx__) 2017年11月25日 最近Ruby向けのJITコンパイラを開発している

    ISUCON7本戦「Railsへの執着はもはや煩悩」で4位だった - k0kubun's blog
  • 100万回のWebSocket接続とGo | POSTD

    こんにちは。私はSergey Kamardin(セルゲイ・カマルディン)です。Mail.Ru(ロシアの電子メールサービス会社)で開発者をしています。 この記事では、どのように私がGoを使って高負荷対応のWebSocketサーバを開発したかについて説明したいと思っています。 パフォーマンス最適化のアイデアやテクニックを通じて、WebSocketの知識はあるもののGoについてはほとんど知らないという方のお役に立てれば幸いです。 1. はじめに まずは開発に至った経緯について、どうして私たちがこのサーバを必要としたのかを説明しておきましょう。 Mail.Ruには多くのステートフルなシステムがあります。ユーザのeメール保存もその1つです。システム内、およびシステムイベントの状態変更を追跡する方法にはいくつかの種類がありますが、それらは主に状態変更に関するシステム通知、または周期的なシステムのポーリ

    100万回のWebSocket接続とGo | POSTD