태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
Blog | Tag | Local | Media | Guest | Login  RSS
Development에 해당되는 글 12건
2008/03/12 :: Terminals 1.6e
2007/07/09 :: Markdown?
나의 꿈나무들
나의 꿈나무들 2008/05/06

요 며칠 쉬는 사이에 부쩍 애교가 늘어버린 딸.. 항상 장난끼 많은 아들... 내가 제일 사랑하는 녀석들... 건강하게 무럭무럭 자라다오...

회사 컨퍼런스 발표

대전 Best West Legend Hotel에서 회사 Conference를 개최했다. (4/17) 내가 Session 1 Speaker였다. 반응은 생각보다 좋았다. 다음 주에는 제주도로 출장을 간다... 컨퍼런스 세션을 열..

안성 남사당 바우덕이 축제에 다녀오다..

안성에서 유명한 남사당놀이 바우덕이 축제에 다녀왔다. 집에서 약 20여분 정도의 거리이기 때문에 부담없이...ㅎㅎ 금요일 퇴근길에 유연히 버스안에서 광고를 보고 이번주말을 계획하게 되었다. 약간의 구름이 끼었지만 매우 화창한..

Ganymede가 정식으로 Release가 되었다. (다운로드 페이지)

Eclipse 3.4버전이 포함되어있고, 23개의 프로젝트가 포함되어있다.

새로운 Feature를 많이 지원한다.

Learn more about Ganymede페이지에 가면 새로운 Feature에 대한 동영상을 볼 수 있다.

Cola: RealTime Shared Editing 데모 영상이 인상적이었다.

동시에 편집을 하는 것이 아닌가... ㄷㄷ

이제 툴로 모범적인 Extreme ProgrammingPair Programming이  지원되는 것인가...

ㅋㅋ 원래 Pair프로그래밍은 한대의 키보드를 같이 쓰는 것이건만..


6/27 0:20분 현재 Daum mirror, KAIST mirror 다 맛이 갔다... ㅠㅠ
크리에이티브 커먼즈 라이선스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

'Development' 카테고리의 다른 글

Eclipse Ganymede 정식 Release!!  (0) 2008/06/26
Erlang 스터디를 시작  (0) 2008/05/29
구글이 가끔 이상하다...  (0) 2008/05/15
Terminals 1.6e  (0) 2008/03/12
Yahoo가 세계에서 가장 큰 Hadoop Application 발표  (0) 2008/03/12
IE 6.0에서 3사쿠키 허용문제  (0) 2007/11/12

 태그 : 
이 글의 관련글(Trackback) 주소 :: http://pigmon.tistory.com/trackback/133
Name
Password
Homepage
비밀글 (Secret)

없는 시간이나마 쪼개서 Erlang을 시작하려 한다.

Erlang은 분산/병렬/동시성 프로그래밍을 적극적으로 지원하는 언어.[각주:1]

요즈음 Hadoop에 대한 많은 생각과 활용방안에 대한 생각을 하고 있던 차에.. 고감자님의 블로그 등을 보고 굉장히 재미있고, 쉬운 프로그래밍을 할 수 있을 것으로 기대되서. 시작하게 되었다.

뭐 함수형 언어라고 하는데(LISP과 비슷하다고 보면 되는건가...) 그건 그냥 언어들이 다 비슷비슷한거 같아서 그닥 와닿지는 않고 사용하기 쉽기만 하고, 간단한 프로그램으로 분산/병렬 프로그래밍을 지원한다는 것이 큰 장점인것 같다.

네이버 용어사전에서 풀어놓은 것을 보면

함수형 프로그램 작성 언어 [ functional programming language, 函數型-作成言語 ]

데이터에 대한 함수의 적용을 바탕으로 처리를 기술하는 프로그램 작성 언어. 주요한 것으로는 리스프(LISP)가 있다. 기존의 실행문형 언어 또는 절차형 언어에서는 대입 등의 처리에 의해서 같은 데이터가 차례로 변경되어 가기 때문에, 데이터를 참조하는 타이밍에 따라서 데이터의 값이 변하고 프로그램 작성자에게도 부담이 컸다. 함수형 언어에서는 함수의 입력이 되는 데이터와 출력이 되는 데이터는 서로 다른 데이터이며, 절차형 언어에서와 같은 데이터의 예기치 못한 변경(부작용)을 고려할 필요 없이 프로그램을 작성할 수 있다.

