웹 브라우저 구축을 시작하는 방법은 무엇입니까? [닫은]


88

처음부터 웹 브라우저를 구축하기 위해 노력하기로 결정했습니다. 시작하기 전에 알아야 할 최신 웹 브라우저의 일반적인 기능, 아키텍처 및 기능은 무엇입니까?

모든 권장 사항을 높이 평가합니다!


9
예, 그것은 미친 프로젝트이지만 여기서 미키를 가져갈 필요는 없습니다.이 문제를 어떻게 해결할 것인지에 대한 훌륭한 토론 포인트라고 생각합니다. :)
Ross

8
나는 누군가가 더 이상 새로운 렌더링 엔진을 만들 용기가 없다는 사실을 슬퍼했던 기사를 기억합니다. 오늘날의 컴퓨터는 다르기 때문에 새로운 브라우저가 필요하다고 그는 말했다. 다중 코어. 첫 번째 단계는 탭당 하나의 프로세스가있는 Chrome입니다. 다음에 무엇이 올지 봅시다.
stesch

35
공을 키우고 원하는 것을하십시오. 작동하면 좋습니다. 그렇지 않다면 계속 노력하십시오. 그렇지 않으면 "새로운 것을 만들지 말고 우리가 이미 가지고있는 부서진 것을 사용하십시오."라고 말하는 사회의 다른 절반처럼 끝날 것입니다.
uSeRnAmEhAhAhAhAhA

7
당신은 브래들리 쿠퍼가 리미트리스 에서 복용하는 약 중 하나가 필요합니다 . )
알리 Gajani

3
시도해보세요. 특히 많은 기존 구성 요소를 함께 연결하는 경우 여기에서 사람들이 말하는 것보다 훨씬 쉬울 것입니다. 일부 텍스트를 구문 분석하고 내부에 텍스트가있는 색상 상자를 출력하는 것이 얼마나 어려울 수 있습니까?
Ian Warburton

답변:


125

그것을 조각으로 나누십시오. 웹 브라우저 란 무엇입니까? 그것은 무엇을합니까? 그것:

  • 외부 콘텐츠를 가져옵니다. 따라서 HTTP 라이브러리가 필요하거나 (권장되지 않음) 직접 작성하십시오. HTTP 프로토콜에는 많은 복잡함 / 미묘함이 있습니다. 예를 들어 만료 헤더 처리, 다른 버전 (요즘에는 대부분 1.1 임) 등;
  • 다양한 콘텐츠 유형을 처리합니다. 피기 백 할 수있는 이런 종류의 Windos 레지스트리가 있습니다. 여기서는 MIME 유형을 기반으로 콘텐츠를 해석하는 것입니다.
  • HTML 및 XML 구문 분석 : DOM (문서 개체 모델)을 만듭니다.
  • CSS 구문 분석 및 적용 : 모든 속성, 모든 측정 단위 및 값을 지정할 수있는 모든 방법 (예 : "border : 1px solid black"대 별도의 border-width 등 속성)을 이해해야합니다.
  • W3C 시각적 모델을 구현합니다 (그리고 이것이 진정한 키커입니다). 과
  • 자바 스크립트 엔진이 있습니다.

그리고 그것은 기본적으로 웹 브라우저입니다. 이제 이러한 작업 중 일부는 매우 복잡합니다. 쉽게 들리는 것조차 어려울 수 있습니다. 외부 콘텐츠를 가져옵니다. 다음과 같은 사용 사례를 처리해야합니다.

  • 사용할 동시 연결 수는?
  • 사용자에게 오류보고
  • 프록시;
  • 사용자 옵션;
  • 기타

나와 다른 사람들이 공동으로 눈썹을 올리는 이유는 렌더링 엔진이 어렵 기 때문입니다 (누군가가 언급했듯이 인간의 세월이 개발에 들어갔습니다). 주변의 주요 렌더링 엔진은 다음과 같습니다.

  • Trident : Microsoft에서 Internet Explorer 용으로 개발했습니다.
  • Gecko : Firefox에서 사용됩니다.
  • Webkit : Safari 및 Chrome 0-27에서 사용됩니다.
  • KHTML : KDE 데스크탑 환경에서 사용됩니다. Webkit은 몇 년 전에 KHTML에서 포크되었습니다.
  • Elektra : Opera 4-6에서 사용됨;
  • Presto : Opera 7-12에서 사용됨;
  • Blink : Chrome 28+, Opera 15+, 웹킷 포크에서 사용됩니다.

