분류 전체보기 40

[번역] Strings, bytes, runes and characters in Go

Code wars 문제를 풀던 중 Golang의 문자열이 좀 헷갈려서 금번에 공부할 목적으로 The Go Blog의 Strings, bytes, runes and characters in Go를 번역하였습니다. 원문은 위 링크를 참조하시기 바라며, 영어를 잘하는 편이 아니기도 하고, 구글 번역기를 기반으로 번역한 내용이기 때문에 내용에 의문점이 드신다면 바로 위 포스트에서 원문을 읽으시기를 바랍니다. 목차 Strings, bytes, runes and characters in Go Rob Pike 23 October 2013 Introduction 이전 블로그 게시물에서는 구현 뒤에 숨겨져 있는 동작원리를 설명하기 위해 여러 예제를 통해 slices가 Go에서 작동하는 방식을 설명했습니다. 이러한 배경을..

Programming/Golang 2021.07.02

Golang 기초 - III

함수 1. defer (지연) 해당 함수가 실행을 완료했을 때 실행을 위해 호출 스케줄을 잡는다. defer는 어떤 식으로든 자원을 해제해야 할 때 자주 사용된다. 예를 들어, 파일을 열 때 나중에 해당 파일을 반드시 닫아야 한다. defer를 이용하면 다음과 같이 하면 된다. f, _ := os.Open(filename) defer f.Close() 이 방법에는 세 가지 장점이 있다. (1) Close 호출을 Open 호출 가까이에 둬서 이해하기가 쉽고, (2) 함수에 반환문이 여러 개 있더라도(if에 하나가 들어 있고, else에 하나가 들어 있는 것처럼) Close가 두 반환문 앞에서 모두 호출될 것이며, (3) 지연된 함수는 런타임 패닉이 일어나더라도 실행될 것이다. 2. panic & recov..

Programming/Golang 2021.06.30

AWS Service를 활용한 AMI CI/CD 환경 구성 (Packer)

AWS에서 기본적으로 제공하는 Code 시리즈 (CodeCommit, CodeBuild, CodePipeline)을 이용한 OS 이미지가 지속적이고 정기적으로 배포될 수 있는 환경을 구성해보았다. 기본적으로는 Jenkins와 같은 CI툴과 Spinnaker와 같은 CD툴을 사용해서 구현할 것으로 보이나, 그런 시스템이 구축되지 않은 소규모 환경에서는 위와 같이 AWS Native한 서비스를 사용해도 기본적인 구현은 충분히 가능할 것으로 보인다. 위에는 추가하지 않았으나, SNS를 활용한 Notification을 추가할 수도 있고, AWS Pipeline에 추가적인 스텝을 구현하는 것도 가능하여 추가적으로 확장이 가능하며, Packer를 이용한다는 점은 동일하므로 ansible과 같은 솔루션도 사용이 가능..

Devops/CI, CD 2021.06.30

Atlantis를 활용한 Terraform Pull Request 자동화 환경 구축

목차 개요 Terraform을 사용하는 초기에는 Local에서 혼자 사용하거나 여러 명이서 사용한다고 하더라도 규모가 작기 때문에 큰 무리가 없다. 그러나, 규모가 점점 늘어나고, 관리해야 하는 리소스가 복잡해지고, 협업을 고민하게 되면 다양한 방법을 찾아보게 될 것이다. Atlantis는 Terraform의 Pull Request를 자동화해주는 오픈소스 솔루션으로, Pull Request(Gitlab에서는 Merge Request)가 발생하면 자동으로 terraform (또는 terragrunt) plan을 해주고, apply도 comment로 가능하도록 지원해준다. 이를 사용하면 모두 동일한 버전의 형상을 사용할 수 있고, comment와 approve, notification 기능을 모두 활용할 수..

Payer Account에서 Athena로 AWS Config Resource 조회하기

Payer Account에서 Linked Account의 Config 리소스를 조회하려면 Config Aggregator를 사용하는 방법이 있다. 그러나 Config Aggregator에서는 Tag 별 검색 등 검색에 제한이 있어 이를 Athena에 연동하였다. 대부분 참조로 기재해둔 Document에 내용이 명시되어 있으며 별도로 추가한 부분은 Payer S3에 일괄저장하기, Stackset 사용, Lambda 코드 일부 수정 정도이다. 목차 1. Payer Account S3 생성 Payer Account에 S3를 생성한다. S3 Policy는 아래를 참조한다. (특정 Org에서 접근할 수 있도록 전체 권한 부여) 2. Linked Account Config 설정 각 Linked Account에 Co..

Cloud/AWS 2021.06.15

[리액트를 다루는 기술] 개념 정리1 - Element 부터 state까지

"지속적으로 데이터가 변화하는 대규모 애플리케이션 구축하기" 1. Element React 앱의 가장 작은 단위, 화면에 표시할 내용을 기술한다. 일반 객체이며(plain object) 쉽게 생성할 수 있다. React DOM은 React 엘리먼트와 일치하도록 DOM을 업데이트한다. const element = Hello, world; React 엘리먼트를 루트 DOM 노드에 렌더링하려면 둘 다 ReactDOM.render()로 전달하면 된다. const element = Hello, world; ReactDOM.render(element, document.getElementById('root')); React 엘리먼트는 사용자 정의 컴포넌트로도 나타낼 수 있습니다. function Welcome(pro..

Programming/react 2021.03.21

CKA 응시 후기 (2021/2/21)

1. google translator는 사용 불가 (chrom extension이라도 사용이 안된다고 한다.) 2. 다른 블로그 포스트의 말마따나 자동 완성은 굉장히 유용하다. 처음에 시작하면 kubernetes.io/docs/reference/kubectl/cheatsheet/를 참조해서 설정하도록 하자. 3. 난이도는 생각보다 어렵지 않았다. 다만, 중간에 etcdctl 사용하는 부분에서 지시문을 정확히 안 읽어서 애를 먹었다. 4. 그 외에 북마크를 사용하라는 가이드 등 여러 가이드를 보았는데, 사실 가장 좋은 건 좌측 상단에 있는 Search를 활용하는 것이다. 5. www.udemy.com/course/certified-kubernetes-administrator-with-practice-tes..

교육, 자격증 2021.02.21

Docker 자동으로 기동시키기

docker run --restart=unless-stopped (※ https://docs.docker.com/config/containers/start-containers-automatically/#use-a-restart-policy) 아래 내용 다 필요 없고, 도커 기동 시 위 URL 참조하여 restart policy 적용해주면 된다. 서버를 재기동시킬 때마다 Docker Compose를 수동으로 기동시키기 귀찮아서 service에 등록시켰다. 아래 내용은 이와 관련된 내용을 간단히 정리해보았다. 1. systemd systemd에 대해 간단히 내용을 정리하고 넘어가고자 한다. 위키백과에 따르면, systemd는 모든 프로세스들을 관리하는 init 시스템이라고 정의가 되어있다. systemd는 ..

Devops/Logging 2021.02.08