묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
/request-param-v1 질문있습니다.
@Slf4j @Controller public class RequestParamController { @RequestMapping("/request-param-v1") public void requestParamV1(HttpServletRequest request, HttpServletResponse response) throws IOException { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); response.getWriter().write("ok"); } @ResponseBody @RequestMapping("/request-param-v2") public String requestParamV2( @RequestParam("username") String memberName, @RequestParam("age") int memberAge) { log.info("username={}, age={}", memberName, memberAge); return "ok"; } 왜 requestParamV1 메소드는 Controller와 을 사용하고 @RestController을 사용해도 작동되는데 requestParamV2은 Controller 사용시 @ResponseBody를 붙여야 하잖아요. 인터넷에 찾아보니 메소드가 데이터(예: 문자열 "ok")를 반환하는 경우 ResponseBody를 작성해야 한다고 하는데요.근데 둘다. response.getWriter().write("ok");/ return "ok"; 데이터 반환 아닌가요?
-
미해결배달앱 클론코딩 [with React Native]
프로젝트 생성시 원하는 도매인으로 변경하는것고, 안드로이드를 자바로 시작할려면 어떻게 해야할까요?
강의를 보면서 Git 자료를 함께 참조해서 학습중입니다. README 파일을 보면 아래와 같이 프로젝트를 생성하게 되는데npx react-native init FoodDeliveryApp 안드로이드의 경로를 보면 android > app > src > main > java 하위 경로를 보면 com.fooddeliveryapp 이라고 생성이 되는데만약 회사의 도메인으로 생성을 원할경우 mycompany.co.kr 로 생성을 할려면 어떤식으로 생성을 해야하는지 문의드립니다.아니면 npx react-native init mycompany로 프로젝트를 생성한 후에 위의 안드로이드 경로를 com에서 co.kr로 변경해서kr.co.mycompany 로 프로젝트 경로를 임의로 변경을 해도 문제가 없을까요? 검색을 해서 정리를 해 본 내용으로는1. npx react-native init mycompany로 프로젝트를 만들고2. android에서 java 하위의 구조를 kr.co.mycompany로 변경3. 하위 파일의 소스중 패키지 경로를 kr.co.mycompany로 변경4. android/app안의 build.gradle 부분의 namespace와 applicationId를 변경.5. 터미널로 android 경로 안으로 들어가서 ./gradlew clean6. iOS의 경우에는 Xcode의 General부분에서 Bundle Identifier 부분 변경이렇게 하면 된다고 하는데 혹시 잘못된 부분이나 빠진 부분이 있을까요??(안드로이드는 변경할 파일들이 좀 있는데 iOS는 간단하네요) 참.. 그리고 하나 더 궁금한게 npx react-native init FoodDeliveryApp으로 프로젝트를 만들면 기본적으로 안드로이드는 코틀린 프로그램으로 되던데 이것을 자바로 만드는 방법이 따로 있을까요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
티맵 에러
Assertion failed: Pair != nullptr [File:C:\UE_Editor\UE_5.3\Engine\Source\Runtime\Core\Public\Containers\Map.h] [Line: 671]에러가 이렇게뜨고,디버깅을 하면, SetCharacterControl함수의 UEJCharacterControlData* NewCharacterControl = CharacterControlManager[NewCharacterControlType];check(NewCharacterControl);부분에서 에러가 나는걸로, 티맵값을 못받아오는거같은데요. .. 어떻게 하면될까요?
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
django htmx 외에 몇 가지 질문 있습니다.
@login_required_hx def note_delete(request, pk): note = get_object_or_404(Note, pk=pk, author=request.user) if request.htmx: note.delete() messages.success(request, "기록을 삭제했습니다.") return HttpResponseClientRedirect(redirect_to=reverse_lazy("photolog:index")) photolog 삭제 기능은 다루시지 않으셨길래 htmx로 구현해보고 있었습니다. 여기서 get_object_or_404를 설정하면 해당하는 쿼리셋 결과가 없을때 404오류를 반환해야하는데 htmx때문에 404 오류를 발생시키지 않습니다. 이 경우엔 어떻게 에러를 해결해야하나요?HttpResponseClientRedirect을 통한 리다이렉트 요청은 함수기반뷰에서는 작동하지만 클래스 기반뷰에서는 작동하지 않았습니다. 이유가 무엇일까요? (form_valid 메서드에 HttpResponseClientRedirect만 추가해서 재정의 했습니다) 여러 파일을 등록해보았는데 같은 png 파일이지만 특정 파일은 등록할 수 없었습니다.OSError at /new/ cannot write mode P as JPEG 오류가 발생하길래 기존 RGBA를 RGB로 변환하는 부분을 아래와 같이 수정했습니다.if pil_image.mode != "RGB": pil_image = pil_image.convert("RGB") jpeg로 변환시에는 모든 타입에 대해서 RGB로 변환을 하는게 일반적인건가요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 도메인 요구사항 설계 중 의문점
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 5. 상품 도메인 개발 수강 중 궁금한 점이 있어 글 올립니다!상품 도메인 비즈니스 요구사항에는 1. 상품 등록 2. 상품 목록 조회 3. 상품 수정 이 있는데 핵심 비즈니스 로직을 정의하는 클래스인 ItemService(상품 서비스 클래스)에서는 오직 1. 상품 등록 2. 상품 목록 조회 로직만 설계하신 것을 알 수 있었습니다.상품 리포지토리에서 상품 등록 로직(save(Item item))에 if - else 문을 통해 merge()가 3. 상품 수정 기능을 해서 상품 서비스 클래스에서 설계를 안 하신 걸로 봐도 될까요?
-
해결됨[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)
[Retrofit 간단한 예제 변경 + RecyclerView 추가] 에 databinding 추가해 보았습니다.
안녕하세요, 좋은 강의 만들어 주셔서 감사합니다. [Retrofit 간단한 예제 변경 + RecyclerView 추가] 강의 말미에 말씀해주신대로 recyclerview에 databinding 을 추가해 보았습니다. (Android view에 대한 접근 강의 마지막 챕터 databinding + adapter 참고해서 )화면에 데이터가 나오긴 하는데 제대로 적용된것이 맞는지 궁금합니다. + 추가적으로, MainActivity에서 databinding이용해서 viewModel 데이터 결합을 해줘야 하는건지 궁금합니다. (아직 dataBinding 다른 라이브러리와 함께 사용할때 헷갈리는 부분이 많아서ㅠ )답변 주시면 감사하겠습니다. 변경된 부분은 1. text_row_itemCustomAdatperactivity_main.xmlMainActivitytext_row_item : : <layout> 감싸고 data class Post로 데이터 결합 <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="myData" type="com.example.a04withrecyclerview.model.Post" /> </data> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/myText" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@{myData.title}" android:textSize="20dp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="******" /> </LinearLayout> </layout>CustomAdapterMyviewHolder dataBinding으로 수정class CustomAdapter(private val dataSet : ArrayList<Post>) : RecyclerView.Adapter<CustomAdapter.MyViewHolder>() { class MyViewHolder(binding : TextRowItemBinding) : RecyclerView.ViewHolder(binding.root){ val text : TextView = binding.myText } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { //val view = LayoutInflater.from(parent.context).inflate(R.layout.text_row_item, parent, false) val view = DataBindingUtil.inflate<TextRowItemBinding>(LayoutInflater.from(parent.context), R.layout.text_row_item, parent,false) return MyViewHolder(view) } override fun onBindViewHolder(holder: MyViewHolder, position: Int) { holder.text.text = dataSet[position].title } override fun getItemCount(): Int { return dataSet.size } }activty_main : <layout> 감싸기<layout> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv" android:layout_width="match_parent" android:layout_height="match_parent"/> </androidx.constraintlayout.widget.ConstraintLayout> </layout>MainActivity: dataBinding 적용class MainActivity : AppCompatActivity() { private lateinit var binding : ActivityMainBinding private lateinit var viewModel : MyViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() binding = DataBindingUtil.setContentView(this, R.layout.activity_main) ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) insets } viewModel = ViewModelProvider(this).get(MyViewModel::class.java) viewModel.getPostAll() //val rv = findViewById<RecyclerView>(R.id.rv) viewModel.liveWordList.observe(this){ val customAdapter = CustomAdapter(it as ArrayList<Post>) binding.rv.adapter = customAdapter binding.rv.layoutManager = LinearLayoutManager(this) } } }
-
미해결김영한의 실전 자바 - 기본편
다형적 참조시에 생성자 호출 질문
Parent p = new Child(); 이런 형식으로 부모는 자식을 품을 수 있으니깐 저렇게 선언하면Child생성자도 호출이 되는 것 같더라고요. 메서드들은 오버라이딩이 된 것이 아닌 이상 자식 메서드를 사용할 수 없는데생성자는 생성시에는 자식도 호출이 된다고 생각해야하는걸까요?
-
해결됨김영한의 실전 자바 - 중급 1편
섹션 5. 문자열과 타입 안전성 1
마지막 return price * (discountPercent / 100); 이 무조건 0이 반환되는 이유가 뭔가요?예를들어 BASIC에 들어오면 discountPercent 에는 10의 값이 들어가고마지막에 price ( 10 / 100); 이 되는 거 아닌가요?ㅠㅠpublic int discount (String grade, int price) { int discountPercent = 0; if (grade.equals("BASIC")) { discountPercent = 10; } else if (grade.equals("GOLD")) { discountPercent = 20; } else if (grade.equals("DIAMOND")) { discountPercent = 30; } else { System.out.println(grade + "할인X"); } return price * (discountPercent / 100); }
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
model.addAttribute시 질문!!
컨트롤러에서 model.addAtrtibute시 attributeName을 임의로 설정하면 왜 th:value="${attributeName.} ( 프로퍼티 접근) 시에 오류가 생기는건가요??attributeName을 어떤거랑 일치시켜야 하나요?!
-
미해결스트림릿(Streamlit)을 활용한 파이썬 웹앱 제작하기
오류 메시지 궁금 합니다.
이 오류 메시지는 왜 나오는걸까요??뷰티풀숲을 pip 구문으로 설치 했음에도 불구하고 계속 나오는데요 해결 방법을 알 수 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
홀펀칭 질문도 괜찮을까요..?
안녕하세요, 루키스님유익한 강의 제공해주셔서 감사합니다항상 감사한 마음으로 수강하고 열심히 프로젝트를 진행해보고 있습니다.현재 프로젝트에서메인 서버에서는 모든 클라 게임 접속을 받고 로그인 및 방 입장 등을 관리합니다.클라가 게임룸을 생성하면 해당 클라에 Host라는 오브젝트가 생성되고, 해당 오브젝트는 서버 코드를 유니티에 호환되도록 수정을 거친 상황입니다.타 클라(로컬 네트워크 환경에서만 테스트 해보았습니다.)에서 방 목록에서 방을 선택하고 입장하면 중앙 서버에서가 호스트와 클라 사이에서 IP와 포트를 알려주는 중개 역할을 하며 두 클라이언트가 연결됩니다.해당 게임의 사이클이 끝나 게임이 종료되면, 클라이언트들은 로비로 돌아가며 1~3의 단계가 계속해서 반복됩니다.현재 프로젝트의 조건을 위와 같이 설정하였고,3번까지는 테스트를 완료했고, 정상적으로 동작하는 것을 확인했습니다. 하지만 4번에서 문제가 발생하는데,다시 방을 생성하면 클라와 호스트 사이에 패킷 전송이 되지 않는 것 같습니다.디버깅을 통해 확인해볼 때에는 호스트측의 OnConnected 메서드는 호출되는 것으로 보아서는 클라측에서 연결에 문제가 발생하는 것 같은데,구글링과 디버깅을 통해 여러가지 해결책을 시행해봤습니다.연결 종료 시 완전히 소켓이 종료되도록 세션 Disconnect()를 했습니다.소켓이 같은 주소의 포트 번호를 공유할 수 있도록 Connector와 Listener 코드의 소켓 설정 코드에Socket socket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);이렇게 ReuseAddress 설정을 추가했습니다.(중앙 서버 세션과 호스트 세션은 클라에서 개별적으로 다루고 있습니다)호스트 세션의 연결이 종료될 때, 호스트 세션의 _disconnected 변수를 다시 0으로 만들어,다음 연결 시 RegisterRecv등의 코드에서 if(_disconnected == 1) return;의 조건문에 걸리지 않도록 코드를 수정해보았습니다.2번의 방법을 시행해보기 전에는 '같은 주소의 포트를 사용할 수 없습니다?'와 같은 오류가 발생했었는데,2번을 시행한 뒤에는 오류는 발생하지 않지만 연결이 되지 않는 것은 마찬가지인 상태입니다.그 외에도 잡다하게 정말 많은 시도를 해보았는데,전혀 실마리가 보이지 않아 질문합니다..ㅠㅠ
-
해결됨김영한의 실전 자바 - 중급 1편
섹션 4. 문제와 풀이2
LotteGenerator 클래스에서private final Random random = new Random(); 에서이것만 final로 처리한 이유가 있을까요? import java.util.Random; public class LotteGenerator { private final Random random = new Random(); private int[] lotteNumbers; private int count; public int[] generate () { lotteNumbers = new int[6]; // 배열 6칸 생성 count = 0; while (count < 6) { // 1부터 45 사이의 숫자 생성 int number = random.nextInt(45) + 1; // number에 random 번호 넣기 // 중복되지 않는 경우에만 배열에 추가 if (isUnique(number)) { lotteNumbers[count] = number; count++; } } return lotteNumbers; } // 이미 생성된 번호와 중복되는지 검사 private boolean isUnique(int number) { for (int i = 0; i < count; i++) { if (lotteNumbers[i] == number) { return false; } } return true; } }
-
해결됨외워서 끝내는 네트워크 핵심이론 - 응용
PN 내부에 있는 PC들의 인터넷 접근 관련 질문
안녕하세요~ 우선 질 좋은 강의에 감사인사드립니다! 다름이 아니라 VPN 강의 속에서 VPN Tunneling to GtoG 부분을 설명해주시면서 아래와 같은 그림을 작성해주셨고, 이 때 "PC A, B가 DB 서버에 접근이 가능하지만 PC A,B 는 외부 인터넷을 사용하지 못한다" 라고 하셨는데요!그런데 보통 회사(주로 사기업..)에서 일하다 보면 회사에서 오프라인으로 출근한 뒤(오프라인으로 출근했다 = 회사 내부 망을 이용), 회사의 내부 문서에서도 접근할 수 있게 되지만 그와 동시에 구글링도 보통 가능한데요!?(물론 회사에 따라 개인정보와 같은 매우 민감한 데이터들에 접근하기 위해서 VDI 같은 것들을 이용해서 더 깊은(?) 내부망으로 접근하면 해당 내부망에선 외부 인터넷이 안되긴 하더라구요)이러한 경우는 어떻게 네트워크를 구성한 건가요..? 대략적으로 구조만 알려주셔도 감사하겠습니다! 또 공공기관 같은 경우는 강의에서 말씀하신 것처럼 회사 내부 망을 이용할 때는 DB 서버에 접근할 수 있되 인터넷은 접근이 안된다는 것을 지인을 통해서 들었습니다. 이 2개의 케이스의 각 네트워크 구조에서 가장 큰 차이점이 무엇인지 설명 부탁드려도 될까요? 미리 감사드립니다 🙂
-
해결됨초보자를 위한 BigQuery(SQL) 입문
battle 테이블 형성할 때 제가 어떤 실수를 했을까요?
안녕하세요! 카일스쿨님!battle 테이블을 영상 그대로 만들었는데도, 계속 battle 테이블에 관한 데이터에 관한 정보를 볼 수가 없어요!빠진것 없이 최대한 꼼꼼히 다시 체크했는데도 모르겠습니다.혹시 제가 어떤 실수를 했을지 도와주실 수 있나요?아래는 스키마 정보와, 제가 테이블 만들때 과정을 이미지로 첨부했습니다.감사합니다.
-
미해결[2024 업데이트] UX/UI 시작하기 : Figma 입문 (Inflearn Original)
프로토타입에서
프로토타입에서 시작 지점 정할 때저는 flows가 안 나옵니다 그 다음 단계인 flow starting point 메뉴도 없습니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
findByName() 메서드 실행시 오류
프로젝트 압축파일입니다.https://drive.google.com/file/d/1IRv3FX6UTERveIoq1KaZY7N_DyVLGv0b/view?usp=sharing<회원 리포지토리 테스트 케이스 작성> 강의 9:40 경에findByName() 메서드 실행시 java.util.NoSuchElementException: No value present at java.base/java.util.Optional.get(Optional.java:143) at hello.hellospring.repository.MemoryMemberRepositoryTest.findByName(MemoryMemberRepositoryTest.java:45) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)라는 오류가 발생합니다.이 오류로 인해 findAll() 메서드까지 실행이 되지 않는 것 같습니다. get()과 관련된 오류 같아 구글링해보아도 해결이 어려워 문의남깁니다.답변 부탁드립니다. 감사합니다.
-
해결됨
@Transactional을 붙이는 위치가 궁금합니다. (Service, ServiceImpl..)
회원 정보 수정 API를 구현하며 dirty checking을 이용한 회원 정보 update를 사용했습니다.service의 update 메소드를 호출하기 전과 후를 controller단에서 로그를 찍어보니 정보가 잘 변경되는데 DB에는 반영이 되지 않아 애를 먹었습니다.serviceImpl단의 update 메소드에 @Transactional을 붙여서 해결했습니다. 그 전에는 service단의 update 메소드에 @Transactional을 붙였더니 안되더라구요.service단의 메소드에 붙이는 @Transactional와 serviceImpl단의 메소드에 붙이는 @Transactional이 다른 트랜잭션으로 작동하는건지, 그렇다면 어디에 @Transactional을 붙이는게 맞는건지 궁금합니다.
-
해결됨장래쌤과 함께하는 쉽고 재미있는 SQL 이야기
USING 조인 질문드립니다.
안녕하세요 MySQL 사용하고있는데요조인하려는 테이블이 PK가 없는 단일 값인데요메인 select 절에 있는 컬럼이 pk 테이블에 있는 단일컬럼에 포함되는 값이 있는지regexp_like 함수로 확인하고싶은데요pk값이 없다보니 join 을 어떻게 할지.. 모르겠습니다using 으로 연결해보려 했는데 (natural join은 지원안됨) 컬럼절에 regexp_like (a.테이블 컬럼, pk 없는 테이블 컬럼) 이렇게 조건을 거니까 에러가 떠서요.. 방법이 있을까요? 요약 : left join으로 pk 테이블이 없는 단일 컬럼과 같다는 조건으로 연결 시, regexp_like 를 사용해도 똑같은 값만 불러오는 에러가 발생ex. pk 테이블이 없는 컬럼에 '사과' 라는 단어가 있다고 가정,'사과와당근' 이라는 메인 테이블의 컬럼값이 pk 테이블의 '사과' 단어가 매칭되는지 아래 조건으로 걸면 null 값으로 반환.regexp_like('사과와당근', pk 없는 테이블) - > '사과'가 포함되지만 조인조건 때문에 사과와 당근을 매칭해서 불러오지 못함.
-
미해결JSP 강의평가 웹 사이트 개발하기
No value specified for parameter 2 에러
/Hello World/WebConetnt/WEB-INF/lib/mysql-connector-j-8.3.0.jar 해당드라이버 lib 폴더에 넣고 실행하였는데No value specified for parameter 2 에러가 발생합니다. =====at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:130)at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1077)at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1003)at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1312)at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:988)at user.UserDAO.join(UserDAO.java:17) ==== package user; import java.sql.Connection;import java.sql.PreparedStatement; import util.DatabaseUtil; public class UserDAO { public int join(String userID, String userPassword) {String SQL = "INSERT INTO USER VALUES (?,?)";try {Connection conn = DatabaseUtil.getConnection();PreparedStatement pstmt = conn.prepareStatement(SQL); // SQL에 ID와 PW를 넣어 줄 수 있도록 Settingpstmt.setString(1, userID);pstmt.setString(1, userPassword);return pstmt.executeUpdate(); // INSERT 구문을 실행해서 나온 결과를 반환하도록 해준다.// 반환값 : INSERT된 데이터 갯수} catch(Exception e){e.printStackTrace();}return -1;} }
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
Entity에 ElementCollection이 두 개 있는 경우
안녕하세요! 하나의 엔티티에 @ElementCollection 붙은 필드가 두 개 있는 경우를 시험해 보고 있습니다. @EntityGraph(attributePaths = {"a", "b"}) 이런 식으로 해서 테스트를 돌리면 org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags 과 같은 오류가 나는데 ElementCollection 두 개가 있는 경우는 하나의 쿼리로 모두 가져오는 방법은 없나요?