스터디 기록
[프레임워크 없는 프론트엔드 개발] 5장. HTTP 요청
간단한 역사: AJAX의 탄생 Ajax 시작하기 - 웹 개발자 안내서 | MDN 본 문서는 AJAX의 기본을 익힐수 있도록 해주며, 두 가지 간단한 훈련용 예제를 제공합니다. developer.mozilla.org 1999년 이전에는 서버에서 데이터를 가져올 때 전체 페이지를 다시 로드해야 했다. 하지만 AJAX(Asynchronous JavaScript and XML)의 등장 이후로 서버에서 데이터를 가져올 때 페이지를 완전히 다시 로드하지 않고 필요한 데이터만 서버에서 가져와 화면을 채우는 식으로 개발이 가능해졌다. AJAX 애플리케이션의 핵심은 XMLHttpRequest 객체로, 이것을 통해 HTTP 요청으로 서버에서 데이터를 가져올 수 있다. 요즘은 자바스크립트를 통한 비동기 통신을 통칭하는 단어..
[프레임워크 없는 프론트엔드 개발] 4장. 웹 구성 요소
웹 컴포넌트 API 웹 컴포넌트에는 세 가지 중요 기술이 있다. HTML 템플릿: 태그는 컨텐츠가 렌더링되지는 않지만, 자바스크립트 코드에서 동적인 컨텐츠를 생성하는 데 ‘스탬프’로 사용되도록 하려는 경우에 유용하다. 사용자 정의 요소: 이 API를 통해 개발자는 완전한 기능을 갖춘 자신만의 DOM 요소를 작성할 수 있다 - 사용자 정의 HTML 태그를 만들 수 있다. Shadow DOM: 이 기술은 웹 컴포넌트가 컴포넌트 외부의 DOM에 영향을 받지 않아야 하는 경우에 유용하다. 다른 사람들과 공유할 수 있도록 구성 요소 라이브러리나 위젯을 작성하려는 경우에 유용하다. 가상 DOM과는 완전히 다른 개념이며, 섀도우 DOM은 캡슐화와 관련되고, 가상 DOM은 성능과 관련된다. HTML 템플릿은 3장에서 ..
[프레임워크 없는 프론트엔드 개발] 3장. DOM 이벤트 관리
지난 장에서는 데이터에 따른 DOM 엘레먼트를 어떻게 그리는지에 대해 알아봤다면, 이번 장에서는 화면을 동적으로 바꾸는 이벤트에 대해 알아본다. YAGNI 원칙 YANGI는 ‘You aren’t gonna need it(정말 필요할 때까지 기능을 추가하지 마라)’의 약자로, 익스트림 프로그래밍의 원칙 중 하나다. 프레임워크 없이 개발할 때에는 이 원칙이 절대적으로 중요하다. 아키텍처를 과도하게 엔지니어링하는 경우를 막기 위해서다. DOM 이벤트 API 이벤트는 웹 애플리케이션에서 발생하는 동작으로, 브라우저는 이벤트가 발생하면 사용자에게 알려주고 사용자는 이벤트에 대해 어떤 방식으로든 반응할 수 있다. 이벤트에는 다양한 종류가 있다. 전체 이벤트 리스트는 여기서 확인 가능하다. Event referenc..
[프레임워크 없는 프론트엔드 개발] 2장. 렌더링
문서 객체 모델(DOM) 문서 객체 모델(DOM)은 프로그래밍 방식으로 엘레먼트를 렌더링하는 방식으로, 우리는 DOM을 통해 웹 애플리케이션을 구성하는 엘레먼트들을 조작할 수 있다. 우리가 보는 HTML은 모두 DOM 트리 형식으로 표현할 수 있는데, 이 트리의 노드에 querySelector 등의 메서드로 접근하여 속성을 변경할 수 있다. 렌더링 성능 모니터링 여기선 렌더링 엔진의 성능을 모니터링하는 여러 도구를 살펴본다. 구글 개발자 도구 개발자 도구를 연 다음 cmd(ctrl)+shift+P를 누르고 Show frame per seconds (FPS) meter 메뉴 항목을 선택하면 FPS 미터와 함께 GPU에서 사용하는 메모리양을 볼 수 있다. stats.js GitHub - mrdoob/stat..
[프레임워크 없는 프론트엔드 개발] 1장. 프레임워크에 대한 이야기
프레임워크의 정의 프레임워크는 무언가를 만들 수 있는 지지 구조로, 우리는 프레임워크에서 제공하는 구성 요소와 기본 요소들을 가지고 서비스를 만들 수 있다. 프레임워크는 사용 언어, 의존성 주입 방법, 디렉터리 구조 등을 문법적으로 강제하거나, 프레임워크 커뮤니티 내에서 만든 ‘사실상’ 강제되는 몇 가지 제약 조건을 갖고 있으며, 프레임워크를 사용하려는 개발자는 이 제약 조건에 맞춰 코드를 작성해야 한다. 프레임워크 대 라이브러리 - 비교로 간단하게 알아보기 💡 프레임워크는 코드를 호출한다. 코드는 라이브러리를 호출한다. 우리가 웹 서비스를 개발할 때 사용하는 프레임워크 중 하나인 Angular와 날짜를 다루는 라이브러리인 Moment.js를 비교해 보면 프레임워크와 라이브러리의 차이점을 이해할 수 있다..
[클린 코드 Clean Code] 3장 - 함수
Introduction function testTableHtml(PageData: PageData, includeSuiteSetup: boolean) { let wikiPage: WikiPage = pageData.getWikiPage(); let stringBuffer: string = ""; if (pageData.hasAttribute("Test")) { if (includeSuiteSetUp) { let suiteSetup: WikiPage = PageCrawlerImpl.getInheritedPage( SuiteResponder.SUITE_SETUP_NAME, wikiPage ); if (suiteSetup !== null) { let pagePath: WikiPagePath = suiteSet..
[NLP] Sentence-BERT 살펴보기
Sentence-BERT Sentence-BERT는 vanila BERT/RoBERTa를 fine-tuning하여 문장 임베딩 성능을 우수하게 개선한 모델이다. BERT/RoBERTa는 STS 태스크에서도 좋은 성능을 보여주었지만 매우 큰 연산 비용이 단점이었는데, Sentence-BERT는 학습하는 데 20분이 채 걸리지 않으면서 다른 문장 임베딩보다 좋은 성능을 자랑한다. 등장 배경 기존의 BERT로는 large-scale의 유사도 비교, 클러스터링, 정보 검색 등에 많은 시간 비용이 들어간다. BERT로 유사한 두 문장을 찾으려면 두 개의 문장을 한 개의 BERT 모델에 넣어야 유사도가 평가된다. 따라서 문장이 10000개 있으면 10C2 번의 연산 후에 유사도 랭킹을 얻을 수 있다. 클러스터링이나..
[구글 BERT의 정석] Chapter 6: 텍스트 요약을 위한 BERTSUM 탐색
텍스트 요약 NLP 분야의 주요 연구 분야 중 하나로, 주어진 긴 텍스트를 요약하는 것. 긴 문서, 뉴스 기사, 법률 문서, 블로그 게시물 등 다양한 영역에서 널리 사용됨. 텍스트 요약 방식 이해하기 아래와 같은 텍스트를 요약해야 한다고 해보자. 나는 어제 신촌에서 동아리 운영진 동기 언니와 10시간 내내 먹었다. 점심으로 진돈부리를 가려고 했지만 딱 어제 휴업하는 바람에 반서울에 갔는데 엄청 맛있었다. 다음에 또 와야겠다고 생각했다. 후식으로 파이홀에 가서 오레오말차가나슈파이와 얼그레이가나슈파이를 먹었다. 역시 다음에 또 와야겠다고 생각했다. 저녁으로 돈우마미에 가서 사케동을 먹었다. 가라아게 4조각을 시켰는데 서비스로 한 조각을 더 주셔서 돈우마미는 참 좋은 가게라는 생각이 들었다. 마지막으로 아워즈..
[NLP] ALBERT: A Lite BERT
구부정 스터디 4주차 발제 슬라이드입니다. GitHub - Gubuzeong/Getting-Started-with-Google-BERT Contribute to Gubuzeong/Getting-Started-with-Google-BERT development by creating an account on GitHub. github.com References ALBERT: A Lite BERT for Self-supervised Learning of Language Representations y-rok님 블로그 jeonsworld님 블로그 Myung Ha Kwon님 블로그
[NLP] Google의 BERT 이해하기
BERT란 무엇인가 BERT(Bidirectional Encoder Representation from Transformer) : Google에서 만든 문맥을 고려한 Transformer 기반 고성능 텍스트 임베딩 모델. 임베딩 모델이 문맥을 고려할 때의 장점 👉🏻 다의어∙동음이의어를 구분할 수 있다. A: He got bit by Python(파이썬이 그를 물었다). B: Python is my favorite programming language(내가 제일 좋아하는 프로그래밍 언어는 파이썬이다). Word2Vec: 정적 임베딩, A에서의 'Python' 임베딩 == B에서의 'Python' 임베딩 BERT: 동적 임베딩, 트랜스포머 모델 기반이므로 문장의 각 단어를 문장 내 모든 단어들과 연결시켜 문..