이번엔 DeveloperWorks의 [리눅스, 오픈소스]관련 문서중 [OpenSSL[각주:1] API를 이용한 보안 프로그래밍, Part 1: API의 개요 (한글)]을 소개하려합니다. 필자가 C에 대한 이해와 실무 경력이 부족한 관계로 이 문서가 실제로 얼마나 도움이 될지는 모르겠습니다. 그러나 리눅스에서 보안 프로그래밍에 관심이 있는 유저라면 한번쯤 읽어볼만한 문서라고 생각합니다.

원문 : OpenSSL API를 이용한 보안 프로그래밍, Part 1: API의 개요 (한글)

 필자인 Kenneth는 MediNotes Corp.(West Des Moines, Iowa)의 소프트웨어 엔지니어입니다. 페루, 나브라스카에 있는 Peru State College에서 경영학 학사 학위를 받았고, Southwestern Community College에서 컴퓨터 프로그래밍의 Associate of Science도 보유하고 있습니다.

아래는 원문의 서론부분입니다. 한번 읽어보시고 맘에 드시면 위쪽의 원문 링크를 클릭하셔서 전체 내용을 보세요.

보안 통신용 오픈 라이브러리인 OpenSSL용 API를 사용하는 방법을 배운다는 것은 힘든 일입니다. 문서화가 아직 덜 되어있기 때문입니다. 이 글을 통해서 이를 극복해 봅시다. 기본 연결을 설정한 후에, OpenSSL의 BIO 라이브러리를 사용하여 보안/비보안 연결을 구축하는 방법을 배워봅시다. 에러 탐지에 대한 부분도 설명합니다.

OpenSSL API와 관련한 문서는 약간 모호하다. OpenSSL의 사용법에 대한 튜토리얼도 많지 않으므로, 애플리케이션에서 이를 실행하는 것은 초보자에게는 힘든 일이다. 그렇다면, OpenSSL을 사용하여 기본 보안 연결을 어떻게 구현할 것인가? 이 가이드에서 이러한 문제를 풀어보자.

OpenSSL을 구현하는 방법을 배우는 것과 관련된 문제 중 하나는 문서화가 덜 되어있다는 점이다. 불완전한 API 문서는 개발자가 API를 사용할 수 없게 한다. 하지만, OpenSSL은 여전히 존재하고 강력하다. 왜일까?

OpenSSL 은 보안 통신용 오픈 라이브러리로 유명하다. Google에서 "SSL library"를 검색하면 OpenSSL이 상위로 리턴된다. Eric Young과 Tim Hudson이 개발한 SSLeay 라이브러리에서 파생하여, 1998년에 시작되었다. 다른 SSL 툴킷으로는 GNU General Public License하에서 배포되는 GNU TLS와, Mozilla Network Security Services (NSS) (참고자료)가 있다.

그렇다면, OpenSSL이 GNU TLS, Mozilla NSS 등 보다 나은 점은 무엇인가? 라이센싱이 한 몫을 한다. (참고자료) 게다가, GNS TLS는 TLS v1.0과 SSL v3.0만 지원한다. 그 이상은 지원하지 않는다.

Mozilla NSS는 Mozilla Public License와 GNU GPL 하에서 배포되고, 개발자가 선택할 수 있다. Mozilla NSS는 OpenSSL보다 크고, 라이브러리를 구현하려면 다른 외부 라이브러리가 필요하다. 하지만 OpenSSL은 독립적이다. OpenSSL과 마찬가지로, 대부분의 NSS API는 문서화가 되어있지 않다. Mozilla NSS는 PKCS #11 지원을 갖고 있는데, 이는 Smart Cards 같은 암호 토큰에 사용된다. OpenSSL은 이러한 지원이 부족하다.

조건

이 글을 충분히 활용하려면,

  • C 프로그래밍에 능숙해야 한다.
  • 인터넷 통신에 대해 잘 알고 있어야 하고, 인터넷에서 실행되는 애플리케이션을 작성할 수 있어야 한다.

