바보짓을 했습니다. n-gram 모델을 과제로써 구현하던 중에, 문자열->정수를 참조하기 위해 사전구조체를 만들어보자는 것이 처음 아이디어였습니다. (전에 다른 것을 만들때는 HashMap을 사용했었습니다.) 트리로 만들어볼까해서 Depth는 문자열에서 각 문자의 인덱스를 가리키고, 자식노드로 갈 때는 다음 글자에 따라 분기하는.. 대강 그림을 그려보면 다음과 같은... 예를 들어 '나무'라는 단어는 '나마' 노드에 들어가 있고, '무지개'라는 단어는 '마자가'노드에 들어가 있는.. 결과는 삽질. 24438개의 단어가 들어 있는 구조체 내부의 모든 단어를 한번씩 참조하는 데 걸린 시간은 HashMap은 10 ms, 제가 구현한 트리 구조체는 107 ms. 일단 HashMap을 사용할 때는 String 클..
요즘 수업중에 Perl을 아주 조금 써보고 있는데, Perl의 성능이 궁금해서 찾아보는데, 최근 결과가 별로 없어서 간단한 정규표현식 테스트를 직접해보았습니다. 알파벳과 한글이 같이 있는 문자열에서 알파벳을 알파벳이 아닌 문자를 '_'로 바꾸는 테스트입니다. 정규표현식 문자열 치환 테스트를 하는 이유는 펄에서 정규표현식을 언어수준에서 잘 지윈하고 있기 때문입니다. CPU Q6600, Memory 4G, Fedora 10 x86_64, Java는 openJDK 1.6 x86_64, Perl은 perl.x86_64 에서 이클립스로 작성후 테스트. 결론부터 말씀드리자면 일단 속도에서는 자바 완승, 메모리는 Perl 완승 입니다. 실제 코드는 다음과 같습니다. 자바 StringBuilder 를 사용해서 문자열을..
문서에서 단어를 추출하는 작업을 하고 있는데, 문자열에서 한글만 가져와야 할 일이 생겼습니다. 문자열에서 한글만을 가져오기 위해 두 가지 방법을 생각했습니다. 일단 한글이 정의되어 있는 유니코드 영역은 AC00-D7AF, 1100-11FF, 3130-318F입니다. 이 영역에 대해서는 [유니코드] 한글과 한자 영역 또는 http://www.unicode.org/charts/에서 Korean-specific 부분을 참조해주세요. 첫번째는 그냥 첫번째 문자부터 읽어서 한글이면 StringBuffer에 append하고 아니면 공백문자를 append하는 방법입니다. 위와 같이 무식하게 char하나하나 확인하는 방법이 되겠습니다. 두번째는 정규표현식을 사용해서 한글이 아닌 문자를 공백문자로 바꾸는 것입니다. 아래..
DSLR D90을 작년 말에 샀는데, 어느날 찍은 사진이 너무 잘나와서 인화를 하려고 인터넷 사이트에 들어갔습니다. 어느 곳에서 인화를 해야할지 몰라서 제이디포토포토라는 곳에 들어가서 인화사이즈에 대한 설명을 읽고 있는데 문득 제 사진기로 찍은 사진의 비율이 궁금해졌습니다. DSLR은 3:2라는 설명이 되어 있었지만, 4288:2848 의 비율이 과연 3:2가 맞는지 궁금해진 것입니다. 그런데 어떻게 확인해야 할지 난감했습니다. 지금 생각해보니 4288을 2848로 나눈 값이 1.5인지 확인하면 되고 4288을 2848로 나누면 1.5056179775280898876404494382022 이 되어 거의 정확히 1.5값이 됨을 알 수 있습니다. 별로 고민할 문제가 아니었습니다. 어쨌거나 아래와 같은 간단한..
윈도우에는 계산기가 들어있다. 바로 calc다. 이 calc로 컴퓨터의 간단한 성능테스트를 할 수가 있다. 50000을 입력한 후 !(느낌표,Shift+1)를 입력한다. !보면 알 수 있듯이 50000 factorial을 구하는 것이다. 50000*49999* ... * 1 이다. 곱하기 50000번 한다. 어쨌거나 요즘 잘나간다는 넷북으로 계산기 테스트를 해봤다. 삼성 NC10의 결과는 40초 이상이었다. 요즘 좀 최신형 피씨다 싶으면 17~18초 정도 나온다. 이 계산기는 싱글 코어만 사용하기 때문에, 하나의 코어에서 얼마나 빨리 계산할 수 있느냐를 나타낸다고 할 수있다. 50000! 의 결과는 다음과 같다. 위의 그림과 같이 213236승 정도의 단위이다. 한 가지 재밌는 점은 한 2년 정도전에 구..
java.util.Date는 날짜와 시간을 나타내기 위해 사용합니다. 이 클래스의 기본 생성자를 보면, System.currentTimeMillis() 를 사용해서 초기화하고 있습니다. System.currentTimeMillis() 를 보면, http://java.sun.com/docs/glossary.html#N 를 보면 native keyword는 이 메소드가 자바가 아닌 다른 언어로 작성되었다는 것을 의미하는... 어쨌거나 milli second 정확도의 시간을 long값으로 반환하는데, 위에 나와있듯이 1970년 1월 1일 자정부터 현재시간과의 차이를 나타납니다. 일단 long값은 -9,223,372,036,854,775,808 에서 9,223,372,036,854,775,807 까지의 값을 가..
페도라 9, OpenJDK, Nutch 0.9, tomca5.5(아파치 사이트에서 따로 다운받았습니다.) 그리고 Eclipse 3.3. Lucene기반의 검색 엔진. Nutch. 위키피디아에는 Nutch를 Cross-Platform이라고 소개해놓았지만, 윈도우에서 실행시키려면, Cygwin을 설치해야 합니다. 먼저 Nutch 0.9를 다운받아서 Crawler를 한번 돌려봅니다. Nutch의 웹인터페이스를 돌려보려면, 일단 검색할 인덱스가 있어야 겠죠. 저를 포함한 초보자들은 Nutch공식위키에 소개되어 있는 멍청이를위한너치가이드 를 참고해서 Crawler를 돌려봅니다. 일단 /usr/share/nutch-0.9 에 파일을 풀어놓았습니다. 위와 같은 파일을 볼 수 있습니다. 먼저 urls에 seed url..
StringBuffer 의 JavaDoc을 보면, 스트링을 만들기 위한 클래스를 왜 두 개 만들어 놓았는지 알 수 있습니다. StringBuffer와 StringBuilder의 차이점은 내부 클래스가 Thread 안전한가의 여부입니다. StringBuffer는 Thread-안전하며, StringBuilder는 Thread 안전하지 않습니다. 하지만 StringBuilder는 동기화를 수행하지 않기 때문에 더 빠릅니다. 무심코 단일 Thread 내에서도 StringBuffer를 사용했었는데, 단일 쓰레드 내에서는 StringBuilder를 사용해야겠네요. 소스를 열어보면, StringBuffer 에는 synchronized 가 붙어있는 것을 볼 수 있습니다.
이클립스에는 기본적으로 개미가 포함되어있습니다. 메뉴에서 Window -> Show View -> ANT 를 선택하면, 아마도 Outline 창이 있는 위치에 ANT View 가 보일 것입니다. 위와 같이 이클립스에서 개미보기를 한 화면을 확인할 수 있습니다. 왼쪽의 개미파일의 내용은 compile 임무만을 하나 갖고 있는데, src 디렉토리와 bin 디렉토리를 지정해주고, 컴파일을 시켜줍니다. 그리고 jar로 kbmsa.jar 을 만들고 있으며, 마지막으로 Complete라는 메시지를 출력하도록 합니다 이 개미파일을 실행시키기 위해서는 오론쪽 개미보기에서 제일왼쪽의 아이콘, 개미 왼쪽에 둥근 구슬이 붙어있는, 아이콘을 눌러주면, Console 뷰에서 그 실행내용을 확인하실 수 있습니다. 개미는 일반적으..
- Total
- Today
- Yesterday
- GMT
- IcedTea6
- Fedora 9
- Java
- 다음팟인코더
- SimpleDateFormat
- OpenJDK6
- Numbering
- xml2
- pl/java
- 병합정렬
- gl2
- JavaMail
- Arrays
- Eclipse
- 모토로이
- Linux
- userguide
- openoffice
- PostgreSQL
- OO3
- tsclient
- yum update
- 출력드라이버
- 파란 화면을 보았니
- subervsion
- Fedora 8
- output driver
- 리눅스
- smplayer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |