Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

go-echoでGPSな固定JSONを返す

go-echoでGPSな固定JSONを返すサンプルです

実際のところ

package main

import (
	"net/http"
	"github.com/labstack/echo"
)

// 型の指定
type (
    place struct {
        LAT float32 `json:"lat"`
        LON float32 `json:"Lon"`
        NAME string `json:"name"`
    }
)

// 変数の指定
var (
    places map[string]place
)

func main() {
    places = map[string]place{
    		"1": place {
        		LAT: 35.656083,
        		LON: 139.544056,
        		NAME:  "電気通信大学",
    			},
		}
	

	e := echo.New()

	e.GET("/place", placepage)

	e.Logger.Fatal(e.Start(":1323"))
}


func placepage(c echo.Context) error {
        return c.JSON(http.StatusOK, places["1"])
}

実際試すと……

$ curl localhost:1323/place
{"lat":35.656082,"Lon":139.54405,"name":"電気通信大学"}

参考もと

qiita.com

go用の軽量WEB鯖echo

go用の軽量WEB鯖echo

実際のところ

導入はパッケージ

$ go get -u github.com/labstack/echo

最小構成はこんな感じ

package main

import (
	"net/http"
	"github.com/labstack/echo"
)

func main() {
	e := echo.New()

	e.GET("/", mainpage)

	e.Logger.Fatal(e.Start(":1323"))
}

func mainpage(c echo.Context) error {
	return c.String(http.StatusOK, "Hello, World!")
}

GO言語を導入する

若干参考もとが古かったようです。
GOROOTはすでに不要です。
詳しくは以下を参照
shuzo-kino.hateblo.jp

実際のところ

OS X

そのままズバリ、パッケージで導入しましょう。
この辺りは大分熟れたようで、昔のようにGOPATHがどうのこうのと心配しなくて良いです。
余計なトコで根性みせる必要はありません!

Downloads - The Go Programming Language

#NIX系、あるいはOS Xでもビルドしたい人

tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz

$HOME/.profileに以下の記述を追加

export PATH=$PATH:/usr/local/go/bin
export GOROOT=$HOME/go1.X
export PATH=$PATH:$GOROOT/bin

Getting Started - The Go Programming Language

【読書メモ】1000円ゲーム  5分で人生が変わる「伝説の営業法」

1000円ゲーム ?5分で人生が変わる「伝説の営業法」

1000円ゲーム ?5分で人生が変わる「伝説の営業法」

黄色い表紙が目につく営業論の本です。
文字密度、イラストの量からして何だか小学校高学年向けの読み物みたいな印象をうける組版
その分頭に入って来やすい内容です。

方法論はどうであれ、相手の役に立つという大前提をもつこと。
その上で、聞き取りの中から真のニーズを拾って役に立つように行動すれば、
自ずと売上は上がってくるという話でした。

「心・技・体」なんて言葉もあるように、
まずちゃんとした動機がないと行き詰まるから、
その辺りちゃんと意識しなさいよ……というのが、この本の結論です。


私の会社はお客様側からの持ち込み企画に対して、技術で貢献するというタイプの仕事の進め方をしています。
そのためか、こういう事は自然とできていたように感じます。
今後業態を拡大するにあたって、なんとなく出来てた事をちゃんと意識してやってくべきなんでしょうね。

【読書メモ】新人デザイナーのための Webデザインを基礎から学べる本

タイトル通り、Webデザインについての入門書です。
章の最初に分野の基礎知識が入り、
その後は「いいケース」「わるいケース」を比較しながら、
ここではこう考える……という思考に道筋を提示してくれます。

実装につかったHTML/CSSファイルは特に用意されてないので、
そこは自分でやる必要があります。

ただ、作中の画像素材の多くは、Pixtaさんから持ってきているようです。
無料素材という訳でもないようなので、透かしが入りますが……。
あくまで自習用に拝借するのはなんとかセーフ??
pixta.jp

類似書

ストーリー仕立てで、同じ題材を段階的に改善していく本
shuzo-kino.hateblo.jp

同一生成元ポリシー(Same-Origin Policy)のお節介を防止するSafariブラウザの機能

同一生成元ポリシー(Same-Origin Policy)は、自己が置かれた鯖以外からのデータ取得を制限するアレです。
これにより、不正なアクセスからデータやブラウザを守る事ができます。
ところがギッチョン、自分のアプリを作る際にこれが余計でサンプル動作の検証すらままならない事があったりします。
例えば、動作を模すlocalhostの疑似鯖に接続したい時など。
CORS(Cross-Origin Resource Sharing)は、こういった自鯖以外からの変な読み込みを許可する仕組みです。

実際のところ

Safari => 開発 => クロスオリジンの制限を無効にする
f:id:shuzo_kino:20170310200220p:plain

pythonのglobal変数を関数内で利用するときはちゃんと宣言する

ちょっと横着して、グローバル変数を使おうとしたところ

UnboundLocalError: local variable 'count' referenced before assignment

なるエラーが。

調べてみると、Python公式に以下のような記述が

Python では、関数内で参照されるだけの変数は暗黙的にグローバルにです。関数の本体のどこかで値が変数に代入されたなら、それは明示的にグローバルであると宣言されない限り、ローカルであるとみなされます。

というわけで、hoge関数中でグローバル変数countを使いたい場合、関数冒頭で以下のようにします。

def hoge():
    global count

    //...