golang入門してみた

はてなブログ卒業して、githubでブログ書くつもりでツール選定した結果
spf13/hugo · GitHub
hugoっていうgo製のものに決めたのでgolangに入門してみた

まずはwindowsmsiダウンロード&インストール

Downloads - The Go Programming Language
A Tour of Goを試すのが王道みたいだけど、

5分動画で、実行モジュール、パッケージ、テストをさくっと試す

Writing, building, installing, and testing Go code - YouTube

windowsのパスにPATHとGOPATHを追加して

C:\Users\USERNAME\gocode     // GOPATH
C:\Users\USERNAME\gocode\bin // PATH
実行モジュール

C:\Users\USERNAME\gocode\src\github.com\pdevty\hello\hello.go

package main

import "fmt"

func main() {
	fmt.Println("hello go")
}

コンパイル&実行

cd C:\Users\USERNAME\gocode\src\github.com\pdevty\hello
go install
hello // hello go
パッケージ

C:\Users\USERNAME\gocode\src\github.com\pdevty\string\string.go

package string

func Reverse(s string) string {
	b := []byte(s)
	for i := 0; i < len(b)/2; i++ {
		j := len(b)-i-1
		b[i], b[j] = b[j], b[i]
	}
	return string(b)
}

コンパイル

cd C:\Users\USERNAME\gocode\src\github.com\pdevty\string
go build
go install

C:\Users\USERNAME\gocode\src\github.com\pdevty\hello\hello.go

package main

import (
	"fmt"
	"github.com/pdevty/string"
)

func main() {
	fmt.Println(string.Reverse("hello go"))
}

コンパイル&実行

cd C:\Users\USERNAME\gocode\src\github.com\pdevty\hello
go install
hello // og olleh
テスト

C:\Users\USERNAME\gocode\src\github.com\pdevty\string\string_test.go

package string

import "testing"

func Test(t *testing.T) {
	var tests = []struct {
		s, want string
	}{
		{"hello go", "og olleh"},
		{"", ""},
	}
	for _, c := range tests {
		got := Reverse(c.s)
		if got != c.want {
			t.Errorf("Reverse(%q) == %q, want %q", c.s, got, c.want)
		}
	}
	
}

テスト

cd C:\Users\USERNAME\gocode\src\github.com\pdevty\string
go test // PASS ...

いけたー
これでhugoためせる

参考
Writing, building, installing, and testing Go code - YouTube
Get Started with Go - YouTube
Goプログラミング言語のチュートリアル - golang.jp
Git初心者でも大丈夫!完全無料でGithub PagesにWebページを公開する方法 | 株式会社LIG
所要時間3分!? Github PagesとHEXOで爆速ブログ構築してみよう! | 株式会社LIG
A Tour of Go
Documentation - The Go Programming Language
Go言語で作る webアプリ@gocon 2013 spring
Martini(+Ginkgo)をWerckerでCIしてHerokuにデプロイ | SOTA

titanium を卒業して android studio使ってみた① 開発環境構築 windows7

titaniumで地図アプリを途中まで作りましたが実機での動作が不安定すぎて中断してました
再開しようと思い立ち、java知らないけどandroid studio使ってみることにしました
(titanium好きなんですけど、sdkのバグ多いし、動作もっさりだし、apkのサイズでかいし、期待してたHALとかいう次期titaniumがいつになってもリリースされないし、未来が見えないということで)

android studioはここからダウンロード&インストール
Download Android Studio and SDK Tools | Android Developers

インストール手順はドットインストール通りでいけました
Androidアプリ開発入門 (全10回) - プログラミングならドットインストール

が、エミュレータを動かそうと思ったらエラーが

HAX is not working and emulator runs in emulation mode

そういえばandroid sdkのインストールでなんかエラーがでたけどスルーしたなと思い、ここを参考に
Android開発環境構築エラーまとめ
Biosのsecurity設定でintel(R) vvirtualization tec...とintel(R) VT-d featureを有効化して
sdkインストール時に失敗したHAXMを再インストールしたら

