タグ

goに関するlocke-009のブックマーク (20)

  • ゼロから始めるGolang① - Qiita

    はじめに 記事について 初めまして!Golangを学び始めましたので,備忘録&みなさまの導入の助けになればと思い記事にします.#Qiita初投稿なので,お手柔らかに (記事)開発環境の設定 (予定)基的な知識 (予定)簡単なWeb開発 の順で書いていくつもりです. Golangとは 可愛いマスコットキャラGopherくんで有名ですね. 特徴はこの絵にもあるとおり, シンプルで親しみやすい 処理速度が速い 効率的にメモリの管理ができる 並列処理が可能 などなど,大規模な開発であったり,チーム開発に向いた特徴を持っています. Goの開発環境を作る この記事ではGo言語が実行できる環境を整え,"Hello World!"が出力できるところまで進めていきます. 開発環境 Mac OS 13.2.1 VSCode 1.81.1 Homebrew 4.1.6 Homebrewのインストールはこち

    ゼロから始めるGolang① - Qiita
  • 【Go】書式指定子をまとめる - Qiita

    package format import "fmt" type Person struct { name string age int } func PrintTitle(title string) { fmt.Println("----------------------------------------") fmt.Printf("%s\n", title) fmt.Println("----------------------------------------") } func General() { var ( i int = 0 f float64 = 0.5 flag bool = false str string = "Hello" arr [3]string = [3]string{"a", "b", "c"} person Person = Person{ name

    【Go】書式指定子をまとめる - Qiita
  • 有効期限を過ぎても消えないインメモリキャッシュの謎 - 私が歌川です

    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() } // トー

    有効期限を過ぎても消えないインメモリキャッシュの謎 - 私が歌川です
  • Javaエンジニアから見たGoの独特な文化 - Qiita

    はじめに Java中心で仕事をしていた人がGoを書いてみると様々な文化の違いにぶつかると思います。そもそもオブジェクト指向言語と手続き型言語であるなど根的に異なる点は多いのですが、「よりシンプルに」をモットーとするGoにはよりJavaエンジニアを困惑させる文化がたくさんあるように見受けられます。 記事ではJavaエンジニアGoを書いた際に感じた独特な文化を経験ベースで書いてみます。Goをこれから書くであろうJavaエンジニアのお役に立てれば幸いです。 対象読者 これからGoを書くことになりそうなJavaエンジニア Javaと比べたGo特有の文化を知りたい人 実際にGoの開発をするにあたって役に立つ思想を知りたい人 記事の対象でない人 Goの構文や書き方を基から学びたい人 とりあえずプロダクトを作って動かしてみたい人 実際に開発する上で意識しない裏の仕組みやアーキテクチャを知りたい

    Javaエンジニアから見たGoの独特な文化 - Qiita
  • インフラもバックエンドもフロントエンドも Go で書いてみた

    先日 CDK for Terraform が GA になりました。 CDK for Terraform を使うことにより、 TypeScriptGo などといったプログラミング言語を使って Terraform エコシステムを利用したインフラの定義やプロビジョニングを行うことができます。 「Go でインフラが書ける」と聞き、ふと思ったことがこちらです。 というわけで書きました。 (2022/10/27 追記) CI/CD も Go で書いた記事を公開しました。 作ったもの GoGoGo の画像をランダムで表示するサンプルアプリです。 主な利用技術について簡単に紹介します。 利用技術 Go 説明不要ですね。 Google 様が作ったプログラミング言語です。 Gin Go の軽量な Web フレームワークです。 公式の紹介に「パフォーマンスは Martini の最大 40 倍です」と書か

    インフラもバックエンドもフロントエンドも Go で書いてみた
  • Goにおける型によってSQLインジェクションを防ぐ方法

    はじめに 2022年のセキュリティ・キャンプ全国大会に講師として参加しました。その際に、Goにおける脆弱性への対策はどうなっているのか調べました。この記事では、github.com/google/go-safeweb/safesqlがどのようにSQLインジェクションを防いでるのかについて解説します。 なお、@rungさんの文書を多いに参考にしております。また、セキュリティ・キャンプで用いた資料はこちらから閲覧できます。 SQLインジェクションとは? 独立行政法人情報処理推進機構(IPA)が公開している安全なウェブサイトの作り方を見ると、SQLインジェクションは以下のように説明されています。 データベースと連携したウェブアプリケーションの多くは、利用者からの入力情報を基にSQL文(データベースへの命令文)を組み立てています。ここで、SQL文の組み立て方法に問題がある場合、攻撃によってデータベ

    Goにおける型によってSQLインジェクションを防ぐ方法
  • Goのエキスパートが教えるGoの魅力、プログラミング基礎入門 - FLEXY(フレキシー)

    記事は2020年3月に公開された内容です。 上田拓也(@tenntenn)と申します。私はGoogle Developer ExpertでGoを担当しており、Go Conferenceの主催やgolang.tokyoなど各種コミュニティ活動も行っています。また、Goを採用している各社の技術顧問として開発現場にも携わっています。 今回はGoの基礎をご紹介します。私が公開している「Goで家計簿アプリを作ろう」というハンズオンの内容も一部抜粋して解説しているので、Goをはじめたばかりの初心者の方はぜひ参考にしていただけると嬉しいです。 Goの概要 サーバーサイドで使われる言語 最初に、Goの概要をご説明します。Goは2009年11月にGoogleがオープンソースで公開したプログラミング言語です。2020年2月に最新バージョン1.14がリリースされました。バージョンアップは大体半年ごとのペース

    Goのエキスパートが教えるGoの魅力、プログラミング基礎入門 - FLEXY(フレキシー)
  • 「詳解Go言語Webアプリケーション開発」という本を発売しました - My External Storage

    「詳解Go言語Webアプリケーション開発」という書籍を執筆し、2022/07/22にC&R研究所様より発売しました。 全国書店やAmazonで購入できます。記事ではの内容の紹介や執筆経緯、執筆してみての感想など書きます。 https://www.c-r.com/book/detail/1462 の内容について 著は大きく分けて二部構成になっています。 第一部は次のようなテーマにまつわるトピックを中心にまとめました。 他の言語を経験していると不思議になるGoの言語仕様 最近Goを始めた方は知らない過去の経緯や歴史的背景 第二部ではGoを用いたWebアプリケーションのコードをハンズオン形式で解説しました。 テストコードを書き段階的な変更を繰り返しながらAPIサーバの実装を試みています。 Docker Composeを使ったローカル開発環境の構築 github.com/cosmtrek/

    「詳解Go言語Webアプリケーション開発」という本を発売しました - My External Storage
  • GoとRust - 並行プログラミング編

    はじめに こんにちはnasaちゃんです。 goroutine何も分からん!async/await何も分からん!となったのでそれぞれを比較しつつ理解を深めてみよう。という考えのもとGo, Rustの並行プログラミングの解説記事を書いてみました。 ところどころふわっとしているため、補足や指摘を貰えると大変助かります。 今回話すこと goroutineとは結局何なの Goの並行処理の仕組み goroutine(Go)とasync/await(Rust)の比較 Goのランタイム、Rustのランタイムの話 話さないこと 構文の違いについては特に触れない どちらが優れているとい言う話はしない ベースになっている思想については特に触れない TL;DR Goには標準のランタイムがあるよ、Rustではランタイムライブラリを使う必要があるよ Goはランタイムが中断再開を管理するよ、Rustではプログラマーが管

    GoとRust - 並行プログラミング編
  • Goで社内ツールを作るならこんなふうに

    バックグラウンド 最近企業でにわかにGoの採用が増えているようですね。この流れを受けて実際にうちでも採用してみようと考えている方も多いかもしれません。しかし、Goに限った話ではないのですが、いきなり大きなプロジェクトに未経験の技術を投入するのはリスクが伴います。ですから最初は技術検証とGo教育を兼ねて、小さな社内ツールなどから導入するのがよいでしょう。幸い、Goは非常に習得が容易な言語ですから、既に他言語の経験があるプログラマーがじゅうぶんに開発できるようになるまでには、数日と掛からないことがほとんどです。 この記事は、そんな小さなツールの導入フェーズにあたって、自らの経験から少し役に立つかもしれない情報をシェアします。 リポジトリの構成 自らの経験上、初めてGoを触れるときによく出る質問の一つは「リポジトリ構成はどうすればいいのか?」です。 結論から申し上げると、 テンプレもルールもな

    Goで社内ツールを作るならこんなふうに
  • 「プログラミング言語Go完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング

    メルペイ エキスパートチームの@tenntennです。稿は Merpay Tech Openness Month の11日目の記事です。 「プログラミング言語Go完全入門」の期間限定公開のお知らせでも書いたように、メルペイでは、社外の方向けにGopher道場という体系的にGoを学べる場を無償で提供してきました。Goの普及を目的にこれまでに8回開催し100人以上の方に参加していただきました。 また、Gopher道場の動画や資料はGopher道場 自習室として誰でも利用できるようになっており、現時点で300名以上の方が利用されています。 Gopher道場の資料のベースになっている「プログラミング言語Go完全入門」は、2020年7月31日までの限定公開になっていましたが、日より公開期限を撤廃し、完全公開することになりました。 また、日8月31日から始まる「Online Summer Int

    「プログラミング言語Go完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング
  • 「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング

    メルペイ エキスパートチームの@tenntennです。 メルペイでは、社外の方向けにGopher道場という体系的にGoを学べる場を無償で提供してきました。Goの普及を目的にこれまでに7回開催し100人以上の方に参加していただきました。 自社でもGoを基幹技術として使っている背景があり、今後もGoコミュニティへの貢献は継続していきます。しかしながら、新型コロナウイルス感染症の状況を踏まえて直近のGopher道場開催を見合わせています。 Goを学ぶ場を提供することでGoに触れる方を増やしたいと考えている筆者にとっては、 開催できないことが非常に残念です。そこでエキスパートチームでは違う形で学ぶ場を提供できないかと考え、Gopher道場で使用している資料のベースになっている「プログラミング言語Go完全入門」を期間限定で公開することにしました。 bit.ly bit.ly 追記 3/18:PDF

    「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング
  • 低レベルアクセスへの入り口(1):io.Writer

    今回は、Go言語がOS直上の低レイヤーを扱いやすくするために提供している io.Writer インタフェースの紹介をします。Go言語がシステムプログラミングを簡単に行える言語でありつつも、それなりに少ない記述量で比較的高速で、それでいて多くのことが達成できるのは、これから説明するようなインタフェースにより、低レイヤーが扱いやすい構造になっているからです。インタフェースと、インタフェースに対して提供されるさまざまなサービス関数が、Go言語の安い、早い、うまいの秘密です。 io.WriterはOSが持つファイルのシステムコールの相似形 前回の記事では "Hello World!" プログラムの関数呼び出しをデバッガーでたどり、最後にシステムコール syscall.Write() が呼び出されているようすを見ました。OSでは、このシステムコールを、ファイルディスクリプタと呼ばれるものに対して呼び

    低レベルアクセスへの入り口(1):io.Writer
  • Goならわかるシステムプログラミング

    Goで始める、すこし低レイヤのプログラミング入門。入出力、ネットワーク、メモリなど、現実の世界でプログラムが動くために必要な機能をプログラム言語Goを通して覗いてみよう。OSの機能とは何か、それをプログラミングでどう利用するのか、システムプログラミングの世界をプログラマの視点から眺めていく連載企画。 2017年06月21日 17時00分 プログラミング+ Go言語によるプログラマー視点のシステムプログラミング 第20回 Go言語とコンテナ 連載の最終回。この連載ではプログラムがコンピュータ上で動くときに何が起きているのかをGo言語のコードを通して覗いてきました。今回はその締めくくりとしてコンテナについて紹介します。 2017年06月07日 21時30分 プログラミング+ Go言語によるプログラマー視点のシステムプログラミング 第19回 Go言語のメモリ管理 ソフトウェアにとってメモリは不

    Goならわかるシステムプログラミング
  • Big Sky :: golang の遅いコードをたった1行で高速化するテクニック

    記事中に間違いがありました。数倍も速くはなりませんでした。確か 1.0X ~ 1.1 倍程度の高速化は得られましたがびっくりするほどの物ではありませんでした。すみません。 そろそろ Go1.7 がリリースされるそうですが、皆さん如何お過ごしですか。Go 界隈の波平こと mattn ですこんにちわ。バカモー(略 Go1.7 ではコンパイラの最適化が行われ、ビルド速度がかなり短縮される様になりました。毎日ビルドしてる僕としては非常に嬉しい機能改善ですね。 さてとてもキャッチ―なタイトルで釣ってしまった訳ですが、気にしたら負けなのでどんどん話を進めます。 var t [256]byte func f(b *[16]byte) { for i, v := range b { b[i] = t[v] } } 例えばこのコードを見て下さい。このコードはココから拝借しました。issue の内容はスコー

    Big Sky :: golang の遅いコードをたった1行で高速化するテクニック
  • Goのアンチパターン

    Go書いててなんとなく見えてきた Goでやっちゃいけないパターン WAF導入してらくらくWebアプリ WAF自体が現在群雄割拠状態。 WAF毎にハンドラインターフェースが違うので既存コードつなぐにはラッパーが必要。 どのWAFもLL言語に比べるとまだまだフィーチャーの網羅範囲が狭い。 なのでもちろんLL言語ほど楽には書けないことが多い。 リフレクション使いまくりでトータル性能はLL言語並みに遅いのもある。 Go1.7のcontextパッケージの導入で標準のHTTPハンドラが復権する可能性があり更に荒れる予想。 追記: 楽できるのを期待してWAFを導入するの「やっちゃいけない」とまでは言い過ぎだったかもしれないけれど例のsqlでPrepareを正しく使えていないで性能出なかった件とか、当面WAFを使うなら自分で概ね中身を理解して使う覚悟が必要。 構造体メソッドにロジックを詰め込む Goの思想

  • 高速でダウンロードできるツールを Go で実装した。 - Qiita

    Code-Hex/pget - GitHub Parallel file download client linux カーネルのダウンロードが約1分で終わる様子 これは何なのか 簡単に言うと pget は Go 言語製の高速ダウンロードツールです。 wget っぽく気軽に実行できるように pget と名付けました。 作成の経緯 たまたま Nodejs で Range header に対してスレッドを使って分割ダウンロードするという ここの記事 を見かけたので今回これを並列処理を得意とする Go 言語で実装してみようと思い作成しました。 調べてみると Python や、Java などのほとんどの言語ですでに実装されてるようですが、どれもただ使えればいいという感じだったので、割と気で作ってみました。(調べられてないだけの可能性高いです) 仕組み ファイルをダウンロードする時、ほとんどの場合が

    高速でダウンロードできるツールを Go で実装した。 - Qiita
  • Go 言語と React で考える「いい感じなURL設計」入門

    Description 白ヤギコーポレーションさま主催の「最先端情報吸収研究所(AIAL)」のプレゼンテーションで使用したドキュメントです。 「URL」を軸にして、サーバーサイドを Go 言語、クライアントサイドを React (+ TypeScript) で実装する場合の要点を紹介しました。 - いい感じな URL と わるい感じな URL - RESTful API のおさらい - Echo と REST API と URL - React と SPA と URL - いい感じの URL設計を目指す旅 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. interface FooterProps { company:string } export class FooterComponent extends React.Compo

    Go 言語と React で考える「いい感じなURL設計」入門
  • Big Sky :: コマンドラインで使えるtwitterクライアントをGoで書いた。

    普段からvimtwitterしてますが、どっちかっていうとtwitter見たりボヤいたりするのにもコンソールのままでいたい派です。 ページャとか、自分で拾うのでコンソールにまま出力されてくれればいい...そんなtwitterクライアントが欲しかったので自分で書いた。 mattn/twty - GitHub twty: command-line twitter client https://github.com/mattn/twty Go言語で書いたのは一度ビルドすればexeだけでランタイムが要らないから。あとGoだと簡単に書けるのよね。僕は。 ただ残念ながらどうしてもWindowsのコマンドプロンプトをサポートから外す訳にいかなかったのでGoのiconv拡張だけはライブラリとして入れる必要があります。 なお、この場合出来上がったexeとiconv.dllだけあれば動作します。USBかなん

    Big Sky :: コマンドラインで使えるtwitterクライアントをGoで書いた。
  • Matzにっき(2009-11-13) - [言語] The Go Programming Language

    _ [言語] The Go Programming Language もう知っている人は知っているGoogleからのシステムプログラミング新言語Go。 すっかり祭りには乗り遅れた感があるけど、少しだけコメントをつけておこう。 目次 言語仕様 言語実装 技術的でない話 まとめ 言語仕様 総合的に見て、非常にバランスを考えているように思える。 JavaC++のような複雑さを排して、シンプルに徹する一方、 言語好きを刺激するような新しいアイディアをそこかしこに配置している。 特徴である「コンパイルが高速」というのも、 このシンプルな言語仕様が寄与していると思われる。 個人的に、注目したのはオブジェクト指向機能と、並列機能。 interfaceによる、継承のないオブジェクト指向(duck typing)は、かなり私好みである。 昔からこういう言語が欲しかった。interfaceのみ動的結合を許す

  • 1