bottleのアプリをherokuで公開する
ディレクトリ作成
# mkdir bottletestapp # cd bottletestapp
app.pyの中身
import os from bottle import route,run @route("/") def hello_world(): return "hello" run(host="0.0.0.0",port=int(os.environ.get("PORT",5000)))
requirements.txt の中身
bottle==0.4.3
Procfile作成
#echo web: python app.py > Procfile
git
#git init #git add . #git commit -m "initial commit"
アプリを作成してpush
#heroku apps:create bottletestapp #git push heroku master
アクセス
http://bottletestapp.herokuapp.com/
アプリを削除
#heroku apps:destroy --app bottletestapp --confirm bottletestapp
Go 使い方メモ ゴルーチン チャネル
package main import "fmt" func main() { //make channel c := make(chan int) //send function go func(send chan<- int) { for i := 0; i < 8; i++ { send <- i } close(send) }(c) //receive roop for { value,ok := <-c if !ok { break } //receive fmt.Println(value) } }
package main import ( "fmt" ) func dofunc(intval int,s chan<- int) { for i := 0; i < 100; i++ { if i+1 == intval && intval % 2 == 0 { s <- intval close(s) } } } func main() { c := make(chan int) go dofunc(30,c) go dofunc(3,c) go dofunc(4,c) for { value,ok := <- c // return false when channel closed if value > 0 { fmt.Println("ret:", value) break } if !ok { break } } }
Go 使い方メモ ゴルーチン
元がゴルーチンのtest()実行後3秒で終わるので、test()は2まで表示して終了する
package main import( "fmt" "time" ) func main() { fmt.Println("Start") fmt.Println("normal test") test() fmt.Println("go routine test") go test() time.Sleep(3 * time.Second) fmt.Println("End") } func test() { for i := 0; i < 5; i++ { fmt.Println(i) time.Sleep(1 * time.Second) } }
Go 使い方メモ スライス マップ
package main import ( "fmt" ) func doubl(valueary []int) { for i:=0; i< len(valueary); i++ { valueary[i] *= 2 } } func main() { strary := [5]string{"a","b","c","d","e"} var slc1 []string slc1 = strary[:] fmt.Println(slc1) slc2 := strary[1:4] fmt.Println(slc2) slc3 := strary[3:] fmt.Println(slc3) slc4 := strary[:4] fmt.Println(slc4) vals := [...]int{0,1,2,3,4} doubl(vals[:]) fmt.Println(vals) sla1 := []int{1,2,3} sla2 := append(sla1,4,5) sla3 := append(sla2,sla1...) fmt.Println(sla3) var byt1 []byte byt2 := append(byt1,"abc"...) fmt.Println(byt2) mapvl := make(map[string]string) mapvl["001"] = "test1" mapvl["002"] = "test2" fmt.Println(mapvl["001"]) fmt.Println(mapvl["002"]) }
チキンカレーのレシピ
-
- 材料(2人前)
玉ねぎ 1個(みじん切り)
ピーマン 1個(みじん切り)
にんにく 1片(みじん切り)
しょうが 1片(みじん切り)
カレー粉 大さじ1.5
ヨーグルト 大さじ4
鶏むね肉 200g
水 400ml
野菜ジュース トマトベース
カレールー 大さじ5〜7(井上スパイス工業の甘口)
しょうゆ 大さじ1
ケチャップ 大さじ2
-
- 作り方
(1) 鶏肉を切ってヨーグルトに入れて、カレー粉と混ぜる
(2) 玉ねぎを茶色になるまで炒める
(3) にんにく、しょうが、ピーマンを炒める
(4) 鶏肉を炒める
(5) 水400ml 野菜ジュースを入れる
(6) 中火でアクを取りながら15分〜20分煮込む
(7) ルーを入れて弱火、ケチャップ・しょうゆを入れる
Go 使い方メモ インタフェース
package main import "fmt" type Calc interface { Calc(x int, y int) int } type Add struct { } func (r Add) Calc(x int, y int) int{ return x + y } type Sub struct { } func (r Sub) Calc(x int, y int) int{ return x - y } func main() { var add Add var sub Sub var cal Calc cal = add fmt.Println("plus:",cal.Calc(1,2)) cal = sub fmt.Println("minus:",cal.Calc(4,3)) }
Go 使い方メモ 2
package main import ( "fmt" ) type myType int func for_range(array []int) { for i := range array { if i % 2 == 0 && array[i] % 2 == 0 { fmt.Println(array[i]) } } } func (value myType) printmethod() { fmt.Println(value) } func (value *myType) setfrompointer(newval myType) { *value = newval } func (value *myType) addval(incval myType) myType { *value += incval return *value } func main() { argarray := []int{1,2,4,5,7,8} for_range(argarray) fmt.Println(" ") var z myType = 123 z.printmethod() z.setfrompointer(45) z.printmethod() z.addval(3) z.printmethod() fmt.Println(" ") }