브라우져 만들어 볼려는데, 조언부탁드립니다.

guday의 이미지

안녕하세요~

이번에 큰맘 먹고;; 대학기간내에 웹브라우져를 만들어볼려는데,

제가 학부생이지만 뭐 그렇다할것을 해본적이 없어서

1. 차근차근 무엇무엇을 공부하면서 준비하면 좋을까요?

2. 혹은 관련 사이트같은게 있을까요?

3. 관련 수강과목은 무엇무엇을 들으면 좋을까요?

지금 상태는 C언어 문법하고 Java문법 알고(여기 분들 엄살피시는

수준으로 초보에용 하는 수준이 아니고 정말 저렇답니다)

이대로 계속가다 나중에 대학 졸업해도

아무것도 할줄아는게 없겠다 하는

위기감에 궁극적인 대학기간내에 해결과제로 잡은 거에요 -_-;

학교에 특별히 아는 선배가 없다는게 이럴때 유일하게 불편하네요

^^;

(혹시 제 목표가 무진장 간단한 내용이라도

너무 당황해 하시진 말아주세용. 이놈이 진짜 몰라서 저렇구나

하고 이해해 주세요 ^^;;)

lifthrasiir의 이미지

저도 잘 하는 게 아니라서 뭐라 많이 말해 드리긴 힘듭니다만, (저도 학부생이에요 T_T) 목표가 엄청나게 크다는 생각이 마구 드네요;;

완벽한 웹 브라우저를 만들려면 적어도 아래 쓰여 있는 것들이 꼭 필요하지 않을까 싶네요.
- TCP/IP와 HTTP 프로토콜의 완벽한 이해
- HTML, CSS 표준의 완전한 이해 (대충 두리뭉실하게 아는 정도가 아니라 어떤 상황에서 어떻게 렌더링되는 것이 표준인 지 완전히 알아야 합니다.)
- 파싱 및 렌더링 알고리즘 (일단 표준을 알고 있으면 그걸 바탕으로 알고리즘을 짤 수 있겠죠. 파싱 같은 경우 오류가 있는 경우를 대비해 fallback들을 잘 구현해야 할 겁니다.)
- 프로그래밍 언어의 구현 (자바스크립트를 구현해야 한다면 당연히 필요한 것이겠습니다. 이게 힘드시다면 모질라에 SpiderMonkey라고 자바스크립트 구현만 따로 떼어 낸 게 있으니까 이걸 쓰셔도 되겠군요.)
- 관련 라이브러리들의 이해 (예를 들어서 png 이미지를 지원한다면 libpng를 알아야 겠죠. 그 외에 여러 가지 많지 않을까요.)
- 기타 등등등

음... 간단한 것만 만든다 쳐도 맨 처음 세 개 정도는 무조건 구현해야 하지 않을까 싶습니다. 기본적인 라이브러리만으로 웹 브라우저를 만들어 낸다는 건 쉬운 일이 아니라고 생각하네요. 목표를 살짝 더 낮추는 게 어떨까, 하는 생각을 잠시 해 봅니다. :)

- 토끼군

망치의 이미지

이미 제공되어지고 있는 컨트롤들을 짬뽕해서 만든다면 조립품은 어느정도 간단하게 탄생하겠지만.. 그렇지 않다면 꽤 긴 여정이 되실거 같아요..

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

glancing의 이미지

이미 다 잘 되어 있는 firefox를 생각할때 브라우저를
또 만든다는 것은 본인의 시간낭비라고 사료됩니다.
차라리 다른 의미있는 프로젝트를 하는것이 어떨까요?

제안:
Acrobat reader를 한번 만들어보시면 어떨까나?
acrobat reader에서 저의 최대 불만은 form에 입력한 자료를
저장할 수 없다는 것인데요, 상용 acrobat을 사야지만
되게 해줍니다.
pdf 파일의 포맷은 다 공개되어 있어서 님께서 다 읽어본다면
어느정도 구현가능하구요,
xpdf소스를 구할 수 있기 때문에 그걸 기반으로 기능을
추가할 수 있겠지요.

xpdf소스를 더 고쳐서 폼에 자료 입력하고 그걸
저장할 수 있게 한다면 님은 지구적인 스타가 될겁니다. :)

--
상일

다크슈테펜의 이미지

