글쓰기 메뉴
1 2
Square 2f561b02a49376e3679acd5975e3790abdff09ecbadfa1e1858c7ba26e3ffcef

내 생각을 멈추면
지구가 멈춰
그렇게 돌아가지
태양말고 너
2 1
Square 2f561b02a49376e3679acd5975e3790abdff09ecbadfa1e1858c7ba26e3ffcef

foo, bar - Metasyntactic variable
메타구문변수라니.. 번역해도 뭔말인지...

개발자들은 foo, bar 라는 단어가 아주 친숙하지.

그냥 "무엇이든 지칭할 수 있는 의미없는 단어"로 예제코드나 문서에서 매우 자주 쓰이니까.
그래서 개발 시작한지 얼마안되는 초보시절(!)에 foo, bar (합쳐서 foobar 라고도 많이 부름) 의 어원이나 정확한 의미를 찾아보는 시간을 갖지. 나 역시 찾아봤었고.
영문은 위키피디아에서 보면 되고,
한글로는 이게 제일 그럴듯해. (군대 은어 - FUBAR 에 대한 설명만 빠져있음)
다만 foo 를 한글의 "홍길동" 이라고 이해하지는 말자. "홍길동"은 지칭되는 사람이 없는 사람을 뜻하는 단어지만 foo 는 사람이든 사물이든 가리지 않고 무엇이든 지칭할 수 있으니까. 
그런데 foo, bar 다음은 뭔지 알어? 다음 단어가 있긴 있을까?
이게 메타구분 변수 목록이야 ㅋㅋㅋㅋ 너무 재밌고 신기하고 신나서 글 써봄 ㅋㅋㅋ
2001년 만우절에 작성된 RFC3092 문서에 나와있네.  RFC3092
근데 형들 RFC 가 무슨 약자인줄 알어? 이것도 재밌는데 ㅋㅋㅋ
0 1

Vim with the Syntastic plugin and ESLint (feat Vundle)

나는 nerdtree 라든지 하는 플러그인 안쓰고 날것의 vim 을 좋아하는데 syntax 나 eslint 는 필수기 때문에 써야지.
플러그인 관리 대세가 pathogen 에서 vundle 로 넘어간 듯.. 대세는 또 따라줘야지.
Vundle: https://github.com/VundleVim/Vundle.vim
Syntastic: https://github.com/vim-syntastic/syntastic
깃허브에 아주 잘 설명되어 있고.. 아래는 내 설치 히스토리.
소스 받기
.vimrc 에 다음 내용 추가 - Syntastic(만) 포함됨
설정된 플러그인 인스톨
플러그인 인스톨하면 화면 쪼개지고 설치 진행됨. 당황하지 말고 Vim 상태표시줄에 다 끝났다는 메시지 나오면 끄면 됨.
ESLint 는 글로벌로 설치해놓고 
사용하고 있는 .eslintrc 가 없다면 프로젝트 root path 에서
eslint 설정 파일이 있다면 아무 파일이나 돌려보면 eslint-plugin-react 등 필요한 것들 설치해줌
글로벌로 npm 설치해도 물론 됨
끝.
0 1

Mac Xcode 다운로드 2일 12시간...
느려도 너무 느려 터진 iTunes

쌔끈한 브랜~뉴 맥에 개발 환경 설정하다가 높은 확률로 빡치는 곳. 
Apple Development Center 에서 Xcode 다운로드 시도하면 iTunes 로 넘겨주는데 다운로드 누르면 남은 시간이 고무줄.
아, 제목에 2일 넘는건 뻥이고 2시간 30분 남았다고하네. 2시간 30분. 퇴근하겠는걸?
암튼... iTunes 로 안넘어가고 아래 페이지에서 필요한 파일 찾아서 브라우저에서 다운로드 할 수 있음.
apple 계정으로 로그인은 해야하고..
이어받기가 필요하다거나 브라우저 다운로드가 왠지 모르게 불안하다면 gem 중에 adcdownload 라고 있음. wget 사용해서 이어받기도 되니 필요하면 아래처럼 사용할 수 있음
$ gem install adcdownload --no-document
$ adcdownload get http://adcdownload.apple.com/Developer_Tools/Xcode_8.3.2/Xcode8.3.2.xip
이렇게 실행하면 apple 아이디와 비밀번호 묻고 다운로드 시작. 
다운로드 링크는 물론 저 위에 페이지에서 파일 url 복사한거.
중간에 끊어지면 그 위치에서 다시 같은 커맨드로 이어받기 가능.
[링크]
0 0

