00. Functional Programming 썸네일형 리스트형 SBT와 SSH or SFTP를 이용한 개인용 Maven Repository 구축 저는 항상 내가 만든 소스에 대한 관리가 필요하다고 생각하는 사람입니다. 그래서 코드를 더욱 재활용할 수 있게 짜는 방법은 없을까? 또, 코드를 관리하는 방법이 없을까? 라는 생각을 합니다.(그러다 보니... 정작 코드를 많이 짜는 경우가 없네요ㅠㅠ)어찌 되었든, 개인의 Code를 관리하는 가장 좋은 방법은 Git + Maven이라고 생각이 듭니다. Git으로 코드에 대한 버전 관리를 하고, Maven으로 내가 만든 코드를 다른 프로그램에서도 쉽게 쓸 수 있다면 더할 나위 없이 좋으니까요.그래서 Maven을 사용하기 위하여 nexus를 깔고 사용법을 익히다가, "혼자 쓰는데 이렇게 대단하게(?) 할 필요가 있나?" 라는 생각을 하게 되었습니다. 그래서 검색을 해보니, SFTP나, SSH를 이용하여 Mav.. 더보기 Domain, Range, Codomain Category Theory(범주론)을 들어가기 전에 몇가지 미리 정의를 해놓아야 하는 것들이 있어서 포스팅을 합니다. 바로, Domain, Range, Codmain입니다. 사실 우리가 이미 학교에서 배운 내용인데, 영어로 해놓으니까 전혀 모르겠더라고요... 이것저것 공부하다가 위키를 보고 아... 하고 알게 되었습니다.간단하게 요약을 하면, 출처 : http://www.mathsisfun.com/sets/domain-range-codomain.html Domain : 정의역Codmain : 공역Range 또는, Image of Domain : 치역, 정의역의 상입니다. 앞으로는 한글을 쓰지 않고 영어 용어를 쓰도록 하겠습니다. 혹시 기억이 나시지 않는 분들(나와 같은)을 위하여 한번더 정리를 해봅시다.. 더보기 Scala에서 시스템 커멘드를 사용하기 Scala에서는 Bash Shell을 부를 수 있는 방법이 있습니다. 이로 인하여, 쉽게 다른 프로그램을 구동 시키거나, 결과 값을 불러 올 수 있습니다.예제는 Scala REPL을 사용 해 봅시다.먼저, Bash Shell을 사용할 수 있는 scala의 sys.process._를 Import 해 봅시다.scala> import sys.process._import sys.process._ 명령어 실행만약 명령어를 실행 하고 싶다면 scala> "{명령어}" !를 사용하면 됩니다. 그러나, 리턴값은 나오지 않습니다. scala> "ls -al" !warning: there was one feature warning; re-run with -feature for details합계 7156drwxr-xr-x .. 더보기 erlang Garbage collection 저번 포스팅에서 말했듯, Erlang은 기본적으로 JVM과 다른 garbage Collection을 갖고 있습니다. Erlang의 Garbage Collection은 process당 GC를 수행합니다. 그래서 JVM과 같은 Application에 대한 Stop the world 현상이 없습니다. 그리고, Soft realtime을 보장합니다. 먼저, erlang garbage collection을 보기 전에, 먼저 erlang process의 memory 구조를 알아 봅시다. 1. Erlang Process 메모리 구조 출처 : https://hamidreza-s.github.io/erlang%20garbage%20collection%20memory%20layout%20soft%20realtime/201.. 더보기 erlang CrashDump Viewer & CrashDump 추출 erlang에거 CrashDump는 매우 중요한 역할을 합니다. 지금 어떠한 프로세스가 많인 메모리를 차지하는지, 메일박스는 얼마나 차있는지, Actor구조는 어떻게 되어 있는지, 매우 중요한 요소중에 하나가 됩니다. 그러나, Crash Dump는 erlang VM이 Crash가 되었을 때 나타는 거라, 불편하기도 합니다. 그런데 이번에 회사 선배님께 알게된 좋은 팁이 있어서 공유 합니다. kill보통 "kill -9 {PID}"로 프로그램을 강제 종료할 때 쓰는 Linux에서 kill은 프로그램에 signal을 날려주는 역할을 합니다. 여기에 User Signal이 있는데, 만약 프로그램이 User Signal을 정의 해 두었으면 그것에 대한 콜백을 받아 동작합니다. 여기서 erlang은 User Si.. 더보기 Scala에서 JNI 사용하기 Scala는 기본적으로 JVM을 기반으로 사용되기 때문에 속도가 erlang에 비해서도 빠릅니다. 그러나, 영상처리와 같은 Heavy한 작업과 같은것은 C나, C++을 사용하는것이 좋을 것 같습니다. 그래서, 이번에는 Scala에서 JNI를 사용하는 방법을 알아보도록 합시다.이 포스팅은 http://hohonuuli.blogspot.kr/2013/08/a-simple-java-native-interface-jni.html를 기반으로 제작되었습니다. (사실 이 포스팅이 JNI도 나와서 자세하긴 합니다.) 일단 먼저, Scala Class를 만들어 봅시다. class Sample1 { // --- Native methods @native def intMethod(n: Int): Int @native def .. 더보기 erlang io:format과 같은 String Format 처음에 erlang을 시작했을 때, String Format이 매우 특이해서 놀랐습니다. 보통, '%'나 '\'를 많이 쓰는데 erlang은 '~'를 사용합니다. erlang Document에 자세히 나와있지만, 간단하고 많이 사용하는것을 한번 알아보겠습니다. erlang Document는 다음을 참고하시면 됩니다.http://erlang.org/doc/man/io.html#format-2 ~c C는 ASCII Code형식을 받습니다. 여기서 ~x.yc라는 형식을 쓸 수 있는데, 여기서 x는 구문이 차지할 칸수이고, y는 반복할 횟수입니다. 여기서 x가 -이면, 왼쪽 정렬을 하게 됩니다. 예제를 보면 쉽게 이해 할 수 있습니다. 1> io:format("|~10.5c|~-10.5c|~5c|~n",[$a,.. 더보기 erlang에서 _Var와 Var의 차이 erlang의 많은 예제 코드를 보면 _Var형식의 변수명들이 있습니다. 사실 저는 _Var형식의 변수명을 안좋아 해서.. 그냥 왜 저렇게 하지? 라는 생각이 있었는데.. 사실 이유가 있었더라고요...매우 기초적이라서 포스팅 쓰기도 거시기 한데, 일단 저처럼 모르는 사람이 있을수도 있으니까..일단 '_'는 다들 아실껍니다. Scala도 그렇지만 wildcard 변수 명입니다. 만약 _라고 하면, 이 변수는 Pattern Matching이나, 기타 다른 이유 때문에 있는 것이지 절대 다시 사용하지 않는다는 뜻 입니다.그렇다면 _Var는 어떤 것일까요? 보통 erlang Compiler는 함수에서 사용되지 않는 변수가 있으면 다음과 같은 Warning을 발생시킵니다. 1> c(ex1).ex1.erl:22: .. 더보기 Scala IDE 설치 & Hello World Example 1. Scala IDE 다운스칼라를 시작하기 앞서 Scala IDE를 설치합시다.이것이 Scala IDE 로고 입니다. 그럼 다운로드를 해봅시다. Scala IDE Download Page 환경은 Ubuntu를 사용합니다.각자의 시스템에 맞는 IDE를 다운받아 압축을 풉니다. 그러면 eclipse라는 폴더가 생성이 됩니다. 이 폴더에 들어가 eclipse를 실행하면 IDE가 뜹니다. 2. Hello World example자 이제 IDE를 만들어 봤으니, Hello World! 예제를 만들어 봅시다. Scala IDE도 여느 Eclipse와 같이 프로젝트를 생성하시면 됩니다.그 후, src폴더에 HelloWorld.scala를 만들고 다음과 같이 작성합니다. package HelloWorld object.. 더보기 이전 1 다음