더 베닝잉
반응 애플리케이션 구축부터 나만의 검색 엔진 및 색인 생성을 위한 웹 크롤러 구축까지. 사용자로서 원하는 검색 내용을 더 효과적으로 제어할 수 있는 검색 엔진인 Zensearch를 소개하게 되어 기쁘게 생각합니다. 항목을 만들어 다양한 웹 사이트를 크롤링하고 기존 검색 엔진 기능을 계속 사용할 수 있습니다. 이제 저는 이것이 Google이나 Brave Search처럼 세상에서 가장 복잡하거나 정교한 검색 엔진이 아닐 수도 있다는 것을 알고 있습니다. 하면서 최대한 많이 했고, 아, 많이 배웠어요.
모든 것은 내가 좋아하는 인용문을 삽입하거나 특정 페이지에 메모를 추가하는 일종의 흔한 책인 React 웹 애플리케이션을 구축할 때 시작되었습니다. 마치 작성자와 대화하거나 생각하는 내용을 입력하는 것처럼 말이죠. 그 순간 실제 책의 페이지에 해당하는 페이지에서 나쁜 프로젝트는 아니지만 Reactjs 애플리케이션을 구축하는 것이 너무 지루해서 나쁘지는 않지만 아무데도 갈 수 없는 것처럼 느껴졌습니다. 제가 하고 있던 일에는 기술적인 깊이가 전혀 없었고 ReactJs 프로젝트를 구축하면서 아무것도 배우지 못했습니다.
그래서 저는 여러 사용자를 처리할 수 있고 각 사용자가 서로 다른 사용자에 참여할 수 있는 웹 소켓과 같은 자체 애플리케이션 계층 프로토콜을 몇 달 동안 연구하고 구축한 후 컴퓨터 네트워킹, 운영 체제, 컴퓨터 아키텍처 등에 대해 연구하려고 했습니다. 서로 소통할 수 있는 방이나 네임스페이스가 있어서 황홀하고 살아있음을 느꼈습니다. 스레드, 세마포어, 프로세스, 메모리 레이아웃, 인터럽트 신호 등 컴퓨터가 어떻게 작동하는지 이해하는 한 많은 일을 할 수 있을 것 같았습니다. 내가 배웠다고?
아 그리고 저는 독학을 하고 있으며 The Odin Project를 사용하여 프로그래밍과 웹 개발을 배웠습니다. 그 사람들이 저에게 독립적으로 공부하는 방법을 가르쳐 주었고 커리큘럼 내내 프로그래머와 손을 잡는 것을 거부했기 때문에 그 사람들에게 소리를 지르세요. .
도전과제
저는 TypeScript와 함께 기본이 되는 Nodejs를 사용해서만 프로그래밍할 수 있었기 때문에 Nodejs를 사용하여 웹 크롤러를 만들었습니다... 꽤 멍청하죠? 즉, 프런트 엔드에서 소스 URL 배열을 크롤링할 수 있는 크롤러를 만들고 각 크롤러가 추출된 데이터를 데이터베이스로 보낼 수 있도록 하는 것이 계획이었습니다. 우리 모두 알고 있듯이 Yabascript는 단일 스레드이며 모든 비동기 작업이 처리됩니다. Yavascript가 실행되는 환경(예: 브라우저의 apis, node, deno, bun 및 done)에 따라 결정됩니다.
그래서 Nodejs를 사용하여 멀티태스킹 작업을 수행하는 것은 자살행위였습니다. 인코딩할 웹페이지 객체를 8비트 버퍼로 변환하는 것부터 공유 배열 버퍼는 데이터로 인해 64비트 배열 버퍼만 전송할 수 있습니다. 따라서 오프셋 패딩을 추가하여 8비트 버퍼에서 64비트로 변환한 다음 크롤러에서 메인 스레드로 데이터를 보낸 후 64비트 버퍼에서 8비트 버퍼로 다시 변환한 다음 마지막으로 이를 vajascript 개체... 와 그거 재미있네요. 메시지를 전달하는 또 다른 방법이 있지만 이 방법은 크롤러에 있는 것과 동일한 데이터의 복사본을 메인 스레드에 생성하므로 너무 많은 메모리를 차지하기 때문에 그렇게 하고 싶지 않았습니다. .
저는 nodejs의 원자 모듈을 사용하여 경쟁 조건을 처리해야 했고, 오늘날까지도 그 모듈이 어떻게 작동하는지 솔직히 이해하지 못하고 너무 짜증이 나서 Golang을 사용해야 했습니다. 저는 이 언어를 너무 좋아합니다. 세마포어와 대기 그룹을 사용하여 경쟁 조건을 처리하는 스레드를 만드는 것이 너무 쉽습니다. 아직 뮤텍스를 사용할 필요가 없었고 앞으로 배울 수 있어서 기쁩니다. 맥락을 배우는 것이 재미있을 것입니다.
프론트엔드로 넘어가 볼까요? 프론트엔드 마스터가 쓴 이 글을 읽어보신 분 계신가요? 해당 프레임워크가 필요하지 않을 수도 있습니다. 제가 ReactJ가 지루하다고 말한 것을 기억하시나요? 글쎄요, 재사용성과 데이터 바인딩 메커니즘 덕분에 프레임워크를 높이 평가하게 되었습니다.
프런트 엔드에 대해 너무 자세히 설명하고 싶지 않지만 PubSub 패턴을 사용하여 데이터가 변경될 때 UI 변경 사항을 업데이트하고 웹 구성 요소를 섀도우 돔과 함께 사용하여 재사용 가능한 구성 요소인 섀도우 돔을 만들었습니다. 전체 DOM 트리와 격리되어 있어서 CSS 및 DOM API를 사용하여 액세스하면 작동하지 않기 때문에 자바스크립트와 스타일로 액세스하는 것이 어려웠습니다. 그래서 그게 제가 겪었던 유일한 과제였지만 재미있었습니다.. 제가 할 때는 재미있었습니다. 크롤러를 Nodejs에서 Go로 마이그레이션하고 있었습니다.
고려해야 할 사항
프로젝트를 과시하고 싶어서 아직 구현하지 못한 기능도 있지만, 진행 중인 프로젝트라 할지라도 그것은 나에게 그다지 중요하지 않습니다. 프로젝트 완료 저는 앞으로도 zensearch를 계속해서 개선할 예정이므로 지금은 누락된 몇 가지 주요 사항이 있습니다.
이미 색인화된 웹사이트 목록을 프런트엔드에서 사용자에게 표시하도록 구현합니다.
계속 진행하려면 가장 최근에 크롤링된 웹페이지를 저장하세요.
크롤링 취소를 생성하지만 해당 시점까지 색인이 생성된 페이지는 계속 저장됩니다.
-
사용자에게 색인화된 웹사이트를 제거할 수 있는 기능을 제공하세요.
내가 배운 내용과 개발 과정의 미묘한 차이에 대해 더 쓰고 싶지만 너무 길어질 것 같아서 지금은 내 최고의 프로젝트를 자랑하고 싶고 피드백을 받고 싶습니다. 시간이 있으면 Zensearch를 더 좋게 만들기 위해 제가 할 수 있는 문제나 개선 사항이 있으면 알려주십시오. 아, 그리고 이것은 모두 이 사람이 제가 사물에 더 깊이 들어가고 대신 기본 사항을 배우도록 영감을 준 원조 덕분입니다. 터미널에서 npm create vite@latest my-vue-app -- --template React-ts를 실행하면 프로그래머로서 나 자신과 내가 알고 있는 것들에 대해 확실히 불안해졌지만 그 불안 때문에 나는 배웠습니다. new things now 저는 항상 더 많은 것을 배우려고 노력하고 있으며
여러분의 피드백을 통해 기꺼이 배우고 싶습니다. 제 테드 강연을 들어주셔서 감사합니다. Zensearch용 Github 저장소
위 내용은 귀하의 검색 엔진, Zensearch의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Golang과 Python의 주요 차이점은 동시성 모델, 유형 시스템, 성능 및 실행 속도입니다. 1. Golang은 동시 작업에 적합한 CSP 모델을 사용합니다. Python은 I/O 집약적 인 작업에 적합한 멀티 스레딩 및 Gil에 의존합니다. 2. Golang은 정적 유형이며 Python은 동적 유형입니다. 3. Golang 컴파일 된 언어 실행 속도는 빠르며 파이썬 해석 언어 개발은 빠릅니다.