흠흠... 대충 이해 완료.

아무튼 내 놀고 있는 리눅스 머신으로 단기간에 일정 수준으로 끌어 올리는 것을 목표로 잡아서 공부해 봐야겠다.

Java도 익숙해 지기 까지 한달정도 걸리지 않았는가...

주변에서 C공부를 다시 하라고 추천하는 사람도 있는데.

어차피 나는 시스템 프로그램을 할 것도 아니고, 응용 프로그래밍을 하는 사람 아닌가. 닭잡는데 소잡는 칼을 사용할 필요는 없다.

  1. </font><a title="http://agile.egloos.com/3476760" href="http://agile.egloos.com/3476760"><font face="georgia,'times new roman',times,serif" size="2">http://agile.egloos.com/3476760</font></a><font face="georgia,'times new roman',times,serif" size="2"> [본문으로]
크리에이티브 커먼즈 라이선스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

'Development' 카테고리의 다른 글

Eclipse Ganymede 정식 Release!!  (0) 2008/06/26
Erlang 스터디를 시작  (0) 2008/05/29
구글이 가끔 이상하다...  (0) 2008/05/15
Terminals 1.6e  (0) 2008/03/12
Yahoo가 세계에서 가장 큰 Hadoop Application 발표  (0) 2008/03/12
IE 6.0에서 3사쿠키 허용문제  (0) 2007/11/12

 태그 : 
이 글의 관련글(Trackback) 주소 :: http://pigmon.tistory.com/trackback/129
Name
Password
Homepage
비밀글 (Secret)

구글 코드 사이트를 뒤져볼라고 들어갔는데... 이런 이상한 현상이 나타났다...

Blog로 나와야 할 곳이 일본어로 ブログ로 나오는 것이 아닌가...

내 브라우져가 일본어 버전도 아닌데... 버그인가 하고 Refresh했더니 다시 영어로 나온다.

아마도 Globalization작업이 진행중인가보다... 구글 코드도 한글로 볼 수 있는 것인가... 뭐 그닥 상관없지만 말이다.

캡쳐

크리에이티브 커먼즈 라이선스
Creative Commons License

'Development' 카테고리의 다른 글

Eclipse Ganymede 정식 Release!!  (0) 2008/06/26
Erlang 스터디를 시작  (0) 2008/05/29
구글이 가끔 이상하다...  (0) 2008/05/15
Terminals 1.6e  (0) 2008/03/12
Yahoo가 세계에서 가장 큰 Hadoop Application 발표  (0) 2008/03/12
IE 6.0에서 3사쿠키 허용문제  (0) 2007/11/12

이 글의 관련글(Trackback) 주소 :: http://pigmon.tistory.com/trackback/121
Name
Password
Homepage
비밀글 (Secret)
Terminals 1.6e

아마도 윈도우 개발자의 경우 대부분 터미널 서비스 클라이언트 를 사용할 것이다.

그런데 불편하게시리 멀티로 사용하려면 불편함이 이만저만이 아니다.

그러나, 발품을 찾으면 찾게 마련이다. Terminals라는 프로그램이 이것을 해결해 준다.

일단 UI를 좀 살펴보면..

이렇다.

상단부분에는 탭이 있어서 연결을 여러개 해 놓고 변경을 할 수 있으며 좌측 부분에 퀵 런쳐(?)가 있어서 편리하게 사용할 수 있다.

그런데 화면을 보니 좀 이상하지 않은가?

맞다. 위 화면은 Ubuntu 7.10에 VNC 프로토콜로 접속한 화면이다.

Terminals는 여러가지 프로토콜을 지원해 주는데,

RDP, VNC, VMRC, Telnet(SSH포함), RAS, ICA Citrix프로토콜을 지원해 준다.

이 프로그램은 설치가 필요없고 다운로드 후 압축을 풀고 바로 실행하면 된다. 소스가 필요하다면 다운로드해서 사용해도 된다.