깃(깃허브) 브랜치 작업 커맨드 히스토리

이번팀은 자기 계정으로 포크안하고 origin 클론 받아서 브랜치만 쪼개서 작업하던데 난 포크시켜서 하는게 마음이 편해.

문제는 할때마다 까먹는다는거 ㅋㅋ
깃보다 서브버전을 오래, 자주 써서 그런것도 있고 서브버전은 체크아웃, 브랜치, 머지, 커밋 이렇게 비교적 직선에 가까운 작업 형태인데 깃은 확실히 시각화 될 수 있는 수준의 단계에 대한 이해가  필요한 것 같음.
암튼.. 깃허브를 쓴다고 가정하고 내 방식을, 내 기억을 위해 기록.
1. 원본 리모트 레파지토리 내 계정으로 fork
2. 클론
3. 리모트 네임 변경
4. 원본 리모트 레파지토리 추가
5. 최신 소스 동기화
6. 작업 브랜치
7. 작업 작업 작업
8. rebase - 마스터 헤드 이동 (브랜치 작업 시작 후 upstream master 의 커밋이 있는 경우)
9. rebase - 커밋 합치기
10. rebase - upstream 최신 HEAD 로 이동
12. Delete branch (local & remote)
13. Push
14. github 에서 풀리퀘스트 작성 및 전송
<링크>
http://www.popit.kr/오픈소스-git-프로젝트-pull-request-보내기/

http://dogfeet.github.io/articles/2012/git-merge-rebase.html
0 0
Square 2f561b02a49376e3679acd5975e3790abdff09ecbadfa1e1858c7ba26e3ffcef

Reason why I chose Nightmare over phantomjs, casperjs, selenium and ...

테스트용이 아니라 자동화, 스크랩핑(automation, scraping) 용도로 헤드리스 브라우저 - headless browser: 그래픽 인터페이스가 없고 프로그래밍으로 컨트롤 가능한 브라우저 - 를 살펴보고 있는데 종류도 많고 문서 읽어보면 각각의 장점도 분명해서 선택이 어렵다.
이럴땐 사용자도 많고 소스도 오랜시간 검증된 안전한 선택이 좋겠다.
하지만 ㅋㅋㅋ 결론적으로 이번 플젝에 Nightmare 를 선택한 이유는..
Nightmare 공홈이 너무 귀여워서 ㅋㅋㅋㅋ
ㅋㅋㅋ 개귀염
phantomjs 를 엔진으로 쓰다가 2배가량 빠르다는 Electron 으로 엔진을 교체했다는 솔깃한 얘기는 덤.
콜백지옥을 경험하지 않아도 되는 코딩 스타일도 덤.
react 로 작성된 웹페이지와 같이 특정 노드를 대기할 수 있는 메소드가 있는 것도 덤.
- 끝 -
http://www.nightmarejs.org/

http://www.seleniumhq.org/

http://casperjs.org/
http://phantomjs.org/
https://electron.atom.io/

https://github.com/dhamaniasad/HeadlessBrowsers [헤드리스 브라우저 리스트 - outdated]

https://en.wikipedia.org/wiki/Headless_browser [헤드리스 브라우저 위키]
0 0
Square 2f561b02a49376e3679acd5975e3790abdff09ecbadfa1e1858c7ba26e3ffcef

earth: windmap
어스 윈드맵으로 황사, 먼지 등 대기 상태 및 예보 보기