상위 3 개는 오늘날 사용되는 주요 렌더링 엔진으로 간주되어야합니다.

자바 스크립트 엔진도 어렵습니다. 특정 렌더링 엔진에 연결되는 경향이있는 몇 가지가 있습니다.

  • SpiderMonkey : Gecko / Firefox에서 사용됩니다.
  • TraceMonkey : Firefox 3.1에서 SpiderMonkey를 대체하고 JIT (just-in-time) 컴파일을 도입합니다.
  • KJS : Konqueror에서 사용, KHTML에 연결됨;
  • JScript : Internet Explorer에서 사용되는 Trident의 Javascript 엔진.
  • JavascriptCore : Safari 브라우저의 Webkit에서 사용됩니다.
  • SquirrelFish : Webkit에서 사용되며 TraceMonkey와 같은 JIT를 추가합니다.
  • V8 : Chrome 및 Opera에서 사용되는 Google의 자바 스크립트 엔진
  • Opera (12.X 이하)도 자체적으로 사용했습니다.

물론 페이지 간 탐색, 페이지 기록, 임시 파일 지우기, URL 입력, URL 자동 완성 등과 같은 모든 사용자 인터페이스가 있습니다.

그것은 많은 일입니다.


* Gecko :) 또한 동의합니다. 주요 부분은 HTML 렌더러와 JavaScript 엔진입니다.
abatishchev

1
오페라는 그들 자신을 창조했습니다. Presto는 현재의 것이고 Electra는 이전의 것입니다.
Tim Sullivan

훌륭한 심층 답변-JavaScript 구문 분석을 모두 잊어 버렸습니다!
Ross

1
하지만 세상은 브라우저를 만들 공이있는 사람들이 더 필요합니다. Cp eff.org/deeplinks/2016/04/save-firefox .
Pacerier

26

정말 흥미로운 프로젝트처럼 들리지만 엄청난 노력을 투자해야합니다.

쉬운 일은 아니지만 학문적 관점에서 볼 때 많은 것을 배울 있습니다.

확인할 수있는 몇 가지 리소스 :

그러나 현실적인 관점 에서 보았을 때 처음부터 코드를 작성하는 데 필요한 엄청난 노력은이 만화를 생각 나게했습니다.


(출처 : geekherocomic.com )

행운을 빕니다 :-)


오 GHC가 계속 했나요? 그들이 Ross의 은신처 일을 시작했을 때 내가 구독을 취소했다고 생각합니다.
Ross

@Ross : 그래, 그들은 여전히 새로운 사람이 러시아에서 보리스라는 것을, 만화를 제공하고, 그가 LOL은 "슈퍼 해커"입니다
기독교 C. Salvadó

17

대부분의 최신 웹 브라우저는 거대한 짐승이며, 웹 브라우저와 웹 자체가 다소 우연한 방식으로 진화했기 때문에 설계가 상당히 부실합니다.

먼저 프로젝트 의 목표 (그리고 달성하고자하는 것)를 매우 명시 적으로 만드는 것부터 시작해야합니다 . 이것은 당신이 재미로하는 일입니까, 아니면 다른 사람들이 당신의 브라우저를 사용하기를 기대합니까? 다른 사람들이 그것을 사용하기를 기대한다면, 그들에 대한 인센티브는 무엇입니까? 모든 사람이 Chrome, Safari, Firefox, IE, Opera 등의 대체물로 사용할 수있는 새로운 브라우저를 처음부터 개발할 것이라고 기대하는 것은 비현실적입니다. 모든 프로젝트는 10 ~ 15 년 앞당겨 시작됩니다. 당신, 그리고 당신이 그들을 따라 잡을 때, 그들은 당신보다 10-15 년 앞서있을 것입니다. 게다가 그들은 그들 뒤에 훨씬 더 많은 인력을 가지고 있으므로 프로젝트가 성공하기를 원한다면 언젠가는 그 인력이 필요할 것입니다.

