Developing games in Go for Nintendo Switch™ Go Conference 2021 Autumn (2021-11-13) Hajime Hoshi Nintendo Switch は任天堂株式会社の商標です
  
  Ruby is awesome. We love its readability, flexibility, and developer-centric nature. Still, here at Mars, we also love Go because it has its own sense of simplicity and magic, too. Simply put, Go holds advantages over Ruby in some aspects: it’s faster, statically typed, and comes with cool concurrency primitives out of the box. This being said, some intrepid readers might find themselves grappling
      
  Goのnet/httpパッケージはとてもよくできており、Webサーバーを動かすのに必要になる「httpコネクションを確立してリクエストを読んでルーティングして……」という手続き的な処理を気にせずとも誰でも簡単にWebサーバーを立てられるようになっています。 ですが、そのnet/httpが代わりにやってくれている「裏側の処理」の部分が気になる、何やっているんだろう?と不思議に思っている方はいませんか? この本では、実際に筆者がnet/httpパッケージのソースコードを読み込んだうえで、「GoのWebサーバーがどのような仕組みで起動・動いているのか」というところについて、図を使いながら解説しています。
      
  はじめに がんばって書いた書籍が低評価で少々しょんぼりしているあんどうです。まぁ、つい力が入りすぎて袋小路に思い切り突っ込んだ結果抜けられなくなることってあるよね。あるある。そんなわけで今日はできるだけ力を入れずテンション低めにサクッと行きます。 で、GoのWASM。大道の真ん中をまっすぐに歩まれているみなさんはWASMするときはRustかいっそC/C++をemscriptenでってことになると思いますが、私はしょせん路傍の石の下で低評価が目に入らないように丸まっているダンゴムシ。せっかくだからオレはこのGoでWASMを選ぶぜって感じなんですが、ぶっちゃけあれ、めんどくさいすよね。 あ、ちなみに今回の話は「このめんどくささをまるっと解決!」みたいな気持ちのいい話ではなくて、ただただ「めんどくさいよね」っていうだけの話です。あーめんどくさい。 Rustの場合 まず比較のためにRustの例をあ
      
  TOPICS Web 発行年月日 2020年04月 PRINT LENGTH 496 ISBN 978-4-87311-903-8 FORMAT 本書はHTTPに関する技術的な内容を一冊にまとめることを目的とした書籍です。HTTPが進化する道筋をたどりながら、ブラウザが内部で行っていること、サーバーとのやりとりの内容などについて、プロトコルの実例や実際の使用例などを交えながら紹介しています。GoやJavaScriptによるコード例によって、単純なHTTPアクセス、フォームの送信、キャッシュやクッキーのコントロール、Keep-Alive、SSL/TLS、プロトコルアップグレード、サーバープッシュ、Server-Sent Events、WebSocketなどの動作を理解します。 第2版ではHTTP/3の規格化など、初版の発行後に起きたウェブ技術への変化にともなう内容のアップデートに加え、DNS
      
  最近Go Modulesを使っていて、だいたいプラクティスが定まってきたのでまとめてみる。 個人的な結論 Go Modulesは積極的に使っていけばいい 幾つか課題はある $GOPATH から出る必要もない $GO111MODULE を適宜設定すればよい どうせ次のGo 1.13からはどこに置こうが関係なくなる 2つのモード $GOPATH/src にプロジェクトを置いていると、今(Go 1.12)の標準動作はGOPATHモードになる。これは、$GOPATH/src 以下からサードパーティパッケージを読み込むこれまでのGoと同様の動作になるということ。 それ以外の場所では go mod コマンドを使ってGo Modulesを利用することができる。これをmodule-awareモードという。go.mod と go.sum を使って依存ライブラリを管理する方式になる。これらのファイルはgo m
      
  package main import ( "fmt" "html" "math/big" "net/http" ) // ServerHTTPメソッド用の構造体型 type Server struct{} // httpリクエストを受け取るメソッド func (Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { // フォームの入力値を取得 left := r.FormValue("left") right := r.FormValue("right") op := r.FormValue("op") //演算子(ラジオボタンの値) // 文字列を整数に変換 leftInt := &big.Int{} rightInt := &big.Int{} _, leftOK := leftInt.SetString(left,
      
  こんにちは、Andyです。 普段はフロントエンドチームでJSばかり書いているのですが、せっかくGoの会社に入ったので良い機会だと思いGoに入門してみました。「Goの作法」を知ればより裏側のシステムについての理解が深まり、フロント側も良いプロダクトが作れるんじゃないかなと期待しています。 せっかく新しい言語を学ぶので、学習の中でやった事や詰まった事を文字で残そうというのが本記事の目的。 とてもじゃないですが1回で全てをカバーできないので数回に分けてチャレンジします。 手探りで自分なりのベストプラクティスを模索している最中なのでマサカリ大歓迎です。 現在のスタック 学習を始めるにあたって、自分のエンジニアとしてのスタックはこんな感じ。 Ruby on Rails, ES6 (業務レベル) PHP, Perl, Python (趣味レベル) ちなみにgolangの経験値はA Tour of Go
      
  Real World HTTPに引き続き今年2冊目の書籍が出版されます。ASCII.jpの連載をまとめて、加筆修正したものになります。最初は、連載をつなげて、はじめに、と次回予告を書き換えてつなげればOKという感じからスタートしましたが、章構成を書き換えたり、書き始めのときに「そのうち連載で触れる予定です」を「◯◯章で説明します」に書き換えたり、せっかくだから内容を追記しようとか考え始めたり、レビューアのメンバーが「これは並列・並行の結果であって原則とは違う」みたいな細かい定義のところまで指摘してくれて説明を大幅に書き換えたり、蓋を開けたら前から最後までかなり時間をかけて修正することになりました。せっかく転職で有給消化が一ヶ月あったのですが、この原稿の修正で一ヶ月がするっと溶けました。 11/16追記 Amazonでも販売がはじまっています! 大きな修正ポイントは次の通りです: 連載の分量
port 80を開くためにはroot権限が必要だが、開いたあとはセキュリティーリスクを最小限にするために一般ユーザ権限に降格したい、というWebサーバをGoで書く例です。 【追記3】 下記の例ではLinuxで動作させた場合に不十分です。 Linuxではsetuidを呼び出したスレッドにしか効かないので、以下の例をそのままLinuxで動かすとsyscall.Setuid()は成功しますが、HTTPのHandlerでは別スレッドで動くことがあるため、rootのままで動作することになります。 methaneさんのコメントを参照ください rootで起動した状態で":80"をlistenして syscall.Setuid() で一般ユーザになり http.Serve()する package main import ( "net" "net/http" "syscall" "log" ) func m
      
  リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く