C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[15085] Indy10 리빌드...
박지훈.임프 [cbuilder] 6043 읽음    2008-09-18 14:30
아래 글에서 썼던 이유로...
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=free&no=15065

고민고민하다가..
처음에는 Synapse를 선택하는 쪽으로 기울어졌었는데... 다시 생각해보니, 이 프레임워크가 협업이 당근 필수인 업무개발 프로젝트를 위한 거라, 개발자들이 익숙하지 않은 Synapse보다는 Indy가 낫겠다 싶어서 Indy10으로 가기로 했습니다.

다만, Indy10이 쓸데없이 배포 크기가 너무 큰 문제가 있어서(IndySystemXXX.bpl, IndyCoreXXX.bpl, IndyProtocolsXXX.bpl 합해서 2.3 메가 가량), 델파이/C++빌더에 기본으로 포함된 인디 패키지를 수정해서 리빌드하기로 했습니다.

필요한 컴포넌트는 HTTP, FTP, POP3, SMTP, Message, Cookie, Time, TimeServer 이 정도이기 때문에, 조건 컴파일 모드를 만들고 기본 모드에서는 이들 컴포넌트들만 빌드되도록 했죠. 일종의 튜닝이랄까..

이렇게 했는데도, Indy10이 기본적으로 하위 클래스들이  지나치게 많아서 생각만큼 패키지 크기가 줄어들지는 않았습니다만... 어쨌든 1.2메가까지 줄였습니다. 원래의 절반 정도이고, Indy9과 비슷한 정도죠.

2009의 설치 디렉토리의 기본 Indy10 bpl 파일들을 백업해놓고 새로 빌드한 넘들로 대체했는데, IDE 실행에 아무런 문제도 없이 잘 돌아갑니다. DataSnap 2009의 트랜스포트 컴포넌트도 이상 없이 잘 동작합니다.

일단은 여기까지 하고, 다시 짬날 때 좀 더 튜닝(?)을 해볼 생각입니다.
하는 김에 배포 크기 1메가 이하로 만드는 게 최종 목표..



참... 이 작업을 하다가 우연히 발견했는데...
델파이/C++빌더 2009 버전에 탑재되어 있는 Indy10 bpl 파일들은 뭔가가 잘못되어 있는 거 같습니다.

델파이 2007 버전에서 조건 컴파일에서 컴포넌트들을 전혀 제외하지 않은 모드로 컴파일했을 때, 세개의 bpl 파일들을 합한 크기는 2.17MB입니다. 그런데 델파이 2007에 실제로 탑재되어 있는 bpl 파일들의 크기는 무려 4.08MB나 됩니다.

인디 10이 탑재된 다른 버전들, 즉 2009, 2006, 2005에서 Indy10 bpl들의 크기 합계는 1.89MB ~ 2.3MB로 버전 차이를 감안하면 비슷한 수준인데, 유독 2007에 들어있는 파일들만 크기가 4메가가 넘죠. 뭔가 잘못 빌드된 bpl들이 탑재된 것으로 보입니다.

그러니까, 델파이/C++빌더 2007에 포함된 bpl이 쓸데 없이 크기가 두배나 큰 겁니다. 거꾸로 말하면, 2007 버전에서 인디 10 bpl을 배포할 경우, 기본 탑재된 파일들 말고 직접 리빌드해서 배포하시면 거의 2메가 정도의 크기를 줄일 수 있다는 얘깁니다.

물론, 인디에서 사용하는 컴포넌트가 아주 다양하지 않다면 저처럼 필요없는 컴포넌트들을 모두 제거하고 리빌드하면 1메가 내외로 줄일 수 있죠.

그럼...
박지훈.임프 [cbuilder]   2008-09-18 14:39 X
참...
델파이/C++빌더 2009에 포함된 인디10의 소스는 전체 소스가 아닙니다. 여러 소스 파일들이 빠져 있기 때문에, 직접 인디10 소스를 별도로 다운받아야 하는데요.

여기에 한가지 문제가 있는데... 2009에 포함된 소스들은 일부이긴 하지만 유니코드 패치(?)가 되어 있는 소스들이고, 별도로 다운받을 수 있는 인디10 소스는 유니코드 패치가 안된 버전이라는 겁니다. 작년 11월 버전입니다. 그런데도 골때리게, 둘다 버전이 10.2.0.3으로 적혀 있습니다.