OpenSSL에 대한 완벽한 이해가 전적으로 필요한 것은 아니다. SSL에 대한 간략한 설명은 나중에 제공하겠다. SSL에 대한 상세한 설명은 참고자료 섹션을 참조하라. 암호법에 대해 알고 있어도 도움이 되지만, 필수적인 것은 아니다.


 드림위즈 G카페에서 우연히 발견한 글입니다.
 
어떤 내용이냐하면 이건희 삼성그룹 회장의 손자, 정용진 신세계 부회장의 아들, 영화배우 차인표씨의 아들이 다닌다는 초등학교에 관한 얘기입니다. 걍 부러워서 적은 글입니다. 원문을 보시려면 아래 링크를 클릭하세요.
원문보기


 사립 영훈 초등학교는 서울시 강북구 미아삼거리역 구석진 골목에 자리하고 있다. 시큼한 냄새를 풍기는 시장을 지나서 들어서는 일반 초등학교와 다를바 없어보이는 이 학교는... 그러나 주변에 설치된 CCTV 카메라, 원격제어되는 출입문 등으로 출입이 자유롭지 않아보인다고 한다.

 한반에 한국인 담임 선생님과 외국인 부담임 선생님이 배정되고 수업 과목의 50% 정도가 영어로 진행된다고 한다. 특히 전교생 숫자만큼 영어 강사를 확보해 일대일 지도는 물론 부진한 학생들까지 특별교육을 실시하는 이 학교는 아이들의 의견이나 표현을 적극적으로 유도하는 쌍방향수업이다.

학생 선발이 추첨식이라지만 일년에 700 ~ 800만원 정도의 비용이 필요하다고 하니 아무나 지원할 수는 없을거라 생각한다.
 - 분기당 수업료 170여만원
 - 일년 스쿨버스 이용료 90만원
 - 식사는 한끼당 2,800원
 - 그외에 각종 행사비, 교복 구매비용 등등

 "나도 이런 학교에서 시작했다는 지금쯤은 다른 모습일까???" 아쉬운 마음에 한번 고개를 갸우뚱 해봅니다.

 지난주 목,금 이틀동안 대부도라는 곳으로 팀 워크샵을 다녀왔습니다.
 19명(아마 19명이 맞을겁니다.)이 펜션을 하나 빌려서 갔는데, 평일에 30만원이더군요.

 2층집에 방 네개, 화장실 겸 욕실 세개, 1층에 주방 하나, 2층에 간이 조리시설(이것도 거의 독립적인 주방이더군요.), 회의실 하나, 바베큐 파티용 시설(야외 의자, 식탁, 바베큐 그릴 등등), 미니 풀장, 인터넷 회선 및 PC 한대, 스카이 라이프, HD TV 이상이 펜션 내부의 시설이구요. 차고가 없다는게 단점이더군요.
 펜션 단지 공동 시설로 족구장, 농구장이 두곳 가량 설치되어 있었습니다. 편의점 옆에 실내 야구장(동전넣고 기계가 던지는 공을 치는 곳 아시죠 ^^ )이 있었구요.

 야구, 족구, 농구를 번갈아가며 해서 그런지 주말 내내 집에 누워 있었습니다. 아직까지도 피곤하네요.
너무 피곤해서 토요일에 있었던 JCO 오픈소스 2007 컨퍼런스에도 가질 못했네요.
에휴 아쉬워라.
 이번에는 IBM DeveloperWorks의 오픈소스 관련 문서를 소개하고자합니다.
[PHP로 커스텀 검색 엔진 구현하기(한글)]이라는 문서이며, [Sphinx[각주:1]를 사용하여 콘텐트를 색인하고, 텍스트를 빠르게 찾으며, 유용한 검색 결과 만들기]라는 부제가 붙어있습니다. 이번에도 한글로 된 문서네요. 번역하신 분에게 감사드립니다.

저자인 Martin Streicher는 Linux Magazine 편집장이로군요. 퍼듀 대학에서 컴퓨터 과학 석사 학위를 받았으며, 1986년부터 파스칼, C, 펄, 자바와 최근에는 루비 프로그래밍 언어로 유닉스 계열 시스템을 프로그래밍해 왔다고 합니다.

원문 : PHP로 커스텀 검색 엔진 구현하기(한글)