매우 편리하다. ^^;

사실 PC에 Ubuntu Linux가 설치되어있고 노트북으로 작업을 하는데 RealVNC나 이런 프로그램류를 사용하기도 불편했었는데, 마침 잘 되었다.

이런 프로그램들이 많이 나왔으면 하는 바램이다.

크리에이티브 커먼즈 라이선스
Creative Commons License

'Development' 카테고리의 다른 글

Erlang 스터디를 시작  (0) 2008/05/29
구글이 가끔 이상하다...  (0) 2008/05/15
Terminals 1.6e  (0) 2008/03/12
Yahoo가 세계에서 가장 큰 Hadoop Application 발표  (0) 2008/03/12
IE 6.0에서 3사쿠키 허용문제  (0) 2007/11/12
Flash MP3 player 제작법 동영상  (0) 2007/10/30

 태그 : 
이 글의 관련글(Trackback) 주소 :: http://pigmon.tistory.com/trackback/109
Name
Password
Homepage
비밀글 (Secret)

내가 매우 관심을 가지고 있는 것중의 하나인  Hadoop Project의 뉴스거리가 난 것을 오늘에서야 보았다.

- 야후가 세계에서 가장 큰 Hadoop Application을 발표했다고 한다. (2008/2/19)

물론 Hadoop은 Amazon EC2/S3서비스에서도 사용되고 있었지만, 이번 야후에서 발표한 것이 Hadoop을 이용한 것중 가장 크다고 한다. (a more than 10,000 core Linux cluster)

이번에 발표한 내용은 Yahoo! Search Webmap이라는 Application인데 데이터의 규모가 다음과 같다.

Some Webmap size data:

  • Number of links between pages in the index: roughly 1 trillion links
  • Size of output: over 300 TB, compressed!
  • Number of cores used to run a single Map-Reduce job: over 10,000
  • Raw disk used in the production cluster: over 5 Petabytes

Hadoop의 목표가 10,000노드 클러스터라던데,

Yahoo Grid Team에서 Hadoop에 손질을 했겠지만... 10,000노드를 넘어버리는 상황이 생겨버렸군..

 

참고사이트

크리에이티브 커먼즈 라이선스
Creative Commons License

이 글의 관련글(Trackback) 주소 :: http://pigmon.tistory.com/trackback/108
Name
Password
Homepage
비밀글 (Secret)
헤더에 다음을 추가해 준다.
Header명 : P3P
Header값 : CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"

크리에이티브 커먼즈 라이선스
Creative Commons License

 태그 : 
이 글의 관련글(Trackback) 주소 :: http://pigmon.tistory.com/trackback/93
Name
Password
Homepage
비밀글 (Secret)




또한 여기도 참고
크리에이티브 커먼즈 라이선스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

 태그 : 
이 글의 관련글(Trackback) 주소 :: http://pigmon.tistory.com/trackback/85
Name
Password
Homepage
비밀글 (Secret)
http://kr.sun.com/korea/sun_info/2004/web_spring/sunintrend/trend02.html
 

버클리 데이터베이스는 트랜잭션을 관리해 주는 소스가 개방된 라이브러리형 데이터베이스로서 확장성과 성능이 뛰어나다. 다음 그림은 버클리 데이터베이스가 일반적인 관계형 데이터베이스와 어떤 구조적인 차이점이 있는지 잘 설명해 준다.

일반 관계형 데이터베이스는 독립된 프로그램으로 구성되어 애플리케이션과 따로 동작하면서 애플리케이션과 네트워크가 ‘inter process communication’을 통해 자료를 주고받는다. 하지만 버클리 데이터베이스는 컴파일 시 애플리케이션에 링크되어 애플리케이션의 메모리 어드레스를 함께 사용한다. Locking, 로그 관리, 메모리 관리 등과 같은 기본적인 모든 데이터베이스의 작동이 라이브러리 내에서 수행되고, 멀티 프로세스 또는 프로세스에 있는 멀티 쓰레드는 동시에 데이터베이스를 사용할 수 있다.
결과적으로 프로세스 간 통신이 사라지게 되어 시스템의 전체적인 구조가 간단해진다. 당연히 버클리 데이터베이스는 일반적으로 널리 사용되고 있는 언어인 Java, C, C++, Perl, Tcl, Phthon 그리고 PHP의 API를 제공해 준다.