Golang은 일반적으로 C보다 느리지 만 Golang은 동시 프로그래밍 및 개발 효율에 더 많은 장점이 있습니다. 1) Golang의 쓰레기 수집 및 동시성 모델은 높은 동시 시나리오에서 잘 수행합니다. 2) C는 수동 메모리 관리 및 하드웨어 최적화를 통해 더 높은 성능을 얻지 만 개발 복잡성이 높습니다.

Golang은 클라우드 컴퓨팅 및 DevOps에서 널리 사용되며 장점은 단순성, 효율성 및 동시 프로그래밍 기능에 있습니다. 1) 클라우드 컴퓨팅에서 Golang은 Goroutine 및 채널 메커니즘을 통해 동시 요청을 효율적으로 처리합니다. 2) DevOps에서 Golang의 빠른 편집 및 크로스 플랫폼 기능이 자동화 도구의 첫 번째 선택입니다.

Golang과 C는 각각 성능 효율성에서 고유 한 장점을 가지고 있습니다. 1) Golang은 Goroutine 및 Garbage Collection을 통해 효율성을 향상 시키지만 일시 중지 시간을 도입 할 수 있습니다. 2) C는 수동 메모리 관리 및 최적화를 통해 고성능을 인식하지만 개발자는 메모리 누출 및 기타 문제를 처리해야합니다. 선택할 때는 프로젝트 요구 사항 및 팀 기술 스택을 고려해야합니다.

Golang은 높은 동시성 작업에 더 적합하지만 Python은 유연성에 더 많은 장점이 있습니다. 1. Golang은 Goroutine 및 채널을 통해 동시성을 효율적으로 처리합니다. 2. Python은 GIL의 영향을받는 스레딩 및 Asyncio에 의존하지만 여러 동시성 방법을 제공합니다. 선택은 특정 요구 사항을 기반으로해야합니다.

Golang과 C의 성능 차이는 주로 메모리 관리, 컴파일 최적화 및 런타임 효율에 반영됩니다. 1) Golang의 쓰레기 수집 메커니즘은 편리하지만 성능에 영향을 줄 수 있습니다. 2) C의 수동 메모리 관리 및 컴파일러 최적화는 재귀 컴퓨팅에서 더 효율적입니다.

선택 GOLANGFORHIGHERFERFERFORMANDCONDCURRENCY, TILDFORBECTERVICES 및 NNETWORKPRAMPHING; SELECTPYTHONFORRAPIDDEVENTURMENT, DATASCIENCE 및 MACHINEARNINGDUETOITSTINTIVENDEXTENDIVERIRIES.

Golang과 Python은 각각 고유 한 장점이 있습니다. Golang은 고성능 및 동시 프로그래밍에 적합하지만 Python은 데이터 과학 및 웹 개발에 적합합니다. Golang은 동시성 모델과 효율적인 성능으로 유명하며 Python은 간결한 구문 및 풍부한 라이브러리 생태계로 유명합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

드림위버 CS6
시각적 웹 개발 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