우선 기간이 얼마만큼 걸리실지는 몰라도
만약 짧은 기간이라면 웹브라우저는 힘들지 않을까요...?
물론 모질라를 만든다고 하면 C/C++라이브러리나 아니면 자바는 SWT에 모질라 기능과 연동되는 패키지가 있습니다.그것을 사용해도되고 합니다만.
현상태에서는 이정도로 간단하게 한다면 한 의미가 없죠..위에서 말씀하신데로 목표를 낮춰보심이 좋을듯합니다.
저는 XML에디터를 한번 추천해봅니다.

인생이란게 다 그런게 아니겠어요....? 뭘(?)
http://schutepen.egloos.com

정태영의 이미지

tokigun wrote:
- 파싱 및 렌더링 알고리즘 (일단 표준을 알고 있으면 그걸 바탕으로 알고리즘을 짤 수 있겠죠. 파싱 같은 경우 오류가 있는 경우를 대비해 fallback들을 잘 구현해야 할 겁니다.)

libwww 를 사용하면 파싱해서 트리로 만드는 것 정도는 =3=33
(css 관련해서 hashing 도 해주죠 ;) )

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

codebank의 이미지

두가지 방법이 있죠.

첫번째는 밑바닥부터 완전히 새로만드는방법입니다.
두번째는 이전에 만들어져있는 엔진을 이용해 만드는 방법입니다.

첫번째 방법은 사실 많은 시간과 많은 자료가 필요하죠. 대신에 많은것을 배울 수
있을겁니다.
두번째 방법은 그렇게 많은 시간이 걸리지 않지만 좋은 경험과 만들어진 후에는
다른 프로그램에도 응용할 수 있는 능력은 생길겁니다.

저라면 두번째 방법을 추천합니다.
EditPlus와 같은 형태로도 응용이 가능하고 다른 프로그램에 덧붙이는 방식으로
만들기가 편해지니까요.
첫번째 방법도 좋긴합니다. 모든것을 새롭게 만들어서 통신규약을 분석하고 그에맞는
동작을 만들어본다는 것은 상당히 많은 도움이 됩니다. 시간이 있다면 첫번째
방법도 좋죠.

무엇을하든 어떤방식으로하든 꼭 결말은 보시기 바랍니다.

------------------------------
좋은 하루 되세요.

keizie의 이미지

http://kz.mpecc.com/moniwiki/wiki.php?gybe

쪽도 함 보세요. 그리고 오른쪽 메뉴에서 페이지 이름을 클릭하면 그걸로 전체 검색을 하는데 그것도 볼만할 거예요.

브라우저를 만든다는 게 바닥부터 만들면 무진장 할 게 많답니다. 대신 재밌어요.

tasy의 이미지

브라우저를 만들어본 경험이 없어서 좋은 조언은 힘들겠지만, 예전에 웹서버를 만들어 본 적은 있습니다. TCP/IP나 HTTP프로토콜에 대한 이해정도가 있으면 웹서버를 만드는데 그다지 어려움은 없거든요(low-perfomance), 브라우저의 경우는 display가 문제이겠군요.

하지만, 좋은 생각이라고 생각됩니다. 학부생때 어떤 목표를 세워서 추진해보는 것처럼 좋은게 없거든요(-_- 저도 학부생입니다만).

일단, 간단한 웹서버를 만들어 보시면서 네트웍쪽에 대한 이해를 높이시면 더 좋을 것 같습니다.

그리고 codebank님의 말씀처럼 만들어져 있는 엔진을 이용해서 제작해보시면 브라우저에 대한 이해를 더 높일 수 있을 것 같습니다. 그렇게 공부하면서 firefox프로젝트에도 참여해보시면 좀 더 넒은 세상을 알 수 있겠죠.

쌓여진 경험으로 밑바닥부터 브라우저를 새로 만드신다면 작품이 나올 수도 있지 않을까요?

물론 다년간의 기간에 대한 이야기지만, 처음부터 너무 조급하게 생각하지 마시고, 웹서버등의 프로그램에 도전해보시고, 기존의 프로그램들을 잘 파악하시는 일을 열심히 하신다면 그 과정에서 정말 많은 것을 얻을 수 있을 거라 생각합니다.

힘내세요. ^^