많은 자원을 가진 대기업 인 Apple과 Google이 처음부터 시작하지 않은 이유입니다. 마이크로 소프트도 처음부터 시작하지 않았습니다. 원래 IE는 Mosaic을 기반으로했습니다. 오늘날 처음부터 시작된 유일한 중요한 브라우저는 Opera , KonquerorLynx입니다., 불행히도 모두 시장 점유율이 미미합니다. Lynx는 텍스트 전용 브라우저이고 아마도 여전히 존재하는 유일한 이유는 특정 틈새 시장을 제공하기 때문일 것입니다. Opera는 틀림없이 지금까지 만들어진 최고의 브라우저 중 하나이지만 시장 점유율이 높지 않았으므로 성공과 혁신이 같은 것이 아님을 기억하십시오. KHTML은 Konqueror의 엔진으로, 그 자체로는 성공하지 못했지만 Apple과 Google이 모두 사용하는 WebKit의 기반입니다. KHTML이 만들어지지 않았다면 Safari 나 Chrome도 존재하지 않을 것이라고 분명히 주장 할 수 있다고 생각합니다. 흥미롭게도 KHTML과 Opera는 주로 오슬로의 같은 건물에서 일하는 노르웨이 프로그래머에 의해 제작되었습니다.

운영 체제 구축과 같은 웹 브라우저 구축을 살펴 봐야합니다. 기본적으로 브라우저가 웹 앱을 실행하기위한 운영 체제이기 때문입니다. 운영 체제와 마찬가지로 웹 브라우저는 많은 구성 요소가 포함 된 매우 복잡한 소프트웨어입니다. 물론 사람들은 처음부터 새로운 운영 체제를 만드는 데 성공했습니다. Linus Torvalds가 떠 오릅니다. 그는 지금까지 가장 성공적인 운영 체제 중 하나 인 Linux를 만들었습니다.

물론 새로운 성공적인 OS를 구축하는 것보다 새로운 성공적인 브라우저를 구축하는 것이 더 어려워 지는 또 다른 도전에 직면하게 됩니다. 브라우저는 웹에 떠 다니는 모든 레거시 코드를 완벽하게 실행할 것으로 예상됩니다. 이제 Linus Torvalds가 UNIX 또는 기존 OS와 완벽하게 역 호환되지 않는 한 새로운 OS가 중요하지 않다고 들었다고 가정 해 보겠습니다. 나는 그가 귀찮게했을 것 같지 않다. 그리고 리눅스는 아마도 오늘날 존재하지 않았을 것이다. 물론 현실적으로 리눅스가 인기를 얻게 된 유일한 이유는 그것이 잘 설계되었고 GNU 프로젝트가 엄청난 양의 기존 코드를 리눅스로 이식하기위한 도구를 만들 수 있었기 때문입니다. Linux에 대한 GNU의 이데올로기 적 지원 없이는 결코 기회가 없었을 것입니다.

그래서 당신이 새로운 성공적인 브라우저를 만들기 위해 충분히 야심적이거나 어리 석다고 가정한다면, 당신이 집중해야 할 것은 아키텍처디자인 입니다. 어떤 식 으로든 기존 브라우저의 디자인을 개선 할 수 있다고 확신하지 않는 한 처음부터 새 브라우저를 빌드 할 실질적인 이유가 없습니다. 즉, WebKitGecko 의 코드를 충분히 숙지하여 그들이 내린 디자인 결정을 이해할 수 있어야하지만, 그렇지 않으면 해당 코드를 사용하는 것이 좋을 수 있으므로 해당 디자인을 복사해서는 안됩니다.

제 개인적인 생각은 (충분한 조사를하지 않은 채) 오늘날의 브라우저가 모듈식이 아니라는 것입니다. 새 브라우저를 만들려고한다면 자바 스크립트 엔진을 다른 것으로 교체하는 것과 같이 쉽게 교체 할 수있는 방법을 찾고 기존 브라우저에서 현재 가지고있는 것보다 훨씬 더 많은 제어 권한을 사용자에게 제공 할 것입니다. . 최신 브라우저와 웹 디자이너는 거의 모든 제어권을 사용자로부터 빼앗 았습니다. 사용자가 내 컴퓨터에 표시되는 콘텐츠를 렌더링하는 방법을 웹 브라우저에 알릴 수없는 이유는 무엇입니까? 원본 HTML은 콘텐츠를 구성하는 방법에 대한 지침 만 제공했으며, 시간이 지남에 따라 새로운 표준이 점점 더 독단적이되어 사용자가 이제 웹 디자이너의 전적인 자비를 받게되었습니다. Linux의 매력은 사용자에게 제어권을 되돌려 주었다는 것입니다.