Google과 이와 비슷한 종류의 검색 엔진들은 그 성능이 뛰어나지만, 이러한 검색 엔진들이 모든 사이트에 잘 맞는 것은 아닙니다. 여러분의 사이트 콘텐트가 매우 특수한 것이라면 Sphinx와 PHP로 로컬 검색 시스템을 만들어 봅시다.

인터넷 시대에, 사람들은 패스트푸드와 같은 형태의 정보를 원한다. 즉각적으로 제공되고, 노력을 들이지 않아도 되며, 적당한 크기(바이트 사이즈(byte-size))로 제공되는 음식을 원한다. 실제로, 인내심 없고 배고픈 대중들의 구미에 맞추려면, 웹 사이트는 바로 효과가 나타나는 포맷을 제공해야 한다.

  • RSS는 피자 배달부이다. 방금 구운 데이터를 여러분의 문 앞으로 배달한다.
  • 웹로그는 중국 요리 테이크아웃으로서, 여러분이 좋아하는 매콤한 요리를 배달한다.
  • 포럼은 이웃과 함께 즐기는 팟럭(potluck) 음식이다. (또는 "Animal House"[각주:2]의 음식 싸움 장면에 알맞다.)
  • 검색(search)은 가까운 카페테리아에서 먹을 수 있는 음식들에 비유할 수 있다. 여러분이 원하는 음식을 쟁반에 담아서, 자리를 차지하고 앉아서 먹으면 된다.

다행히도, PHP 개발자는 광범위한 RSS, 블로그, 포럼 소프트웨어를 찾아서 사이트를 생성하거나 수정할 수 있다. Google등 검색 엔진들의 성능이 우수하지만, 이러한 검색 엔진이 모든 사이트에 잘 맞는 것은 아니다.

예 를 들어, 웹 사이트가 수십만 개의 새롭게 단장된 Porsche 부품들을 제공한다면, Google은 "Carrera parts" 같은 광범위한 검색용 사이트를 띄울 것이다. 하지만 보다 구체적인 "used 1991 Porsche 911 Targa headlight bezel"에 대한 결과는 만들 수 없다.

여러분의 콘텐트가 고도로 특화되었거나 방문자가 여러분의 검색 기능에서 기대하는 것이 실제 작업 흐름과 밀접한 것이라면, 자신의 사이트에 맞게 재단된 로컬 검색 시스템으로 웹의 글로벌 검색 엔진을 확장하는 것이 최상의 방법이다. ("수 많은 건초 더미에서 바늘 찾기")

빠 르고, 성능 좋은 오픈 소스 무료 검색 엔진을 PHP 사이트에 추가하는 방법을 알아보자. 이 글에서는 일부분만을 개발할 것이다. 대신, 초점은 효과적인 검색 결과를 제공하는데 필요한 컴포넌트(데이터베이스, 인덱스, 검색 엔진, PHP 애플리케이션 프로그램 인터페이스(API))에 맞출 것이다.



  1. 오픈 소스 검색 엔진으로서 텍스트를 매우 빠르게 검색하도록 설계되었다. Sphinx는 무료라는 점과 PHP API를 제공한다는게 강점인것 같네요.
     홈페이지 : http://www.sphinxsearch.com [본문으로]
  2. 확인은 못했지만, 존 랜디스 감독의 Animal house라는 영화를 말하는것 같습니다. 존 랜디스 감독의 1978년작 Animal house는 대학가의 문제아들이 모인 델타라는 동호회 회원들의 이야기라고 합니다. 총장이 델타를 해체시키고 회원들을 퇴학시키려는 음모를 진행하는게 내용이라고 하는군요. [본문으로]
 가끔씩 쓰긴하는데, 기억이 잘 안나는 쿼리문입니다.
연속된 숫자를 발생시키는 쿼리입니다. 아래의 쿼리문은 연속된 숫자를 발생시키고 이를 DATE형으로 바꿔서 한해의 일자를 연속으로 만들어주는 쿼리입니다.


1. 특정숫자까지의 연속된 숫자를 발생시키는 쿼리입니다.
SELECT level
  FROM DUAL
