묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결C# WPF .NET Core(7.0)
강의 기간 연장이 가능할까요?
안녕하세요 강사님! 좋은 강의 감사드립니다.업무랑 여러 상황들 때문에 강의를 못듣고 있다가 어느새 강의 종료일이 다가오고 있는데 혹시 강의 연장이 가능할지요 ㅠㅠ?
-
미해결C# WPF .NET Core(7.0)
OnPropertyChanged 해서 선택된 것에서 수정하면
OnPropertyChanged 해서 선택된 것에서 수정하면 속성 변화를 알고는 동시에 수정되는 것 또한 알았습니다.혹시 해당 프로그램을 종료하면 저장이 안되어있을텐데, 그 부분에 있어서는 선택된 네임과 에이지의 값을 set 하는 블록 내에서 코딩을 따로 해주면 되는 것일까요?현재는 age = value; 느낌이면 결국 value을 통해서 age에 바인딩되서 age를 리턴 해서 보여지게 된 것이라고 했을 때 ,모델측에 설정한 list 안의 데이터 값도 변화되서 저장해둘려면 따로 db를 이용해야하는 것일까요 ?
-
미해결C# WPF .NET Core(7.0)
Image Source 관련 질문입니다.
Image Source 사용할때 인터넷 연결 상태에서 빌드한 다음 빌드한 파일을 오프라인 환경에서 실행하면 이미지가 그대로 출력 돼나요? 아니면 이미지 참조가 불가능하니 오류가 발생하나요?
-
미해결업무에 바로 쓰는 SQL 튜닝
다음과 같은 쿼리가 더 좋은 결과를 보이는데 이유가 뭔지 궁금합니다.
SELECT e.emp_id , s.avg_salary , s.max_salary , s.min_salary FROM EMP e, (select emp_id, ROUND(AVG(annual_salary), 0) avg_salary, ROUND(MAX(annual_salary), 0) max_salary, ROUND(MIN(annual_salary), 0) min_salary from SALARY where emp_id BETWEEN 10001 and 10100 GROUP BY emp_id) s WHERE e.emp_id = s.emp_id; 처음에 답을 안 보고 제가 개선해본 쿼리인데,필터링 조건을 salary에 넣어주고, 이걸 조인해서(emp의 primary key) 나오는 결과인데 미세하게 더 빠르네요.! 정답 쿼리가 조금 더 느린 이유는 salary 테이블을 3번 접근해서 그런거 같은데(index를 활용하더라도) 맞는지 궁금합니다.
-
미해결업무에 바로 쓰는 SQL 튜닝
rollup mariadb 11 ver 기준
SELECT REGION, GATE, COUNT(*) AS cntFROM ENTRY_RECORDWHERE REGION <> ''GROUP BY REGION, GATE WITH ROLLUP; -- 414ms ROLLUP 사용법이 달라서 구글이나 지피티에 서칭을 해봤습니다. 저처럼 안 되시는 분이 많을 거 같아서 올립니다.
-
미해결업무에 바로 쓰는 SQL 튜닝
use index, force index 힌트 질문
학습 환경은docker + mariadb 입니다.! 현재 힌트를 사용해서 Manager 테이블의 인덱스를 강제시켜서 실행시켰는데 다음과 같이 table full scan으로 변환되었습니다. 이거는 mariadb 내부적으로 hint가 올바르지 않다고 생각해 실행 계획을 바꾼걸까요?EXPLAIN SELECT e.FIRST_NAME, e.LAST_NAMEFROM EMP e,MANAGER m FORCE INDEX (PRIMARY)WHERE e.EMP_ID = m.EMP_ID ;
-
미해결업무에 바로 쓰는 SQL 튜닝
BNL Join 사용
SELECT EMP.emp_id, EMP.first_name, EMP.last_name, GRADE.grade_nameFROM GRADE, EMP; -- 카테시안 곱 mariadb로 실습을 진행했는데 hash join이 쓰이는게 아니라flat, BNL join을 사용한다고 되어 있네요?BNL Join은 MySQL이 인덱스가 없거나 사용할 수 없는 상황에서 기본적으로 사용하는 비효율적인 조인 알고리즘이라는데 원인이 무엇일까요?grade 테이블을 hash join table로 사용하지 않네요?
-
미해결업무에 바로 쓰는 SQL 튜닝
select_type 에서 'simple' 경우 각각의 테이블이 '드라이빙' 또는 '드리븐' 인지 어떻게 알수 있나요?
안녕하세요. 우선 좋은 강의 만들어주셔서 정말 감사합니다 :)select_type 에서 'simple' 경우 각각의 테이블이 '드라이빙' 또는 '드리븐' 인지 어떻게 알수 있나요? 5-2. 실행계획 항목(1) -> 05:40 영상을 확인해보면 실행계획에서 table 필드 값 "e" 하고 "s" 가 있는데요.여기서 질문 2가지가 있습니다.질문1: 여기서 각각의 테이블이 '드라이빙' 또는 '드리븐' 인지 어떻게 알수 있나요?(실행 계획 통해 조회된 데이터 순서대로 판단하면 되는것인지... 궁금하네요.. 그런데 이걸로 100% 판단하기에 조금 어렵다고 들어서요...)질문2:만약 테이블 "e" 가 드라이빙 테이블이라고 가정시실질적으로 쿼리 수행할때 테이블 "e" 에 대한 where 절 조건을 이용해서 먼저 필터링 한다음에테이블 "s" 하고 조인 수행을 하는것인지 궁금 합니다.즉 드리아빙 테이블 조건절 이용해서 최대한 필터링 하고그다음 드이븐 테이블하고 조인을 수행하는지 궁금합니다.
-
미해결
MariaDB에 회원가입 정보가 안 들어가집니다.
안녕하세요. 스프링부트와 리액트를 이용해 웹앱을 만들고 있는데요, mariadb를 연결해서 회원가입 정보를 저장하려고 하는데 저장이 안 됩니다. 잘 아시는 분들 코드 한번만 봐주실 수 있을까요? 인터넷과 GPT 모두 이용해보아도 해결이 안 되네요 너무 간절합니다 ㅠㅠ 부탁드립니다. User.javapackage com.dohwaji.model; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @Entity @Table(name = "users") @Data @AllArgsConstructor @Builder public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; private String password; public User() { } public User(String username, String password) { this.username = username; this.password = password; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } UserService.javapackage com.dohwaji.service; import com.dohwaji.model.User; import com.dohwaji.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; import java.util.Optional; @Service public class UserService { @Autowired private final UserRepository userRepository; @Autowired private BCryptPasswordEncoder bCryptPasswordEncoder; public UserService(UserRepository userRepository) { this.userRepository = userRepository; } public User registerUser(User user) { user.setPassword(bCryptPasswordEncoder.encode(user.getPassword())); return userRepository.save(user); } public User authenticate(String username, String password) { Optional<User> optionalUser = userRepository.findByUsername(username); if (optionalUser.isPresent() && bCryptPasswordEncoder.matches(password, optionalUser.get().getPassword())) { return optionalUser.get(); } return null; } public User createUser(String username, String password) { User user = new User(username, password); return userRepository.save(user); } } UserRepository.javapackage com.dohwaji.repository; import com.dohwaji.model.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import java.util.Optional; @Repository public interface UserRepository extends JpaRepository<User, Long> { Optional<User> findByUsername(String username); } AuthController.javapackage com.dohwaji.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import com.dohwaji.service.UserService; import jakarta.servlet.http.HttpServletRequest; import com.dohwaji.repository.UserRepository; import com.dohwaji.model.User; @RestController // REST API 컨트롤러임 @RequestMapping("/api/auth") // 이 컨트롤러의 기본 URL 경로 public class AuthController { @Autowired // UserService 클래스의 인스턴스가 주입 private UserService userService; // 사용자 관련 비즈니스 로직을 담당하는 서비스 계층 @PostMapping("/login") // HTTP POST 요청이 /api/auth/login 으로 들어오면 이 메서드가 실행됨 public ResponseEntity<?> login(@RequestBody User loginRequest) { // login()메서드는 사용자 이름과 비밀번호를 받아 UserService의 authenticate()메서드를 호출 User user = userService.authenticate(loginRequest.getUsername(), loginRequest.getPassword()); if (user != null) { // 토큰 발행 로직 추가 가능 return ResponseEntity.ok(user); // 사용자 인증에 성공하면 사용자 정보를 포함한 HTTP 200 OK 응답을 반환 } else { return ResponseEntity.status(401).body("Invalid credentials"); // 사용자 인증에 실패하면 HTTP 401 Unauthorized 응답을 반환 } } @PostMapping("/register") // HTTP POST 요청이 /api/auth/register 로 들어오면 이 메서드가 실행됨 public ResponseEntity<?> register(@RequestBody User registerRequest, HttpServletRequest request) { // register() 메서드는 사용자 정보를 받아 UserService의 registerUser() 메서드를 호출 User user = userService.registerUser(registerRequest); request.getSession().setAttribute("currentUser", user); // 로그인 된 사용자 정보를 세션에 저장 return ResponseEntity.ok(user); // 회원가입에 성공하면 새로 생성된 사용자 정보를 포함한 HTTP 200 OK 응답을 반환 } @GetMapping("/logout") public String logout(HttpServletRequest request) { request.getSession().invalidate(); // 세션 무효화 return "redirect:/"; // 메인 페이지로 리다이렉트 } } build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.2.5' id 'io.spring.dependency-management' version '1.1.4' } group = 'com.dohwaji' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.security:spring-security-crypto' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.mariadb.jdbc:mariadb-java-client' implementation 'jakarta.persistence:jakarta.persistence-api:3.1.0' } tasks.named('test') { useJUnitPlatform() }
-
미해결데이터베이스 MariaDB(마리아디비)
수업자료 MARIADB설치PPT - 10.7.3버전이 없네요..
수업자료 MARIADB설치PPT - 10.7.3버전이 없네요구글링 10.7.3 다운로드는 Mirror가 Germany 뿐이구
-
해결됨
spring에서 Entity작성 후 [Table ' ' doesn't exist] 오류
영화 예매 관련 Entity를 작성 후 DB확인차 실행했는데 다른 Entity는 테이블이 잘 만들어진 것을 확인할 수 있었지만 이상하게 Seat Entity만 테이블이 만들어지지 않았습니다. WARN 3508 --- [Movie Ticketing] [ restartedMain] o.m.jdbc.message.server.ErrorPacket : Error: 1146-42S02: Table 'ticketing.seat' doesn't exist WARN 3508 --- [Movie Ticketing] [ restartedMain] o.h.t.s.i.ExceptionHandlerLoggedImpl : GenerationTarget encountered exception accepting command : Error executing DDL " alter table seat add constraint FKgik5885qsff01sxe7v3kqjrhx foreign key (theater_id) references theater (theater_id)" via JDBC [(conn=216) Table 'ticketing.seat' doesn't exist] org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " alter table seat add constraint FKgik5885qsff01sxe7v3kqjrhx foreign key (theater_id) references theater (theater_id)" via JDBC [(conn=216) Table 'ticketing.seat' doesn't exist]at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:94) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.Helper.applySqlString(Helper.java:233) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.Helper.applySqlStrings(Helper.java:217) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createForeignKeys(SchemaCreatorImpl.java:303) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:250) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:172) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:142) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:118) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:256) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.lambda$process$5(SchemaManagementToolCoordinator.java:145) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final]application.yml은ddl-auto.create입니다. 대소문자 구분이 문제인가 싶어 @Table(name = "seat")도 추가하고 lower_case_table_names = 1인 것도 확인했는데 똑같이 에러가 발생하더라구요하루종일 찾아봐도 이유를 잘 모르겠습니다 왜그런걸까요 ㅠㅠㅠSeat Entity 코드는 아래와 같습니다.@Entity @Table(name = "seat") class Seat { val row : String? = null val column : Int? = null //좌석 선택 @Enumerated(EnumType.STRING) val selectStatus : SelectStatus? = null // POSSIBLE, IMPOSSIBLE @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "theater_id") val theater : Theater? = null @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "seat_id") val id : Long = 0L }
-
미해결스프링 프레임워크 입문자를 위한 따라하기
Maria DB 설치 관련해서 다운로드 문의
Maria DB 설치를 위해 강의와 동일하게 공식 사이트 접속을 했는데요. Mirror 부분에 나라가 Korea가 존재하지 않습니다. 현재 BlendByte-Taipai 라고 되어있는데 이거로 받으면 될까요??
-
미해결도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
[스토리 그 자체, 실적 테이블](9:51)max_recursive_iterations
안녕하세요.heidiSQL 또는 mysql워크벤치이든 접속을 해서SET SESSION max_recursive_iterations = 10000 ;를 실행해보면 해당 variables 이 없다고 나오는데요. "Error Code: 1193. Unknown system variable 'max_recursive_iterations' " 혹시 인스톨하는 버전에 따라서 제공되는 시스템변수들이 달라지는 걸까요??mysql 은 윈도우용으로 버전은 8.0.36을 사용중입니다.
-
미해결도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
urlcodemap 쿼리 파일 확인요청
안녕하세요. [대사와 액션, 회차정보테이블]의 '특정요일 과거일자' 부분에서 나오는 'urlcodemap' 쿼리문 파일이 수업자료에 없는 것 같습니다. 인터넷 구글링 또는 예전 강사님강의자료에는 있긴한데요.그래도 수업자료로는 올려주시는 게 나을 듯 하여 글을 올립니다.
-
미해결도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
[공유][대사와 액션, 회차정보테이블]contents2 생성관련
안녕하세요. mysql 버전이 8.0 대라서 그런지 contents2 테이블 생성하는 명령어(create or replace TABLE ... ) 가 실행이 안되서 다른 방식으로 수행하였습니다. 혹시 저와 동일한 에러가 나시는 분은 참고하세요. 우선 테이블을 만들고, group_concat() 이 selec까지는 잘 되는데 생성시에는 에러가 나서, /* SQL 오류 (1260): Row 6 was cut by GROUP_CONCAT() */ 구글링을 해보니 max length를 수정해줘야 한다고 하네요. SET group_concat_max_len=150000; 강사님이랑 같은 소스데이터를 사용하는데 왜 에러가 나는 지는 모르겠으나, 관련 명령어를 수행하고 나니 돌아갑니다.
-
미해결도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
[주인공과 등장인물의 집합채, 웹소설정보테이블]작가명 생성관련
안녕하세요. [주인공과 등장인물의 집합채, 웹소설정보테이블](4:13) 작가명과 회원아이디를 랜덤하게 생성함에 있어서, 작가명하나에 회원아이디가 여러개로 생성이 될 소지가 있는데요. 실제로 돌려보니 중복이 나오네요. ㅡㅡ;혹시.. 묶어서 작가명하나에 회원아이디 하나로만 매핑되도록 생성하려면 어떻게 하면 될까요? 샘플로 하는 거라 중복이 이슈거리는 아니지만.. 좀 더 배우고자 하는 마음에 문의드립니다. ㅡㅡ;
-
미해결도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
[주인공과 등장인물의 집합체,웹소설정보테이블]wn_novel테이블 생성
안녕하세요. wn_novel테이블 생성 (1:54) 의 수행을 위한 쿼리문이 수업자료로 다운받은 pdf 파일에는 링크가 안보이는데요.혹시 어디에서 확인할 수 있을까요??[강의화면][pdf] 03-2 DATA 생성-웹소설 정보.pdf
-
미해결도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
[ERD로 보는 스토리와 테이블이라는 등장인물]태그정보 테이블 설계관련
[ERD로 보는 스토리와 테이블이라는 등장인물](17:53) 부분관련 문의드립니다. 안녕하세요. db설계에 대한 개념이 별로 없어서 질문드립니다. 태그정보의 경우, 연재요일과 같이 실적성으로 만들어야 한다고 하셨는데요. 태그정보의 코드/태그정보 테이블외에 작품번호/태그정보 테이블을 추가로 만들어야 할 지, 아니면 연재요일 테이블과 같이 작품번호/태그정보 테이블 하나만 만들면 되는 것일까요? 그리고 연재요일 테이블과 같이, 이런 류의 테이블은 별도의 요일에 대한 정보(코드/요일)테이블이 따로 없이 바로 실적테이블 형태로 구성을 하나요?
-
해결됨도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
[가상데이터 생성]
안녕하세요. 워크벤치로 하다보니 동일한 쿼리문에 에러가 나는 경우가 더러 있네요. 구글링으로 보완해가면서 테스트 중입니다. 카페 사용관련 가상데이터 설명 (21:06분) 내용 중에 '1일2회 이상 등록된 전화번호 및 결제일자를 삭제 하는 쿼리문 실행시, "" 요런 메시지가 나와서, 구글링을 해보니, 삭제시 자기 테이블을 조회할 수 없기 때문이라고 나와서 수정을 했는데요. 요렇게 하면 제대로 수행이 되는 것 같습니다. 근데 궁금한 건... 강의내용의 쿼리문은고객의 해당일자 전체를 삭제하는 것 같은데요.하루 최초 또는 마지막 건수를 남기고 나머지를 삭제하는 쿼리문을 좀 알 수 있을까요?
-
미해결C# WPF .NET Core(7.0)
28강 영어단어맞추기 앱-1에 오류가 있어요.
Content="{Binding.}" 부분이 '중첩 형식이 지원되지 않습니다라고 뜨는데 소스상에 뭔가 다른 부분은 없는거 같아요. 왜 그런가요?