고양이는 고스트로 받고 SCV는 저글링으로 숨격둔곳에 들어가야 나온다

SCV 받은건 미네랄을 캐고 영웅 조합 필요 

미네랄 안케질때가 가끔있는데 G버튼 활용 필요

 

저그 

SCV + 고양이 + 드론2마리 + 저글링1마리

동물 + 드론6   = 무탈 3마리 나옴

 

테란 

 

SCV + 고양이 + 고스트4마리

 

프로토스

 

SCV +고양이 + 질럿2마리 + 다크1

 

영웅5개 준다.

 

순서대로 안넣으면 3개부터 조합 되어 뒤에 터지게 된다.

55라운드가 넘어서 히든유닛을  뽑으면   디파일러를 한마리 더 준다고 한다?

그때까지 버티기가 너무 힘듦

 

 

 

 

 

 

 

 

 

 

 

 

스티플 뜬 사람들

 

 

 

 

 

히든 조합   :    SCV + 고양이 + 디파일러 +    질럿 + 드론 + 다크 + 저글링 + 고스트 

                        디파일러 넣고 한개식 다 넣으면 공중 9개  줌

 

 

 

'잡담' 카테고리의 다른 글

의천도룡기 무력순위  (0) 2019.11.18
암호화폐로 돈 세탁 하는 방법,,,  (0) 2019.08.02
합법과 불법 사이...  (0) 2019.08.02
장기 전략 유형  (0) 2018.10.04
SI 프로젝트가 막장이 되는 이유  (0) 2018.09.14
블로그 이미지

iesay

,

오랜만에 블로그 포스팅이다.

사무실에서 삽질을 하도 많이 해서 기록을 남기려구 한다.

요구사항은 아래와 같다.

- linksys mesh 공유기로 기존에 무선 망이 구성됨 

- iptime A2004MU로 기존 무선망에 추가로 멀티브릿지(리피터) 설정

- 192.168.1.1 (mesh linksys)      192.168.0.1(iptime) 대역대를 합치는 작업 

- 복합기가 유선만 제공하여 같은 대역대에서 iptime 공유기를 활용하여 작업

 

-  고급설정 -> 무선랜관리 -> 무선확장 설정 ->     멀티브릿지(리피터)

    linksys mesh 공유기 ID/ PASSWD 입력    

   인증 및 암호화는 아래 그림과 같이 설정하니 통과

- 재로그인 하면 동적IP는 192.168.1.1 (mesh linksys) 대역대

   URL은 192.168.0.1(iptime) 대역이다. 이걸  브릿지로 모든 사무실이다 192.168.1.1 (mesh linksys)대역대를

   사용하게 하면 된다.

- iptime 공유기에 물려진 내PC의  IP주소이다. 해당 IP주소가 브릿지로 192.168.1.1 (mesh linksys) 대역대로

  인터넷이 되면 성공이다. 

 

고급설정 -> 네트워크 관리 -> 내부네트워크 설정       공유기 IP를  192.168.1.101로 설정

앞으로 공유기는 위 IP로 접속 가능 

내부 IP주소를 192.168.1.1 (mesh linksys) 대역대 주소로 바꿈

아래에 클릭 절대 금지 

 

 

이제 PC에서 랜선을 뽑고 복합기에 설치하면 된다.

192.168.1.1 (mesh linksys)에 복합기를  무선망만 되는 환경에서

유무선공유기 iptime공유기를 달아서 설치를 한것이다.

'시스템' 카테고리의 다른 글

키바나 설치  (0) 2023.04.28
Logstash 설치  (0) 2023.04.27
MongoDB Replica Set  (0) 2023.01.10
s3 권한이 없는 경우  (0) 2022.05.17
프로메테우스 모니터링  (0) 2022.03.30
블로그 이미지

iesay

,

MongoDB Replica Set

시스템 2023. 1. 10. 13:55

출처 : https://devs0n.tistory.com/43

  • 파일 생성

/home/ubuntu/mongod/docker-compose.yml

version: "3.6"

services:
  mongo-1:
    image: mongo:4.4
    container_name: mongo-1
    ports:
      - "30000:30000"
    command: mongod --replSet replset --port 30000 **--bind_ip 0.0.0.0**

  mongo-2:
    image: mongo:4.4
    container_name: mongo-2
    ports:
      - "30001:30001"
    command: mongod --replSet replset --port 30001 **--bind_ip 0.0.0.0**

  mongo-3:
    image: mongo:4.4
    container_name: mongo-3
    ports:
      - "30002:30002"
    command: mongod --replSet replset --port 30002 **--bind_ip 0.0.0.0**

C:\Windows\System32\drivers\etc\hosts 추가 (MongoDB IP)