CONNECT BY level<=특정숫자;

2. 응용해서 그해의 일자를 1월1일부터 12월 31일까지 발생 시켜주는 쿼리입니다.
SELECT TO_DATE(TO_CHAR(level, '000'), 'ddd')
  FROM DUAL
CONNECT BY level<=TO_NUMBER(TO_CHAR(TO_DATE('12-31', 'MM-DD'), 'DDD'));
 10월의 두번째 글을 작성합니다. 내일까지만 일하면 하루 쉽니다. :)
야호~

 이번에는 IBM DeveloperWorks에서 JAVA로 웹개발을 할때 도움이 될 만한 글을 찾았습니다. Cypal Studio for GWT라는 Eclipse에서 GWT[각주:1] 구현을 지원해주는 플러그인을 소개하는 글입니다. Cypal Studio for GWT의 설치 및 설정, 사용법을 알려주는 글입니다.
 Eclipse에서 GWT를 이용해보고 싶었던 분들이라면 편하게 이용하실 수 있을거같아서 소개합니다.

Cypal Studio for GWT를 사용하여 Ajax 개발 단순화 하기 (한글)

 원문의 내용대로 설치 및 설정까지를 따라해 봤는데, 본문에 나오는대로 GWT 1.4버전에서는 정상적으로 작동하지 않음을 확인했습니다. GWT 1.3버전을 설치하시길 바랍니다. 최신 버전인 GWT 1.4에서 작동하는 Cypal Studio가 빨리 나오면 좋겠네요.
최신 버전 설치하기... 이것도 병인데... :)

GWT는 JavaScript 없이 자바 프로그래밍 언어 내에서 동적인 웹 애플리케이션들을 완벽히 작성할 수 있도록 해주는 툴 세트이다. GWT 애플리케이션은 모든 주요 브라우저에서 실행되며, 사용자와의 상호 작동성도 뛰어나고, 자바 개발 환경 내에서 완벽히 테스트 및 디버깅 될 수 있다.

GWT 프레임웍은 네 개의 주요 컴포넌트를 갖고 있다. 자바 언어로 구현된 위젯 컬렉션은 Swing 보다 단순한 애플리케이션 프로그램 인터페이스(API)에서 기대하는 표준 사용자 인터페이스(UI) 기능을 제공한다. 원격 프로시저 메커니즘은 클라이언트와 서버 간 통신에 사용되며, GWT에서는 모든 파이프와 데이터 변환이 처리된다. 완전히 통합된 브라우저 시뮬레이터로 GWT가 개발 시 실행될 수 있으며, GWT 디버깅 세션 동안 에디터에서 중단점을 설정할 수 있다. 마지막으로, 컴파일러는 자바 코드를 클라이언트 브라우저에서 실제로 실행되는 크로스 브라우저 JavaScript 코드로 변환하며 브라우저 비호환성을 관리하기 때문에 여러분이 관리할 필요가 없다.

GWT가 Ajax 애플리케이션을 생성하는 프로세스를 단순화 하는 동안, 동기화 된 여러 부분들이 작동하도록 해야 한다. 이 글을 쓰고 있는 현재, GWT 고급 툴 지원은 주요 자바 개발 환경에 나타나기 시작했다.

Cypal Studio for GWT는 GWT 개발 시 수행되는 공통의 태스크들을 단순화 하는 Eclipse용 플러그인이다. 이 글에서는 GWT의 모든 부분을 설명하지 않는다. 참고자료 섹션에서 GWT 작동 방법과 애플리케이션을 생성하는 방법을 참조하기 바란다.



  1. Goole Web Toolkit(GWT)은 자바개발자들이 AJAX 어플리케이션을 개발하는데 사용할 수 있는 프레임워크입니다. Google Web Toolkit website [본문으로]
 이번에는 IBM 한국 DeveloperWorks의 Linux  관련 자료 중에서 괜찮은 글을 발견했습니다. 물론 부담없이 읽을 수 있는 한글로된 문서입니다. :)
