묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! GitHub Actions으로 CI/CD 시작하기
이벤트 트리거 pull_request의 types
이 부분에서types에 closed 가 추가되는 이유가 있을까요?
-
미해결CAN 통신 - 자동차 신입이 알아야 할 모든 것
센서신호와 CAN
안녕하세요 강의를 듣다가 궁금한게 있어서 질문 드려봅니다.차량 GSW를 살펴보면 센서신호선이 있고 CAN 선이 또 따로 있던데 센서 신호선은 CAN과 다른 역할을 하는 걸까요?센서신호선의 전압 값을 ECU에 보낸다고 설명에는 적혀있는데 CAN도 동일하게 센서의 정보들을 내부 컨트롤 모듈에 보내는 걸로 알고있는데 어떻게 다른지 궁금하네요.
-
해결됨홍정모의 따라하며 배우는 C언어
라이브러리 구조의 대한 질문
라이브러리에 대하여 궁금한 점이 있습니다.main함수가 있는 파일 : A라이브러리 파일 : BA파일에서 B라이브러리에 있는 함수들을 사용해서 실행파일로 만들경우 컴파일러(링커)에서 A파일에 정의되어 있지도 않는 함수들을 사용했기 때문에 오류가 발생할 수 있지만 여기선 두가지 길이 있다는 걸 확인 했습니다.첫번째 : 헤더파일을 만들어서 거기에 함수의 선언과 정의를 몰아적기 그리고 해당 헤더파일을 include 하기첫번째 방법대로 했을 경우 라이브러리 파일을 따로 만들지 않아도 된다. 두번째 : 헤더파일엔 함수의 선언(프로토타입)부분만 적어놓고 몸체(정의)부분은 .c파일로 만들어서 라이브러리 파일로 만들기두번째 방법의 경우 vs(IDE)의 기능 덕분인지 다양한 방법들이 있다.이 경우에는 include를 따로 하지 않아도 알아서 실행이 되더라구요. 같은 프로젝트에 있으니까 vs(IDE)가 알아서 지원 해주는 것 이겠죠?또 다른 방법으로는프로젝트를 분류하여 lib파일을 만든 다음 lib파일을 전혀 다른 폴더 위치에 옮긴 다음 진행해봤습니다.main함수가 있는 프로젝트 옵션에서 사용하려는 lib를 등록만 했는데 include를 따로 하지 않아도 작동되는 걸 확인할 수 있었습니다.이처럼 따로 include를 하지 않고 다른 프로젝트에서 라이브러리를 만들고 그 라이브러리를 링커에 등록만 해주면 사용할 수 있는 구조가 맞는 구조인건가요? 어차피 링커는 함수의 몸체(정의)부분만 찾으면 되는 거니까요?그렇다면 굳이 헤더파일과 라이브러리 파일을 분류하여 둘 다 만드는 이유는 라이브러리 파일만 쓰자니 라이브러리 파일에 어떤 함수가 있고 어떤 것들이 있는지는 .c파일을 열어보기 전까지 확인할 수 없고.헤더파일만 쓰자니 함수의 선언과 몸체부분을 한 곳에 다 몰아적으면 함수가 많아질 경우 직관적으로 보기가 힘들어서 사용하기 불편하기 때문이고이걸 남들이 사용할 수 있도록 배포 했을 경우 라이브러리 파일만 배포했을 경우 사람들이 해당 라이브러리엔 어떤 함수들이 있는지 보지 못하기 때문에 헤더파일엔 어떤 함수들이 있는지 선언(프로토타입)부분만 보여주며 입력값은 무엇이고 리턴값은 무엇인지 알려주고 그 함수들이 어떻게 정의(몸체)가 되었는지 보여주고 싶지 않기 때문에(비밀) lib파일과 .h파일 둘 다 만들어서 배포하는 건가요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
void method 선언 시, 자바 컴파일러가 return을 자동 추가 관련
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]영상 기준 4:46초쯤에 void 메서드는 return이 생략되어도 자바 컴파일러가 마지막줄에 넣어준다고 하셨는데 .class로 컴파일된 파일을 확인해보니 반대로 적어두었던 return도 생략이 되어있습니다.자바 버전이 올라가면서 바뀐걸까요 아니면 컴파일된 파일이 아닌 파일을 실행 시에 return이 추가가 되는건가요?
-
미해결따라하며 배우는 리액트 네이티브 기초
프로젝트 예제 코드는 깃헙에서 따로 볼 수 있을까요?
깃헙에 올리셨다면 링크 공유해주실수 있나요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
혹시 이 부분은 강의 찍을 때와는 다르게 현재 바뀐 걸까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.// flush 자동 호출 commit, query int resultCnt = em.createQuery("update Member m set m.age = 20") .executeUpdate(); Member findMember = em.find(Member.class, member1.getId()); System.out.println("findMember.getAge() = " + findMember.getAge()); 이 부분을 보시면 영한님의 12분 코드와 같잖아요?이때 Member findMember = em.find(Member.class, member1.getId()); 의 findember를 출력할 때, 영속성 컨텍스트 때문에 update문의 age가 20인 것이 반영이 안 돼야 하는데 제 환경에서는 반영이 되는 걸로 나옵니다..!정리하면, em.clear() 를 하지 않았을 때는 age가 0이 나와야 하지만, em.clear() 를 하지 않았음에도 불구하고 age가 20이 나옵니다물론 아래처럼 member의 age 초기값을 0으로 지정해줬습니다Member member1 = new Member(); member1.setUsername("회원1"); member1.setAge(0); member1.changeTeam(teamA); em.persist(member1); 이유가 무엇일까요??
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
혹시 AI 관련 강의도 Zybo Board가 필요한가요?
혹시 AI 관련 강의도 Zybo Board가 필요한가요?
-
해결됨스프링 시큐리티 완전 정복 [6.x 개정판]
RoleHierarchyImpl 관련 deprecated 이슈로 인한 수정 코드 기록
Spring security 6.3.3 버전에서 setHierarchy와 생성자인 RoleHierarchyImpl()가 deprecated 되어 공식문서 권장 방법으로 수정한 코드를 남깁니다.전) 이전 방식@Bean public RoleHierarchy roleHierarchy() { RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl(); roleHierarchy.setHierarchy("ROLE_ADMIN > ROLE_DB\n" + "ROLE_DB > ROLE_USER\n" + "ROLE_USER > ROLE_ANONYMOUS"); return roleHierarchy; } 후) 정적 메소드 fromHierarchy 사용@Bean public RoleHierarchy roleHierarchy() { return fromHierarchy("ROLE_ADMIN > ROLE_DB\n" + "ROLE_DB > ROLE_USER\n" + "ROLE_USER > ROLE_ANONYMOUS"); }
-
해결됨React Three fiber(R3F)로 배우는 인터렉티브 3D 웹 개발
문제 해결했습니다.
import { defineConfig } from 'vite' import react from '@vitejs/plugin-react-swc' import path, {resolve} from 'path' // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], // resolve:{ // alias: [ // { // find: "@src", // replacement: path.resolve(__dirname, "src") // // @src 를 쓰면 src 폴더를 의미하게 된다. // // ../../ 이런거 안 써도 된다. // }, // { // find: "@components", // replacement: path.resolve(__dirname, "src/components") // } // ] // } resolve: { alias: { '@components': path.resolve(__dirname, 'src/components'), '@src': path.resolve(__dirname, 'src') } } })chatGPT 가 알려줬어여 ㅎㅎ
-
해결됨React Three fiber(R3F)로 배우는 인터렉티브 3D 웹 개발
문제 있어요! alias Path @ 문제
{ "compilerOptions": { "baseUrl": ".", "paths": { "@components/*" : ["src/components/*"], "@src/*" : ["src/*"] } }, "files": [], "references": [ { "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" } ] } 6분 08초 인데, 제꺼는 강사님꺼와 다르게 tsconfig 가 위와 같이 되어 있고, 여기 부분에서 넘어가 지지 않습니다. import React from "react"; import { Canvas } from "@react-three/fiber" import ShowRoom from "@components/ShowRoom" import { OrbitControls } from "@react-three/drei"; export default function Home(){ return ( <> <Canvas> <OrbitControls/> <directionalLight position={[5, 5, 5]}/> <axesHelper args={[5]}/> <gridHelper/> <ShowRoom/> </Canvas> </> ) } import ShowRoom from "@components/ShowRoom" 여기부분에 에러가 뜹니다에러메세지 [plugin:vite:import-analysis] Failed to resolve import "@components/ShowRoom" from "components/Home.tsx". Does the file exist? vite.config.js 는 아래와 같이 설정 했습니다. import { defineConfig } from 'vite' import react from '@vitejs/plugin-react-swc' import path from 'path' // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], resolve:{ alias: [ { find: "@src", replacement: path.resolve(__dirname, "src") // @src 를 쓰면 src 폴더를 의미하게 된다. // ../../ 이런거 안 써도 된다. }, { find: "@components", replacement: path.resolve(__dirname, "src/components") } ] } }) 파일 구조입니다.
-
미해결
이미 스트링 풀에 존재하는 상수를 참조해 새로운 문자열을 만들 경우 저장되는 방식에 대해 질문드립니다.
강의에서 각 스레드 스택 마다 지역변수로 objectReference 참조 변수를 생성하시는 것을 예시로 들어주셧는데요, 해당 변수는 문자열 풀 값들을 이용해서 만들어진 것이잖아요.힙에 저장될 때 어떻게 데이터가 저장되나요? thread 1번에서 생성한 지역변수인 objectReference 는"1" 의 문자열 풀 주소값 + ": Hello World" 의 문자열 풀 주소값, thread 2번에서 생성한 지역변수인 objectReference 는"2" 의 문자열 풀 주소값 + ": Hello World" 의 문자열 풀 주소값,...이렇게 저장되는 것이 맞을까요?? 혹은 "1 : Hello World" 라는 문자열 전체가 하나의 스트링 풀에 저장되고, 그 상수에 대한 주소값이 저장되는 것일까요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
문자열 함수 알려주실때
문자열 함수 수업에서 어떤 함수는 print("endswith?:",str_o2.endswith("s"))뒤에 점을 찍고 나타내고어떤 함수는 print("sorted:",sorted(str_o1)) 와 같이 점(.)을 찍지 않고 나타내는데차이점을 설명 해주셔야죠 ㅜㅜㅜ ㅜㅜㅜ 차이점이 뭘까요...? ㅠ 함수마다 구조 다 다르니까 외워야하면 그런거라고라도 말을 해주세요 ...
-
미해결AWS Certified Cloud Practitioner 자격증 준비하기
섹션 6 로드밸런스 : 인스턴스 생성 후 문제
안녕하세요 선생님인스턴스 두개를 생성했는데퍼블릭 IPV4 주소를 통해 새창에서 접속하려는데 안열려요...바쁘시겠지만 체크리스트나 점검사항말씀해주시면 조치해볼게요..
-
해결됨Node.js로 웹 크롤링하기
3-2 axios로 이미지 저장하기에서 axios 관련 오류..
안녕하세요.. 3-2강을 따라하고 있습니다. 3-1강에서 발생한 선택자 관련 문제는 docuemnt.querySelector를 이용해서 포스터 이미지 태그의 src를 가져오는 것은 되었습니다.추출된 url을 이용하여 웹브라우저에서 해당 이미지를 확인할 수 있었습니다. 그런데,3-2강에 나와있는대로, axios를 이용하여 해당 이미지를 다운로드 받으려고 하니, 오류가 발생합니다. 오류 내용은 아래 이미지와 같습니다.커뮤니티 게시판에 AxiosError 메시지 걺색을 했는데 결과가 없어서.. 바로 질문 올립니다. 어떻게 해결해야 할까요?
-
미해결기출로 대비하는 개발자 전공면접 [CS 완전정복]
질문이 있습니다 선생님!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 링크드리스트는 런타임에서 새로운 노드가 추가될때 힙 영역에 메모리 얼로케이션이 되는건 알겠는데 만약 이미 정의되어있는 링크드리스트인 경우에는 어레이와 똑같이 스택영역에 저장되는건가요? 컴파일단계에서 존재하는 링크드리스트는 어레이와같이 stack영역에 저장되는데 실행단계에서 노드가 추가된 값들만 heap에 올라가는건지 궁금합니다.
-
해결됨[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
build 오류
$ npm run build > instagram-clone@0.1.0 build > next build ▲ Next.js 14.2.12 - Environments: .env Creating an optimized production build ... ✓ Compiled successfully Linting and checking validity of types .Failed to compile. Linting and checking validity of types ...next/types/app/page.ts:8:13 Type error: Type 'OmitWithTag<typeof import("D:/Study/React/next/Supabase/instagram-clone/app/page"), "config" | "generateStaticParams" | "revalidate" | "dynamic" | "dynamicParams" | "fetchCache" | "preferredRegion" | ... 6 more ... | "generateViewport", "">' does not satisfy the constraint '{ [x: string]: never; }'. Property 'matadata' is incompatible with index signature. Type 'Metadata' is not assignable to type 'never'. 6 | 7 | // Check that the entry is a valid entry > 8 | checkFields<Diff<{ | ^ 9 | default: Function 10 | config?: {} 11 | generateStaticParams?: Function빌드할때 오류뜹니다.next 안에 있는 오류인데 지웠다 다시 해도 똑같아요어떻게 해야 할까요??
-
미해결기출로 대비하는 개발자 전공면접 [CS 완전정복]
질문이 있습니다 선생님!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이 부분에서 삽입삭제가 O(1)인 이유는 알겠는데요,한가지 궁금한게있습니다! 링크르리스트는 논리적으로 연결되어있어 랜덤엑세스가 안되는것으로 이해를 했는데요, 만약 n이라는 숫자의 뒤에 m이라는 숫자를 추가하거나 삭제를 해야할 경우 head에서 부터 시작하여 n의 위치를 찾기위한 탐색시간이 추가로 들어가지는 않는건가요!?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
Pessimistic Lock 전체 테스트 오류 문의
안녕하세요. Pessimistic Lock 소스에서 각각의 테스트 하나하나는 통과하는데요. 테스트 코드 전체로 돌리면 에러가 나더라고요. public interface StockRepository extends JpaRepository<Stock, Long> { @Lock(LockModeType.PESSIMISTIC_WRITE) @Query("select s from Stock s where s.id = :id") Stock findByIdWithPessimisticLock(@Param("id") Long id); } StockServiceTest.javapackage com.example.stock.service; import com.example.stock.domain.Stock; import com.example.stock.repository.StockRepository; import org.junit.jupiter.api.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest class StockServiceTest { @Autowired private PessimisticLockStockService stockService; @Autowired private StockRepository stockRepository; @BeforeEach public void before() { stockRepository.saveAndFlush(new Stock(1L, 100L)); } @AfterEach public void after() { stockRepository.deleteAll(); } @Test @DisplayName("재고1개 감소 테스트") public void 재고감소() { stockService.decrease(1L, 1L); //100 - 1 = 99 Stock stock = stockRepository.findById(1L).orElseThrow(); assertThat(stock.getQuantity()).isEqualTo(99L); } @Test @DisplayName("동시에 100개 요청 테스트") public void 동시에_100개_요청() throws InterruptedException { int threadCount = 100; ExecutorService executorService = Executors.newFixedThreadPool(32); CountDownLatch countDownLatch = new CountDownLatch(threadCount); for (int i = 0; i < threadCount; i++) { executorService.submit(() -> { try { stockService.decrease(1L, 1L); } finally { countDownLatch.countDown(); } }); } countDownLatch.await(); Stock stock = stockRepository.findById(1L).orElseThrow(); assertThat(stock.getQuantity()).isEqualTo(0L); } } 이런 오류가 나는데 @BeforeEach에서 새로 등록하고 @AfterEach에서 delete를 해줘서 각각의 테스트에 영향이 없을거 같은데 왜 나는지 잘 모르겠어요 ㅠ github : https://github.com/nhs0912/stock
-
미해결스프링 핵심 원리 - 기본편
@PostConstruct 사용시 @ComponentScan 으로 구현
1. 강의 내용과 관련된 질문인가요?예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의에서 @Configuration 과 @Bean을 사용하여 초기화, 소멸 라이프사이클을 보았는데 강의에선 구현하진 않았지만 @ComponentScan으로 사용해보고 싶어서 NetworkClient에 @Component를 달고 LifeCycleConfig를 @ComponentScan 을 달아 사용해볼려고하였습니다. 근데 AnnotationConfigApplicationContext 사용하여 빈등록할시 저희가 의도했던 @PostConstruct 시점이 setUrl하기전에 불러와지는거같아 Null 값이 나오는데 ComponentScan사용시 setUrl 위치나 타이밍을 알고싶습니다
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
getServerSideProps 선언하지 않을시의 동작에 대한 질문입니다!
안녕하세요.getServerSideProps를 선언하지 않을시 SSR 이 아닌 CSR 로 동작하게 되는걸까요? (SSR 2.실습 강의를 듣는 현재까지 SSR 방식의 사전렌더링이 동작하고 있다고 생각했어요..)추가적으로 만약 위 함수를 선언해야 SSR 방식의 사전렌더링을 사용할 수 있다면 매 함수 선언에 작업자의 비용이 조금 발생하지 않나 생각합니다결국 페이지 이동시 CSR 형태가 된다면 사람들 접근이 많은 페이지 위주로 SSR 을 적용하면 좋지 않을까 생각이 들어 질문드립니다!