전체 글 46

Effective Kotlin 3기 첫 회고

해당 글은 NextStep 이펙티브 코틀린 with TDD, Refactoring, Clean Code 3기를 진행하며 쓴 회고글입니다. Effective Kotlin을 신청한 계기 작년에 새로운 팀에 들어가서 가장 먼저 사용하게 된 것은 자바가 아닌 코틀린이였습니다. 코틀린을 사용한 이유는 바로 코드가 간결해지고 개발자의 편의에 초점을 맞춘 언어이기 때문이였다. 하지만, 아이러니하게도 팀에는 코틀린을 할 수 있는 사람이 없었던 상황인지라, 팀장님과 나는 맨땅의 헤딩을 했다. 이 맨땅의 헤딩 1년이지나 벌써 2021년 10월이 됐다. 1년이 지난 나의 코틀린 코드를 보면서 하나 의문을 품었다. 타 회사 분들과 스터디를 하게 되면 몇몇은 코틀린을 사용하고 있었고 코틀린을 사용하고 있었던 사람들과 코틀린 코..

Vue.js 스터디 3편(Vue Router란?) (Vue.js 프로젝트 일주일 전)

저번 포스팅에서는 Vue.js란 무엇인가에 대해서 써보았습니다. [Vue] - Vue.js 스터디 2편(Vue.js 란?) (Vue.js 프로젝트 일주일 전) 요번에는 Vue.js에서의 router에 대해서 알아보도록 하겠습니다. Routing SPA(SinglePageApplication)이 주목받기 전에는 페이지를 이동할 때마다 서버에서 이동해야 하는 페이지를 가지고 오도록 했습니다. 하지만, SPA는 초기에 애플리케이션을 로딩할 때 웹사이트 전체에 필요한 모든 웹 자원을 서버로부터 로딩하기 때문에, 서버에서 페이지를 가지고 오는 게 아닌, 클라이언트 메모리 상에서 화면을 갱신할 수 있게 하였습니다. 이것이 바로 Routing이라고 합니다. (Routing을 알아본 결과, Routing에는 종류가 h..

Vue 2021.08.04

동시 요청에 대해서는 Optimistic lock일까? Pessimistic Lock일까?

여러 유저에게 같은 데이터에 대해서 많은 요청이 들어왔을 때 일반적인 JPA사용에서는 일부 요청이 유실될 수도 있다고 합니다. 그런데, 이 일부 요청에 대해서는 항상 다 저장을 해야하는 상황도 오고 데이터를 수정시키지 않아야 할 경우도 있습니다. 저도 오늘 실무를 통해 경험을 했습니다. 오늘 실무를 통한 경험은 게시판에 있는 게시물의 조회 수 증가에 대한 예시가 될 것 같습니다. 게시판의 게시물을 동시다발적으로 누른다면, 조회 수는 모두 업데이트 해야 합니다. JPA의 일반적인 요청을 사용한다면, 일부 요청에 대해서 유실이 되어 조회 수가 업데이트가 안 될 수 있습니다. 하지만 모든 요청에 대해서 조회 수를 모두 업데이트 시켜줘야합니다. 이러한 문제를 해결하기 위해서는 JPA에서 낙관적 락(Optimis..

JPA 2021.07.29

Vue.js 스터디 2편(Vue.js 란?) (Vue.js 프로젝트 일주일 전)

저번 포스팅에서는 Vue.js로 주제 선정을 한 이유에 대해서 써보았습니다. [Vue] - Vue.js 스터디 1편(주제 선정) (Vue.js 프로젝트 일주일 전) 요번 글은 Vue.js 프로젝트 일주일 전 책의 첫 번째 챕터! 바로 Vue.js 란? 에 대한 정리입니다. 프론트 엔드에 대한 짧은 생태계. 프론트 엔드의 세계는 정말 알 수 없고, 항상 패셔너블하게 환경이 다이나믹하게 바뀝니다. 프론트 엔드 공부하기가 힘든 이유이기도 하지요. 대표적인 라이브러리 및 프레임 워크에는 React, Angular, Vue가 자리 잡고 있습니다. (servlet도 있지만, 아직 수면 위로 나타나지 않은 것 같습니다.) Vue.js란? 대표적인 라이브러리 및 프레임 워크에는 Vue.js가 들어가 있습니다. Vue...

Vue 2021.07.28

Vue.js 스터디 1편(주제 선정) (Vue.js 프로젝트 일주일 전)

요번 회사 스터디에서 어떤 스터디를 할까 고민을 하였는데, 고민 끝에 3가지로 정리되었습니다 Mysql, Docker, FunctionalProgramming에 대해서 스터디를 했지만, 너무 길어서 마지막에 힘들었다. 지금까지 DB, Infra, 프로그래밍 방법에 대해서 스터디 해왔다. 스터디 구성원은 프론트 둘, 백엔드 둘이다. 이걸 이제 하나로 정리해야할 필요가 있었습니다. 하나로 정리한 끝에! 요번에는 짧게! 그리고 프론트 공부를 하며! 요번에는 회사 프론트 담당하는 둘에게 이득이 되는 스터디를 해보자! 그래서 짧게 한번 하나의 프론트 공부를 하자라는 명목 하에 스터디 주제를 찾던 와중에 Vue.js 프로젝트 투입 일주일 전이라는 책의 출판 소식을 듣고, 요번에는 일주일 만에 스터디를 끝내 보자!라..

Vue 2021.07.28

Kotlin In Action 1. 코틀린의 철학

1장은 Kotlin이란 무엇이며, 왜 필요한가라는 주제를 가진 챕터이며, 이 챕터에서 가장 눈에 띄었던, Kotlin의 철학에 대해서 정리하고, 다음 시간부터는 Kotlin 기초에 대해서 정리하도록 하겠습니다. 요즘 프로그래밍 언어, 프레임워크를 공부하다 보면 왜 배워야 하는지, 어떤 목적으로 만들어졌는지에 대한 생각이 가장 많이 납니다. 코틀린도 아마 목적을 가지고 만들어졌을 거예요. Kotlin In Action에서 코틀린의 철학이라는 챕터 안에 그 목적을 적어놓은 것을 확인할 수 있었습니다. 실용성 간결성 안전성 상호운용성 실용성 1. 코틀린은 실제 문제를 해결하기 위해 만들어진 실용적인 언어다. 코틀린은 연구를 위한 언어가 아니기 때문에, 최신 프로그래밍에 앞서 채택하지 않고, 다른 프로그래밍 언..

Kotlin 2021.07.26

Continuous Integration & Continuous Deployment(CI/CD)

오늘은 CI(Continous Integration : 지속적인 통합) / CD(Continous Deployment : 지속적인 배포)에 대해서 글을 써보려고 합니다. 지금부터 CI(Continous Integration : 지속적인 통합) / CD(Continous Deployment : 지속적인 배포) 는 CI/CD CI(Continous Integration : 지속적인 통합) 은 CI CD(Contious Deployment : 지속적인 배포) 는 CD 로 말하도록 하겠습니다. CI/CD 가 무엇일까요? CI / CD란 배포하는 과정을 자동화해 시스템을 안정적으로 운영하는 데 쓰이는 개념입니다. 위 그림과 같이, CI는 개발자가 코드를 커밋을 했을 경우, 애플리케이션이 자동 빌드되며, 테스트를 ..

CICD 2021.07.17

TypeScript란?

https://www.typescriptlang.org/ Typed JavaScript at Any Scale. TypeScript extends JavaScript by adding types to the language. TypeScript speeds up your development experience by catching errors and providing fixes before you even run your code. www.typescriptlang.org 금일은 Typscript에 대해서 알아보려고 합니다. Typscript란 무엇일까요? 공식문서에서는 크게 3가지로 정의하고 있습니다. JavaScript And More 정적 타입(Static Type)을 정의하여 사용 가능한 Typ..

TypeScript 2021.06.09

SpringBoot LogBack 간단설정

오늘은 SpringBoot의 Application.yml을 이용하여 LogBack을 간단하게 남기는 방법에 대해 쓰도록 하겠습니다. SpringBoot를 이용하여, LogBack을 간단하게 구현하려면 아래와 같은 방식으로 구현을 하면 됩니다. logging: file : name : /users/myapp/log/test.log // 파일 경로 및 이름 level: root: INFO // 로그레벨 지정 logback: rollingpolicy: file-name-pattern: Log-%d{yyyy-MM-dd}.%i.log //로그에 대해서 날짜별로 나누기 위함. clean-history-on-start: true total-size-cap: 100MB // 로그 파일 사이즈 조정 max-history..

Spring 2021.06.07

SpringBoot Dynamic Log

오늘은 Actuator를 이용한 Dynamic Log에 대해서 알아보도록 하겠습니다. Actuator를 이용하여 SpringBoot Log 레벨을 설정한다면, 매우 다이내믹하게 사용이 가능합니다. curl -X "POST" "http://localhost:8080/actuator/loggers/ROOT" -H "Content-Type: application/json; charset=utf-8" -d $'{ "configuredLevel": "DEBUG" }' 이러한 주소 하나를 호출하는 것만으로 실행 중인 어플리케이션으로 Log Level을 변경해줄 수 있습니다. 해당 설정을 하기 위해서는 build.gadle 또는 pom.xml에 actuator를 빌드하셔야 사용 가능합니다. dependencies {..

Spring 2021.06.07