Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
11月に学んだものを使ってシンプルなWebサービスを構築してみました。 GCP + Go + Angular2 のgoogleful的なヤツです。 夜中に少しづつ書いた超絶シンプルなモノですが、如何せんAngular2でかなり苦戦してしまい、この程度のでもトータル20~30時間くらいかかってしまいました… サービスの内容 datastoreに登録されているデータの一覧表示 登録されているデータの編集 これだけです笑。 とりあえず今回はソースの公開だけを行い、ノウハウとして役立ちそうなことはピックアップして今後記事にしていく予定です。 また、今後はこのソースに機能追加をしながら様々なサービスの学習を行う予定です。 今回やりたいこと go言語でREST APIを構築する Datastoreのレコードの登録・削除を管理者権限でのみ行えるようにする とにかくAngular2を使ってみる 実装内容
皆さまゴールデンウィークはいかがお過ごしでしょうか。 GW前に投稿しようと下書きにちまちま書き溜めていた本記事ですが、スマホで誤ってゴミ箱ボタンを押してしまったがために一瞬で電子の藻屑と化してしまい泣きながら記事を書き直しています。 せめて削除時は確認ダイアログぐらい出るようにQiitaには改善してもらいたいものです。。 閑話休題。 Go言語で複数エラーハンドリングするためにいい方法ないかなーとネットの海を彷徨っていたところ、なかなかよさげな記事を見つけたので実例を交えて書き残していきたいと思います。 go1.6.2で検証 エラー処理の基本 Go言語にはtry~catch~finallyの例外処理は存在しません。 http://golang.jp/go_faq#exceptions Go言語ではエラーを処理するためにerrorインタフェースが用意されています。
オプション パッケージを作る際、柔軟性を持たせるためにオプションを持たせたい時がしばしばあります。 しかしオプションは知っての通り設定しないことが少なくありません。 単にコンストラクタに並べるようでは無用な複雑さをはらむことになります。 JavaなどではOptional Parameterなどのように、デフォルト値が指定できる機能があります。 機能の厳選されたgo言語ではそのような機能はありませんが、 "Self Referential Functions Design"というテクニックがあり、 それについての記事がRob Pike氏の記事を筆頭にいくつか説明されています。 オプションと相性が非常に良いため、合わせて"Functional Option Pattern"とも呼ばれています。 Dave Cheney氏の記事を参考におおまかに説明したいと思います。 様々な解決策 あるServe
ご報告 http://qiita.com/youtanagai/items/533341949daafc519da3 ここにmysqlも利用したrevel開発環境の構築として清書したのでこちらを御覧ください 動機 PythonにはDjango, RubyにはRailsのdocker imageはあるのに golangのRevelのdocker imageがなかったので作成した話し https://github.com/youtangai/RevelOnDocker ここにあるのでforkしていただければすぐ使えます. 前提 revelがホストにインストールされている フォルダ構成 docker-composeを実行するフォルダ(revel)の構成は以下のとおりです - revel - Dockerfile - docker-compose.yml - myapp(revelプロジェクト)
◆ クラスがない(オブジェクト指向とは違う) オブジェクト指向ではないので、当然、Javaとは異なった文法になっています。クラスはないので、Javaと同じような書き方は当然できません。 レシーバ変数、インターフェースを利用して「オブジェクト指向」らしいコーディングはできますが、そもそもJavaのような書き方をするのであれば、Javaでよいと思います。 何のために使うのか、どうやってつかうのかということが根本的に違う感じがします。 どちらかというと、手続き指向でC言語を拡張した印象です。 とはいえ、C言語ともやはり違う、かなり異質な文法を持った言語だと思います。 ◆ 設計上よりも学習コストの問題がありそう GoはJava、C#、Ruby、Pythonなどと文法的に異質な感じをうけます。そもそもオブジェクト指向でない時点でそれは分かる気がします。 また、変数の宣言方法をみても選択肢がいくつかあ
吾はGoでGenericsがないことに関してはわりと肯定的な立場ではあるのだが、流石に「golang と Generics と私 」の記事の例はどうかと思ったので、畳み込みfold関数を例にGenericsが解決する問題を例示してみようと思う。 なぜfoldかというと、 List<T> の要素を加算して集約する処理を書くなら普通はfoldで実装するし、foldがあればmapもfilterも実装できるので。 javaで畳み込み Stream APIで用意されてるreduceで一発です List<Integer> list = Arrays.asList(1, 2, 3); // listの加算とか畳み込みで一発ですよ int result = list.stream().reduce((a, b) -> a + b).get();
バージョンアップしました。 名前が変わってます。filebase -> jsonbase http://qiita.com/intelf___/items/67099042ec7883ca21ef URL https://github.com/intelfike/filebase 練習の為、無駄に英語を使ってます。 メソッドの用途別一覧が載ってるので、ぜひ活用してください。 どういうものか Firebase RealtimeDatabaseというjson形式のデータベースサービスを基に作ろうとして、結局大幅に変更することになった自作パッケージです。 jsonをいろいろ操作することができます。 ・firebase ファイアーベース ・filebase ファイルベース の違いに注意。 なぜ作った? [golang json 編集]みたいに検索してもうまくヒットしない。 英語ならあった。 htt
はじめに Goは、Go1.5以降C言語による実装がなくなり、ほぼ全てがGoによって書かれています。そのためGoエンジニアは最悪Goのソースコードを読んで問題を解決することができるため、とても生産的な状態にあると言えます。 しかしGoがセルフホスティングだとしてもOSの機能群を呼び出すときには、C言語で実装されているシステムコールを実行しているはずです。では、Goではどのようにシステムコールを実行しているのでしょうか?また、どのようにそれらをビルドしているのでしょうか? この記事では、上記の疑問をGoのソースとドキュメントから読み解いていきます。 Goとシステムコール 一般のGoプログラマがGoでシステムコールを実行するには、syscallパッケージ、golang.org/x/sys/パッケージを利用します。1 関数一覧には見覚えるのあるシステムコールと同様の名前の関数が並んでいます。これら
$ go build -x # 作業用のディレクトリを作成 WORK=/var/folders/4z/yzprxc9n5sx7gly7ybrynkl80000gn/T/go-build482602531 mkdir -p $WORK/github.com/sonatard/buildtest/_obj/ mkdir -p $WORK/github.com/sonatard/buildtest/_obj/exe/ cd /Users/ken/src/github.com/sonatard/buildtest # コンパイル /usr/local/Cellar/go/1.7.3/libexec/pkg/tool/darwin_amd64/compile -o $WORK/github.com/sonatard/buildtest.a -trimpath $WORK -p main -compl
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに Goの標準パッケージには、goパッケージというものがあり、Goのソースコードを静的解析するのに便利な機能が提供されています。 goパッケージを使うと、以下のようなツールが簡単に作れます。 ソースコードを自動生成するツール ソースコードに対してlintやフォーマットを行うツール リファクタリングツール ソースコードから特定の何かを検索するツール ミニ言語の処理系 また、goパッケージを学ぶとコンパイラや言語処理系の知識も学べるので、他の標準パッケージとはまた少し違った知識を得ることができ、プログラミングの知識の幅が広がります。
GolangはGo1.6でHTTP2をサポートした. また2017年2月にリリース予定のGo1.8ではServer Pushを行うためのメソッドも新たに追加される(使い方は HTTP/2 Server Push · Go, the unwritten parts が詳しい). 今後GolangでのHTTP2の利用はさらに増えると考えられる. HTTP2を使うアプリが増える分そのテストも重要になる. Go1.6におけるHTTP2サポートは素晴らしくAPIの変更なしにサポートが行なわれた. Server側でh2を有効にするにはListenAndServeTLSで起動すればよいしClientもDefaultClientを使えばよい. Golangでサーバーのテストをするときはhttptestパッケージが主に利用されるが,これほど簡単に使える訳ではない. 以下のように軽く設定を入れる必要がある.
Go でツール書くときはタスクランナーとして make を使っています。ビルドだけじゃなくて、テストや配布用パッケージ作成も一括して make でやっています。 今回は整理も兼ねて、自分が普段どういう Makefile を使っているのか解剖していきます。 なぜ make を使うのか ビルドフラグ覚えるのが面倒だから、make は (Windows を除く) 大半のプラットフォームに入っていて使いやすいからというのが理由です。script/build みたいにシェルスクリプトを複数用意するのでもまあ良いと思いますが…。大半の Go プロジェクトは Makefile 置いてありますね。 make を使った開発フロー 基本的には、リポジトリを git clone / go get -d した後に以下のコマンドを打てばアプリケーションをインストールできるようにしています。
はじめに 筆者が以前書いた「簡単な式の評価機を作ってみる」や「【実践goパッケージ】文字列から複素数型の値をパースする」などの記事では、文字列で表された式から抽象構文木(AST)を取得し、ASTのノードの種類ごとに再帰的に処理する関数を書きました。 この記事では、go/astパッケージに用意されている、ast.Inspect関数やast.Walk関数を使って、ASTをトラバースする方法について解説します。 なお、ASTを取得する方法については、「ASTを取得する方法を調べる」という記事を書いていますので、そちらを参考にしてください。 この記事で扱っているGoのバージョンは1.7.4です。 ast.Inspect関数 ast.Inspectは、ASTを深さ優先でトラバースする関数で、以下のようなシグニチャを持ちます。
(元々Gistにメモ的に書いていたが後から追跡しにくいので転載した) golangweekly.com が http://golangweekly.com/issues/140 にてBest 2016をまとめていた.便乗して自分なりに今年良かったものをまとめてみる.https://blog.golang.org/ は除外している.あくまで「自分が良かった」ものである. まずgo-kitのPeter BourgonのGo best practices, six years inとBoltDBのBen Johnsonが標準パッケージを詳細に語るGo Walkthroughシリーズ https://medium.com/go-walkthrough はMUSTである.これらの知見を知ってるだけでだいぶ良いコードが書けるのではないか. 今年はGo1.6とGo1.7がリリースされたがruntimeの
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く