그래서, 다운받은 소스에다 2009에 포함된 소스를 엎어서 컴파일을 시도하면, 이번에는 유니코드 패치가 되지 않은 몇몇 유닛에서 PChar-PAnsiChar 에러가 발생합니다. 수작업으로 약간씩 수정해줘야 하죠.
푸른솔 [seejune]   2008-09-18 15:07 X
그런데 Indy는 완전 Free인가요? BE(볼랜드 에디션)버전이 아닌...
박지훈.임프 [cbuilder]   2008-09-18 15:36 X
인디 라이브러리의 라이선스는 아래 주소에서 볼 수 있습니다.
http://www.indyproject.org/License/index.EN.aspx

변형 BSD 라이선스와 MPL 라이선스의 듀얼 라이선스로 되어 있고 사용자가 원하는 라이선스를 선택할 수 있는데요. 아시다시피 둘다 GPL보다 훨씬 자유로운 라이선스입니다.

1. Indy Modified BSD License - The Indy Modified BSD license is a very no nonsense license that allows you to do almost anything you want with Indy, provided you provide proper attribution.
2. Indy MPL (Mozilla Public License) License - To make it easier and consistent for JEDI users, we also offer an MPL license v1.1.

첫번째인 "Indy Modified BSD License"에서는, 소스 및 바이너리를 배포할 때 아래의 문구를 명기하도록 규정하고 있습니다.

Portions of this software are Copyright (c) 1993 - 2003, Chad Z. Hower (Kudzu) and the Indy Pit Crew - http://www.IndyProject.org/
푸른솔 [seejune]   2008-09-19 09:14 X
그렇군요...
그런데 한가지 더 궁금한 것이...바이너리를 배포할 때 즉, (인디를 사용해 만든) 실행파일을 배포할 때 위의 배포 문구를 Text파일로 만들어 같이 배포를 하면 된다는 얘기인지요? 아니면 화면(메인화면 또는 About 화면 등)에 표시를 해야 하는지요?
문구의 배포방법이 궁금합니다..
박지훈.임프 [cbuilder]   2008-09-19 09:38 X
인디의 변형 BSD 라이선스에 따르면,
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation, about box and/or other materials provided with the distribution.

"바이너리의 재배포를 위해서는 위의 저작권 문구와 이 배포 조건 리스트, 그리고 아래의 주의 문구를 제품 문서, 어바웃 박스, 기타 배포되는 무언가에 명시해야 합니다."

여기서, 원문에서는 '제품 문서', '어바웃 박스', '기타 무언가' 사이를 and/or로 표시하고 있으므로, 세가지 중에서 하나만 하면 되겠지요. 일반적으로는 어바웃 박스가 가장 무난하겠구요.

그리고 '이 배포 조건 리스트'란, 바로 위의 번역된 바이너리 배포 조건을 포함해서, 소스 배포 조건, 그리고 '인디와 연관된 개인 혹은 단체 이름을 언급해도 된다'라는 문장까지 세가지인데, 소스 배포는 해당 사항이 없을 경우가 대부분일 거고, 그리고 마지막 조건은 의무가 아니라 권리에 해당하는 부분이므로, 사실상 바이너리 배포 조건만 명시하더라도 법적으로 문제가 생기진 않을 듯.

'아래의 주의 문구'란 원문에서 disclaimer인데, 아래와 같습니다.
THIS SOFTWARE IS PROVIDED BY Chad Z. Hower (Kudzu) and the Indy Pit Crew "AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
박지훈.임프 [cbuilder]   2008-09-19 09:45 X
그런데.. 제 개인적인 생각입니다만,

인디를 포함하는 제품에 명시할 문구는 위와 같이 총 세가지입니다만, 저작권이 존재함을 명시하는 첫번째 문장, 즉 "Portions of this software are Copyright (c) 1993 - 2003, ..." 이외에는, 나머지 조건들은 해당 라이선스 페이지의 URL만 링크해주면 되지 않을까 싶습니다. http://www.indyproject.org/License/BSD.EN.aspx

이 라이선스 조건이 기본적으로 개발된 제품이 재차 재배포될 수 있는 가능성을 두고 재배포에 대한 조건을 문구이므로, 3차 재배포를 할 사용자가 찾아볼 수만 있으면 법적으로 충분히 실효성이 있을 거 같아서입니다.

참, 위의 저작권 문구에서는 "1993 - 2003"라고 되어 있지만, "1993 - 2008"라고 써주는 게 맞겠죠. 인디는 실제로 지금도 계속 개발중이고, 또 인디프로젝트 사이트 자체의 아래 저작권 문구에서도 위의 문구에서 "1993 - 2008"로 표기되어 있으니까요.
푸른솔 [seejune]   2008-09-19 09:59 X
자세한 설명 감사합니다..
License 종류가 많아서 하나 하나 정확히 알기가 쉽지 않네요...

+ -

관련 글 리스트
15085 Indy10 리빌드... 박지훈.임프 6043 2008/09/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.