오늘은 정말 잠깐 밖에만 나가도 목이 칼칼하더군.
주변에 미세먼지와 황사의 강력한 조합으로 인해 목이 붓는 등 고통받고 계신분들도 꽤 보이고.
이놈의 황사는 언제 걷힐까 싶어 "어스"에 접속. 
은 노란 하늘 ㅋㅋ
저 두꺼운 먼지들이 언제쯤 걷힐까 예보화면을 확인함.
12일이 되면 한국 상공은 꽤나 투명하기에 주변인들에게 "어스"를 보여줬더니 "이게 머여?" 라는 반응.
미세먼지 예보는 앱들 설치 많이 했던데 "어스"는 잘 모르는 모양.
그래서 "어스" 에 대해 짧은 사용법을 작성하기로 함.
어스 윈드맵(earth: windmap)은 일본에 살고 있는 미국인 개발자 Cameron Beccario가 만든 웹사이트로 2013년 12월 11일 오픈했고 윈체스터 대학교에서 열린 The Graphical Web 2014 컨퍼런스에서 개발 배경 등에 대한 발표가 있었다.
일부에서 "어스"를 인디드(Indeed, 취업/채용 사이트)에서 만든 사이트라고 설명하는데 Cameron Beccario 는 위 컨퍼런스에서 개인 공부를 위해 시작한 개인적인 프로젝트였다고 밝혔다. (당시의 직장은 Indeed)
초기버전은 Air와 Ocean 두 개의 모드만 제공했으나 현재 Chem(케미컬)과 Particulates(dust, smoke, soot, clouds) 가 추가되었으며 GMAO/NASA 의 데이터를 사용한다.
대충 설명은 된 것 같고 짧은 사용법을 시작하기전에.. 진심으로 Cameron Beccario 의 수고와 노력에 감사한다.
여러분도 고마운 마음이 생긴다면 글 하단의 링크를 타고 Cameron Beccario 의 트위터에 인사를 남기거나, 어스의 아트웍을 구입해 직접적으로 도움을 줄 수 있다.
"어스" 사이트에 접속하면 기본값으로 설정된 지표면에 불고 있는 바람을 볼 수 있다.
https://earth.nullschool.net

미세먼지 및 대기 중 화학물질(일산화탄소와 이산화탄소, 황산화물)을 확인 하기 위해선 화면 좌하단의 "earth" 메뉴를 클릭해 설정을 변경해야한다.
[미세먼지 및 대기오염 물질 보기 설정] 
Height: Sfc (관측높이는 surface, 지표면으로 설정)
Mode: Chem
Overlay: COsc (일산화탄소)
Overlay: CO2sc (이산화탄소)
Overlay: SO2sm (이산화황)
Mode: Particulates
Overlay: DUex ((미세)먼지 = dust, smoke, soot, clouds 등으로 대기의 광학적 두께를 - 얼마나 불투명한지를 - 표현)
Overlay: SO4ex (황산화물)
[예보 및 지난 데이터 보기]
Control 메뉴
<< : 24시간 이전 데이터 확인
< : 3시간 이전 데이터 확인
> : 3시간 이후 데이터 확인
>> : 24시간 이후 데이터 확인
⊕ : 현재 위치를 중심으로 

Grid : 그리드 표시
▷ : 바람 표시
HD : 고해상도 설정
- 끝 -
https://earth.nullschool.net [어스]
https://twitter.com/cambecc [개발자 트위터]

http://memory.org/point.b/earth.html [아트웍 구매]
https://en.wikipedia.org/wiki/Cameron_Beccario [개발자 위키문서]

https://www.youtube.com/watch?v=QXNODLWhSbw [The Graphical Web 2014 발표]

https://gmao.gsfc.nasa.gov/GEOS/ [GEOS-5 - GMAO / NASA]
0 0

맥 시에라 vi / vim 클립보드 사용하기

1~4 단계의 과정이 필요할 수 있다.
1. ~/.vimrc
아래 내용을 사용자 홈디렉토리 아래 .vimrc 파일에 추가한다 (없으면 만든다)
2. +clipboard 로 컴파일 됐는지 확인한다
clipboard 옵션 없이 컴파일 된 경우