**192.168.0.53** mongo-1
192.168.0.53 mongo-2
192.168.0.53 mongo-3
시작 
docker compose up &

종료
docker compose down
**도커에 접속** 

docker exec -it mongo-1 mongo --port 30000

**mongod  1 :** PRIMARY
**mongod  2 :** SECONDARY
**mongod  3 :** SECONDARY

> config = {
	"_id" : "replset", // docker-compose에 있는 replSet과 동일하게
	"members" : [
		{
			"_id" : 0,
			"host" : "mongo-1:30000"
		},
		{
			"_id" : 1,
			"host" : "mongo-2:30001"
		},
		{
			"_id" : 2,
			"host" : "mongo-3:30002"
		}
	]
}
 
> rs.initiate(config);
{ "ok" : 1 }

**mongod  1]**
**샘플데이터 입력** 
db.wallets.insert(
  { 
    wid: 4,
    uid: "11e035c6-ed09-4c91-aae7-50a72ea3f344",
    ucPubkey:   "0x029c8804e80db19ffe796746ae70c04f25e137c14b08d3e1ea925b92b734812632", 
    created: "2022-08-11T14:00:51.059Z" 
  }
)

**샘플 데이터 확인**
> db.wallets.find({})
{ "_id" : ObjectId("63acdad42c351689ae8b3af7"), "wid" : 4, "uid" : "11e035c6-ed09-4c91-aae7-50a72ea3f344", "ucPubkey" : "0x029c8804e80db19ffe796746ae70c04f25e137c14b08d3e1ea925b92b734812632", "created" : "2022-08-11T14:00:51.059Z" }
>

  • Robo 3T docker compass 접속 정보 설정
  • docker compass 왼쪽 확인

SECONDARY에 접근하기 위한 명령어

**mongod  2] , mongod  3]**

replset:SECONDARY> rs.slaveOk()
  • mongod 1] , mongod 2] , mongod 3] 데이터 동일 여부 확인
    • 파일 생성
    /home/ubuntu/mongod/docker-compose.ymlC:\Windows\System32\drivers\etc\hosts 추가 (MongoDB IP)
    시작 
    docker compose up &
    
    종료
    docker compose down
    
    **도커에 접속** 
    
    docker exec -it mongo-1 mongo --port 30000
    
    **mongod  1 :** PRIMARY
    **mongod  2 :** SECONDARY
    **mongod  3 :** SECONDARY
    
    > config = {
    	"_id" : "replset", // docker-compose에 있는 replSet과 동일하게
    	"members" : [
    		{
    			"_id" : 0,
    			"host" : "mongo-1:30000"
    		},
    		{
    			"_id" : 1,
    			"host" : "mongo-2:30001"
    		},
    		{
    			"_id" : 2,
    			"host" : "mongo-3:30002"
    		}
    	]
    }
     
    > rs.initiate(config);
    { "ok" : 1 }
    
    **mongod  1]**
    **샘플데이터 입력** 
    db.wallets.insert(
      { 
        wid: 4,
        uid: "11e035c6-ed09-4c91-aae7-50a72ea3f344",
        ucPubkey:   "0x029c8804e80db19ffe796746ae70c04f25e137c14b08d3e1ea925b92b734812632", 
        created: "2022-08-11T14:00:51.059Z" 
      }
    )
    
    **샘플 데이터 확인**
    > db.wallets.find({})
    { "_id" : ObjectId("63acdad42c351689ae8b3af7"), "wid" : 4, "uid" : "11e035c6-ed09-4c91-aae7-50a72ea3f344", "ucPubkey" : "0x029c8804e80db19ffe796746ae70c04f25e137c14b08d3e1ea925b92b734812632", "created" : "2022-08-11T14:00:51.059Z" }
    >
    
    
    • Robo 3T docker compass 접속 정보 설정

    • docker compass 왼쪽 확인

    **mongod  2] , mongod  3]**
    
    replset:SECONDARY> rs.slaveOk()
    
    • mongod 1] , mongod 2] , mongod 3] 데이터 동일 여부 확인

'시스템' 카테고리의 다른 글

Logstash 설치  (0) 2023.04.27
iptime 공유기 & mesh linksys 콜라보레이션 무선 AP 구성  (0) 2023.04.18
s3 권한이 없는 경우  (0) 2022.05.17
프로메테우스 모니터링  (0) 2022.03.30
nginx/1.18.0 (Ubuntu20.04) gzip  (0) 2022.03.07
블로그 이미지

iesay

,

 

 

 

 

 

블로그 이미지

iesay

,

출처 : https://api.raritysniper.com/public/collection/cryptopunks/id/8348

 

package main

import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)

type User struct {
Nftid       int     `json:"nftId"`
Rank        int     `json:"rank"`
Rarityscore float64 `json:"rarityScore"`
}