또한 버클리 데이터베이스는 많은 플랫폼을 지원한다. 모든 유닉스와 리눅스 플랫폼, MS-Windows 플랫폼, 32bit, 64bit 플랫폼, 하이엔드 인터넷 서버(High-end Internet Server)나, 데스크톱 시스템, 노트북 등 모든 곳에서 운용이 가능하다고 볼 수 있다.

버클리 데이터베이스는 다음과 같은 기본적인 기능을 수행한다.

 

1. Page cache management
불필요한 I/O를 줄임으로써 빠른 데이터 접근을 지원한다.
2. Transaction and logging
데이터베이스 복구를 보장한다.
3. Locking
여러 사용자에 의한 다중 읽기 및 쓰기(multiple read/write)를 보장한다.

특히, 일반적인 관계형 데이터베이스와 차별화된 내용은 다음과 같다.

1. SQL 개념의 질의문은 지원되지 않는다.
2. 객체 지향적(Object Oriented)으로 설계되어 있지 않다.(버클리 데이터베이스는 C로 짜여졌다).
3. Network 기능이 없다.
4. 데이터베이스 서버가 아니다.

현재 버클리 데이터베이스는 4.2.X가 최신 버전이다. 비록 프리웨어지만, DB라는 이름에 걸맞게 여러 유틸리티 프로그램도 함께 제공한다.

#ls bin
db_archive*
db_checkpoint*
db_deadlock*
db_dump*
db_load*
db_printlog*
db_recover*
db_stat*
db_upgrade*
db_verify*

 

라이브러리의 구조는 다음과 같다.

#ls lib
db.jar
libdb-4.2.a
libdb-4.2.la
libdb-4.2.so*
libdb-4.so@
libdb.a
libdb.so@
libdb_java-4.2.a
libdb_java-4.2.la
libdb_java-4.2.so*
libdb_java-4.2_g.so@
libdb_java-4.so@
libdb_java.so@

해더 파일들은 무척이나 간단하다.

#ls include
db.h
db_cxx.h

 

버클리 데이터베이스는 데이터를 어떻게 관리할까? 먼저 데이터의 구조는 무척이나 간단하다. 데이터 파일에 저장되는 레코드의 구조는 다음과 같다.

SQL의 테이블, 컬럼 구조에 익숙한 개발자라면 위 표에서 Key, Value 구조의 막막함이 느껴질 것이다. 하지만 잘 짜여진 데이터 구조가 바탕에 있다면 Key, Value의 간단, 명료함은 그 가치를 나타낼 것이다.
위의 구조는 Java 객체중 Properties 객체와 유사하다. 이 구조를 바탕으로 데이터베이스는 레코드 삽입, 삭제, 수정, 그리고 찾기 기능을 수행한다.
여기서 알아두어야 할 중요한 사항은 Value 부분에 대해서는 전혀 오퍼레이션을 하지 않는다는 것이다. Value는 Key로 구분되는 데이터일뿐이다. 이는 Value 부분에 대한 찾기 기능이 없다는 뜻으로 특정 Value를 찾고자 한다면 그 Key 값이 무엇인지를 먼저 알아야 한다.

Key와 Value에 대한 특징은 다음과 같다.

1. Byte 형태의 값을 갖는다.
2. 길이는 고정적이거나 가변적이다.
3. Key나 Value에 대한 형태는 프로그래머에 의해 결정된다.
4. 최대크기는 4GB

네 가지 주요 특징 가운데 세 번째 특징은 프로그래머에게는 부담이 될 수도 있다. 버클리 데이터베이스는 Key와 Value를 의미가 없는 단순한 ‘byte string’으로 인식하고 그에 대한 정보를 하나도 갖고 있지 않기 때문이다. 따라서 Key와 Value가 의미를 갖기 위해서는 프로그래머가 미리 구조를 설계한 후 그 구조에 맞게 Key와Value 값을 가공하여 사용해야 한다. Key와 Value 구조를 모른다면 그 데이터베이스는 의미없는 Byte 덩어리일 뿐이다.

