べすとえふぉーと

プログラミング等のノート 

Let's encryptをUbuntu14.04に設定

環境:
Apache 2.4.7
Ubuntu 14.04

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly --webroot -w /var/www/html -d $domain

メールを入力する画面が表示されるので入力してからApacheに設定

./certbot-auto --apache -d $domain

Apache再起動

/etc/init.d/apache2 restart

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))

}