'잡동사니'에 해당되는 글 13033건

  1. 2022.09.28 golang mac address 얻기
  2. 2022.09.27 golang method
  3. 2022.09.27 go mod init 과 go build
  4. 2022.09.27 golang 함수 인자에 함수 넣기
  5. 2022.09.26 libvncserver 로그인
  6. 2022.09.26 로지텍 M185
  7. 2022.09.25 김치 냉장고 지름
  8. 2022.09.24 병원 투어
  9. 2022.09.23 golang package main
  10. 2022.09.23 golang REST client
Programming/golang2022. 9. 28. 12:03

"net" 패키지의 Interfaces() 람수를 이용하여 얻어올 수 있다.

[링크 : https://socketloop.com/tutorials/golang-get-local-ip-and-mac-address]

[링크 : https://stackoverflow.com/questions/44859156/get-permanent-mac-address]

 

HardwareAddr은 MAC address, Name에는 lo, eth 같은 장치식별자가 들어간다.

type Interface struct {
Index        int          // positive integer that starts at one, zero is never used
MTU          int          // maximum transmission unit
Name         string       // e.g., "en0", "lo0", "eth0.100"
HardwareAddr HardwareAddr // IEEE MAC-48, EUI-48 and EUI-64 form
Flags        Flags        // e.g., FlagUp, FlagLoopback, FlagMulticast
}

[링크 : https://pkg.go.dev/net#Interface]

'Programming > golang' 카테고리의 다른 글

golang 의 장단점. 개인적인 생각  (2) 2022.09.28
golang json/encoding marshal() unmarshal()  (0) 2022.09.28
golang method  (0) 2022.09.27
go mod init 과 go build  (0) 2022.09.27
golang 함수 인자에 함수 넣기  (0) 2022.09.27
Posted by 구차니
Programming/golang2022. 9. 27. 17:12

메소드라길래 먼가 해서 봤더니.. class는 없는 대신 타입 결정적인 함수를 메소드라고 정의하는 듯.

메소드의 타입을 정의하는 것을 리시버 라고 명명한다.

Methods
Go does not have classes. However, you can define methods on types.

A method is a function with a special receiver argument.

The receiver appears in its own argument list between the func keyword and the method name.

In this example, the Abs method has a receiver of type Vertex named v.
package main

import (
"fmt"
"math"
)

type Vertex struct {
X, Y float64
}

func (v Vertex) Abs() float64 {
return math.Sqrt(v.X*v.X + v.Y*v.Y)
}

func main() {
v := Vertex{3, 4}
fmt.Println(v.Abs())
}

[링크 : https://go.dev/tour/methods/1]

[링크 : https://dev-yakuza.posstree.com/ko/golang/method/]

[링크 : https://kamang-it.tistory.com/entry/Go15메소드Method와-리시버Receiver]

 

포인터를 넘길수도 있긴 하다.

[링크 : http://golang.site/go/article/17-Go-메서드]

 

'Programming > golang' 카테고리의 다른 글

golang json/encoding marshal() unmarshal()  (0) 2022.09.28
golang mac address 얻기  (0) 2022.09.28
go mod init 과 go build  (0) 2022.09.27
golang 함수 인자에 함수 넣기  (0) 2022.09.27
golang package main  (0) 2022.09.23
Posted by 구차니
Programming/golang2022. 9. 27. 16:17

먼가 복잡하다.

일단 모듈 패스는 초기 모듈/경로/패키지 명 식으로 잡히는 듯.

편리하다면 편리한데.. 직관적으로 와닫진 않는 느낌.. 그냥 .a나 .o로 빌드하고 링크 하는건 가능하려나?

 

아 그리고 go build 명령에 의해서 빌드 될 때

mod init의 가장 마지막 명칭으로 바이너리가 생성된다.

test/m 으로 패키지를 지었기에, 바이너리가 m으로 생성되었다.

 

$ tree
.
├── go.mod
├── lib
│   ├── div
│   │   └── div.go
│   └── sub
│       └── sub.go
├── m
├── main.go
└── sum
    └── sum.go
$ go build
# test/m
./main.go:5:2: imported and not used: "test/m/lib/div"
./main.go:6:2: imported and not used: "test/m/sum"
$ go mod init test/m
go: creating new go.mod: module test/m
go: to add module requirements and sums:
        go mod tidy


$ cat go.mod
module test/m

go 1.18
$ cat main.go
package main

import (
        "fmt"
        "test/m/lib/div"
        "test/m/sum"

)

func main() {
        fmt.Println("hello world")
}
$ cat lib/div/div.go
package div

func div(a float32, b float32) float32 {
        return a / b
}
$ cat sum/sum.go
package sum

func sum (a int, b int) int {

        return a + b
}

[링크 : https://www.vompressor.com/go-mod/]

'Programming > golang' 카테고리의 다른 글

golang mac address 얻기  (0) 2022.09.28
golang method  (0) 2022.09.27
golang 함수 인자에 함수 넣기  (0) 2022.09.27
golang package main  (0) 2022.09.23
golang REST client  (0) 2022.09.23
Posted by 구차니
Programming/golang2022. 9. 27. 14:22

말이 애매한데. 걍 C언어의 함수 포인터를 어떻게 사용이 가능할까 찾아보는 중.

 

package main

import (
    "fmt"
    "strings"
)

func Index(vs []string, t string) int {
    for i, v := range vs {
        if v == t {
            return i
        }
    }
    return -1
}

func Include(vs []string, t string) bool {
    return Index(vs, t) >= 0
}

func Any(vs []string, f func(string) bool) bool {
    for _, v := range vs {
        if f(v) {
            return true
        }
    }
    return false
}

func All(vs []string, f func(string) bool) bool {
    for _, v := range vs {
        if !f(v) {
            return false
        }
    }
    return true
}

func Filter(vs []string, f func(string) bool) []string {
    vsf := make([]string, 0)
    for _, v := range vs {
        if f(v) {
            vsf = append(vsf, v)
        }
    }
    return vsf
}

func Map(vs []string, f func(string) string) []string {
    vsm := make([]string, len(vs))
    for i, v := range vs {
        vsm[i] = f(v)
    }
    return vsm
}

func main() {

    var strs = []string{"peach", "apple", "pear", "plum"}

    fmt.Println(Index(strs, "pear"))

    fmt.Println(Include(strs, "grape"))

    fmt.Println(Any(strs, func(v string) bool {
        return strings.HasPrefix(v, "p")
    }))

    fmt.Println(All(strs, func(v string) bool {
        return strings.HasPrefix(v, "p")
    }))

    fmt.Println(Filter(strs, func(v string) bool {
        return strings.Contains(v, "e")
    }))

    fmt.Println(Map(strs, strings.ToUpper))

}

[링크 : https://gobyexample.com/collection-functions]

 

package main

import "fmt"

func upper(input string) string {
    return "hola"
}

func Validate(spec string, validations []func(string) string) {
    for _, exec := range validations {
        fmt.Println(exec(spec))
    }
}

func main() {
    Validate("Hola", []func(string) string{upper})
}

[링크 : https://stackoverflow.com/questions/50913022/array-of-functions-to-as-argument-in-golang]

'Programming > golang' 카테고리의 다른 글

golang method  (0) 2022.09.27
go mod init 과 go build  (0) 2022.09.27
golang package main  (0) 2022.09.23
golang REST client  (0) 2022.09.23
golang 'go doc'  (0) 2022.09.15
Posted by 구차니
프로그램 사용/VNC2022. 9. 26. 17:51

rfbCheckPasswordByList()는 계정-패스워드 쌍으로 되어있는 값을 이용하여 로그인을 구현하는 기본 함수이다.

희망(?)을 가졌던 newClientHook 이벤트는 시도때도 없이 발생했고(원래 기대했던 것은 로그인 시 1회)

로그인 별로 어떤 계정이 로그인 성공,실패 했는지는 함수를 확장해서 만들어야 할 듯..

 

newClientHook 에서도 cl->viewOnly가 설정되지 않는 걸 보면, vnc client 측의 설정과는 별개 인 듯

/* for this method, authPasswdData is really a pointer to an array
    of char*'s, where the last pointer is 0. */
 rfbBool rfbCheckPasswordByList(rfbClientPtr cl,const char* response,int len)
 {
   char **passwds;
   int i=0;
 
   for(passwds=(char**)cl->screen->authPasswdData;*passwds;passwds++,i++) {
     uint8_t auth_tmp[CHALLENGESIZE];
     memcpy((char *)auth_tmp, (char *)cl->authChallenge, CHALLENGESIZE);
     rfbEncryptBytes(auth_tmp, *passwds);
 
     if (memcmp(auth_tmp, response, len) == 0) {
       if(i>=cl->screen->authPasswdFirstViewOnly)
         cl->viewOnly=TRUE;
       return(TRUE);
     }
   }
 
   rfbErr("authProcessClientMessage: authentication failed from %s\n",
          cl->host);
   return(FALSE);
 }

[링크 : https://libvnc.github.io/doc/html/main_8c_source.html#l00786]

'프로그램 사용 > VNC' 카테고리의 다른 글

libvncserver 기본 인자  (0) 2022.11.04
libvncserver 종료 절차  (0) 2022.11.01
libvncserver 접속 끊어짐 문제  (0) 2022.08.16
libvncserver websocket example  (0) 2022.08.12
libvncserver 마우스 이벤트  (0) 2022.02.25
Posted by 구차니
개소리 왈왈/컴퓨터2022. 9. 26. 15:22

키보드 + 마우스 2.4GHz 리시버라

마우스만 고장나면 이래저래 귀찮아서 수리 (물론 내가 땜질한건 아님 ㅋ)

 

kailh 라는 좌/우 버튼과

너무 싸구려 택 스위치 -_-  그러니 2년 쓰고(!) 고장났지 싶은데

2년 동안 휠로 열고 닫은 창의 갯수를 생각하면 나름 잘 버텨 준 듯?

 

NRF31502F - 2.4GHZ RFIC NRF31

[링크 : https://www.avnet.com/shop/apac/products/nordic-semiconductor/nrf31502-r16q24-r-3074457345635064668/]

 

210-000981

VB010411

Capella005 라고 써있는데 영상을 이용한 마우스 이동 감지용 ic 인 것 같은데 영 검색이 안된다.

 

M170 이라는데 구조가 많이 닮은 듯.

[링크 : https://www.anavi.org/article/241/]

'개소리 왈왈 > 컴퓨터' 카테고리의 다른 글

삼성 플렉스 알파 키보드 백라이트..  (0) 2022.11.09
ai 그림  (0) 2022.11.07
Xeon 열쇠고...리?  (0) 2022.09.23
2020년형 올데이 그램 써멀패드 작업  (0) 2022.09.22
HDMI to USB (capture)  (0) 2022.08.01
Posted by 구차니

이마트에서 9월 30일 까지 무슨 신혼 페스타? 이런거 한다고 할인하는데

겸사겸사 김치냉장고 바꿔버림

대충 200만원에 60만원 상품권 이런식으로 해서 카드는 카드대로 나가고

상품권 잔뜩 줘서 다시 쓰게 만드는 사악한(!) 상술인 듯.

 

결혼 하고 8년차. 결혼기념일 맨날 까먹다가 이렇게 먼가 하나 지르고 넘어가는 듯.

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

어제는 운동회 오늘은 워크샾  (0) 2022.09.30
100MBps 지만 그래도 행복해!  (0) 2022.09.28
병원 투어  (0) 2022.09.24
비데 교체  (0) 2022.09.12
오랫만에 자전거 그리고  (0) 2022.09.11
Posted by 구차니

어우.. 돈돈돈 ㅠㅠ

 

구강검진이라 난 별로 안나왔지만

애들 구강 검진+치료 에서 왕창 깨짐

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

100MBps 지만 그래도 행복해!  (0) 2022.09.28
김치 냉장고 지름  (0) 2022.09.25
비데 교체  (0) 2022.09.12
오랫만에 자전거 그리고  (0) 2022.09.11
연휴의 시작  (0) 2022.09.08
Posted by 구차니
Programming/golang2022. 9. 23. 15:45

main을 지정해주어야 실행가능한 바이너리로 빌드 되는 느낌.

 

// 파일 생성되지 않음
$ go build client.go

// 강제 생성
$ go build -o client client.go
$ ls -al
-rw-rw-r--  1 minimonk minimonk    7014  9월 23 15:42 client
-rw-rw-r--  1 minimonk minimonk     102  9월 23 15:41 client.go

$ file client
client: current ar archive

$ ar -t client
__.PKGDEF
_go_.o

 

빌드시 static link가 기본이라 그렇지 main 패키지가 아닌 파일은

단순 object로 빌드가 되어 용량이 적게 나온다.

'Programming > golang' 카테고리의 다른 글

go mod init 과 go build  (0) 2022.09.27
golang 함수 인자에 함수 넣기  (0) 2022.09.27
golang REST client  (0) 2022.09.23
golang 'go doc'  (0) 2022.09.15
golang main arg, getopt  (0) 2022.09.15
Posted by 구차니
Programming/golang2022. 9. 23. 15:06

 

[링크 : http://golang.site/go/article/103-HTTP-POST-호출]

 

net/http 패키지에 Get() Post() 명령등을 사용하면 간단하게 보낼수 있는 듯.

resp, err := http.Get("http://example.com/")
...
resp, err := http.Post("http://example.com/upload", "image/jpeg", &buf)
...
resp, err := http.PostForm("http://example.com/form",
	url.Values{"key": {"Value"}, "id": {"123"}})

[링크 : https://pkg.go.dev/net/http]

 

Put() Delete()는 http.NewRequest()를 이용하여 http.MethodPut / http.MethodDelete 타입으로 만들어 주면

기본 모듈로도 충분히 구현 가능한 것 같다.

func put() {
    fmt.Println("3. Performing Http Put...")
    todo := Todo{1, 2, "lorem ipsum dolor sit amet", true}
    jsonReq, err := json.Marshal(todo)
    req, err := http.NewRequest(http.MethodPut, "https://jsonplaceholder.typicode.com/todos/1", bytes.NewBuffer(jsonReq))
    req.Header.Set("Content-Type", "application/json; charset=utf-8")
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        log.Fatalln(err)
    }

    defer resp.Body.Close()
    bodyBytes, _ := ioutil.ReadAll(resp.Body)

    // Convert response body to string
    bodyString := string(bodyBytes)
    fmt.Println(bodyString)

    // Convert response body to Todo struct
    var todoStruct Todo
    json.Unmarshal(bodyBytes, &todoStruct)
    fmt.Printf("API Response as struct:\n%+v\n", todoStruct)
}

func delete() {
    fmt.Println("4. Performing Http Delete...")
    todo := Todo{1, 2, "lorem ipsum dolor sit amet", true}
    jsonReq, err := json.Marshal(todo)
    req, err := http.NewRequest(http.MethodDelete, "https://jsonplaceholder.typicode.com/todos/1", bytes.NewBuffer(jsonReq))
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        log.Fatalln(err)
    }

    defer resp.Body.Close()
    bodyBytes, _ := ioutil.ReadAll(resp.Body)

    // Convert response body to string
    bodyString := string(bodyBytes)
    fmt.Println(bodyString)
}

[링크 : https://www.soberkoder.com/consume-rest-api-go/]

'Programming > golang' 카테고리의 다른 글

golang 함수 인자에 함수 넣기  (0) 2022.09.27
golang package main  (0) 2022.09.23
golang 'go doc'  (0) 2022.09.15
golang main arg, getopt  (0) 2022.09.15
golang json  (0) 2022.09.15
Posted by 구차니