tjun月1日記

なんでもいいので毎月書きたい

GAE/Goをdelveでデバッグする

AppEngine/Goでこれまで開発していて、必要な箇所はログを出していれば状態が取れていたのであまりデバッガが使いたくなることがなかったんですが、 最近ちょっとデバッガを使いたい状況があり、AppEngine/Go のローカルサーバに対してDelveをつないでデバッ…

ドメインをgoogle domainsに移管してみた

きっかけ 放置気味だったDigial OceanからRebootが必要だからバックアップとかしてrebootしろ、という案内が来てた。 Digital Oceanは昔作ったままなのでvagrantでデプロイするような仕組みになってたし、tjun.org のブログの方は放置してたので、もう全部消…

GoogleAppEngineのManagedSSLを使ってみた

ちょっと前にAppEngineのManagedSSLというのが発表されました。 Google Cloud Platform Blog: Introducing managed SSL for Google App Engine Google App EngineでマネージドSSLが全ユーザーに無料提供、HTTPSの導入が簡単に。証明書の更新もGoogleにおまか…

今からgoでwebサーバ書くならchiがいいかも

goでwebサーバを書く時、フレームワーク的なもののデファクトがいまいちない感じですが、chiを触ってみたらよさそうだったので紹介します。 これまでのgoでのWeb開発 去年くらいに調べたときの感じでは、 標準のnet/httpでいいでしょ + routerに gorilla/mux…

GKEにstaticなegressのIPアドレスを割り当てる

GCP

タイトルのとおりですが、こんなことする人はあまりいないと思います。ingressをstaticにするのは簡単ですが、egressはやり方調べても情報がなくて苦労しました。 今回のケースでは、GKEである処理を行うworkerを作っていて、その処理の途中で外部のサーバへ…

独自imageのdocker-machineをGCEで利用する

独自のdocker imageを作ってGoogleCloudPlatform(以下GCP)上のContainer Registryに登録して、GCE(Google Compute Engine)で動かすやり方です。 Dockerfileを元にimageを作ってContainer Registryにpushするまで 以下の例ではcontainer registryのサーバは…

goのtemplateのrangeで複数の配列を扱う

Go

最初ちょっとやり方が分からなかったのでメモ。 やりたいことは、例えばgoで以下のような配列があったとき type User struct { ID int Name string } type UserInfo struct { ID int Age int } users := []User{ User{ID: 1, Name: "taro"}, User{ID: 2, Nam…

GoogleAppEngine/Goでのディレクトリ構成

GAE/Goで、結構悩むのがディレクトリ構成です。 pkgをどう分けて、どこのディレクトリに何を置くか、自分はどうやってるか紹介します。 関連する記事はこのあたりです。 Google App EngineでGoを動かすときに知っておくべきこと(ソースコード・ビルド編) -…

tmuxのwindow nameをgitのレポジトリ名にする

zsh

window nameっていうのは、tmux で下のstatusに出てくるタブみたいなやつの名前。 どのタブがどのレポジトリで作業しているのか分からなくなるので、レポジトリ名を表示するようにした。 git管理下じゃない場合はカレントディレクトリを表示する。 .zshrcに…

GoogleAppEngine/GoでCloudStorageのファイルを配信する方法とハマりどころ

半年前くらいからGAE/Goを結構触っているので、ちょっと書いておく。 今回は、CloudStorage上のファイルをGAE/Goで配信する方法。 概要 GoogleCloudStorageにおいてるファイル(例えば画像)をWebサービス上でユーザに配信したいということがある。 画像なら…

ブログこっちにします

blogをたまには書こうかと思うけどメンテするのも面倒なので、はてなブログに移ることにしました。 今までのブログ↓ tjun.org 今までの記事を移植するのは難しそうなので、移植せずに新規でやろうかと思います。 とりあえず、古い方も残しておきます。

recvmmsgについて

(過去の記事の転載) recvmmsg というのは、recvmsg(2)を拡張して複数のメッセージをsocketから受け取れるシステムコールで、Linux の 2.6.33 から利用できます。 glibcの version 2.12 からサポートされてます。 これを使うと、要するに1回のシステムコー…

WebRTCに使われるP2Pの技術

(この記事は過去の記事の転載です) この記事は、HTML5 Advent Calendar 2013 - Adventarの15日目になります。 WebRTCが少しずつ広まってきて、あまりこの辺りの情報を日本語では見たことがないので書きました。 間違っている箇所、表現がおかしい箇所があ…

Shared Libraryでシンボルを隠す方法について

(過去の記事の転載) CやC++でShared Libraryを作るときのメモです。 外に出したいシンボルと、外に出したくないシンボルがあるとき、どのようにしたらよいのか知らなかったので。 常識かもしれないけど、CとC++が両方ある場合にどうすればいいのか、調べて…