banner made by Banner Maker
Category : git OpenSource
이전에 올렸던 banner-maker에 pull request 로 온 브랜치를 로컬에서 테스트 하는 중에, 올린 사람의 저장소가 아닌 내 저장소에 pr 브랜치 정보가 있지 않을까 하는 생각이 들었다.
검색해보니 역시 있었다. 매번 다른 유저의 저장소를 찾아가서 가져오는 것은 귀찮으므로 간단히 설정 파일에 pr 주소를 추가하면 자동으로 가져올 수 있다.
pr이 저장되고 있는 위치는 다음과 같다. pr/*
은 pr 디렉토리 이하의 모든 브랜치를 가져온다는 의미이다.
+refs/pull/*/head:refs/remotes/origin/pr/*
vim으로 .git/config
파일을 열어서 remote "origin" 정보에 fetch를 한 줄 더 추가해준다.
[core]
...
[remote "origin"]
url = https://github.com/godori/banner-maker.git
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
git fetch origin
후에 git branch -a
로 확인해보면 다음 원격지의 pr 브랜치도 확인할 수 있다.
(HEAD detached at 751f812)
master
pr/15
remotes/origin/master
remotes/origin/pr/12
remotes/origin/pr/13
remotes/origin/pr/15
remotes/origin/pr/16
GitHub의 Pull Request를 로컬로 가져오기
Category : CS Network OS
평소에 잘 다룰 일이 없는 개념이라 잊고 있었는데 마침 생각이 나서 정리해보았다.
엔디안이란 1차원의 메모리에 연속된 데이터를 어떤 순서로 저장할 지 정하는 방식이다.
보통 컴퓨터 메모리에 데이터를 저장할 때 바이트 단위로 나누어서 저장한다. 메모리에는 시작 주소와 끝나는 주소가 있으며, 엔디안이란 나눠진 바이트를 저장할 때 시작 주소에 하위 바이트부터 저장할 지 상위 바이트를 저장할 지를 정할 수 있다.
0A0B0C0D 라는 32비트 정수를 시작점인 a에 저장한다고 하자. 0A쪽이 높은 단위의 바이트, 0D 쪽이 낮은 단위의 바이트이다. 높은 주소인 0A부터 넣으면 빅-엔디안, 낮은 주소인 0D부터 넣으면 리틀-엔디안 방식을 사용한 것이다.
즉, 0x12345678 이라는 정수가 있다면 빅 엔디안은 12 34 56 78 으로, 리틀 엔디안은 78 56 34 12 으로 저장한다. (87 65 43 21 이 아니다)
엔디안이라는 용어의 유래는 걸리버 여행기에 나오는 소인국에서 달걀을 깨는 방법으로 싸우는 사람들의 격론에서 따온 것이다. 뭉툭한 쪽을 먼저 깨는 빅 엔디언과, 뾰족한 끝을 먼저 깨는 리틀 엔디언과의 논쟁인데, 한마디로 어느 쪽이 좋다고도 나쁘다고도 할 수 없고, 두 방법은 여러 아키텍쳐에서 공존하고 있다.
엔디안은 서로 다른 시스템간의 통신이 이루어질 때 특히 중요한데, 네트워크 프로토콜 설계 시에 엔디안을 고려하지 않으면 대 참사가 일어난다. 보통 네트워크 프로토콜은 빅 엔디안으로 표현하는 것이 일반적이다.
자바스크립트의 DataView 인터페이스와도 관련 있다.
Category : IE browser
웹 브라우저의 종류와 버전은 navigator.userAgent 속성의 값으로 구분할 수 있다.
if (navigator.userAgent.toLowerCase().indexOf("chrome") !== -1) {
console.log('This is chrome browser');
}
IE8버전 부터 살펴보면 버전10 까지는 공통 문자열인 MSIE
로 구분할 수 있지만, IE11 MSIE
가 없다.
IE 8 : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)
IE 9 : Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
IE 10 : Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)
IE 11 : Mozilla/5.0 (Windows NT 6.3; Win64, x64; Trident/7.0; rv:11.0) like Gecko
대신 Trident
라는 공통적인 문자열을 볼 수 있는데, 이는 MS 레이아웃 엔진의 이름이며 IE에서만 사용한다. 하지만 Trident
도 IE7 이하에서는 표기하지 않는다는 점을 유의해야 한다.
다행히 IE8 이하의 사용률이 낮고 IE11은 Trident
로 구분 가능하므로, MSIE
혹은 Trident
를 적절히 포함하여 IE 브라우저를 구분하면 된다.
회사에는 이미 만들어진 라이브러리가 있었더랬다. (생각해보니 없을리가...)
참고로 IE8을 지원하기 위해서는 matches 나 includes 대신 indexOf를 사용해야 한다.
웹브라우저가 IE(인터넷 익스플로러)인지 확인하기
Internet Explorer User Agent String
벌써 3월의 반절이 끝났네요 :)