본문 바로가기

전체 글418

SVN show log가 안될 때 svn conf 파일에 분명 아래와 같이 권한 설정을 해주었음에도 불구하고 svn log를 치면 권한이 없어서 log를 볼 수 없다는 메시지가 나온다. [/]test = rw 이유가 멀까????? svn에서 log를 볼 경우에는 따로 어떤 계정으로 보는 것이 아니라 anonymous로 보는 거라고 한다. 하지만 권한 설정 파일에는 anonymous에 대한 접근 정의가 되어 있지 않기 때문에 위와 같은 에러를 발생시키는 것이다. 해서 아래와 같이 anonymous 접근에 대한 정의를 추가.. [/]test = rw$anonymous = r 다시 svn log 명령어를 치니 log 결과가 잘 나온다!! 아래와 같이 *을 써도 동일하게 동작한다. [/]* = rw 2015. 6. 8.
패키지와 임포트 Package 자바, C#과 마찬가지로 Scala에서도 namespace 격인 package가 존재한다. Scala에서는 아래와 같은 3가지 방법으로 package를 선언하고 사용할 수가 있다. 자바에서의 package 사용 용법 1. 자바와 비슷한 형태 package com.jufactory class factory1 2. C#과 비슷한 형태 package com.jufactory { class factory1} 3. 중첩 형태 package com { package jufactory { class factory1 package otherfactory{ class factory2 } }} 만약에 아래와 같은 중첩 코드라면 package의 scope가 어떻게 될까?? package com { class .. 2015. 5. 28.
이름이 깨진 파일 제어하기 회사 업무로 방송용 TS 파일을 추출하고 있는데, 간혹 루트에 아래와 같이 인코딩이 깨진 파일이 쌓이는 것을 목격했다!! '아 저게 무슨 파일인지 알아야겠는데... mv도 안되고 cp 안되고 rm도 안되고 -_-;;;' 파일 이름이 깨져서 그런지 도무지 접근할 방법이 없었다.그래서 찾아본 결과 inode를 이용해서 접근할 수 있는 방법을 찾아냈다. inode란 어떤 파일이나 디렉토리를 생성하면 그에 따른 64byte의 파일 정보 테이블이라고 생각하면 쉬울 것 같다. inode에는 파일에 대한 상세 정보를 포함하고 있기 때문에 파일 이름으로 접근이 불가능할 시 inode를 이용하여 해당 파일에 접근할 수 있다. 우선 inode를 확인해보자. $> ls -ali 라고 치면 해당하는 inode를 식별하기 위한.. 2015. 5. 21.
Google Developer Summit Google Developer Summit이란 세미나에 다녀왔다. 사실 구글에서 이런 걸 한다는 것도 처음 알았다. (페북보고 우연히 신청한게 딱 당첨됨!) 장소는 구글캠퍼스서울이라고 이번에 새롭게 생긴 곳 같았는데, 아마 DCAMP랑 비슷한 역할을 하는 느낌?? 일단 구글에서 진행하는 세미나라 엄청 기대하고 갔다. 9:30분 쯤에 도착하니 이미 개발자들이 한자리씩 차지하고 앉아 있었다. 아마 다들 개인 앱 하나씩 가지고 있는 사람들이겠지? (왜냐하면 구글플레이에 자기 앱이 있는 사람만 신청할 수 있는 구조) 그나저나 구글캠퍼스서울 깔끔하고 좋다!! 간단한 소개 및 인사말이 끝나고, 바로 첫번째 세션이 진행되었다. Building for the Next Billion Users 첫 번째 세션에서는 어떻게.. 2015. 5. 17.
[DeepLearning] Caffe Nets, Layers, Blobs 이번 포스팅에서는 Caffe를 쓰기 위한 Caffe 내의 모델 구조를 어떤 식으로 구성하는가를 알아보려고 한다. 모델은 크게 Nets, Layers, Blobs으로 구성되어 있다고 할 수 있다. 1. Blobs Blob은 Caffe 내에서 데이터 처리나 Layer 간의 communite을 위한 구조체라고 생각하면 쉬울 것 같다. Caffe에서 Layer간의 데이터 통신은 Blob을 통해 연결된다.Blob은 실제 아래와 같은 역할을 한다. - 실제 데이터를 Caffe 내에서 알맞게 처리할 수 있도록 wrapping 시켜주는 역할을 한다.- CPU와 GPU 간의 동기화를 지원하고, lazy allocation memory 방식으로 메모리를 할당한다. (lazy allocation memnory란 선언이나 파.. 2015. 5. 13.
[DeepLearning] 우분투 14.04에 Caffe 설치 하기 파이썬에서 유명한 Deep learning 패키지 중에 Caffe와 Theano 가 있는데 우분투 14.04에 Caffe를 설치해보기로 했다. 우선 필수 빌드 패키지와 최신 커널 헤더를 설치한다. $> sudo apt-get install build-essential$> sudo apt-get install linux-headers-`uname -r` Caffe를 설치하기 위해서는 CUDA 설치가 필수적이다.CUDA(Compute Unified Device Architecture)를 설명하기 위해서는 우선 Multicore와 Manycore에 대한 개념 설명이 있어야 하는데 우선 Multicore는 지금 현재 나와 있는 듀얼코어 CPU, 쿼드코어 CPU 등이라고 할 수 있다. 커다란 CPU 틀안에 2개 .. 2015. 4. 28.
Trait 스칼라에는 자바의 Interface와 비슷한 trait라는 것이 존재한다. 비슷하면서도 다른 게 바로 자바의 Interface와 스칼라의 trait인데, 우선 자바의 Interface는 Interface 내에 정의만 가능하고 구현은 Interface를 상속받은 클래스 내에서 구현을 해야 했다.그에 반해 스칼라의 trait는 정의 뿐 아니라 실제 구현도 가능하기 때문에 사용자가 직접 구현을 하지 않아도 되는 장점을 가지고 있다.또한 Trait는 다중 상속 개념에 대해서 자바나 C++보다 합리적인 방안을 제시하고 있다. 이에 대한 설명은 차츰 진행하기로 하며, 우선 trait를 어떻게 사용하는지에 대해 살펴보자. trait Philosophical{ def philosophize(){ println("phi.. 2015. 4. 27.
[12강] 상속 스칼라에서도 추상 클래스가 존재하며 그에 대한 상속도 존재한다. abstract class Element{ def contents: Array[String]} 위의 예제는 Element 라는 추상 클래스를 정의한 것이고, contents라는 매서드를 정의만 한 것이다. contents라는 매서드가 정의만 되었기 때문에 추상 맴버가 되고 (추상 맴버일 경우에는 맴버 앞에 abstract를 붙여주지 않아도 됨) 추상 맴버를 가진 class는 자연스럽게 추상 클래스가 된다. (class 앞에 abstract 붙여 줘야 한다.)이 Element를 상속 받기 위해서는 contents라는 매서드를 반드시 구현을 해주어야 한다. 상속은 자바와 마찬가지로 extends 키워드를 사용한다. 상속은 private 맴버를 .. 2015. 4. 25.
[11강] 코드 중복 줄이기와 Currying 파일의 마지막 이름이 입력된 문자와 일치하는지를 찾는 함수, 파일 이름에 해당 문자열이 포함되어 있는지를 찾는 함수가 아래와 같이 정의되어 있다고 가정하자. def fileEnding(query : String) = { for (file fileName.contains(query)) filesMatching((fileName:String, query:String) => fileName.endsWith(query)) 함수는 filesMatching 함수에서 인자 타입을 명시하였기 때문에 인자 타입을 생략할 수가 있다. def fileEnding(query:String) = filesMatching(query, (fileName, query) => fileName.endsWith(query)) 또한 file.. 2015. 4. 24.