안녕하세요, 비개발자로 streamlit 부분까지 따라왔는데 막혀버렸습니다 ^^; streamlit import가 되지 않아서 문의드립니다. 콘솔창에서 hello streamlit 입력했을 때 정상적으로 브라우저에 뜨는 것을 확인했는데, 아래처럼 VScode에서는 import가 되지 않습니다. 혹시 가상환경에 문제가 있는걸까요? inflearn-llm-application 가상환경에서 mkdir로 inflearn-streamlit을 만들었고 아래처럼 inflearn-streamlit 을 activate 한 상황입니다. 확인 부탁드리겠습니다! 감사합니다.
강의 도중 AnnotationUtils 를 사용하여 애노테이션의 정보를 얻어오는 부분이 있습니다. MyConfigurationProperties annotation = AnnotationUtils .findAnnotation(bean.getClass(), MyConfigurationProperties.class); if (annotation == null) return bean; Map<String, Object> attributes = AnnotationUtils.getAnnotationAttributes(annotation); String prefix = (String) attributes.get("prefix"); return Binder.get(env).bindOrCreate(prefix, bean.getClass()); 여기에서 attributes 를 가져오지 않고 annotation.prefix() 를 사용해서 정보를 가지고 올 수도 있다고 생각됩니다만 AnnotationUtils 를 사용할 때의 다른 이점이 있는 것인가요?? MyConfigurationProperties annotation = AnnotationUtils .findAnnotation(bean.getClass(), MyConfigurationProperties.class); if (annotation == null) return bean; return Binder.get(env).bindOrCreate(annotation.prefix(), bean.getClass());
int desired = (Thread.CurrentThread.ManagedThreadId << 16) & WRITE_MASK; while (true) { for(int i = 0; i < MAX_SPIN_COUNT; i++) { if (Interlocked.CompareExchange(ref _flag, desired, EMPTY_FLAG) == EMPTY_FLAG) return; } Thread.Yield(); } desired 부분에서 마스크를 통해 WriteThreadId를 제외하고 밀어버린 뒤 Interlocked부분에서 비교를 통해 ReadLock과 WriteLock이 없는지 비교하고 있습니다. 위 과정에서 만약 먼저 ReadLock이 잡혀있다면 ReadLock이 풀릴 때 까지 기다리게 되는데 만약 끊임없이 Read가 일어나 ReadLock이 풀리는 틈이 없어 Write가 되지않는 극단적인 경우는 일어나지 않는건가요? 혹시라도 일어나지 않는다면 Read 하는 과정이 매우 짧기 때문에 그런 일이 발생하지 않는 것인지 궁금합니다.
실습 코드를 순서대로 진행하니 아래와 같은 에러가 발생했습니다. ********************* 확인해보니 3번째 셀에서 duckdb를 연결하고 %sql duckdb:///duckdb.db 그 아래에서 다음과 API로 연결을 시도하면 계속 에러가 발생합니다. duckdb_con = duckdb.connect("duckdb.db") ********************** 그래서 노트북 세션을 초기화하고 duckdb.db 파일을 삭제하고 3번째 셀을 실행하지 않고 duckdb API로 바로 연결하니 그때서야 제대로 연결되었습니다.
안녕하세요! 카운터앱 구현하기를 조금 다르게 코드를 짜보았는데, 커스텀훅을 활용법에 익숙하지 않아서, 이렇게 구현하는 방법이 적절한지 감이 안와요.. 바쁘신데 죄송하지만 아래와 같은 커스텀훅 구현방식의 장단점에 대해서 알려주시면 감사하겠습니다! 먼저 useCount.jsx를 아래와 같이 작성하였구요 import { useState } from 'react'; function useCount() { const [num, setNum] = useState(0); const onClinkCount = (e) => { setNum(num + Number(e.target.value)) } return [num, onClinkCount]; } export default useCount; 아래는 넘버 조작 부분인 Controller.jsx const Controller = ({ onClinkCount }) => { return ( <div> <button onClick={onClinkCount} value="-1">-1</button> <button onClick={onClinkCount} value="-10">-10</button> <button onClick={onClinkCount} value="-100">-100</button> <button onClick={onClinkCount} value="+100">+100</button> <button onClick={onClinkCount} value="+10">+10</button> <button onClick={onClinkCount} value="+1">+1</button> </div> ) } export default Controller 카운트 넘버 표시부분인 Viewer.jsx const Viewer = ({ num }) => { return ( <div> <div>현재 카운트:</div> <h1>{num}</h1> </div> ) } export default Viewer 그리고 부모 컴포넌트인 App.jsx 입니다. import "./App.css" import Controller from './components/Controller' import Viewer from './components/Viewer' import useCount from './hooks/useCount' function App() { const [num, onClinkCount] = useCount(); return ( <div className='App'> <h1>Simple Counter</h1> <section> <Viewer num={num} /> </section> <section> <Controller onClinkCount={onClinkCount} /> </section> </div> ) } export default App 🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨 질문 하시기 전에 꼭 확인해주세요 - 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다) - 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다) - 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢) 질문 하실때 꼭 확인하세요 - 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X) - 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지) - 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우) - 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요 - 강의의 몇 분 몇 초 관련 질문인지 알려주세요! - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
배경화면이 X, Y 축으로 반복되면서 흐르는 걸 하는 중인데요... region_rect.position이 계속 증가하면 수치가 커지니까 Vector2.ZERO 로 초기화하는 부분을 하고 있어요. 코드는 작성했고 동작은 정상적으로 하는데 제 고도엔진 화면에서는 영상처럼 Region의 Rect.x Rect.Y의 수치가 변하지 않고 0으로 고정되어있는데 무슨 문제일까요?
안녕하세요. val job1 = async { apiCall1() } val job2 = async { apiCall2(job1.await()) } printWithThread(job1.await() + job2.await()) 만약, job1에 대한 결과를 메인 코루틴과 job2 코루틴 각각에서 사용하고 싶으면 위와 같이 작성하면 되나요? 제가 실제로 apiCall1에 print문을 넣어 보니까 1번만 출력이 되는 것을 확인했습니다. 만약, 위에 질문이 맞다면 코루틴 job을 생성하고 해당 결과를 받을 때는 항상 await() 함수를 호출하면 되나요? 여기서 궁금한 점은 만약 서버와 통신하는 api라고 한다면, 새롭게 호출하고 싶을 때도 있을 텐데 이럴 때는 어떻게 기존 값이 아닌 새로운 값을 받을 수 있는지도 궁금합니다. 감사합니다.
어려운 점이 있으신가요? 망설이시지 말고 인프런이나 유투브에 질문을 남겨주세요. 가능한 시간에 답변을 남겨 드리겠습니다. 또는 아래 커뮤니티에도 도움을 요청해 보세요. Sweet Spot 디스코드 서버 - https://discord.gg/veAnCmBf 고도 엔진 코리아 디스코드 서버 - https://discord.com/invite/XK8Emsf 고도 엔진 코리아 네이버 카페 - https://cafe.naver.com/godotk 커뮤니티에 본인을 소개하고 직접 완성하신 작품도 자랑해보세요 :)
안녕하세요 좋은 강의 잘 보고 있습니다! 파일에 대해서 질문이 있어서 합니다. 현재 저의 수준에서 User mode에서 파일이라 함은 장치를 추상화한 파일과 데이터 파일 두개가 존재한다고 보면 될까요? 장치를 추상화한 파일을 콘솔로 예를 들어서 설명해 주셔서 직관적으로는 이해는 간 것 같습니다. 그렇다면 데이터 파일의 경우 우리가 모니터로 보는 데이터 파일 또한 추상화한 데이터라고 생각하여 모니터로 표현된 파일에 DATA를 쓴다면 사실은 내부적으로 추상화된 파일에서 파일 시스템에 접근 후에 필터와 드라이버를 거쳐서 HDD나 SDD에 접근하여 실제 물리적인 부분?을 고친 것이다. 라고 이해하면 될까요?
안녕하세요. 먼저 선생님 강의가 도움 많이 되고 있습니다. 감사합니다. 질문이 두 가지 있습니다. 질문 1. fun main() = runBlocking { println("START") launch { println("1") } launch { println("2") } launch { println("3") } launch { println("4") } yield() println("END") } 이런식으로 되어 있다면 yield실행 후에 1~4번 중 어떤게 출력될지는 랜덤인건가요? 실제 실행 시에는 순서대로 되는걸 확인 했는데, 이게 항상 launch가 호출된 순서대로 출력되는건가요? 질문 2. fun main() = runBlocking { println("START") launch { println("1") } launch { println("2") } launch { yield() println("3") } launch { println("4") } yield() println("END") } 만약 3번에 yield 가 있다면, 어떻게 되는건가요? 3번에 들어온 순간 끝나지 않은 Coroutine 중에서 랜덤하게 호출되는건가요? 아니면 main으로 가서 END가 출력되는건가요? 감사합니다.
아래 방법을 진행하고 앱을 실행해도 앱이 사용자의 위치를 사용하도록 허용하시겠습니까? 라는 알림이 나오지를 않습니다. 혹시 방법이 있을까요!? 방법 1. 설정 -> 개발자 -> Xcode 프로젝트 빌드 파일 -> 2개 삭제 방법 2. npx react-native start --reset-cache 방법 3. yarn cache clean
안녕하세요. 먼저, macOS를 Sequoia로 업데이트 하면서 Xcode도 15에서 16으로 업데이트 했습니다. 강의 6분 50초 정도부터 navigationTitle 관련된 코드 작성을 해주시는데 이전 OS나 Xcode15에서는 강의 내용대로 작성하면 제대로 되었던게 업데이트를 하고나니 안되더라구요. 찾아보니 Xcode 16에서는 내비게이션 타이틀과 툴바의 상호작용이 일부 변경되었다고 합니다. 하단에 .navigationBarTitleDisplayMode(.inline) 을 추가하니 강의 내용과 동일하게 나타났습니다. 코드는 아래에 첨부하겠습니다. .navigationTitle("프로필 편집") .navigationBarTitleDisplayMode(.inline) .navigationBarBackButtonHidden() .toolbar { ToolbarItem(placement: .topBarLeading) { Button { dismiss() } label: { Image(systemName: "arrow.backward") .tint(.black) } } } 게시판 내용과 어긋나거나 잘못된 정보면 말씀해 주세요. 감사합니다.