자바스크립트에서 함수는 표현식으로 변수에 할당할 수 있어서 값으로 평가 될 수 있다고 알고 있습니다. 강의에서 배열이나 객체에 대한 예시를 설명해 주셔서 이해를 했는데, 문득 함수의 경우는 어떻게 이루어지는지 궁금해 졌습니다. const outerFunc = function (){ let b = 1; let c = 2; const innerFunc = function(){ console.log("inner function") } } 예를들어 위와같이 있다고 할 때, 초기화 단계에서 outerFunc 변수가 생성되고 undefined로 초기화 된 후에, 리터럴로 선언된 함수가 그 자체로 들어있다가, 함수 호출 시에 (실행시에) 컨텍스트를 생성하며 함수 내부에 선언한 변수들이 생성, 주소 할당 등의 과정이 이루어지는지, 아니면 변수나 객체가 생성되는 것과 마찬가지로 내부에 있는 b, c 변수들이 메모리에 할당되고 주소값을 참조하는 과정까지 이루어 진 후, outerFunc 변수에 함수객체의 주소를 가리키도록 생성되는지 위 두가지 중 어떻게 동작하는지가 혼동됩니다..
강의 15:53 경에, 5004 메모리에 'ddd'를 할당한 후 없어지는데 강의 자료 제작 중 실수인 것 같습니다. 제 생각에는 'ddd'도 String 타입으로, 원시값이니까 변경되는 것이 아니라 'ddd'를 그대로 둔채 5005번 메모리에 변경될 값들이 이어서 들어가야 할 것 같습니다.
제가 잘못 본건지는 모르겠지만, Node.js API구현 중 퍼사드 패턴 47:31초에서 function getToken() { const myconunt =6 if(mycount === undefined){ console.log("에러발생!!! 갯수를 제대로 입력해주세요!!!") return ~~~ } 좌측 인강화면을 보시면 01-04-token-count-api-facade 폴더에 들어있는 index.js파일에서 function getToken() 함수에서 매개변수를 지우고, const mycount = 6 으로 대체하였습니다. 하지만, 우측 노션에 학습자료 퍼사드 패턴에서는 function getToken(count) { ~~} 라고 해서 count매개 변수가 존재합니다. count를 여전히 매개변수로 사용하고 있습니다. 즉 "노션에 있는 자료가 수정되어야 한다고 생각합니다." 노션 자료 중 호출하는 부분에서 createTokenOfPhone('01012345678', 6); 매개변수 6도 삭제되어야 합니다. "REST-API 실습 강의"에서 postman으로 학습시 "휴대폰 번호 전송"이 안되서 순간적으로 당황했습니다. 확인하시고, 답글 달아주시면 감사하겠습니다. 해당강의는 Node.js API구현 중 퍼사드 패턴 47:31초입니다. 노션은 학습 자료 / 퍼사드 패턴 입니다.
[하루 10분|Web Project] HTML/JS/CSS로 나만의 심리테스트 사이트 만들기
안녕하세요 지금 응용해서 만들고 있는 수강생입니다 일단 정말 좋은 강의 감사드려요! 응용해서 만들고 있는 도중에 for문이 qIdx가 0일 때는 한번 1번일 때는 두 번이 돌아요 ex. qIdx가 2일 때 1과 2가 돌아서 결과 값이 이상해져요 혹시 몇 시간 째 구글링 해도 모르겠어서 이렇게 문의 남깁니다!
프로토타입 동영상 7:07에 나오는 function Person(n,a){ this.name = n; this.age = a; } var roy = new Person('로이',30); var royClone1 = new roy.__proto__.constructor('로이클론1',10); var royClone2 = new roy.constructor('로이클론2',25); var royClone3 = new Object.getPrototypeOf(roy).constructor('로이클론3',25); var royClone4 = new Person.prototype.constructor('로이클론4',15); 여기서 Object.getPrototypeOf(roy) 이 줄이 실행이 안됩니다, Uncaught TypeError: Object.getPrototypeOf is not a constructor 이렇게 나오는데 MDN에 찾아봐도 답을 모르겟어요
Clusters의 Database Access를 클릭해서 Database Access 의 user 중 edit 버튼을 클릭한 후 Database User Privileges의 Built-in Role 을 Atlas admin으로 하면 에러가 해결됩니다. 그 후에도 에러가 난다면 본인이 화이트리스트에 설정을 제대로 했는지 확인하시면 해결 될거에요!
실무에서 쓸일이 있어서 복습하다보니 Vue 버전이 바뀌어서 강의 내용보면서 Vue3 에 맞게 적용중인데요. 우선 아래 레퍼런스 참고하시면 될 듯 합니다. 강의내용과는 크게 다른건 없긴합니다. https://vuejs.org/guide/built-ins/transition.html#the-transition-component https://vuejs.org/examples/#list-transition TodoList.vue <template> <div> <!-- name 은 하단의 css 클래스 transition class 와 연관--> <TransitionGroup tag="ul" name="list" class="container"> <li v-bind:key="todoItem.item" v-for="(todoItem, index) in propsdata" class="shadow"> <i class="checkBtn fa-solid fa-check" v-bind:class="{checkBtnCompleted: todoItem.completed}" v-on:click="toggleComplete(todoItem, index)"></i> <span v-bind:class="{textCompleted : todoItem.completed}" >{{ todoItem.item }} </span> <!--{{ index }}--> <span class="removeBtn" v-on:click="removeTodo(todoItem, index)"> <i class="fa-solid fa-trash"></i> </span> </li> </TransitionGroup> </div> </template> <style> /* 기존 css 는 생략, 아래 레퍼런스 css 참고 https://vuejs.org/examples/#list-transition */ /* 리스트 아이템 트랜지션 효과 */ /* 1. declare transition */ .list-move, .list-enter-active, .list-leave-active { transition: all 0.5s cubic-bezier(0.55, 0, 0.1, 1); } /* 2. declare enter from and leave to state */ .list-enter-from, .list-leave-to { opacity: 0; transform: translateY(30px); } /* 3. ensure leaving items are taken out of layout flow so that moving animations can be calculated correctly. */ .list-leave-active { position: absolute; transition: all 1s; } </style>
해당 강의 3분 30초 이후부터 컴포넌트 창에 들어가서 DiaryList 컴포넌트의 DiaryItem들을 확인하는 장면이 나와있습니다. 강사님의 화면에서는 키값들이 0부터 잘 출력되지만 저는 아래와 같이키값들이 20부터 39까지 출력됩니다. useEffect를 건들이기 전 일기를 추가하는 부분에서는 키값들이 0부터 잘 출력되는 것을 보아 이번 강의에서 건들인 부분이 문제인것 같아 강사님이 올려주신 App.js 코드를 복붙하여 실습해보아도 해당 현상이 일어납니다. 그 이유를 알 수 있을까요?
안녕하세요. 정말 기초적이라고 생각 하실 수 있는데 정말 모르겠어요 ㅜㅜ.. scrollMove 라는 함수 매게변수에 moveY가 있는데요. moveY가 움직이는 y값이라고 하셨잖아요 그걸 변수로 어디에다가 지정해놓지 않았는데 moveY가 움직이는 y값일거다 라는걸 어떻게 알고 if문이나 다운 클리어, 업 클리어에 어떻게 쓰는거죠? moveY에는 아무런 값이 지정되어 있지 않은데 if문 조건문에 쓰이는거 보면 이해가 잘 안가요 ㅜ
현재 Ubuntu 운영체제를 듀얼부팅으로 22.04.01 버전으로 사용하고 있고, 강의를 듣기 위해 mongodb 설치를 진행하려고 합니다. 그러나 현재 강의의 notion에서 올려주신 설치 과정을 그대로 진행했는데 6번 명령어를 실행 후 이와 같은 오류가 발생했습니다. 설치과정 sudo apt-get install gnupg wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add - lsb_release -dc echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list (jammy버전이라 fosal에서 jammy로 변경했습니다.) +추가(jammy가 아닌 forsal로도 진행을 해 봤고, 6.0버전으로도 진행해봤는데 같은 에러가 떴습니다...) sudo apt-get update sudo apt-get install -y mongodb-org 오류 메시지 몇몇 패키지를 설치할 수 없습니다. 요청한 상황이 불가능할 수도 있고, 불안정 배포판을 사용해서 일부 필요한 패키지를 아직 만들지 않았거나, 아직 Incoming에서 나오지 않은 경우일 수도 있습니다. 이 상황을 해결하는데 다음 정보가 도움이 될 수도 있습니다: 다음 패키지의 의존성이 맞지 않습니다: mongodb-org-mongos : 의존: libssl1.1 (>= 1.1.1) 하지만 설치할 수 없습니다 mongodb-org-server : 의존: libssl1.1 (>= 1.1.1) 하지만 설치할 수 없습니다 mongodb-org-shell : 의존: libssl1.1 (>= 1.1.1) 하지만 설치할 수 없습니다 E: 문제를 바로잡을 수 없습니다. 망가진 고정 패키지가 있습니다. 구글링 해본 결과 libssl1.1이 깔려있지 않아서 그렇다는 걸 확인했는데 우분투 22.04 버전은 libssl3이 이미 깔려있어 중복 설치는 좋은 해결 방법이 아니라는 것을 확인했습니다. 그래서 또 다르게 설치할 수 있는 방법이 있을지 질문드립니다.
타입을 유니온 타입으로 선언할 경우, 해당 타입은 A, B 타입의 교차 속성에만 접근 가능한 것으로 이해하고 있습니다 그래서 function fn(): string | number { // do something } const val = fn(); val.toFixed(2) // type error 에서 val 의 타입이 string과 number의 교차 속성만을 가진 타입이라서 toFixed가 타입 오류를 내는 것으로 이해하고 있습니다. 질문 드리고 싶은 것은, 특정 함수가 A 타입인 값이나 또는 B 타입인 값을 반환할 수 있다고 가정할 경우, 반환된 값을 변수에 할당하여 사용할 때 A 타입의 모든 속성 또는 B 타입의 모든 속성에 접근 할 수 있도록 하고자 한다면 반환 타입을 어떻게 선언해야 하는지 궁금합니다. 단순히 or 로 생각해서 유니온타입을 설정하면 교차 속성에만 접근이 되니 타입 오류가 발생하게 되어 어떻게 해야 할지 모르겠습니다.
app.js 의 소스 2행의 코드가, 최초로 clone 후 받아온 소스와 강의에서 진행되는 코드가 서로 다릅니다. 강의에서는 디폴트가 /users 입니다. 하지만 실제 repository 에는 /users/1 로 단일 객체로 가져옵니다. 영상 내에서 해당 항목에 대한 명시적인 소스 수정 부분도 없어, 그 부분을 인지 못하고 나머지 부분만 영상대로 따라하면서 수정하면 제대로 강의를 진행을 할 수 없습니다. 자잘한 부분이기는 하지만, 이런 부분은 당연히 적용되어야 하는 부분 같습니다. step by step 으로 따라가는 걸 전제로 하는 게 아닐까요?
vscode 터미널에 index.js 콘솔을 출력하려고 따라 작성했는데 node : 'node' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인 식되지 않습니 다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십 시오. 위치 줄:1 문자:1 + node index.js + ~~~~ + CategoryInfo : ObjectNotFound: (node:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException 이런 오류가 나면서 콘솔이 나타나지 않는데 이유 알 수 있을까요?
수업 내용 코드를 캡쳐해왔는데요. 최초에 promise가 동작하도록 아래와 같이 코드 작성을 하셨고, 아래 코드는 위 코드에서 Promise.resolve(a+100) 이후에 Promise chain을 타게 되어, 연속적으로 비동기가 일어나며 성능저하가 일어난다고 하셨는데요. Promise.resolve(a+100) 이후 acc에 할당되는 값이 acc.then(acc => f(acc,a)); 가 되다 보니까 결국 acc.then(acc => f(acc,a)).then(acc => f(acc,a)).then...then...; 위와 같이 계속 thenable 하게 chaining이 되고, 그 결과 promise는 microstack 이기 때문에 microstack queue <-> callstack 사이에 task 이동으로 인해 부하가 생겨 성능 저하가 발생한다. 하지만 코드 내에 호출되는 일반 함수의 경우 callstack에 바로 호출되기 때문에, 유명함수를 가진 함수로 리팩터링하신 것 같은데 위와 같이 이해한 게 맞을까요?