2024/12 12

[Git] Git과 Github는 뭘까?

나를 구원해줄 그 분은 바로 Git. 그리고 GitHub🫷 들어가기 전필자는 처음에 Git을 들었을 때 GitHub의 줄임말인 줄 알았다.ㅋ 이럴만큼 Git과 GitHub의 의미와 차이점을 모르고 있었다. 오늘 이 시간을 활용해서 Git과 GitHub에 대한 의미와 차이점을 내 방식대로 이해한 내용을 공유하기 위해서 글을 쓴다. (원래 이렇게 정리 글 써주면 머리 속에 오래 남거든)☘️ Git차이점을 설명하기 전에 기본이 되는 Git에 대해 알아보자. Git은 로컬 파일의 변경사항을 기록하고 관리하도록 돕는 버전 관리 시스템(VCS: Version Control System)이다. Git이 특별한 이유는 '브랜치' 때문이다. 사용자는 본인의 코드에 또 다른 독립적인 로컬 브랜치를 만들어 새로운 아이디어..

Git & Github 2024.12.10

[CS] 메모리(Memory)란?

🫷들어가기 전필자는 개발자가 꼭 알아야 할 메모리에 대해서알아볼 거다. 다른 블로그를 찾아보니까 개발자가 반드시 알아야 할 메모리 블로그가 있는 게 아니라 컴퓨터 쪽에 관련해서 심층까지 파고든 블로그가 있어서 "아, 이건 내가 개발자를 위한 블로그로 정리해봐야겠다."라고 생각해 포스팅해본다.🧩 메모리(Memory)란?우리는 한정적인 자원에서 효율적인 프로그램을 실행하려면 항상 생각하고 염려해둬야 한다. 그럼 메모리가 도대체 무엇이고 왜 그렇게 중요하게 생각할까? 메모리는 주기억장치를 의미하며 말 그대로 저장공간이다. 프로그램을 실행하기 위해서는 로드(load) 되어야 한다. 로드는 프로그램이나 데이터를 CPU가 바로 사용할 수 있도록 주기억장치로 옮기는 과정이다. 프로그램을 실행하기 전 데이터나 코드..

CS 2024.12.06

[Kotlin] 스코프 함수(Scope Function)

🫷들어가기 전필자는 이런 스코프 함수들이 많이 쓰인다는 건 알고 있었는데 생각해보니까 무엇을 의미하고 어떻게 사용하는지 모르겠었다. 그냥 이런 기능들이 존재하구나 정도로만 생각했었는데 막상 Kotlin을 배우다보니까 알고 있어야 두구두구 잘 사용할 것 같아 포스팅해본다.💁 스코프 함수란?스코프 함수는 특정 객체 내에서 특정 동작(프로퍼티 초기화, 활용 등)을 실행하기 위한 목적만 가진 함수이다.스코프 내에서는 객체의 이름을 통해 일일히 참조할 필요 없이 객체에 접근하고 핸들링할 수 있다. Kotlin에서 제공해주는 스코프 함수는 총 5가지로 apply, run, with, also, let이 있다. 하나하나 살펴보자. 1. apply인스턴스를 새로 생성하고 특정 변수에 할당하기 전 초기화 작업을 해줄..

Kotlin 2024.12.06

[Kotlin] Sealed Class란?

개요필자는 코딩하시는 각별님 유튜브를 보고 있는데 거기에 sealed class가 나와 궁금해 포스팅을 한다. 뭔가 알아야 할 것 같아서..Sealed Class란?sealed는 자기 자신이 추상 클래스이며 자신을 상속받는 여러 서브 클래스들을 가질 수 있다. 이는 enum 클래스와는 달리 상속을 지원하기 때문에 상속을 활용한 다양한 작업들을 할 수 있음을 의미한다. 또한 자신을 상속받는 서브 클래스의 종류를 제한할 수 있다.Sealed Class는 여러 가지 특징이 있다. Sealed Class 클래스의 서브 클래스들은 반드시 같은 파일 내에만 선언해야 한다. Sealed Class는 기본적으로 abstract 클래스이며 private 생성자만 갖게 된다. 상태가 바뀌지 않는 경우는 object 사용을..

Kotlin 2024.12.05

[Kotlin] 싱글톤 패턴(Singleton Pattern), @JvmStatic, Object Class

