안녕하세요. hibernate.hbm2ddl.auto 가 처음에는 create 가 잘 작동했습니다. 그런데 table 생성되고 난 뒤 update 로 age 필드 추가 시도했는데 alter문이 실행되지 않고 필드 추가가 일어나지 않아서 테이블는 당연히 생성되지 않았는데 그 이후로 select 문에서는 추가된 필드 age가 조회되는 걸 확인 할 수 있었어요. 이상해서 validation 처리하니, 다음[1]과 같이 에러가 났구요. create 로 변경 후 다시 실행하려고 하니 drop 도 안되고 여전히 동일한 select만 실행됩니다. 인텔리제이를 껐다 다시 켜도 동일합니다. 어떻게 처리하면 좋을까요 ? main.class package jpaBasic; import javax.persistence.*; import java.util.List; public class Main { public static void main(String[] args) { //EntityMangerFactory 객체 : 웹 서비스 당 한개 생성하는 개념, 디비당 한개 생성 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); //EntityManager 객체 : 고객 요청이 들어올 때 사용 했다가 사용 후 삭제 ( 1회성 ) EntityManager em = emf.createEntityManager(); //EntityTransaction 객체 : jpa 데이터 변경은 무조건 트랜잭션 안에서 실행 해야 한다. EntityTransaction tx = em.getTransaction(); tx.begin(); try{ // Jpql : jpa에서 지원하는 객체 지향 SQL // 일반 쿼리문과 비슷하지만 조회하는 대상이 테이블이 아닌 Member 의 객체를 조회 한다. List<Member> results = em.createQuery("select m from Member as m", Member.class) .getResultList(); for (Member member : results){ System.out.println("member.id " + member.getId()); System.out.println("member.name " + member.getName()); } tx.commit(); }catch (Exception e){ tx.rollback(); }finally { em.close(); } emf.close(); } } member.class package jpaBasic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity public class Member { @Id private Long id; @Column(name="USER_NM", unique = true, length = 10) private String name ; private int age ; public Member() { } public Member(Long id, String name) { this.id = id; this.name = name; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } pesistence.xml <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"> <persistence-unit name="hello"> <properties> <!-- 필수 속성 --> <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/> <property name="javax.persistence.jdbc.user" value="sa"/> <property name="javax.persistence.jdbc.password" value=""/> <property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/jpashop"/> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> <!-- 옵션 --> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/> <property name="hibernate.hbm2ddl.auto" value="update" /> </properties> </persistence-unit> </persistence> [1] Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: hello] Unable to build Hibernate SessionFactory at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1016) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:942) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at jpaBasic.Main.main(Main.java:9) Caused by: java.lang.IllegalArgumentException: Unrecognized legacy `hibernate.hbm2ddl.auto` value : validation at org.hibernate.tool.schema.Action.interpretHbm2ddlSetting(Action.java:181) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator$ActionGrouping.interpret(SchemaManagementToolCoordinator.java:489) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:52) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939) ... 4 more
안녕하세요.. 선생님.. 드디어 완강했습니다. 시간 엄청 걸리고 좀 힘들었네요. 다름이 아니라. 모바일에서 요청하기 위한 자체 인가서버 OAuth2.0 authorization code 부여 방식 구현을 REST API 서버 형태로 구현할 수 있는지요? 사용자 인증 시 웹 페이지 형태의 응답이 아닌 REST API 형태로 요청하고 응답을 받을 수 있도록 구현하려고 합니다. 원래는 인가서버에 사용자 로그인을 하고 동의해야 code 발급받고 클라이언트로 redirect 하여 클라이언트 서버가 대신 인가서버로 access token을 발급 받게 되는데.. 문제가 이 부분이네요. Spring Security 수업에서 ajax 방식으로 API 서버에 요청하면 보통 redirect 없이 응답만 받는 구조이다 라고 선생님이 알려주셨는데요. 이와같이 redirect 없이 REST API로 구현할 수 있는 방법이 있는지요? 인가서버 로그인은 form login 방식을 사용하지 않고 html 응답 없이 front end 단에서 fetch나 ajax API를 이용해서 POST 전송, json 형태로 username과 password 를 넣어서 요청하고 응답 처리를 할 수 있도록 커스텀하게 구현은 할 수는 있을 것 같긴 해요.. 동의화면은 그냥 false로 해서 안 나오게 하거나 아니면 login 완료 후 json 응답으로 동의가 필요하다는 응답을 주고 다시 POST 방식으로 동의하면 될 것 같긴하네요. 클라이언트 서버는 그냥 리소스서버 처럼 사용해서, front end에서 클라이언트 서버로 access token을 전달하여 사용자 정보를 json 응답으로 가져오면 될 것 같아요. 하지만 문제는 redirect 처리를 어떻게 해야 하는지 잘 모르겠네요. 인가서버에 임시코드 요청 시 json 응답으로 code를 주고 redirect 없시 다시 인가서버로 access token을 요청하는 방식으로 구현해야 하는지요? 질문하면서도 authorization code 부여 방식에서 이렇게 구현을 하는게 맞는지? 의문이 드네요.. 이런 REST API OAuth2 인가서버라는게 표준 spec에 맞는지도 의문이고.. 모바일에서 REST API 방식으로 요청하고 인가서버에서 json 형태의 응답이 표준 spec 이랑 안 맞는 것 같기도 하고.. 무조건 html 웹 페이지 형태의 응답 기반으로 구현해야 하는지요? 여기에는 resource owner password 방식이 딱 맞는 것 같긴 한데 Deprecated 되어서 구현하면 안될 것 같고. 일반적으로 어떻게 구현하는지 알고 싶네요. 이런 케이스가 있는지요? 어떻게 하면 좋을지 선생님 의견을 듣고 싶네요.. 감사합니다. ps 질문2. 클라이언 서버, 리소스서버로 딱딱 나누지 않고, 클라이언트 서버를 리소스서버 형태로 구현해서.. 사용자 인증 방식을 form login이 아닌 JwtDecoder 방식으로 인증 처리하여 클라이언트 서버가 서비스 정보를 주는 형태로 구현해도 되는지요?
class Child :public Mother { private: double m_d; public: Child() :m_d(1.0), m_i(10) { cout << "child constructor" << endl; } }; 위 코드에서 오류가 나는 이유가 Child객체를 실행할 때 m_d와 m_i에 메모리를 주는 과정에서 child객체가 m_i가 무엇인지 인식을 하지 못하기 때문에 에러가 난다고 이해했는데 맞게 생각한걸까요?
http://boj.kr/7e750fbdd0404abeb7f5004bfc46d7d2 문제를 풀면서 for(int i = 0; i< s.size() ; i++)을 통해서 string의 각 char에 대해 접근하지 않고 for(auto i : s)를 통해서 각 문자에 대해 접근하여 비교를 하려고 했는데, 디버깅을 해보니 for문 아래로 작동을 하지 않는 모습을 보입니다. 혹시 이렇게 하면 안되는 이유가 있는건가요?
compose.yml 파일 작성 하여 실행시에 하기처럼 실행과정에서 db 와 disconnect 관련 문구가 출력되는게 확인되었습니다. [실행 과정 중 확인된 구문] guestbook-backend-1 | App listening on port 8000 guestbook-backend-1 | Press Ctrl+C to quit. guestbook-backend-1 | Disconnected: unable to reconnect to mongodb://db:27017/guestbook guestbook-backend-1 | /backend/node_modules/mongoose/node_modules/mongodb/lib/operations/mongo_client_ops.js:474 guestbook-backend-1 | throw err; guestbook-backend-1 | ^ guestbook-backend-1 | guestbook-backend-1 | Error: Disconnected: unable to reconnect to mongodb://db:27017/guestbook guestbook-backend-1 | at NativeConnection.db.on (/backend/routes/messages.js:10:11) guestbook-backend-1 | at emitNone (events.js:106:13) guestbook-backend-1 | at NativeConnection.emit (events.js:208:7) guestbook-backend-1 | at NativeConnection.set (/backend/node_modules/mongoose/lib/connection.js:119:12) guestbook-backend-1 | at /backend/node_modules/mongoose/lib/connection.js:529:26 guestbook-backend-1 | at err (/backend/node_modules/mongoose/node_modules/mongodb/lib/utils.js:415:14) guestbook-backend-1 | at executeCallback (/backend/node_modules/mongoose/node_modules/mongodb/lib/utils.js:404:25) guestbook-backend-1 | at err (/backend/node_modules/mongoose/node_modules/mongodb/lib/operations/mongo_client_ops.js:293:21) guestbook-backend-1 | at connectCallback (/backend/node_modules/mongoose/node_modules/mongodb/lib/operations/mongo_client_ops.js:249:5) guestbook-backend-1 | at process.nextTick (/backend/node_modules/mongoose/node_modules/mongodb/lib/operations/mongo_client_ops.js:471:7) guestbook-backend-1 | at combinedTickCallback (internal/process/next tick.js:132:7) guestbook-backend-1 | at process._tickCallback (internal/process/next_tick.js:181:9) 제가 작성한 구문의 문제인가 싶어 수업자료로 올라와있는 구문을 사용할시에도 동일하게 에러가 확인되었습니다. (로컬 인프라 환경은 aws ec2 ubuntu 22.04 입니다.) 다만 해당 에러 확인 후에 혹시나 싶어 포트 접근 해보니 정상적으로 페이지 오픈 및 방명록 기록까지 진행되었습니다. 확인 한번만 부탁드립니다.
안녕하세요 큰 돌님, ret의 지역변수 선언과 전역변수 선언에 궁금한 점이 있습니다. ny,nx와 같이 재귀함수의 매개 변수로 사용되는 변수는 지역변수로 선언 해야 한다는 것은 이해 했습니다. 그런데 ret은 매개변수로 사용되는 것이 아니기에 전역 변수로 사용해도 된다고 생각했습니다. <질문> 왜 ret을 go 함수가 호출 될 때마다 저 자리에서 초기화 해야 하는지 모르겠습니다.. 재귀가 돌 때마다 초기화 되면 ret+=dfs(ny,nx); 이렇게 누적했던 합도 초기화되는 것 아닌가요? 아니면 int ret=0;선언이 ret+=dfs(ny,nx); 이 과정 앞에서 선언되었기 때문에 return 해서 값을 누적 할 때에는 영향을 안미치는 건가요? ret을 전역 변수로 선언하면 왜 틀리는지 모르겠습니다.. 제가 아마 재귀함수의 구조를 완벽히 이해 못해서 그런 것 같긴하지만 어디를 잘못 이해하고 있는지 모르겠어서 질문 남깁니다 ㅠㅠ
[질문 내용] 강사님, 안녕하세요! 반복문에서 사용되는 변수의 선언 위치에 대해 질문 드립니다. 반복문에서 반복 사용될 변수의 경우에 저는 위의 코드처럼 반복문이 시작하기 전에 선언하는 편이었는데요, 반복문이 실행될 때마다 변수가 선언되면 메모리 낭비가 아닐까 해서였어요. 그런데 교안 정답을 보니 productName, price, quantity를 반복문 내에서 선언하고 바로 사용하는 식으로 사용하시는 것을 보고 궁금해져 질문 드립니다! 변수를 생성하고 삭제하는 것 자체는 메모리 소모가 유의미하지 않기 때문에 반복문 내에서 생성-사용-삭제를 반복하게 해도 괜찮은 걸까요? 유익한 강의 감사합니다! :)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 새로운 switch 문 (java 14이상) 을 작성할 때 default 문은 무조건 있어야 하는건가요?
FROM node:20.10.0-alpine as build WORKDIR /home/app COPY package*.json . RUN npm install COPY . . RUN npm run build FROM node:20.10.0-alpine as production WORKDIR /home/app COPY --from=build ./home/app/package.json ./package.json COPY --from=build ./home/app/package-lock.json ./package-lock.json COPY --from=build ./home/app/tsconfig.json ./tsconfig.json COPY --from=build ./home/app/tsconfig.build.json ./tsconfig.build.json COPY --from=build ./home/app/nest-cli.json ./nest-cli.json COPY --from=build ./home/app/dist/ ./dist RUN npm install --only=production CMD ["npm", "run", "start:dev"] nestjs 애플리케이션을 docker를 사용하여 배포하기 위해서 Dockerfile을 작성했는데, dev stage에서 build한 build 산출물인 dist 폴더를 복사하려고 하는데, 복사가 되질 않네요,, 어떤 이유일까요? production stage를 주석처리하고, run build까지만 하고 exec 명령어로 해당 컨테이너에 들어가서 확인했을 때는 dist폴더가 존재하는 것을 확인했습니다..!
디렉토리 구조가 이렇게 되어있을때, @src/bar로 src/bar/index.ts에 있는 bar라는 함수를 가져오는 상황이라고 이해했습니다. 제가 이해한 게 맞을까요...? 그리고 이런 경우 만약 bar라는 함수가 만약 다른 디렉토리의 index 파일에 동명의 함수가 있으면, 이런 경우엔 어떻게 되나요? 만약 제가 2번에서 질문한 것이 성립이 되지 않는다면 제가 생각하기엔 "paths":{"@src/*" : ["src/*"] 라고 설정하는 부분이 src 디렉토리 안에 직접 포함되어 있는 파일만 가리키는 것 같은데요... 그렇다고 한다면, 왜 paths를 쓰는건가요? 그냥 절대경로로 써주는게 가독성이나 편의성 면에서 더 좋을 것 같은데, 라는 궁금증이 생겨 질문 남깁니다.
안녕하세요. 😁 😁 과거에 이미지를 글자 위에 겹쳐서 찍는 코드를 파이썬으로 구현하고 싶은데 할 줄 몰라서 질문 했던 학생입니다. 실력이 부족해서 해답을 발견하는데까지 너무 오래 걸렸네요 ㅠㅠ 거두절미하고 질문했던 사람으로서 제 질문에 답을 공유해서 누군지 모르겠지만 혹시라도 누군가에게 도움이 되길 바라는 마음으로 제가 찾은 코드를 공유하고자 합니다. 1. 원하는 기능 요약 먼저 제가 과거에 했던 질문내용을 모르시는 분들을 위하여 제가 원했던 기능을 다시 정리합니다. (이미 아시는 분들은 이번 목차 내용 전부 안 읽고 넘어가셔도 무방합니다.) 한/컴 문서에 이미지를 추가한다. 이미지의 속성 중 '글자처럼 취급' 속성을 해제한다. 추가한 이미지를 글자와 겹치도록 위치시킨다. 이미지가 글자와 겹쳐서 위치 될 때 이미지가 문자 위에 존재하도록 설정한다. 2. 코드 내용 import os import win32com.client as win32 hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = True hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule") file_path = os.path.join(os.getcwd(), "문서양식/테스트문서.hwp") hwp.Open(file_path) img_path = r"추가하길원하는이미지경로.png" hwp.InsertPicture(img_path, Embedded=True) hwp.FindCtrl() # 이미지 선택 (커서에서 인접한 개체 선택) hwp.HAction.GetDefault("ShapeObjDialog", hwp.HParameterSet.HShapeObject.HSet) # 액션 초기화 hwp.HParameterSet.HShapeObject.TextWrap = hwp.TextWrapType("InFrontOfText") # 글 위로 배치 # 혹시라도 글 뒤로 배치를 원하시는 분들은 "BehindText" 으로 변경해서 사용하셔요. ^^ hwp.HParameterSet.HShapeObject.TreatAsChar = 0 # 글자처럼 취급 해제 hwp.HAction.Execute("ShapeObjDialog", hwp.HParameterSet.HShapeObject.HSet) # 실행 위 코드 테스트를 원하시는 분들은 'file_path' 변수의 파일 경로와 'img_path' 의 이미지 파일 경로만 자신의 상황에 맞게 지정하여 테스팅 해보시면 됩니다. file_path 는 hwp 문서파일의 경로를 지정하세요. img_path 는 hwp 문서에 추가하시길 원하시는 이미지 파일의 경로를 지정하시면 됩니다. 나머지는 전부 다 이미 잘 알고 계시리라 생각합니다. 3. 끝으로.. 음... 사실 혼자 알아내는게 너무 힘들었습니다. 물론 어려워서가 아니라. 제 개인의 실력부족 때문에요 ㅎㅎ 그래도 결국 포기하지 않아서 알아내니까 기분은 좋네요. 아무튼 위 코드와 관련하여 추가적인 궁금점이 있으신 분들은 댓글 남겨주시면 제가 능력범위 내에서 도움드릴 수 있는 내용은 도움을 드리고 싶습니다. 물론 능력이 아주 많이 부족하니 도와드리지 못하는 것들이 많을 수 있습니다. ㅠㅠ 미리 사과드립니다. 모쪼록 저와 같은 고민을 하셨던 분들에게 작은 도움이 되었길 바랍니다. 그리고 제가 원하는 기능을 구현하도록 도와주기 위해 여러 차례 답변을 답해주신 신명진 강사님께도 정말로 진심으로 감사하단 말씀 드립니다.
src에서 정적 에셋을 관리할 경우 src 안의 파일은 삭제하거나 오타를 내면 빌드 실패로 알 수 있으나, public 폴더는 그게 불가능해서 위험함 public 이미지는 캐시되어서 변경되었을 경우 바뀌지 않을 수 있음 javascript에서 모듈 형식으로 import 가능 라는 장단점을 찾았는데, public에서 관리할 경우의 장점은 무엇이 있을까요? 그리고 public에서 관리되는 에셋은 왜 Javascript 코드 내에서 사용하지 말아야 할까요? Vite 공식 문서에도 사용하지 말라는 설명은 있는데, 이유가 궁금합니다. 우선 src 안의 파일은 삭제하거나 오타를 내면 빌드 실패로 알 수 있으나, public 폴더는 그게 불가능해서 위험함 이게 이유 같긴 한데요. 더 있을까요?