분류 전체보기 68

Git Rebase vs. Merge

코드를 합칠 때 Rebase와 Merge중 어떤 것을 사용해야 할까? 개인적으로는 Merge를 선호하는 편이지만, 일을 하다보면 Rebase를 선호하는 사람을 만날 때도 있다. 두가지 기능을 다 지원하는 것을 볼 때 어떤 한가지를 꼽아서 뭐가 더 낫다거나, 권장하는 것 같지는 않았는데, 공식 문서를 보게 되어 해당 내용을 적당히 의역하여 기록해 둔다. https://git-scm.com/book/en/v2/Git-Branching-Rebasing Rebase vs. Merge 이제 당신은 Rebase와 Merge 중 어떤 것이 더 나은지 궁금해졌을 것이다. 이 내용을 논의하기 전에 히스토리란 무엇인가에 대하여 다시 한번 돌아보자. 첫 번째 관점은 repository에 남은 커밋 히스토리는 곧 실제로 무슨..

개발 2022.03.15

형상관리와 버전관리

형상관리 소프트웨어는 한번 만들어졌다고 해서 그걸로 끝나는 것이 아니다. 환경의 변화나 기술의 변화에 따라 지속적으로 변경이 이루어지기 때문이다. 그렇지만 새로 적용한 방식, 변화가 완벽하기만 한 것은 아닐 것이다. 따라서 특정 소프트웨어가 변화해 온 과정, 이력을 관리하는 것이 필요하다. 형상관리란 이런 소프트웨어의 변경사항을 체계적으로 관리하는 것을 의미한다. 버전관리 버전관리는 동일한 정보에 대한 여러 버전을 관리하는 것이다. 소프트웨어공학에서는 일반적으로 소스 코드만을 관리하는 것을 버전관리라고 정의한다. 이보다 더 세밀한 개념으로 변경관리가 있는데, 변경관리는 '소스코드'의 변경사항을 관리하는 것이고 버전관리는 이러한 변경사항을 '버전'이라는 개념을 통해 관리한다는 점에서 그 차이가 있다. 형상..

개발 2022.03.15

PCDATA와 CDATA

PCDATA (Parsed Character DATA) XML 파서가 해석하는 문자 데이터로, 문자열에 엔티티 참조가 있다면 엔티티 참조에 해당하는 값으로 치환하여 출력한다. 엔티티 참조란? 엔티티 엔티티 참조 의미 lt (보다 큼) amp & &(앰퍼샌드) apos ' '(아포스트로피 또는 작은따옴표) quot " "(큰따옴표) 만약 URL v-som.tistory.com/manage/newpost/?type=post&returnURL=some 를 파싱하면 아래와 같은 결과물이 나오게 된다. &가 &로 변환된 것과 같이 예상하지 못한 데이터 변환이 발생할 수 있다. https://v-som.tistory.com/manage/newpost/?type=post&returnURL=some CDATA (..

개발 2022.03.14

맵과 모델, 어떤 것을 사용해야 할까?

코드에는 답이 없기 때문에 어떤 것이 맞고, 어떤 것이 틀렸다고 할 수 없다. 상황에 맞춰서 잘 생각해서 사용하면 된다. 맵 의미가 모호 put, get 메소드를 보기 전에는 무엇을 전달하려고 하는지 알 수 없음 타입에 대한 강제성이 없음 value 선언을 최상위 타입인 Object로 해줘야 함 Type Mismatch와 같은 예외처리 나기가 쉽다 유연함 단순히 데이터를 얻어올 때 사용 예외가 나더라도 데이터를 일단 받아야 한다면 사용을 고려한다 데이터 타입이 자주 변경되는 곳에서 사용하기 좋음 모델에 비해 40% 이상 GC가 이루어지기 때문에 모델에 비해 1.3~2배 느리다. 모델 의미가 명확 주석이나 변수명만 보고도 직관적으로 무엇을 전달하려고 하는지 알 수 있음 타입에 대한 강제성이 있음 (자료형을..

개발 2022.03.14

자바스크립트의 익명함수와 기명함수

기명함수 // 기명함수 function namedFunction(param) { somework(param); } // 기명함수의 변수화 var named = function namedFunction(param) { somework(param); } 속도가 제일 빠르며, 기명함수로 쓰는 것이 일반적이다. 기명함수의 변수화는 디버깅을 위한 것으로 권장하는 방식이나 표준이 아니다. 익명함수 // 익명함수 var anonymousFunction = function(param) { somework(param); } 익명함수는 1회성 호출의 용도이다 함수 선언, 함수 표현, 호이스팅 관련 내용이 잘 정리되어 있는 링크

Javascript 2022.03.14

자바스크립트 프로토타입 (Prototype)

자바스크립트는 프로토타입 기반 언어이다. ECMA6에서 Class 개념이 도입되기는 했지만, Class 기반 언어로 바뀐 것은 아니다. 사용 예시 function Person() {} Person.prototype.eyes = 2; Person.prototype.nose = 1; var kim = new Person(); var park = new Person(): console.log(kim.eyes); // => 2 ... 이렇게 사용하면 눈 4개, 코 2개가 메모리에 할당된다. 하지만 프로토타입을 사용하게 되면, function Person() { this.eyes = 2; this.nose = 1; } var kim = new Person(); var park = new Person(); cons..

Javascript 2022.03.14

jackson의 두 라이브러리, codehaus vs fasterxml

jackson 라이브러리를 사용할 때 자동 import를 하게 되면 codehaus를 쓸지, fasterxml을 쓸지 선택해야 하는 상황이 온다. 지금까지는 별 의문없이 fasterxml을 사용했었는데 두가지가 뭐가 다른건지 드디어 알아보았다. jackson은 1.x버전과 2.x 버전이 있는데 1.x버전이 org.codehaus.jackson이고 2.x버전이 com.fasterxml.jackson.core 이다. 현재는 jackson 2.x버전만 활발하게 개발이 진행되고 있다고 해서 각 repository에 들어가서 확인을 해 보았더니 codehaus jackson은 2016년 10월이 Latest commit이었고, fasterxml jackson은 Latest commit이 3 days ago(202..

Java 2022.03.14