[리눅스 철통 보안]이라는 제목의 2회 연재분량의 글입니다. 원래 Part 1만 나왔을때 소개하려다가 2회 연재가 끝나길 기다렸다가 이제야 소개하게 되었습니다.
Part 1 : 쉘 제거하기(한글)
Part 2 : 서명된 바이너리만 실행하기(한글)

1. Part 1에서는 리눅스의 자유로운 맞춤 설정 기능을 통제해야 하는 이유을 알려주고 가짜 사용자가 기본 설치 상태를 바꾸는 것을 막기 위해 표준 리눅스 배포판을 잠그는 조심스러운 첫 걸음을 뗄 것이다. 이 1단계 작업은 이 연재 Part 2의 기초 작업으로 서명된 바이너리만 사용할 수 있게 강제하는 커널을 빌드함으로써 잠금 과정을 마무리한다.

 - 대규모 리눅스 시스템을 지원할 때 고려해야 하는 보안 문제와 위험과 비용을 최소화하는 법을 배운다.
 - 기본 시스템이 변경되는 것을 막기 위해 하드웨어와 펌웨어를 셋업하는 법을 살펴본다.
 - 사용자가 승인되지 않은 코드를 보안 환경에서 실행하는 위험을 최소화하기 위해 표준 리눅스 인터프리터를 제거한다.
 - 감사와 승인을 하지 않은 애플리케이션을 끼워넣을 수 없는 산업 등급의 보안을 갖춘 리눅스 배포판을 설정한다.

2. Part 2에서는 리눅스의 자유로운 맞춤 설정 기능을 통제해야 하는 이유를 알려주고 가짜 사용자가 기본 설치 상태를 바꾸는 것을 막기 위해 표준 리눅스 배포판을 잠그는 법을 다룬 Part 1의 내용을 확장한다. Part 2에서는 여러분이 지원하는 각 머신에서 서명된 바이너리만 사용할 수 있도록 하는 커널을 만들어 철통 보안 과정을 마무리한다.

 - 대규모 리눅스 머신 설치 유지 보수에서 인증된 실행 파일만 실행하도록 특별히 만들어진 커널을 운영하는 데 필요한 관리 문제와 과정을 배우게 될 것이다. 각각의 실행 파일은 Part1에서 다룬 기본적인 철통 보안 프로세스에서 설정됐다.
 - 시스템을 유지하는 데 필요한 암호화 된 데이터를 관리하는 방법을 다룰 것이고, 마지막으로 관리되지 않은 실행 파일이 안전한 환경에서 실행되지 않도록 막는 방법을 다룰 것이다.
 - 개인적으로 감사(audit) 및 승인하지 않은 애플리케이션을 끼워 넣을 수 없는, 산업 등급의 보안을 갖춘 리눅스 시스템을 설정할 수 있을 것이다.


 이 글의 저자는 망가뜨려도 상관 없는 오래 된 리눅스 컴퓨터가 필요하다고 얘기하고 있습니다. 따라서 기나긴 리눅스 설정 삽질을 시작할때와 마찬가지로 중요한 데이터는 꼭 Backup 하시길 바랍니다.
 되도록이면 보조 PC나 테스트 장비 등에서 시험해보는게 좋을것 같네요.

 다음에 여분의 PC가 생기면 한번 시도해 봐야겠습니다.
근데 이렇게 해놓으면 관리자도 불편해하지 않을까합니다...
걍  한번 시도해보는걸로 만족하렵니다. :)
생각해보니 전산실에서 구형 서버라도 한대 빌려서 해보면 될것 같네요. 근데 구형 장비가 남아있으려나...
 오라클에서 무료로 배포하는 Oracle SQL Developer 1.2 버전[각주:1]의 Tutorial입니다.

 SQL Developer 1.2버전은 꽤 쓸만합니다. 1.1버전부터는 MySQL, MS-SQL에 접속할 수 있습니다. MySQL에 접속하려면 Mysql Homepage에서 Connect/J를 다운받아서 [SQL Developer가 설치된 디렉토리]/jdk/jre/lib/ext/에 복사한뒤에 사용하면 됩니다.
또한 Linux, Mac OSX, MS Windows 등의 운영체제에서 사용가능합니다.


 Online tutorial이며 http://st-curriculum.oracle.com/tutorial/SQLDeveloper/index.htm에서 볼 수 있으며 다운로드도 가능합니다.


