投稿者「okamura」のアーカイブ

VBA エクセルからSQL実行

以前作ったものにSELECT以外も動くように少し修正。
SQLの動きを調べるのにエクセルからテーブルの作成やSQLの実行ができると楽。

 

golang 簡易テスト実施

 

golang チャンネル

 

golang クロージャ

 

golang sshでdbのバックアップ

サーバーにあるwordpressのDBをバックアップしようと思い、sshを調べた。
ファイルの転送に手軽な方法がなかったため標準出力をファイルへ書き出すことに。

 

golang色々

静的ファイル配信。jsonパース

 

golang,MongoDB,Vue.js色々①

サーバーをgolang+MongoDBでフロントをVue.js
基本的な処理を色々メモ。

 

MongoDB基礎

インストール

/etc/yum.repos.d/mongodb-org-4.0.repo

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

を記載し、

yum install -y mongodb-org

起動
systemctl start mongod

停止
systemctl stop mongod

再起動
systemctl restart mongod

自動起動
systemctl enable mongod

シェル起動
mongo

シェル終了
exit

Mongoシェルコマンド

db切り替え(作成)
use DB

db削除
db.dropDatabase()

利用中db
db

db一覧
show dbs

コレクション一覧
show collections

コレクション作成
db.createCollection(“コレクション名”)
※Cは大文字

コレクション削除
db.コレクション名.drop()

ドキュメント作成
db.コレクション名.insert({“name”:”taro”,”age”:1})
db.コレクション名.insert({“name”:”taro”,”age”:1, “addr”:”tokyo”})

ドキュメント検索
db.コレクション名.find()
※すべて

db.コレクション名.findOne()
※一つのみ

db.コレクション名.find({“name”:”taro”})
※条件

ドキュメント更新
db.コレクション名.update(検索内容、更新内容)
db.コレクション名.update({“name”,”taro”},{“name”:”jiro”})

通常はフィールドが全て上書きされる。
更新したい場合$setを使う。
フィールドが存在すれば更新、しないと新しいフィールドとして追加される。

db.コレクション名.update({“name”,”taro”},{$set:{“name”:”jiro”}})

ドキュメント削除
db.コレクション名.remove()
※すべて

db.コレクション名.remove(検索内容)

ユーザー

ユーザーはDBごとに作成adminのユーザーは管理者となる。

現在のDBに接続中のユーザー
db.getUsers()
db.system.users.find()

ユーザ作成
※2.4まではaddUser

use name_store

db.createUser({
user:”taro”,
pwd:”123″,
roles:[{
role: “readWrite”,
db: “admin”
}]

})

あるいは

db.createUser({
user:”jiro”,
pwd:”123″,
roles:[“dbAdminAnyDatabase”] 
})

db.createUser({
user:”shiro”,
pwd:”123″,
roles:[“root”]
})

現在の接続先のDBにユーザーがー作成される。
db:は対象のDBというよりロールが存在するDBという意。

主要なロール

read
readWrite
dbAdmin
dbOwner
userAdmin
readAnyDatabase
readWriteAnyDatabase
userAdminAnyDatabase
dbAdminAnyDatabase(他のコレクションのfind等できない)
root

ユーザー削除
use db
db.dropUser(ユーザー名)

認証

認証有効化

/etc/mongod.conf
※winならProgram Filesの中

#security:

security:
__authorization: enabled
※インデント必要

ログイン方法

mongo
use admin
db.auth(“taro”, “123”)

NginxとgolangでAPIサーバー

golangもNginxも始めたばかりなので、他のブログの記事を参考にしつつ試験中

Nginxのconfにlocation追加

golang

ちょっと違う書き方

サーバーの開始

func http.ListenAndServe(addr string, handler Handler) err
http.ListenAndServe(“:81”, nil)

第1引数にTCPアドレス
第2引数にHandlerを引数に受け取りサーバーを起動する。

Handlerというのは、http.Handlerインターフェースを実装していればいい。

ちなみに、内部でhttp.server.ListenAndServeを呼んでいる。http.server.ListenAndServeは内部でhttp.Server.Serveを呼んでいる。http.Server.Serveはforループでリクエストごとにgoroutineを立ち上げる。

http.Handle(r)とは

ServeHTTPメソッドを持つインターフェース。
ServeHTTPはリクエストとレスポンスが記述される。
type Handler interface { ServeHTTP(ResponseWriter, *Request) }

http.Handleとは

func Handle(pattern string, handler Handler)
URLとhttp.Handerを実装した構造体を受け取り、ルータに登録。

http.HandleFuncとは

func HandleFunc(pattern string, handler func(ResponseWriter, *Request))
URLとhttp.Handerを受け取り、ルータに登録。

HandleだとServeHTTPを定義しHandlerを実装した構造体を渡す必要があるが、HandleFuncの場合Funcのまま受け取れる。

http.HandleとHandleFuncについて

http内でDefaultServeMux(ServeMux)が定義されており、DefaultServeMux.Handler、DefaultServeMux.HandleFuncが呼ばれている。

http.ServerMuxとは

ServerMuxはURLとhandlerを登録しておく構造体。
ServeMux自体、ServeHTTPメソッドを実装している→Handler
mux := http.NewServeMux()
mux.Handle(“/echo”, echoHandler)

http.Handle(r)Funcとは

type HandlerFunc func(ResponseWriter, *Request)
func(ResponseWriter, *Request)の別名でServerHTTPが定義(実装)されている。

Handle(r)FuncとHandleFuncについて

そっくりで混乱するが、HandleFuncはURLとHandlerをServerMuxに登録する。Handle(r)Funcの方は、func(ResponseWriter, *Request)の別名でhttp.Handlerとして使える。

http.ServeMux.HandleFuncとは

URLとfunc(ResponseWriter, *Request)を受け取りルータに登録している

内部でfunc(ResponseWriter, *Request)をHandle(r)FuncにキャストしているHandleに登録している。

http.ServerMux.Handleとは

ServeMuxにURLとHandlerを登録する。

出力関係

Print
標準出力へ

Fprint
出力先を指定

Sprint
文字列で返す。

接尾のfはフォーマット