HAX is working and emulator runs in fast virt mode

うまくいったー・・・しかし激遅
マシンスペックのせいもあるとは思いますが(CPU corei5、メモリ4G)、エミュレーター起動するまで5分ぐらい
しかも起動するとwindows激重

さすがに耐えられないので、ここを参考に
Android Studioで実機デバッグするには? | iDEA CLOUD/dev
android端末をusb接続して実機デバックに変えたら
激早・・・15秒ぐらいでアプリ立ち上がる
titaniumで実機転送すると5分ぐらい掛かってたのに
(titaniumでもtishadow使えば速いんですけど、tishadow上での動きと実機転送での動きに差があったりしてもう・・・)
一先ず、titaniumで作ったアプリをjavaで置き換えてみようと思ってます。

参考
Android開発環境構築エラーまとめ
Android Studioで実機デバッグするには? | iDEA CLOUD/dev
Androidエミュレータを高速化しよう!設定が間違っていたら高速動作しません | サクッとJava研修室
灯火: Android : AndroidStudio が重い場合の対処法(メモリ割り当ての調整)
Androidエミュレータは遅い!重い!!Intel x86設定で高速化して使うべし | サクッとJava研修室

regza T-02D 自力で強制初期化

2012年発売のregza T-02Dというスマホ
知り合いからワンセグ見れるからともらったけど、パスワードロックが掛かってって何もできず…
本人もパス覚えてないとのことでネットで調べた

まず、メニューボタンと戻るボタンと電源ボタン同時押し
するとリカバリーモードになるので音量ボタンで
Factroy data reset
を選択し、電源ボタンで決定
Yes No聞かれるのでYesを選択

しかしドコモショップじゃないと無理って情報多かったなー

参考
ARROWS X LTE F-05Dの強制初期化WebWaveスタッフブログ | WebWaveスタッフブログ

google map 表示されなかったけどなんとか回避 by titanium 3.4.0 android

titanium 3.3.0 androidgoogle mapがバグで表示されなかったけど
titanium sdk 3.3.0 + androidでgoogle mapが表示されない - shoprevのブログ
3.4.0でバグ直したよって上がってたのでsdkのバージョンあげてやってみた
たしかにエラーで落ちなくなったけど相変わらず

The Google Play services resources were not found.

といわれ、mapが表示されない状態。
さらに

E/Google Maps Android API: Failed to load map. Error contacting Google servers. ... network errors).

というエラーが・・・
なんども設定確認しなおしたけどうまくいかず
なんとなくandroid実機のwi-fiをoffにして動かしたらあっさり動いた
一度うまくmap表示されたらそれ以降はwi-fiのon、off関係なく動くようになった
なんだったんだ・・・何はともあれこれで先に進めそう

参考
http://docs.appcelerator.com/titanium/3.0/#!/guide/Google_Maps_v2_for_Android
http://docs.appcelerator.com/titanium/3.0/#!/api/Modules.Map
Getting Started - Google Maps Android API v2 — Google Developers

はてなのサーバー管理ツール(mackerel 鯖)使ってみた ④

前回、公式プラグインを使ってnginxのメトリック可視化してみた
はてなのサーバー管理ツール(mackerel 鯖)使ってみた ③ - shoprevのブログ
けど、個人の全然アクセスないサイトにはGoogle Analyticsで十分じゃねということで
サーバーで動かしてるアプリのエラー件数をmackerelに投稿してみた

mackerel-agent設定ファイル追記
/etc/mackerel-agent/mackerel-agent.conf

[plugin.metrics.app]
command = "/path/to/ruby /path/to/app-metrics.rb"

本日のエラー件数をmackerelに投稿

require "date"
if ENV['MACKEREL_AGENT_PLUGIN_META'] == '1'
  require 'json'

  meta = {
    :graphs => {
      'app' => {
        :label   => 'App',
        :unit    => 'integer',
        :metrics => [
          {
            :name  => 'error',
            :label => 'error'
          }
        ]
      }
    }
  }

  puts '# mackerel-agent-plugin'
  puts meta.to_json
  exit 0