개요Kotlin에서는 자바의 static 키워드와 new 키워드가 없다고 들었다. 그런데 어떻게 static과 같은 기능을 구현할까? 라는 궁금증에 포스팅해본다.싱글톤 패턴이란?싱글톤 패턴은 어떤 클래스의 인스턴스가 오직 하나임을 보장하며 애플리케이션 시작부터 종료까지 고정된 메모리 영역을 가진다. 이로 인해 메모리를 효율적으로 사용할 수 있다. 하위 레이어들이 인스턴스를 참조하여 사용하는 방식이고 하나의 인스턴스만 필요할 때 사용한다. 자, 그럼 이런 싱글톤 패턴은 왜 사용할까? 정해진 메모리 영역을 사용하기 때문에 해당 객체에 접근할 때 메모리 낭비를 방지할 수 있다. 여러 메모리 영역에 똑같은 인스턴스가 생기는 것을 방지할 수 있으며 전역 인스턴스이기 때문에 공유(static)가 쉽다. 즉, 메모리..

Kotlin 2024.12.05

[Kotlin] 초기화(initialize), get() / set(), 열거형 클래스(Enum Class)

개요오늘은 Kotlin에서 초기화는 어떤 방식이 있는지 열거형 클래스는 무엇을 의미하는지 알아보자. (본 글은 자바를 알고 있다고 가정하고 글을 쓰기 때문에 조금 불친절할 수 있습니다.) 초기화(initialize)lateinitKotlin에서 초기화는 기본 초기화랑 늦은 초기화가 있다. 기본 초기화는 변수처럼 선언과 동시에 초깃값을 지정하는 것이고 늦은 초기화는 선언을 먼저 하고 나중에 초깃값을 지정해 주는 거다.lateinit 키워드를 사용할 때는 늦은 초기화이기 때문에 var 키워드도 같이 사용해야 한다.initialize 함수를 호출하면 늦은 초기화가 발생한다. 기본적으로 class는 프로퍼티를 선언할 때 선언과 동시에 초기화까지 해줘야 하는데 lateinit var 키워드를 사용하여 선언만하고..

Kotlin 2024.12.04

[Kotlin] 클래스(Class), 데이터 클래스(Data Class)

개요필자는 Kotlin에 Data Class라는 클래스가 존재한다는 걸 들어서 공부하려고 했더니 클래스(Class)에 대해서 포스팅한 적이 없어 오늘 클래스(Class)와 Data Class에 대해서 포스팅을 해볼까 한다.ClassClass는 객체 지향 프로그래밍에서 가장 기본이 되고 중요한 개념으로 반드시 알아야 할 내용이다.본 필자가 클래스(Class)와 객체(Object)를 처음 배웠을 때 비유 했었던 자동차를 비유 들어서 이해 먼저해보자. Class는 설계도, 객체(Object)는 클래스에 의해 만들어진 완성품이다.자동차라는 객체(Object)가 있다고 해보자. Class는 자동차에 들어갈 부품들이다. 자동차가 만들어지기 위해서는 여러 부품들이 들어가 있다. 이러한 부품들을 모아둔 곳을 클래스(C..

Kotlin 2024.12.04

[Kotlin] 객체 지향 프로그래밍(OOP)

개요필자는 자바에서 객체 지향 프로그래밍을 했지만 정확한 용도와 의미를 모르고 사용했었다. 이번 포스팅을 통해 객체 지향이라는 말이 정확히 무엇인지 알아보고 간단한 예제를 통해서 실습까지 해보는 시간을 가져보도록 하겠다.* 참고로 필자는 Java를 알고 있다고 가정하고 설명하기 때문에 조금 불친절할 수 있습니다.객체 지향 프로그래밍(OOP)이란?소프트웨어를 객체라는 독립적인 단위로 나누고, 이러한 객체들의 상호작용으로 소프트웨어를 구성하는 프로그래밍 패러다임이다.OOP의 중요 장점은 코드 재사용성 향상, 유지보수 향상, 코드 구성의 개념화, 코드의 가독성 향상이며 추상화, 캡슐화, 상속, 다형성이라는 아주 중요한 개념들이 있다. 그럼 객체 지향 프로그래밍 패러다임은 왜 만들어졌을까? 소프트웨어의 규모가 ..

Kotlin 2024.12.03

[Kotlin] 예외(Exception) 처리하기

개요필자는 자바에서 예외 처리를 할 때 try-catch문을 많이 사용했었다. Kotlin에서는 어떻게 예외 처리를 하는지 궁금해서 포스팅을 해본다. 프로그램을 실행할 때 내가 작성한 코드가 제대로 작동되지 않는 현상이 있다. 이 경우를 예외(Exception)라고 한다.우리는 이 예외를 잡기 위해서 예외 처리를 하는데 주로 사용하는 것이 try-catch문, throw문 등이 있다.try-catch자바와 마찬가지로 try-catch문이 제공되며 사용 방법은 똑같다.try { // 예외 발생 가능성이 있는 코드} catch (error: 예외 클래스) { // 예외 처리 코드} finally { // 무조건 실행할 코드}finally 구문은 무조건 사용하는 게 아니라 필요할 때만 사용한다..

Kotlin 2024.12.03