[Kotlin] 코틀린 Null Safety
·
Language/Kotlin
[Kotlin] 코틀린 특징 및 개발환경 구성에서 코틀린의 장점 중 하나로 널 안정성(Null Safety)을 뽑았다. 본 글에서는 왜 코틀린 언어가 널 안정성(Null Safety)가 있는지 알아보고 널 안정성을 위한 방법을 알아본다. 코틀린에서 말하는 널 안정성은 NullPointerException(NPE)을 방지하고 안전한 코드 작성을 돕기 위한 것이다. 널 안정성은 코틀린의 타입 시스템에 통합되어 널 가능성(nullability)을 명시적으로 처리하도록 강제한다. 코틀린에서 타입을 지정하여 변수를 선언할 때는 널 가능성 타입과 널 불가능성 타입으로 지정하여 선언할 수 있다.널 가능성 타입(Nullable type): 변수에 null 값을 허용한다. 타입 뒤에 ?를 붙여 표시한다.널 불가능성 타입..
[Kotlin] 코틀린 자료형 / 변수 / 상수 / 연산자
·
Language/Kotlin
변수(var)와 상수(val, const)   코틀린 언어는 변수를 선언 할 때 선언 키워드를 기입해야 한다. 선언 키워드는 생략할 수 없으며, 키워드로는 val와 var이 있다.선언 키워드 val와 var의 차이는 아래와 같다.val (value) = Immutable = Final variable = 할당 후 변경 불가var (variable) = Mutable = Non-Final variable = 언제든 변경 가능변수 또는 상수를 사용하는 문법은 아래와 같다.더보기[선언 키워드] [변수이름]: [자료형] = [값] 변수변수(var)를 사용하는 예제는 아래와 같다.fun main() { var name = "jihwan" var age = 30 var weight = 71.5 ..
[Kotlin] 코틀린 시작하기
·
Language/Kotlin
main 함수 코틀린 언어는 자바와 동일하게 애플리케이션 진입점인 1개의 main 함수가 필요하다. 다음 아래 코드는 Hello World 를 출력 하는 코드이다.이전 자바 언어와 또 다른점은 코틀린은 코드 라인 끝에 세미콜론(;)을 붙이지 않아도 된다.fun main(){ print("Hello World")}  주석 코틀린 언어에서 주석은 자바와 동일하게 한줄 주석(//)과 다중 주석(/**/)을 지원한다. 한줄 주석 (//)과 다중 주석 (/**/)fun main(){ print("Hello World") // 이것은 한줄 주석 입니다. /* 이것은 다중 주석 입니다. */}//  표준 입/출력 표준 출력코틀린에서 표준 출력은 print() 와 println()으로 가능하다. print와 p..
[ETC] YAML 문법 정리
·
ETC/ETC
YAML사람이 읽기 쉬운 데이터 직렬화 형식주로 설정 파일과 데이터 저장에 사용됨.  개요 YAML은 데이터 직렬화 포맷(data serialization formats)이다.YAML은 원래 "Yet Another Markup Language"의 약어로 시작되었으나 YAML의 주된 목적이 단순 마크업(MarkUp)이 아닌 데이터를 직렬화하는 것이 강조되면서 "YAML Ain't Markup Language"라는 재귀적 약어로 변경되었다.확장자는 .yaml 을 사용한다.  문법  1. 들여쓰기(Indent)YAML에서 들여쓰기는 기본적으로 2칸 또는 4칸을 지원함. (space Indent)Space Indent 기준으로 2칸을 표준적으로 가장 많이 씀.# 2칸 인덴트metadata: name: pyth..
[Docker] Docker 맛보기 - Dockerfile/Docker-Compose (3)
·
System/Server
[Docker] Docker 맛보기 - 특징과 설치 (1)간단 설명 도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다. 1. 용어 container 격리된 공간에서 프로세스가 동작blog.greatpark.co.kr [Docker] Docker 맛보기 - 컨테이너 실행/중단 (2)Docker image pull 시스템 이미지 목록 $ docker image ls Official Image $ docker pull [image_name] # ex. rockylinux 8 pull $ docker pull rockylinux:8 User Image $ docker pull [user_name]/[repository_name]:..
[Docker] Docker 맛보기 - 컨테이너 실행/중단 (2)
·
System/Server
[Docker] Docker 맛보기 - 특징과 설치 (1)간단 설명 도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다. 1. 용어 container 격리된 공간에서 프로세스가 동작blog.greatpark.co.kr [Docker] Docker 맛보기 - 컨테이너 실행/중단 (2)Docker image pull 시스템 이미지 목록 $ docker image ls Official Image $ docker pull [image_name] # ex. rockylinux 8 pull $ docker pull rockylinux:8 User Image $ docker pull [user_name]/[repository_name]:..
[Server] Synology HDD 교체 (RAID1)
·
System/Server
본 게시글에서는 Synology NAS의 RAID1으로 구성된 HDD를 교체하는 과정에 대해 기술한다.필자는 약 2019년에 구매한 DS218 기종을 보유하고 있다.NAS 구매와 동시에 2TB 2개를 구매하였으며, 구성은 데이터를 통째로 날려먹은 악몽이 있어서 하나의 디스크를 미러링하는 개념의 RAID1으로 구성하였다. 용량을 좀 더 효율적으로 활용하는 방안도 있지만 우선은 데이터 안정성을 우선으로 고려하였다.당시 구매하였던 HDD가 현재까지 전혀 문제가 없지만 5년의 세월이 흘렀고 예방 차원에서 바꿔주기로 결심하였다. 새로 구매한 HDD는 SEAGATE BarraCuda 4TB 2개를 구매했다. 해당 품목이 NAS를 구성하기에 적합한 하드디스크는 아니지만 입출력이 많은 편도 아니기도 하고 RAID1으로..
[Linux] Rsync 유틸리티를 이용한 파일/디렉터리 동기화
·
System/Linux
Linux OS에서 파일 및 디렉터리를 동기화 하기 위한 유틸리티인 rsync(remote sync)에 대해 알아본다. ※ 본 게시글은 Rocky/Centos 기반으로 작성한다. 설치 $ yum install rsync # 대부분 리눅스 패키지에는 설치되어 있음. 특징 rsync 는 local-local, remote-local, local-remote 동기화를 지원한다. 주기적인 동기화를 원한다면 쉘 스크립트 작성 후 cron tab에 등록하여 주기적으로 실행 되도록 한다. remote와 동기화 할 때 패스워드를 생략하고 싶다면 원격 서버에 미리 SSH Key를 전달한다. SSH Key 생성 및 전송 1. SSH Key 생성 $ ssh-keygen -t rsa 2. 원격 서버에 공개 키 전송 $ ssh..
[CI/CD] Jenkins Build 결과 발송 [Slack]
·
ETC/ETC
Jenkins와 Slack을 연동하여 빌드 결과를 Slack 채널에서 알림 받는 방법에 대해 기술한다. 채널 추가(기존 존재하는 채널이 있다면 생략) Jenkins CI App 설치 및 Setting Slack App에서 Jenkins CI 를 추가한다. 채널에 포스트 항목에서 알림을 받고자하는 채널을 선택한다. Jenkins CI 통합 앱 추가 후 설정 지침의 3단계에서 팀 하위 도메인과 통합 토큰 자격 증명ID 메모한다. 통합 설정에서 아래 항목을 메모한다. 채널에 포스트: 알림을 받기로 한 채널. 토큰: Credential 생성에 사용할 토큰 정보(갱신 가능) 설명 라벨: Slack 앱의 설명 라벨 이름 사용자 지정: Slack 채널에서 알림에 표시될 이름 아이콘 사용자 지정: 알림 아이콘 사용자 ..
[CI/CD] Jenkins Build 결과 발송 [Email]
·
ETC/ETC
본 게시글에서는 Jenkins에서 Build 후 결과를 Email 로 발송하는 방법에 대해 기술한다. Plugin 설치 및 Setting Dashboard - Jenkins 관리 - Plugins에서 “Email Extension”을 검색하여 설치한다. 플러그인 설치 후 Dashboard - Jenkins 관리 - System으로 이동하여 페이지 스크롤을 내려 “Extended E-mail Notification” 항목을 찾는다. 각 필드에 대해 주요 설정에 대한 설명은 아래와 같다. SMTP server: 메일을 발송하기 위한 발송서버의 주소를 기입한다. SMTP Port: 메일 서버의 SMTP 포트 넘버를 기입한다. Default Recipients: 빌드 결과를 수신할 기본 수신자를 입력한다. 다중..