C나 C++로 개발하는 프로그래머일 경우에는 Struct 문장을 사용하여 Key와 Value 구조를 정의하여 사용할 수 있다. 개발 언어가 Java일 경우에는 Object Serialization을 통해 손쉽게 객체를 처리할 수 있다.

 

Key와 Value에 대한 정보가 없다는 것은 개발자나 애플리케이션의 측면에서 볼 때 넘어야 할 걸림돌이다. 모든 것을 프로그래머가 책임져야 한다. 하지만 이러한 특징을 역으로 생각한다면 Key 값과 Value 값에는 어떠한 값이든 넣을 수 있다는 또 다른 가능성도 같이 제공해 준다. 그림이나 사운드든 파일이나 문서든 데이터 형태에 구분받지 않고 Key와 Value 값으로 사용할 수 있는 셈이다. 물론 대부분의 관계형 데이터베이스도 이러한 기능을 지원해 준다.
지금까지는 버클리 데이터베이스가 일반 관계형 데이터베이스와 어떻게 다른지 간략하게 살펴보았다. 그럼 이제부터는 프로그래머가 맛있어 하는 소스를 맛보도록 하겠다. 다음 프로그램은 버클리 데이터베이스를 사용한 간단한 레코드 삽입 프로그램이다. 얼핏보면, isam을 이용한 자료 처리 프로그램과 유사하다.

● 레코드 입력 프로그램 <코드 1>

프로그램<코드 1>을 라인별로 간단히 설명해 보겠다.

12 라인 - 버클리 데이터베이스를 참조하기 위한 객체를 생성한다.
13 라인 - 에러 메세지가 출력될 스트림을 설정한다.
14 라인 - 에러 메세지에 출력될 메세지 prefix
15 라인 - 데이터 파일을 생성하거나 이미 존재하면 그것을 사용한다.


여기서 Open 함수 API의 정확한 정의는 다음과 같다.

public void open(DbTxn txnid, String file,
String database, int type, int flags, int mode)
throws DbException, FileNotFoundException


4번째 파라미터인 Db.DB_BTREE에 대해서는 다음 기회로 미루겠다.

17~30 라인 - Dbt라는 객체를 통해 데이터 파일에 있는 Key/Value를 사용할 수 있다. 24(29), 25(30) 라인에서는 각각 Byte 데이터와 크기를 설정했다.
33 라인 - Key 값과 Value 값을 데이터 파일에 저장한다. 이때 사용한 플래그는 Db.DB_NOOVERWRITE이다. 이 플래그가 설정되면 이미 존재하는 키 값을 저장할 경우 에러가 발생하고, Db.DB_ KEYEXIST 에러 값을 리턴한다. 기본적으로 버클리 데이터베이스는 오류가 없으면 0을 반환하게 되어 있다. 만약 에러가 발생한다면 0 이상의 값을 반환한다.
36 라인 - 데이터베이스 사용을 마친다. 만약 close를 입력하지 않는다면 저장한 데이터는 파일에 기록되지 않고 사라지게 된다. 이는 저장된 자료가 파일이 아닌 메모리의 캐시 영역에 저장되고 사용되기 때문이다. 따라서 추후 사용을 위해 반드시 close 함수나, sync() 함수를 호출해야 한다.

저장을 했으니, 이제 조회를 할 차례다.

● 레코드 조회 프로그램 <코드 2>

프로그램<코드 2>에 대해 라인별로 간단히 설명해 보겠다.

22, 23, 24 라인 - 데이터 검색을 위해 Key 값에 대해서만 찾고자 하는 값을 설정했다.
30 라인 - get method를 호출하여 검색을 한다. 해당되는 Key 값을 갖는 자료를 발견하면, Value 객체에 해당되는 값이 들어간다.
33 라인 - Value Dbt 객체에서 데이터를 갖고와 String으로 저장한다.

