전체 글(170)
-
문자열 정규화 로직 개발
개요인턴십을 하고 있는 회사에선 문서 edit을 주력으로 하는 서비스를 개발하고 있다. 그에 맞게 문저를 여러 확장자로 변환하고, 나누는 등의 작업이 들어가는데, 여기서 간과되기가 쉬운 요소가 있어 이를 바로잡는 함수를 만들었다. 여러 데이터 소스에서 추출된 문자열들은 각각의 양식에 맞춰 다른 포맷으로 존재할 가능성이 굉장히 높다. 예를 들어 "a b"라는 문자열이 "a b"라는 문자열로 중간에 공백 문자등이 하나 더 들어갈 수 있다는 것이다. 우리는 인간이기에 의미단위로 생각해서 두 문자열을 같다고 인지하겠지만, 컴퓨터는 그렇지 못하다. 컴퓨터는 메모리에 적재된 원소단위로 판단하기에 두개의 문자열을 다르다고 해석할 것이다. 그렇기에 우리가 여러 데이터 소스에서 문자열 등을 추출하여 핸들링을 할 것..
2024.11.22 -
인턴 합격
한달인턴(인 척하는 두 달 인턴)에 합격했다. 그래서 블로그가 뜸했다. 회사랑 계속 소통하고, 숙식할 곳도 알아보고, 이사준비도 해야했으니까. 그래서 코틀린-스프링 튜토리얼 프로젝트는...기약이 없어져 버렸다! 와하하!여기 -위커밋-은 굉장히 젊은 회사다. 심지어 대표님도 젊고, 사원들은 나보다 어린거 같다.하지만 각각의 능력이 출중한거 같다. 확실히 프론트-백엔드 같은 구분보단, 기능에 맞춘 애자일함이 있다. 뭣보다 나는 아직도 기술에 대한 구애를 받지 않으려 하지만 곡선이 뚜렷한데, 한 개발자분은 이에대한 구애에서 완전히 자유로워 보였다. 밥벌어먹고 살려고 개발자 하는 나와는 다르게 개발오타쿠 같았다.저 남자...척추는 어느만큼 휘어있을까? 아무튼 요즘 상황은 그렇다. 큰 돈을 들여 서울로 상경해 ..
2024.11.06 -
springboot기초(4)-멤버를 추가해보자
가위바위보 결과를 저장하는 DB도 연결했고, 로직도 고도화를 했다. 하지만, 여러 사용자의 히스토리를 관리하고 싶다면? 그것을 실현하기 위해선 멤버를 추가해야 한다. 이번엔 멤버에 대한 밑바탕을 만들어 보자. 패키지 구조우선 패키지 구조를 재정립하자. 우리는 이제 멤버에 대한 서비스도 핸들링을 해야한다. 앞으로 추가될 기능들을 고려해서라도 다음과 같이 바꿔줘야 한다. domain이라는 상위 디렉토리가 생기고, 그 안에 member과 rps를 나누었다 이 다음은 우리가 기존에 해왔던 대로 객체를 만들어주면 된다. 구현 MemberController@RestController@RequestMapping("/member")class MemberController( private val memberSe..
2024.10.03 -
통합관리가 이점만을 가져올까?
이번에 이야기하고자 하는 주제는 개발 과정에서 관리 포인트를 줄이고 통합 관리를 통해 얻을 수 있는 이점이 과연 단순한 장점만으로 귀결될 수 있을까 하는 것이다. 따로 전문 서적을 읽은건 아니고, 평소 고민해온 생각들을 정리해보았다. 우선 통합관리의 장단점을 고민해 보자. 통합관리의 장점 = 통합 관리는 개발 스코프의 효율성을 증대시켜, 개발자가 본연의 작업인 개발 자체에 더 집중할 수 있게 한다. 이는 생산성을 높이고, 팀의 협업을 원활하게 하여 결과적으로 프로젝트의 완성도를 향상시키는데 기여하는 장점을 가져온다. 통합관리의 단점 = 하지만 무분별한 통합과 정리되지 않은 아키텍처는 오히려 개발 스코프를 늘리고, 장기적으로 기술 부채를 초래할 수 있다. 즉, 통합이 잘못되면 시스템의 복잡도가 증가하고, ..
2024.09.27 -
springboot기초(3)-스코어와 히스토리를 저장해보자
class RpsService { private var userScore: Int = 0 private var comScore: Int = 0현재 우리의 로직에서 스코어를 저장하는 방식은 멤버변수를 통하고 있다.그렇다면 프로그램을 종료해도 스코어를 유지하거나, 여러사람 각각의 스코어를 저장하는 기능을멤버변수로 구현하려면 어떻게 해야할까? 생각만 해도 골치가 아프다.그래서 DB를 써야한다. 이번 강의는 DB를 쓰기위한 초석을 다질 것이다. 의존성 추가kotlin("plugin.jpa") version "1.9.24"plugins에 위의 텍스트를 넣고dependencies에는 아래의 텍스트를 넣는다//h2implementation("com.h2database:h2")//jpaimplementat..
2024.09.26 -
springboot기초(2)-가위바위보를 고도화 해보자
이제 가위바위보 로직의 고도화와 스코어를 기록하려고 한다. 스코어를 기록하기 전에, 가위바위보 로직부터 바꿔놓자. 귀찮게 일일히 string으로 값을 주지 않고, enum으로 정규화된 선택지만을 넣을 것이다. 로직 고도화service에 enum class를 하나 생성해 준다. enum class RpsSelect(private val description:String) { SCISSORS("가위"), ROCK("바위"), PAPER("보"); fun getMessage(): String { return description } companion object { fun getRandom(): RpsSelect { return RpsSelect.entries.random() } } } 그리고 위와 같이 만들..
2024.09.24