---------
Byeongweon Moon
http://tasy.jaram.org/blog
사랑하면 알게 되고 알면 보이나니 그때에 보이는 것은 전과 같지 않으리라.

정태영의 이미지

좀 다른 얘기지만..

gtk-webcore 는.. 죽어가고 있는 듯 싶군요 ㅠ_ㅠ
http://cvs.sourceforge.net/viewcvs.py/gtk-webcore/www/
http://sourceforge.net/mailarchive/forum.php?forum_id=42686

메일링을 보면 가끔 뭔가가 있기는 한데 말이죠...

khtml-win32 도 별로 활동이 없는 듯 하고 ㅠ_ㅠ
http://khtml-win32.sourceforge.net/

둘다 유심히 지켜보고 있는 프로젝트인데 말이죠...
넘 아쉬워요 ㅠ0ㅠ

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

kksir의 이미지

웹브라우저.. 겨울방학중에 보아 웹서버를 분석했습니다. 많은 부분을 분석할 수 있었고 그 후 지금까지 2가지 버전의 웹서버를 제작했습니다. 물론 간단한 것이었고 지금은 좀더 general pupose 한 웹서버를 제작중에 있습니다.

MS 쪽의 개발은 모르겠지만 리눅스에서 개발하실려면 단계마다 브레이킹 걸리는 것도 생각하셔야 합니다. 에디터 사용법도 익혀야 하며. make 도 익혀야 하며 gcc, gdb등등 기본적으로 해야 하는 것에서 저의 경우는 의외로 시간이 많이 들었습니다.

제 수준에서는 rfc를 보고 코딩한다는 것도 이해가 안되었으며 모든게 다 이해가 안되었습니다. 암튼..

시간이 되고 조언을 얻을 분이 있고 열정만 있으면 충분히 가능하리라 생각됩니다~

ps : 제작한 후 같이 웹 패키지 아이템을.. 쿨럭 @.@

::::::::::: Easy come, Different go.
::::::::: Http://www.geekstep.org

saxboy의 이미지

Quote:
첫번째는 밑바닥부터 완전히 새로만드는방법입니다.
두번째는 이전에 만들어져있는 엔진을 이용해 만드는 방법입니다.

공부를 하기 위해서라면 or 만들다가 버려도 관계없는 제품이라면 1번을,
정말 쓸만한 제품을 만들기 위해서라면 2번...

처음 말씀하신 분과는 조금 다른 이야기이지만 판매하는 제품을 만들어야 하는 상황에서 너무 자신의 능력을 과신하면 훌륭한 실패 벤치마크 사례가 되기 좋지요. 8)

제 경우는 사실 "제품"을 만드는 것과 전혀 관계없는 관심사에 대해서는 작동하는 방식만 이해하면 그 다음에는 별 흥미가 가질 않더군요. 다만 내가 생각한 아이디어가 실제로 작동한다는 벅찬 감동이 좋아서 가끔씩 전혀 쓸데도 없고, 완성도도 낮은 것들을 이것저것 만들어보곤 합니다.
물론 제품과 프로토타입의 차이는 하늘과 땅 정도 되겠지요. 프로토타입을 만드는 일은 정말 즐겁고 행복하지만 제품을 만드는 일은 참 짜증스럽습니다.

zepinos의 이미지

브라우져 엔진 제작인지, 그냥 브라우져를 만드는 것인지에 따라 개발 양상이 크게 차이날 것입니다.

그냥 브라우져를 만드는 것이라면...Windows 환경에서는 아주 간단하게 MSHTML 컴포넌트를 상속 받아서 몇 초 만에 아주 간단한 브라우져를 만들 수 있습니다. 이걸 응용해서 CD 컨텐츠를 WebBrowser 로 제공하는 경우도 많습니다(제가 처음에 한 일이 이랬습니다). XML 로 데이터를 Navigate 시키고, 그 XML 이 XSL 을 호출하게 하여 하나의 페이지를 호출하는 방식이었고, 페이지 이동시 그 정보를 잡아낼 수 있었기 때문에 다음 페이지도 동적으로 XML 을 생성할 수 있었습니다.

엔진 제작은...말 그대로 대 역사가 되지 않을까 싶기도 합니다. 8) 하지만, 최고의 오픈소스 프로그램 중 상당수가...그 시작은 미미했습니다. 8)

무운을 빕니다.