end

puts [ 'app.error',  open("app.log","r:utf-8").read.scan(/#{Date.today.to_s}.+ERROR/).size, Time.now.to_i ].join("\t")

いけたー
しっかりやるならfluentd経由とかなのかもですがたいしたアプリでもないのでこれで十分かと

参考
ホストのカスタムメトリックを投稿する - Mackerel ヘルプ
はてなのサーバー管理ツール(mackerel 鯖)使ってみた ① - shoprevのブログ
はてなのサーバー管理ツール(mackerel 鯖)使ってみた ② - shoprevのブログ
はてなのサーバー管理ツール(mackerel 鯖)使ってみた ③ - shoprevのブログ

はてなのサーバー管理ツール(mackerel 鯖)使ってみた ③

前回で、無料で使える死活監視ツールとしてはいいんじゃないかという結論に
はてなのサーバー管理ツール(mackerel 鯖)使ってみた ② - shoprevのブログ
今回は、ミドルウェアのメトリック可視化のために公式プラグインが出てるので使ってみた
mackerel公式プラグインインストール

sudo apt-get install mackerel-agent-plugins

mackerel-agent設定ファイル追記
/etc/mackerel-agent/mackerel-agent.conf

[plugin.metrics.nginx]
command = "/usr/local/bin/mackerel-plugin-nginx"

mackerel-agent設定反映

sudo /etc/init.d/mackerel-agent restart

けどエラーが・・・

2014/09/30 16:28:59 ERROR metrics.plugin Failed to execute command "/usr/local/bin/mackerel-plugin-nginx" (skip these metrics):
2014/09/30 16:28:59 OutputValues:  Get http://localhost:8080/nginx_status: dial tcp 127.0.0.1:8080: connection refused
2014/09/30 16:28:59 ERROR agent Failed to generate value in *linux.PluginGenerator (skip this metric): exit status 1

nginxで接続状態を確認するためには、
stub_statusディレクティブが必要とのこと
なので設定追加
/etc/nginx/conf.d/default.conf

...
server {
    listen 80;
    server_name example.com;
    ...
    location /nginx_status {
        stub_status on;
        access_log  off;
        allow 127.0.0.1;
        deny  all;
    }
}
...

nginx設定反映

sudo /etc/init.d/nginx restart

mackerel-agent設定ファイル変更
/etc/mackerel-agent/mackerel-agent.conf

[plugin.metrics.nginx]
command = "/usr/local/bin/mackerel-plugin-nginx -host example.com -port 80"

mackerel-agent設定反映

sudo /etc/init.d/mackerel-agent start

いけたー

参考
mackerelio/mackerel-agent-plugins · GitHub
ミドルウェアのメトリック可視化に公式プラグイン集を使う - Mackerel ヘルプ
nginx で接続状態を確認する(stub_status を使ってみる) | レンタルサーバー・自宅サーバー設定・構築のヒント
はてなのサーバー管理ツール(mackerel 鯖)使ってみた ① - shoprevのブログ
はてなのサーバー管理ツール(mackerel 鯖)使ってみた ② - shoprevのブログ

はてなのサーバー管理ツール(mackerel 鯖)使ってみた ②

前回、mackerelをさくら vps 1G ubuntuに入れて見たけど、
はてなのサーバー管理ツール(mackerel 鯖)使ってみた - shoprevのブログ
1台しか入れてなかったのでサービスやらロールのありがたみが分らなかったため
手持ちの残り4台にも入れてみた。

たしかに5台をひとつのグラフで見られるのは便利だけど
この手の類似サービスを使ったことがないのでこれがすごいことなのかよくわからん

ためしに、vpsを強制停止して5分ぐらいでweb上にalertが上がって、登録メールアドレスに通知きたので死活監視ツールとして利用するのはありかも

(ちなみにvps起動してもmackerel-agentが自動起動しなかった・・・)

あと試すとしたらサービスメトリックかな