[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
[!] Xcode - develop for iOS and macOS (Xcode 14.2) ✗ CocoaPods not installed. CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side. Without CocoaPods, plugins will not work on iOS or macOS. For more info, see https://flutter.dev/platform-plugins To install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions. 이렇게 느낌표가 있는것이 있어서 sudo gem install cocoapods 이렇게 cocoapads를 설치를 했는데 설치가 실패해서 로그를 봤더니 package configuration for libffi is not found "xcrun clang -o conftest -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/universal-darwin21 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby/backward -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -g -Os -pipe -DHAVE_GCC_ATOMIC_BUILTINS -DUSE_FFI_CLOSURE_ALLOC conftest.c -L. -L/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib -L. -L/AppleInternal/Library/BuildRoots/a0876c02-1788-11ed-b9c4-96898e02b808/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.6.Internal.sdk/usr/local/lib -lruby.2.6 " In file included from conftest.c:1: In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby.h:33: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby/ruby.h:24:10: fatal error: 'ruby/config.h' file not found #include "ruby/config.h" ^~~~~~~~~~~~~~~ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby/ruby.h:24:10: note: did not find header 'config.h' in framework 'ruby' (loaded from '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks') 1 error generated. checked program was: /* begin */ 1: #include "ruby.h" 2: 3: int main(int argc, char **argv) 4: { 5: return 0; 6: } /* end */ 이렇게 되어 있어요. 어떻게 해야 하나요?
범쌤 안녕하세요! 비주얼 배너 영상 학습 중에 질문 드립니다. 비주얼 배너 반응형 사이즈 제작 시, 모바일 해상도는 W 500으로 하는 이유가 궁금합니다! 360이나 375가 아닌 500으로 하는 이유가 있을까요? 아직 다른 강의까지 학습하지 못하였고, 궁금하여 문의 드립니다!! 좋은 강의 영상 감사드립니다!!
안녕하세요. 원하는 부분들을 골라서 듣고 있는데 이전 섹션의 코드를 복붙해서 사용하는 강의들이 있어 이전 섹션을 따라하지 않으면 원하는 부분부터 진도를 나갈 수가 없네요... 너무 불편합니다. 노션에 해당 섹션별로 코드 좀 제공해주세요... (eg. 07-3, 08-1, ...) 감사합니다.
안녕하세요 최종 과제에서 타이머를 다시 만드는데, 타이머 3분이 끝나기 전에 '인증번호 전송'을 다시 누르면 타이머가 겹쳐서 시간이 이상하게 표기됩니다. 수업때는 조건이 time < 0일때, clearInterval(timer) 로 해결한다고 하셨는데, 타이머 끝나기 전에는 타이머가 초기화되지않아서요... 아래는 제 코드와 설명입니다. (final.js 파일 안) let isStarted = false // 인증번호 생성 및 타이머 함수. 인증번호 버튼 onclick="startTimer()"로 되어있음. let startTimer = () => { if (isStarted === false){ isStarted = true // 인증번호 생성 let token = String(Math.floor(Math.random() * 0xffff)).padEnd(6, "0") document.getElementById("auth__number").innerText = token // 인증확인 버튼 활성화 & //인증 전송 비활성화 document.getElementById("auth__checkbtn__id").disabled = false //document.getElementById("auth__sendbtn__id").disabled = true // 타이머 시작 (5초) let time = 5 let timer clearInterval(timer) timer = setInterval(() => { if (time >= 0 && isStarted){ //여기 isStarted 조건 추가해 중복타이머 막음 let min = Math.floor(time / 60) let sec = String(time % 60).padStart(2,"0") document.getElementById("auth__time").innerText = min + ":" + sec time = time - 1 } else { document.getElementById("auth__checkbtn__id").disabled = true document.getElementById("auth__sendbtn__id").disabled = false //isStarted = false // 그렇다고 여기에 isStarted = false 더쓰면 또 겹침... 깨끗한 상태로 시작이 왜안되지? clearInterval(timer) document.getElementById("auth__time").innerText = '3:00' document.getElementById("auth__number").innerText = '000000' } }, 1000) } else { // **타이머 작동중일때. isStarted 상태 바꾸기.. ** // 그러나 다시 If문을 진입해 타이머 재시작하려면 다시 [인증 전송]버튼 눌러야함 isStarted = false console.log('타이머 작동중임') // clearInterval(timer)는 위의 If문 안에있어 불러올 수 없음. // startTimer()를 재귀적으로 불러오면 또 다시 타이머 겹침 } } <로직> 1. 타이머가 작동중이지 않을때 버튼 누름 (isStarted = false 상태) 2. 타이머 시작 (isStarted = true 상태) 3. ** 타이머가 작동중일때 [인증 전송 버튼] 다시 누름 (isStarted = false로 바꿈) ** --> 타이머가 재시작 하지 않음 (함수는 else문에서 끝났기 때문) 4. 재시작위해 [인증 전송버튼] 다시 누름 (3단계에서 isStarted가 false로 바뀌어서 이제 타이머 다시시작) **표시 있는 else문 **(3단계)에서 IsStarted = false로 바뀌고 else문이 끝났기 때문에, 다시 타이머를 시작하도록 재귀적으로 startTimer()함수를 실행하면 또 타이머가 겹칩니다. ㅠㅠ 이렇게 저렇게 바꿔봐도 해결이 안되서 그냥 인증과 동시에 인증번호생성 버튼을 비활성화 시켰습니다... 어떻게 타이머 작동중에 [인증 전송]버튼 누르면 겹침문제없이 다시 타이머가 초기화되도록 할 수 있나요?
교안 p103쪽에 있는 연산자 오버로딩에 관해 질문드립니다. bool operator < (const Point & a) const{ 이 부분에서 < 대신 bool operator > (const Point & a) const{ ">"로 바꾸어 컴파일 했을때 오류가 발생하는 이유가 왜인지 모르겠습니다. 제가 이해한 연산자 오버로딩은 해당 연산자를 객체끼리도 비교 가능하게 만들기 위해서 오버로딩 하는거라고 이해를 했는데 그러면 > 연산자도 가능해야 하는 거 아닌가요? 아니면 bool 타입에서 연산자 오버로딩 할때 < 연산자만 가능한거일까요..
react-router-dom6.4 이상에서 createBrowserRouter 라는 데이터 API를 지원하는 라우터가 추가되었다고 합니다. 6.4의 새 라우터 중 하나를 사용하도록 앱을 업데이트하는 것이 좋다고 하는데요. createBrowserRouter와 BrowserRouter를 사용했을때의 큰 차이점은 무엇인가요? 현재 챕터 강의를 배우고 외우며 각각 5.0과 6.0 버전으로 복습해본뒤 createBrowserRouter 사용법을 배워보려고 해도 공식문서 예시만으로는 잘 이해가 안가더라고요 그래서 간단한 사용법만이라도 알고싶습니다!!
지금 쇼핑몰 강의를 사려하는데 리뉴얼 계획이 있다고 나와있어서 문의 드립니다 리뉴얼이 되면 현재 쇼핑몰강의에서 업데이트가 되는것인가요? 아니면 새로운 강의가 나오는 것일까요? 그리고 리뉴얼이 된다면 언제쯤에 리뉴얼이 될지 알수있을까요.. 항상 좋은강의 감사드립니다 쇼핑몰도 빨리 들어보고 싶네요
영상에 나오는 대로 JDK 11로 설정하고 spring boot 도 2.3.1 버전으로 설정했습니다. 400에러가 나는데 혹시 어떻게 설정해야지 whitelable Error Page가 나오는건가요 ㅠㅠㅠㅠ 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.
안녕하세요. 자료형 관련하여 질문드립니다. 예를 들어, int a = 8; 이라고 한다면, int는 4바이트이니까, 메모리에 4바이트만큼 차지하게 됩니다. 4바이트는 32비트이니까 32자리인데, 숫자8을 2진수로 바꾸면 1000으로 4자리입니다. 제가 궁금한 점은 그러면 메모리에 할당된 4바이트 공간에는 32자리의 2진수가 들어가야 하니까, 32자리 중 앞 28자리는 0으로 채워지고, 뒤 4자리가 1000으로 채워지는 것인가요? (4.10강) scanf()함수 예제에서 이런 코드를 작성하였습니다. scanf로 받는 %hhd는 문자의 숫자형식(아스키코드 등)을 받는 것이고, printf는 char타입보다 메모리가 큰 int로 받으니까 에러가 발생하지 않는다는 것은 이해하였습니다. %hhd는 unsigned이니까 0~255까지의 숫자가 가능한데, 콘솔창에 255를 넣으면 값이 -1이 나오고, 256은 0, 257은 1... 이런 식으로 출력이 됩니다. 왜 이렇게 되는 것인지 이해가 잘 안 되어서 질문 남깁니다. 감사합니다.
안녕하세요. 강의와 관련된 내용은 아니지 추가 공부중 이해하기 어려운 부분이 혼자 고민해봐도 확실한 답을 찾지 못해 질문 드립니다. 먼저 책 내용은 아래와 같았습니다. 위와 같은 이유로 라이브러리는 공통 함수 시그니처를 함수 타입으로 제공하기도 한다. 또한 공통 콜백 함수를 위한 타입 선언을 제공하는 것이 좋다. 예를 들어 리액트는 함수의 매개변수에 명시하는 MouseEvent 타입 대신 함수 전체에 적용할 수 있는 MouseEventHandler 타입을 제공한다. 만약 같은 타입 시그니처를 반복적으로 작성한 코드가 있다면 함수 타입을 분리해 내거나 이미 존재하는 타입을 찾아보자. 라이브러리를 직접 만든다면 공통 콜백에 타입을 제공해야한다. 그리고 관련된 타입은 아래와 같이 있었습니다. type EventHandler<E extends SyntheticEvent<any>> = { bivarianceHack(event: E): void }["bivarianceHack"]; type MouseEventHandler<T = Element> = EventHandler<MouseEvent<T>>; onAuxClick?: MouseEventHandler<T> | undefined; onAuxClickCapture?: MouseEventHandler<T> | undefined; onClick?: MouseEventHandler<T> | undefined; onClickCapture?: MouseEventHandler<T> | undefined; onContextMenu?: MouseEventHandler<T> | undefined; onContextMenuCapture?: MouseEventHandler<T> | undefined; onDoubleClick?: MouseEventHandler<T> | undefined; onDoubleClickCapture?: MouseEventHandler<T> | undefined; onMouseDown?: MouseEventHandler<T> | undefined; onMouseDownCapture?: MouseEventHandler<T> | undefined; onMouseEnter?: MouseEventHandler<T> | undefined; onMouseLeave?: MouseEventHandler<T> | undefined; onMouseMove?: MouseEventHandler<T> | undefined; onMouseMoveCapture?: MouseEventHandler<T> | undefined; onMouseOut?: MouseEventHandler<T> | undefined; onMouseOutCapture?: MouseEventHandler<T> | undefined; onMouseOver?: MouseEventHandler<T> | undefined; onMouseOverCapture?: MouseEventHandler<T> | undefined; onMouseUp?: MouseEventHandler<T> | undefined; onMouseUpCapture?: MouseEventHandler<T> | undefined; 제가 이해한건 onClick, onDoubleClick에 관련된 이벤트를 모두 만들지 않고 MouseEventHandler 하나로 타입을 지정 가능하도록 했다 라는 뜻으로 이해했는데 맞을까요? 그리고 공통 콜백 함수를 위한 타입 선언을 제공하는 것이 좋다 라는 문장은 저 MouseEventHandler 타입을 개발자에게 제공하여 편하게 사용하는 것이 좋다, onClick, onDoubleClick 같은 속성에 들어갈 함수를 위한 타입을 제공하는 것이 좋다 로 이해했는데 맞을까요?? 마지막 문장은 해당 부분을 중괄호() 로 이해 했는데 맞을까요?? 같은 타입 시그니처를 반복적으로 작성한 코드가 있다면(MouseEventHandler 타입인 함수들) 함수 타입(MouseEventHandler)를 분리해내거나 이미 존재하는 타입(MouseEventHandler)를 찾아보자. 라이브러리를 직접 만든다면 공통 콜백에 타입을 제공(MouseEventHandler)해야한다. 제 질문 자체가 이상하면 솔직히 말해주시면 감사합니다ㅠㅠ 감사합니다!!
안녕하세요 강사님 좋은 강의 감사합니다. kospi 에 21-12-18 데이터를 넣고 samsung.loc[samsung.index.isin(kospi.index)] 이렇게 처리하면 양쪽 인덱스가 아예 달라도 중복 인덱스로 samsung 시리즈를 확인할 수 잇는거 같은데 이런 방법도 정답이 될 수 있을까요?
안녕하세요 강사님 simple-jwt를 이용하여 수업진행을 하고 있습니다. simple-jwt의 accessToken이 만료되었을때 refreshToken을 이용하여 토큰을 재발급을 할 수 있다고 구글링을 통해서 알게 되었는데요. verify를 통해 검증을 한 후, accessToken이 만료가 되었다면, refreshToken을 이용하여 재발급을 진행해보려합니다. 여기서 의문점이 생긴게, accessToken과 refreshToken을 둘 다 로컬 스토리지에 저장하게되면 문제가 있을까요?로컬 스토리지에 저장하여 개발하는 것이 안좋다면, 로그인 했을 때 함께 넘어오는 refreshToken은 어떻게 관리하는게 좋을까요??