묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Redux vs MobX (둘 다 배우자!)
리덕스 툴킷 과 saga질문
안녕하세요. 제로초님 빠른 답변 항상 감사드립니다. 툴킷과 saga 활용에 대해 질문 드리려고 합니다. 1. 요즘에 거의 툴킷만 실무에서 사용한다고 들었는데,빠르게 리덕스부분 익히고 노드버드로 넘어가려해서 툴킷과 mobx까지만 듣고 saga는 건너뛰어도 실제 업무 및 노드버드 듣는데 문제 없나요? 2. 노드버드는 툴킷을 사용하지 않는데, 노드버드에서 saga 부분을 듣지 않아도 그 부분을 쉽게 툴킷으로 변환가능한가요?
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
권한 요청드립니다.
인프런 아이디 : semomuri 인프런 이메일 : semomuri@gmail.com 깃헙 아이디 : semomuri@gmail.com 깃헙 Username : semomuri
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
프로젝트 열기
앞으로 프로젝트를 열 때마다 항상 build.gradle을 통해서 열면 되는 건가요? 그냥 프로젝트 폴더를 open 하는 것과는 어떤 차이가 있나요?
-
해결됨Flutter 앱 개발 기초
파이어베이스 Auth에러
import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'auth_service.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); // main 함수에서 async 사용하기 위함 await Firebase.initializeApp(); // firebase 앱 시작 runApp( MultiProvider( providers: [ ChangeNotifierProvider(create: (context) => AuthService()), ], child: const MyApp(), ), ); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: LoginPage(), ); } } /// 로그인 페이지 class LoginPage extends StatefulWidget { const LoginPage({Key? key}) : super(key: key); @override State<LoginPage> createState() => _LoginPageState(); } class _LoginPageState extends State<LoginPage> { TextEditingController emailController = TextEditingController(); TextEditingController passwordController = TextEditingController(); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("로그인")), body: SingleChildScrollView( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ /// 현재 유저 로그인 상태 Center( child: Text( "로그인해 주세요 🙂", style: TextStyle( fontSize: 24, ), ), ), SizedBox(height: 32), /// 이메일 TextField( controller: emailController, decoration: InputDecoration(hintText: "이메일"), ), /// 비밀번호 TextField( controller: passwordController, obscureText: false, // 비밀번호 안보이게 decoration: InputDecoration(hintText: "비밀번호"), ), SizedBox(height: 32), /// 로그인 버튼 ElevatedButton( child: Text("로그인", style: TextStyle(fontSize: 21)), onPressed: () { // 로그인 성공시 HomePage로 이동 Navigator.pushReplacement( context, MaterialPageRoute(builder: (_) => HomePage()), ); }, ), /// 회원가입 버튼 ElevatedButton( child: Text("회원가입", style: TextStyle(fontSize: 21)), onPressed: () { // 회원가입 print("sign up"); }, ), ], ), ), ); } } /// 홈페이지 class HomePage extends StatefulWidget { const HomePage({Key? key}) : super(key: key); @override State<HomePage> createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { TextEditingController jobController = TextEditingController(); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("버킷 리스트"), actions: [ TextButton( child: Text( "로그아웃", style: TextStyle( color: Colors.white, ), ), onPressed: () { print("sign out"); // 로그인 페이지로 이동 Navigator.pushReplacement( context, MaterialPageRoute(builder: (context) => LoginPage()), ); }, ), ], ), body: Column( children: [ /// 입력창 Padding( padding: const EdgeInsets.all(8), child: Row( children: [ /// 텍스트 입력창 Expanded( child: TextField( controller: jobController, decoration: InputDecoration( hintText: "하고 싶은 일을 입력해주세요.", ), ), ), /// 추가 버튼 ElevatedButton( child: Icon(Icons.add), onPressed: () { // create bucket if (jobController.text.isNotEmpty) { print("create bucket"); } }, ), ], ), ), Divider(height: 1), /// 버킷 리스트 Expanded( child: ListView.builder( itemCount: 5, itemBuilder: (context, index) { String job = "$index"; bool isDone = false; return ListTile( title: Text( job, style: TextStyle( fontSize: 24, color: isDone ? Colors.grey : Colors.black, decoration: isDone ? TextDecoration.lineThrough : TextDecoration.none, ), ), // 삭제 아이콘 버튼 trailing: IconButton( icon: Icon(CupertinoIcons.delete), onPressed: () { // 삭제 버튼 클릭시 }, ), onTap: () { // 아이템 클릭하여 isDone 업데이트 }, ); }, ), ), ], ), ); } }
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
오류 발생 후 지속적 alert 발생 방지를 위해 error 상태 초기화 코드 작성 후 오류 질문 드립니다.
안녕하세요 아래 리렌더링 시 지속적으로 alert발생으로 인해 error 후 초기화 코드를 작성을 했습니다. 하지만, 제가 상태를 바꿔주지 않은 속성도 바뀌는 현상이 있습니다. 코드는 아래와 같습니다. 스위치 문 내에서는 상태의 변경이 없으나, 리덕스 데브툴에서는 아래처럼 제가 설정하지 않은 loginLoading 값이 변경되어 나옵니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
쓰레드 풀 관련 질문 드립니다.
쓰레드 풀 관련해서 질문드립니다.강의 예제에서 HTTP 요청이 들어온경우 연결 이후 쓰레드 풀에서 쓰레드를 할당해주는 것 이라고 이해했는데. 문득 이런 궁금점이 들었습니다.요청이 들어왔을 때 '연결'을하고, 이에 대한 '응답' 을 하는 것도 쓰레드가 해줘야 하는 일이 아닌가요? 프로세스의 가장 작은 단위 이기 때문에 이런 '연결' 과 '응답'도 쓰레드가 결국해줘야 한다고 생각했습니다 그렇다면 이런 연결과 응답을 책임지는 쓰레드도 톰캣 내부에 있는 (쓰레드 풀)에 있는 쓰레드를 쓰는건가요..?
-
미해결Vue.js 시작하기 - Age of Vue.js
vue 설치후에 vue --version 실행 시 아래와 같은 메시지가 뜹니다.
https://www.inflearn.com/questions/409418 질문자분이랑 같은 이슈가 발생해서 질문글 올립니다. 선생님께서 답변해주신, cmder 에뮬레이터(http://cmder.net/) 다운 받으려고 해당 사이트 방문하니 expired 되었다고 뜹니다 ㅜㅜ 송태양님과 동일한 이슈 입니다. vue 설치까지는 되는데, vue --version으로 확인하려고 하면 cmd에서는 'vue'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. VS Code내에서는 아래처럼 메시지가 발생합니다. 혹시 또 다른 해결방법이 있을지 문의드립니다. 강의에서 쓰는 버전으로도 해보고, 최신 버전으로도 설치해봐도 동일하네요.ㅜㅜ 구글링 하면서 하루종일 이것저것 해봐도 해결이 되지 않아 여쭤봅니다. (시스템 변수(path)설정.. vue버전, node버전 확인 등등) 확인부탁드립니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Train시에 GT데이터들의 Annotation이 어떻게 각 피처맵을 거친 값들에 적용되는지 궁금합니다!
안녕하세요 무더위 건강 잘 챙기시길 바랍니다. 저는 직접 깃허브에 있는 코드로 구현 하고 있는 중입니다만 512*512를 인풋으로 넣어서 Neck까지 통과한 결과 P3, P4, P5, P6, P7이 각각 (1, 128, 128, 64) (1, 64, 64, 64) (1, 32, 32, 64) (1, 16, 16, 64) (1, 8, 8, 64)로 나왔고 각 셀에 9개 앵커박스를 할당해 boxnet을 통과시켜 concat하면 128*128*9 +64*64*9 +32*32*9 + 16*16*9 +8*8*9 = 196,416 (1, 196416, 4) 의 결과값을 얻었는데 서론이 너무 길었네요ㅜㅜ Train시에 원본 이미지와 그에 따른 Annotation 파일에 BBox의 x, y, w, h 좌표가 있을 때 이 데이터가 피처맵들에 맞는 데이터로 변환이 되어서(?) 위에서 구한 결과값과 어떻게 비교가 되어서 학습이 될지 궁금합니다. 직관적인 제 생각으로는 만약 원본 이미지에 (10,10) 좌표에 바운딩박스가 있다면 반으로 줄인 피처맵에는 대략적으로 (5,5) 좌표에 박스가 위치하지 않을까 하는데 맞는지 궁금합니다 혹시 https://github.com/xuannianz/EfficientDet/tree/030fb7e10ab69a297c7723120c2d1be856a852c0 여기 코드에 그런 내용이 있다면 언급해주시면 정말 감사하겠습니다! 바쁘실텐데 귀찮게 해드려서 죄송합니다만 답변 부탁드립니다
-
미해결지금 바로 React 시작하기
정답안에 압축파일안에 컴포넌트 이름이 잘못 된 것 같습니다.
정답 코드 압축풀고, 컴포넌트 열어서 StockCounter봤는데, 함수형 컴포넌트 명시가 GoodsCounter로 되어있고 export default 도 그렇게 되어있네용
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
하이버네이트에 관한 질문이있습니다!
하이버네이트가 JPA의 구현체라는 것은 알고있습니다. 그러면 강의 중에도 등장하는 영속성 컨텍스트, EntityManager 같은 개념들도 다 하이버네이트가 구현해놓은 것인지 궁금합니다! 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
검증 부분 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의 잘 듣고 있습니다. 검증부분에서 질문이 있는데 강의에서는 뷰 템플릿을 타임리프를 사용해서 검증을 처리하는데 만약 리액트를 사용하게되면 로직은 강의에서처럼 똑같이 구현은 하고 뷰에서 나타내는 방법만 달라지는건가요? BindingResult를 사용하는건 똑같은거죠?
-
미해결예제로 살펴보는 PyQt Tutorial
QT 디자이너 설치 오류
pip3 install pyqt5-tools 강의 보고 설치하려 했는데 에러가 뜹니다 어떤 문제 인가요?
-
해결됨코딩은 실전이다! - Git알못을 위한 깃린이코스(Git, Github 실습위주)
슬랙 초대 부탁드립니다!
kheee2010@naver.com입니다! 강의 잘 듣고 있습니다. 감사합니다!
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
넷플릭스까지 강의 완료했습니다~~
우선 넷플릭스 강의까지 보면서 굉장히 많이 배운거 같습니다 좋은강의 만들어주셔서 감사합니다~~ 이번에 깃헙에 올리고 배포를 해보았는데 만약에 넷플릭스를 제 스스로 더 추가를 해보고 다시 깃헙에 올릴려면 위의 과정을 똑같이 반복하면 되나요? 그리고 저 위의 5개의 과정에서 첫번째줄 : 코드에서의 변경점을 추적해서 add함 두번째줄 : 추적한것들을 로컬저장소(이게 맞나?) 여기에 커밋을함 세번째줄 : 브랜치가 뭔지는 모르겠지만 main이라는곳에 넣겠다는 의미 네번째줄 : 나의 깃헙주소에 추가할것이다라고 정의? 다섯번째줄 : 이제 로컬에 있는것들을 원격(나의 깃헙으로) 보낸다 이것이 맞나요? 그리고 깃허브페이지 모듈을 설치해서 배포를 했는데 여기서 배포란 말의 의미가 지금까지는 localhost에서만 해서 나만 볼수 있었는데 깃헙페이지라는 모듈을 통해 모든 사람이 내가 지정한 홈페이지 url로 들어오면 나의 페이지를 볼수 있다는 의미인가요?
-
해결됨홍정모의 따라하며 배우는 C++
7:45 부근 질문있습니다.
교수님께서 원하면 sorting을 중간까지만 할 수 있다고 하셨습니다. std::sort(my_arr, my_arr+3); 그래서 이런 식으로 하면 작동이 될 줄 알았는데 my_arr은 array 달리 변수명이 포인터가 아닌가봅니다. 어떡하면 중간까지만 sorting을 할 수 있나요?
-
미해결스프링 핵심 원리 - 기본편
OCP 위배?
조회빈이 2개 이상이면 구현클래스에 있는 autowired에 옵션을 주던지, @Qualifier 어노테이션 등을 추가하는데 이러면 ocp를 위배하는 것이 맞나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서버 실행 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] HelloServlet 생성 후 main 을 실행시키면, 다음과 같은 오류가 뜹니다. 2022-07-25 17:00:18.806 INFO 1932 --- [ main] hello.servlet.ServletApplication : Starting ServletApplication using Java 17.0.3 on jisang-eun-ui-MacBookAir.local with PID 1932 (/Users/sangeun/inflearn_Spring_Study/servlet/out/production/classes started by sangeun in /Users/sangeun/inflearn_Spring_Study/servlet) 2022-07-25 17:00:18.808 INFO 1932 --- [ main] hello.servlet.ServletApplication : No active profile set, falling back to 1 default profile: "default" 2022-07-25 17:00:18.977 WARN 1932 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet 2022-07-25 17:00:18.985 INFO 1932 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2022-07-25 17:00:18.993 ERROR 1932 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:196) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564) ~[spring-context-5.3.22.jar:5.3.22] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) ~[spring-boot-2.7.2.jar:2.7.2] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.2.jar:2.7.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-2.7.2.jar:2.7.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.7.2.jar:2.7.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-2.7.2.jar:2.7.2] at hello.servlet.ServletApplication.main(ServletApplication.java:12) ~[classes/:na] Caused by: java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet at org.springframework.boot.web.servlet.WebServletHandler.<init>(WebServletHandler.java:39) ~[spring-boot-2.7.2.jar:2.7.2] at org.springframework.boot.web.servlet.ServletComponentRegisteringPostProcessor.<clinit>(ServletComponentRegisteringPostProcessor.java:49) ~[spring-boot-2.7.2.jar:2.7.2] at org.springframework.boot.web.servlet.ServletComponentScanRegistrar$ServletComponentRegisteringPostProcessorBeanDefinition.lambda$getInstanceSupplier$0(ServletComponentScanRegistrar.java:94) ~[spring-boot-2.7.2.jar:2.7.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1249) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1191) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.22.jar:5.3.22] ... 13 common frames omitted Caused by: java.lang.ClassNotFoundException: javax.servlet.annotation.WebServlet at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[na:na] ... 20 common frames omitted 어떻게 해결할 수 있을까요? build.gradle 에 있는 provideRuntime 코드도 주석처리한 상태이고, 나머지 설정들도 수업 내용과 동일하게 한 상태입니다. 개발환경은 M1칩 맥북입니다. 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 cmd에서 java -jar 실행시 반응 X
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 윈도우에서 java -jar 했는데 아무 반응이 없습니다.다른 글에서도 무반응이라고 한것을 보고 gradlew.bat clean build?를 해보았는데도 해결이 안되었습니다.
-
미해결타입 파이썬! 올바른 class 사용법과 객체지향 프로그래밍
타입파이썬 문의
파이썬 typing모듈을 통해 def, variable, class에 설정가능한 타입을 지정이 가능한것으로 이해했습니다.mypy, pyright로는 정상적인 설정인지 확인이 가능하지만, 타입검증 명령없이 코드를 실행 할 경우 모두 문제없이 정상 동작되는걸로 보이는데, 별도 타입 검증 cli없이 코드내 타입을 검증하려면 별도 검증 로직을 넣어야하는건가요? 검증 로직 없이, python3 실행만으로 타입 검증에 대한 에러반환은 되지않는건지 문의드립니다. ex def type_chekcer(obj, typer) -> None: if isinstance(obj, typer): pass else: raise TypeError(f"Type Error : {typer}")
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
안녕하세요. POST,GET 방식 url설정 관련
안녕하세요. 64강 상품등록폼 강의이고, 상품등록 혹은 삭제 등 onclick 쪽 혹은 그 후의 동작들에대한 url설정을 하는 내용입니다. 1. 상품 등록시에는 GET방식으로 호출을 받아보고, 등록버튼을 누른 후에는 POST로 다르게 받아본다고 하시고 <form action="item.html" th:action="/basic/items/add" method="post"> th:action 뒷부분을 생략해도 된다고 하셨습니다. 왜냐하면 add에서 버튼을 누르고 나면 그 위치가 add이기 때문에 그대로 남아있을 거라고 해서요.. 근데 제가 지우지 않고 위와같은 코드로 프로그램을 돌려보니 화면이 안떠져서 f12를 눌러보니 500에러가 떠있더라구요. 위와같이 적는게 맞는건지(제가 500번 에러가 종종 뜨는것같아서 위 코드에 문제가 없으면 스킵해야할 것 같아요..) 한번 짚어주시면 감사하겠습니다. 2. 그리고 궁금한게 한가지 더 있는데 상품 취소를 누르고 http://localhost:8080/basic/items 로 되돌아 가는거나 그냥 items 상품목록을 누르고 http://localhost:8080/basic/items로 되돌아가는거나 둘다 GET방식인데 add창에 GET방식으로 들어가고 add버튼을 눌르고 저장시킨후 POST방식으로 서로 다르게 호출하는지가 조금 이해가 잘 되지 않습니다. 똑같이 생각하면 그냥 GET방식으로 호출해도 문제가 없을 것 같은데 해보면 오류가 나네요.. add전후의 다름을 표시해주기 위함인건지 같은주소->같은주소는 충돌이 일어나는건지, 궁금합니다..!