단점이라면 영문이라는 거!!!
영어 공부 해야겠습니다.
아래는 튜토리얼 첫화면의 환영 문구입니다.

Welcome to the Oracle SQL Developer Tutorial!

This tutorial prepares a developer to use Oracle SQL Developer to perform common database development tasks. This tutorial was developed using Oracle SQL Developer 1.2.

After taking this tutorial, you should be able to:

Install Oracle SQL Developer
Create a Database Connection
Manage Database Objects
Access and Manipulate Data
Add, edit and debug PL/SQL Components


  1. Oracle에서 무료로 배포하는 DB 개발툴입니다. OTN에서 다운로드 받을 수 있습니다.
    1.1버전부터는 Oracle 이외에 MS-SQL, MySQL에도 접근할 수 있습니다. 이기종 DBMS에서는 아직 쓸만한거 같지는 않습니다. :)
    Oracle DBMS 개발용도로는 좋습니다. 1.2 버전에서는 Migration 관련 기능도 있구요.
    SQL Developer 1.2 Download (OTN 계정이 있어야  다운로드 받을 수 있습니다.)
    SQL Developer Homepage [본문으로]
 Forcs homepage의 Q&A 게시판에서 찾은 내용입니다.

오즈 리포트 인쇄 화면/미리보기 화면 로딩중에 메모리가 부족해서 중지되는 현상이 발생할때의 대처법입니다. 아직 적용해보지는 않아서 잘 될지는 모르지만, 오즈 리포트를 제작한 곳의 답변이니 신뢰성이 있을거라 생각합니다.

안녕하세요 포시에스입니다.

아래 태그를 보고서 호출하는 부분에 넣어주세요..

[param name="connection.pageque" value="-10"]
[param name="connection.serverdmtype" value="FILE"]
[param name="connection.fetchtype" value="CONCURRENT"]
[param name="connection.clientdmtype" value="FILE"]

넣어주신후에 확인후 연락바랍니다.

수고하세요...

[부가내용]

* connection.pageque .
value = "정수값 default : -1"
"바인딩이 완료된 보고서 중 메모리에 올릴 페이지 숫자를 설정합니다. 지정된 숫자만큼만
메모리에 가지고 있으며 나머지는 페이지별로 파일에 저장하고 해당 페이지 호출시 메모리로
로드됩니다."

* connection.serverdmtype
value = "FILE/MEMORY default:MEMORY"
"오즈뷰어에서 오즈 서버에 보고서의 데이터 모듈을 요청할 때 오즈 서버가 데이터 모듈 생성
작업을 메모리를 이용할 것인지 파일을 이용할 것인지를 선택합니다. 대용량 데이터의 경우
파일을 이용하면 서버의 메모리 사용량을 줄일 수 있습니다."

* connection.fetchtype
value = "BATCH/CONCURRNET default:batch"
"오즈뷰어에서 오즈 서버에 보고서의 데이터 모듈을 요청할 때 오즈 서버가 데이터 모듈을 어떤 방식으로
처리할 지를 설정합니다. 이전 버전의 경우 오즈 서버는 데이터 소스로부터 데이터를 가져와서 데이터 바
인딩 작업을 완료 한 다음 뷰어로 데이터 모듈을 전송하는데 새로 추가된 CONCURRENT 모드에서는 데이
터 바인딩 작업과 데이터 모듈 전송 작업을 동시에 수행합니다."

* connection.clientdmtype
value = "NORMAL/MEMORY/FILE default : MEMORY"
"뷰어에서 데이터 모듈을 받아서 처리하는 방식을 설정합니다. 데이터 모듈 받는 작업과 보고서 바인딩 작
업을 하나의 스레드로 처리하는 기존 방식에 성능을 높이고 응답시간을 줄이기 위해 각 작업을 별도의 스
레드로 나누어 병렬 처리하는 방식을 추가 하였습니다. 또한 낮은 시스템 사양에서 안정적인 운영을 위해
데이터 모듈을 파일로 받는 모드를 지원합니다."

+ Recent posts