제가 당신이라면 연구에 시간을 할애 할 또 다른 것은 운영 체제 디자인 원칙입니다. 좋은 브라우저를 설계하려면 적어도 이론적으로는 좋은 OS를 설계하는 것과 동일한 원칙이 필요합니다. 특히 동시 프로세스, 보안 모델 등과 관련하여 그렇습니다.

마지막으로, 많은 연구를 마친 후 여기에서 코딩을 시작해야한다고 생각합니다.

  1. 모자이크 리 엔지니어, 그러나 자신의 디자인 아이디어로. 이것은 또한 당신이 단지 재미를 위해 또는 당신 자신의 교육적 이익을 위해 그것을하는 경우에 제가 제안하는 것입니다. 원본 HTML 1.0 및 HTML 2.0 사양, HTTP 1.1 사양 및 현재 URI 사양을 읽고 브라우저가 모든 사양을 준수하는지 확인하세요. 물론 전송 프로토콜, URI 규칙 등을 이미 처리하는 기존 소프트웨어를 다운로드 할 수 있지만, 자신의 브라우저를 디자인하는 데 진지한 경우 이러한 작업을 처음부터 수행하는 것도 좋은 연습이라고 생각합니다. 모든 퍼즐 조각이 어떻게 맞춰 지는지 잘 알 수 있습니다. 0 단계가 끝나면 최소한 90 년대의 최첨단 브라우저와 비슷한 브라우저가 있어야합니다. 이것은 좋은 첫 번째 이정표입니다. 실제로 원본 모자이크를 다운로드 할 수 있습니다.ftp://ftp.ncsa.uiuc.edu/Mosaic/ 및 브라우저와 어떻게 비교되는지 확인하십시오. 현재 웹 사이트가 Mosaic과 같은 고대 브라우저에서 어떻게 렌더링되는지 확인하는 것도 좋은 연습입니다.

  2. 브라우저에 DOM 지원을 추가하십시오. 거의 모든 현재 브라우저가 완전히 지원하므로 W3C DOM 레벨 1 및 레벨 2에 먼저 초점을 맞 춥니 다. 그런 다음 레벨 3과 레벨 4를 살펴보십시오. DOM은 웹 프로그래밍의 매우 기본이됩니다. 따라서 실제로 최신 웹 브라우저를 구축하려면 전체 디자인이이를 고려해야합니다. C #으로 브라우저를 작성하고 있으므로 기존 .NET 개체 모델을 활용하는 방법을 고려할 수 있습니다.

  3. 기존 스크립팅 엔진을보고 프로젝트에 이식 할 수 있는지 확인합니다. 자체적으로 매우 큰 프로젝트이기 때문일뿐만 아니라 JS 컴파일러 (예 : V8)를 최적화하는 데 이미 많은 작업이 투입 되었기 때문에 자신 만의 JavaScript 인터프리터를 작성하지 않는 것이 좋습니다. 따라서 컴파일러 설계의 전문가가 아니라면 직접 제작 한 JS 인터프리터는 EMCAScript 사양을 완벽하게 따르더라도 이미 나와있는 것보다 열등 할 것입니다. 다시 말하지만, 스크립팅 엔진은 어쨌든 실제 브라우저와는 완전히 별개의 모듈이어야한다고 생각하므로 스크립팅 엔진을 구축하는 것보다 스크립팅 엔진을 대체 할 수있는 프레임 워크를 갖는 것이 훨씬 더 유용 할 것이라고 생각합니다. 브라우저에서만 작동합니다.

  4. 북미의 상위 10-20 개 웹 사이트 (Google, Facebook, YouTube, Twitter, Wikipedia, Amazon, 인기 블로깅 플랫폼 등)에 대한 HTML / CSS / JS 소스 코드를 확인하고 이러한 사이트와 잘 작동하도록 브라우저를 엔지니어링합니다. . 이것은 기존의 모든 표준 (현재 브라우저가 아직 완벽하게 수행하지 않는 부분)을 준수하는 브라우저를 만드는 것보다 웹의 모든 웹 사이트를 올바르게 렌더링하는 브라우저를 만드는 것보다 훨씬 더 다루기 쉬운 문제입니다. 그렇게). 사람들은 귀하의 브라우저가 표준을 위반한다고 불평 할 것입니다. 그러나 그것은 사람들이 귀하의 브라우저로 Google이나 Facebook에 액세스 할 수 없다고 불평하는 것만 큼 큰 문제는 아닙니다. 첫 번째 릴리스에서 모든 (또는 대부분) 표준을 올바르게 준수한 브라우저를 생각할 수 없으므로 시도조차하지 마십시오.


