안녕하세요 백기선님. 운영중인 프로젝트에 JPA를 적용하다가 Select 없이 Update만 할 경우를 자주 마주합니다. 멤버의 Id와 변경할 포인트를 전달 받아 포인트를 업데이트 하려하면 아래와 같은 순서로 진행해야합니다. Member member = memberRepo.findById(id) member.setPoint(member.getPoint + point); memberRepo.save(member) 이때 member를 select 하는 구문 없이 이번강의에서 알려주신 @modifying(clear...,flush...)와 @query를 이용하면 좋겠다는 생각이 들었거든요. 만약 pointUpdate(memberId, pointAmount)라는 서비스를 제공할 때, clear와 flush를 보장한다면 서비스를 사용하는 사람도 안심하고 쓸 수 있을것 같구요. 무엇보다 매력적인건 select 한번을 줄일 수 있는 점 같습니다. 테스트 코드에서는 테스트 객체 생성을 위한 create 구문이 있어서 백기선님께서 말씀주신 방향으로 가는게 최적케이스 같습니다. 하지만 기존에 영속화된 엔티티 대상으로 update만 날리기 위해서는 어떤 방법이 더 효율적이라고 생각하시는 지, 주로 사용하시는 패턴이 있으신지 궁금합니다.
스튜디오를 열면 그냥 바로 전에 작업하던 프로젝트가 뜹니다 안떠서 그냥 파일에서 뉴트로젝트 눌러서 만들긴 했는데 이유가 뭘까요? (workspace 폴더에 가서 프로젝트를 아예 삭제하고 스튜디오를 다시 열면 그제서야 나오네여 스튜디오는 3.3버전입니다) Activity Name이랑 Layout Name 설정하는 창도 안나오는데 그냥 진행하면 되나요? 그리고 xml 눌러서 보면 화면에 Hello World! 라고 쓰여 있긴 한데 선생님 화면처럼 뒤로가기나 배터리 표시부분 이런 부분들은 보이지 않고 흰 바탕화면이랑 파란색 바탕화면 위에 딱 저 문구만 쓰여 있어요 문제 있을까요? alpha1으로 바꿔도 똑같습니다
안녕하세요 강사님, 강의 잘 보고 있습니다. include using namespace std; void doSomething(int x) { x = 123; cout << x << endl; // #2 } int main() { int x = 0; cout << x << endl; // #1 doSomething(x); cout << x << endl; // #3 return 0; } 저는 위에서 부터 순서대로 #2, #1, #3 123, 0, 123이 나올줄 알았는데 실행시켜보니 0, 123, 0이 나왔습니다 무조건 int main()이 먼저 실행되나요? 그렇다 쳐도 int main() 안의 #1, #3 이 먼저 실행이되고 #2가 나중에 실행되야하는게 아닌가 싶습니다. step in 기능으로 해보았는데도 잘 안되서 질문 올립니다. 감사합니다.
' socket('localhost', 9000);' 에서 localhost가 자신 PC의 IP주소라고 하셨는데 그렇다면 서버에 접속할 때 포트번호만으로 서버를 인식하고 접속하는 것인가요? 그렇다면 만약 2개의 서버가 같은 포트 번호를 갖고 있으면 어떤 방식으로 구별하는지 궁금합니다!
오래된 강의라 강의 실습환경을 구성하기가 참 어렵습니다. nox를 이용한 환경 구성은 했는데.. 안드로이드스튜디오 3.2.1버전을 깔고 여기서 강의자료에 있는 InsecureBankv2를 오픈하니 아래와 같은 오류가 뜹니다. 혹시나해서 깃허브에 있는 최신 버전을 사용해봐도 build가 안됩니다. 어떻게 해결이 가능할까요? 조언 부탁드립니다. InsecureBankv2: sync failed Unsupported method: BaseConfig.getApplicationIdSuffix(). The version of Gradle you connect to does not support that method. To resolve the problem you can change/upgrade the target version of Gradle you connect to. Alternatively, you can ignore this exception and read other information from the model.
안녕하세요. 제가 mamp로 php서버를 키고 mysql 모니터도 켜놓습니다. Mamp를 보면 Mysql database Php server가 있고 2번에는 초록불이 들어와 켜지는데 1번은 빨간불이 들어와 stopped라 표시되어 php와 sql이 연동이 안됩니다. 반대로 mysql을 끄고 mamp를 키면 1,2번이 동작하나 mysql 모니터가 작동하지 않습니다. 어떻게 해야 연동을 시킬수있을까요 Os는 mac os입니다
사진과 같이 pm2 를 설치하고 start를 통해 실행을 시켰습니다. 하지만 정작 kill을 하게 되면 노란 부분과 같이 process 가 없다고 표시가 됩니다. localhost로 접근을 해보아도 접근도 되지 않습니다... 그리고 npm audit 을 통해 검사를 해보았는데 low 문제로 bcrypt에 대한 부분이 지속해서 뜨고 있습니다 . 이 부분도 해결이 가능한가요 ?? ( https://i.postimg.cc/7hkjs7kn/problem3.png )
안녕하세요. 우선 기선님의 엄청난 팬입니다 ㅎㅎ 좋은 강의 덕분에 많은 것을 배웠습니다. 다름이 아니라, Thymeleaf에서 자체적으로 XSS Prevention을 지원해주는지 여쭤보고 싶네요.. XSS 테스트를 위해 샘플 프로젝트를 진행하던 중 Thymeleaf를 이용해서 렌더링 시 '<'가 <로 '>'가 >로 알아서 바뀌어 들어가는 것을 확인했는데요. 이게 Model에서 view로 내릴 때, 스프링 부트가 해주는 것인지 혹은 thymeleaf가 지원해주는 것인지 잘 모르겠네요.. 답변해주시면 감사하겠습니다. 그리고, @RequestBody의 JSON으로 XSS 공격 시 어떠한 방법으로 막아야 할 지 방법도 좀 알려주시면 감사하겠습니다.
switch문 안에 case 마저도 일일이 쓰기 귀찮아서 for문을 넣어봤습니다. (질문은 소스코드에 주석처리 해놓겠습니다.) int age = 10; switch (age) { for (int i = age; i <= 19; i++) { case i: // case에는 변수를 사용할 수 없는건가요? if (i == 13) { printf("초등학생 입니다.\n"); break; // if, else if 문에서 사용한 break는 for문과 switch문 중에 어디에 적용되는 건가요? 아니면 아예 모순된 문법인가요? } else if (i == 16) { printf("중학생 입니다.\n"); break; } else if (i == 19) { printf("고등학생 입니다.\n"); break; } } default:printf("지정되지 않은 값 입니다.\n"); break; }