
Outline
超爆速でコンパイルができる、Go言語製の静的サイトジェネレーターHUGO。
当然、HUGOでは静的HTMLサイトしか作ることができない。しかし、テンプレート機能をうまく作ればWordPressにも負けないようなパーツが結構作れてしまう。この記事では、HUGOで構築した自分のブログを例に、いくつかのCMSっぽいパーツ見本集をまとめる。
テンプレート見本
- バージョン0.16で動作確認
Hugo Static Site Generator v0.16 BuildDate: 2016-06-06T21:37:59+09:00
- テンプレート機能の見本なので、CSSについては言及しない
HUGOのページの種類とVariablesの関係
HUGOでは、ページの種類によってテンプレートから参照できる変数に違いがある。
名称 | 説明 |
---|---|
Node Variables | ホームページやタグ一覧ページなど、一覧系ページでしか参照できない変数 |
Page Variables | Markdownからコンパイルされた記事ページでしか参照できない変数 |
Site Variables | サイトのどのページからも参照できる変数 |
Node Variables
に分類される変数を記事ページからは使用できないし、Page Variables
に分類されているものを一覧系のページで呼び出すこともできない。(ビルド時にエラーが出る)
このため、サイドバーなどのサイト全体で使うパーツに対しては、どの場所からも参照できるSite Variables
で完結させる必要がある。
各見本の冒頭部には、そのテンプレートが依存する変数がどれに分類されるかを記載する。
アイキャッチとタグ付きの新着順記事一覧
[Node Variables]
この例では、記事のMarkdownへアイキャッチ画像用のURLをfront-matterのimage
プロパティを記述し、項目が存在する場合はHTMLに出力するようにしている。
存在の有無でclassも変化する為、レイアウトをそれぞれ適当なものに変えることができる。
ちなみに、.Summary
はconfig.toml
でHasCJKLanguage = true
を設定しないとおかしな表示になってしまうので、日本語のブログを作るときは必ず設定しておこう。
HTML
- ページネーションなしで全件出力
<!-- article-list -->
<section class="article-list">
<h2 class="article-list__head" itemprop="name">記事一覧</h2>
<ol class="article-list__list">
{{ range .Data.Pages.ByDate.Reverse }}
{{ .Render "li" }}
{{ end }}
</ol>
</section>
<!-- /article-list -->
<li class="article-list__item">
<!-- article-sneak -->
<article class="article-sneak {{ if .Params.image }}article-sneak--thumb{{ end }}">
<div class="article-sneak__link" onclick="location.href='{{ .RelPermalink | safeJS }}'">
<div class="article-sneak__text article-sneak__wrapper">
<div class="article-sneak__inner">
<p class="article-sneak__date">
<a href="{{ .RelPermalink }}"><time datetime="{{ .Date.Format " 2006-01-02T15:04:05Z07:00" | safeHTML }}">{{ .Date.Format "2006.01.02" }}</time></a>
</p>
<h3 class="article-sneak__head">
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
</h3>
{{ if .Params.tags }}
<dl class="article-sneak__tags">
<dt><i class="icon icon-tag"></i></dt>
<dd>
{{ range .Params.categories }}
<a href="/categories/{{ . | urlize }}/">{{ . }}</a>
{{ end }}
</dd>
<dd>
{{ range .Params.tags }}
<a href="/tags/{{ . | urlize }}/">{{ . }}</a>
{{ end }}
</dd>
</dl>
{{ end }}
<p class="article-sneak__body"><a href="{{ .RelPermalink }}">{{ .Summary }}</a></p>
</div>
</div>
{{ if and (.Params.image) (ne .Params.image "") }}
<div class="article-sneak__figure article-sneak__wrapper">
<div class="article-sneak__inner">
<a href="{{ .RelPermalink }}"><p class="article-sneak__thumb" style="background-image: url({{ .Params.image }});">
<img style="display:none" src="{{ .Params.image }}" alt=""/>
</p></a>
</div>
</div>
{{ end }}
</div>
</article>
<!-- /article-sneak -->
</li>
Markdown
アイキャッチ画像がある場合はimage
プロパティにパスを記載する。
+++
image = "/blog/makeowndigitalbook/stackroom.png"
+++
なお.Summary
の内容を制御する方法はこちらの記事が詳しい。
ページネーション付の記事一覧と操作UI
[Node Variables]
前項とほぼ一緒だが、ボタン部分に加えて、一覧の抽出条件の書き方が違ってくる。
HTML(一覧)
この書き方だと、出力される記事件数はデフォルトの件数となる。ページネーションのデフォルト件数はconfig.toml
に設定できる。li
パーシャルの中身は前項ママでそのまま使えるので省略する。
<!-- article-list -->
<section class="article-list ">
<h2 class="article-list__head">{{ .Title }}の記事一覧</h2>
<ul class="article-list__list">
{{ range .Paginator.Pages }}
{{ .Render "li" }}
{{ end }}
</ul>
{{ partial "pagination-nav.html" . }}
</section>
<!-- /article-list -->
config.toml
1ページあたり20件の表示としたい場合はこのように書く。
paginate = 20
HTML(ボタン部分)
ページネーションの操作UIは、次のように実装した。
<nav role="pagination" class="pagination-nav">
<p class="pagination-nav__btn pagination-nav__btn--prev">
<a class="pagination-nav__item pagination-nav__item--link" {{ if .Paginator.HasPrev }} href="{{.Paginator.Prev.URL}}" {{ end }}>
<i class="icon icon-arrow-left"></i>前のページへ
</a>
</p>
<p class="pagination-nav__btn pagination-nav__btn--summary">
<span class="pagination-nav__item">
{{.Paginator.PageNumber}}/{{.Paginator.TotalPages}}
</span>
</p>
<p class="pagination-nav__btn pagination-nav__btn--next">
<a class="pagination-nav__item pagination-nav__item--link" {{ if .Paginator.HasNext }} href="{{.Paginator.Next.URL}}" {{ end }}>
次のページへ<i class="icon icon-arrow-right"></i>
</a>
</p>
</nav>
押せない時に薄くなる表現はCSSで実装している。
本文の途中に挿入する目次
[Page Variables]
標準の機能では記事の内部に目次を混ぜることはできない。
そこで、あらかじめ本文中に空のHTML構造を挿入しておき、目次のパーツをJavaScriptで移動させる。これで、外観上は目次が途中に挿入されているように見える。
HTML
<!-- single.htmlの一部 -->
<section>
<div class="body">
{{ if eq .Params.usetoc true }}
{{ partial "toc.html" . }}
{{ end }}
{{ .Content }}
</div>
</section>
<section class="js-toc">
<h2>目次</h2>
<div class="toc">
{{ .TableOfContents }}
</div>
</section>
JavaScript
var $tocPlace = $('#js-toc-place');
if ($tocPlace.length === 1) {
$('.js-toc').appendTo($tocPlace);
}
Markdown
front-matter内でusetocフラグを使い、必要な記事にだけ目次を挿入できるようにしている。
+++
usetoc = true
+++
それでもメリットはかなり大きい。
<!-- この部分に目次を挿入 -->
<div id="js-toc-place"></div>
## 必要機材
本を自炊するためにはどうしても機材が必要になる。
独自デザインの共有ボタン
[Page Variables]
facebook, twitter, はてブ, メール送信に対応したリンク要素を生成する。本来の用途と異なるかもしれないが、safeJS
フィルターが良好に機能した。
<!-- content-footer -->
<div class="content-footer ">
<p class="content-footer__text">最後までお読みいただきありがとうございます!<i class="icon icon-share"></i></p>
<ul class="content-footer__sns-list">
<li class="content-footer__sns-item ">
<p class="button button--sns button--sns--fb">
<a class="button__link" href="https://www.facebook.com/sharer/sharer.php?u={{ .Permalink | safeJS }}"><i class="icon icon-facebook"></i>Facebookで共有</a>
</p>
</li>
<li class="content-footer__sns-item ">
<p class="button button--sns button--sns--tw">
<a class="button__link" href="http://twitter.com/intent/tweet?text={{ .Title | safeJS }}%20%7C%20{{ .Site.Title }}%20{{ .Permalink | safeJS }}%20%40{{ .Site.Params.twitter }}"><i class="icon icon-twitter"></i>Twitterで共有</a>
</p>
</li>
<li class="content-footer__sns-item ">
<p class="button button--sns button--sns--hb">
<a class="button__link" href="http://b.hatena.ne.jp/entry/{{ .Permalink | safeJS }}"><i class="icon icon-hatebu"></i>はてなブックマークで共有</a>
</p>
</li>
<li class="content-footer__sns-item">
<p class="button button--sns button--sns--mail">
<a class="button__link" href="mailto:?subject={{ .Title }}&body={{ .Permalink | safeURL }}">メールで共有</a>
</p>
</li>
</ul>
</div>
<!-- /content-footer -->
関連記事
[Page Variables]
表示中の記事に含まれるタグを持つ、自分自身を含まない他の記事の一覧を出力する。
HTML
残念ながら、この書き方だと関連記事が0件の時にもh2の見出しが出力されてしまう。色々試したものの、テンプレートのレベルでは解消できなかった。もし解消できたらここへ追記する。
<!-- related-articles -->
{{ if .Params.tags }}
<nav class="related-articles js-related-articles">
<h2 class="content-footer__text">関連記事</h2>
<ul class="related-articles__links">
{{ $currentTitle := .Title }}
{{ $page_link := .RelPermalink }}
{{ $tags := .Params.tags }}
{{ range .Site.Pages }}
{{ $page := . }}
{{ $has_common_tags := intersect $tags .Params.tags | len | lt 0 }}
{{ if and $has_common_tags (ne $page_link $page.RelPermalink) }}
<li class="related-articles__item js-items">
<article class="related-article">
<a class="related-article__link" href="{{ $page.Permalink }}">
<p class="related-article__stock">{{ $page.Date.Format "2006.01.02." }}</p>
<h3 class="related-article__title">{{ $page.Title }}</h3>
<p class="related-article__tags">
{{ range $page.Params.tags }}
<span class="related-article__tag">
{{ . }}
</span>
{{ end }} </p>
</a>
</article>
</li>
{{ end }}
{{ end }}
</ul>
</nav>
{{ end }}
<!-- /related-articles -->
JavaScript
……こういった訳で、見出しはJavaScript側で除去する実装。
function removeEmptyRelated() {
let $target = $('.js-related-articles');
let items = $target.find('.js-items');
if (items.length !== 0) {
return false;
}
$target.remove();
}
前の記事/次の記事へのナビゲーション
[Page Variables]
同一セクションに限定し、前後の投稿がある場合はそれを出力する。
<!-- content-nav -->
<nav class="content-nav ">
<ol class="content-nav__links">
{{ if .PrevInSection }}
<li class="content-nav__item">
<p class="content-nav__label">前の投稿</p>
<p class="button button--article-nav">
<a class="button__link" href="{{.PrevInSection.RelPermalink}}"><i class="icon icon-arrow-left"></i>{{ .PrevInSection.Title }}</a>
</p>
</li>
{{ end }}
{{ if .NextInSection }}
<li class="content-nav__item">
<p class="content-nav__label">次の投稿</p>
<p class="button button--article-nav">
<a class="button__link" href="{{.NextInSection.RelPermalink}}"><i class="icon icon-arrow-right"></i>{{ .NextInSection.Title }}</a>
</p>
</li>
{{ end }}
</ol>
<div class="content-nav__menu">
<p class="button button--article-nav button--article-nav--menu">
<a class="button__link" href="/"><i class="icon icon-menu"></i>記事一覧へ戻る</a>
</p>
</div>
</nav><!-- /content-nav -->
特別な記事だけを抽出して一覧
[Site Variables]
pickup
フラグがtrueの記事だけを限定して抽出してアイキャッチ画像を並べる。
あらかじめ各記事のfront-matterにpickup
、type
、image
を記述しておく。
HTML
- 「project」タイプで「pickup」パラメーターがtrueの記事を時系列の逆順に3件まで表示
- 「docs」タイプで「pickup」パラメーターがtrueの記事を時系列順に2件まで表示
<!-- gallery-sneak -->
<div class="gallery-sneak site-hero--footer">
<div class="gallery-sneak__inner">
<ul class="gallery-sneak__list">
{{ range first 3 (where (where .Site.Pages.Reverse ".Params.pickup" "true" ) "Type" "project") }}
<li class="gallery-sneak__item">
<a href="{{ .RelPermalink }}" style="background-image: url({{ .Params.image }});">
<img src="{{ .Params.image }}" alt=""/>
</a>
</li>
{{ end }}
{{ range first 2 (where (where .Site.Pages ".Params.pickup" "true" ) "Type" "docs") }}
<li class="gallery-sneak__item">
<a href="{{ .RelPermalink }}" style="background-image: url({{ .Params.image }});">
<img src="{{ .Params.image }}" alt=""/>
</a>
</li>
{{ end }}
</ul>
</div>
</div>
<!-- /gallery-sneak -->
Markdown
上記の抽出条件にマッチさせるには、front-matter内へ次を記載する。
+++
type = "docs"
pickup = "true"
image = "/path/to/image.png"
+++
メタ情報
[汎用]
Facebook, Twitter cardに対応したメタタグ。OGPの内容にこだわると結構条件分岐が増える。パーシャル化して運用した方がよいだろう。
HTML
<meta charset="UTF-8">
<!--
トップページだけ特別ルールにする
-->
{{ if .IsHome }}
<title>{{ .Site.Title }}</title>
{{ else }}
<title>{{ .Title }} | {{ .Site.Title }}</title>
{{ end }}
<meta name="generator" content="{{ .Hugo.Generator }}">
<meta name="author" content="{{ .Site.Author.name }}">
<meta property="og:locale" content="{{ .Site.Params.localeOgp }}">
<meta property="fb:app_id" content="{{ .Site.Params.fbAppId }}">
<meta property="og:title" content="{{ .Title }}">
<meta property="og:url" content="{{ .Permalink }}">
<meta property="og:site_name" content="{{ .Site.Title }}">
<!--
1. `.Description`がある場合はそれを使用
2. 「1」が存在せず、nodeの場合は`.Summary`を使用
3. 「1」「2」が存在しない場合は共通の説明文を使用
-->
{{ if .Description }}
<meta name="description" content="{{ .Description }}">
<meta property="og:description" content="{{ .Description }}">
<meta name="twitter:description" content="{{ .Description }}">
{{ else }}
{{ if .IsPage }}
<meta name="description" content="{{ .Summary }}...">
<meta property="og:description" content="{{ .Summary }}...">
<meta name="twitter:description" content="{{ .Summary }}...">
{{ else }}
{{ if .IsHome }}
<meta name="description" content="{{ .Site.Params.description }}">
<meta property="og:description" content="{{ .Site.Params.description }}">
<meta name="twitter:description" content="{{ .Site.Params.description }}">
{{ else }}
<!-- 同じdescriptionのページが重複することを避ける -->
<meta name="description" content="{{ .Title }}に関連する記事の一覧です。{{ .Site.Params.description }}">
<meta property="og:description" content="{{ .Title }}に関連する記事の一覧です。{{ .Site.Params.description }}">
<meta name="twitter:description" content="{{ .Title }}に関連する記事の一覧です。{{ .Site.Params.description }}">
{{ end }}
{{ end }}
{{ end }}
<!--
記事にアイキャッチ画像がある場合はそれをOGP:imageに指定する。
存在しない場合はサイトデフォルトの画像を指定する。
-->
{{ if and (.Params.image) (ne .Params.image "") }}
<meta property="og:image" content="{{ .Params.image | absURL }}">
<meta property="twitter:image" content="{{ .Params.image | absURL }}">
{{ else }}
<meta property="og:image" content="{{ .Site.Params.ogpimage | absURL }}">
<meta property="twitter:image" content="{{ .Site.Params.ogpimage | absURL }}">
{{ end }}
<!--
記事ページはog:typeをarticleにする。公開日時、タグもキーワードとして出力
-->
{{ if .IsPage }}
<meta property="og:type" content="article">
<meta property="og:article:published_time" content="{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">
{{ range .Params.tags }}<meta property="og:article:tag" content="{{ . }}" />{{ end }}
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@{{ .Site.Params.twitter }}">
<meta name="twitter:creator" content="@{{ .Site.Params.twitter }}">
<meta name="twitter:title" content="{{ .Title }}">
<meta name="twitter:url" content="{{ .Permalink }}">
{{ else }}
<meta property="og:type" content="website">
{{ end }}
<!--
トップでなければホームページへのリンクを出力
-->
{{ if ne .IsHome true }}
<link rel="index" href="/"/>
{{ end }}
<!--
ページネーションがある場合は、next/prevを出力
-->
{{ if .IsNode }}
{{ if .Paginator.HasPrev }}
<link rel="prev" href="{{.Paginator.Prev.URL}}"/>
{{ end }}
{{ if .Paginator.HasNext }}
<link rel="next" href="{{.Paginator.Next.URL}}"/>
{{ end }}
{{ end }}
<!--
前後の記事がある場合は、next/prevを出力
-->
{{ if .IsPage }}
{{if .PrevInSection}}<link rel="prev" href="{{ .PrevInSection.RelPermalink }}">{{end}}
{{if .NextInSection}}<link rel="next" href="{{ .NextInSection.RelPermalink }}">{{end}}
{{ end }}
<!-- HUGOが生成するAtomフィード -->
<link href="{{ .Site.RSSLink }}" rel="alternate" type="application/rss+xml" title="{{ .Site.Title }}">
意味情報(JSON-LD)
バージョン0.16からjsonify
フィルタや、記事からプレーンテキストだけを取得できる.Plain
変数が追加され、JSON-LDのテンプレートがかなり作成しやすくなった。
記事ページのJSON-LD
[Page Variables]
記事ページをBlogPosting
としてマークアップするためのJSON-LDを記載する。
注意が必要な点として、BlogPostingタイプでは、記事の画像(image
)、著者(author
)、出版元(publisher
)フィールドが必須となっている。しかも、上の3つはそれぞれImageObject、Person、Organizationのタイプでなければならない。
そのため、画像のない記事には、あらかじめ適当なデフォルト画像をあてがう必要がある。OGP対応のためのデフォルト画像を流用するのが適当だろう。
さらにImageObject
タイプはwidth
height
の値が必須となるので、画像の縦横ピクセル値をFront-matter
へ記載する必要もある。
<!-- ブログ記事の情報 -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "BlogPosting",
"@id": "{{ .Permalink }}",
"name": {{ .Title | jsonify }},
"headline": {{ .Title | jsonify }},
"description": {{ .Summary | jsonify }},
"dateModified": "{{ .Lastmod.Format "2006-01-02" }}",
"datePublished": "{{ .Date.Format "2006-01-02" }}",
"mainEntityOfPage": "{{ .Permalink }}",
"url": "{{ .Permalink }}",
{{ /* 字数 */ }}
"wordCount": "{{ .WordCount }}",
{{ /* プレーンテキストの本文 */ }}
"articleBody": {{ .Plain | jsonify }},
"articleSection": {{ .Section | jsonify }},
{{ /* カテゴリをジャンルとして使用 */ }}
{{if .Params.categories }} "genre": "{{ range .Params.categories }}{{ . }}{{ end }}",{{ end }}
{{ /* タグをキーワードとして使用 */ }}
{{if .Params.tags }} "keywords": "{{ range .Params.tags }}{{ . }}{{ end }}",{{ end }}
"inLanguage": "{{ .Site.LanguageCode }}",
"image": {
"@type": "ImageObject",
{{ if and (.Params.image) (ne .Params.image "") }}
"url": "{{ .Params.image | absURL }}",
"width": "{{ .Params.imagewidth }}",
"height": "{{ .Params.imageheight }}"
{{ else }}
"@id": "{{ .Permalink }}#ogp"
{{ end }}
},
"author": { "@id": "{{ .Permalink }}#author" },
"publisher": { "@id": "{{ .Permalink }}#org" }
}
</script>
<!-- 著者の情報 -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Person",
"@id": "{{ .Permalink }}#author",
"name": "{{ .Site.Author.author }}",
{{ /* この人物の説明 */ }}
"description": {{ .Site.Author.profile | jsonify }},
{{ /* プロフィール画像 */ }}
"image": "{{ .Site.Author.image | absURL }}"
}
</script>
<!-- 記事にimageが設定されていない場合のデフォルト画像。OGPのデフォルト画像を流用している -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "ImageObject",
"@id": "{{ .Permalink }}#ogp",
"url": "{{ "/images/ogp.png" | absURL }}",
"width": "{{ .Site.Params.ogpimagewidth }}",
"height": "{{ .Site.Params.ogpimageheight }}"
}
</script>
<!-- 出版元となる組織。個人ならサイト名とかにしておけば妥当か -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Organization",
"@id": "{{ .Permalink }}#org",
"name": "{{ .Site.Title }}",
{{ /* logoは必須。ここにもOGP画像を使用 */ }}
"logo": { "@id": "{{ .Permalink }}#ogp" }
}
</script>
Markdown
上のテンプレートを使うには、front-matterに次の設定が必要となる。
# メイン画像へのパス
image = "/path/to/image.png"
# メイン画像のサイズ(メイン画像がない場合は不要)
imagewidth = 1024
imageheight = 768
config.toml
前項のメタ情報・意味情報を使うための設定ファイルサンプル。
サイト全体で使用するメタ情報は、config.tomlの[params]
下へ自由に増やせる。テンプレートからは.Site.Params.xxx
でアクセスできる。
baseurl = "http://hogehoge.com"
languageCode = "ja"
title = "サイト名を入れる"
HasCJKLanguage = true
[author]
author = "名前"
profile = "自己紹介"
image = "path/to/profile/image.png"
[params]
localeOgp = "ja"
description = "トップページ用の説明文"
fbAppId = "facebookのAppIDを入れる"
ogpimage = "images/ogp.png"
ogpimagewidth = "1200"
opgimageheight = "620"
twitter = "twitterCard用のユーザー名を入れる"
記事冒頭だけを配信するRSS/Atomフィード
[Site Variables]
デフォルトのテンプレートだと記事の全文が配信されてしまう。新着20件の.Summary
部分だけが出力されるテンプレートにするにはlayouts/_default/rss.xml
を作成して以下の様にする。
XML
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}</title>
<link>{{ .Permalink }}</link>
<description>Recent content {{ with .Title }}in {{.}} {{ end }}on {{ .Site.Title }}</description>
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
<language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
<managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
<webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
<atom:link href="{{.URL}}" rel="self" type="application/rss+xml"/>
{{ range first 20 .Data.Pages }}
<item>
<title>{{ .Title }}</title>
<link>{{ .Permalink }}</link>
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
<guid>{{ .Permalink }}</guid>
<description>
<p>{{ .Summary }}...</p>
<p><a href="{{ .Permalink }}">Read More</a></p>
</description>
</item>
{{ end }}
</channel>
</rss>
参考サイト
- Golangでの日付のフォーマット指定の方法について
- revelでHello World
- golang の net/http で basic auth
- AWS SDK for Go を使ってS3にファイルをアップロードする
- Goでスレッドセーフなシングルトン
- GolangでSHA-256ハッシュ
- もう目移り。ちょっち迷っている
- テーブルのカラムの値をnullかゼロ値かを判別する
- Go 言語に関するブックマーク
- Goでオブジェクト指向っぽく書く
- Revel templatesを使ったサンプルアプリケーション
- GoでRabbitMQに接続してみる
- CrystalとGoでHTTPサーバのベンチマーク
- Go言語のtestで、json apiのレスポンス検証を行う
- Chefのコマンド一発でサービスを作れる状態へ(CentOS6.6)
- gopherだからgoでgopherしよう
- Go Conference 2015 summer
- gbを知ったのでgojiを使ったWEBアプリケーションプロジェクトを管理してみた
- 「Docker」と新コンテナランタイム「rkt」をサクっと比較してみる
- 開発者から見た UNIX 哲学とコマンドラインツールと Go言語
- Go言語でAmazon Linux AMI向けのビルド
- SpheroをGo言語から制御して遊んでみた
- AWSでnginx+golangが動く環境を作る
- GoのBuild Constraintsに関するメモ
- Go言語(Go-Json-Rest)でAPIサーバーを立てるときのCORS設定 (Basic認証機能付きも)
- 「連結されたgzipを1行ずつ見る」をgolangでやったらハマった
- Goでwebサーバー作るときに考えたこと
- ginのBindingとValidationについての調査メモ
- iOSアプリのライセンス一覧のplistを半自動生成して設定画面にキレイに表示するプログラムをGo言語で作った
- Goのfor rangeで思った値が取れなかった話
- GoのWEBアプリケーション運用について
- Go言語(Go-Json-Rest)のCORSでのハマり。Safariだけでハマった話。
- deploy the MVMs of gae / go
- GolangでAPIを叩く
- Goji のアプリケーションサーバーを Circus で管理する
- 画像処理で写真をアニメ風に変換する
- gvmでgoをバージョン指定で簡単インストール
- golang の進捗どうですか
- Sensuでネットワーク監視やってみた
- Web Frameworkとして検討する言語とフレームワーク
- Golangで簡単にログを吐くことを考える
- Golangで簡単に一時ファイルを吐くことを考える
- go install時にno install location for directory ○○○ outside GOPATHのエラーが出る件について
- BigQuery の課金仕様と注意点をまとめてみた(2015-07 時点)
- 社内リポジトリのサブディレクトリをgo getするにはrepo名に.gitをつける
- gomobileでiOS用のライブラリをビルドするまで
- Gobotを使ってみよう
- Golangで、ResponseWriterを使ってHTTPレスポンスを組み立てる際にハマったこと
- Go の expvar パッケージを使ってアプリケーションのメトリクスを公開する
- Golang開発環境 3分クッキング
- ipから都市情報を取得する
- 文章を非可逆圧縮して容量削減を図る
- 多重起動を禁止する
- Create,NewFile,Open,OpenFileの違い
- Goで64bitと32bitの実行ファイルを同一Windows機で作成するために講じたこと
- やはり俺のgolangがCPUを一つしか使わないのはまちがっている。
- Windowsでtail -f
- x/net/context の実装パターン
- Git.io 短縮 URL を golang コードで取得してみる
- 任意のコマンドをWebサーバー化する
- はじめての Go 言語 (on Windows) その10
- Go言語でCSVの読み書き(sjis、euc、utf8対応)
- Go言語の文字列、バイト、ルーンと文字(翻訳)
- Golangのgormで、PrimaryKeyにUUIDを使う
- tcnksm/gcli を使った golang によるコマンドライン・ツール開発について
- Go言語でプロセス間同期処理
- Golangのgormで、カスタマイズしたtime.Timeに差し変える
- Go言語は空文字に対してstrings.splitを掛けると1要素の配列を返す
- goを1.5にアップデートして1.4とベンチを取る
- runtime.Caller(1)をなめて扱ったら危険かもしれない
- GoでCLIツール作るのに便利そうなパッケージを集めてみました
- Go Mockでインタフェースのモックを作ってテストする #golang
- Goのchannelの送受信用の型について
- そろそろ真面目に Golang 開発環境について考える — GOPATH 汚染問題
- 【Go】 go fmt でコード整形
- Golang による文字エンコーディング変換
- CircleCIでService Account使ってGAE/goへdeployする
- Javaばかり書いている僕がGo言語の勉強で参考になったサイトまとめ
- Go言語の作業ディレクトリをドキュメントに従って作り直してみた
- Go言語のドキュメントに従って簡単なライブラリとテストコードを作ってみた
- 文章からダジャレのみを抜き出すコマンドを作ってみた
- Go言語の自作パッケージに説明をつけてみる その2
- Go言語 http POSTする際のContent-Type
- 【Go】import 書き方まとめ
- go言語でベンチマーク
- Goでビルドバージョン情報を参照できるようにする(Go1.5)
- Golang の文字列連結はどちらが速い?
- そろそろ真面目に Golang 開発環境について考える — Internal Packages と Vendoring
- GoとRedisでアンテナサイトを作ってみた
- Goのバッチで統計を取得するAPIを用意しておくと便利
- Go言語の練習でTODOコマンドを作ってみた
- golangでhttpを監視するscriptを書いて結果をslackにpostする
- Mithril+golang Gin を試す
- モンティ・ホール問題をGoでやってみる
- Go言語でDIを試す
- 文中の人名をイニシャルに変換して匿名化をはかる
- golang+kocha で Web アプリケーションを作ってみて
- Docker の WebUI 作りました
- Alfred Qiita WorkflowをGoで書き直した
- gbでginをrunする
- Go言語版word2vecを作ってみた
- aws-sdk-goを使ってGoからAWS SQSを使う
- 楽ができるGolangのライブラリ達
- コンソールでGithubのReadme.mdを取得するコマンドを作ってみた
- char2vecを作ってみた
- 【Go】print系関数の違い
- Go言語のChannelは送信時にもブロックする
- Goのforとgoroutineでやりがちなミスとたった一つの冴えたgo vetと
- Dockerで独自レポジトリからgo getするお
- goからiOSまで一人でアプリ開発をしてたらいつの間にかマインクラフトエンジニアになった話
- Go 1.5をRaspberry Pi 2で使う
- Goで作ったプログラムでシグナルを受け取る
- 【Go】fmt.Print とビルトイン関数の print の違い
- cgoでMacのスリープログを勝手にとって作業時間の可視化してみた
- GAE/GoのRPCにフックするライブラリaespyを作った
- struct にアノテーションつけてたら go vet . すべき
- Goで多重連想配列
- AppEngine/PythonでDjangaeを試した
- gopherjs + electron テスト
- ISUCON5予選でスコア34000を出す方法
- Go言語の練習用にTwitterのOAuth認証をフルスクラッチしてみた
- Go言語でBigQueryのクエリを実行してみる
- GolangとPEGで作る言語処理系 vol.1
- Go(goquery)でQiitaのスクレイピングライブラリをつくった
- GoでJSONとYAMLを相互変換するツールを作った
- golangでスクレイピングをする準備
- Goroutine の同時実行数を制限する
- github でホストされている go アプリを fork して PR する時には、まず go get から始めよう
- Go言語のflagパッケージより便利というoptargを使ってみる
- Go言語の開発環境セットアップ
- PHP、Node.js、Go のミドルウェアに関する調査
- golangでnestしたstructの初期化がツライ
- go言語のslice操作をまとめてみた(shiftしたりpushしたり)
- sliceのシャッフル
- golangでi18n
- Go言語でチャネルとselect
- GoのEnumイディオム
- Go速習会
- Golangで自分自身で定義したパッケージをインポートする方法あれこれ
- RPG ツクール MV のゲームをブラウザ上でテストする
- ブラウザ上で動作する[開発|実行|チュートリアル|デモ]環境を作成できるCodePicnic
- 今後イケそうなデスクトップGUIフレームワーク
- おい、peco もいいけど fzf 使えよ
- Goで外部コマンドをパイプして実行する
- [Go] ビルドツール gb を使ってみた
- Go言語で簡単にHTTPリクエストを送ってJSONをパースするサンプル
- Go1.5でHTTP2サーバーとクライアント
- GoでXMLをパースする
- [Go] HerokuにRevelでつくったアプリをデプロイする
- [golang] struct の初期化で missing type in composite literal が出た場合の対処
- RubyからGoの関数をつかう → はやい
- UnixListener.Closeでソケットファイルが消えて困っている
- Goフレームワークのパフォーマンス比較
- Goでお手軽に行列の積を爆速並列計算
- Go で UTF-8 の文字列を扱う
- GroovyからGoの関数を使う→はやい
- loggingについて話そう
- GO 1.5 と C++ を SWIG でブリッジさせる方法
- golangでシグナルを拾ってgracefulにgoroutineを停めたい・改
- PHP から Go の関数を呼び出す
- goでDotenvを使用する
- golangでImageMagickを触りたい
- Go でパラメタライズドテストをする
- まだAWSのみに頼って生きてるの?複数のクラウド利用で、大幅コストダウンした話
- 【緩募】Golangでスライスの型のキャストをする方法が知りたい
- ATOM で Go
- GoでJsonファイルを読み込んで構造体として扱う。
- Go付属のツールでオレオレ証明書を生成する
- オブジェクト指向言語としてGolangをやろうとするとハマること
- オブジェクト指向言語としてGolangをやろうとするとハマる点を整理してみる
- “Swift” vs “Swift その2” (vs Go) 戦力比較
- 全くの素人がISUCON5本戦に参加しました
- GoのGUIライブラリshinyを試す #golang
- Goで連鎖性かつスタック指向の言語を実装する
- Tour of Go (Go言語基礎文法最速マスター)日本語版を更新しました #golang
- GoのChannelを使いこなせるようになるための手引
- Go http.RoundTripper 実装ガイド
- Go言語でRedshiftとつなぐ(というかただのPostgreSQL)
- Go言語で REST API + マイクロサービス
- すごく長い行を読む場合の注意点
- golang.org/x/net/websocketの使い方とkuiperbelt
- soracom-sdk-go ベータ版でいろいろ試す
- Google App Engineのリージョン別レイテンシ
- Zaif取引所(Bitcoin/Monacoin)のAPIをGolangから使う
- Goでフィルタコマンドを怠惰に書く
- goのmgoでfindするときの処理
- GolangのOpenGL事情(WebGLも含むよ)
- lazyなGoやリスト演算なGoについて
- Go と reflect と generate
- AWS SDK for Go の基本とRoute53へのHostedZone作成とレコード作成
- Go+Webアプリケーション+CircleCIで静的解析・テスト・バイナリリリースを効率良く行なう
- 外部APIを使うController用のTest Doubleライブラリを書いた
- Exifの回転情報をピクセル情報に反映する
- Go を レンタルサーバーで動かす方法
- GoでHTTP負荷テストフレームワークをつくった
- 1行もGo書いたこと無いけどGo Conference Winter 2015に参加したので資料をまとめた
- 簡易リバースプロキシ「ichigo」でWebアプリ開発が捗る話
- glide – パッケージ管理のお困りの方へ –
- Golangで静的ファイルをバイナリに含めるライブラリを書いてみた
- GoからBLE制御でPLAYBULB Candleの操作をしてみる
- Goのjson.Decoderの使い方
- Go言語でバイトニックソート実装してみた
- Go言語入門 パッケージの作成、便利ツール、interfaceとは。
- PythonのABC – 抽象クラスとダック・タイピング
- 初心者がごるーちんでハマるところ
- GoのMemcacheパッケージ比較
- Go開発向けVim設定
- Go言語に1日で入門したときの頭の使い方の話
- go の regexp が遅いと知らずに regexp で form に fillinするモジュールを書いた
- GoとDockerとMicroservices 最初の一歩
- OS XのネイティブHypervisorを使うxhyveと、ネイティブDockerを立ち上げるdocker-machine-driver-xhyveを作った話
- 手間をかけずに形態素解析を Elasticsearch Service (on AWS) で用意する
- Goで型を挿げ替え可能なデータ構造ライブラリを作る
- Go Web Frameworks 比較
- golangでgitのサブコマンドを作ろう
- golangでrecoverしたときの戻り値
- GAE/GoでSlackの’/’(スラッシュ)コマンドサーバーを立てる
- Goでのシリアル通信でハマった事
- go-swaggerの紹介
- gomobileで日本語フォントを扱ってみる
- Vim で引き籠る
- flag 並にシンプルでより強力な CLI パーサ kingpin の紹介
- GoでGitHub通知をデスクトップ通知として取得するアプリを書いた
- Go言語でRICOH THETA API v2を叩いてみた
- GoでBLEセンサーデータをBeamする
- GunosyでのGoパッケージ構成の歴史
- Packer プラグインの書き方(Provisionerを例に)
- Goでパケットキャプチャを実践してみる
- プロダクト開発でのGoのテストとモック活用事例
- vimでGoのシンタックスチェックをquickrun+vimprocで非同期に行う
- GAE/Goでもgoroutine使おうぜ!というハナシ
- ChromebookでGo!(ChromebookでGo言語を楽しんでみる)
- 本物の golang を… 本物の Gopher を、お見せしますよ。
- コネクションプールのチューニング
- Go、Scala、Clojureで開発する3社が集結!!
- GoとAlefとLimbo
- sidekiq用のmackerelプラグイン書きました
- Goだからこそ許される3つの作法
- Go言語で実現するフォースの覚醒 (Gobotで脳波をなんとかする)
- GoでShared Libraryをビルドしてみた(簡単ドキュメント指向DB)
- はてブ ホットエントリーを一覧表示してくれるCLIツールを書いた
- GoでHTTPサーバを立てる
- 最速という噂のFlatbuffersの速度のヒミツと、導入方法の紹介(Go)
- Go言語でサーボモータをキュイキュイ動かす
- emacsでGoの環境構築をやる
- z.shをGoで書き換え(ようとしてい)る話とGoの学びかた
- GoLearnについて
- GAE/GoとGojiの組み合わせでテストを書く
- Goで3Dモデル変換してプレビュー
- slackのログをAWS(DynamoDB)にためて、検索できるようにした
- vscode-go/READMEとdelve/Buildingの日本語訳
- あるとちょっと便利なコマンドラインツール3つ
- Concurrencyについてm9(^Д^)プギャーられないための基礎知識
- ターミナル画面を勝手に共有して他人の作業を覗いてみる
- Go最後の秘宝「GUI」を探しに行く
- [golang]RevelでCSRFの対策
- Goで小さなScheme、Gigueを実装しました
- Google Cloud Monitoringのカスタムメトリクスを使ってTask Queueを監視したいズラ๑◉ﻌ◉๑
- 気楽にDynamoDBを使おう
- gonp〜Goによるdiffのアルゴリズム実装〜
- Kami – process monitor. inspired by god.rb
- nanogui.goの進捗を記録するスレ
- Goでデーモンを作るにはどうするのが良い?
- IntelliJ で Go ファイル保存時に整形する
- Go + QML + QChart.js で素敵なチャートを表示する
- GoでRESTfulなWebアプリを作りたい (go-restfulを触ってみる)
- importによってパッケージを拡張する方法(プラグイン)
- golang で AB x CD / E – F * G * H = 2016 になる全パターン洗い出し
- go 1.6でhttp.Clientが自動的にhttp/2を使わないようにする方法
- ゲームにおける正しいアイテムドロップ抽選実装
- go-redis/redis のクライアントが PubSub で共用できることを確認した
- 値渡し、ポインタ渡し、参照渡しの違い
- golang coreutils 探しメモ
- 重みをつけてランダムに何か出したい
- iOSエンジニアがGoを使ってみての所感
- CLIのWebsocketクライアントを作ってみた
- GoでhttpリクエストにHostを設定するにはreq.Headerではなくreq.Hostを使う
- Goで帳票をPDFに作成するライブラリ。 請求書などの複雑なフォーマットにも対応
- Web Application周りのテスト方法
- はじめてのGo言語 – インストール〜nginx導入まで –
- Go言語でstructをmapに変換する
- ユニットテストが書きやすい設計〜自家製モックを添えて〜
- Go言語でMongoDB使う ②埋め込みとの相性
- go testの並列(-cpuと-parallel)がなんの事だったか忘れた時のメモ #golang
- database/sql の Rows.Scan で不要なカラムデータを読み捨てる
- Go で簡単に Excelを作成するライブラリ。 色、罫線、網掛けを事前定義済
- 複雑なPDFをテキストファイルから生成。Windows,Mac,Linuxの実行ファイルなので、どの言語でも使用可能
- GoのgRPCでRemote IPを取得する方法
- 複雑なExcelをテキストファイルから生成。Windows,Mac,Linuxの実行ファイルなので、どの言語でも使用可能
- Go 1.6 でポインタをcgoの関数へ渡す際の注意点
- Go1.6でポインタをcgoの関数へ渡す際に発生するcgoCheckPointerを回避する方法
- go言語でゲーム
- 複数のgroutineが連携する通信オブジェクトの設計方針
- GoでANSIエスケープコードを扱うライブラリを作った(色付け・カーソル移動等)
- CentOS6.5にGoをインストールする
- Go で “broken pipe” を無視したい僕達がハマる罠
- iOSアプリの新規レビューを通知してくれるSlack Button Appを作った~手順と申請手続き
- Go で interface {} の中身がポインタならその参照先を取得する
- Go1.6の新機能
- golangの AriticleExtractor “GoOse” を試してみる
- [翻訳+α] Go言語の設定ファイルライブラリ Viper
- net/httpでポート443のHTTPSサーバーを立ち上げるまで
- テキストをカジュアルに暗号化したい
- GolangのGin/bindataでシングルバイナリを試してみた(+React)
- Ruby,Golang,ES2015比較チートシート
- 概観からGoのWebFrameworkを選ぶ(2016/02)
- Go の DB アクセス用のパッケージを作った
- golangの静的解析,カバレッジ解析,バイナリリリースをCircleCIで簡単に整える
- 異なる環境間で private network を構築して接続する
- vim-go-ideでさくっとGolang開発を始める
- ひとりぼっちのサービス開発における技術選択の遷移と戦略
- Golangでparserをつくって、SQLを解析してみよう!
- [golang]GoでbitFlyerのAPIへアクセスしてみた
- Goのfor文で関数のリストを作ろうとして嵌った話
- golang コーディングテストで使うメソッド・テクニックまとめ
- Go のバッファ付きチャネル close の挙動
- Golang: nil Pointer Receiverの話
- 企業動向にアンテナを張るためにQiita Organizationのキュレーションサイトを作った。
- 何も考えずMac上のGit diffでExcelの差分を見れるようにする
- Go言語でプリント文デバッグするときのTips
- HomebrewでGo 1.6を入れる
- ElectronのスタンドアロンMacアプリに無理やりGoのHTTPサーバーを仕込む
- golangでcrontabからドキュメントを作成するコマンドラインツール crondocを作った
- ファイルベースのQiitaクライアントqiitactlを作った話
- Google App Engine SDK for Goを使ってGAE上でアプリを動かすまで
- goroutine 使い方まとめ
- Go言語でGoogle Cloud Vision APIを使う
- GolangでPostgreSQLのJSONデータ型を読み書きする
- Go言語の可変長配列(slice)を使う上での注意
- Go言語で作った実行ファイルを小さくしよう!
- goでスクレイピングするのにgoquery + bluemonday が最強な件
- Go 1.6 templateパッケージ新機能
- go言語でhttpモックサーバを作る方法(2016/02時点)
- RaspberryPi1(2とzeroも)で動かすgolang製アプリをクロスコンパイル(onMac)
- GoでSpreadsheetを操作するパッケージを作った
- VisualStudioCodeでGAE/Goの環境設定
- Golang開発環境構築 in MAC
- GoでGCEからGCSにファイルを書き込む/読み込む
- 10分で終わるGo言語の開発環境構築
- Go言語のスクレイピング系ライブラリまとめ
- vagrant、ansibleでgoの開発環境を構築してみた(所要時間:15分)
- Go+goqueryでGithubRankingにWebスクレイピングを試みる
- Ginの Middleware と HandlerFunc でデータの受け渡し
- vim-goをインストールしてみた(所要時間:15分)
- GoogleAppEngine/Goのインストールから使いやすくするとこまでをさくっと 後編
- ざっくりGoの文法まとめ
- Dockerのbusybox内でgolangのtimeを使ったらエラーになった
- Golangで外部コマンドを実行する方法まとめ
- golangでlogを標準出力とテキストファイルの2箇所の出力する
- ズンドコキヨシまとめ
- Go製のData Shipper Platform「Beats」が良さそうなので紹介してみる
- Go の echo ってWebサーバーでサクッと REST しちゃう
- Go 言語 1つの構造体に複数の validation を適応する
- SensorBeeとは何か?
- あえて aws-sdk-go で dynamoDB を使うときの基本操作
- WebRTCの勉強でむりやりGo使ってみた!
- gometalinter で楽々 lint
- Golangで標準入力がパイプで渡されたものか判定する
- Goのプログラムでどういうリクエストを飛ばしているのか見たい
- Go言語をyumで入れる
- [2016年3月時点]Mac用Electronバイナリに署名してApp Storeにアップするためのメモ
- microservicesの調査に向けて〜Golang製のzipking tracerのgo-kitを利用してみる
- GAE/Go 旧appengineパッケージから新appengineパッケージ(google.golang.org/appengine)への移行ガイド
- nginx+circus+gojiによるgolang webアプリケーションの動作環境構築
- GoでJSONの一部分を利用者が定義した構造体に読み込める便利な手法を見つけた
- CentOSにGo言語をインストール
- sliceの重複チェックを高速化
- go言語初心者が図を書きながらgoroutineやgo channelを理解する(Part1)
- Golang GinでReact.jsのサーバサイドレンダリングを試してみた
- 大谷翔平の打席になったら自動でチャンネルを変える
- CSV から構造化された JSON を生成するツールを Go で作った
- コードレビューに大事な褒め言葉
- 2016年から始める Google App Engine for Go
- 【取得できた!!】IntelliJ IDEAのオープンソースライセンスでUltimate版を無料で使いたい!
- Golang (heroku) で LINE Bot 作ってみる
- GAE/GoでLINE Bot Trial
- LINE BOT をgoで作ってみたよ
- ゴルーチンで発生したエラーの返し方
- cgoを使ったCとGoのリンクの裏側 (1)
- [2016年春版] 静的サイトジェネレーターHugo導入Tips ①インストールとサイトの初期作成
- atomicパッケージが必要な理由と使い方
- go言語初心者が図を書きながらgoroutineやgo channelを理解する(Part2)
- Google App Engine for GoでOAuth2による認証を用意する
- Facebook Bot API + Go でオウム作ってみた
- go言語でのマイクロサービスフレームワークの雑な比較メモ
- Go でコメントアウトせずに素早く複数行スキップさせる
- Angular2 Tour of Heroes with Golang (w/o npm)
- GAE/Go urlfetch.ClientでGetしたらタイムアウトエラー「urlfetch: DEADLINE_EXCEEDED」の解決方法
- phonyでテスト用データを超絶簡単に作る
- Go言語のHello Worldを3分で試す
- Go Conference 2016 Spring
- GoのWebフレームワークのGoji (goji.io) をGAEで動かす
- Go製のフレームワークechoを使ってJSONを返すWebサーバーを作り、GoogleAppEngineで動かす
- Golangで、テニスの大会のエントリーページから、大会情報をクローリングしてくるサンプル
- Arukas.io CLI、まだ β なのに便利だった
- あなたのサーバは本当に安全ですか?今もっともイケてる脆弱性検知ツールVulsを使ってみた
- Goでのログ出力に標準logとcologを使う
- jsonpbはencoding/jsonより5倍遅い
- 他言語から来た人がGoを使い始めてすぐハマったこととその答え
- echoのAPIサーバ実装とエラーハンドリングの落とし穴
- ディープラーニングで「顔が似ているAV女優を教えてくれるbot」を構築
- [golang]GoのSDKで手軽にLINE BOT APIを試してみた
- 「Go言語によるWebアプリケーション開発」でハマったところ
- インタフェースを埋込む #golang
- Go言語のエラーハンドリングについて
- 愛が生まれた
- なんで愛が生まれるのか
- Goで値が文字列のJSONを構造体にパースする
- GolangのフレームワークEchoの話とHelloWorldサンプルを読み解くだけ
- UnityのネイティブプラグインをGoで書く #golang #unity
- Go製WAFのuconを触ってみた
- Terraform for さくらのクラウド
- Negroni + Gorilla/Muxで簡単なサーバーアプリケーション作る
- Goフレームワーク vs PHPフレームワーク
- Go言語で東京メトロAPIを叩く
- Cloud9でGAE/Goの環境構築
- GAE/Goで形態素解析してみた
- MySQLでのトランザクション処理をGolang+dbrで実現してゆく話
- コマンドラインからググれてもいいと思ったので作った
- Kubernetes の Go API クライアントライブラリを使って Kubernetes を直接操作する
- cgoを使ったCとGoのリンクの裏側 (2)
- Terraform for さくらのクラウド スタートガイド(第1回)
- Go言語のエラーハンドリングについて ~panic編~
- Lambda with Apex: Terraformを使った管理
- Amazon Linux に GoLang をインストールし、NginxのWebサーバを構築 & 簡単なHTTPレスポンスを受けるまで
- Gin(Golang)におけるHTMLテンプレート記述方法
- Amazon Linux に GoLang (1.5) をインストール & Gin、MongoDB (3.2) を導入し、APIサーバ を10分で作る
- Go言語の並行処理デザインパターン by Rob Pike 前編
- Go言語の並行処理デザインパターン by Rob Pike 後編
- go1.7 の気になるところを試した
- contextの使い方
- Windows に インストーラを使って GoLang を インストールするときの注意点
- HUGOで作れるCMSっぽいパーツ:関連記事・目次・JSON-LDなど
- Goのjson.Unmarshalで値にJSONのnumber、string両方の可能性がある場合
- GAE/Go+WebPushAPI+FCMでPush通知
- Hugoで新規記事を作成するときのTips的なメモ
- Go + WebDriver でブラウザ操作を自動化する
- Goでjqっぽくinterface{}の中を探索する
- go+ginでローカルで作ったWebアプリをGoogleAppEngineに載せる時に注意することまとめ
- Go+gin+dbrでセッション管理(ログイン・ログアウト)をする話+HTMLテンプレートにセッション情報を埋め込んで制御する
- Apexを使ってGoでlambdaを動かす
- labstack/echoの2.0がreleaseされてたのでAppEngineで動かしてみる
- Go+gin on GAEでBlobstoreを使ってCloudStorageにファイルをアップする話(公式ドキュメント解説を添えて)
- golangでURLをパース
- Goでパスワード入力を読み取る(Windows/Mac/Linux対応)
- Go言語による高速な接尾辞配列の実装(SA-ISの実装)
- Go で作ったゲームを Android/iOS 対応させた話 (1)
- UnityのセーブデータをGoogleAppEngine/Go(with Datastore)に保存したり読み込んだりする話
- ターミナルでスライドを再生するコマンド『pera』を作った。
- Docker Compose で Go の開発環境をサクッと作る
- GoogleスプレッドシートでGopherを描く with Go
- GAE/Go+ginでHTTPリクエストも含めてEnd to Endなテストをする話
- Github on BigQueryを使ってgoでよく使われるpackageを調べる
- Go製のフレームワークechoをHerokuで動かす
- Crystal 言語の 2016年を振り返ってみて
- Go でコードカバレッジを取得する
- 高速でダウンロードできるツールを Go で実装した。
- goでmicroserviceをつくる
- GoでGitHub Issuesのビューアを作った
- goimportsのスキャン対象から特定ディレクトリを除外する
- NHK番組表API を使ってアニメの音楽番組をslackに通知する
- (比較的)標準化をした Vuls/VulsRepo の導入
- NATSについて調べて動作を試してみた
- golang で Evernote のノートを Jekyll 用の HTML に書き出すツールを書いた
- 集合知で各言語、ライブラリ、フレームワーク、DB、アーキテクチャの適材適所をみんなでまとめたら面白いんじゃないか?
- goroutine と channel を使った並行処理のパターン
- Filebeatで複数行を扱うMultiline設定まとめ
- あなたのWebサービスでLDAPユーザ認証を実現するgo-ldapc
- golangで設定記述にTOMLを使う
- Termuxでお手軽ポケットlinux開発環境(例えばnvim+golangが手元に)
- Ubuntu 16.04 に GoLang 1.6 と Gin Web Framework をインストールし、HTMLテンプレートを読み込むまで
- Gin Web Framework と GORM を使って簡単なウェブアプリを作ってみる
- マイクロサービスのフレームワークまとめ [不定期更新](2017/02/25更新)
- WindowsのDLLをGoで作る
- Google Sheets API v4 と サービスアカウントと Go でスプレッドシートを操作する
- textqlが超便利
- CLI作成支援パッケージ Cobra を使い、Go 言語でコマンドラインツールを作ってみる
- データのバージョン管理が可能な分散データベースNomsをさわってみる
- Windows 使いの為の GAE/Go 開発環境構築
- go言語のwebフレームワークechoとpythonのwebフレームワークflaskの速度を比較してみた
- MacでGo開発環境構築
- golangの関数をまとめてみた。
- Go言語でサーバのGraceful Shutdown
- golang メソッドについてまとめてみた。
- #golang CodeReviewComments 日本語翻訳
- IntelliJ CE + Delve で Go 言語のデバッグ環境構築(Mac)
- golangではスタックとヒープを気にする必要が無い
- Go 言語で Websocket を使ったアプリケーションをつくる
- Google App Engine for Go のローカルサーバでデバッグをする #golang #GAE
- Go言語でランダムな文字列を生成する方法の比較
- Heroku への Go 言語製アプリケーションのデプロイと依存パッケージ管理方法の比較
- Docker for Macで開発環境がほんとに早くなったのか?(心の中のモヤ×100がモヤ×99になった)
- GoでAWS SDKを叩くCLIツールを作ってリリースするまでの流れ(aws-sdk-go+cobra+viper+gox+ghr)
- GAE/Goで本番のDatastoreをローカル環境に持ってくる 2016
- golang.org/x/time/rateで速度制限を行う
- インタフェースは型名を公開しなくても実装できる #golang
- ChatGopsで本物のGopherを、すぐそばに…
- 終了したことを他の複数のゴルーチンに伝えるのにチャネルのcloseを使う #golang
- Go で WebSocket を簡単に扱えるパッケージを作った
- else ifにも代入文が書ける #golang
- fmt.Formatterを実装して%vや%+vをカスタマイズしたり、%3🍺みたいな書式をつくってみよう #golang
- Go 言語の http パッケージにある Handle とか Handler とか HandleFunc とか HandlerFunc とかよくわからないままとりあえずイディオムとして使ってたのでちゃんと理解したメモ
- Go言語+Ginで相関項目チェックを実装する(テストコード含む)
- golangで部分文字列を取り出す
- Golang + Echo + MySQL まとめ
- Macでjupyter XXX (iruby, R, nodes, go) インストール
- logmon-goで簡単ログ監視
- Go 言語で JWT を使って認証と認可を低コストに
- Docker+AlpineLinux3.4+Go1.7+Nginxでfreshを使って自動ビルドする開発環境を作る
- Go 言語で Excel ファイル内の文字列を自力で置換する
- golangのioutilべしべし叩いてみた
- Golangのbundleコマンド
- Travis CI から複数ファイルを GitHub Releases にアップロードする
- gRPCを使った簡易的なマイクロサービスを作ってみた
- 競技プログラミングで使うGo言語基礎
- Go 言語 reflect チートシート
- 自宅の使用電力を見える化してみた
- Go WEBフレームワークEchoでmiddlewareを自作する
- gocsvを使ってラクにCSVファイルをつくる
- 全く新しい銀行を1から作るために必要な技術 (Monzo公式ブログより)
- Go 1.7のホスト名前解決の仕様変更
- LINE Developer Trialを GAE/Go で始める #linedevday
- スクレイピング結果をJSONで返すAPIをGAE/Goで作る。
- DatastoreからGetした時に余計なPropertyがある場合エラーになるが無視してもいい
- GoでSlackへ通知してみた
- golangでunix domain socket経由で通信するechoサーバーを書いてみた
- golangにgoto文が存在する理由
- [検証中]更新のあったファイルだけgo testを走らせテストを高速化する #golang #gae
- LINE NotifyをGoで送る #golang #linedevday
- golangで書くunix domain socketを使ったserver/clientのサンプルコード
- Goのpathとfilepathでは動作が異なる Windowsでも正しくパスを扱う
- tmux 上でバッテリーの残量が一目でわかるコマンドを Go で作った
- GoのJSON API ServerでゆるふわJSON responseを返す方法
- GAE/Go で公開鍵暗号を使う JWT 認証サーバーを作った
- Golangでエラー時にスタックトレースを表示する
- Golangでinterface{}を使ったJSONのパース
- Go言語でTodoistのCLIクライアントを作ってみた
- HerokuとGoでLINEの Messaging API環境を作ってみた
- Go のバイナリには -ldflags ‘-w -s’ でコンパイルしてもたくさんパスが埋め込まれていた
- 独自のfmt.Formatterを実装する
- Golang製DBマイグレーションツールgoose + MySQLを試してみた
- Go(golang)+HerokuでLINE Messaging APIに触れてみたよ!
- TwitterはGoでゴー。
- Go+GAE+Cloud Datastoreで簡単なREST APIを構築
- Firebase Realtime Database を Rest API と Golang でいじってみる
- Go言語でハマったNつのこと
- Go言語でJSONに泣かないためのコーディングパターン
- Firebase Notifications からメッセージを送ってみる iOS10版
- GAE/Go (echoフレームワーク)で Line Message API 使って Bot を作る。
- testeratorを使ってgae/goのunit testを高速化する
- Go で Neo Cowsay を作った
- context.Contextでリクエストスコープな値を持ち回す
- echoのv3にアップデートした時に修正した箇所
- オレオレGo入門2016
- 初心者が2016のプログラミングで思うこと
- Go言語でJSONの生成を構造体無しでJavaScript並に簡単に生成できる方法
- JSONをインタラクティブに掘り下げるコマンド jid
- go get しようとしたら SSL protocol error エラーが出るとき
- Go言語でS3にアップロードする時速度制限をかける
- PHPerに贈る、GoでWebサーバー開発環境構築
- GoでのWebアプリケーションの組み立て方
- GolangでGetWildの’89バージョンを演奏する
- boto3からaws-sdk-goにしただけでCPU使用率が75%->10%になった
- GoでSSHサーバにラインエディタが欲しいなら golang.org/x/crypto/ssh/terminal
- Golangでテストしやすいコードをかく
- 冷蔵庫の余った食材からレシピを提案するボットをリリースしました
- 新しく入ったReverse Binding機能を使ってPure GoでAndroidアプリを作ってみる #golang #gomobile
- 社内のバックエンド開発にgRPCを導入してみた
- PocketCHIPでGoのGUIアプリを動かしてみる
- 早明浦ダムの貯水率を見れるコマンド作った
- gojaを使ってGoでJavaScriptの実行を試してみた
- go言語のデバッガ(delveとgdb)とcore dump
- APIライブラリをgo-json(改)で楽に実装する
- VisualStudioCodeでGo言語開発環境を作ってみた
- Echoはver.3で結局のところ何が変わったのか?
- Go言語でファイルアップロードを使ってみる
- macの初期ターミナルでも画像を表示したい
- go-bindataで実行バイナリにWeb UIをバンドルする〜slackboardの場合〜
- 実践的なGAE/Goの構成について #golang #gcpja
- Go!プリンセスプリキュアのGo言語実装「GoPrecure」
- init関数のふしぎ #golang
- Goの構造体の研究
- Goを学びたての人が誤解しがちなtypeと構造体について #golang
- RubyistがGoに入門してDBマイグレーションツールを作った
- Goで真面目にコレクション操作ライブラリを作ってみた
- GoからCのライブラリを呼ぶ
- gorenameをライブラリとして使う #golang
- GitHubで自動生成コードをDiffに表示しない方法
- CとGolangの境界
- LINEBOT SDK GOを使って月曜日のたわわBOTを作った。
- git管理ファイルを透過的に暗号化するgit用フィルタを作った
- GetWildの信号強度を解析し、音の大きさを可視化する
- 秒間500件以上のLOGフローアーキテクチャ
- Go でツール書くときの Makefile 晒す
- GolangでKey-Valueリソースのキャッシュと分散合意によるコミットをする
- GAE/Go で巨大な Zip を扱う
- golangの開発で使っている色々
- Hacker Newsを一覧表示してくれるCLIツールを書いた
- Golangのconst識別子iotaの紹介
- Go言語をMacにインストールしてみる(goenv + direnv + glide)

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。