본문 바로가기

공부 자료

(281)
[Docker] Dockerfile Docker의 지침문서, Dockerfile  도커는 Dockerfile의 지침을 읽어 자동으로 이미지를 빌드하는데,Dockerfile은 이미지를 조합하기 위해 명령줄에서 호출할 수 있는 모든 명령이 포함된 텍스트 문서를 의미한다.그럼 Dockerfile이 지원하는 지침들 즉, 어떤 명령어들이 있는지 아래에서 살펴보고자 한다. * Docker의 공식문서를 참고해 정리했기 때문에 아래 링크를 통해 확인해도 무방합니다.   [ Dockerfile 지침 ]  ADD : 로컬 또는 원격 파일과 디렉터리를 추가 ARG : 빌드 시간 변수를 사용 CMD : 기본 명령을 지정, (컨테이너 생성 시) 실행할 명령어CMD ["httpd-foreground"]- 도커에게 이미지가 내부 컨테이너에서 실행되었을 때 어떤 명령..
[Docker] Docker CLI 기본 명령어 Docker CLI 기본 명령어 정리  [ 옵션 ] --config : 클라이언트 구성 파일의 위치 ( /root/.docker ) -c, --context : 데몬에 연결하는데 사용할 컨텍스트 이름 -D, --debug : 디버그 모드 활성화 -H, --host : 연결할 데몬 소켓 -l, --long-level : 로깅 수준 설정(debug, info, warn, error, fatal) -tls : TSL를 사용하세요, --tlsverify에 의해 암시됨 --tlscacert : 이 CA 에서만 서명된 신뢰 인증서 ( /root/.docker/ca.pem ) --tlscert : TLS 인증서 파일 경로 ( /root/.docker/cert.pem ) --tlskey : TLS 키 파일 경로 ( /..
[Docker] 컨테이너 기반 가상화 도구, 도커(Docker) 도커를 왜 사용할까?Docker란?컨테이너 기반 가상화 도구애플리케이션을 컨테이너라는 느슨하게 격리된 환경에서 패키징하고 실행하는 기능애플리케이션을 인프라에서 분리해 소프트웨어를 신속하게 제공다양한 운영체제에서 사용할 수 있으며, 컨테이너화 된 애플리케이션을 쉽게 빌드 / 배포 / 관리 가능코드 작성과 프로덕션 환경 실행 사이의 지연 시간 절약 가능컨테이너를 제어할 수 있기 때문에 물리 머신을 놓지 않아도 컨테이너를 통해 다양한 물리 자원을 할당하고 실행하고 멈출 수 있으므로, 빠르게 배포하고 인프라 코드를 관리하는 것 처럼 할 수 있음 컨테이너란?가상화 기술 중 하나애플리케이션의 각 구성 요소에 의해 격리된 프로세스호스트 운영체제에 설치된 종속성에 의존하지 않으며, 격리되어 실행하기 때문에 호스트 및 ..
[Atomic 46] 컬렉션에 대한 연산 객체 컬렉션에 대한 연산을 한꺼번에 수행할 수 있는 능력 이전 아톰들에서 map(), filter(), any(), forEach() 등 다양한 함수들을 보았는데, 오늘의 아톰에서는 List와 그 외의 컬렉션에서 사용할 수 있는 다른 연산을 학습할 예정이다. 어떤 연산들이 있는지 알아보자. [ List 만들기 ] import atomictest.eq fun main() { // 람다는 인자로 추가할 원소의 인덱스를 받는다 val listl = List(10) { it } listl eq "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" // 한 값으로만 이뤄진 리스트 val list2 = List(10) { 0 } list? eq "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]" // ..
[Atomic 45] 람다의 중요성 프로그래밍에 중요한 능력을 부여해주는 람다 람다는 문법 설탕처럼 보일 수 있는데, 사실상 중요한 능력을 부여해 준다고 한다. 람다가 어떤 능력을 부여해 주는지 이번 아톰에서 학습할 예정이다. [ filter() ] filter() 함수 : 표준 라이브러리 함수 : 보존하고 싶은 원소를 선택하는 술어를 인자로 받아 술어를 람다로 지정 : 컬렉션에서 원소를 선택하는 코드를 작성하면 직접 처리해야 하는 이터레이션을 처리해줌 import atomictest.eq // 2의 배수 출력 fun filterEven(nums: List): List { val result = mutableListOf() for (i in nums) { if (i % 2 = 0) { result += i } } return result ..
[Atomic 44] 람다 이해하기 쉬운 간결한 코드 작성을 위한 람다 오늘은 람다에 대한 학습을 다루는 아톰이다. 람다는 자바에서도 잠깐 다뤄보기는 했지만 많이 사용하지는 않았었는데, 코틀린에서는 어떻게 쓰이는지 알아보자 [ 람다 ] 람다 : 부가적인 장식이 덜 들어간 함수로, 함수 리터럴이라고 불리기도 함 : 이름이 없고, 함수 생성에 필요한 최소한의 코드만 필요 : 다른 코드에 람다를 직접 삽입할 수 있음 : 중괄호({}) 사이에 작성하며, 파라미터 목록과 함수 본문 사이에 -> 가 들어감 : 타입 추론도 가능 : 람다에 파라미터가 없는 경우가 존재하며, 이 경우 화살표를 남겨두는 것이 아닌 화살표 사용을 하지 않는 것을 권장 import atomictest.eq fun main(){ val list = listOf(1, 2..
[Atomic 43] break와 continue 루프 안에서 점프 가능한 break와 continue  오늘의 아톰은 break와 continue로 자바에서 학습했을 때 반복 루프에서 많이 사용했다.코틀린에서는 과연 어떻게 쓰이고 어떻게 다른지 알아보자 [ break & continue ] : 코틀린에서 break와 continue를 사용해 제한적인 점프를 제공: for / while / do-while 루프 요소 안에서만 사용 가능: break는 루프의 끝으로만, continue는 루프의 시작 위치로만 점프 가능: 실전에서는 자주 사용하지 않음: 루프 전체나 루프 본문을 별도의 함수로 추출하면 break나 continue를 리턴으로 대체 가능 (따라서 많이 사용하지 않음)  [ for 루프 ]import atomictest.eqfun main() {..
[Atomic 42] 확장 프로퍼티 확장 함수 정의처럼 확장 프로퍼티도 정의할 수 있다? 확장 함수를 정의했던 것처럼 확장 프로퍼티의 수신 객체 타입을 지정하는 것도 가능한데, 이는 확장 함수를 정의하는 방법과 비슷하다. 오늘은 확장 프로퍼티를 정의하는 방법에 대해 학습하는 아톰이다. [ 확장 프로퍼티 ] 확장 프로퍼티 : 확장 대상 타입을 함수나 프로퍼티 이름 바로 앞에 작성 : 커스텀 게터가 필요하며, 프로퍼티에 접근할 때마다 프로퍼티 값이 계산됨 : 파라미터가 없는 확장 함수는 항상 확장 프로퍼티로 변환이 가능하지만 변환 이전에 생각하는 것을 권장 : 기능이 단순하고 가독성을 향상시키는 경우에만 프로퍼티를 권장 fun ReceiverType.extensionFunction() { ... } val ReceiverType.extensi..