【Go言語】 webapp GO Part1 【Golang】 [無断転載禁止]©2ch.net
プログラミングを誰でも習得できる方法は、「前場アキドルのプログラミングマスター方法」というブログで見られるらしいよ。ネットで調べると見られるらしいです。
2C3G9 >GCP の採用においては、エンジニア側の熱意も大きかったようです。
>「GAE と Datastore、Go 言語でやりたいという思いがエンジニアにすごくあったんです。
お前らがいたぞ progateのgo初級編やってみたけどドットインストールと大差ないな
出来ればGAE/Goで作られたカウルをフルスクラッチで作れるくらいの内容を中〜上級編として公開して欲しい >>473
http://ascii.jp/elem/000/001/499/1499741/
>現在、メルカリ(中略)新規事業として(中略)本やCDなどに特化した「メルカリカウル」を提供している。
>メルカリカウルにおいては、すべてGAEで構築している。 http://nodir.io/post/138899670556/prpc
pRPC: gRPC on Classic AppEngine today
こういうのもあるんだな
色々調べてみるか 仕事でgoでgRPC使ってるけどさ、正直何がいいのかわからない
JSON返しゃよくねと思ってしまう 本当に仕事で使ってたらその発想は出ないはずだが・・・
webの相手しかしてないの?スマホアプリのバックエンドとして普通使うよね? WebView使った側ネイティブアプリだとJSONしか使えなくね マイクロサービス間の通信にgRPC
フロントエンドにはGraphQL 別にサーバとクライアント間ではjsonでも困らんと思うが。
どっちかというとクライアント内のデータ構造がjsonのままはきつい。 OpenAPI(Swagger)とgoa使ってる人いる?
webアプリにしか使わないならこっちのほうがいいよね? 俺は普通のwebアプリでも使ってるけどね。spaなら全然行ける >>483
使ってると言いたかった。
マイクロサービスとか言うけど、結局webサーバーとして使えるから Twirp良さそうだな
HTTP1.1→2.0の過渡期限定だけどさ
.protoが同じなら生産性も学習コストも同じだし Twichもgolang使ってたのか
覇権確定だな…
邪悪なOracleの支配下になったJavaを捨ててgolangに来たかいがあった
技術選定を見誤ると数年以上の遅れに繋がる Googleが用意したGoのライブラリを使うだけで
GCPやAWS等のクラウドプラットフォームを自由に切り替えできる
ポータビリティの高いwebアプリケーションが開発できる、ってことかな?
これは良いね goでwebサーバ建てる場合ってwebapiサーバだよね。
普通のwebアプリ。html返すようなのにgoを使うメリットってあるかな? 今どきhtml吐き出し系のwebしか見てない設計を選択するのはやめたほうが良いと思うけどな
RESTないしgRPCないしTwirpにしてプラットフォーム共通にすべき
ネイティブスマホアプリ対応が二度手間になる >>495
俺も最初はそう思ったけど、クライアントサイドのバグ対応を考慮すると、
必ずしもSPAが正解とは言えない気がする。
インスタンスの生存期間が短いほうがシンプル何だよね >>497
requestに対するresponseのみの構成。
ぶっちゃけSSRな方式のほうが うちはgoのプロジェクトだらけになってきた。
ちなみに時価総額数千億の大手。 ストックオプションうらやましい
俺ならヤングリタイアするわ ヤングリタイアならいいけど
仲間数人雇って独立はやめとけよ
人件費だけであっという間に数千万飛んでいくから…
まともに稼げるプロダクトがないのに見切り発車で起業して
自殺してしまった人を知ってる…
1人でも起業できるのがITの良いところなので
自称ニートしながらPeingみたいな小粒サービスを何個も作ってたほうがいい 一つ聞きたいんだけどgoでweb apiサーバ建てるとしてwebクライアントはどうしてる?
spaってインスタンスの生存時間が長くなりがちだし、バグったときに全体が止まるから好かんのだけど、どう作るのが一番手軽? Visual Studio Code使ってるんだけどさ
ビルドタスクのtasks.jsonの記述冗長すぎないか?
結局make使ってるわ
シンプルで理解しやすいし
やりたいことはprotocくらいだしいいよね? 鯖は全部jsonで返して
クライアント側はVueかRiot reactっていったい何だったんだろうな
最終的にvue.jsの天下になった VueよりRiotの方が簡単でシンプルで再利用性が高いと思うの Vueは結局jQueryと同じになりそうだが...
githubのissueもreactよりずっと少ないし、
npmの週刊ダウンロード数見ても数倍差がある...
結局単価高いのはtypescriptでreact書いてるところだし Vueは結局jQueryと同じになりそうだが...
githubのissueもreactよりずっと少ないし、
npmの週刊ダウンロード数見ても数倍差がある...
結局単価高いのはtypescriptでreact書いてるところだし vueだとどうしても型で固めきれないよね。
reactはflowとか型付言語と合わせて使うのがほぼ前提になってるから。 Go言語チームとGoogleが「Go Cloud」プロジェクト発表。同一コードでAWSやGoogle Cloudなどに対応できるポータブルなクラウドアプリの実現へ
https://www.publickey1.jp/blog/18/gogooglego_cloudawsgoogle_cloud.html 関数の引数にstringを渡しているときは常に値渡しで、
文字列をコピーしているって公式の記載で書いてあるところどこにありますか?
探しているんですが見つからず。arrayは値渡しなのは書いてあるんだけど、、、 えっと、その情報のソースはどこにあるの?
ソースください(公式に記載があることを断定していることからするとソースがあるんだと思いますが)。
そして、文字列のコピーってのは何を言っているんですか。
Go の文字列は immutable だから、中身のバイト配列をコピーする必要ない。
https://golang.org/ref/spec#String_types
ただ Go の文字列は、配列というよりスライスに近くて、
実際のバイト配列へのポインタをそのサイズを持った構造体である。
https://golang.org/pkg/reflect/#StringHeader
この StringHeader についてはコピー(値渡し)される。
でも中身の Data はコピーされない。
別に、Data もコピーすると思い込みたければ思い込んでもいいけど、
immutable だからコピーしてもしなくても変わらない。
実際に試してみれば:
https://play.golang.org/p/qsaq4AET8ac >>523
おーありがとうございます。
https://blog.golang.org/go-slices-usage-and-internals
見ながら文字列=arrayなのかと想像していたんですが
実際には文字列=sliceだったんですね
そのへんの記述が見当たらなくて悩んでたんですが、公式のドキュメントには書いてないんですかね。実験で確かめるしかない感じ? >>523
そのページの Related articles に書かれてますよん。
https://blog.golang.org/slices
> Now a brief section about strings in Go in the context of slices.
> Strings are actually very simple: they are just read-only slices of bytes
> with a bit of extra syntactic support from the language.
> An important consequence of this slice-like design for strings is
> that creating a substring is very efficient.
> All that needs to happen is the creation of a two-word string header.
> Since the string is read-only, the original string and
> the string resulting from the slice operation can share the same array safely. >>525
亀レスですがありがとうございます。
ところでStringHeaderで言語内部のデータ構造にアクセスできることに感銘を受けたんですが同じようにsliceにもアクセス可能なSliceHeader的なのもあったりしますか?
とおもったらStringHeaderの上にもあったw go modulesめっちゃ便利やな
GOPATH関係なく動くのが本当にいい、開発時に嫌だった制限がとうとう無くなってハッピー GAEのstandardも1.11からurlfetchとかが消えてハッピー
ベータとれたらやっと人に勧められるわ GAE/SEのGo言語でgRPCするためのベストプラクティスってある?
それをまとめたWAFがあると理想なんだがなぁ
プロジェクト
└ サービスA: GAE/SE Node.js Nuxt.jsでSSR
└ サービスB: GAE/SE Go言語 サービスAからのリクエストを処理するAPIサーバ
gRPC(Twirp)を使いたい TwirpってことはHTTP/1.1なREST使いたいんだろ?
双方向通信やストリームを使わないのであればgRPCよりも
GraphQLのほうがいいと思う
nuxt.jsとGraphQLを組み合わせてサービスAに統一するほうがいいぞ
nuxt.jsのserverMiddlewareでフックしてGraphQLのエンドポイント出すだけ
https://qiita.com/takanorip/items/d1e8618800d951780f4b それならサービスBにプレーンなApollo-server(graphqlサーバ)デプロイして
サービスA(nuxt.js側)からクエリ投げてJSON取得する構成のほうがよくないか
せっかく境界つくるんだから疎結合にしとこうぜ
Microservice化して作業担当者の責任を明確にしたほうがいい
負荷に応じてインスタンスのグレードやインスタンス数を上げたり下げたり出来るメリットも生まれる
フロントエンド(SSR)担当のサービスA
バックエンド(GraphQL)担当のサービスB
スッキリするじゃん まぁ例のQiita記事はApollo-clientとNuxt.jsのやり方だから、Serverには触れてないけどな
>nuxt.jsのserverMiddlewareでフックしてGraphQLのエンドポイント出すだけ
これに対しての意見な
serverまでnuxt.jsに密結合させる必要はない 俺もGAE/Go信者やで
実はその他のPaaSやIaaSクラウドにはない魅力がGAE/SEにはある。
それは「1日の予算設定」だ。
GAE/SEだけ、EDDoS(エコノミックDDoS)で予期せぬ損害を被るリスクが低いのである。
予算使い果たしたらOver Quotaエラーでて終わり。サービスは停止するが破産は免れる。
他のサービスは予算ライン超えても警告メール出すだけで止まらない。
パケ・ホーダイのないスマホでYoutube動画を見るくらい恐ろしい行為なのだ。
資金力のない零細ベンチャーが、悪意ある競合他者から身を護るために有効な選択である。 GAE/Node.jsとGAE/Goってどっちがスピンアップ早いのだろう?と思って調べたらこうなった
https://www.bunkei-programmer.net/entry/2018/06/13/232912
Go 平均0.495秒
Node.js 平均0.6516秒
Javaは問題外だな JavaScript界隈のエコシステムが羨ましくなってきた…
Nuxt.jsでSSR出来るのNode.js環境だけだし
パッケージマネージャーのYarnは高速かつ進捗表示が親切だし
(go get だと-vオプション付けても分かりにくい…)
GraphQLもApollo Server楽ちんだしドキュメントもわかりやすい
Go言語だとスキーマ定義が冗長だったり(graphql-go)
プレーンで可読性の高い定義ファイルから自動作成できる便利なgqlgenは
gqlgenコマンドバイナリが何かトラブってdeplicatedになってるし
いまいちすっきりしない jsみたいなコンパイラ通さない言語はテストが大変すぎて使いたくない
ほんのちょっとしたものを作るのはいいけど規模がでかくなると苦痛のほうが遥かに大きくなると感じてる 巨大なプログラムを書けない人はセンスが無いだけ
そういう人はコンパイラ使っても破綻する >>543
Typescriptあるやん
GoにはGoの良いところがあるから心配するな https://github.com/prisma/prisma/issues/1708
prisma/prismaはいつGoogle Cloud Datastoreに対応してくれるんだい? (1)Google App Engine Datastore
import "google.golang.org/appengine/datastore"
(2)Google Cloud Datastore
import "cloud.google.com/go/datastore"
(3)Google Cloud Firestore
import firebase "firebase.google.com/go"
この関係が複雑で分かりにくい
将来的には(3)からbetaが取れて本流になるんでしょ?
あとgo111の第二世代GAE/SEと旧世代のコードが分散してて辛いな
最新の情報はここを見て!という道標が欲しい
公式ドキュメントは散らかりすぎてて訳わからない (3)Google Cloud Firestoreは、betaなので東京リージョンが存在しない。
(2)Google Cloud Datastoreは2019年中に自動で(3)にアップグレードされる
おそらく(1)も?
Firestoreの裏側にはSpanner(単独で使うとめっちゃ高い)がある。
またDatastoreモードとNativeモードがある。
Datastoreの裏側にはBigtableがある。旧世代の制約はここから来てる。
FirestoreがGAになったらDatastoreは用済み。
Firestore Native Modeのほうがいいならbetaであること、東京リージョンがないことを覚悟して使うべし。 GraphQLの定義ファイル書いてCUIでコマンド打つだけで
Google App Engine / SEで動作するwebアプリケーションが
完成するシステムを開発して欲しい
誰か頼むよ
マッツン、わかめ氏よろしく >>558
GAE/SEで動かせる言語の中でスピンアップが一番高速
これが最大のメリット
Java→クソ遅い、10秒かかる
PHP、Python→普通
Node.js→やや早い
Golang→チョッパヤ
スピンアップが早いのでインスタンス寝かせておいてもすぐ反応できる
(課金節約)
○○砲などのアクセス殺到スパイクが来てもスピンアップが早いので瞬時にスケールする
他のIaaS、PaaSは割と遅い gaeでgo動かしてるんですが、jsonpayload形式でログって出せないですか? Goのwebasmって最小でも2MBって馬鹿なの死ぬの?
この大きさってなんの意図があるんだろう Go失速したのかissueマネージメントやら方向性の意思決定に難があるようだな
このまま使い続けて大丈夫だろうか