지속 가능한 속도(레벨 3 글쓰기 미션)
·
우테코/6기
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.애자일 프로세스들은 지속 가능한 개발을 장려한다. 스폰서, 개발자, 사용자는 일정한 속도를 계속 유지할 수 있어야 한다. 애자일을 주제로 테코톡을 준비하며 인상 깊었던 내용은 지속 가능한 속도(Sustainable Pace)에 대한 것이었다.단순히 애자일을 "기민함", "빠르게"라고 알고 있었기에 신선한 충격으로 다가왔다.매일 과업을 하며 과속을 내는 것이 단기적으로 보았을 땐 빨라 보일 수 있겠지만, 장기적으로 보았을 땐 오히려 생산성을 떨어뜨린다.이는 ..
[MySQL] INSERT IGNORE 는 데이터 중복 시 왜 새로운 데이터의 삽입을 막을까?
·
우테코/팀 프로젝트 - 투룻
동시성 문제(데드락) 해결기 - X 락인데 왜 공유가 가능하지?????? 동시성 문제(데드락) 해결기 - X 락인데 왜 공유가 가능하지??????이번 글에서는 팀 프로젝트에서 겪은 동시성 문제와 MySQL의 락을 사용하다가 경험한 데드락에 관해 이야기합니다. 특히 갭 락은 X 락이더라도 공유가 가능하므로 데드락이 발생할 수 있다는 사nakhonest.tistory.com 이전 글에서는 동시성 문제를 INSERT IGNORE를 사용해 해결한 경험을 공유했습니다. INSERT IGNORE 는 unique 인덱스가 설정된 상황에서 중복된 unique 키로 삽입을 시도할 경우, 에러를 발생시키지 않고 해당 삽입을 무시합니다. 하지만 매번 INSERT 쿼리를 실행하면 성능이 저하가 우려되어 이를 테스트를 하는 도..
동시성 문제(데드락) 해결기 - X 락인데 왜 공유가 가능하지??????
·
우테코/팀 프로젝트 - 투룻
이번 글에서는 팀 프로젝트에서 겪은 동시성 문제와 MySQL의 락을 사용하다가 경험한 데드락에 관해 이야기합니다. 특히 갭 락은 X 락이더라도 공유가 가능하므로 데드락이 발생할 수 있다는 사실을 강조합니다.이 과정에서 MySQL의 락 메커니즘을 깊이 있게 다룹니다. 그리고 이 문제를 락을 사용하지 않고 어떻게 해결했는지 공유합니다.이 글을 통해 MySQL의 락 메커니즘을 이해하고 락을 사용할 때 발생할 수 있는 데드락의 원인을 파악할 수 있습니다. MySQL의 락을 더욱 안전하게 활용하는 데 도움이 되기를 바랍니다. 문제 발생 상황팀에서 여행기 장소를 조회하고 저장하는 기능을 개발하던 중, 여러 사용자가 동시에 장소를 저장할 때 중복된 장소가 저장되는 문제를 겪었습니다.문제 설명 전 알아둘 프로젝트의 사..
들풀의 그늘(레벨 2 글쓰기 미션)
·
우테코/6기
들풀의 그늘선한 영향력을 끼치는 삶.돈이나 권력을 좇으며 자신만을 위해 살아가지 않고, 옆에 있는 이와 더불어 함께하는 삶.지금까지 그렇게 살아가고자 하는 어른들을 심심치 않게 볼 수 있었다. 멀리 내다볼 것 없이 부모님이 그렇게 살아가고 있으니 말이다.어렸을 때부터 부모님은 들풀처럼 살아가라고 말씀하셨다.다름에 대해 지적하고, 따가운 시선으로 실력을 평가하는 직사광선의 세상 속에서작은 새들이 쉬어갈 수 있는 그늘을 제공하라고 하셨다.크고 화려한 나무처럼 커다란 그늘은 아닐지라도,단 한명이라도 좋으니 누군가의 그늘이 되어주는 들풀처럼 살아가라고 하셨다.지금껏 그러한 그늘 아래에서 얼마나 많은 사랑을 받으며 자라왔는가. 힘들 때 위로가 되어주었던 선배들과 친구들이 얼마나 많았는가. 안락하고 평안한 그늘 아..
테스트하기 어려운 코드, 전략 패턴을 사용하는 것이 늘 좋은 것일까?
·
우테코/6기
우테코에 들어가자마자 첫번째로 구현하게 된 미션은 자동차 미션이었다. 프리코스 때에도 이미 한번 풀어보았던 미션이었다. https://nakhonest.tistory.com/entry/%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%95%98%EA%B8%B0-%EC%96%B4%EB%A0%A4%EC%9A%B4-%EC%BD%94%EB%93%9C-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%B4%EC%95%BC%ED%95%98%EC%A7%80%EB%9E%9C%EB%8D%A4%EC%97%90-%EB%8C%80%ED%95%9C-%ED%85%8C%EC%8A%A4%ED%8A%B8 테스트 하기 어려운 코드! 어떻게 해야하지?(랜덤에 대한 테스트) 프리코스 2주차 미션부터는 각 기능에 대한 테..
우테코 최종합격 회고(+ 2023 하반기 회고)
·
우테코/프리코스
너무 감사하게도 우테코에 최종 합격하게 되었다!! 여름 방학때부터 진심을 다해 준비해 왔고, 프리코스 기간동안 정말 깊게 몰입했던 만큼 합격을 하게 된 것이 너무나도 기쁘다 ㅠㅠ 정말 간절했던 만큼 본 과정에서 또 어떠한 성장이 있을지 너무나도 기대가 된다. 우테코 지원 계기 지난 회고 소프트 복수전공에 대한 지난 3학기 회고 첫 회고개발자가 되기 위해 공부를 시작한지 1년 반이나 지났는데 이제서야 첫 회고를 진행해 본다. 1년 반 동안 적은 글이 달랑 하나라니,, 앞으로는 삶을 돌아보는 시간도 더 가지고, 블로그에 nakhonest.tistory.com 나는 회고 글의 내용처럼 개발자가 되고 싶어 소프트웨어학부를 복수 전공하고 있는 대학생이다. 지난 2년 동안에는 들을 학점이 많다보니 학교 공부에만 매..
Java enum 활용기(enum에서의 다형성)
·
Java
이 글은 enum의 기본적인 문법에 대해서는 다루지 않습니다! 해당 내용은 인터넷이나 책에 너무나도 잘 소개되어 있기 때문에, 만약 enum에 대해 잘 모르신다면 한번 보고 오셔도 좋을 것 같습니다 :) 우테코 프리코스 중 로또 미션을 진행하면서 다음과 같은 요구 사항을 만날 수 있었다. 먼저 해당 요구 사항을 보고, 로또 당첨 결과를 enum으로 만들면 좋을 것 같다고 생각하였다. (실제로도 코드 리뷰를 하다보면 많은 분들이 이와 같이 구현하셨다.) 관련된 데이터들과 로직을 하나의 상수로 묶을 수 있기 때문에 많은 분들이 enum을 활용 하셨을 것이라 생각한다. 따라서 나도 다음과 같이 enum으로 로또 당첨 결과를 관리하였다. public enum WinningResult { FIRST(6, fals..
테스트 하기 어려운 코드! 어떻게 해야하지?(랜덤에 대한 테스트)
·
Software Engineering
프리코스 2주차 미션부터는 각 기능에 대한 테스트 코드를 작성해야 했다. 이에 따라 JUnit5와 AssertJ를 학습하고, TDD를 적용해보려 노력했다. 사실 이 라이브러리를 학습하고, 테스트 코드를 작성하는 것만해도 그리 쉬운일이 아니었다. 그래도 다른 분들의 야구게임 코드를 리뷰하면서 잘 작성하신 테스트 코드를 많이 보았기 때문에, 테스트 코드를 작성하는 방법 자체는 빠르게 학습할 수 있었다. (목객체 만들어서 테스트 코드도 작성하시던데 이건 아직 어떻게 하는건지 잘 모르겠다 ㅠㅠ) 하지만 정말정말 어려웠던 부분은 테스트 라이브러리 자체가 아니라, 랜덤에 대한 테스트였다. 자동차가 움직일지 결정하기 위해서는 랜덤으로 숫자를 선택해야 하는데, 이 랜덤 숫자에 대한 단위 테스트가 어려웠기 때문이다. 여..