묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
네이버 지도 크롤링 iframe 창 클릭 관련해서 문의드립니다.
계속 고민하다가 답을 못찾아서 문의드립니다.우선 접근한 url은 iframe으로 올라오는 url에 대해 직접 접근하였습니다.문제는 스크롤 다운이 안되네요. 다른 예제들로는 잘 내려갔었는데..의심되는 원인으로는아래 id값을 통해 창이 제대로 클릭되지 않는 케이스입니다.browser.find_element(By.CSS_SELECTOR, "#_pcmap_list_scroll_container").click()스크롤 다운이 제대로 되지 않는 경우 browser.execute_script("window.scrollTo(0, document.documentElement.scrollHeight)") #이부분1번일 가능성을 높게보는데, 이것저것 해봤는데 정답을 못찾았네요. 혹시 원인 유추 가능할까요?전체 소스코드는 아래와 같습니다.감사합니다. from openpyxl import Workbook import requests from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Options import time # 브라우저 꺼짐 방지 chrome_options = Options() chrome_options.add_experimental_option("detach", True) url = "https://pcmap.place.naver.com/restaurant/list?query=성수동+파스타" service = Service(executable_path=ChromeDriverManager().install()) browser = webdriver.Chrome(service=service, options=chrome_options) browser.implicitly_wait(10) browser.maximize_window() browser.get(url) browser.find_element(By.CSS_SELECTOR, "#_pcmap_list_scroll_container").click() #이부분 before_h = browser.execute_script("return document.documentElement.scrollHeight") print(before_h) for i in range(0,10): browser.execute_script("window.scrollTo(0, document.documentElement.scrollHeight)") #이부분 time.sleep(1) after_h = browser.execute_script("return document.documentElement.scrollHeight") print(after_h) if after_h == before_h: break before_h = after_h restaurant_names = browser.find_elements(By.CSS_SELECTOR, ".place_bluelink.TYaxT") for restaurant_name in restaurant_names: print(restaurant_name.text)
-
해결됨[입문] Qt 6 프로그래밍 1편
날짜/시간이 다르게 표시됩니다.
강의에 있는 코드대로 작성해서 실행해 보았는데,edit 위젯의 날짜와 시간이 강의와 다르게 표시가 됩니다.참고로 10/3에 실행시킨 결과이고 label관련 위젯의 결과는 잘 나오는 것으로 보입니다.Qt version은 6.3.2를 사용하고 있습니다.
-
미해결홍정모의 따라하며 배우는 C언어
4.8 변화 지정자의 수식어들 (17분 17초 전후)
안녕하세요,printf("%hhd %hd %d", 257, 257, 257);여기서 콘솔창 결과가 1 257 257 로 나온 것에 대해 설명 중 1이 나온 이유에 대해 설명하신 내용이 정정되어야 하는 것 아닌지 해서 글 작성합니다.unsigned char 에서 가장 큰 값은 256이 아니고 255라서 257의 경우 오버플로우가 255 --> 0 (255+1) --> 1 (255+2) 로 발생해서 1로 표시되는 것으로 설명이 되어야 할 것 같은데 잘못 이해하였다면 말씀 부탁드립니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
hoc 완성. 하지만 ..
hoc작성 완료되어 권한 테스트까지 완료 되었습니다.근데 왜 꼭 클릭한 url 페이지를 들렀다가 권한 체크 한 뒤에 리턴되는 페이지로 넘어가는 걸까요..?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 db오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 내용과 같이 했는데 회원가입에서 db정보를 입력하면 org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "MEMBER" not found (this database is empty); SQL statement:select * from member where name = ? [42104-214]과 같은 오류가 발생합니다. 오타일 가능성이 높아서 계속 찾아보는데 도저히 못찾겠어서 질문 올립니다ㅜㅠㅠspring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driver-class-name=org.h2.Driver
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
선생님 이건 무슨 문제인지요...
package com.maroner.bts_lecture import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.ImageView import android.widget.Toast class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 1. 화면이 클릭되었다는 것을 알아야 합니다! (프로그램이) val image1 = findViewById<ImageView>(R.id.bts_image_1) image1.setOnClickListener { Toast.makeText(this, "1번 클릭 완료", Toast.LENGTH_LONG).show() // 2. 화면이 클릭되면, 다음화면으로 넘어가서, 사진을 크게 보여줌! val intent = Intent(this, bts1Activity::class.java) startActivity(intent) } 혹시 다른게 있나... 확인해 보려고 햇는데...다른건 없는것 같구요..이런식으로 뜹니다..
-
미해결스프링 시큐리티
successHandler가 작동하지 않습니다.
우선 너무 자주 질문을 드리는 것 같아 죄송합니다.SuccessHandler를 입력하고, 핸들러에 BreakPoint가 작동하지 않아 FailHandler와 denied를 만들어서 작동시켜 봤는데 SuccessHandler이외에는 정상 작동하는 것을 확인했습니다. 저에게는 코드에 이상한 부분이 보이지 않아 질문드리게 되었습니다. 전체 코드는 깃허브 Othkkartho/SpringSecurityLearn: 스프링 시큐리티 인프런 강의에 실전 프로젝트를 직접 해보는 프로젝트입니다. (github.com) 에 branches ch3.9,10,11입니다.
-
미해결스프링부트 시큐리티 & JWT 강의
안녕하세요 세션관련 질문드립니다
일단 강의 정말 잘듣고있습니다 감사합니다.지금 저는 jwt를 먼저 듣고 oauth2를 듣는 상황인데jwt를 구현하며 http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); 해당과 같은 설정을 하였는데22분 49초쯤에 설명해주시기를 세션안에 시큐리티 세션이 있고 그안에 Authentication객체가 들어가있다고 말씀해주셔서 세션을 쓰지않는다면 Authentication객체가 못들어가는게 아닐까라는 생각을 하고 있어서요 뭔가 혼란스러워 질문드려봅니다.그리고 설명에서 principaldetails를 부모라고 하셨는데 UserDeatils와 OAuth2User를 implemets받은 principaldetails가 자식아닌가요
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
일시적으로 트래픽이 몰리는 상황
안녕하세요. 좋은 강의 감사합니다.컨슈머 랙 단원에서 궁금한 점이 생겨 질문 드립니다.추석과 같은 이벤트로 인해 일시적으로 트래픽이 몰리는 상황에서 파티션과 컨슈머를 추가함으로써 처리량을 늘려 대응한다고 말씀해주신 부분에서 궁금증이 생겼습니다.파티션은 다시 줄일 수 없는 것으로 알고 있는데, 이러한 일시적 트래픽 증가를 대응하는 방안으로 적절한 지 여쭤보고 싶습니다.일시적으로 트래픽이 엄청 몰리는 상황에 무턱대고 파티션을 n배 증가시켰다가 추후 트래픽이 다시 원래대로 돌아왔을 때 남은 파티션이 낭비되는 것이 아닌가 생각이 들어서요. (컨슈머는 감소가 가능하다고 쳐도요! - 리밸런싱)혹은 다른 방안으로는 어떤게 있을 수 있을까요?
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
리턴값 에러 관련 질문입니다
선생님 여기까지 해봣는데 계속 고민해봐도 해결이 안되네요 ㅠㅠ 강의보고 다 확인해봣는데 틀린부분없는것 같은데....에러보면 리턴값이 없어서 안된다는데 화살표함수 저렇게 쓰면 자동리턴되는알고 아는데 잘모르겠네요 ㅠㅠ
-
미해결파이어베이스(Firebase)를 이용한 웹+안드로이드 메모 어플리케이션 만들기
2022.10월입니다. 8:30 firebase.json 이라는 파일이 없어요
firebase.json 이라는 파일이 생성되지 않았고,firebase serve 라는 명령어가 먹지 않습니다. 따라서 로컬호스트 주소를 알 수 가 없네요.. ㅎㅎ; 어떻게 해야하는지 알수 있을까요? 따라가는데 문제가 없는지.. 궁금하네요.. 일단 남기고 계속 진행해봅니다..
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
<ImageView> 부분을 처음 적었을때 작동하지 않습니다. 클릭해서 몰 활성화 했더니 되네요.
package com.maroner.bts_lecture import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.ImageView import android.widget.Toast class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 1. 화면이 클릭되었다는 것을 알아야 합니다! (프로그램이) val image1 = findViewById<ImageView>(R.id.bts_image_1) image1.setOnClickListener { Toast.makeText(this,"1번 클릭 완료", Toast.LENGTH_LONG).show() } // 2. 화면이 클릭되면, 다음화면으로 넘어가서, 사진을 크게 보여줌! } }val image1 = findViewByID<ImageView>(R.id.bts_image_1) 여기서 <ImageView>가 처음에는 활성화가 안되서실행 버튼을 누르면 어플이 열리지가 않았어요혹시나해서 빨간색으로 되어있길래 클릭해서뜨는걸 눌러줫더니 실행되네요. 왜 처음에 활성화가 안되었는지 알고 싶구요.왜 선생님 화면에서는 바로 활성화가 되는데, 저는 몰 눌러줘야 실행되게끔 되는지 이유를 알고 싶습니다.
-
해결됨호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
API 요청시 인증에 대한 질문
인사안녕하세요.일단 강의에 감사한 마음에 그랜절 바치고 질문 시작하겠습니다🙇🙇 호돌킹 강의 들으며 한명의 더 열심히 하는 수강민수가 되기 위해 요즘 공부중인 코틀린으로 토이 프로젝트를 해보며 본 강의를 듣고 있습니다. 덕분에 강의 한 강의 들을때마다 오래 걸리기는 하지만 많은 공부가 되고 있습니다. 궁금하진 않으시겠지만 혹시 질문에 답변을 주시는데 필요할 까 싶어 링크도 남겨 봅니다https://github.com/QUIDEV/quidev 질문질문 내용은 다름이 아니라.. 제가 프로젝트에서 스프링 시큐리티를 적용 해 두었는데요, 이번 강의부터 API 요청을 vue.js 에서 보내다 보니 인증부분이 발목을 잡네요.지금까지는 항상 코드를 짤 때 프론트 부분은 템플릿 엔진을 썼었고, vue.js 를 사용 하더라도 라이브러리처럼 사용했던터라 굉장히 당황스러운 상황입니다. 당장의 강의를 마치기 위해 시큐리티를 걷어내고, 작성자를 기록하기 위해 비즈니스 로직에도 파고들어간 부분을 걷어낼 수는 있겠지만 어차피 언젠가는 마주쳤을 문제라고 생각해서 이번기회에 물리쳐 보려고 합니다. Vue.js 와 스프링 시큐리티 검색어로 이것 저것 찾아 본 결과 대세가 JWT 로 굳어지는 것 같은데 JWT를 공부해서 적용 시키면 될까요? 아니면 호돌맨은 다른 방법을 권장하실까요? 귀찮으시겠지만 선생님의 고견을 여쭙습니다. 조공으로 미리 5성 수강평도 남겼습니다. 감사합니다.
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강사님 처럼 바로 바로 출력이 되지를 않아요
이제 겨우 환경 설정 하고 수업들으려는데 수업에서 보는 것 처럼 print를 추가 할때 마다 추가되서 출력이 되지 않아요. 매번 Ctrl F5 를 눌러야 입력한 값이 포함 되어 출력 됩니다. 그리고 출력 내용도 복잡해요. 왜 그런가요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
source-connect 등록 시 에러 질문이요
안녕하세요 강사님 강의 잘 듣고 있습니다.제가 기존에 윈도우에서 mariadb를 설치하고 3307포트를 사용하고 있었습니다.그런데 윈도우에서 진행하면 여러가지 오류로 때문에docker에다 mariadb를 pull 받고 run 해서 3308포트를 포트바인딩으로 3306포트를 사용하게 했습니다.docker run --name mariadb -d -p 3308:3306 --restart=always -e MYSQL_ROOT_PASSWORD=비민번호 mariad포트바인딩한 이유는도커로 실행한 mariadb 에서 port가 3306을 사용중이어서 그랬습니다.(도커로 받은 이미지는 안 건드는게 좋을 것 같아서 포트바인딩을 했습니다.) 결국 주키퍼, 카프카, 카프카커넥트를 모두 켜고 my-source-connect를 아래와 같이 등록했습니다.{ "name" : "my-source-connect", "config" : { "connector.class" : "io.confluent.connect.jdbc.JdbcSourceConnector", "connection.url":"jdbc:mysql://localhost:3306/mydb", "connection.user":"root", "connection.password":"비민번호입력함", "mode": "incrementing", "incrementing.column.name" : "id", "table.whitelist":"users", "topic.prefix" : "my_topic_", "tasks.max" : "1" } }그러면 response body에 my-source-connect가 성공한 response가 201로 응답되고127.0.0.1:8083/connectors 로 get 요청해도my-source-connect가 잘 뜹니다. 하지만 문제는127.0.0.1:8083/connectors/my-source-connect/status 으로 get 요청하면 다음과같이FAILD가 뜹니다.{ "name": "my-source-connect", "connector": { "state": "FAILED", "worker_id": "192.168.56.1:8083", "trace": "org.apache.kafka.connect.errors.ConnectException: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure\n\nThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.\r\n\tat io.confluent.connect.jdbc.util.CachedConnectionProvider.getConnection(CachedConnectionProvider.java:59)\r\n\tat io.confluent.connect.jdbc.JdbcSourceConnector.start(JdbcSourceConnector.java:94)\r\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doStart(WorkerConnector.java:185)\r\n\tat org.apache.kafka.connect.runtime.WorkerConnector.start(WorkerConnector.java:210)\r\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:349)\r\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:332)\r\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doRun(WorkerConnector.java:140)\r\n\tat org.apache.kafka.connect.runtime.WorkerConnector.run(WorkerConnector.java:117)\r\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\r\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\r\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\r\n\tat java.lang.Thread.run(Thread.java:750)\r\nCaused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure\n\nThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.\r\n\tat com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)\r\n\tat com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)\r\n\tat com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828)\r\n\tat com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448)\r\n\tat com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)\r\n\tat com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)\r\n\tat java.sql.DriverManager.getConnection(DriverManager.java:664)\r\n\tat java.sql.DriverManager.getConnection(DriverManager.java:208)\r\n\tat io.confluent.connect.jdbc.dialect.GenericDatabaseDialect.getConnection(GenericDatabaseDialect.java:250)\r\n\tat io.confluent.connect.jdbc.util.CachedConnectionProvider.newConnection(CachedConnectionProvider.java:80)\r\n\tat io.confluent.connect.jdbc.util.CachedConnectionProvider.getConnection(CachedConnectionProvider.java:52)\r\n\t... 12 more\r\nCaused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure\n\nThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.\r\n\tat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\r\n\tat sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\r\n\tat java.lang.reflect.Constructor.newInstance(Constructor.java:423)\r\n\tat com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)\r\n\tat com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)\r\n\tat com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)\r\n\tat com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)\r\n\tat com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:89)\r\n\tat com.mysql.cj.NativeSession.connect(NativeSession.java:120)\r\n\tat com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:948)\r\n\tat com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:818)\r\n\t... 20 more\r\nCaused by: java.net.ConnectException: Connection refused: connect\r\n\tat java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)\r\n\tat java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)\r\n\tat java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)\r\n\tat java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)\r\n\tat java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)\r\n\tat java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)\r\n\tat java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)\r\n\tat java.net.Socket.connect(Socket.java:613)\r\n\tat com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:153)\r\n\tat com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63)\r\n\t... 23 more\r\n" }, "tasks": [], "type": "source" }예전에 윈도우에 있던 mariadb로 3307포트로 요청하고 get하면 정상적으로 잘 됐습니다.하지만 docker에서 run해서 컨테이너를 생성한 3306포트의 mariadb라서 문제가 있는거 같습니다..response로 온 trace를 검색해도 원인을 파악하기는 어렵네요뭐가 문제로 보이시고 어떻게 해결하는게 좋을까요?감사합니다.
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
프록시와 스프링 빈에 대한 질문입니다.
강의 회차 : 트랜잭션 적용 확인안녕하세요 강의를 보다가 궁금한게 생겨서 질문 드립니다.일단 이번 강의에서 클래스 안에 @Transactional이 하나라도 있으면 트랜잭션 AOP가 프록시를 만들어서 basicService$$CGLIB를 스프링 컨테이너에 등록된다고 하였는데, 스프링 핵심 원리 강의에서도 스프링 빈에 객체를 등록하면 "빈 이름$$CGLIB"가 등록되었는데, 스프링 핵심 원리에서 보았던 스프링 컨테이너에 등록된 빈 하고 이번 강의에서 나온 프록시가 스프링 빈에 등록되는 것하고 같은 개념인지 궁금합니다.
-
미해결MERN STACK 커뮤니티 : 시작부터 배포까지 알려주는 React
504에러가 뜹니다;;
클라이언트 쪽에서 에러는 이렇게 나옵니다. List.js의 코드입니다.import React, { useState, useEffect } from 'react';import axios from 'axios';function List(props) { const [Text, setText] = useState(''); useEffect(() => { axios .post('/api/test') .then((res) => { console.log(res); setText(res.data.text); }) .catch((error) => { console.log(error); }); }, []); return ( <> {props.ContetnList.map((변수이름1, 인덱스) => { return <div key={인덱스}>내용: {변수이름1}</div>; })} <h3>{Text}</h3> </> );}export default List; server.js의 코드입니다.const express = require('express');const path = require('path');const mongoose = require('mongoose');const { urlencoded } = require('express');const app = express();const port = 5050;const BASIC_URL = '../../client/build';app.use(express.static(path.join(__dirname, ${BASIC_URL})));app.use(express.json());app.use(express, urlencoded({ extended: true }));const { Post } = require('../Model/Post.js');app.listen(port, () => { mongoose .connect('일부러 비워놓음') .then(() => { console.log(`Example app listening on port ${port}`); console.log('Connecting mongoDB...'); }) .catch((err) => { console.log(`${err}`); });});app.get('/', (요청, 응답) => { 응답.sendFile(path.join(__dirname, ${BASIC_URL}/index.html));});app.get('*', (요청, 응답) => { 응답.sendFile(path.join(__dirname, ${BASIC_URL}/index.html));});app.post('/api/test', (요청, 응답) => { // console.log(요청.body); const CommunityPost = new Post({ title: 'test', content: '테스트입니다.' }); CommunityPost.save() .then(() => { 응답.status(200).json({ success: true, text: '안녕하세요.' }); }) .catch((err) => { console.log(err); });}); 몽고디비 모델 강의쪽에서부터 막힙니다;;
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
점보트론
혹시 점보트론을 왜 쓴건가요? 점보트론을 안써도 되지 않나요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2차원 배열 fill 초기화 질문드려요~
안농하세요 선샌님~❣무식하지만 확실한 이중 for문으로만 2차원 배열 초기화를 하다가 이번에 새로운 방법으로 초기화해보고 싶어서 fill을 사용해보았습니당. 교안 39페이지 2차원 배열 초기화 부분을 참고해서 2-J번 문제를 풀어보려고 했는데초기화하는 방법을 제가 잘못 이해한 것 같아서 질문 드리고자 합니다.먼저 제가 처음 교안을 보고 이해한 방법대로 fill 함수를 사용해본 코드는 다음과 같습니다.// 수정 전 코드 fill(&result[0][0], &result[0][0] + H * W , -1);두번째 인수 값으로 &배열[0][0]에 세로 * 가로를 더해주면 되는구나!로 이해를 했는데 의도했던 결과가 안 나왔습니다..ㅜㅜ 다시 fill 함수 부분을 제 마음대로 수정해서 제출했을 때는 맞았습니다! 라고 나왔지만.. 아니 이게 왜 돼?.. 이렇게 쓰는건가?... 싶은 의혹이 들어서 확인차 찾아오게 되었습니다.// 수정한 코드 fill(&result[0][0], &result[H][W], -1);교안을 보고 이해한 코드와는 사뭇 달라서 fill 함수의 올바른 초기화 사용 방법을 여쭤보고자 질문드립니다! 2-J번 풀이 전체 코드입니다.#include <bits/stdc++.h> using namespace std; int H, W; char arr[104][104]; int result[104][104]; int main(){ ios::sync_with_stdio(0); cin.tie(0); scanf("%d %d", &H, &W); fill(&result[0][0], &result[H][W], -1); // for(int i = 0; i < H; i++){ // for(int j = 0; j < W; j++){ // result[i][j] = -1; // } // } for(int i = 0; i < H; i++){ for(int j = 0; j < W; j++){ scanf(" %c", &arr[i][j]); if(arr[i][j] == 'c'){ result[i][j] = 0; } } } for(int i = 0; i < H; i++){ int cnt = 1; bool isCloud = 0; for(int j = 0; j < W ; j++){ if(isCloud && arr[i][j] != 'c') result[i][j] = cnt++; if(arr[i][j] == 'c'){ isCloud = 1; cnt = 1; } } } for(int i = 0; i < H; i++){ for(int j = 0; j < W; j++){ printf("%d ", result[i][j]); } printf("\n"); } return 0; }
-
미해결홍정모의 따라하며 배우는 C언어
(2:49) 코드의 진행 방식이 머릿속에서 꼬여버려서 while문을 추가하였을 때, 정상적으로 출력되는 이유를 모르겠습니다.
디버그를 해보았는데도 이해가 되질 않아 질문을 올립니다.둘 다 실행했을 때, y입력 후 엔터를 쳤다고 가정하고제 나름대로 작동 순서를 글로 작성해보았습니다.1번째 코드 (while문, continue 없음)이것이 처음 작성한 코드입니다.ex) y 입력 후 엔터"Current count is 0. Continue? (y/n)" 출력 후 입력 대기→ y 입력 후 엔터if문에서 입력한 문자 'y'와 n을 비교한다. [검사]n이 아니므로 빠져나오지 않고 count++ 실행"Current count is 1. Continue? (y/n)" 출력 후 입력 대기→ (버퍼에 있던 \n)if문에서 입력한 문자 \n과 n을 검사하여 통과 [검사]count++실행"Current count is 2. Continue? (y/n)" 출력 후 입력 대기2번째 코드 (while문, continue 추가)이것이 두번째 작성한 코드입니다.ex) y 입력 후 엔터"Current count is 0. Continue? (y/n)" 출력 후 입력 대기→ y 입력 후 엔터if문에서 입력한 문자 'y'와 n을 비교한다. [검사]n이 아니므로 반복문(while(1))을 빠져나오지 않는다.while(2)문에서 y 검사(참) → continue 실행 [무시]while(2)문에서 \n 검사(거짓) → 빠져나옴count++ 실행"Current count is 1. Continue? (y/n)" 출력 후 입력 대기if문에서 입력한 문자 '\n'과 n을 비교한다. [검사]if문을 빠져나와 while문의 조건(거짓)을 만족시키지 못한다.count++ 실행"Current count is 1. Continue? (y/n)" 출력 후 입력 대기------------------------------1. 2번째 코드에서 while(2)문과 continue;의 조합으로 작성한 코드가 어째서 '첫번째 글자를 제외한 나머지를 버퍼에서 싹 지워주기 위함'인지 잘 모르겠습니다.결과적으로 while문-continue는 첫번째 글자 포함, 그 이후 글자까지 무시한 후 \n은 false이므로 아무 작용을 하지 못하는 것이 아닌가 싶습니다.→결국 2번째 반복(cycle)에서 버퍼에 남아있는 \n을 if문에서 판단하고, 결국 1번째 코드와 동일하게 작동하는 것이 아닌가요?