분류 전체보기

    [Golang] Sqrt(Newton's Method)와 같이 Go언어 Custom Error처리 이해하기

    Custom Error Handling 기존에 언어를 배웠던 것과는 Go언어는 다른점이 많기도 하다. Python에서의 try ~ except와는 다르게 Error를 인터페이스로 제공하고 이를 사용하기 위해서는 Method를 통해서 구현해서 사용하거나 따로 제공되는 errorString이나 errors 패키지를 import하여 New()함수를 통하는 방법도 있다. 처음 공부하는 부분이기도 하고, 가장 기본적으로 Error를 다루기 위해서 error 인터페이스의 메서드를 구현하고 이를 Custom해서 Error를 처리하도록 생각했다. (차후, Go를 이용해 다양한 프로젝트 아마.. Http 패키지를 써서 서버를 띄우거나, Go를 이용한 BlockChain에도 관심이 있어서 해볼 예정이다. 에러는 매번 중요..

    [Golang] 헷갈리는 Type assertion 이해하기

    Type-Switch에서도 쓰기도하고, empty interface를 자주 사용되는 부분에서 type assertion은 확실히 이해하고 넘어가야겠다고 생각했다. 결론부터 말하자면, Type Assertion은 interface type의 value의 Type을 확인하는 것이다. 말이 조금 이상할 수 있지만, 아래의 설명과 예시와 함께라면 이해하기에 충분하다🤔 Type Assertion interface type의 x 와 타입 T를 → x.(T)로 포현했을때, x가 nil 이 아니며, x는 T 타입에 속한다는 점을 확인하기(assert)하는 것으로 이러한 표현을 Type assertion 이라고 부른다. x 가 nil 이거나 x의 타입이 T가 아니라면 → Runtime ERROR x 가 T 타입인 경우 ..

    [Golang] cannot type switch on non-interface value v (type int)

    Type Switch 공부하면서 나온 ERROR이다. 단순히 생각해서 Switch문의 변수의 Type을 확인한다고 생각해서 아래와 같이 간단하게 Test를 진행해보았는데 value v가 Interface Value가 아니라고 한다. package main func main() { var v int = 10 switch v.(type) { case int: println("int") case bool: println("bool") case string: println("string") default: println("unknown") } } func do(i interface()) {} 는, -> 빈 인터페이스(empty interface)를 파라미터로하는 함수를 정의한다. 이 함수는 입력받는 Parame..

    [Docker] Shell and Exec Form in dockerfile

    Shell and Exec forms RUN, CMD and ENTRYPOINT 명령어는 shell form과 exec form으로 특정될 수 있다. shell form shell form의 은 /bin/sh -c 의 형태로 command를 호출한다. (shell processing) Examples: RUN apt-get install python3 CMD echo "Hello World!" ENTRYPOINT ehco "Hello World!" Dockerfile FROM busybox ENV name iamjjanga ENTRYPOINT echo "Hello, $name"를 빌드히여 이미지로 실행해보면 다음과 같은 output을 얻을 수 있다. $ docker build -t echo . $ doc..

    [k8s]local kubectl로 remote cluster(GKE) 연결 시 자주 겪는 문제 - TimeServer Sync

    Background 전날 하던 작업에 다시 동기화하거나, Cluster를 지웠다가 오랜시간이 자나면서 생기는 문제이다. 현재 내가 연결하고 있는 상황은 다음과 같다. Local VM machine 위에서 gcloud SDK로 local에서 kubectl을 통해 Remote에 있는 GKE Cluster로 작업중이다. Macbook 사양이 좋은 편이아니라, Control Plane외에 2개 이상의 Node가 올라가면 힘들어한다 ㅠㅠ Problem 다음과 같은 log Message를 볼 수 있다. $ k get node Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2021-03-06..

    [Docker] set up secure credential storage for Docker

    Background Docker login issue를 부딪혔다. (unencrypted...) In My Environment 현재 공부환경은 Docker engine은 AWS EC2 instaince에서 동작중인 상태 즉, AWS Security Group의 SSH Inbound-rule이 Every where 아무나 EC2 주소를 알고 private key를 가진다면 접속이 가능하다. (물론 private key가 노출된다면 일단 내 잘못이겠지만...) docker login으로 docker hub에 사용하는 ID와 Password로 접속을 하면 local에 다음 주소로 id-password 정보가 base64로 인코딩 되어서 저장된다. 예를 들어, secret password라는 비밀번호를 인코딩..