Programmer
-
함수적 프로그래밍 작성하기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 파일에 추가하는 방법이 있다. 개인 명령어의 모든 자동 완성을 ..
-
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와 같은 유용한 기능도 지원한다. 우분투에서..
-
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..
-
러스트(Rust)를 위한 SyntaxHighlighter 3.0 플러그인 개선Programmer/Programming 2019. 2. 14. 18:27
2019년 Rust로 개발을 시작했다. 새롭게 알게 된 내용을 블로그에 기록하고 있다. 러스트 코드를 예쁘게 보여줄 기능이 필요했다. 아쉽게도, 내가 사용하는 SyntaxHighlighter의 기본 패키지는 러스트를 지원하지 않는다. 지난번 리스프 패키지 작성과 마찬가지로 서드파티 패키지를 추가해야했다. 운이 좋게도 누군가 만들어서 공개했다. https://silight.hatenablog.jp/entry/2015/06/18/211724 써보니 그리 나쁘지 않았지만, 부족한 부분이 엿보였다. 이전 글을 작성하면서 발견한 멀티라인을 추가했다. 2019년 2월 14일에 raw string, byte string을 추가했다. 코드는 https://github.com/unipro/shBrushes에 있다. le..
-
러스트와 다른 언어의 멀티라인 처리 비교Programmer/Programming 2019. 2. 12. 14:38
새줄문자가 들어간 스트링 리터럴 출력 Rust fn main() { println!("In the rooom the women come and go, Singing of Mount Abora"); } 결과 : 스트링 리터럴의 새줄문자와 공백문자를 그대로 출력 In the rooom the women come and go, Singing of Mount Abora C #include int main() { printf("In the rooom the women come and go, Singing of Mount Abora"); putchar('\n'); } 결과 : 빌드 실패 cc -Wall -O2 -o prt_nl_str prt_nl_str.c prt_nl_str.c:5:12: warning: miss..