묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
checkbox에 th:field를 적용할 때 질문이 있습니다
제가 따로 쇼핌몰 프로젝트 만드는데 장바구니 화면을 구현하는 도중 장바구니에서 체크한 상품을 알기위해 <input type="checkbox" id="open" name="open" th:field="*{open}" class="form-check-input"> 이 코드를 참고했습니다 저는 강의자료에서 이 코드가 들어있는 파일처럼 객체 1개를 넘겨줘 th:object를 하지 않고 db에서 받은 값을 dto로 담아 LIst를 model에 담은 다음 th:each로 상품을 하나씩 가져오면서 그 상품 체크 유무를 알기위해 저 코드를 이용했는데요. 똑같이 private Boolean open;도 만들었는데 왜 계속 에러가 뜨는지 모르겠습니다. th:field="${open}"을 th:field="${open}이렇게도 바꿔봤는데 실행이 되질 않네요. 에러 메시지는 Error during execution of processor 'org.thymeleaf.spring5.processor.SpringInputCheckboxFieldTagProcessor' (template: "cart/cartItems" - line 80, col 71) Neither BindingResult nor plain target object for bean name 'item' available as request attribute 코드는 여기 있습니다 <tr th:each="item : ${cartItems}"> <td> <script type="text/javascript"> document.write(++i);</script> </td> <!-- 히든 필드 추가, 체크를 안해도 히든 필드는 무조건 넘어가게 FormItemController : item.open=true //체크 박스를 선택하는 경우 FormItemController : item.open=false //체크 박스를 선택하지 않는 경우 체크 박스를 체크하면 스프링 MVC가 open 에 값이 있는 것을 확인하고 사용한다. 이때 _open 은 무시 체크 박스를 체크하지 않으면 스프링 MVC가 _open 만 있는 것을 확인하고, open 의 값이 체크되지 않았다고 인식한다. 이 경우 서버에서 Boolean 타입을 찍어보면 결과가 null 이 아니라 false 인 것을 확인할 수 있다. log.info("item.open={}", item.getOpen());, th:object없으면 *이 아니라 $로--> <td> <input type="checkbox" id="open" name="open" th:field="${item.open}" > </td> <td th:text="${item.name}"></td> <td> <img th:src = "*{item.imageSrc}" width="75" height="75"> </td> <td th:text="${item.price}"></td> <td th:text="${item.quantity}"></td> <td> <!--상태가 put이면 cancel버튼을 노출되게 기능을 만들음, 장바구니에 담긴 상태여야지 취소가 가능하니 버튼 누르면 javascript:cancel메서드 실행--> <a th:if="${item.status.name() == 'PUT'}" href="#" th:href="'javascript:cancel('+${item.id}+')'" class="btn btn-danger">삭제하기</a> </td></tr>
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 컨텍스트와 트랜잭션 propagation
안녕하세요. 영속성 컨텍스트와 트랜잭션 propagation 관련해서 질문이 있습니다. 영속성 컨텍스트는 트랜잭션 마다 생기는 것으로 알고 있습니다. 만약 다음 처럼 트랜잭션이 생성된다면 영속성 컨텍스트는 어떻게 동작하나요? 1. A 메소드에서 B 메소드를 호출할 때 B 메소드에는 트랜잭션 전파 속성이 REQUIRES_NEW 일 시 새로운 트랜잭션이 생성되는 데 그러면 B 메소드를 위한 영속성 컨텍스트가 새로 생성되는 건가요? 2. 만약 영속성 컨텍스트가 새로 생성된다고 할 때 A 메소드에서 B 메소드 호출 시 파라미터로 Entity를 넘겨준다고 하면, 해당 Entity는 A 메소드에 있는 영속성 컨텍스트에서도 관리되고, B 메소드에 있는 영속성 컨텍스트에도 관리가 되는 건가요?
-
미해결실전! 스프링 데이터 JPA
실무(OLTP 환경)에서는 강의에서 알려주신 오프셋 페이징을 쓰면 안되는거 맞을까요?
실무에서 DB 를 사용한다고 하면 배치나 데이터 파이프라인 등이 아닌 OLTP 환경에서는 절대 오프셋 기반의 페이징을 쓰면 안되지 않나요? 우선 페이징 도중에 다른 클라이언트에 의해 실시간으로 데이터가 삽입/삭제가 일어나 중복된 데이터가 보여지거나 중간 데이터 누락이 발생할 수도 있기 때문에 문제가 될 것이고, 성능의 관점에서도 SQL 쿼리에서 OFFSET 문의 경우 index seek 과정에서 바로 페이지의 첫 데이터를 찾아가는것이 아니라 불필요하게 맨 처음 인덱스부터 offset 사이즈만큼 스캔한 뒤에 limit 만큼 가져오는 것이기 때문에 scalable 않지만, 커서 기반의 페이징의 경우 데이터의 양이 많아지더라도 where 절을 통해 index seek 과정에서 바로 커서에 해당하는 인덱스를 찾아가서 page size 만큼의 데이터만 스캔하면 되기 때문에 실무에서 굳이 오프셋 기반의 페이징을 쓸 이유가 없다. 라고 이해하면 맞을까요? 물론 페이징 대상이 되는 데이터의 수 자체가 매우 적거나 유저가 많은 페이지를 탐색하지 않는다면 큰 문제가 되지 않을 수도 있지만, 커서 기반의 페이징을 구현하는것이 특별이 어려운 것도 아니고 굳이 오프셋 기반의 페이징을 사용할 필요가 있나 궁금했습니다!
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
16:10 페이징 쿼리, mvc 관련 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.안녕하세요 영한님 jpa 강의 정말 재미있게 잘 듣고 있습니다. 이번에 페이징 한계돌파 강의를 들으면서 실습을 하던 중 16:10쯤에 저의 개발환경에서 발생한 쿼리가 영한님의 개발환경에서 발생한 쿼리와 다른 것 같아서 질문드립니다. where __row__ >= 2 and __row__ < 102; 쿼리로 페이징이 적용되어 결과는 원하는 대로 나왔지만, 예상과는 조금 다르게 아래와 같은 서브 쿼리가 나갔습니다. 데이터베이스 방언 문제는 아닌 것 같고 jpa 버전 문제일까요? 2022-05-04 01:14:49.015 DEBUG 21484 --- [nio-8081-exec-6] org.hibernate.SQL : with query as (select inner_query.*, row_number() over ( order by current_timestamp) as __row__ from ( select order0_.order_id as order_id1_6_0_, member1_.member_id as member_i1_4_1_, delivery2_.delivery_id as delivery1_2_2_, order0_.delivery_id as delivery4_6_0_, order0_.member_id as member_i5_6_0_, order0_.order_date as order_da2_6_0_, order0_.order_status as order_st3_6_0_, member1_.city as city2_4_1_, member1_.street as street3_4_1_, member1_.zip_code as zip_code4_4_1_, member1_.name as name5_4_1_, delivery2_.city as city2_2_2_, delivery2_.street as street3_2_2_, delivery2_.zip_code as zip_code4_2_2_, delivery2_.status as status5_2_2_ from orders order0_ inner join member member1_ on order0_.member_id=member1_.member_id inner join delivery delivery2_ on order0_.delivery_id=delivery2_.delivery_id ) inner_query ) select order_id1_6_0_, member_i1_4_1_, delivery1_2_2_, delivery4_6_0_, member_i5_6_0_, order_da2_6_0_, order_st3_6_0_, city2_4_1_, street3_4_1_, zip_code4_4_1_, name5_4_1_, city2_2_2_, street3_2_2_, zip_code4_2_2_, status5_2_2_ from query where __row__ >= ? and __row__ < ? 2022-05-04 01:14:49.035 INFO 21484 --- [nio-8081-exec-6] p6spy : #1651594489035 | took 3ms | statement | connection 8| url jdbc:h2:tcp://localhost/~/jpashopping with query as (select inner_query.*, row_number() over (order by current_timestamp) as __row__ from ( select order0_.order_id as order_id1_6_0_, member1_.member_id as member_i1_4_1_, delivery2_.delivery_id as delivery1_2_2_, order0_.delivery_id as delivery4_6_0_, order0_.member_id as member_i5_6_0_, order0_.order_date as order_da2_6_0_, order0_.order_status as order_st3_6_0_, member1_.city as city2_4_1_, member1_.street as street3_4_1_, member1_.zip_code as zip_code4_4_1_, member1_.name as name5_4_1_, delivery2_.city as city2_2_2_, delivery2_.street as street3_2_2_, delivery2_.zip_code as zip_code4_2_2_, delivery2_.status as status5_2_2_ from orders order0_ inner join member member1_ on order0_.member_id=member1_.member_id inner join delivery delivery2_ on order0_.delivery_id=delivery2_.delivery_id ) inner_query ) select order_id1_6_0_, member_i1_4_1_, delivery1_2_2_, delivery4_6_0_, member_i5_6_0_, order_da2_6_0_, order_st3_6_0_, city2_4_1_, street3_4_1_, zip_code4_4_1_, name5_4_1_, city2_2_2_, street3_2_2_, zip_code4_2_2_, status5_2_2_ from query where __row__ >= ? and __row__ < ? with query as (select inner_query.*, row_number() over (order by current_timestamp) as __row__ from ( select order0_.order_id as order_id1_6_0_, member1_.member_id as member_i1_4_1_, delivery2_.delivery_id as delivery1_2_2_, order0_.delivery_id as delivery4_6_0_, order0_.member_id as member_i5_6_0_, order0_.order_date as order_da2_6_0_, order0_.order_status as order_st3_6_0_, member1_.city as city2_4_1_, member1_.street as street3_4_1_, member1_.zip_code as zip_code4_4_1_, member1_.name as name5_4_1_, delivery2_.city as city2_2_2_, delivery2_.street as street3_2_2_, delivery2_.zip_code as zip_code4_2_2_, delivery2_.status as status5_2_2_ from orders order0_ inner join member member1_ on order0_.member_id=member1_.member_id inner join delivery delivery2_ on order0_.delivery_id=delivery2_.delivery_id ) inner_query ) select order_id1_6_0_, member_i1_4_1_, delivery1_2_2_, delivery4_6_0_, member_i5_6_0_, order_da2_6_0_, order_st3_6_0_, city2_4_1_, street3_4_1_, zip_code4_4_1_, name5_4_1_, city2_2_2_, street3_2_2_, zip_code4_2_2_, status5_2_2_ from query where __row__ >= 2 and __row__ < 102; 2022-05-04 01:14:49.038 DEBUG 21484 --- [nio-8081-exec-6] org.hibernate.SQL : select orderitems0_.order_id as order_id5_5_0_, orderitems0_.order_item_id as order_it1_5_0_, orderitems0_.order_item_id as order_it1_5_1_, orderitems0_.count as count2_5_1_, orderitems0_.item_id as item_id4_5_1_, orderitems0_.order_id as order_id5_5_1_, orderitems0_.order_price as order_pr3_5_1_ from order_item orderitems0_ where orderitems0_.order_id=? 2022-05-04 01:14:49.040 INFO 21484 --- [nio-8081-exec-6] p6spy : #1651594489040 | took 0ms | statement | connection 8| url jdbc:h2:tcp://localhost/~/jpashopping select orderitems0_.order_id as order_id5_5_0_, orderitems0_.order_item_id as order_it1_5_0_, orderitems0_.order_item_id as order_it1_5_1_, orderitems0_.count as count2_5_1_, orderitems0_.item_id as item_id4_5_1_, orderitems0_.order_id as order_id5_5_1_, orderitems0_.order_price as order_pr3_5_1_ from order_item orderitems0_ where orderitems0_.order_id=? select orderitems0_.order_id as order_id5_5_0_, orderitems0_.order_item_id as order_it1_5_0_, orderitems0_.order_item_id as order_it1_5_1_, orderitems0_.count as count2_5_1_, orderitems0_.item_id as item_id4_5_1_, orderitems0_.order_id as order_id5_5_1_, orderitems0_.order_price as order_pr3_5_1_ from order_item orderitems0_ where orderitems0_.order_id=11; 2022-05-04 01:14:49.044 DEBUG 21484 --- [nio-8081-exec-6] org.hibernate.SQL : select item0_.item_id as item_id2_3_0_, item0_.name as name3_3_0_, item0_.price as price4_3_0_, item0_.stock_quantity as stock_qu5_3_0_, item0_.artist as artist6_3_0_, item0_.etc as etc7_3_0_, item0_.author as author8_3_0_, item0_.isbn as isbn9_3_0_, item0_.actor as actor10_3_0_, item0_.director as directo11_3_0_, item0_.dtype as dtype1_3_0_ from item item0_ where item0_.item_id=? 2022-05-04 01:14:49.046 INFO 21484 --- [nio-8081-exec-6] p6spy : #1651594489046 | took 0ms | statement | connection 8| url jdbc:h2:tcp://localhost/~/jpashopping select item0_.item_id as item_id2_3_0_, item0_.name as name3_3_0_, item0_.price as price4_3_0_, item0_.stock_quantity as stock_qu5_3_0_, item0_.artist as artist6_3_0_, item0_.etc as etc7_3_0_, item0_.author as author8_3_0_, item0_.isbn as isbn9_3_0_, item0_.actor as actor10_3_0_, item0_.director as directo11_3_0_, item0_.dtype as dtype1_3_0_ from item item0_ where item0_.item_id=? select item0_.item_id as item_id2_3_0_, item0_.name as name3_3_0_, item0_.price as price4_3_0_, item0_.stock_quantity as stock_qu5_3_0_, item0_.artist as artist6_3_0_, item0_.etc as etc7_3_0_, item0_.author as author8_3_0_, item0_.isbn as isbn9_3_0_, item0_.actor as actor10_3_0_, item0_.director as directo11_3_0_, item0_.dtype as dtype1_3_0_ from item item0_ where item0_.item_id=9; 2022-05-04 01:14:49.048 DEBUG 21484 --- [nio-8081-exec-6] org.hibernate.SQL : select item0_.item_id as item_id2_3_0_, item0_.name as name3_3_0_, item0_.price as price4_3_0_, item0_.stock_quantity as stock_qu5_3_0_, item0_.artist as artist6_3_0_, item0_.etc as etc7_3_0_, item0_.author as author8_3_0_, item0_.isbn as isbn9_3_0_, item0_.actor as actor10_3_0_, item0_.director as directo11_3_0_, item0_.dtype as dtype1_3_0_ from item item0_ where item0_.item_id=? 2022-05-04 01:14:49.050 INFO 21484 --- [nio-8081-exec-6] p6spy : #1651594489050 | took 0ms | statement | connection 8| url jdbc:h2:tcp://localhost/~/jpashopping select item0_.item_id as item_id2_3_0_, item0_.name as name3_3_0_, item0_.price as price4_3_0_, item0_.stock_quantity as stock_qu5_3_0_, item0_.artist as artist6_3_0_, item0_.etc as etc7_3_0_, item0_.author as author8_3_0_, item0_.isbn as isbn9_3_0_, item0_.actor as actor10_3_0_, item0_.director as directo11_3_0_, item0_.dtype as dtype1_3_0_ from item item0_ where item0_.item_id=? select item0_.item_id as item_id2_3_0_, item0_.name as name3_3_0_, item0_.price as price4_3_0_, item0_.stock_quantity as stock_qu5_3_0_, item0_.artist as artist6_3_0_, item0_.etc as etc7_3_0_, item0_.author as author8_3_0_, item0_.isbn as isbn9_3_0_, item0_.actor as actor10_3_0_, item0_.director as directo11_3_0_, item0_.dtype as dtype1_3_0_ from item item0_ where item0_.item_id=10; 또한 api가 아닌 mvc 패턴으로 컬렉션을 find할 때에는 dto가 아닌 엔티티를 그대로 repository에서 찾아서 view 화면에 넘기는데, 이 때는 쿼리 성능 최적화를 어떻게 할 수 있을까요? (타임리프로 order, orderItem의 결과를 보여준다고 가정할 때)
-
미해결스프링 핵심 원리 - 기본편
IoC, DI, 그리고 컨테이너 => 이 강의를 듣고 궁금한 점이 생겼습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요, 영한님 스프링 강의를 재밌게 듣고 있는 수강생입니다 :) 다름이 아니라 IoC에 관련된 강의를 듣고 궁금한 점이 생겨 질문글을 남기게 되었습니다. 질문은 총 2가지 입니다. 1. 강의에서 AppConfig가 제어 흐름에 대한 권한을 가지고 있다고 이야기 하셨는데 이 부분이 잘 와닿지 않습니다. ▲ [그림1] AppConfig 소스코드 제가 생각할 때 AppConfig가 제어 흐름에 대한 권한을 가지고 있는 이유는 AppConfig에서 구현 객체, 그리고 의존관계를 어떻게 설정하느냐에 따라 프로그램 내에서 실행되는 로직이 달라지기 때문에 제어 흐름에 대한 권한을 가지고 있다고 이해했는데 이게 맞는건가요? 다른 이유가 있다면 어떤 것이 있을까요?? 2. AppConfig가 실제로 생성되고 사용되는 부분은 MemberApp(또는 OrderApp) 내에 있는 main 메소드 입니다. 그렇다면, AppConfig에도 IoC가 적용되어 결국 main 메소드가 최종적인 제어 흐름에 대한 권한을 가지고 있다고 이해해도 될까요? ▲ [그림2] MemberApp 내의 main 메소드
-
미해결코딩으로 학습하는 GoF의 디자인 패턴
Concrete 빌더에 관한 질문
안녕하세요 강의 잘 듣고 있습니다. 다름이 아니라, 본 강의에선 DefaultTourBuilder 구현체로 빌더 패턴 사용 예시를 보여주셨습니다. 1. 첫 번째 질문으로, 칸쿤 여행의 경우 TourPlan의 모든 멤버 변수에 어떤 값을 할당해야 한다고 가정했을 때, 강의에선 getPlan에서 모든 변수가 제대로 초기화됐는지 체크하는 과정이 생략된 것 같은데 맞을까요? 2. DefaultTourBuilder가 칸쿤 여행과 같이 모든 멤버 변수를 초기화했을 때만 인스턴스를 만들 수 있도록 getPlan에 제약을 걸어놨다면, 본 강의에서 예시로 들었던 당일치기 롱비치 여행은 DefaultTourBuilder로 만들 수 없다고 생각합니다. 여러 방법이 존재하겠지만 강의에서 말씀하신 내용을 되짚어보면 당일치기 여행 인스턴스를 제공하는 ShortTourBuilder를 만드는 게 합리적이란 생각이 듭니다. 강사님의 의견은 어떠신가요? 감사합니다.
-
미해결프로그래밍 시작하기 : 웹 입문 (Inflearn Original)
removeEventListener
이 강의에서 addEventListener 를 통해 만든 클릭함수를 없애고 싶을땐 removeEventListener를 어떻게 사용해야 할까요? logo.addEventListener('click',function(){ alert('안녕하세요! 구글입니다.'); }); 이걸 지우고 싶습니다..
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
react-redux 버전 관련 질문입니다.
리덕스로 로그인을 구현한 후 로그인 되지않는 문제가 생겼었습니다. dispatch 함수가 실행되지만 rootReducer에서 LOG_IN 부분이 실행이 안됐습니다(console.log로 확인) 그래서 useDispatch를 불러온 부분이 문제라고 생각해, react-redux버전을 강의에 맞게 7로 바꾸니 문제가 해결됐습니다. 왜 이런 문제가 발생한건가요..? 추가로 이 강의를 다 들은 후, react-redux를 8버전으로 올리고 싶으면 어디서 변경내역을 확인해야 하나요..?
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
docker-compose-dev.yml 은 어떻게 실행하나요?
배포해주신 교안 대로 docker-compose.yml 과 docker-compose-dev.yml 으로 분리해서 작업했습니다. 그러면 docker-compose -up 을 하면 어떻게 docker-compose-dev.yml 을 가르키게 되는 걸까요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
Last-Modifed 값은 서버에서 어떻게 갱신이 될 수 있나요?
안녕하세요! 좋은 강의 감사합니다. 캐시부분을 쭉 듣다 막연한 궁금증이 생겨 질문드립니다. Last-Modifed은 따로 개발자가 구현하는게 아니면 서버에서 자동으로 설정해준다는데.. 리소스가 마지막으로 수정된 시간을 서버는 어떻게 알 수 있는건지 궁금합니다.. 보통 데이터베이스에 데이터를 저장할때 거의 항상 update_dttm 같은 컬럼을 만들어두고 넣던데 이런 컬럼값을 자동으로 체크하는걸까요??;; 좀 쌩뚱맞은 질문같단 느낌이 드는데 구글링해도 잘 안나와서요.. 너무 궁금해서 여쭤봅니다. 읽어주셔서 감사합니다!!
-
미해결스프링 핵심 원리 - 기본편
싱글톤 스코프, 프로토타입 스코프 비교 및 의문점 있습니다.
안녕하세요. 강의 잘 듣고 있습니다. 이와 같은 코드가 강의중에 등장합니다. 앞전에는 싱글톤도 동일한 패턴으로 코드를 작성했습니다. 코드에 보면 첫 줄에서 스프링 컨테이너가 매개변수로 받은 클래스를 스프링 빈으로 등록하게 됩니다. 여기에서 의문이 생깁니다. 싱글톤의 경우 첫줄, 스프링 컨테이너가 매개변수로 넘어온 클래스를 스프링 빈으로 등록할 때, 빈을 생성하고 의존관계 주입까지 마칩니다. 그 증거로 PostConstruct 어노테이션이 붙은 init 메서드가 실행되죠. 반면 프로토타입의 경우 첫 줄에 스프링 컨테이너가 매개변수로 넘어온 클래스를 스프링 빈으로 등록하는 코드가 분명 존재함에도 불구하고, 실질적으로는 스프링 빈 등록, 의존관계 주입 둘 다 되지 않은 것으로 추정됩니다. 그 증거는 @PostConstructor 어노테이션이 붙은 init 메서드가 첫 줄의 동작이 끝나고 실행되는 것이 아닌, 스프링 컨테이너에서 프로토타입 클래스의 빈을 조회할 때 실행 됩니다. 즉, 강의에서 말씀하신 것과 같이 프로토타입 스코프의 경우 빈 조회가 발생했을 때, 프로토타입 빈이 생성되고 그에 관련된 의존관계가 주입된다는 점을 확인했습니다. 그렇다면 첫 줄에 스프링 컨테이너가 프로토타입 클래스를 빈으로 등록하는 명령어는 다른 동작을 하고 있다는 것인데, 실제로 어떤 동작이 이루어지는지 궁금합니다. 이에 대한 제 짧은 소견으로는 뒤에서 배우는 provider, proxy 등과 유사한 동작을 하는 빈이 등록되고, 스프링 컨테이너에서 프로토타입 빈을 조회할 때, 실제 빈 생성 및 의존관계 주입이 이루어지는 것인가 싶습니다. 감사합니다.
-
미해결
아나콘다 실행이 안 돼요
대체 뭐가 문제일까요?
-
미해결코로나맵 개발자와 함께하는 지도서비스 만들기 1
(index):121 Uncaught ReferenceError: kakao is not defined at (index):121:10
목적지를 입력하세요 부분에 경희대학교를 포함한 어떤것을 입력해도 zoom이 되기는 커녕 마커도 뜨지 않습니다. f12를 눌러 콘솔에 들어가보면 제목과 같은 오류가 뜨고 (index):121 을 눌러보면 let ps = new kakao.maps.Services.Places(); 에서 new kakao.maps.Services.Places(); 부분에 빨간줄이 그어 있는것을 확인할 수 있습니다. 몇번을 확인해도 코드에서 문제점을 찾지 못했습니다. 어떤 부분에 문제가 있는지 알려주시면 감사하겠습니다!! 혹시 카카오 api 키 발급 및 적용에서 잘못이 있을까여? REST Api를 사용했고 플랫폼에서 Web에 https://localhost:3000도 등록했습니다. 다음은 index.ejs 코드입니다 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"> <title>myfirstmap</title> <link rel="stylesheet" href="/stylesheets/style.css"/> <script type="text/javascript" src="https://openapi.map.naver.com/openapi/v3/maps.js?ncpClientId=a6xx165w2v"></script> <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> <script type="text/javascript" src="//dapi.kakao.com"/v2/maps/sdk.js?appkey=6ae93f30966074b8be538be3257f65ac&libraries=services"></script> </head> <body> <div id="navbar">myfirstmap</div> <div id="infoBox"> <div id="infoTitle">현재날짜</div> <div id="infoContent">2022.05.03</div> </div> <div id="search"> <input id="search_input" placeholder="목적지를 입력해 주세요" /> <button id="search_button">검색</button> </div> <div id="current">현재 위치</div> <div id="map" style="width:100%;height:100vh;"></div> <script type="text/javascript" src="/data/data.js"></script> <script> var mapOptions = { center: new naver.maps.LatLng(37.3595704, 127.105399), zoom: 10 }; var map = new naver.maps.Map('map', mapOptions); var markerList =[]; var infowindowList =[]; for (var i in data){ var target = data[i]; var latlng = new naver.maps.LatLng(target.lat, target.lng); marker = new naver.maps.Marker({ map : map, position : latlng, icon : { content : "<div class='marker'></div>", anchor: new naver.maps.Point(12, 12) }, }); var content = `<div class='infowindow_wrap'> <div class='infowindow_title'>${target.title}</div> <div class='infowindow_content'>${target.content}</div> <div class='infowindow_date'>${target.date}</div> </div>` var infowindow = new naver.maps.InfoWindow({ content : content, backgroundColor : "#00ff0000", borderColor : "#00ff0000", anchorSize : new naver.maps.Size(0, 0) }) markerList.push(marker); infowindowList.push(infowindow); } for (var i = 0, ii = markerList.length; i < ii; i++){ naver.maps.Event.addListener(map, "click", ClickMap(i)); naver.maps.Event.addListener(markerList[i], "click", getClickHandler(i)); } function ClickMap(i){ return function(){ var infowindow = infowindowList[i]; infowindow.close() } } function getClickHandler(i){ return function(){ var marker = markerList[i]; var infowindow = infowindowList[i]; if(infowindow.getMap()){ infowindow.close(); } else{ infowindow.open(map, marker) } } } let currentUse = true; $('#current').click(() => { if('geolocation' in navigator){ navigator.geolocation.getCurrentPosition(function(position){ const lat = position.coords.latitude; const lng = position.coords.longitude; const latlng = new naver.maps.LatLng(lat, lng); if (currentUse){ marker = new naver.maps.Marker({ map : map, position : latlng, icon : { content : '<img class="pulse" draggable="false" unselectable="on" src="http://myfirstmap.s3.ap-northeast-2.amazonaws.com/circle.png">', anchor: new naver.maps.Point(11, 11), } }); currentUse = false; } map.setZoom(14, false); map.panTo(latlng); }); }else { alert("위치정보 사용 불가능"); } }); let ps = new kakao.maps.services.Places(); let search_arr = [] $("#search_input").on("keydown" ,function(e){ if (e.keyCode === 13) { let content = $(this).val(); ps.keywordSearch(content, placeSearchCB); } }) $("#search_button").on("click", function (e){ let content = $("#search_input").val(); ps.keywordSearch(content, placeSearchCB); }) function placeSearchCB(data, status, pagination) { if (status === kakao.maps.services.Status.OK){ let target = data[0]; const lat = target.y; const lng = target.x; const latlng = new naver.maps.LatLng(lat, lng); marker = new naver.maps.Marker({ position: latlng, map: map }) if (search_arr.length == 0){ search_arr.push(marker) }else{ search_arr.push(marker) let pre_marker = search_arr.splice(0,1); pre_marker[0].setMap(null); } map.setZoom(14, false); map.panTo(latlng); }else{ alert("검색결과가 없습니다.") } } </script> </body> </html>
-
미해결팀 개발을 위한 Git, GitHub 입문
Git 강의 너무 잘 듣고 있습니다~
실무 하면서 기본적인 내용 외에는 익히기 어려웠는데, 너무 잘 듣고 있습니다. 혹시 강의자료 PPT 공유해 주실수 있을지 문의드립니다. 이메일 : itboxer91@gmail.com
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요.
안녕하세요! 강의를 듣다가 아무리 자료를 찾아봐도 어려운부분이 있어 질문을 드립니다. 16을 구하기 위해 첫줄의 숫자가 각각 [1,3,3,1]번씩 곱해진다는것은 이해가 되었는데 1 3 3 1을 바로 조합 3C0, 3C1, 3C2, 3C3 으로 연결시키는 부분이 이해가 잘 안됩니다ㅠㅠ.. 3C0, 3C1, 3C2, 3C3 이 계산하면 각각 1,3,3,1이 된다는것은 알겠지만 단순히 계산값이 아니라 어떠한 공식이 있는건가요?
-
미해결스프링 핵심 원리 - 고급편
실무에서 몇 개 정도의 어떤 어즈바이저를 적용해서 사용중인가요?
영한님, 안녕하세요. DB접근기술 강의를 듣고나니, 스프링 핵심원리 강의들이 다시 떠올라서 핵심원리 복습을 하고 있습니다. 스프링 AOP 에서 여러 어드바이저를 적용해도 프록시는 하나만 생성되어 사용된다 라고 콕 찝어서 설명을 해주셨는데요. 혹시 소속되어 계신 배민이나 그 전에 경험하신 시스템에서 주로 몇 개 정도의 어드바이저를 적용했고, 대략 어떤 부가기능들이 적용되어 있었는지 알 수 있으면 좋겠습니다. (참고용으로요) 로강을 위해 데이터베이스에 정보를 기록하는 부가기능들도 본 적이 있는데, 이런 부가기능들이 모이면 시스템 성능에 영향을 줄 수 있을텐데요. 보통 성능에 문제가 생길까봐 AOP 등록을 해도 될 지 고민되는 경우가 많은데 이를 어떻게 판단할 수 있을까요? 너무 애매한 질문을 드린 건 아닌가 모르겠네요. 작은 도움될만한 정도라도 답변을 주시면 감사하겠습니다.
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
안녕하세요 aws를 대신해서 사용하는데
이전 강의에서 docker 9000번 포트만 남기고 설치를 했었을 떄 아이피:90000 실행이 안되서 aws에서 인바운드 규칙에 9000번 포트를 넣으니 실행이 되더라고요. 이번 강의 7:30초부터 보면 80이 기본값이기 떄문에 ip만 넣어도 된다고 하는데 이역시 실행이 안되서 인바운드에 추가했는데 aws만 이렇게 매번 넣어야 하는건가요?
-
미해결더 개발자, 인터뷰 가이드
솔루션 오류
booleans 배열로 값이 존재 유무만 true / false 로 나타내는 경우 중복 값에 대해서는 처리가 불가 합니다. 예를들어 문제에 50개의 랜덤한 숫자가 나온다고 하였으니 [2,2,2,2,...2] 와 같이 모든 숫자가 2로 나오는 경우 현재 솔루션의 결과는 [2,0,0,0,0....,0]이 나와 잘못된 답이 나옵니다. boolean 배열보다 int 배열로 중복값이 몇개 나왔는지 표기한 다면 올바른 답이 나올것 같습니다.
-
해결됨사물인터넷 통신은 내 손에 (Arduino, MQTT, Nodejs, MongoDB, Android,VS Code)
$.ajax{} 구문 안에 url을 입력했는데 접속이 안되면 어떻게 해결해야되나요?
루프백 주소가 아닌 모스퀴토 서버 ip:3000/MQTT.html 페이지는 열립니다. 밑에 restfull service 에 LED_ON 버튼을 누르면 오류가 떠서 인터넷으로 상세하게 오류 출력했는데 이렇게 뜹니다. html 파일 $.ajax 괄호안에 url을 입력했는데 이렇게 뜹니다. url이 작동 안하면 어떻게 해결해야 될까요? 위의 소켓 방식은 잘 작동했습니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
[섹션4-뒤집은 소수]에서 변수 질문 있습니다
안녕하세요 강의 잘 듣고 있습니다 섹션4에 2. 뒤집은 소수에서 질문이 있습니다 아래 a번과 같이 변수 res를 사용하면 결과값이 잘 나오는데요 b번과 같이 변수없이 그냥 x의 결과를 출력하면 숫자로 나오고 적용이 하나도 안되네요 여기서 꼭 변수를 사용해야 하는 이유가 궁금합니다 제가 이 문제를 혼자 풀면 변수를 생성하지 않을 것 같아서요 a번 for(let x of arr){ let res = x.toString().split('').reverse().join(''); console.log(res); } b번 for(let x of arr){ x.toString().split('').reverse().join(''); console.log(x); }