묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
writer 와 content 혼란
api 서버에서 Todo 엔티티 에는 content 로 했는데 왜 이번 섹션4 강의부터 갑자기 writer 가 나오는 건가요?원래 writer 인데 content로 잘못 만드신건데 그냥 사용하신건가요? 그냥 계속 진행 해도 별 문제 없는 건지 궁금합니다
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
추스 스키마 질문...
스프링강의 18강 Controller를 3단 분리하기 강의에서 7분 30초쯤에 나오는 추스 스키마? 아무리 찾아도 저는 그런게 없는데 어떻게 하나요? 추스 스키마로 라이브러리 설정이 저는 보이지 않네요 인텔리제이 2024.2.3 울티메이트 사용하고 있습니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
6분 41초 영상 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]해당 영상 6분 41초에서 '사실상 Member에서 Orders의 1대 다가 표현되는 이 컬렉션은 필요가 없다' 라고 말씀해주셨는데 해당 표현에 의미가 1:N 연관 관계가 필요없다는 의미가 아니라 orders속성이 필요없다는 의미가 맞을까요??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-H 질문있습니다 :)
안녕하세요 선생님 🙂 한 가지 궁금한 것이 있어서 질문 드립니다 ^^ 입력 값을 int형 변수가 아닌 vector컨테이너를 사용하면 문제가 생기는 경우가 있는데요, 무엇때문에 발생하는 문제인지 모르겠습니다. 아래는 정답의 수도코드입니다.dp[0] = 1; for (int i = 0; i < n; i++) { cin >> temp; for (int j = temp; j <= k; j++) { dp[j] += dp[j - temp]; } }여기서 안쪽 for문 중 j = 1로 변경하면, 연산 자체는 늘어나겠지만 정답인 것은 변함이 없습니다. 아래는 temp변수를 vector 컨테이너로 변경한 코드입니다.vector<int> vec(n); dp[0] = 1; for (int i = 0; i < n; i++) { cin >> vec[i]; for (int j = vec[i]; j <= k; j++) { dp[j] += dp[j - vec[i]]; } }temp 변수를 이용한 것보다 vector 컨테이너를 사용하기 때문에 공간복잡도와 시간복잡도 측면에서 손해를 보지만, 결과는 같습니다.하지만, 안쪽 for문의 j를 j = 1로 수정하면 오답이 됩니다. 테스트케이스에서도 출력 값이 다르게 나오더라구요. 이유가 무엇인지 알려주시면 감사하겠습니다 :) http://boj.kr/0cbbe29b33424769a1e8006da134bd7b
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 - G 질문있습니다.
강의의 코드 중 25번째 줄 까지는 이해를 했습니다. 그러나 26 - 28번째 줄의 부분에서 이해가 안가는 것이 있습니다.문제는 최단거리를 바라고 있습니다.그렇다면 26번째 줄, else if (visited[next] == visited[now] + 1)에서 visited[next]는 next에 도달한 가장 적은 걸음 수를 뜻합니다.여기서 제가 이해가 안되는것은 visited[next]가 어떻게 가장 적은 걸음수가 보장 되는지 입니다.visited[now] + 1이 visited[next]보다 작아서 새로운 경로가 더 빠를 수 있는 경우의 수는 신경을 안써도 되는 이유가 무엇인지 궁금합니다.BFS를 사용하면, 가장 먼저 도착한 케이스가 가장 빠른 케이스다 라는 경험과 느낌은 있지만, 이번에는 가중치가 동일하지 않은 상황에서, 특히 뒤로도 갈 수 있는 상황에서 이렇게 생각하고 넘어가기에는 찝찝함이 있어 질문해봅니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
POST와 리소스 생성
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요POST의 결과로 새로운 리소스가 생성되지 않을 수도 있음.이라고 자료에 나와 있는데, 그렇다면 일반적으로는 POST의 결과로 리소스가 생성된다는 말씀이신가요? 그렇다면 앞에 예제에서 나온 회원 정보 관리 API에서POST로 회원을 신규 등록하면 리소스가 생성되는 것인가요?
-
해결됨토비의 스프링 6 - 이해와 원리
ServiceLocatorFactoryBean에 궁금한점이 있습니다.
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/config/ServiceLocatorFactoryBean.html공식문서에서 일반적으로 프로토타입 빈에서 사용하고, 싱글톤 빈의 경우 대상 빈의 직접 세터 또는 생성자 주입이 더 좋다고 되어있습니다.만약 아래코드처럼 로그인방식이 여러가지고 추가로 늘어날 경우 NaverLoginStrategy, GoogleLoginStrategy등 새로운 클래스만 생성하면 된다고 생각하는데 이때도 ServiceLocatorFactoryBean을 사용하는게 좋지않는걸까요? provider나 ObjectFactory를 이용하는게 좋은지 아니면 공식문서처럼 setter나 constructor를 주입하는게 좋을지 궁금합니다. public interface LoginStrategy { String login(String id, String pw);} @RequiredArgsConstructor@Service("kakao")public class KakaoLoginStrategy implements LoginStrategy { private final LoginRepository loginRepository; @Override public String login(String id, String pw) { // 로그인 로직 return "kakao Login"; }} public interface LoginFactory { LoginStrategy getLoginStrategy(String type);} @Configurationpublic class LoginConfig { @Bean public ServiceLocatorFactoryBean loginStrategyFactory() { ServiceLocatorFactoryBean factoryBean = new ServiceLocatorFactoryBean(); factoryBean.setServiceLocatorInterface(LoginFactory.class); return factoryBean; }}
-
미해결[유니티6] 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
02-02 플레이어 체력에서 if(current >1)을 if(current > 0) 로...
해야 될 것 같아요.그래야 체력이 0으로 떨어질 수 있고,지금 상태에서는 current가 1일 때 사망처리가 되어 버리는 문제..
-
해결됨[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
[해결] MapView 사용시 bubblingEventTypes of null error 해결법
{ "name": "matzip", "version": "0.0.1", "private": true, "scripts": { "android": "react-native run-android ", "ios": "react-native -run-ios --simulator 'iPhone 16 Pro'", "lint": "eslint .", "start": "react-native start --reset-cache", "test": "jest" }, "dependencies": { "@react-native-masked-view/masked-view": "^0.3.1", "@react-navigation/drawer": "^6.7.2", "@react-navigation/native": "^6.1.18", "@react-navigation/stack": "^6.4.1", "@tanstack/react-query": "^5.59.16", "axios": "^1.7.7", "react": "18.3.1", "react-native": "0.76.0", "react-native-encrypted-storage": "^4.0.3", "react-native-gesture-handler": "^2.20.1", "react-native-maps": "^1.18.2", "react-native-reanimated": "^3.16.1", "react-native-safe-area-context": "^4.11.1", "react-native-screens": "^3.34.0" }, "devDependencies": { "@babel/core": "^7.25.2", "@babel/plugin-transform-private-methods": "^7.25.9", "@babel/preset-env": "^7.25.3", "@babel/runtime": "^7.25.0", "@react-native-community/cli": "15.0.0-alpha.2", "@react-native-community/cli-platform-android": "15.0.0-alpha.2", "@react-native-community/cli-platform-ios": "15.0.0-alpha.2", "@react-native/babel-preset": "0.76.0", "@react-native/eslint-config": "0.76.0", "@react-native/metro-config": "0.76.0", "@react-native/typescript-config": "0.76.0", "@types/react": "^18.2.6", "@types/react-test-renderer": "^18.0.0", "babel-jest": "^29.6.3", "babel-plugin-module-resolver": "^5.0.2", "eslint": "^8.19.0", "jest": "^29.6.3", "prettier": "2.8.8", "react-test-renderer": "18.3.1", "typescript": "5.0.4" }, "engines": { "node": ">=18" }, "packageManager": "yarn@3.6.4" } 최신버전으로 작업중입니다node 버전 22.6.0 으로 바꾸시면 해결됩니다.node -v 버전뜨시는거 보고 vscode 창 무조건 닫고 명령어 실핼시킬 터미널에서도 node -v 꼭 써서 버전확인하세여
-
미해결웹 애니메이션의 새로운 표준, Web Animations API
모바일 화면 최적화 방법 질문드립니다!
선생님, 안녕하세요!모바일 화면에서도 비율을 유지하면서 반응형으로 동작하게 만드는 것이 가능할까요? 여러 방법을 시도해 보았는데, 해결이 잘 안 돼서 이렇게 질문을 남깁니다. 아니면 차라리 모바일 전용 SVG를 따로 만들고, PC 버전에서는 display: none으로 처리한 후 모바일일 때만 보이게 하는 방식이 더 나을까요?조언 부탁드립니다!
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
admin 페이지에서 projectSkill 질문 있습니다
admin 페이지 중 왼쪽에 사이드바에서 projectSkill 클릭할 때 url 이 "/admin/project/skill" 이 아닌, "admin/projectSkill" 로 넘어가져서 오류 페이지로 이동된다면 어디를 고쳐야 할까요? @Controller @RequestMapping("/admin/project/skill") class AdminProjectSkillViewController( private val adminProjectSkillService: AdminProjectSkillService ) { @GetMapping fun projectSkill(model: Model): String { val proejctList = adminProjectSkillService.getProjectList() val skillList = adminProjectSkillService.getSkillList() val formElements = listOf<FormElementDTO>( SelectFormElementDTO("project", 8, proejctList), SelectFormElementDTO("skill", 4, skillList) ) model.addAttribute("formElements", formElements) val table = adminProjectSkillService.getProjectSkillTable() model.addAttribute("table", table) model.addAttribute("detailTable", null) val pageAttributes = mutableMapOf<String, Any>( Pair("menuName", "Projects"), Pair("pageName", table.name), Pair("editable", false), Pair("deletable", true), Pair("hasDetails", false), ) model.addAllAttributes(pageAttributes) return "admin/page-table" } }
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
여러 스레드의 실행 순서 질문 (start 메서드)
섹션3. 여러 스레드 만들기 - [1:40] HelloRunnable 스레드 3개 실행하는 부분 앞서 스레드의 start 메서드를 호출할 때 스레드는 스택 공간을 할당 받고 실행 된다고 이해했습니다.그럼 아래 코드를 실행했을 때 start 메서드를 순서대로 읽어서 순서대로 실행 되어야 하는게 아닌가요?? 왜 각자 동시에 실행 되어서 순서를 보장할 수 없는 것인가요? HelloRunnable runnable = new HelloRunnable(); Thread thread1 = new Thread(runnable); thread1.start(); Thread thread2 = new Thread(runnable); thread2.start(); Thread thread3 = new Thread(runnable); thread3.start();
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
onClickButton함수를 넘겨주는 것이 궁금합니다.
import "./App.css"; import Viewer from "./components/Viewer"; import Controller from "./components/Controller"; import { useState } from "react"; function App() { const [count, setCount] = useState(0); const onClickButton = (value) => { setCount(count + value); }; return ( <div className="App"> <h1>Simple Counter</h1> <section> <Viewer count={count} /> </section> <section> <Controller onClickButton={onClickButton} /> </section> </div> ); } export default App;const Controller = ({ onClickButton }) => { return ( <div> <button onClick={() => { onClickButton(-1); }} > -1 </button> <button onClick={() => { onClickButton(-10); }} > -10 </button> <button onClick={() => { onClickButton(-100); }} > -100 </button> <button onClick={() => { onClickButton(100); }} > +100 </button> <button onClick={() => { onClickButton(10); }} > +10 </button> <button onClick={() => { onClickButton(1); }} > +1 </button> </div> ); }; export default Controller; App.jsx에서 onClickButton이 count, setCount 함수를 모두 사용하고 있을텐데요, 이것이 Controller.jsx로 넘어갈 때에는 아래와 같이 넘어가나요(value) => { setCount(13 + value);//count:13일때 };아니면 App.jsx에서 onClickButton 함수를 호출하여 App.jsx의 count, setCount를 사용하는 것인가요? 너무 기초적인 질문을 드려 죄송합니다ㅠㅠ
-
미해결RAG를 활용한 LLM Application 개발 (feat. LangChain)
huggingface 모델 streamlit 적용
안녕하세요.좋은 강의 감사합니다. 강의를 듣고 저도 word로 데이터를 가공해, 저만의 챗봇을 huggingface에 있는 모델을 사용해 만들어 streamlit에 띄우고 싶습니다. 그런데 streamlit에 띄우는 과정에서 계속 로딩이 오래걸리거나, 로컬과 달리 이상한 답변이 나오는 등 문제를 겪고 있습니다.참고하면 좋을 만한 자료가 있을까요?
-
해결됨두고두고 써먹는 유니티 VR
카메라 로테이션 고정
vr화면을 움직이면 포지션만 변경되고 로테이션은 바뀌지 않는 문제는 뭐가 문제인가요? ㅠㅠ
-
미해결얼굴 공개없는 영상제작 - 비디오스크라이브
강의화면과 실행화면이 달라요
강의화면과 제가 실행한 화면이 달라 수업을 진행할수가 없습니다. 도움 주세요~~;;
-
해결됨iOS Clean Architecture & MVVM: RxSwift 완전 정복
안녕하세요 페이지네이션 구현 강의 중 질문있습니다.
다름이 아니고 UserListViewController에서 private func bindView() { tableView.rx.prefetchRows .bind { [weak self] indexpath in guard let rows = self?.tableView.numberOfRows(inSection: 0), let itemIndex = indexpath.first?.item else { return } if itemIndex >= rows - 1 { self?.fetchMore.accept(()) } } .disposed(by: disposeBag) }해당 코드 작성한 것을 확인했는데 이 상황에서 itemIndex >= rows - 1가 정상적으로 동작하지 않는다고 생각이 들어서요.정상적으로 동작하는 경우도 있지만 (천천히 스크롤 할 때) 빠르게 스크롤했을때 rows 는 30이라고 할때 itemIndex는 24가 찍혀 self?.fetchMore.accept(())가 실행이 안되더라구요 그렇다면 prefetchRows를 쓰는게 좋은 방법인가에 대한 생각이 들어서 질문 드립니다!
-
미해결BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[인프런 빅쿼리 빠짝스터디 1주차] ARRAY, STRUCT 연습 문제/ PIVOT 연습문제/ 퍼널 쿼리 연습문제
✅연습문제 (1) Array & Struct -- 연습문제 1) 영화 제목 별로 장르를 unnest하여 출력 -- select 절에서 새로운 이름으로 사용해야 unnest한 값이 출력됨 (기존의 array칼럼은 사용하지 않기) select title, genre from`avdanced.array_exercises` as ori ,unnest(genres) as genre --연습문제 2) 영화별로 배우와 배역을 출력. -- safe_offset 사용시, 모든 칼럼에 대하여 일일히 [0], [1].. 해줘야 하는 문제 -> UNNEST 사용. select title, ac.actor, ac.character from`avdanced.array_exercises` as ori ,unnest(actors) as ac -- 연습문제 3) title, actor, character, genre 출력 select title, ac.actor, ac.character, genre from`avdanced.array_exercises` as ori ,unnest(actors) as ac ,unnest (genres) as genre --연습문제 4) 배열을 풀기 select user_id, event_date, event_name, user_pseudo_id, eve.key, eve.value.string_value, eve.value.int_value from`avdanced.app_logs_temp` as ori , unnest (event_params) as eve where event_date = '2022-08-01' (2) Pivot 연습문제--Pivot : 집계함수(if (조건문, true일 때 값, False일때 값)) as new_column + GROUP BY (False일때의 값은 NULL또는 0으로 해주기) --1) id를 기준으로 amount sum을 pivot, order_date를 행, user_id를 열 -- 연습문제 1-1) 서브쿼리 사용하기 select order_date, sum(if(user_id=1, sum_of_amount, 0)) as user_1, sum(if(user_id=2, sum_of_amount, 0)) as user_2, sum(if(user_id=3, sum_of_amount, 0)) as user_3 from ( select order_date, user_id, sum(amount) as sum_of_amount from `avdanced.orders` group by order_date, user_id ) group by order_date order by order_date -- 연습문제 1-2) 간략하게 작성하기 select order_date, sum(if(user_id=1, amount, 0)) as user_1, sum(if(user_id=2, amount, 0)) as user_2, sum(if(user_id=3, amount, 0)) as user_3 from `.avdanced.orders` group by order_date order by order_date --연습문제 2) orde_date별로 amount의 합을 pivot (user_id row, drder_date column) -- (`)backstick을 사용하여 별칭지정 -- any_value: 그룹화할 대상 중 임의의 값을 선택(NULL 제외). any_value에서는 나머지 값이 NULL이거나 확정적으로 이값이 나올 것이다 기대할 때 사용! -- ANY_VALUE: 임의의 값을 반환하며, 특정한 규칙이나 일관성을 요구하지 않을 때 사용. (대표값, 랜덤 샘플링) -- MAX: 그룹 내에서 가장 큰 값을 반환하며, 항상 일관된 결과를 제공합니다. select user_id, sum(if(order_date='2023-05-01', amount, 0)) as `2023-05-01`, sum(if(order_date='2023-05-02', amount, 0)) as `2023-05-02`, sum(if(order_date='2023-05-03', amount, 0)) as `2023-05-03`, sum(if(order_date='2023-05-04', amount, 0)) as `2023-05-04`, sum(if(order_date='2023-05-05', amount, 0)) as `2023-05-05` from `avdanced.orders` group by user_id order by user_id -- +) 강의 내용 (any_value) -- select -- user_id, -- any_value(if(order_date='2023-05-01', amount, 0)) as `2023-05-01`, -- any_value(if(order_date='2023-05-02', amount, 0)) as `2023-05-02`, -- any_value(if(order_date='2023-05-03', amount, 0)) as `2023-05-03`, -- any_value(if(order_date='2023-05-04', amount, 0)) as `2023-05-04`, -- any_value(if(order_date='2023-05-05', amount, 0)) as `2023-05-05` -- from `avdanced.orders` -- group by user_id -- order by user_id --연습문제 3) user_id, order_date별로 주문이 있으면 1, 없으면 0으로 pivot, user_id row, order_date column. select user_id, max(if(order_date='2023-05-01', 1, 0)) as `2023-05-01`, max(if(order_date='2023-05-02', 1, 0)) as `2023-05-02`, max(if(order_date='2023-05-03', 1, 0)) as `2023-05-03`, max(if(order_date='2023-05-04', 1, 0)) as `2023-05-04`, max(if(order_date='2023-05-05', 1, 0)) as `2023-05-05` from `avdanced.orders` group by user_id order by user_id -- 연습문제 4) app_log를 pivot하기 with date_user_cnt as( select ori.user_id, ori.event_date, ori.event_name, ori.event_timestamp, ori.user_pseudo_id, max(if(eve.key = "firebase_screen", eve.value.string_value, null)) as firebase_screen, max(if(eve.key ="food_id", eve.value.int_value, null)) as food_id, max(if(eve.key ="session_id", eve.value.string_value, null)) as session_id from`avdanced.app_logs_temp` as ori , unnest (event_params) as eve where event_date ='2022-08-01' group by all ) select event_date, count(user_id) as user_cnt from date_user_cnt where event_name ="click_cart" group by event_date (3) 퍼널 연습문제-- 퍼널 별 유저수 집계 -- 1-1) UNNEST하기 & PIVOT하기 WITH base AS( SELECT event_date, event_timestamp, event_name, user_id, user_pseudo_id, MAX(IF(param.key = 'food_id', param.value.int_value,NULL)) AS food_id, MAX(IF(param.key = 'session_id', param.value.string_value,NULL)) AS session_id, MAX(IF(param.key = 'firebase_screen', param.value.string_value,NULL)) AS firebase_screen, from `bigquery-432401.avdanced.app_logs_temp` , unnest (event_params) as param where event_date between '2022-08-01' and '2022-08-18' GROUP BY ALL ), base2 AS( -- 1-2) CONCAT하기 SELECT * EXCEPT (event_name, firebase_screen, event_timestamp), CONCAT(event_name, "-", firebase_screen) AS event_name_with_screen, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime FROM base WHERE event_name IN ("screen_view", "click_payment") ), base3 AS ( --1-3) 일자별 이벤트 별 집계 SELECT event_date, event_name_with_screen, CASE WHEN event_name_with_screen = "screen_view-welcome" THEN 1 WHEN event_name_with_screen = "screen_view-home" THEN 2 WHEN event_name_with_screen = "screen_view-food_category" THEN 3 WHEN event_name_with_screen = "screen_view-restaurant" THEN 4 WHEN event_name_with_screen = "screen_view-cart" THEN 5 WHEN event_name_with_screen = "click_payment-cart" THEN 6 ELSE NULL END AS step_number, COUNT(DISTINCT user_pseudo_id) AS cnt FROM base2 GROUP BY ALL HAVING step_number IS NOT NULL ) --1-4) 집계한 데이터를 PIVOT SELECT event_date, MAX(IF(base3.event_name_with_screen ="screen_view-welcome", cnt, NULL)) AS screen_view_welcome, MAX(IF(base3.event_name_with_screen ="screen_view-home", cnt, NULL)) AS screen_vie_home, MAX(IF(base3.event_name_with_screen ="screen_view-food_category", cnt, NULL)) AS screen_view_food_category, MAX(IF(base3.event_name_with_screen ="screen_view-restaurant", cnt, NULL)) AS screen_view_restaurant, MAX(IF(base3.event_name_with_screen ="screen_view-cart", cnt, NULL)) AS screen_view_cart FROM base3 GROUP BY ALL ✅배운점‘cross join unnest 칼럼 as 별칭’에서 반드시 ‘AS 별칭’ 을 이용해야 ‘Cannot access field on a value with type ARRAY’ 에러가 안 뜬다.빅쿼리에서는 ‘’이 아닌, ``을 사용하여야 한다. pivot이라고 하면 pivot()함수를 반드시 사용해야 편할 것이라고 생각했었는데, max와 if로 pivot을 구현하는 것이 인상 깊었다.SQL 기반이라고 하면 모든 DB가 비슷한 기능을 가지고 있다고 생각했는데, DB마다 생성된 함수 및 기능이 미묘하게 다르다는 것을 느꼈다. 예를 들어 빅쿼리에서 배운 countif()을 MySQL에서 사용했는데 안되는 것도 그 예가 아닐까.생각보다 빅쿼리와 PostgreSQL에서 사용하는 함수가 동일한 게 많아 인상적이었다.✅익숙해져야 할 부분퍼널 분석을 배우면서, 이론적으로 이해하는 것은 쉽지만 내가 아는 쿼리적인 지식을 실제 데이터에 적용하는 것은 생각보다 손이 많이 가고 쉽지 않은 작업이라는 것을 느꼈다. 많이 해봐야 노하우가 생길 것 같다. 어떤 데이터를 어떻게 해야 어떤 결과가 나오고, 이를 어떻게 이용하고 해석할 수 있는지에 대한 일련의 과정에 익숙해져야 할 것 같다. TIMESTAMP를 DATE로 바꾸고 확인하는 부분에 대한 연습이 필요 쿼리 작성 시, 예약어를 대문자로 사용하는 것이 좋다고 알고 있는데, 아직 이 부분이 익숙하지 않아 연습이 필요하다.코드를 작성하면서 문장을 그대로 쿼리로 옮기는 편이라서 그런지 서브 쿼리를 사용하는 경우가 많다. 단순히 문장을 쿼리로 옮기기 보다 어떻게 하면 더 간결하고 가독성 높은 쿼리를 작성할 수 있을 지 고민하는 습관을 들여야 겠다.함수 이름 정하는 거 중요한 건 아는데, 잘 안되는 것 같다. 사용 기능을 이용하여 함수 이름 짓는 습관을 지어야겠다.
-
미해결ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0
프로젝트 배포 질문있습니다
안녕하세요20강의 마지막 부분에서 배포 부분에서 궁금한 점이 있어서 질문드립니다. 강의 중 20강 26:34 에서 "공유기가 아닌 랜선을 바로 여러분들의 컴퓨터하고 연결을 한다면 공인 ip를 통해 외부에서 여러분들이 생성한 사이트에 접속이 가능" 이라는 설명이 있습니다.무선 네트워크 환경(공유기 or 핫스팟 등)에서는 배포가 불가능한가요?
-
해결됨실전 jOOQ! Type Safe SQL with Java
FilmWithActor로 fetch 시 select와 생성자의 매개변수 순서가 다를 경우 map이 정상적으로 이루어 지지않는 케이스
안녕하세요 강의를 재밌게 수강하던 도중 궁금증이 생기어 질문 드립니다. 질문select 의 row 매개변수의 순서와 FilmWithActor의 생성자 매개변수의 순서가 각 테이블 타입에 매칭되지 않을 경우 mapping이 정상적으로 이뤄지지 않는 현상이 있어별도의 해결 방법이나 대안이 있는지 여쭙고 싶습니다. 정상 케이스(Film - FilmActor - Actor)dslContext.select( DSL.row(FILM.fields()), DSL.row(FILM_ACTOR.fields()), DSL.row(ACTOR.fields()) ).from(FILM) .join(FILM_ACTOR) .on(FILM.FILM_ID.eq(FILM_ACTOR.FILM_ID)) .join(ACTOR) .on(FILM_ACTOR.ACTOR_ID.eq(ACTOR.ACTOR_ID)) .offset((page - 1) * pageSize) .limit(pageSize) .fetchInto(FilmWithActor.class); public class FilmWithActor { private final Film film; private final FilmActor filmActor; private final Actor actor; public FilmWithActor(Film film, FilmActor filmActor, Actor actor) { this.film = film; this.filmActor = filmActor; this.actor = actor; } // ... 문제 케이스(Film - Actor - FilmActor)dslContext.select( DSL.row(FILM.fields()), DSL.row(FILM_ACTOR.fields()), DSL.row(ACTOR.fields()) ).from(FILM) .join(FILM_ACTOR) .on(FILM.FILM_ID.eq(FILM_ACTOR.FILM_ID)) .join(ACTOR) .on(FILM_ACTOR.ACTOR_ID.eq(ACTOR.ACTOR_ID)) .offset((page - 1) * pageSize) .limit(pageSize) .fetchInto(FilmWithActor.class); public class FilmWithActor { private final Film film; private final FilmActor filmActor; private final Actor actor; public FilmWithActor(Film film, Actor actor, FilmActor filmActor) { this.film = film; this.filmActor = filmActor; this.actor = actor; } // ...