일요일, 1월 12
Shadow

#067 JDK 7

미분류
1. Improved Type Inference for Generic Instance Creation  - 단순해진 Generics 이전 : Map<String, List<String>> anagrams = new HashMap<String, List<String>>(); JDK7 : Map<String, List<String>> anagrams = new HashMap<>(); - 레퍼런스 : http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000009.html 2. Language support for collections - Java 코드의 사이즈를 줄여주고, 가독성을 높여줌 이전 : final List<Integer> piDigits = Collections.unmodifiableList(Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 9 )); JDK7 : final List<Integer> piDigits = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 9]; - 레퍼런스 : http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/001193.html 3. Automatic Resource Management - exception handling을 줄여줌 - C++’s RAII과 C#’s using에...

#066 쓰레드(Thread)

미분류
- Application을 구성하는 기능 하나가 하나의 쓰레드 - Java에서는 Method를 하나의 쓰레드로 취급 - 기본적으로 Single Thread ->메서드 하나씩 순차적으로 실행 - 두개이상의 Method를 동시에 실행 Multi Thread 1.Thread클래스를 상속 class ThreadTest extends Thread{ public void run(){/*내용*/} //Thread클래스의 run()을 오버라이딩 } 2.Runnable 인터페이스를 구현 class ThreadTest implements Runnable{ public void run(){/*내용*/} //Runnable인터페이스의 추상메서드 run()을 구현 } 멀티쓰레드 프로그래밍 1. java.lang.Thread를 상속받음 2. public void run()에 멀티쓰레드로 실행할 내용구현 3. Thread의 start()호출 -> 멀티쓰레드로 2개이상의 메서드가 동시에 실행 -> 멀티쓰레드의 스케쥴은 렌덤   1. java.lang.Runnable 인터페이스를 상속 2. public void run()에 멀티쓰레드로 실행할 내용구현 3. Thread 생성자의 인자로 Runnable 인터페이스를 구현할 객체의 Reference Variable t.start ->target 속성이 null이 아니면 targer이 가르키는 객체의 run()을 멀티쓰레드로 실행 Thread상속 접기 public class ThreadTest1 { public...

#001 구글 파일 시스템 분산환경

미분류
Sanjay Ghemawat, Howard Gobioff, and the Shun-Tak Leung Google*   ABSTRACT 구글 파일 시스템은 대용량 분산 데이터전문 어플리케이션을 위한 유연한 분산파일 시스템으로,  저가의 일반적인 하드웨어 상에서 동작하면서도 무정지 기능(failuer tolerance)과 많은 수의 클라이언트에 대한 높은 군집성능(high aggregate performance)을 제공한다. 이러한 시스템설계의 기능상 목표는 기존의 분산 파일시스템들과  많은 부분이 공통되지만, 선행 파일시스템들의 예측과의 결정적인 차이점으로, 우리는 현재, 그리고 앞으로 예측되는 어플리케이션의 부하(workload)와 기술적 환경에 중점을 두고 설계하려고 노력했고,  이로 인해  전통적인 시스템디자인 방식을 재검토하고 근본적으로 다른 디자인컨셉을 시도하게되었다. 이 파일 시스템은 우리가 필요로했던 저장기능을 성공적으로 수행했으며 구글의 주 저장 플랫폼으로 채택되어 오랫동안 구글 서비스뿐만 아니라 대량의 데이터 셋을 요구하는 연구와 개발 분야에 사용되었다.  이중 가장 큰 클러스터는 수천개의 디스크에 걸쳐 구성된 수백 테러바이트의 사이즈를 가지며 동시에 수백명의 클라이언트에 의해 접속되고 있다. 여기서는 분산 어플리케이션을 지원하기위해 설계된 파일 시스템 인터페이스 확장을 소개하고, 이 설계의 다양한 측면과 실제 상황과 이론상의 벤치마크결과에 대해 이야기하려고 한다.   1.Introduction 구글 파일 시스템(GFS)은 급속히 늘어...

#065 ByteBufferPool

미분류
<source 2> ByteBufferPool.java public class ByteBufferPool { private static final int MEMORY_BLOCKSIZE = 4096; private static final int FILE_BLOCKSIZE = 10240; private final ArrayList memoryQueue = new ArrayList(); private final ArrayList fileQueue = new ArrayList(); private boolean wait = false; public ByteBufferPool(int memorySize, int fileSize, File file) throws IOException { if (memorySize > 0) initMemoryBuffer(memorySize); if (fileSize > 0) initFileBuffer(fileSize, file); } private void initMemoryBuffer(int size) { int bufferCount = size / MEMORY_BLOCKSIZE; size = bufferCount * MEMORY_BLOCKSIZE; ByteBuffer directBuf = ByteBuffer.allocateDirect(size); divideBuffer(directBuf, MEMORY_BLOCKSIZE, memoryQueue); } private void initFileBuffer(int s...

#064 reflesh

미분류
tid=setTimeout(a,b)은 b초후에 a함수를 실행합니다. 이것은 1회만 실행하는거구요. tid=setInterval(a,b)는 b초마다 a함수를 실행합니다. 이것은 무한루프가 되는거지요, 둘모두 실행후 중단할때에는 clearTimeout(tid) 와 clearInterval(tid) 로서 실행을 중단합니다. tid는 setTimeout과 setInterval을 실행후에 리턴되는 타이머 ID구요, 이 타이머ID로서 타이머를 중단할 수 있는거지요.   setTimeout을 이용한 반복문의 예제 <script> cnt=0; function a(){ if(cnt<10){ cnt++; alert(cnt); tid=setTimeout(a,1000); //1초후 a함수 실행 - 재귀호출 } else clearTimeout(tid); } a(); </script>   setInterval을 이용한 반복문의 예제 <script> cnt=0; function a(){ if(cnt<10){ cnt++; alert(cnt); } else clearInterval(tid); } tid=setInterval(a,1000); //1초후 a함수 실행 - 재귀호출 </script> // ...

#063 리플렉션(reflection)

미분류
* 정의 객체를 통해 클래스의 정보를 분석해 내는 기법 지금 실행중인 프로그램에서 사용하는 객체를 비춰줌. 지금 내가 사용하는 객체의 정보 가져오기, 객체의 매소드 호출등의 작업을 할 수 있게 해줌 - Class클래스 사용. - 클래스 객체의 형확인: instanceof   * 사용법 ex) 외부 Data객체를 가정하에..... 해당 객체의 정보는 배열형태로 리턴됨.(한 객체는 여러개의 정보를 포함하기 때문...) 1. Data객체 클래스의 메서드 알아내기 Class c = Data.class; Method[] m = c.getMethods(); 2. Data객체 클래스의 필드 알아내기 Class c = Data.class; Field[] f = c.getFields(); 3. Data객체 클래스의 생성자 알아내기 Class c = Data.class; Constructor[] cs = c.getConstructors(); 4. Data객체 클래스의 인터페이스, 상위클래스 알아내기 Class c = Data.class; Class[] iface = c.getInterfaces(); Class sc = c.getSuperclass();  객체 정보 가져 오기 예)  import java.lang.reflect.*; public class Exam_Reflection {     public Exam_Reflection(Object object) {     ...

#007 시맨틱-연관어

미분류
유의어ㆍ연관어 파악 주제별 분류 검색 트렌드ㆍ이슈 변화도 한눈에 한민옥 기자 mohan@dt.co.kr | 입력: 2009-12-23 21:02 | 수정: 2009-12-24 14:42 최근 검색 포털 시장에서 네이트의 기세가 빠르게 상승하고 있습니다. 네이트 운영업체 SK커뮤니케이션즈에 따르면 12월 둘째주 기준 네이트의 통합 검색 점유율은 10.23%로, 지난 2001년 출범이래 처음으로 두 자릿수를 돌파했습니다. 이같은 네이트 상승세의 일등공신으로 꼽히는 게 바로 시맨틱 검색인데요. 아직은 개념조차 다소 생소한 시맨틱 검색의 세계에 대해 알아보겠습니다. 시맨틱(semantic)이라는 단어를 사전에서 찾아보면 `의미의' 또는 `의미론의'라는 뜻으로, 시맨틱 검색은 한마디로 의미 기반의 검색이라고 할 수 있습니다. 이에 따라 좀 광범위하긴 하지만 시맨틱 검색은 단순히 단어의 의미를 알아서 그 동의어와 유의어, 연관어를 파악해 한번에 검색할 수 있음을 의미하기도 하고, 검색자의 마음을 읽는 맞춤 검색이라는 의미로 개인화 검색을 포함하기도 합니다. 현재 포털업계에서 얘기하는 시맨틱 검색은 주로 기존 키워드 매칭 방식의 한계를 보완하는 차세대 검색, 대안 검색의 이미지가 강합니다. ◇시맨틱 검색은 어떤 원리로 가능할까요?=시맨틱 검색은 의미를 이해하는 검색이라는 목표를 가지고 다양한 접근 방식으로 서비스를 제공합니다. 우선 가장 간단하게는 단어의 의미를 정의해 유의어, 동의어, 연관어를 파악합니다. 예를 들어 특정인의 출신 학교를 확인하고 싶을 때 아무개 ...

#006 네이트 시맨틱검색, 원리는 무엇일까

미분류
네이트가 최근 ‘시맨틱 검색’이란 서비스로 대박을 치고 있습니다. 시맨틱 검색이란 말 그대로 문서의 의미(시맨틱)을 분석해 검색하는 것을 말합니다. 국내에서 ‘시맨틱’을 전면에 내세운 서비스를 시작한 것은 네이트가 처음인 것 같습니다. 네이트는 이 서비스를 선보인 이후 지난 주 창사이래 처음으로 통합검색 점유율이 10%를 넘겼습니다. 네이트 홍보팀은 요즘 경마중계하듯 매주 자사 검색점유율 상승분에 대해 보도자료를 배포하고 있습니다. 네이트가 최근 얼마나 고무돼 있는지 보여줍니다. 하지만 네이트의 시맨틱 검색 기술에 대해서는 많이 알려지지 않은 것 같습니다. 언뜻 보기에는 단순한 서비스인 것처럼 보이지만, 이 서비스에는 검색엔진 및 자연언어처리 업계가 지난 10년동안 연구해온 결과물이 반영돼 있습니다. 시맨틱 검색이라는 말은 ‘시맨틱 웹’에서 차용된 용어입니다. 시맨틱 웹을 기술적으로 이해하려면, 온톨로지∙RDF 등의 용어를 알아야 합니다. 쉽지 않은 일이죠. 온톨로지는 컴퓨터가 인간의 인식 능력과 유사한 기능을 하도록 하기 위해 만들어 놓은 거대한 데이터셋이라고 이해하면 될 것 같습니다.. 시맨틱 웹은 XML 기반의 마크업 언어를 기반으로 하며, RDF라는 구조를 기반으로 합니다. 이렇게 쓰기는 했지만, 사실 저도 자세히 모르는 내용입니다. 하지만 네이트의 시맨틱 검색에 온톨로지, XML, RDF 등의 기술이 반영된 것은 아닙니다. 때문에 엄밀히 말해서 네이트의 시맨틱 검색은 흔히 얘기하는 ‘시맨틱’은 아니라고 볼 수 있습니다. 그렇다고 해서 네이트...

#006 시멘틱 웹

미분류
크게 부각되진 않았지만 얼마 전 네이트와 네이버에서 각각 '시맨틱' 및 '시맨틱 웹' 검색 서비스를 내놓은 적이 있었다. 네이트는 연초부터 베타 테스트를 하던 시맨틱 검색 기능을 오픈했다. 이 기법은 구문이나 문장 분석에서 중요 주제어를 추출하고, 이에 대한 값을 찾는 자연어 처리기술을 도입했다. 따라서 블로그, 게시판과 같은 구조화되지 않은 텍스트를 대상으로 주제 분류와 예상 답변을 제시하는 방식으로 그 뼈대는 일반적인 텍스트 기반 정보 검색(IR) 기법을 기반으로 하고 있다. 주제어 제시 방식이 마치 의미 기반 정보를 찾아 주는 것으로 보여 시맨틱이란 용어를 쓰는 듯 하다. 그런데, SK컴즈의 보도 자료를 보면 '시맨틱 웹'이라는 생뚱 맞는 내용을 등장시켜 혼란을 주고 있다. 시맨틱 검색은 1998년 시맨틱 웹이 주창되면서부터 차세대 검색서비스로 주목받으며 전세계적으로 연구개발이 진행되고 있는 분야이다. MS의 Bing이나 구글의 스퀘어드(Squared) 검색도 시맨틱검색의 일종이다. 국내에서는 솔트룩스나 시맨틱스가 시맨틱 검색을 개발하고 있다. 이같은 방식은 하키아(Hakia)와 파워셋(Powerset) 등 해외 시맨틱 검색 업체들이 개발했으나 실험실 단계에서 오픈해 아직 포털에 적용되지는 못했다. 정보 검색에 대한 두 가지 접근에서 보다시피 네이트가 이용한 (시맨틱) 기술은 전산학에서 꽤 오래된 분야로서 텍스트 분석, 자연어 처리, 기계 학습과 같은 분야는 인공 지능 분야에서 시맨틱 기술을 말하는 것이다. 하지만, 시맨틱 웹은 이와 완전히 다른 접근이다. 시맨틱 웹은 웹을 ...

#005 한국어뭉치

미분류
외국인을 위한 한국어사전과 말뭉치   강현화 경희대학교 한국어학과     Hyoun-Hwa Kang. Kyung Hee University. Korean dictionary for foreigners & corpus. Journal of The Applied Linguistics Association of Korea Vol. 16. No1, 2000   This paper1) discusses the necessity of Korean dictionary for foreigners and specifies some descriptive methods in Korean dictionary and their usefulness. First of all, this study points out the pitfalls of the current Korean dictionary and proposes publication of a new Korean dictionary for foreigners that can be distinguished from Korean dictionary for Koreans. For this purpose, this study carries out a thorough investigation into validity of Korean dictionary based upon the corpus. Second, this study analyses the grammatical information essenti...