func customGet() {
// Request 객체 생성
req, err := http.NewRequest("GET", "https://api.raritysniper.com/public/collection/cryptopunks/id/8348", nil)
if err != nil {
panic(err)
}

//헤더 추가
req.Header.Add("User-Agent", "Golang-test")

// Client 객체에서 Request 실행
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()

// 결과 출력
bytes, _ := ioutil.ReadAll(resp.Body)
str := string(bytes) //바이트를 문자열로

var u User
json.Unmarshal([]byte(str), &u)
fmt.Printf("%+v\n", u) // {Name:gopher Age:7}

//fmt.Println(str)

}

func main() {
customGet()

}

 

 

 

 

 

 

'go' 카테고리의 다른 글

go 프로젝트 세팅  (0) 2024.02.26
JSON Transfer  (0) 2022.04.14
Web Handler  (0) 2022.04.14
go언어 설치  (0) 2022.04.14
routing module  (0) 2022.04.14
블로그 이미지

iesay

,

JSON Transfer

go 2022. 4. 14. 13:56

https://github.com/tuckersGo/goWeb/blob/master/web2/main.go

 

https://www.youtube.com/watch?v=vOW0j6hd-Rg&ab_channel=TuckerProgramming

 

package main

import (
  "encoding/json"
  "fmt"
  "net/http"
  "time"
)

type User struct {
  FirstName string
  LastName  string
  Email     string
  CreatedAt time.Time
}

type fooHandler struct{}

func (f *fooHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
  user := new(User)
  err := json.NewDecoder(r.Body).Decode(user)
  if err != nil {
    w.WriteHeader(http.StatusBadRequest)
    fmt.Fprint(w, "Bad Request: ", err)
    return
  }
  user.CreatedAt = time.Now()

  data, _ := json.Marshal(user)
  w.WriteHeader(http.StatusOK)
  fmt.Fprint(w, string(data))
}

func barHandler(w http.ResponseWriter, r *http.Request) {
  name := r.URL.Query().Get("name")
  if name == "" {
    name = "World"
  }
  fmt.Fprintf(w, "Hello %s!", name)
}

func main() {
  mux := http.NewServeMux()
  mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "Hello World")
  })

  mux.HandleFunc("/bar", barHandler)

  mux.Handle("/foo", &fooHandler{})

  http.ListenAndServe(":3000", mux)
}

 

URL에서 name값을 출력 

 

http://192.168.0.6:3000/bar?name='aaaaaa'

'go' 카테고리의 다른 글

go 프로젝트 세팅  (0) 2024.02.26
cryptopunks raritysniper json 파싱  (0) 2022.04.15
Web Handler  (0) 2022.04.14
go언어 설치  (0) 2022.04.14
routing module  (0) 2022.04.14
블로그 이미지

iesay

,

Web Handler

go 2022. 4. 14. 13:41

출처 : https://www.youtube.com/watch?v=4Oml8mbBXgo&ab_channel=TuckerProgramming 

https://github.com/tuckersGo/goWeb/blob/master/web1/main.go

위 코드로 공부겸 샘플 예제 실습

 

package main

import (
"fmt"
"net/http"
)

type fooHandler struct{}

func (f *fooHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello Foo!")
}

func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello World")
})

http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello Bar!")
})

http.Handle("/foo", &fooHandler{})

http.ListenAndServe(":3000", nil)
}

 

인덱스 경로 

http://192.168.0.6:3000/

/bar 경로 

http://192.168.0.6:3000/bar

/foo 경로 fooHandler인스턴스 메서드 실행 

http://192.168.0.6:3000/foo

 

'go' 카테고리의 다른 글

cryptopunks raritysniper json 파싱  (0) 2022.04.15
JSON Transfer  (0) 2022.04.14
go언어 설치  (0) 2022.04.14
routing module  (0) 2022.04.14
golang 개발환경 구축  (0) 2021.06.21
블로그 이미지

iesay

,

go언어 설치

go 2022. 4. 14. 13:34

https://go.dev/doc/install

 

go언어 다운로드

#wget https://go.dev/dl/go1.18.1.linux-amd64.tar.gz

기존 설치된 go 삭제 압축 품

#rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz

환경변수 등록

#vi /etc/profile

export PATH=$PATH:/usr/local/go/bin

#reboot

#go version 

 

'go' 카테고리의 다른 글

cryptopunks raritysniper json 파싱  (0) 2022.04.15
JSON Transfer  (0) 2022.04.14
Web Handler  (0) 2022.04.14
routing module  (0) 2022.04.14
golang 개발환경 구축  (0) 2021.06.21
블로그 이미지

iesay

,

routing module

go 2022. 4. 14. 10:46

출처 : https://spectrumdig.blogspot.com/2012/02/routing-module-handler.html?m=0 

 