clipboard 옵션이 포함된 경우
2-1. clipboard 옵션이 없는 경우 brew 로 vim 을 설치한다
맥에는 기본으로 vim 이 설치되어 있다.
아래와 같이 brew 로 vim 을 설치하여 시스템 디폴트 vim 교체할 수 있다 (실제로 교체되지는 않고 path 설정 바꿔주는 듯)
3. 어떤 vim 이 호출되는지 확인한다
3-1. /usr/bin/vim 이 잡힌다면 /etc/paths 파일을 수정하여 /usr/local/bin 이 /usr/bin 보다 위에 나오도록 한다
4. 여기까지해도 동작되지 않는다면 
client-server 옵션으로 설치하면 동작하는 경우가 있다고 한다.
4-1. .vimrc 설정
1번의 설정으로 충분하나 아래와 같이 설정할 수 있다 (참조)
0 0

하나님

감사합니다.
제 짐을 내려주시고 그 어깨에 흥을 얹어주시니 감사합니다.
성전과 같은 경건함을 지킬 수 있는 용기를 주시옵고 주의 뜻을 귀기울여 찾고 행할 수 있는 힘을 주시옵소서.
아멘
0 1
Square 2f561b02a49376e3679acd5975e3790abdff09ecbadfa1e1858c7ba26e3ffcef

This light.

말 그대로 최선을 다해보자.
0 2

스팸 및 댓글에 대한
의견을 구합니다.

안녕하세요.
광고글과 광고댓글로 몸살이었던적이 있었죠.
제 관리나 기능으로 해결하지 못하고 지저분함에 사용자들이 떨어져나가자 효과없음을 느낀 스패머가 더 이상 활동하지 않았던건죠.
다른 공격적인 사용자라면 음담패설이나 모욕적인 댓글을 남기는 사용자가 있었구요.
아무튼 해결해야 하는 문제임은 분명하죠.
아래의 옵션 중에 투표를 해주시거나 다른 방안을 댓글로 알로주시면 작업 기일을 공표하고 진행토록하겠습니다.
1) 신고 기능
댓글이나 글이 특정횟수 이상 신고 될 경우 블라인드처리되거나 삭제되도록
2) 자신이 작성한 글 (손님글은 제외) 에 달리는 댓글은 적성자가 블라인드(삭제아님) 처리할 수 있는 권한 부여
3) 관리자가 24/7, 365모니터링 ㅋㅋㅋ
기타 의견이나 아이디어 있으시면 댓글 남겨주세요!
0 0

ref: 외로움

혼자가 익숙한 제게
외로움은 위안이었습니다.
누구도 이해 못할 고독을 훈장처럼 가슴에 박아넣었습니다.
둘이되고 셋이되니 좀 후회스럽습니다.
이들이 제 가슴에 구멍을 힘겹게 메워나가고 있거든요.
0 0

왜 세상은 나를 등지는지..

수동적으로 바뀌어지는 모든 것들이 나에게 부정적이라는걸 어찌 해석해야하는걸까?
"바꾸지 않으면 바뀌지 않는다" 는 말 역시 내 노력이 포함되지 않은 모든 변화는 나에게 불리하다는 뜻인가?
"불리하다"가 아니라 그저 조금 "내 뜻대로, 내가 원한대로" 되지 않는다는 정도로 수위를 낮춰 해석한다해도 사실은 나를 제외한 모두의 바램은 나의 바램과는 다르다는 결론이 나올뿐이지 않나.
어쩌면 그게 "경쟁사회"의 기본 동력일까?
분위기와 흐름을, 결과와 댓가를 조금이라도 나에게 득이되도록 노력해야만 살아남을 수 있나보다.
그렇지. 사회라는게 이익을 위해 만들어진 생명체인 이상 내 input 이 있어야만 비로소 최소의 output 을 기대할 수 있는거겠지.
그럴 듯 하지만 매우 우울하군.
1 1
Square 2f561b02a49376e3679acd5975e3790abdff09ecbadfa1e1858c7ba26e3ffcef

