본문 바로가기

전체 글100

말해보카 오답노트 11시 까지는 돌아올게We'll be back ___ eleven.더보기in - 시각이 아닌, 시간을 나타낼 때 사용된다. in one hours -> 1시간 안에on - on 뒤에는 보통 '요일' 또는 '날짜'가 나와야한다. 시간에는 on을 사용하지 않는다.at - 11시에 돌아온다는 의미가 된다. 정답은 by였다. ~ 까지는을 나타 낼 때는 by를 써야한다.너무 걱정하지 마세요. 저도 저 자신은 지킬 수 있어요.Stop worrying so much. I can ___ myself.더보기guard - guard는 누군가를 보호한다는 느낌으로 쓰는 것이었다.safe - 안전한 이라는 형용사이므로 현재는 옳지 않은 문법이었다.safety - 안전이라는 명사였다...save - 구하다라는 뜻으로 위기에서 .. 2025. 1. 4.
[Chrome Extension] 구글 딥다이브 크롬 확장 프로그램 제작기 구글 크롬 확장 프로그램을 제작하자. 나는 이걸 왜 만들었을까?구름 풀스택 과정 10기를 참여하면서 강의 리스트 중 중복되는 강좌가 있었다.중복되는 강좌를 식별하기 위해서 만들어봤다.ResultHow?우선 docs를 찾아봐야한다.https://developer.chrome.com/docs/extensions/get-started/tutorial/hello-world?hl=ko여기서 잘 설명되어있다.요약해보자manifest.json 이라는 파일과background.js, 그리고 동작을 할 js들이 필요하다. 자세한 코드는 git에 작성해두었다.이제 리팩토링을 해보자.https://github.com/groom-study-team1-project/chrome-extension GitHub - groom-st.. 2024. 8. 7.
[React] 환경설정 원래 리액트는 웹팩이라는 Bundler로 실행한다.이 강의는 리액트 문법과 리액트를 이해하기 위함이므로 React를 실제로 사용하는 환경설정은 하지 않는다. 1. React 리액트를 사용하기 위해서 기본적으로 환경설정이 되어야하는데 리액트에서 제공하는 개발용 cdn 링크가 있다. 리액트에서도 직접 개발용으로만 쓰라고 명시되어있고 배포용으로는 추천하지 않는다. CDN 링크 – ReactA JavaScript library for building user interfacesko.legacy.reactjs.org 나는 배포까지 할 내용이 아니므로 강의와 동일하게 cdn을 이용한다.react.js 는 react 기능인 컴포넌트, 가상돔 등을 지원한다. 2. React-Dom React Dom은 가상 DOM을 실.. 2024. 8. 4.
[React] Intro 리액트는 크게 세가지 개념이 중요하다.1. Reactive2. Virtual DOM3. Component Reactive는 특정 값에 의존해 자동으로 반응하는 것을 의미한다.Vanila js로 검색 서비스를 만들면서 값을 변경하게 되면(검색 등) 다시 rendering을 하는 과정이 필요했었다.하지만 리액트는 값을 변경하면 다시 rendering 할 필요가 없도록 설계되었다. react는 DOM API를 호출하면서 성능 저하가 발생하는 문제를 해결하기 위해 Virtual DOM을 제공한다.Virtual DOM에서 변경된 부분을 확인하고 바뀐 부분만 확인하여 DOM에 제공한다.이런 특성 때문에 reactive 하다고 할 수 있다. 아래는 참고하면 좋은 예시 영상이다.https://www.youtube.co.. 2024. 8. 3.
[Vanila js] 최근 검색 구현하기 ResultViewexport default class HistoryListView extends KeywordListView { constructor() { super(qs("#history-list-view"), new Template()); } bindEvents() {} handleClickRemoveButton() {}} HistoryListView를 보면 KeywordListView 와 매우 유사하다.추천검색과 차별점을 생각하면, 검색기록을 지우는 작업이 추가로 수행되니까. 새로운 이벤트를 바인딩 해준다.또, KeywordListView를 상속받으므로 KeywordListView의 생성자의 구조 변경이 발생한다.Controllerexport defaul.. 2024. 8. 2.
Day1. Ai와의 대화 오늘의 질문  ai: What is your favorite hobby and why do you enjoy it? me: I like watching youtube, because i can not thinking in watching youtube. -> “I like watching YouTube because I don’t have to think while watching it.” 1. can 뒤에는 동사 원형이 와야한다.  2. in 은 문법상 옳지 않다 ~ 동안 이라는 while을 사용하자. 3. dont' have to think 는 생각할 필요가 없다는 의미를 명확히 전달한다. 4. 앞에 Youtube라는 것을 설명했으므로 it으로 표현해도 된다. ai: What kind of video.. 2024. 8. 2.
[Vanila js] 키워드 검색 구현하기 ResultViewexport default class KeywordListView extends View { constructor() { super(qs('#keyword-list-view')); this.template = new Template(); this.bindEvents(); } show(data = []) { } bindEvents() { } handleClick(event) { }} 앞선 기능들과 마찬가지로 keyword-list-view에 적용할 interface다.Result를 보면 키워드를 클릭하는 이벤트가 발생하니까 이벤트를 바인딩해주는 것이 필요하고keyword 목록들을 보여주어야 하므로 show().. 2024. 8. 2.
[Vanila js] 탭 구현하기 ResultViewexport default class TabView extends View { constructor() { super(qs('#tab-view')); this.template = new Template(); } show() {} bindEvents() {} } 정적 페이지의 tab-view id를 가진 태그에 작업을 수행한다.Result와 같이 탭을 보여줄 기능과, 탭을 누르는 행위를 하는 기능이 필요Controllerexport default class Controller { constructor(store, {searchFormView, searchResultView, tabView}) { this.store.. 2024. 8. 1.
[Vanila js] 검색 결과 기능 구현 Viewexport default class SearchResultView extends View { constructor() { super(qs("#search-result-view")); this.template = new Template(); } show(data = []) { if (data.length > 0) { this.element.innerHTML = this.template.getList(data); } else { this.element.innerHTML = this. template.getEmptyMessage(); } super.show(); }}.. 2024. 7. 31.