제목 그대로 한글로된 하스켈 꿀자료 되겠다. 블로그를 가서보시면 알겠지만 책으로익히던 하스켈문법들을 어느정도 익혔다면 실전에서 어떻게 써야하는지 바세히알수있을 것이다. 이렇게 좋은자료를 공개해주신 분께 감사드릴 따름이다~ㅠㅜ
http://agbird.egloos.com/m/category/하스켈%20스프링노트
페이지
▼
2015년 11월 17일 화요일
2015년 11월 12일 목요일
함수형 언어 하스켈 와이리 어렵노..
하스켈을 배워보고자 책을 사보고 인터넷으로 튜토리얼들을 찾아보고 한지 벌써 1년가량 된듯하다. 아.. 하지만 정말 정말 어렵다. 예전에 C언어를 공부할때에도 많은 사람들이 좌절한다는 포인터가 이렇게 어렵게 느껴지지는 않았는데 하스켈은 정말이지 어렵다.
하스켈을 마스터 한다고 해서 굳이 나에게 커다란 이익을 가져다 줄지는 사실 의문이다.
함수형 언어가 요즘의 핫한 이슈이기도 하고 많은 다중 패러다임 언어에서 함수형 언어의 개념들이 차용되어가는 추세이다. 람다, 클로저, 병렬성과 같은 것들이 그럴것이다.
그렇다면 함수형 언어의 장점과 객체지향언어가 적당히 버무려진 파이썬, Go언어, Swift, D언어 같은 것들을 마스터하는 편이 현실적으로 봤을때 좋다고 머리로는 생각하고 있지만 여전히 나는 하스켈책을 펼쳐들고 어떻게든 이해해보려고 골머리를 썩는 중이다.
사실 많은 사람들이 어렵다고 얘기하는 C언어의 포인터 개념은... 내가 배운지 오래되서일까? 어렵다고 느껴본적은 사실없는데 하스켈에서 많은 사람들을 좌절시키는 모나드.. 이 모나드라는 것이 의미를 모르고 사용한다면 그저 절차형 언어처럼 사용할 수 있는 신택틱 슈거정도 이지만 그 한줄에 하스켈의 모든철학이 들어 있다고 할 정도로 정말 오묘한 물건이고 그만큼 이해하기도 어려운것 같다. 순수한 함수형 언어 하스켈.. 글쎄 이렇게 인기가 없는걸 보면 실용적이지 않을수도 있다. 많은 사람들이 새로운 개념에 대해 신기해 하며 한번쯤 도전해보는 실험적 언어 일수도 있다. 스몰토크가 그러했고 리스프가 그렇다고 생각한다. 다른언어들에 엄청난 영향을 주었지만 정작 그 언어들은 인기가 바닥을 치고 그 언어에서 파생된 여러가지 개념들은 결국은 다른언어를 통해 적당히 버무려져 활용되고 있으니 말이다.
하지만 하스켈은 좀 다를것이라는 막연한 생각이든다. C/C++만 다루다 처음 파이썬을 접했을때의 신선함, 간결함등에 큰 영감을 받았었고 파이썬 프로그래밍이 너무나 재미있다고 느껴졌었다. 파이썬의 첫 느낌이 마치 신세계를 발견한 듯한 느낌이라면 하스켈을 처음 접했을 때의 느낌은 다른차원의 세상으로 온듯한 느낌이다. 내가 모르는 미지의 영역이 광활하게 펼쳐져있는 느낌이 정확하다. 왠만한 언어들은 굳이 배우지 않아도 그 의미를 알수 있고 알고리즘을 이해할수 있다.
하지만 하스켈은 다르다!! 아마도 컴퓨터 프로그래밍을 처음 접했을때의 느낌을 고스란히 느낄수 있을것이다. 내말이 맞는지 틀린지 궁금하신 분들은 도전해보라. 그리고 그 가치는 충분히 있을거라고 생각한다. 요즘 같은 멀티코어 시대에 걸맞는 언어는 함수형 언어라고 많이들 얘기하곤 한다.
하스켈이 가지고 있는 순수한 함수형 언어의 여러가지 문화들~ 람다, 커링, 패턴매칭, 타입클래스, 펑터, 모나드, 모노이드, 불변성, Software Transactional Memory등등.. 이 모든걸 이해했을때 아마도 나는 좀더 성장해 있을거라 믿어본다.
하스켈을 마스터 한다고 해서 굳이 나에게 커다란 이익을 가져다 줄지는 사실 의문이다.
함수형 언어가 요즘의 핫한 이슈이기도 하고 많은 다중 패러다임 언어에서 함수형 언어의 개념들이 차용되어가는 추세이다. 람다, 클로저, 병렬성과 같은 것들이 그럴것이다.
그렇다면 함수형 언어의 장점과 객체지향언어가 적당히 버무려진 파이썬, Go언어, Swift, D언어 같은 것들을 마스터하는 편이 현실적으로 봤을때 좋다고 머리로는 생각하고 있지만 여전히 나는 하스켈책을 펼쳐들고 어떻게든 이해해보려고 골머리를 썩는 중이다.
사실 많은 사람들이 어렵다고 얘기하는 C언어의 포인터 개념은... 내가 배운지 오래되서일까? 어렵다고 느껴본적은 사실없는데 하스켈에서 많은 사람들을 좌절시키는 모나드.. 이 모나드라는 것이 의미를 모르고 사용한다면 그저 절차형 언어처럼 사용할 수 있는 신택틱 슈거정도 이지만 그 한줄에 하스켈의 모든철학이 들어 있다고 할 정도로 정말 오묘한 물건이고 그만큼 이해하기도 어려운것 같다. 순수한 함수형 언어 하스켈.. 글쎄 이렇게 인기가 없는걸 보면 실용적이지 않을수도 있다. 많은 사람들이 새로운 개념에 대해 신기해 하며 한번쯤 도전해보는 실험적 언어 일수도 있다. 스몰토크가 그러했고 리스프가 그렇다고 생각한다. 다른언어들에 엄청난 영향을 주었지만 정작 그 언어들은 인기가 바닥을 치고 그 언어에서 파생된 여러가지 개념들은 결국은 다른언어를 통해 적당히 버무려져 활용되고 있으니 말이다.
하지만 하스켈은 좀 다를것이라는 막연한 생각이든다. C/C++만 다루다 처음 파이썬을 접했을때의 신선함, 간결함등에 큰 영감을 받았었고 파이썬 프로그래밍이 너무나 재미있다고 느껴졌었다. 파이썬의 첫 느낌이 마치 신세계를 발견한 듯한 느낌이라면 하스켈을 처음 접했을 때의 느낌은 다른차원의 세상으로 온듯한 느낌이다. 내가 모르는 미지의 영역이 광활하게 펼쳐져있는 느낌이 정확하다. 왠만한 언어들은 굳이 배우지 않아도 그 의미를 알수 있고 알고리즘을 이해할수 있다.
하지만 하스켈은 다르다!! 아마도 컴퓨터 프로그래밍을 처음 접했을때의 느낌을 고스란히 느낄수 있을것이다. 내말이 맞는지 틀린지 궁금하신 분들은 도전해보라. 그리고 그 가치는 충분히 있을거라고 생각한다. 요즘 같은 멀티코어 시대에 걸맞는 언어는 함수형 언어라고 많이들 얘기하곤 한다.
하스켈이 가지고 있는 순수한 함수형 언어의 여러가지 문화들~ 람다, 커링, 패턴매칭, 타입클래스, 펑터, 모나드, 모노이드, 불변성, Software Transactional Memory등등.. 이 모든걸 이해했을때 아마도 나는 좀더 성장해 있을거라 믿어본다.
2015년 11월 5일 목요일
Linux 문서편집기 vi, vim 명령어 정리
[원문:http://hyeonstorage.tistory.com/274]
Linux 문서편집기 vi, vim 명령어 정리
Linux나 Unix에서 환경설정 파일 등을 수정해야 될때 vi 또는 vim을 사용한다.
하지만 윈도우의 단축키에 익숙해져 있는데다 자주 사용하지 않다보니 매번 명령어가 헷갈린다.
사용할때마다 찾아서 사용하기 보다 여기다 정리해놓고 참고해야겠다.
<vi 편집기로 실행한 php.ini 파일>
1. vi 실행하기
명령어
|
동작
|
vi file
|
file을 연다
|
vi file1 file2
|
file1 과 file2 를 차례로 연다
|
view file
|
file을 읽기 모드로 연다
|
vi -R file
|
file을 읽기 모드로 연다
|
vi + file
|
file을 열때 커서가 file 본문의 마지막 행에 위치한다.
|
vi +n file
|
file을 열어 n행에 위치한다.
|
vi -r file
|
손상된 파일 회복
|
2. 입력모드 전환 명령어
명령어
|
동작
|
i
|
커서 있는데서 입력모드 전환
|
I
|
커서 왼쪽, 행의 처음에 몬자 삽입
|
a
|
커서 있는 줄 끝에서 입력모드 전환
|
A
|
커서 오른쪽, 행의 끝에 문자 삽입
|
o
|
커서 있는 줄 아래에 빈 줄 삽입
|
O
|
커서 있는 줄 위에 빈 줄을 삽입
|
R
|
덮어쓰기 모드로 전환
|
3. 커서의 이동
명령어
|
동작
|
^, 0
|
줄의 처음으로 이동
|
$
|
줄의 끝으로 이동
|
H
|
화면 맨 위로 이동
|
M
|
화면의 중간으로 이동
|
L
|
화면 맨 아래로 이동
|
w
|
다음 단어 끝으로 커서 이동
|
e
|
다음 단어 앞으로 커서 이동
|
b
|
이전 단어로 이동
|
shift + ↑
|
한 페이지 앞으로 이동
|
shift + ↓
|
한 페이지 뒤로 이동
|
3l , 3G
|
현재 커서 위치한 행에서 3번째 행으로 이동
|
Ctrl + i
|
한 화면 위로 이동
|
Ctrl + b
|
한 화면 아래로 이동
|
Ctrl + d
|
반 화면 위로 이동
|
Ctrl + u
|
반 화면 아래로 이동
|
Ctrl + e
|
한 줄씩 위로 이동
|
Ctrl + y
|
한 줄씩 아래로 이동
|
4. 삭제
명령어
|
동작
|
x
|
한 문자 삭제
|
5x
|
커서가 있는 위치부터 5개의 문자를 삭제
|
d + ↑
|
커서있는 줄, 윗줄 2줄 삭제
|
d + ↓
|
커서잇는 줄, 아래줄 2줄 삭제
|
dw
|
한 단어 삭제
|
dd
|
한 줄 삭제
|
5dd
|
커서가 있는 라인부터 5개의 라인 삭제
|
db
|
커서의 위치에서 거꾸로 한 단어 삭제
|
D
|
한줄 내에서 커서있는 뒤 모두 삭제
|
u
|
바로 전에 수행한 명령을 취소
|
:5,10ㅇ
|
5~10번째 행 삭제
|
5. 복사와 붙여넣기
명령어
|
동작
|
yy
|
현재 줄을 버퍼로 복사
|
p
|
버퍼에 있는 내용을 커서 뒤에 삽입
|
P
|
버퍼에 있는 내용을 커서 앞에 삽입
|
3y
|
현재 줄에서부터 아래로 3줄 복사
|
:5, 10y
|
5~10줄을 버퍼로 복사
|
:30pu
|
30행에 버퍼 내용을 삽입
|
d
|
현재 커서가 위치해 있는 단어 복사
|
3yy
|
현재 행을 기준으로 3번째 행까지 n행 복사
|
6. 문자열 찾기
명령어
|
동작
|
/name
|
name 문자열 찾기
|
n
|
다음 name으로 이동
|
N
|
n과 같으며 역방향으로 이동
|
7. 문자열 대체
명령어
|
동작
|
:s/str/rep
|
현재 행의 str을 rep로 대체
|
:l,.s/str/rep/
|
1부터 현재 행의 str을 rep로 대체
|
:%s/str/rep/g
|
파일 전체 str을 rep로 전부 대체
|
:.$/aaa/bbb
|
커서의 위치로부터 파일의 끝까지 있는 모든 aaa를 bbb로 대체
|
8. 파일 저장 및 불러오기
명령어
|
동작
|
:w
|
지정된 파일에 저장
|
:wq, :x, ZZ
|
지정된 파일에 저장하고 vi를 종료
|
:w php.ini
|
php.ini 파일에 저장
|
:q
|
저장하지 않고 종료
|
:q!
|
저장하지 않고 강제 종료
|
:wq php.ini
|
php.ini에 저장하고 vi를 종료
|
:r php.ini
|
php.ini의 내용을 현재 커서가 있는데로 불러온다.
|
:e php.ini
|
현재의 화면을 지우고 새로운 파일 php.ini를 불러온다.
|
:5,10 w php.ini
|
5~10 줄까지의 내용을 php.ini에 저장
|
9. 기타
명령어
|
동작
|
:set nu
|
행 번호 보여주기
|
:set nonu
|
행 번호 보여주기 취소
|
.
|
바로 전에 실행한 명령어 재 실행
|
Ctrl + l
|
불필요한 화면 정리후 다시 표시
|