묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 프레임워크 핵심 기술
Validator의 BeanPropertyBind가 0을 리턴합니다...
Validator를 @Autowired로 받아서 사용하려고 하는데 이런 에러가 발생합니다... 실행하여 Validator의 클래스를 확인해보면 class org.springframework.boot.autoconfigure.validation.ValidatorAdapter 와 같이 나옵니다.백기선 선생님의 강의에서는 LocalValidatorFactoryBean으로 보이는데 어떻게 해야 하나요?
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
commit 궁금합니다
docker commit 이 지금 실행중인 컨테이너를 이미지로 올리는건데 일종의 백업? 이라고 생각하는 개념에서 질문합니다 ! 같은 의미에서 현재 a 라는 이미지를 컨테이너로 구동중인데 a 라는 이미지의 tag 를 변경해서 새로운 a:v2 라는 이미지를 생성한다면 commit 으로 이미지 생성하는것과 어떤 차이가 있나요 ? commit 은 현재 시점에서 컨테이너의 변경사항을 포함해 이미지로 만드는거고 tag 는 단순히 최초에 받았던 a 라는 이미지에 대한 tag 만 변경해주는건가요 ? ( a 라는 이미지 변경사항은 포함되지 않고 )
-
미해결CSS Flex와 Grid 제대로 익히기
page에 관해서
div.page 전체를 감싼 다음 order로 나누셨는데 div.page를 없애고 secondary-a primary secondary-b 를 div.page로 감싼다음 @media(min-width:1024px){.page{display:flex }} 해도 상관없지 않나요?
-
미해결함수형 프로그래밍과 JavaScript ES6+
이터레이터를 배열에 담는 의미?
병렬 평가를 할 때 이터러블/이터레이터를 전개 연산자로 풀어서 배열 안에 담아 reduce함수에 전달해주던데요, 이렇게 했을 때 무슨 원리로 병렬 평가가 되는 건지 모르겠습니다 ㅠㅠ 배열도 결국 next()로 순회하는 이터레이터의 한 종류 아닌가요...? 저렇게 했을 때 Promise.all을 해주는 효과가 나나요?
-
미해결홍정모의 따라하며 배우는 C언어
for(double, test, update) 예제 질문드립니다.
#include <stdio.h> int main() { for (double d = 100.0; d < 300.0; d * 2.0) { printf("%f", d); printf("\n"); } return 0; } 예제에서 업데이트 값만 바꾼채 실행해본것인데요 예제도 같은 반응이 나오길래 질문드립니다. 이 경우엔 double 를 100.0으로 초기화를 하고 테스트 이후 아래로 들어가고 print를 해주고 그다음 올라와서 업데이트를 해주면 기본값인 100.0 * 2.0인 200.0이 되고 그 다음 테스트 이후 프린트로 다시 내려가고~ 하는 구조면 분명 100.0 이랑 200.0 출력하고 멈출거라고 생각했는데 100.0 무한루프가 되는데 무슨 문제가 있을까요?
-
미해결CSS Flex와 Grid 제대로 익히기
figure
시각장애인들을 위해서 img의 alt 속성에 img를 주는것으로 알고있습니다. figure안에 img 태그를 넣은 이유가 시각장애인을 위한 이유라고 생각해도 괜찮을까요? 만약 img 태그를 넣지 않고 figure태그만 있어도 시각장애인분들이 image인지 알 수 있나요?
-
미해결[OpenCV] 파이썬 딥러닝 영상처리 프로젝트 - 손흥민을 찾아라!
face_recognition,dlib 설치 오류
환경은 window 입니다. cmake 설치 완료했고, dlib은 conda -c conda-forge dlib 으로 설치가 되었는데 face_recognition 설치가 안됩니다.. python 버전은 3.7.4 입니다. ollecting face_recognition Using cached https://files.pythonhosted.org/packages/1e/95/f6c9330f54ab07bfa032bf3715c12455a381083125d8880c43cbe76bb3d0/face_recognition-1.3.0-py2.py3-none-any.whl Requirement already satisfied: Click>=6.0 in c:\users\wjdgn\anaconda3\lib\site-packages (from face_recognition) (7.0) Requirement already satisfied: Pillow in c:\users\wjdgn\anaconda3\lib\site-packages (from face_recognition) (6.2.0) Collecting face-recognition-models>=0.3.0 (from face_recognition) Using cached https://files.pythonhosted.org/packages/cf/3b/4fd8c534f6c0d1b80ce0973d01331525538045084c73c153ee6df20224cf/face_recognition_models-0.3.0.tar.gz Collecting dlib>=19.7 (from face_recognition) Using cached https://files.pythonhosted.org/packages/63/92/05c3b98636661cb80d190a5a777dd94effcc14c0f6893222e5ca81e74fbc/dlib-19.19.0.tar.gz Requirement already satisfied: numpy in c:\users\wjdgn\anaconda3\lib\site-packages (from face_recognition) (1.16.5) Building wheels for collected packages: face-recognition-models, dlib Building wheel for face-recognition-models (setup.py) ... done Created wheel for face-recognition-models: filename=face_recognition_models-0.3.0-py2.py3-none-any.whl size=100566178 sha256=08a3cfdb9127e3778612825b5579887a445527744866581eb6bdf83a8ca399c2 Stored in directory: C:\Users\wjdgn\AppData\Local\pip\Cache\wheels\d2\99\18\59c6c8f01e39810415c0e63f5bede7d83dfb0ffc039865465f Building wheel for dlib (setup.py) ... error ERROR: Command errored out with exit status 1: command: 'C:\Users\wjdgn\Anaconda3\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\wjdgn\\AppData\\Local\\Temp\\pip-install-s56jw3ha\\dlib\\setup.py'"'"'; __file__='"'"'C:\\Users\\wjdgn\\AppData\\Local\\Temp\\pip-install-s56jw3ha\\dlib\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\wjdgn\AppData\Local\Temp\pip-wheel-46xnzren' --python-tag cp37 cwd: C:\Users\wjdgn\AppData\Local\Temp\pip-install-s56jw3ha\dlib\ Complete output (55 lines): running bdist_wheel running build running build_py package init file 'dlib\__init__.py' not found (or not a regular file) running build_ext Building extension for Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] Invoking CMake setup: 'cmake C:\Users\wjdgn\AppData\Local\Temp\pip-install-s56jw3ha\dlib\tools\python -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\wjdgn\AppData\Local\Temp\pip-install-s56jw3ha\dlib\build\lib.win-amd64-3.7 -DPYTHON_EXECUTABLE=C:\Users\wjdgn\Anaconda3\python.exe -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=C:\Users\wjdgn\AppData\Local\Temp\pip-install-s56jw3ha\dlib\build\lib.win-amd64-3.7 -A x64' -- Building for: NMake Makefiles CMake Error at CMakeLists.txt:3 (project): Generator NMake Makefiles does not support platform specification, but platform x64 was specified. CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage -- Configuring incomplete, errors occurred! See also "C:/Users/wjdgn/AppData/Local/Temp/pip-install-s56jw3ha/dlib/build/temp.win-amd64-3.7/Release/CMakeFiles/CMakeOutput.log". Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Users\wjdgn\AppData\Local\Temp\pip-install-s56jw3ha\dlib\setup.py", line 261, in <module> 'Topic :: Software Development', File "C:\Users\wjdgn\Anaconda3\lib\site-packages\setuptools\__init__.py", line 145, in setup return distutils.core.setup(**attrs) File "C:\Users\wjdgn\Anaconda3\lib\distutils\core.py", line 148, in setup dist.run_commands() File "C:\Users\wjdgn\Anaconda3\lib\distutils\dist.py", line 966, in run_commands self.run_command(cmd) File "C:\Users\wjdgn\Anaconda3\lib\distutils\dist.py", line 985, in run_command cmd_obj.run() File "C:\Users\wjdgn\Anaconda3\lib\site-packages\wheel\bdist_wheel.py", line 192, in run self.run_command('build') File "C:\Users\wjdgn\Anaconda3\lib\distutils\cmd.py", line 313, in run_command self.distribution.run_command(command) File "C:\Users\wjdgn\Anaconda3\lib\distutils\dist.py", line 985, in run_command cmd_obj.run() File "C:\Users\wjdgn\Anaconda3\lib\distutils\command\build.py", line 135, in run self.run_command(cmd_name) File "C:\Users\wjdgn\Anaconda3\lib\distutils\cmd.py", line 313, in run_command self.distribution.run_command(command) File "C:\Users\wjdgn\Anaconda3\lib\distutils\dist.py", line 985, in run_command cmd_obj.run() File "C:\Users\wjdgn\AppData\Local\Temp\pip-install-s56jw3ha\dlib\setup.py", line 135, in run self.build_extension(ext) File "C:\Users\wjdgn\AppData\Local\Temp\pip-install-s56jw3ha\dlib\setup.py", line 172, in build_extension subprocess.check_call(cmake_setup, cwd=build_folder) File "C:\Users\wjdgn\Anaconda3\lib\subprocess.py", line 347, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['cmake', 'C:\\Users\\wjdgn\\AppData\\Local\\Temp\\pip-install-s56jw3ha\\dlib\\tools\\python', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\\Users\\wjdgn\\AppData\\Local\\Temp\\pip-install-s56jw3ha\\dlib\\build\\lib.win-amd64-3.7', '-DPYTHON_EXECUTABLE=C:\\Users\\wjdgn\\Anaconda3\\python.exe', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=C:\\Users\\wjdgn\\AppData\\Local\\Temp\\pip-install-s56jw3ha\\dlib\\build\\lib.win-amd64-3.7', '-A', 'x64']' returned non-zero exit status 1. ---------------------------------------- ERROR: Failed building wheel for dlib Running setup.py clean for dlib Successfully built face-recognition-models Failed to build dlib Installing collected packages: face-recognition-models, dlib, face-recognition Running setup.py install for dlib ... error ERROR: Command errored out with exit status 1: command: 'C:\Users\wjdgn\Anaconda3\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\wjdgn\\AppData\\Local\\Temp\\pip-install-s56jw3ha\\dlib\\setup.py'"'"'; __file__='"'"'C:\\Users\\wjdgn\\AppData\\Local\\Temp\\pip-install-s56jw3ha\\dlib\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\wjdgn\AppData\Local\Temp\pip-record-sx2ht87z\install-record.txt' --single-version-externally-managed --compile cwd: C:\Users\wjdgn\AppData\Local\Temp\pip-install-s56jw3ha\dlib\ Complete output (57 lines): running install running build running build_py package init file 'dlib\__init__.py' not found (or not a regular file) running build_ext Building extension for Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] Invoking CMake setup: 'cmake C:\Users\wjdgn\AppData\Local\Temp\pip-install-s56jw3ha\dlib\tools\python -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\wjdgn\AppData\Local\Temp\pip-install-s56jw3ha\dlib\build\lib.win-amd64-3.7 -DPYTHON_EXECUTABLE=C:\Users\wjdgn\Anaconda3\python.exe -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=C:\Users\wjdgn\AppData\Local\Temp\pip-install-s56jw3ha\dlib\build\lib.win-amd64-3.7 -A x64' -- Building for: NMake Makefiles CMake Error at CMakeLists.txt:3 (project): Generator NMake Makefiles does not support platform specification, but platform x64 was specified. CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage -- Configuring incomplete, errors occurred! See also "C:/Users/wjdgn/AppData/Local/Temp/pip-install-s56jw3ha/dlib/build/temp.win-amd64-3.7/Release/CMakeFiles/CMakeOutput.log". Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Users\wjdgn\AppData\Local\Temp\pip-install-s56jw3ha\dlib\setup.py", line 261, in <module> 'Topic :: Software Development', File "C:\Users\wjdgn\Anaconda3\lib\site-packages\setuptools\__init__.py", line 145, in setup return distutils.core.setup(**attrs) File "C:\Users\wjdgn\Anaconda3\lib\distutils\core.py", line 148, in setup dist.run_commands() File "C:\Users\wjdgn\Anaconda3\lib\distutils\dist.py", line 966, in run_commands self.run_command(cmd) File "C:\Users\wjdgn\Anaconda3\lib\distutils\dist.py", line 985, in run_command cmd_obj.run() File "C:\Users\wjdgn\Anaconda3\lib\site-packages\setuptools\command\install.py", line 61, in run return orig.install.run(self) File "C:\Users\wjdgn\Anaconda3\lib\distutils\command\install.py", line 545, in run self.run_command('build') File "C:\Users\wjdgn\Anaconda3\lib\distutils\cmd.py", line 313, in run_command self.distribution.run_command(command) File "C:\Users\wjdgn\Anaconda3\lib\distutils\dist.py", line 985, in run_command cmd_obj.run() File "C:\Users\wjdgn\Anaconda3\lib\distutils\command\build.py", line 135, in run self.run_command(cmd_name) File "C:\Users\wjdgn\Anaconda3\lib\distutils\cmd.py", line 313, in run_command self.distribution.run_command(command) File "C:\Users\wjdgn\Anaconda3\lib\distutils\dist.py", line 985, in run_command cmd_obj.run() File "C:\Users\wjdgn\AppData\Local\Temp\pip-install-s56jw3ha\dlib\setup.py", line 135, in run self.build_extension(ext) File "C:\Users\wjdgn\AppData\Local\Temp\pip-install-s56jw3ha\dlib\setup.py", line 172, in build_extension subprocess.check_call(cmake_setup, cwd=build_folder) File "C:\Users\wjdgn\Anaconda3\lib\subprocess.py", line 347, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['cmake', 'C:\\Users\\wjdgn\\AppData\\Local\\Temp\\pip-install-s56jw3ha\\dlib\\tools\\python', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\\Users\\wjdgn\\AppData\\Local\\Temp\\pip-install-s56jw3ha\\dlib\\build\\lib.win-amd64-3.7', '-DPYTHON_EXECUTABLE=C:\\Users\\wjdgn\\Anaconda3\\python.exe', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=C:\\Users\\wjdgn\\AppData\\Local\\Temp\\pip-install-s56jw3ha\\dlib\\build\\lib.win-amd64-3.7', '-A', 'x64']' returned non-zero exit status 1. ---------------------------------------- ERROR: Command errored out with exit status 1: 'C:\Users\wjdgn\Anaconda3\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\wjdgn\\AppData\\Local\\Temp\\pip-install-s56jw3ha\\dlib\\setup.py'"'"'; __file__='"'"'C:\\Users\\wjdgn\\AppData\\Local\\Temp\\pip-install-s56jw3ha\\dlib\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\wjdgn\AppData\Local\Temp\pip-record-sx2ht87z\install-record.txt' --single-version-externally-managed --compile Check the logs for full command output.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA LocalDateTime 형 변수와 Mysql datetiem 형 컬럼 매핑시 TIMEZONE 이슈
안녕하세요 선생님 JPA 프로젝트를 진행하면서 중간 중간 다시 좋은 강의들 복습하며 공부하고 있습니다.ㅎㅎ 이번 질문은 먼가 기본편 쪽에 맞을것 같아 올리게 되었습니다. 현재 프로젝트에 상황은 다음과 같습니다. -LocalDateTime형 변수는 mysql datetime형 컬럼과 매핑 되어있습니다. -mysql 서버의 timezone global 세팅은 system으로 현재 Asia/Seoul되어있습니다. -jpa mysql 연결시 datasource url 과 jpa.properties.hibernate.jdbc.time_zone 설정이 되어있습니다. 이때 기본 GET all 를 해오면 디비에 저장되어있는 값의 +9 해서 날짜가 나옵니다. 여기서 궁금한 사항은 일단 jpa 관련 timezone 설정을 모두 Asia/Seoul하면 정상값으로 보입니다. 하지만 mysql의 컬럼 타입은 timestamp가 아닌datetime 인데 이는 timezone과 무관해야 하는것 아닌가요? jdbc를 사용하는 Datagrip으로는 serverTimeZone setting을 바꾸어도 항상같은 값을 보입니다. MYSQL 에서 SET TIMEZONE 으로 바꿔도 WORKBENCH와 같은 툴로 사용해서 볼때는 똑같은 값이 보입니다. 이게 jpa 에서는 항상 localDateTime형으로 변환시 timezone 세팅에 따라 변화하게 되는건가요?
-
미해결스프링 부트 개념과 활용
요청에 대한 질문이 있습니다.
클라이언트가 보낸 요청에 관한 것 인데요 @PutMapping 이나 (클라이언트의 요청이 put일경우) 컨텐츠타입헤더가 Json 이거나 이러한 클라이언트의 '요청'은 개발자가 작성 할 때 어떻게 하나요...? 예를 들어 put의 경우 put이라는 요청이 들어 올 때 수정을 한다고 치면 개발 할 때 클라이언트가 이 버튼을 누르면 put요청이 들어온다 혹은 클라이언트의 요청이 JSON 이라는 것을 (클라이언트는 버튼을 누른다던가, url을 입력한다던가 식으로 요청을 하는데 이러한 버튼을 누르면 JSON 요청이야 ! 라는 것) 어떻게 하나요..? 너무 두리뭉실한 질문 죄송합니다 선생님 ㅠ
-
화이트해커가 되기 위한 8가지 웹 해킹 기술
설정만 몇일째 ㅋㅋ 질문할게요
삭제된 글입니다
-
미해결엑셀 기초에서 실무까지
강의 샘플화일 문의
강좌 너무나 감사히 따라가고 있습니다. 그런데 강좌 시청전에 진행하시는 샘플화일이 있다면 다운받아서 준비하고 따라가고 싶은데요. 지금까지 는 간단하 표라서 수업전에 만들어 놓고 했는데 점점 많아지는거 같아서요. 혹 샘플화일이 있나해서요
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
텔레그램 챗봇 만들기
텔레그램 챗봇 만들기 첫번째 강의 따라서 작성해봤는데 에러코드 409가 떠서 작동하지 않아요 ㅠ 어떤 방식으로 에러를 해결해야하는지 모르겠습니다.
-
미해결실전! Querydsl
Querdsl에서의 Window function
안녕하세요~ 항상 좋은 강의 감사합니다. 고민되는 상황이 있어 질문드립니다.. 제가 querdsl로 window function을 사용해서 특정 그룹의 가장 최신값을 가져오려 했습니다.(가령 같은 기간에 대한 정산 수행 결과 중 가장 최신(create_date가 가장 큰..)의 record) 근데 JPQL 자체가 from절 서브쿼리를 지원하지않아서(인터넷에서 검색해보니 sql window function을 사용할때 from절 서브쿼리를 많이 사용하더라구요.) java에서 처리할까 했는데, 결과를 Page 형태로 반환해야해서 쿼리단에서 끝내야 될 것 같더라구요. 혹시 이런 상황에서는 어떻게 해야 하는지 조언을 들을 수 있을까요?
-
미해결엑셀 기초에서 실무까지
음수표시
음수표시 에서 사용자지정 수식코드를 #,##0;[빨강]-#,##0;"*";@보류 기입하고 난후 확인 누르고 결과를 보면 보류부분에 문자가 더블로 기입되어 있습니다. 그래서 사용자지정창을 열고 확인하니 #,##0;[빨강]-#,##0;"*";@"보""류" 로 되어 있어서 다시 수정을하고 학인해 보아도 결과물은 똑같이 보뷰보류 이렇게요. 외 이럴가요.? 궁금합니다.
-
미해결그로스해킹 - 데이터와 실험을 통해 성장하는 서비스를 만드는 방법
구글 옵티마이즈를 이용한 웹 서비스의 A/B 테스트에서 user property 설정하는 방법에 대해 여쭤보고 싶습니다.
안녕하세요, 인프런에서 그로스해킹 강의를 정말 유익하게 수강하고, 페이스북 메시지로도 여쭤보았는데 못 보실 수도 있을 것 같아 여기에 다시 질문을 남깁니다^^! 먼저 좋은 강의를 올려주셔서 정말 감사합니다. <질문 내용> 저는 현재 웹 기반으로 전문가와 클라이언트를 연결시켜주는 서비스를 구성하고 있는데요, 구글 애널리틱스와 옵티마이즈를 이용하여 홈 화면에 대해 A/B테스트를 진행하고 있습니다. 사용자들은 전문가 또는 클라이언트 두 가지 방식으로 회원가입을 할 수 있는데요, A또는 B 시안을 접한 사용자가 전문가인지 아니면 클라이언트인지 보기 위해 User Property를 달고 싶은데, 앱인 경우에는 어떻게 하는지 잘 나와있는데 웹의 경우에는 찾아봐도 잘 나오지 않아서 이렇게 질문을 드리게 되었습니다. 이 User Property 를 달려고 하는 이유는 저희 시안에서 전환되는 사용자들 중에 클라이언트 세그먼트의 목표 달성률만 보고 싶기 떄문입니다. 감사합니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
이미지 피라미드, 피처 피라미드란?
안녕하세요. 강의 잘 듣고 있습니다. Sliding Window 방식 페이지 설명하시면서, 이미지 피라미드와 피처 피라미드를 언급하셨는데 상세 내용이 궁금하여 질문 드립니다. 어떠한 내용인지요? 그리고 앵커박스의 경우 슬라이딩을 한번 할때 다양한 윈도우를 겹쳐서 이동시킴으로써 비교적 짧은 시간 내 다양한 형태를 검출한다 라는 개념이 맞는 건지도 궁금합니다.
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
이해 못 하겠어요
제가 이상한건가요? 크롤링 만든 적 있는데 지금은 이해가 안 돼요
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기
페이지 새로고침에 대해 질문 드립니다
강사님 안녕하세요 ~ 저는 업로드 페이지를 따로 만들지 않고 Modal 창을 이용해서 구현했는데 업로드 후에 메인 페이지를 새로고침 하고싶은데 props.history.push('/'); 를 했을 때 이미 '/' 경로에 있으면 새로고침이 안되는 것 같아요,, 어떻게 새로고침을 구현할 수 있을까요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
Whitelist a connection IP address 필수입니다!!
강사님의 화면에는 CONNECT후 Whitelist a connection IP address 이게 저절로 되어 있지만 새로 생성한 분들은 화이트리스트에 추가가 안되어 있으니 꼭 본인의 IP를 추가한다음 진행해야 오류가 나지 않아요. 또한 비밀번호에 @(특수문자)가 있을경우에도 에러가 납니다 이 경우 @를 %40으로 변경해서 입력해주세
-
미해결웹 게임을 만들며 배우는 자바스크립트
자스스톤 응용
초보자라 질문할 점이 참 많습니다. html파일은 깃허브에 있는 최종버전을 그대로 쓰는 상황입니다. js 파일은 카드 구성은 일단 했으나 구현 부분에 있어서는 주석으로 달아놓기는 했습니다만 function Card() 함수의 if문 부분을 어떻게 수정해야 하는지를 모르겠습니다. 일단 이 결과를 실행해보니 이런 결과가 나옵니다. 어떻게 수정해야 하나요? function Gcard(name, att, hp, cost) { this.name = name; this.att = att; this.hp = hp; this.cost = cost; } var 알파 = new Card('알파', 8, 35, 1); var 베타 = new Card('베타', 900, 8570, 6); var 감마 = new Card('감마', 5, 30, 1); var 오메가 = new Card('오메가', 450, 7500, 5); var 제타 = new Card('제타', 15, 70, 2); var 델타 = new Card('델타', 740, 6850, 5); var 시그마 = new Card('시그마', 6, 60, 1); var 람다 = new Card('람다', 320, 3140, 5); var 라디안 = new Card('라디안', 10, 170, 2); var 루트 = new Card('루트', 11, 60, 2); var 엡실론 = new Card('엡실론', 880, 9120, 6); var 파이 = new Card('파이', 7, 40, 1); var 로 = new Card('로', 6, 45, 1); var 타우 = new Card('타우', 400, 3065, 5); var 오미크론 = new Card('오미크론', 50, 180, 3); var 카파 = new Card('카파', 40, 220, 3); var 뮤 = new Card('뮤', 9, 85, 1); var 뉴 = new Card('뉴', 100, 550, 3); var 카이 = new Card('카이', 1500, 25620, 10); var 프시 = new Card('프시', 1620, 21000, 10); var 상대 = { 영웅: document.getElementById('rival-hero'), 덱: document.getElementById('rival-deck'), 필드: document.getElementById('rival-cards'), 코스트: document.getElementById('rival-cost'), 덱data: [], 영웅data: [], 필드data: [], 선택카드: null, 선택카드data: null, }; var 나 = { 영웅: document.getElementById('my-hero'), 덱: document.getElementById('my-deck'), 필드: document.getElementById('my-cards'), 코스트: document.getElementById('my-cost'), 덱data: [], 영웅data: [], 필드data: [], 선택카드: null, 선택카드data: null, }; 상대.덱data.push(알파) 상대.덱data.push(시그마) 상대.덱data.push(뮤) 상대.덱data.push(뉴) 상대.덱data.push(로) 상대.덱data.push(파이) 상대.덱data.push(제타) 상대.덱data.push(오메가) 상대.덱data.push(엡실론) 상대.덱data.push(프시) 나.덱data.push(델타) 나.덱data.push(타우) 나.덱data.push(람다) 나.덱data.push(라디안) 나.덱data.push(감마) 나.덱data.push(오미크론) 나.덱data.push(카파) 나.덱data.push(루트) 나.덱data.push(베타) 나.덱data.push(카이) var 턴버튼 = document.getElementById('turn-btn'); var 턴 = true; // true면 내턴, false면 니턴 function 덱에서필드로(데이터, 내턴) { var 객체 = 내턴 ? 나 : 상대; // 조건 ? 참 : 거짓; var 현재코스트 = Number(객체.코스트.textContent); if (현재코스트 < 데이터.cost) { return 'end'; } var idx = 객체.덱data.indexOf(데이터); 객체.덱data.splice(idx, 1); 객체.필드data.push(데이터); 객체.덱.innerHTML = ''; 필드다시그리기(객체); 덱다시그리기(객체); 데이터.field = true; 객체.코스트.textContent = 현재코스트 - 데이터.cost; } function 필드다시그리기(객체) { 객체.필드.innerHTML = ''; 객체.필드data.forEach(function(data) { 카드돔연결(data, 객체.필드); }); } function 덱다시그리기(객체) { 객체.덱.innerHTML = ''; 객체.덱data.forEach(function(data) { 카드돔연결(data, 객체.덱); }); 데이터.field = true; 객체.코스트.textContent = 현재코스트 - 데이터.cost; } function 영웅다시그리기(객체) { 객체.영웅.innerHTML = ''; 카드돔연결(객체.영웅data, 객체.영웅, true); } function 화면다시그리기(내화면) { var 객체 = 내화면 ? 나 : 상대; // 조건 ? 참 : 거짓; 필드다시그리기(객체); 덱다시그리기(객체); 영웅다시그리기(객체); } function 턴액션수행(카드, 데이터, 내턴) { // 턴이 끝난 카드면 아무일도 일어나지 않음 var 아군 = 내턴 ? 나 : 상대; var 적군 = 내턴 ? 상대 : 나; if (카드.classList.contains('card-turnover')) { return; } // 적군 카드면서 아군 카드가 선택되어 있고, 또 그게 턴이 끝난 카드가 아니면 공격 var 적군카드 = 내턴 ? !데이터.mine : 데이터.mine; if (적군카드 && 아군.선택카드) { 데이터.hp = 데이터.hp - 아군.선택카드data.att; if (데이터.hp <= 0) { // 카드가 죽었을 때 var 인덱스 = 적군.필드data.indexOf(데이터); if (인덱스 > -1) { // 쫄병이 죽었을 때 적군.필드data.splice(인덱스, 1); } else { // 영웅이 죽었을 때 alert('승리하셨습니다!'); 초기세팅(); } } 화면다시그리기(!내턴); 아군.선택카드.classList.remove('card-selected'); 아군.선택카드.classList.add('card-turnover'); 아군.선택카드 = null; 아군.선택카드data = null; return; } else if (적군카드) { // 상대 카드면 return; } if (데이터.field) { // 카드가 필드에 있으면 카드.parentNode.querySelectorAll('.card').forEach(function(card) { card.classList.remove('card-selected'); }); 카드.classList.add('card-selected'); 아군.선택카드 = 카드; 아군.선택카드data = 데이터; } else { // 덱이 있으면 if (덱에서필드로(데이터, 내턴) !== 'end') { 내턴 ? 내덱생성(1) : 상대덱생성(1); } } } function 카드돔연결(데이터, 돔, 영웅) { var 카드 = document.querySelector('.card-hidden .card').cloneNode(true); 카드.querySelector('.card-cost').textContent = 데이터.cost; 카드.querySelector('.card-att').textContent = 데이터.att; 카드.querySelector('.card-hp').textContent = 데이터.hp; if (영웅) { 카드.querySelector('.card-cost').style.display = 'none'; var 이름 = document.createElement('div'); 이름.textContent = '영웅'; 카드.appendChild(이름) } 카드.addEventListener('click', function() { if (턴) { // 내 턴이면 if (!데이터.mine || 데이터.field) { // 상대 카드거나 카드가 필드에 있으면 return; } if (덱에서필드로(데이터, true) !== 'end') { 내덱생성(1); } } else { // 상대 턴인데 if (데이터.mine || 데이터.field) { // 내 카드거나 카드가 필드에 있으면 return; } if (덱에서필드로(데이터, false) !== 'end') { 상대덱생성(1); } } 턴액션수행(카드, 데이터, 턴); }); 돔.appendChild(카드); } function 상대덱생성(개수) { for (var i = 0; i < 개수; i++) { 상대.덱data.push(카드공장()); } 상대.덱.innerHTML = ''; 상대.덱data.forEach(function(data) { 카드돔연결(data, 상대.덱); }); 덱다시그리기(상대); } function 내덱생성(개수) { for (var i = 0; i < 개수; i++) { 나.덱data.push(카드공장(false, true)); } 나.덱.innerText = ''; 나.덱data.forEach(function(data) { 카드돔연결(data, 나.덱); }); 덱다시그리기(나); } function 내영웅생성() { 나.영웅data = 카드공장(true, true); 카드돔연결(나.영웅data, 나.영웅, true); } function 상대영웅생성() { 상대.영웅data = 카드공장(true); 카드돔연결(상대.영웅data, 상대.영웅, true); } function Card(영웅, 내카드) { if (영웅) { this.att = Math.ceil(Math.random()) + 4; this.hp = Math.ceil(Math.random()) + 9999; //영웅영역 - 값 1개만 출력되야 함(실행시 10개 나옴)-공격력 5 체력 10000의 고정값 this.hero = true; this.field = true; } else { this.att = Math.ceil(Math.random() * 5); this.hp = Math.ceil(Math.random() * 5); //카드영역- 각 팀당 미리 셋팅 된 10개의 고유 카드 중 5개 랜덤으로 뽑히게 해야함 this.cost = Math.floor((this.att + this.hp) / 2); } if (내카드) { this.mine = true; } } function 카드공장(영웅, 내카드) { return new Card(영웅, 내카드); } function 초기세팅() { 상대덱생성(5); 내덱생성(5); 내영웅생성(); 상대영웅생성(); 화면다시그리기(true); // 상대화면 화면다시그리기(false); // 내화면 } 턴버튼.addEventListener('click', function() { 턴 = !턴; var 객체 = 턴 ? 나 : 상대; document.getElementById('rival').classList.toggle('turn'); document.getElementById('my').classList.toggle('turn'); 필드다시그리기(객체); 영웅다시그리기(객체); 턴 = !턴; // 턴을 넘기는 코드 if (턴) { 나.코스트.textContent = 10; } else { 상대.코스트.textContent = 10; } document.getElementById('rival').classList.toggle('turn'); document.getElementById('my').classList.toggle('turn'); }); 초기세팅();