package main

import (
  "fmt"
)

type Handler func(method string)

type Route struct {
  Method,Pattern string
}

type Routes struct {
  Routes []Route
}
func (r Routes) routeCount() int {
  return len(r.Routes)
}
func (r *Routes) addRoute(method, pattern string, handler Handler) {
  r.Routes=append(r.Routes, Route{Method:method, Pattern:pattern})
  fmt.Printf("route Count : %d\n", len(r.Routes))
  handler(method)
}
func (r *Routes) GET(pattern string, handler Handler) {
  r.addRoute("GET", pattern, handler)
}
func (r *Routes) POST(pattern string, handler Handler) {
  r.addRoute("POST", pattern, handler)
}
func (r *Routes) PUT(pattern string, handler Handler) {
  r.addRoute("PUT", pattern, handler)
}
func (r *Routes) DELETE(pattern string, handler Handler) {
  r.addRoute("DELETE", pattern, handler)
}
func handler(method string) {
  fmt.Printf("%s handler executed \n", method)
}

func main() {
  r:=new(Routes)
  r.GET("/user/:user", handler)
  r.PUT("/add/:user", handler)
  r.POST("/update/:user", handler)
  r.DELETE("/delete/:user", handler)
  for _,v:=range r.Routes {
    fmt.Printf("%s:%s\n",v.Method, v.Pattern)
  }
}

 

 

'go' 카테고리의 다른 글

cryptopunks raritysniper json 파싱  (0) 2022.04.15
JSON Transfer  (0) 2022.04.14
Web Handler  (0) 2022.04.14
go언어 설치  (0) 2022.04.14
golang 개발환경 구축  (0) 2021.06.21
블로그 이미지

iesay

,

출처

https://ichi.pro/ko/prometheus-mich-grafanaleul-sayonghan-node-js-aepeullikeisyeon-moniteoling-194123578535907

 

const http = require('http')
const url = require('url')
const client = require('prom-client')
// Create a Registry which registers the metrics
const register = new client.Registry()
// Add a default label which is added to all metrics
register.setDefaultLabels({
  app: 'example-nodejs-app'
})
// Enable the collection of default metrics
client.collectDefaultMetrics({ register })
// Create a histogram metric
const httpRequestDurationMicroseconds = new client.Histogram({
  name: 'http_request_duration_seconds',
  help: 'Duration of HTTP requests in microseconds',
  labelNames: ['method', 'route', 'code'],
  buckets: [0.1, 0.3, 0.5, 0.7, 1, 3, 5, 7, 10]
})
// Register the histogram
register.registerMetric(httpRequestDurationMicroseconds)
// Define the HTTP server
const server = http.createServer(async (req, res) => {
    // Start the timer
  const end = httpRequestDurationMicroseconds.startTimer()
// Retrieve route from request object
  const route = url.parse(req.url).pathname
if (route === '/metrics') {
    // Return all metrics the Prometheus exposition format
    res.setHeader('Content-Type', register.contentType)
    res.end(register.metrics())
  }
// End timer and add labels
  end({ route, code: res.statusCode, method: req.method })
})
// Start the HTTP server which exposes the metrics on http://localhost:8080/metrics
server.listen(8080)

nodejs server.js

 

프로메테우스 설치 

#apt install prometheus

#cd /etc/prometheus

#vi prometheus.yml

global:
  scrape_interval: 5s
scrape_configs:
  - job_name: "example-nodejs-app"
    static_configs:
      - targets: ["localhost:8080"]

#service prometheus restart

 

prometheus_http_request_duration_seconds_bucket

프로메테우스 실행 완료  

 

Grafana

#cd /etc/prometheus

#vi datasources.ym


apiVersion: 1
datasources:
  - name: Prometheus
    type: prometheus
    access: proxy
    orgId: 1
    url: http://docker.for.mac.host.internal:9090
    basicAuth: false
    isDefault: true
    editable: true

 


docker run --rm -p 3000:3000 \
  -e GF_AUTH_DISABLE_LOGIN_FORM=true \
  -e GF_AUTH_ANONYMOUS_ENABLED=true \
  -e GF_AUTH_ANONYMOUS_ORG_ROLE=Admin \
  -v `pwd`/datasources.yml://etc/prometheus \
  grafana/grafana-enterprise:8.3.6-ubuntu


 

 

'시스템' 카테고리의 다른 글

MongoDB Replica Set  (0) 2023.01.10
s3 권한이 없는 경우  (0) 2022.05.17
nginx/1.18.0 (Ubuntu20.04) gzip  (0) 2022.03.07
nginx/1.18.0 (Ubuntu20.04) brotli  (0) 2022.01.11
Gitlab CI react app 배포  (0) 2021.12.31
블로그 이미지

iesay

,