[3분 복붙] 기사면 랜딩 PV 2배로 올리기.
브라우저 뒤로가기 제어.
이딴거 만들지 말자.

대부분의 서비스가 보다 많은 활동 사용자를 목표로 함은 분명하다.
하지만 얼마나 많은 활동 사용자가 있는지를 가늠할 수 있는 지표에 대한 목표설정은 좀 다른 얘기라고 생각한다.
심지어 그 목표의 달성을 위한 실현 과정이 사용자들을 열받게 만든다면 이 얼마나 근시안적 추태인지...
PV (Page View, 페이지 조회수) 에 대해 강한 집착을 보이는 국내 언론사들이 근래 "뒤로가기"가 실행되는 경우 이전 페이지로 보내지 않고 메인페이지로 이동되도록 하는 기능을 속속 도입하고 있더라. (좀 됐지.. 내가 잠수였던거지..)
사용자 입장에선 개빡치는 UX. 
그렇지만 남들이 한다니까 자기들도 해달라는 클라이언트의 등장은 당연지사.
해당 기능을 도입한 사이트들을 둘러보니 대부분 광고대행사 등이 제공한 스크립트를 사용하는 것 같더라.
메인페이지를 거치는 것도 짜증나는데 그 중간에 광고까지 껴있으니 개짜증..
이딴거 누가 안만들면 좋겠는데 일개 개발자가 뭘 할 수 있겠냐 고민하다가...
클라이언트에게 만들어준 간단한 스크립트를 모두에게 제공하고 너도나도 다들 도입해서 더 많은 사용자들이 더 빠르게 빡돌게 만들면 슬슬 이딴 쓰레기 같은 기능을 버리지 않을까라는 골때리는 결론에 도달했다.
0.
jQuery 를 사용하고 있다고 가정한다.
1.
아래의 코드를 기사 페이지 등 기능이 동작될 페이지에서 로드되는 js 파일에 추가한다.
3번 라인 정규식 패턴안의 synd\.kr 부분은 자신의 도메인으로 변경한다.
2.
기능이 동작될 페이지 HTML 코드 사이에 아래의 코드를 삽입한다.
완성!
코드는 단순해서 쉽게 이해할 수 있겠지만 몇몇 부분을 설명해보자면...
1. pushState 이후에 replaceState 를 다시 콜하는 이유.
pushState 만으로 history 를 조작할 경우 firefox 에서 백버튼이 골때리게 반복된다.
external > page > main > page > main > external
replaceState 를 다시 콜하면 아래와 같이 의도한대로 동작된다.
external > page > main > external
2. popState 이벤트를 사용하지 않고 hashChange 를 사용하는 이유
페이스북 앱 등 in app browser 를 사용할 때 해쉬가 없는 경우 뒤로가기 실행시 popState 이벤트가 발생되지 않음
해쉬를 추가해야 뒤로가기 실행 시 기존 URL (해쉬없는) 로 페이지 변화없는 이동이 발생하고 이 타이밍에 hashChange 가 콜 됨.
또한, Safari 9버전 이하에서 popState 가 지멋대로 fire 됨.
3. 이건 좀 쓸데없는 설명이지만 location.href 는 history 에 기록되고 location.replace 는 history 에 남지 않기 때문에 replace 를 사용해야함.
지원브라우저
웹이고 모바일이고 html5 history api 를 지원하는 브라우저 (http://caniuse.com/#search=history) 에선 기본적으로 모두 동작된다고 기대할 수 있으나 아이폰 크롬에서 동작안됨.
그 외 페이스북 앱 등 인앱에서 웹뷰를 사용하는 경우도 정상 동작.
Tested.
Microsoft Edge.
Microsoft IE 11.
Firefox 52.x (Windows)
Firefox 47.x (Linux)
Firefox 52.x (Mac)

Firefox 52.x (Android)
Firefox 6.x (iOS)
Chrome 57.x (Windows)

Chrome 48.x (Linux)
Chrome 56.x (Mac)

Chrome 57.x (Android)
Chrome 57.x (iOS) *동작안됨
Safari 10.x (Mac)
Safari 10.x (iOS)
Android 6 browser 4.x
Facebook App
자 이제 자리에서 일어나서 팀장이든 부장이든 상사에게 "저희 PV 를 2배로 올리겠습니다!" 라고 보고하고 보다 많은 사용자들의 빡을 돌려(?) 주삼. 
1 0

우분투 몽고DB 설치 및 부팅 시 자동 실행 - Install MongoDB on Ubuntu & Start MongoDB on system start

설치는 매우 간단하고 MongoDB 공홈에 최신 버전으로 갱신된 문서가 있어 해당 페이지를 참고하면 된다.
공홈 설치 문서 링크:

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
GPG Key
리스트파일 생성 (16.04. 기타 버전은 공홈 참조)

패키지 디비 갱신
MongoDB 설치

근래의 대부분의 배포본은 Upstart  대신 Systemd를 사용하기 때문에 위와 같이 설치된 MongoDB 역시 init 스크립트를 제공하지 않는다.
service 커맨드로 시작, 중지, 재시작 등의 관리가 가능하나 systemctl 커맨드를 익히는게 바람직하다고 본다.
systemd 를 사용해 MongoDB 를 초기 실행 시키기 위해 다음의 파일을 작성한다.
/etc/systemd/system/mongodb.service

Unit 섹션의 Description 은 서비스에 대한 간단한 설명을 포함한다.
같은 섹션의 After 는 네트워크 연결 후 구동하겠다는 의미
Service 섹션의 User 는 서비스 실행 사용자를 지정하고 ExecStart 는 실제 구동 커맨드를 입력한다.
Install 섹션의 WantedBy 는 실행 타깃을 구분하는데 multi-user.target 은 기존 런레벨 2,3,4 로 일반적인 부팅 시에 동작된다.
구동
상태 확인
정지
부팅 시 실행
systemd 의 target 에 대해 보다 자세히 알고 싶다면 아래의 링크를 참조.
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Targets.html
systemd 에 대해 보다 자세히 알고 싶다면 아래의 링크를 참조
http://lunatine.net/about-systemd/
1 0

Vim - Pug(구 Jade) 템플릿 Syntax Highlight

템플릿 pug(구 jade)가 vim (version 7.4.1689) 에서 구문강조 (syntax highlight) 가 되지 않아 코딩에 어려움이 있다.
pathogen 플러그인을 사용해 vim-pug 로 pug 파일의 구문강조를 지원하는 방법은 다음과 같다.
pathogen 설치
https://github.com/tpope/vim-pathogen

vim 구동 파일 수정
vim-pug 설치
https://github.com/digitaltoad/vim-pug
5 2

광고 및 악성 댓글에 관해

먼저 빠르게 대처하지 못해 대단히 죄송합니다.
문자 그대로 "더러운" 댓글과 홍보글에 대해 빨리 대처해야했는데 계속 방치하고 있어 대단히 죄송합니다.
지금도 늦었고, 바로 해결하지 못해 다시 한 번 죄송합니다만 금주 중으로 처리해놓도록 하겠습니다.
관심과 지적 정말정말 감사드립니다.
1 2

뭐 이런사람이 다있냐...

http://weekly.chosun.com/client/news/viw.asp?nNewsNumb=002114100003&ctcd=C01
대단하다!
2 3
Square 2f561b02a49376e3679acd5975e3790abdff09ecbadfa1e1858c7ba26e3ffcef

아버지 쾌차하세요

아버지가 뇌출혈로 수술실에 들어가셨다.
아버지가 수술하신다는 것도 이상하고,
이 큰 병원 수술 대기실에 혼자 있는 것도 이상하다.
여기서 6시간 동안 혼자 기도하고 있어야겠다.
근 10년 중에 가장 시간이 느리게 가는 듯.
휴...
2 1
Square 2f561b02a49376e3679acd5975e3790abdff09ecbadfa1e1858c7ba26e3ffcef

과거란

1 3 9