Skip to content
This repository was archived by the owner on Mar 9, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
663811f
first commit
junho1124 Dec 16, 2024
c096aac
docs: 2024_12_16.md, git.md 파일 추가
junho1124 Dec 16, 2024
3164f50
Merge pull request #10 from junho1124/master
junsuk5 Dec 18, 2024
f47ef5c
docs: 2024_12_17.md, kotlin.md 파일 추가
junho1124 Dec 18, 2024
f108e69
fix: 2024_12_17.md 변수 관련 수정 사항 반영
junho1124 Dec 18, 2024
67da6aa
fix: 2024_12_17.md 엘비스 연산자 설명 추가
junho1124 Dec 18, 2024
e99b88b
feat: StringBuilder 사용 예시
junho1124 Dec 18, 2024
8c53ae6
Merge pull request #29 from junho1124/master
junsuk5 Dec 18, 2024
52700d7
feat: 인스턴스와 클래스
junho1124 Dec 18, 2024
49a8ab2
feat: hero test
junho1124 Dec 18, 2024
62e397d
feat: Solution Cleric - 1
junho1124 Dec 18, 2024
a70615d
feat: Solution Cleric - selfAid 추가
junho1124 Dec 18, 2024
c1a4bd6
feat: Solution Cleric - pray 추가
junho1124 Dec 18, 2024
e4a4d70
feat: Solution Cleric - test
junho1124 Dec 18, 2024
e6a2e03
feat: 2024_12_18.md 코틀린 강의 정리 추가
junho1124 Dec 18, 2024
e3aee70
feat: kotest를 이용한 test code 작성
junho1124 Dec 18, 2024
0297357
Merge pull request #32 from junho1124/master
junsuk5 Dec 19, 2024
10b4c1c
feat: heap에 저장되는 인스턴스와 stack에 저장되는 주소값의 관계 실습
junho1124 Dec 19, 2024
8cf3854
feat: Prayable.kt, SelfAidable.kt 추가
junho1124 Dec 19, 2024
08a51fc
fix: Prayable.kt, SelfAidable.kt 추가에 따른 테스트 코드 수정
junho1124 Dec 19, 2024
7ab200b
docs: 2024_12_19.md 레퍼런스 타입과 참조
junho1124 Dec 19, 2024
794cf5e
chore: 불필요한 타입 선언 제거
junho1124 Dec 19, 2024
a91cc46
Merge pull request #40 from junho1124/master
junsuk5 Dec 20, 2024
c37f1ab
feat: 연습문제 1-1
junho1124 Dec 23, 2024
0ee72f9
style: change directory
junho1124 Dec 23, 2024
81accf5
feat: 연습문제 1-2
junho1124 Dec 23, 2024
99a2e5a
feat: 연습문제 2-2
junho1124 Dec 23, 2024
3e5386a
feat: day06 강의
junho1124 Dec 24, 2024
178b3fd
feat: day06 강의
junho1124 Dec 24, 2024
7cccc53
feat: day06 강의
junho1124 Dec 24, 2024
2675a3e
docs: Game.puml 수정
junho1124 Dec 24, 2024
86f2a49
fix: SuperHero.kt 수정
junho1124 Dec 24, 2024
cdd4cf6
feat: day07 강의
junho1124 Dec 24, 2024
685870f
style: 디렉토리 구조 수정
junho1124 Dec 24, 2024
e23f9e5
feat: 연습문제 3
junho1124 Dec 24, 2024
f766716
feat: 연습문제 4
junho1124 Dec 24, 2024
dffdb5a
feat: 연습문제 5
junho1124 Dec 24, 2024
3331d9a
feat: 연습문제 1
junho1124 Dec 24, 2024
e0179c0
feat: 연습문제 1
junho1124 Dec 24, 2024
7ab6b56
feat: 연습문제 2
junho1124 Dec 24, 2024
fd502ae
feat: 연습문제 3 - Thing interface 작성
junho1124 Dec 24, 2024
5f8f315
feat: 연습문제 4
junho1124 Dec 24, 2024
8df9697
feat: day07 과제 테스트
junho1124 Dec 24, 2024
774f358
fix: Wizard.kt setter 오류 수정
junho1124 Dec 24, 2024
d486098
fix: Asset.puml 변수 네이밍 통일
junho1124 Dec 24, 2024
546c8f2
Merge pull request #75 from junho1124/master
junsuk5 Dec 26, 2024
4c68544
feat: 2024_12_26.md 작성
junho1124 Dec 30, 2024
8bbfe57
feat: 2024_12_26 수업 내용
junho1124 Dec 30, 2024
c5e6172
feat: StrongBox.kt 작성
junho1124 Dec 30, 2024
bc3d8b0
feat: 연습문제 2
junho1124 Dec 30, 2024
0bd1ecc
feat: 테스트 코드 추가
junho1124 Dec 30, 2024
3fcf448
feat: Word.kt 작성 및 테스트 코드 추가
junho1124 Dec 30, 2024
b3d3f91
docs: 2024_12_30.md 작성
junho1124 Dec 30, 2024
583b6de
Merge pull request #88 from junho1124/master
junsuk5 Dec 31, 2024
b2223a1
feat(day11): 예외 처리 코드 추가 및 테스트 (#master)
junho1124 Dec 31, 2024
2e01c80
feat(day11): 2024.12.27 문서 추가 (#master)
junho1124 Dec 31, 2024
cfc5192
feat(day11): FileExam.kt 파일 추가 및 파일 조작 기능 구현 (#master)
junho1124 Dec 31, 2024
23da109
feat(day11): Serialization.kt 파일 추가 및 User 데이터 직렬화 구현 (#master)
junho1124 Dec 31, 2024
3168ef4
fix(day11): Serialize User data using kotlinx.serialization (#master)
junho1124 Dec 31, 2024
4481a13
feat(day11): 파일 복사 기능 추가 (#master)
junho1124 Dec 31, 2024
566b677
feat(day11): 회사 파일 저장 기능 추가 (#master)
junho1124 Dec 31, 2024
0adaccf
feat(day11): 새로운 파일 ErrorExam.kt 추가 (#master)
junho1124 Dec 31, 2024
dc483da
feat(day11): 파일 조작과 데이터 형식에 관한 내용 추가 (#master)
junho1124 Dec 31, 2024
e1600f7
docs: 1.2 TIL
junho1124 Jan 2, 2025
a8c70a0
feat: 코틀린 파일 추가 및 수정
junho1124 Jan 3, 2025
c726505
feat(day13): 영화 정보를 JSON에서 가져오는 기능 추가 (student/07-최준호)
junho1124 Jan 3, 2025
1f5273f
feat(day13): Bird 클래스와 BirdTest 추가 (student/07-최준호)
junho1124 Jan 3, 2025
ad6ef3a
test: 새가 singShort 메서드를 4번 실행하도록 수정 (student/07-최준호)
junho1124 Jan 3, 2025
af02bc9
test: 새가 종일 노래 부르는 테스트 작성 (student/07-최준호)
junho1124 Jan 3, 2025
7067cd3
Merge pull request #118 from junho1124/student/07-최준호
junsuk5 Jan 3, 2025
d756beb
docs: 비동기 프로그래밍 내용 추가 (student/07-최준호)
junho1124 Jan 3, 2025
3f707da
feat(todo): HTTP repository interface, implementation, and tests 추가
junho1124 Jan 6, 2025
dd9a8ef
feat(todo): TodoHttpRepositoryImpl에 getTodos 메서드 구현
junho1124 Jan 6, 2025
75e0d19
refactor: 일부 코드 정리
junho1124 Jan 6, 2025
80daf0f
refactor: FuelHttpRepository를 TodoHttpRepository에 추가 및 TodoHttpReposi…
junho1124 Jan 6, 2025
5545690
refactor: Mapper를 사용하도록 변경 (student/07-최준호)
junho1124 Jan 6, 2025
a4444df
feat(user): 사용자 관련 클래스 및 인터페이스 추가 (student/07-최준호)
junho1124 Jan 6, 2025
721446c
feat(stock): 주식 데이터 관련 코드 작성
junho1124 Jan 6, 2025
fa28410
docs: 2025_01_06.md 추가
junho1124 Jan 6, 2025
3a42437
feat(stock): csv 라인을 ","로 분할하고 "null" 문자열을 null 값으로 매핑
junho1124 Jan 6, 2025
38c9ff1
Merge pull request #131 from junho1124/student/07-최준호
junsuk5 Jan 6, 2025
70ea1a3
fix(stock): StockLocalFileRepositoryImpl.kt에서 예외 처리 추가(student/07-최준호)
junho1124 Jan 7, 2025
cdbe87f
fix(user): UserHttpRepositoryImpl.kt에서 예외 처리 추가(student/07-최준호)
junho1124 Jan 7, 2025
352370d
feat(user): 사용자 관리 기능 개선
junho1124 Jan 7, 2025
5c79c4b
docs: 2025_01_07.md 추가 (student/07-최준호)
junho1124 Jan 7, 2025
38ea869
feat(day15): 댓글 모델 및 레포지토리 추가 (student/07-최준호)
junho1124 Jan 7, 2025
239f151
feat(comment): Assert 라이브러리 변경 (student/07-최준호)
junho1124 Jan 7, 2025
f3f1ee0
feat(photo): PhotoRepository, PhotoRepositoryImpl 추가
junho1124 Jan 7, 2025
1a6cd93
feat(todo): TodoRepository, TodoRepositoryImpl 추가
junho1124 Jan 7, 2025
c3d6240
feat(user): MockUserDataSourceImpl, UserRepository, UserRepositoryImp…
junho1124 Jan 7, 2025
7ec36ec
feat(user): MockAlbumDataSourceImpl, AlbumRepository, AlbumRepository…
junho1124 Jan 7, 2025
3d1481d
feat(repository): MockPostDataSourceImpl 추가(student/07-최준호)
junho1124 Jan 7, 2025
4297d1c
chore: update ktor version to 3.0.3 (student/07-최준호)
junho1124 Jan 8, 2025
28611ed
feat(use_case): GetPostTitlesWithCommentCountUseCaseTest 작성 (student/…
junho1124 Jan 8, 2025
6e990ee
feat: 영화 관련 데이터를 처리하기 위한 인터페이스 및 클래스를 추가합니다.
junho1124 Jan 8, 2025
e9bfc56
chore: 관련 파일들을 movie 패키지로 이동함.
junho1124 Jan 8, 2025
c456597
feat: 이미지 리포지토리 구현 클래스와 테스트를 추가.
junho1124 Jan 8, 2025
40c885f
feat: 저장 후 다운로드 정보 반환 메서드 추가.
junho1124 Jan 8, 2025
619fd1b
feat: 할일 데이터 저장 후 다운로드 정보 반환 메서드 추가.
junho1124 Jan 9, 2025
41c4a17
feat: 이미지 다운로드 정보 반환 메서드 추가.
junho1124 Jan 9, 2025
4a50c45
fix: fetchImage 및 saveImage 메서드에서 withContext(Dispatchers.IO)를 제거합니다.
junho1124 Jan 9, 2025
1628203
docs: 2025_01_08.md 추가
junho1124 Jan 9, 2025
84d6ed8
feat: Store 관련 코드 추가 및 수정
junho1124 Jan 9, 2025
082fd09
fix: StoreDataSourceImpl 클래스에 KtorClient 인터페이스 구현 추가
junho1124 Jan 9, 2025
44525f3
feat: ContentDto, Content, ContentMapper, ContentDataSource, ContentR…
junho1124 Jan 9, 2025
8db0e4a
docs: DTO 및 Mapper 관련 내용 추가.
junho1124 Jan 9, 2025
949ef04
feat: 새로운 사진 데이터 소스 및 리포지토리를 추가
junho1124 Jan 10, 2025
290a494
docs: 2025.01.10 문서 추가하여 Result 패턴에 대한 내용 정리함.
junho1124 Jan 10, 2025
5b6a164
feat: 유효성 검사 테스트 추가
junho1124 Jan 10, 2025
8f74e4a
feat: 관련된 모델과 리포지토리 추가 및 수정함.
junho1124 Jan 13, 2025
2043471
feat: 및 Ingredient 클래스와 관련된 파일들을 추가합니다.
junho1124 Jan 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### Kotlin ###
.kotlin

### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/

### Mac OS ###
.DS_Store
.idea
34 changes: 34 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
plugins {
kotlin("jvm") version "2.1.0"
kotlin("plugin.serialization") version "2.1.0"
}

group = "org.example"
version = "1.0-SNAPSHOT"
val ktor_version: String by project
val kotestVersion = "5.5.4"

repositories {
mavenCentral()
}

dependencies {
testImplementation(kotlin("test"))
testImplementation("junit:junit:4.13.1")
testImplementation("io.kotest:kotest-runner-junit5:$kotestVersion")
testImplementation("io.kotest:kotest-assertions-core:$kotestVersion")
testImplementation("io.kotest:kotest-property:$kotestVersion")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1")
implementation("com.github.kittinunf.fuel:fuel:3.0.0-alpha04")
implementation("io.ktor:ktor-client-core:$ktor_version")
implementation("io.ktor:ktor-client-cio:$ktor_version")
testImplementation("io.ktor:ktor-client-mock:$ktor_version")
}

tasks.test {
useJUnitPlatform()
}
kotlin {
jvmToolchain(17)
}
36 changes: 36 additions & 0 deletions docs/daily/2024_12_16.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@

# GIT
형상관리(버전관리) 도구

## Repository
- Remote Repository(원격 저장소)
- Local Repository(로컬 저장소)

![](https://lh7-rt.googleusercontent.com/slidesz/AGV_vUdDQanqhN0zoDTYqfqgQR8YeT1u6MJrMKlSKGDyDxh9iiz_nHc2JERkAQO0re4vQCKQkQTXiC6nYCRKoNPI8PZEZ2r8J385bPUGIV_3T6r5BaIfiyuJ85w-RSo6VchT-dVbf9rkzQVrdk3wU_lpYNJ8hQ=s2048?key=CnSYR3bHv9n7fmrGx7oyHQ)


## 필수 깃 명령어
- git init
- 현재위치에 저장소 만들기
- git status
- 현재 깃 상태를 확인
- git add [파일이름]
- 해당 파일을 스테이징 상태로 변경
- git add . 을 하면 현재 관리하지 않고 있는 파일들을 스테이징 상태로 변환
- git log
- 현재까지의 커밋 내용 확인
- git commit
- 현재까지의 변경 사항을 기록
- -m "커밋 메세지"
- git clone
- 원격 저장소의 내용을 복제하여 새 프로젝트 생성
- git pull
- 원격 저장소의 해당 브랜치의 맨 마지막 커밋의 코드를 로컬에 불러옴
- git push
- 지금까지 작성 된 commit들을 원격 저장소에 기록

## 브랜치란?
![](https://lh7-rt.googleusercontent.com/slidesz/AGV_vUcBXXX3P1ATDti-KdAWJch6zZcCcGlxVSA4rplgJ8cHENskrsW9Iz0XofY04XarzLedn-DefF9ndv70wLQgy_NNBTk_Ckny1gMr6hi29DD6p5eXwbKkNdeaSJABr9PAhZ6Fzv64tbvV1KfIhUqEdCsX=s2048?key=CnSYR3bHv9n7fmrGx7oyHQ)

## 참고
- [Git & GitBub 기초](https://docs.google.com/presentation/d/16W8Jw5TXYWhBtyEAEhLGSkqA5FEAch2IVcKPkZ9lZBQ/preview?usp=sharing)
203 changes: 203 additions & 0 deletions docs/daily/2024_12_17.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
# 2024.12.17

## 📚 오늘 배울 내용
- 코틀린 기본 문법
- 코틀린의 코드 컨벤션
- 코틀린의 기본 타입
- 코틀린의 변수 선언

## 코틀린 기본 문법

## 1. const 의 의미
- 값을 재할당할 수 없는 상수를 선언하는 키워드.
- 블록 스코프를 가지며 선언과 동시에 초기화가 필수.

## 2. 상수와 변수의 차이
- **상수**: 한 번 할당된 값을 변경할 수 없음. (`const` 사용)
- **변수**: 값을 자유롭게 변경 가능. (`val`, `var` 사용)

## 3. 코틀린의 코드 컨벤션

코틀린에서 가독성과 유지보수를 위해 정해진 스타일 가이드.

---

## 파일 구조
```kotlin
// 패키지 선언
package com.example.myapp

// 임포트 선언 (알파벳 순서)
import kotlin.math.PI
import kotlin.math.sqrt

// 파일 내용 순서: 변수/상수 → 함수 → 클래스/인터페이스
val constantValue = 42

fun exampleFunction() {
println("Hello, Kotlin!")
}

class ExampleClass {
val property = "Property"
}
```

---

## 네이밍 규칙
```kotlin
// 클래스/인터페이스 이름 (UpperCamelCase)
class UserProfile {}
interface DataSource {}

// 함수 이름 (lowerCamelCase)
fun fetchData(): List<String> { return listOf() }

// 변수/상수 이름
val userName = "John" // lowerCamelCase
const val MAX_USER_COUNT = 100 // UPPER_SNAKE_CASE
```

---

## 형식/들여쓰기
```kotlin
// 들여쓰기: 4칸 공백
if (isValid) {
println("Valid!")
}

// 괄호 스타일: 같은 줄에서 시작
if (x > 0) {
println("Positive")
}

// 라인 길이: 한 줄 최대 120자 제한
val message = "This is a very long string that exceeds the typical length of a line but should remain within 120 characters."
```

---

## 코드 스타일
```kotlin
// 함수 표현식
fun add(a: Int, b: Int) = a + b

// Nullable 타입
val name: String? = null
println(name?.length ?: "Name is null")

// 유형 추론
val number = 42 // Int로 추론됨

// 컬렉션 처리
val names = listOf("Alice", "Bob", "Charlie")
val filtered = names.filter { it.startsWith("A") }
```

---

## 주석
```kotlin
/**
* 사용자 정보 반환.
* @param userId 사용자 ID
* @return 사용자 프로필
*/
fun getUserProfile(userId: Int): UserProfile {}

// 라인 주석
// 데이터베이스 초기화
initDatabase()
```

---

## 클래스 및 함수 구조
```kotlin
// 클래스 선언
class User(val name: String) {
var age: Int = 0

init {
println("User initialized with name: $name")
}

fun printInfo() {
println("Name: $name, Age: $age")
}
}

// 생성자
class User(val name: String, val age: Int) {
constructor(name: String) : this(name, 0)
}

// 함수 선언
fun multiply(a: Int, b: Int): Int = a * b
```

---

## 컬렉션 사용
```kotlin
// 리스트
val immutableList = listOf(1, 2, 3)
val mutableList = mutableListOf(1, 2, 3)
mutableList.add(4)

// 맵
val immutableMap = mapOf("key1" to "value1")
val mutableMap = mutableMapOf("key1" to "value1")
mutableMap["key2"] = "value2"

// 필터 및 변환
val numbers = listOf(1, 2, 3, 4)
val evenNumbers = numbers.filter { it % 2 == 0 }
val doubled = numbers.map { it * 2 }
```

---

## 예외 처리
```kotlin
// try-catch
try {
val number = "abc".toInt()
} catch (e: NumberFormatException) {
println("Invalid number")
}

// throw
fun validate(age: Int) {
if (age < 0) throw IllegalArgumentException("Age cannot be negative")
}
```

---

## 기타 스타일 권장사항
```kotlin
// 확장 함수
fun String.isEmail(): Boolean = this.contains("@")

// 스마트 캐스트
fun printLength(obj: Any) {
if (obj is String) {
println(obj.length) // 자동으로 String으로 캐스팅됨
}
}

// 엘비스 연산자
// name이 null이면 0을 반환
val length = name?.length ?: 0
```


## 4. 코틀린의 기본 타입
- **숫자 타입**: Int, Long, Double, Float
- **문자 타입**: Char, String
- **불리언 타입**: Boolean
- **컬렉션 타입**: List, Set, Map
- **Nullable 지원**: 모든 타입은 `?`를 통해 Nullable 선언 가능.
Loading