1
오늘날 대부분의 웹 브라우저 코드에 대해 +1 은 1990 년대부터 많은 레거시 쓰레기로 인해 끔찍하게 빠 집니다. Google은 기본적으로 880 만 줄의 쓰레기가 제거 된 Webkit 인 Blink를 만들어이 문제를 해결하려고 시도 했지만 여전히 Blink 내에는 제거 할 수없는 고정 된 쓰레기가 남아 있습니다.
Pacerier

1
... Google이 오늘 브라우저를 구축하기 시작했다면 확실히 처음부터 구축했을 것입니다 .하지만 모든 직원이 이미 Blink를 알고 있기 때문에 Titanic을 사용하기에는 너무 비쌉니다. 경쟁력있는 브라우저 OS를 만들기 위해 깊이있는 기술과 자금이있는 신생 스타트 업은 확실히 Chrome보다 우위를 점할 수 있습니다.
Pacerier

15

자신의 렌더링 엔진을 작성하는 것과 같은 의미입니까?

행운을 빕니다. 다양한 브라우저의 현재 세대에 많은 사람이 들어갔습니다. 둘 중 하나보다 더 잘하고 싶다면 심각한 기술이 필요합니다. 어디서부터 시작해야하는지 물어야한다면 그러한 작업을 시도하는 것이 합리적이기 전에 몇 년 이상의 연구를 거쳐야 할 것입니다.

즉, 다음은 몇 가지 (명백한) 포인터입니다.

  1. 모든 projecteuler.net 문제를 해결하는 것과 같이 작은 일을하는 많은 코드를 작성 합니다.
  2. 툴킷과 커뮤니티 표준에 대해 가능한 모든 것을 배우십시오.
  3. 더 많은 코드 작성
  4. 유한 상태 기계에 대한 확실한 이해
  5. 더 많은 코드 작성
  6. tcp / ip 스택에 대한 모든 정보와 http에 사용되는 방법을 배웁니다.
  7. http에 대해 가능한 모든 것을 배우십시오.
  8. 표준 학습 (html, xml, sgml, css)
  9. 150 번째 생일을 축하하세요.
  10. 실제 브라우저 프로젝트를 시작하십시오.

여기 아래에서 편집

동기를 부여하거나 동기를 떨어 뜨리는 것이 아니라 브라우저가 정말 큰 프로젝트이며 정말 큰 프로젝트에는 많은 생각이 필요하다는 것을 보여 주려는 시도였습니다. 무뚝뚝한 정직함에 유머가 뿌려졌습니다.

저는 제 인생의 3 분의 2 이상을 프로그래밍 해 왔고 제가 꽤 괜찮은 프로그래머라고 생각하고 싶지만, 괜찮은 웹 브라우저를 처음부터 작성하는 데 절반의 기회가있을 것이라고 생각하는 것은 어리석은 일입니다. .

물론 이것이 당신이 원하는 일이라면 내 의견이 당신을 방해하지 않도록하십시오. Internet Explorer보다 더 잘할 수 있습니다.


12
나는 언급 했어야했다 : 애플 파이를 처음부터 만들고 싶다면 우주를 만드는 것으로 시작해야한다.
Kris

@ Mk12 : 참으로 감사합니다. 업데이트되었습니다.
Kris

1
@Kris 창조 할 것이 없는데 어떻게 우주를 창조합니까?
uSeRnAmEhAhAhAhAhA

1
@ user2645707 : 모르겠어요, 그냥 나보다 똑똑한 사람을 앵무새로 삼고 있습니다. quotespage.com/quote/26980.html
Kris

12
+1 "당신은 아마도 Internet Explorer보다 더 잘할 수있을 것입니다."
Pulah Nandha 2014

14

이 프로젝트는 엄청나게 야심 찬 프로젝트이지만 (특히 단일 개발자를위한) 언젠가하고 싶은 일입니다.이 프로젝트에서 많은 것을 배울 수 있습니다.

프로토콜이 어떻게 작동하는지 (확실히 조사해야 할 사항) 또는 브라우저에서 진행되는 작업에 대해 많이 알지 못하지만 시작하기에 좋은 곳은 주로 Chrome 및 Firefox. Chrome은 브라우저의 크롬과 백엔드와 같이 내가 시작할 것으로 기대하는 작업 만 수행하기 때문에 특히 좋은 프로젝트입니다. 처음에는 렌더링 엔진을 만드는 것을 잊어 버려-Webkit 또는 Gekko를 사용하십시오.


