Skip to content

Instantly share code, notes, and snippets.

View singun's full-sized avatar
🎯
Focusing

Daewook Shin singun

🎯
Focusing
  • Coupang
  • Seoul, Republic of Korea
View GitHub Profile
@ExtendWith(MockitoExtension.class)
class OwnerControllerTest {
@InjectMocks
OwnerController ownerController;
MockMvc mockMvc;
@BeforeEach
void setUp() {
@singun
singun / HearingInterpreter.java
Last active April 16, 2019 23:09
Spring framework testing context
@Service
public class HearingInterpreter {
private final WordProducer wordProducer;
HearingInterpreter(WordProducer wordProducer) {
this.wordProducer = wordProducer;
}
public String whatIHeard() {
@singun
singun / 1-throw.java
Created April 8, 2019 23:17
throw exception
@Test
void testDoThrow() {
doThrow(new RuntimeException("throw")).when(visitRepository).delete(any(Visit.class));
assertThrows(RuntimeException.class, () -> service.delete(new Visit(1l)));
verify(visitRepository).delete(any(Visit.class));
}
public String processFindForm(Owner owner, BindingResult result, Model model){
// allow parameterless GET request for /owners to return all records
if (owner.getLastName() == null) {
owner.setLastName(""); // empty string signifies broadest possible search
}
// find owners by last name
List<Owner> results = ownerService.findAllByLastNameLike("%"+ owner.getLastName() + "%");
if (results.isEmpty()) {
@singun
singun / urlshortener-capture
Created May 23, 2018 17:57
url shortener capture images
images
댓글로 이미지를 달아서 사용
@singun
singun / norm-denorm.md
Created April 4, 2016 15:42
데이터베이스 정규화 비정규화 요약

정규화 vs 비정규화

정규화

관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다. 데이터베이스 정규화의 목표는 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것에 있다. 일반적으로 정규화란 크고, 제대로 조직되지 않은 테이블들과 관계들을 작고 잘 조직된 테이블과 관계들로 나누는 것을 포함한다. 정규화의 목적은 하나의 테이블에서의 데이터의 삽입, 삭제, 변경이 정의된 관계들로 인하여 데이터베이스의 나머지 부분들로 전파되게 하는 것이다.

비정규화

정규화는 되도록 중복된 데이터를 제거해서 성능 향상에 도움을 주것을 목표로 하고 있다. 그러나 과도한 정규화로 인해서 테이블의 수가 증가하게 되면, 다수의 JOIN이 발생함에 따라서 성능 저하가 발생할 수 있다. 보통의 경우 정규화 과정을 모두 거친 다음 마지막 단계에서 비정규화를 실시한다. 단, 테이블을 합치는 것만이 비정규화는 아니다.

  • 그룹에 대한 합계와 같은 값을 미리 계산하여 테이블에 저장해 둔다. (얍 플레이스를 예로 들면, 사용자가 좋아요를 하거나 리뷰를 남기면 통계 관련 작업을 해주는데, 통계 테이블을 생성하여 관리하는 것 또한 비정규화라고 해석할 수 있다.)
  • 하나의 테이블에서 자주 사용되는 행(레코드)와 그렇지 않은 행들을 분리하여 두 개의 테이블로 나눈다. (이런 경우에는 UNION으로 다시 연결시킨다.)
  • 다른 테이블에 의존적이지만 자주 JOIN하여 사용하는 컬럼을 중복하여 테이블 안에 하나 더 생성한다.
@singun
singun / google-guide.md
Last active October 6, 2020 08:35
구글러가 전하는 IT 취업 가이드

구글러가 전하는 IT 취업 가이드라는 책이 있는데, 거기서 일단 제가 필요한 부분만 따로 볼라고 정리한 문서예요. 밑에 답변 같은 부분은 책에 나와있는 사례 그대로 타이핑 한거예요. 참고용으로 보시면 될 것 같아요.

회사가 원하는 사람

회사는 단순히 똑똑한 지적 능력보다 더 많은 것을 지원자에게 원한다. 기본적으로 아래와 같은 사람을 원한다

  • 무엇인가 성취한 사람
  • 동료들에게 동기를 부여하는 사람
  • 높은 목표를 정하고 달성하는 사람
  • 윤리적으로 행동하고 정직한 사람

IT 회사들은 혁신적인 문화에 자부심을 가지고 있으며 이런 문화에 잘 적응할 수 있는 사람을 원한다. 따라서 자신이 왜 여기 있는지 설명해야 하고, IT 회사의 파격적이고 혁신적인 생활 방식을 즐기는 사람이기 떄문에 회사에 잘 적응 할 수 있다는 것을 증명해야 한다.