앞서 예로 든 두개의 프로그램은 버클리 데이터베이스의 저장 및 조회 프로그램의 기본적인 구조를 보여준다. 여기서 소개된 예제 프로그램은 기본에 충실한 간단한 것이다. 하지만 버클리 데이터베이스가 그리 간단하게 돌아가는 것은 아니다. 이번에는 소개를 하지 못했지만, 기본적인 사용법을 벗어난 다음과 같은 고급 기능들도 있다.
고급 기능에 대한 자세한 설명은 다음 기회로 미루고 이번에는 버클리 데이터베이스에 대한 첫 소개의 기회로 삼을까 한다.

1. cursor를 사용한 데이터 처리
2. DBEnv 객체를 이용한 데이터베이스 환경 사용
3. 4가지의 데이터 접근 방법(BTREE, HASH, QUEUE, REC_NO)
4. Object 객체화
5. Join 검색
6. Dbt의 파생 클래스
7. Sleepycat의 새로운 collection API
8. 트랜잭션 처리
9. locking
10. 로깅 관리
11. 데이터베이스 복구

 
 
 
 
크리에이티브 커먼즈 라이선스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

'Development' 카테고리의 다른 글

IE 6.0에서 3사쿠키 허용문제  (0) 2007/11/12
Flash MP3 player 제작법 동영상  (0) 2007/10/30
버클리 데이터베이스 소개 from SUN  (0) 2007/09/12
IE 버전별 javascript또는 css이용  (0) 2007/07/11
Markdown?  (0) 2007/07/09
러시아 페인트공 알고리즘  (0) 2007/06/15

 태그 : 
이 글의 관련글(Trackback) 주소 :: http://pigmon.tistory.com/trackback/55
Name
Password
Homepage
비밀글 (Secret)

<!--[if lte IE 6]>
<style type="text/css">.ie{ margin-top:30px;margin-bottom:-30px; }</style>
<![endif]-->


이런식으로 IE와 FF에서 동일하게 보이도록 함...


XSL 에서는

<xsl:comment><![CDATA[[if lte IE 6]>
<style type="text/css">.ie{ margin-top:30px;margin-bottom:-30px; }</style>
<![endif]]]></xsl:comment>



앞에 썻던 내용중에 보충

IE 선택적 적용(Conditional Comments) 부분, ie에서만 동작기하길 원하는 js나 ie의 css 버그 처리 때문에 사용하는 경우 많음


[ http://www.positioniseverything.net/articles/multiIE.html ]

[ http://msdn2.microsoft.com/en-us/library/ms537512.aspx ]


  • gt = selects greater than  보다큰 :  if gt IE 6 ->  현재버전 > 6
  • lt = selects less than 보다 작은 :  if lt IE 6 ->  현재버전 < 6
  • gte = selects greater than or equal to 같거나 큰  :  if gte IE 6 ->  현재버전 >= 6
  • lte = selects less than or equal to 같거나 작은  :  if lte IE 6 ->  현재버전 <= 6
  • 그밖에 ! 
    1. To select exclusivly for any  non IE - use " IE  & !IE " for a downlevel-revealed within a downlevel-hidden CC

      <!--[if IE]><![if !IE]><![endif]-->  html <!--[if IE]><![endif]><![endif]-->

    2. To select for  IE 5.01 only - use " IE 5.0 " or "lte IE 5.0" or "!gt IE 5.0" or "lt IE 5.5000" or "!gte IE 5.5000"

      <!--[if IE 5.0]>  html <![endif]-->

    3. To select for  IE 5.5 or 6 or 7.0 - use " !IE 5.0 " or "!lte IE 5.0" or "gt IE 5.0" or "!lt IE 5.5000" or "gte IE 5.5000" (all less specific)

      <!--[if !IE 5.0]>  html <![endif]-->

    4. To select for  IE 5.5 only - use " IE 5.5000 "

      <!--[if IE 5.5000]>  html <![endif]-->

    5. To select for  IE 5.01 or 6 or 7.0 - use " !IE 5.5000 " (less specific)

      <!--[if !IE 5.5000]>  html <![endif]-->

    6. To select for  IE 6 only - use " IE 6 "

      <!--[if IE 6]>  html <![endif]-->

    7. To select for  IE 5.01 or 5.5 or 7.0 - use " !IE 6 " (less specific)

      <!--[if !IE 6]>  html <![endif]-->

    8. To select for  IE 7.0 only -