2024-09-02 주간 URL 모음
- Did you lose your AirPods? | Alex Yancey
- 요약
- 작성자의 친구가 분실된 에어팟을 발견하고 정당한 소유자에게 돌려주고 싶어했습니다.
- 제공된 마지막 4자리로 끝나는 모든 가능한 전화번호를 무차별 대입하는 것은 비현실적이라고 판단했습니다.
- 작성자는 지역 번호에 집중하여 검색 범위를 좁혀 일치하는 번호를 999개로 줄였습니다.
- 작성자는 무선 통신사에 할당된 중앙 사무실 코드(접두사)만 고려하여 검색 범위를 더욱 좁혀서 일치할 수 있는 번호를 232개로 줄였습니다.
- 작성자는 아이메시지 조회 API를 사용하여 아이메시지가 아닌 전화번호를 필터링하여 일치할 수 있는 번호를 84개로 더 줄였습니다.
- 작성자는 Twilio를 사용하지 않고 대신 Mac에서 스크립트를 사용하여 나머지 84개의 번호로 iMessage를 대량으로 보냈습니다.
- 작성자는 10건 미만의 메시지를 보낸 후 정당한 소유자에게 성공적으로 연락하여 해당 AirPod가 소유자의 것임을 확인할 수 있었습니다.
- 작성자는 나의 찾기 기능을 사용할 수도 있었지만 수동으로 검색 범위를 좁혀야 하는 번거로움이 더 좋았다고 말했습니다.
- 저자는 혼란스러워하는 사람들로부터 몇 번의 메시지를 받아야 했지만 운이 좋게도 신속하게 주인을 찾을 수 있었습니다.
- 포틀랜드 대도시 지역을 담당하는 두 개의 지역 번호 중 하나만 시도하면 되었는데, 이는 운이 좋았던 것입니다.
- Everything about Google Translate crashing React (and other web apps) by Martijn Hols
- 요약
- 구글 크롬의 내장 확장 프로그램인 구글 번역은 많은 최신 웹 애플리케이션, 특히 React로 빌드된 애플리케이션의 기능을 망가뜨리는 방식으로 DOM을 조작합니다.
- Google 번역은 DOM의 텍스트 노드를 새로운
<font>
요소로 대체하기 때문에 React의 가상 DOM과 DOM 노드를 효율적으로 업데이트하고 재사용하는 프로세스에 문제를 일으킵니다. - Google 번역의 DOM 조작으로 인해 발생하는 주요 문제는 다음과 같습니다:
- 기초 데이터가 변경될 때 번역된 텍스트가 업데이트되지 않음
- React가 Google 번역에서 마운트 해제된 텍스트 노드를 제거하거나 삽입하려고 할 때 충돌이 발생합니다
- 이러한 문제는 React에만 국한된 것이 아니라 DOM 조작에 의존하는 모든 JavaScript 기반 웹 애플리케이션에 영향을 미칩니다.
- React의 DOM 메서드를 몽키 패칭하거나 텍스트 노드를
<span>
요소로 래핑하는 등의 몇 가지 제안된 해결 방법은 한계가 있으며 근본적인 문제를 완전히 해결하지 못합니다. - Google 번역을 완전히 비활성화하거나 애플리케이션 내에서 사용자 지정 국제화를 구현하는 것이 잠재적인 해결책으로 제시되지만 두 가지 모두 장단점이 있습니다.
- 이러한 문제의 근본 원인은 Google 번역이 원래 웹 사이트가 더 정적이었던 다른 웹 시대를 위해 설계되었으며, DOM 조작 방식이 현대의 복잡한 웹 애플리케이션의 요구 사항과 잘 맞지 않기 때문입니다.
- 저자는 당시의 제약 조건 내에서 작업했기 때문에 Google 번역 팀에 책임이 없으며 이러한 문제는 웹의 진화에 따른 결과라고 강조합니다.
- 이 글은 Google 번역과 DOM을 조작하는 다른 브라우저 확장 프로그램의 문제는 웹 애플리케이션이 DOM에 대한 완전하고 독점적인 제어권을 주장해야 하는지에 대한 더 광범위한 의문을 제기한다고 제안합니다.
- 저자는 향후 문제 해결을 위해 독자들이 Chromium 프로젝트의 관련 버그 리포트에 업보팅하여 이 문제에 관심을 가져줄 것을 권장합니다.
- 코드 리뷰 안티패턴들 | GeekNews