-
함수적 프로그래밍 작성하기Programmer/Programming 2019. 12. 3. 16:14
모든 조건과 결과는 함수 내부에서 시작하고 내부에서 끝난다면 함수적(functional)이다. 조건과 결과를 제외하고는 외부에 영향을 받지도 주지도 않는다. 조건은 인자(arguments)로 주어지고 결과를 반환값(return value)으로 돌려준다. 수학에서 함수를 처음 배울 때 위와 아래가 열려있는 상자 그림을 소개한다. 이 상자는 위 구명으로 값을 넣으면 아래 구멍으로 결과가 나온다. 위/아래 구멍을 제외하고 비밀스러운 다른 구멍이 없다. 즉, 출력값은 오직 입력으로만 결정된다. 좀 더 세련되게 표현하면 정의역의 임의의 x에 대해서 사상된 단 하나의 y가 치역에 존재한다. 프로그래밍의 함수는 종종 함수적이지 않다. 위 함수 정의에 부합하려면 인자와 반환값으로만 소통해야 한다. 반면 프로그래밍 함수..
-
Mac OS X BASH의 프롬프트에 컬러 적용하기Programmer/Computer Skills 2019. 4. 26. 11:59
맥오에스 카타리나 이전에 해당하는 이야기이다. 카타리나 이후의 기본 쉘이 ZSH로 바뀌었다. BASH를 계속 선호한다면 이 글을 참고하도록 한다. 기본은 무색의 프롬프트이다. (사실은 기본이 아니다. 버그였다.) 이것을 컬러가 들어간 프롬프트로 바꾸어보자. ~/.bashrc 내용의 일부이다. 자세히 뜯어보면, 터미널이 컬러를 지원하면 컬러 프롬프트가 떠야 한다. 그런데, 예상되로 동작하지 않는다. # set a fancy prompt (non-color, unless we know we "want" color) case "$TERM" in xterm-color) PS1='[\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]]\$ ' ;; *) ..
-
Bash에서 사용자 자동 완성 기능 개선하기Programmer/Computer Skills 2019. 4. 4. 18:35
Ubuntu Linux의 bash의 자동 완성은 /etc/bash_completion.d/ 아래 위치한다. rustup의 공식 저장소에서는 자동 완성 기능을 활성화 하는 방법을 아래와 같이 안내하고 있다. rustup completions bash > /etc/bash_completion.d/rustup.bash-completion 위 방법은 일반적인 Rust 설치 권한 이상을 요구하는 문제가 있다. Rust를 대개 개인의 홈디렉토리에 설치한다. 즉, 관리자 권한이 없어도 설치하고 사용할 수 있다. 반면, /etc/bash_completion.d/ 디렉토리는 관리자 권한을 요구한다. 간단한 해결 방법으로는, ~/.bash_completion 파일에 추가하는 방법이 있다. 개인 명령어의 모든 자동 완성을 ..
-
사이비 환경 과학자Life/Society 2019. 3. 25. 11:41
이 과학자란 분이 미세먼지가 중국의 영향이라고 말할 수 없다고 한다.중국의 영향이 정확히 몇%인지 말할 수 없다. 정확한 유입 경로가 파악이 되지 않았다. 미세먼지는 측정하는 확실한 방법이 개발되지 않았다. 따라서, 미세먼지가 중국의 영향이라고 말 할 수 없다. 나는 그렇게 생각하지 않는다. 상관관계나 연관성을 말할 수 있다. 정확하지 않더라도 범위나 확률을 말할 수도 있다. 이를 토대로 가설을 세울 수 있다. 편서풍과 미세먼지가 일치하는 것을 보면 상관관계가 있다. 아이가 있는 아빠라서 환경에 관심이 많다. 미세먼지가 있는 날과 없는 날 자주 기상정보를 찾아봤다. 편서풍이 부는 날 미세먼지 농도가 높았고, 다른 방향의-예를 들면, 시베리아에서 불어 오는- 바람에는 미세먼지 농도가 낮았다. 물론 내가 정..
-
Magit으로 원격저장소의 브랜치 가져오기Programmer/Emacs 2019. 3. 20. 14:51
이 글은 emacs의 git 모듈인 magit을 대상으로 한다. 커맨드라인 git으로 원격 저장소의 branch를 가져오는 설명은 이 링크를 참조한다. M-x magit-status를 입력하여, magit으로 들어간다. Head: master Make perfect Merge: origin/master Make perfect Recent commits -UUU:%%--F1 magit: tiny-tool Top L4 (Magit) --------------------- 'b'를 누르면 magit popup이 뜬다. onfigure master d branch.master.description unset u branch.master.merge refs/heads/master branch.master.remo..
-
날아갈 듯 가벼운 mg 편집기Programmer/Emacs 2019. 2. 28. 11:02
시스템 운영을 하는데 있어서 이맥스는 좀 무겁다. 간단한 설정 파일 편집에는 적합하지 않다. 대안으로, `nano', `vi(m)'이 있다. 그런데, `nano'는 익숙하지 않은데다 배우기도 싫다. `vi(m)'은 이단으로 교리에 위배된다. 여기에 `mg'라는 가벼운 유사 이맥스가 있다. 명령이 떨어지기 무섭게 커서가 떨어진다. 주요 키바인딩(단축키)이 이맥스와 같다. 이맥스 사용자가 익숙하게 사용할 수 있다. 마이너한 오픈 소스의 문제 중에 유지 보수가 잘 이루어지지 않는 것이 있다. `mg'는 그런 점에서는 안심해도 된다. OpenBSD의 요소로 간주되어 유지보수를 잘 해주고 있다. 단순 편집기 기능 이외에 다중 윈도우, dired, ctags, cscope와 같은 유용한 기능도 지원한다. 우분투에서..
-
오픈 소스는 공짜가 아니다.Life/Software Engineer 2019. 2. 22. 12:57
부제 : 오픈 소스의 숨은 비용. 누구에게나 공짜는 매력적인 단어다. 손해 볼 것 없다는 느낌을 준다. 비용이 '0'이기 때문에 이익이 개미 눈꼽 이상만 있으면 무한의 가성비로 생각한다. 그러나, 표면적으로 드러난 금전적인 비용만을 계산한 오류이다. 숨은 비용까지 따저봐야 정확한 가성비를 알 수 있다. 학습과 유지 보수, 사용 비용은 직접적으로 드러나지 않는 숨은 비용이다. 배움의 비용은 빈약한 문서와 교육에서 기인한다. 많은 상용 제품은 문서와 교육을 포함한다. 반면, 오픈 소스에는 교육과 문서의 의무가 없다. 코드를 보고 파악하거나 블로그의 조각 글을 통해서 배워야 한다. 상대적으로 많은 시간과 노력이라는 학습 비용이 들어간다. 오픈소스에는 유지 보수의 책임이 없다. 누군가 해결할 때까지 문제를 안고..
-
Github에서 분기(fork)한 저장소를 Magit으로 원본과 동기화하기Programmer/Emacs 2019. 2. 19. 10:07
이 문서는 원본 저장소에 푸시 권한이 없는 개발자가 분기(fork)이후 원본과 동기화하는 방법을 설명한다. 도구는 이맥스의 git 확장 모듈인 magit을 사용한다. 커맨드라인 git을 활용한 문서는 많다. 이런 저런 문서를 참고하라. 이 글은 magit을 활용하여 이를 해보려고 한다. Head: master Make perfect Merge: origin/master Make perfect Recent commits -UUU:%%--F1 magit: tiny-tool Top L4 (Magit) --------------------- 'y'을 누러 원격 저장소를 확인해보자. Branches (2) develop origin/develop Do something master origin/master Mak..