8

다른 사람들이 이미 말했듯이 웹 브라우저는 거대한 프로젝트입니다. 사람들이 기대하는 모든 것을 생각하기 전에 tcp / ip & sockets, html 렌더링, css 사용, DOM 모델 생성, 자바 스크립트 실행, 잘못된 마크 업 및 코드 처리, 모든 유형의 파일 처리에 대해 걱정해야합니다. 브라우저 (예 : 북마크, 기록, 개인 브라우징, 보안 등) 그것은 거대한 프로젝트입니다.

즉, 할 수 있습니다. 내 제안은 Firefox의 소스를 살펴 보는 것입니다. 브라우저를 처음부터 만들고 싶다고 말씀 하셨지만 먼저 오픈 소스 프로젝트에서 배우는 것이 매우 도움이 될 것 입니다.

Firefox 소스를 다운로드하고 천천히 제거합니다. 즉, 소스를 가져 와서 모든 북마크 기능을 제거 합니다. 그런 다음 애드온을 처리하는 기능을 제거합니다. 그런 다음 파일 저장과 관련된 모든 코드를 삭제합니다. 아주 기본적인 웹 브라우저를 얻을 때까지이 과정을 계속할 것 입니다. 그 코드를 살펴 보겠습니다.

그런 다음 내 자신을 만들기 시작합니다. 저는 Firefox를 분해하여 얻은 지식을 가져 와서 새 브라우저를 만드는 데 사용했습니다.

행운의 훨씬 당신에게!


Firefox를 분해하는 방법에 대한 지침을 제공 할 수 있습니까? 내 말은, 나는 exe파일을 얻고 , 설치할 때 많은 dll파일 이있는 소스 폴더를 얻습니다 . 이 작업을 수행 한 실제 코드와이를 뒷받침하는 논리를 어떻게 연구합니까?
SexyBeast

이 코멘트는 파티에 늦었지만 어쨌든. .EXE 및 .DLL 파일은 컴파일 단계의 결과이며 그다지 이해할 수 없습니다. 프로그램을 이해하려면 소스 코드 (일부 C ++ 및 다른 파일의 다른 언어)가 필요합니다. 프로그래머는 자신의 프로그램을 이해해야하므로 코드의 다양한 기능 부분을 분리하고 문서화하는 경향이 있습니다.
Roy Prins 2015 년


4

올바른 형식의 유효한 XHTML로 시작할 수 있습니다. 이는 브라우저가 실제 "생활"에서 접하게되는 태그 수프보다 쉬워야합니다.

그런 다음 웹에서 실제 HTML을 필요에 맞게 구부리는 방법을 찾아야합니다.

하지만 스스로 놀리지 마세요. 브라우저는 작은 프로젝트가 아닙니다.


3

... 그런 다음 보안에 대해 걱정하기 시작하십시오.

(비 기능적 및 교차 절단 문제는 일반적으로 먼저 고려되어야합니다. :))


1

매우 야심 찬 프로젝트이지만 한 명의 개발자가 혼자서 할 수는 없습니다. 팀 (프로젝트 관리자, 테스터 ...)이 필요하며 언어 선택을 검토해야 할 수도 있습니다. c #은 Windows에서만 작동합니다 (나는 Linux에서 모노를 알고 있지만 그렇지 않습니다. 동일) 어쨌든 행운을 빕니다. 브라우저를 사용하게되어 기쁩니다 : D


0

당신은 정말로 당신의 손에 많은 자유 시간을 가지고 있지 않습니까? AFAIK, 대부분의 브라우저는 C ++로 작성되었으며 모든 사용자가 자신의 컴퓨터에 .NET 프레임 워크를 설치 한 것은 아니며 필요한 버전이 아닐 수도 있습니다.

몇 년이 걸릴 수 있지만 어쨌든 많은 오픈 소스 브라우저, FireFox, Google Chrome 등이 있습니다. 코드를 살펴 보는 것으로 시작할 수 있습니다. 행운을 빕니다. :)


1
Chrome은 오픈 소스가 아닙니다. 그러나 대부분의 소스 코드는 chromium 프로젝트에서 찾을 수 있습니다
Anonymous
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.