본문 바로가기

분류 전체보기74

[Monkey] 인터프리터를 만들어 보자! 프로젝트 1주 진행 방식 - 책을 참고하며 코딩을 하는 클론코딩 방식으로 프로젝트를 진행해 보았다. + 과정에서 Go 언어를 놓은지 꽤 됐었기 때문에 Go 문법을 이해하지 못한 부분은 이전에 공부하는데 도움을 받았던 Discovery Go 라는 서적을 보며 다시금 익혔다. - TDD 방법론을 통해 진행된다. - 이전에 스스로 약속했듯이 하루에 한시간 정도 투자하고 있다. - 깃허브를 통해 코드 관리를 한다. - GoLand IDE를 사용해 코딩을 하고있다. 돈을써야 공부를 한다 ^^ 공부 내용 정리 프로그래밍 과정에서 소스코드를 작성하면 이는 사람만이 알아볼 수 있는 텍스트 뭉치일 뿐이다. 인터프리터는 이 소스코드를 컴퓨터가 이해할 수 있도록 분해하고 조합하는데 도움을 주는 프로그램이다. 처음으로 인터프리터를 제작하.. 2024. 3. 6.
새로운 프로젝트 시작 공부를 너무도 안했다. 대충 살긴 했지만 게으르게 살진 않았다고 말하고 싶다. 2022년 11월 입사를 하고 피아노와 클라이밍을 배우기 시작했고 이후엔 수영, 크로스핏, 그리고 지금은 축구를 배우고 있다. 직업을 갖고 나서 계속 하고 있는것은 피아노 뿐이지만 항상 생각하듯 쓸모없는 경험은 없다. 이 모든 것이 내 삶의 거름이 돼 줄 것이라 생각한다. 지금에서야(누군가는 이미 늦었다고 말할 수도 있을 것 같다) 내가 프로젝트를 해보려 하는 이유는 여전히 개발에 대한 욕심이 있기 때문이다. 하지만 관성으로 대충 살아가는 그런 사람인 나에게 있어서 1년 넘게 하지 않았던 행동을 습관화 하는것은 쉬운일이 아니다. 그렇기에 관심이 있는것 부터 진행해 보려한다. 아직 회사일도 완벽하게 해낸다 말할 순 없지만.. .. 2024. 2. 27.
[서평] 오만과 편견 - 제인 오스틴 읽게 된 이유 많은 고전 중 왜 오만과 편견이었냐면 큰 이유는 없다. 드라마를 잘 보는 편이 아닌 내가 가장 최근 본 드라마는 '그해 우리는'이다. 다미누님이 이쁘셔서. 그중 6화의 부제목이 오만과 편견이었다. 이렇게 무의식 중에 오만과 편견이라는 소설이 흘러 들어왔고 언젠가부터는 읽고 싶다는 생각이 생기기 시작했던 것 같다. 오만과 편견은 처음 시도하는 고전이다. 고전에 대한 환상과 읽고 싶다는 생각은 항상 가지고 있었지만 '아무래도 어렵지 않을까..?' '사람들이 명작이라 하는 이유가 있지 않을까??' 라는 생각을 가졌었다. (보통 높은 평가를 받은 소위 명작 영화를 생각해 보았을 때 이해하기 난해한 경우가 많았는데 고전이기까지 ㄷㄷ.) 그리 짧은 소설도 아니었기에 시작하기 굉장히 겁이 났다. 하지만.. 2023. 3. 6.
[DB] 트랜잭션 데이터를 저장하기 위해선 DB, File 저장, 등 많은 방법이 존재한다. 이 중에서 가장 많이 사용되는 것이 DB인데 그 큰 이유 중 하나가 트랜잭션이다. 트랜잭션이란? 보통 하나의 비지니스 로직은 하나의 데이터만을 다루는 경우는 적다. 1,2,3 이라는 데이터의 수정이 필요할 때 1과 2는 제대로 수정 됐지만 3이 어떠한 이유로 수정이 되지 않았다면 서비스는 큰 혼란을 맞이할 것이다.. 특히 결제와 같은 시스템은 서비스의 존망이 걸린 문제가 생기지 않을까? 이러한 이유로 1,2,3을 하나의 트랜잭션으로 묶어 관리하게 되는데 만일 과정 중 하나의 문제라도 생긴다면 트랜잭션이 일어나기 이전의 기존 상태로 되돌리게 된다(Roll Back). 반대로 모든 과정이 옳게 동작한다면 DB의 데이터 값을 수정하게 .. 2022. 10. 4.
[Server] 커넥션 풀 커넥션풀이 필요한 이유 WAS는 사용자의 요청에 DB에서 필요한 데이터를 얻게된다. 이 과정에서 DB에 대한 커넥션을 연결해야 하는데 이는 시간이 오래걸리는 무거운 작업이다. 그렇기 때문에 이 커넥션 풀을 사용하게 된다. DB가 커넥션을 얻는 과정 애플리케이션 로직은 DB 드라이버를 통해 커넥션 조회 DB 서버와 TCP/IP 연결(3way handshake) DB에 ID/PWD 전달 인증 후 DB 세션 생성 커넥션 객체 반환 풀 이란? 객체를 보관하는 장소. 한번 생성된 객체 인스턴스를 필요할 때 꺼내 쓰고 사용 후 반환하는 기술. 장점 미리 생성해 놓은 커넥션을 재활용 하기에 복잡한 커넥션을 얻는 과정을 애플리케이션이 시작할 당시에 한번만 수행하면 된다 DB에 무한정 연결이 생성되는 것을 막아주어 DB.. 2022. 10. 4.
[Spring Tip] 엔티티 설계시 주의점 Setter Setter가 열려있다면 프로젝트 사이즈가 커진 뒤 유지보수가 굉장히 어렵다. 모든 연관관계는 지연로딩으로 설정!!! (중요) 즉시 로딩(EAGER)을 사용한다면 연관된 모든 테이블을 로딩해야한다. 따라서 지연 로딩(LAZY)로 설정하고 사용해야 한다. 만약 연관된 엔티티를 함께 조회해야 한다면, fetch join 또는 엔티티 그래프를 사용한다.(n+1문제?) ! ManyToOne은 default가 EAGER, OneToMany는 LAZY. 따라서 ManyToOne은 LAZY로 fetch 값을 변경이 필수적이다. 초기화와 동시에 메모리 할당을 하는것이 'null' 문제에서 안전하다. best practice. 테이블 네이밍 전략 주로 언더바 전략을 사용하고 스프링에서 카멜케이스와 .을 _로.. 2022. 10. 3.