본문 바로가기

분류 전체보기

(104)
Git 에서 branch와 head를 저장하는 방법 사실 몰라도 되는데 개인적으로 좀 궁금해서 이번 포스팅을 남깁니다. 그냥 문득 이런생각이 들었다 'Git switch로 Head를 바꿀때마다 이 정보는 어떻게 관리되나?' (.git 은 평소에는 숨김파일 처리되어있다) 아래에 보면 HEAD 란 파일이 있다. 이걸 메모장으로 열어보자. ref는 당연히 reference의 약자일 것이고... 현재는 master브랜치에 head가 있다. 그럼 d.branch라는 브랜치로 이동을 해보면 해당 내용은 이렇게 바뀐다 이 HEAD란 파일에서 git 의 현재 head 위치를 알려주는 것이다. 그렇다면 .git 에 있는 refs 란 폴더도 이와 관련이 있을것 같은데.... 들어가보면 우리가 만든 branch들이 들어있고, 그 안에는 각자의 해쉬값이 들어있다. 사실 이거 ..
Git에서 제일 중요한 한가지 - Git의 작동 원리 내가 웹개발 강사면 첫 주에 무조건 Git부터 가르친다 농담이 아니라 진짜다 Git이 어려운 이유는, 이런걸 사용해본적이 거의 없기 때문이다. 갖은 고생을 다 해서 Remote에 연결해놓고도, commit이나 push를 할줄 몰라서 우왕좌왕하는 팀원들을 정말 많이 봤다 (사실 나도 그랬다) 근데...Git 공식 홈페이지 가면 https://git-scm.com/ 무시무시한 양의 커맨드가 나오는데.... 현업에 계신 분들도 자주 쓰는거 말고는 그냥 찾아보거나 안쓴다고(...) 나도 써본 커맨드가 10개? 정도밖에 안되는것 같다. 그런데 이 커맨드보다 더 중요한게 Git의 기본 원리이다 이것만 잘 이해해도 Git 의 핵심을 알게 되는것이니, 각종 오류메시지에 대응할수 있다. 그냥 강사나 인터넷에서 알려준대로..
This binding 과 화살표 함수 공시생 시절의 binding이란 이거였다. 아마 요즘도 노량진이나 신림동 인쇄하는곳 가면 스프링 바인딩 해달라고 하면 일반 책들을 저렇게 만들어줄 것이다. 딱 봐도 바인딩은 '뭔가를 연결하는 것' 이라는 느낌이 오지 않는가? 바인딩에 관한 자세한 정보는 아래 블로그를 참조하면 될 것 같다. https://velog.io/@proshy/JS-%EC%83%81%ED%99%A9%EC%97%90-%EB%94%B0%EB%A5%B8-this-%EB%B0%94%EC%9D%B8%EB%94%A9 최근 하고 있는 테스트코드 관련 학습에서 이 this 바인딩과 화살표 함수 관련한 적절한 예가 나와서 올려보고자 한다. tweetRouter 함수이다. (외부에서 tweetController를 받아온다) tweetControll..
Atomic commits / Commit 메시지는 현재? or 과거? 개념부터 슥 읽어보자 Atomic Commits 작업들을 그룹화하여 단일 작업으로 커밋한다. Atomic : 더 이상 줄일 수 없는 기본 단위로 큰 시스템을 구성하는 단일 요소 커밋은 단일 기능이나 단일 변화, 수정을 포함해야 한다(=각각의 커밋은 한 가지에 집중해야 한다) 각 커밋을 한 가지에 집중할 수 있도록 최대한 원자성을 유지하는 것이 중요하다 파일 하나가 아닌 작업하고 있는 하나의 기능, 하나의 작업을 의미한다. 여러 작업을 수정했을 경우 git add . 명령을 사용하면 단일 작업이 아닌 변경된 모든 사항이 스테이지에 올라간다. 단일 목적을 유지해야 하는 이유 한 커밋에 모든 변경사항들을 통합했을 경우 커밋을 롤백하면 엄청나게 많은 작업들을 취소해야 할 수도 있다. 하지만 커밋을 원자적으로 단..
반복문 중괄호 생략, 한줄에 코드 두줄(?)넣기 JS뿐만 아니라, 다른 언어에서도 반복문 {} 은 생략가능! 예를들면, for(let i = 0; i < array.length; i++) { console.log('hello world!') } 라는 간단한 for 반복문이 있다고 한다면, 그냥 for(let i = 0; i < array.length; i++) console.log('hello world!') 써버려도 상관 없다는 소리이다. 사실 이게... 논리적으로도 맞는 소리이다. 하지만 주의사항이 있는데, 이걸 누군가는 '오 깔끔하네' 라고 할수도 있고, 아니면 두줄로 나누는 대신 한줄이 길어지니 '그냥 줄을 내려버리자' 고 기존의 방법을 고수할 수도 있다. 현업에서는 이런것도 아마 코딩스타일에 따라 다를텐데, 사수의 스타일에 맞춰주도록 하자. ..
Mock 과 Stub 의 차이는? 미드건, 영화건, 미제 컨텐츠를 접해본 사람들은 이거 많이 들어봤을거다. Mocking me 라는건 나 놀리냐는 뜻이고, 좀 더 자세히 들어가보면 이 대화이다. A : 아 야 나 건들지마 기분 안좋아 B : (살짝 치며) 어쩌라구 응 나도 기분 안좋아~ A : 아 하지마 B : 해지뭬 해지뭴랴규~ 놀리는 사람을 따라하면서 놀리는... 그게 Mocking me 의 참 뜻이다. 테스트 코드에서의 Mocking이라는거는, DB나 API Response등을 검증할때, 자꾸 DB접근이나 트래픽을 발생시키기 보다는, 모조품을 만든다고 생각하면 된다. 반면 Stub이라는 방식도 있는데, 이 뜻은 나무 그루터기다. 미리 준비된 답변을 하드코딩으로 넣은다음, 테스트를 돌리는 방식이다. 그럼 Mock과 Stub의 차이는 ..
단위테스트 AAA 패턴, FIRST, Right - BICEP, CORRECT AAA 패턴 이는 테스트코드 작성시 다른사람도 이해할수 있게, 규격화되고 가독성을 향상시키는 패턴이다. AAA 대신 Given - When - Then으로 부르기도 했지만 지금은 AAA 패턴이라고 하는게 유행(?)인듯 싶다. Arrange(준비) : 테스트를 실행하기 전에 필요한 것들을 준비합니다. 예를 들어, 객체를 생성하거나, Mock 객체를 만들거나, 테스트 전에 호출되어야 할 API들을 호출하는 것들을 의미합니다 Act(실행): 테스트 코드를 실행합니다. Assert(단언) : 실행한 코드가 예상한대로 동작했는지 확인합니다. 과거에는 테스트 코드에 주석을 달았으나, 최근에는 해당 패턴을 지킨다면 굳이 달지 않아도 된다고 한다. 하지만 크고 복잡한 테스트의 경우는 주석이나, 하나의 테스트를 작게 만..
원티드 백엔드 프리온보딩 챌린지 (AWS) - 5 AWS SQS(Simple Queue Service) 아마존 AWS의 시작을 알린 서비스라고 한다 사실 '메시지 큐' 개념을 이번에 새로 배웠다. 출처 :https://velog.io/@holicme7/AWS-SQS-%EB%9E%80 [AWS] SQS 란? Amazon Simple Queue Service (Amazon SQS) 는 내구력 있고 가용성이 뛰어난 보안 호스팅 대기열을 제공하며 이를 통해 분산 소프트웨어 시스템과 구성 요소를 통합 및 분리할 수 있습니다. (https://docs.aws.amaz velog.io 쉽게 말하면, 서버(인스턴스) 또는 AWS 서비스 사이에 SQS를 도입해서 일을 비동기적으로 처리하게 하는, 일종의 메시징 서비스이다. 주로 은행권같이, 작업 순서가 지켜져야 하는 곳..