묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
get -> post / delete
소셜로그인을 구현할때 로그인과 로그아웃을 get메소드로 사용하셨던데 혹시 로그인은 post 로그아웃은 delete 로 구현해도되는건가요? 로그인을 post로 했더니 오류가 발생해서 소셜로그인은 get으로만 해야하는지 궁금합니다. 또한, callback과 로그인 부분은 auth/kakao auth/kakao/callback 으로 통일해야하는건가요? 구글 로그인을 구현중인데 uri 를 변경하고싶어서요! 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
id 네이밍을 테이블명+id로 하는이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 id 필드명을 단순히 id라고 짓는 것이 아니라 MEMBER 테이블의 경우 MEMBER_ID와 같이 짓는 이유가 궁금합니다. 컬럼명이 길어지면 조인시에도 번거로울 것 같은데 왜 id가 아닌 테이블명_id로 짓는건가요 ?
-
미해결
ffmpeg AVPacket 디코딩관련입니다.
안녕하세요. 노트북 캠영상을 ffmpeg를이용하여 h264 로 인코딩해서 AVPacket을 얻었고 그렇게 얻은 packet을 바로 다시 디코딩 해보고싶은데.. 생각보다 잘 안됩니다.. AVFormatContext를 사용하지않고 패킷을 디코딩해서 프레임을 얻는게 가능한가요?
-
미해결
tkinter label에 이미지가 나오지 않습니다
파이썬으로 이미지 처리 프로그램을 만드는 중인데, 아래 함수를 만들어서 사용하고 있었습니다. def Func1(): box = (cap.winfo_x() + 10, cap.winfo_y() + 30, cap.winfo_width(), cap.winfo_height()) scr = pyautogui.screenshot("img.png", region=box) Func2() img = PhotoImage(file="Result.png") plabel.configure(image=img) root.after(20, Recognize) def Func2(): img = cv2.imread("img.png", cv2.COLOR_BGR2RGB) 생략 cv2.imwrite("Result.png", img) Func1에서 pyautogui로 img.png파일을 생성해서 Func2에서 cv2.imread를 통해 이미지를 불러와서 처리하는 방식이었고 잘 작동하는것을 확인했습니다. (중간과정은 길어서 생략했습니다) 저는 이 함수를 이미지 파일을 저장 후 불러오는 방식에서 이미지를 파일로 저장하지 않고 바로 cv2로 처리하는 방식을 새로 구현하고자 아래와 같이 수정하였습니다. 그러자 plabel에 이미지가 더이상 출력되지 않았습니다. def Func1(): box = (cap.winfo_x() + 10, cap.winfo_y() + 30, cap.winfo_width(), cap.winfo_height()) scr = pyautogui.screenshot(region=box) Func2(scr) img = PhotoImage(file="Result.png") plabel.configure(image=img) root.after(20, Recognize) def Func2(scr): img = cv2.cvtColor(np.array(scr), cv2.COLOR_BGR2RGB) 생략 cv2.imwrite("Result.png", img) 실행해본 결과 위 함수는 라벨에 이미지가 출력되지 않는 문제를 제외하면 이전과 똑같이 작동하는 것을 확인했습니다. 실제로 탐색기에서 Result.png 파일을 열어보면 이미지가 정상적으로 처리되는 것 또한 확인할 수 있었습니다. 라벨을 초기화할 때 이미지를 넣으면 처음 실행 시 이미지가 잘 나오지만 Func1을 작동시키면 다시 아무런 이미지도 표시되지 않습니다. 이것저것 시도해 본 결과 이미지가 나오긴 했지만 도저히 이해가 가지 않아서 질문합니다. 제가 고친 방법은 다음과 같습니다. scr = pyautogui.screenshot(region=box) 이 함수 대신 scr = pyautogui.screenshot("img.png", region=box) 이 함수를 사용하면 라벨에 이미지가 정상적으로 출력됩니다. 그런데 수정된 함수에서는 img.png 파일을 더 이상 사용하지 않기때문에 저 파일은 이미지를 처리하는데 있어 아무런 관련없는 파일입니다. 도대체 저 함수가 tkinter 라벨과 무슨 관련이 있길래 스크린샷을 파일로 저장해야만 라벨에 이미지가 출력되는건지 궁금합니다.
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
모듈의 filter concatenate 부분에서 질문이 있습니다.
filter concatenate를 할때, filter의 size(X x X)는 모두 동일해야 concatenate가 가능하다고 하셨습니다. 3x3 컨볼루션, 5x5컨볼루션을 수행할때, 나오는 filter의 size는 stride로 조절하게 되는 것일까요? 서로 다른 사이즈의 컨볼루션을 하는데, 결과로 나오는 filter의 size를 어떻게 동일하게 해야하는지 궁금합니다.
-
미해결vue.js 실전 프로젝트(트위터 클론)
Vue 2로도 개발할 수 있나요??
방금 결제하고 왔습니다 ㅎㅎ 잘 들을게요,. 근데, vue2로도 개발 가능할까요??
-
해결됨Flutter 앱 개발 기초
[스몰이슈] 오타? 확인 부탁 드려요
final docs = snapshot.data?.docs ?? []; // 문서들 가져오기 문서 가져 올때 docs로 선언을 했는대 마지막에 버킷리스트 없는 메세지에 대한 코드 스니펫에 오타가 있는 것 같아서 공유해요 if (documents.isEmpty) { return Center(child: Text("버킷 리스트를 작성해주세요.")); } documents.isEmpty -> doc.isEmpty로 변경
-
미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
이것도 closure인가요?
안녕하세요 선생님. go에서 closure를 처음 접하였고 아직 모르는 부분이 있어 이렇게 질문드리게 되었씁니다. 익명함수로 외부에 있는 변수에 접근하는게 가능한 이유는 go가 closure를 지원하기 때문인가요? 밑의 defer를 예로하면 2번은 closure로 s 에 접근하고 있고 3번은 파라메타로 접근이라고 이해하면 될까요? package main import ( "errors" "fmt" ) type stmt struct {} func (s *stmt) close() error{ return errors.New("error occuerd!") } func main() { s := stmt{} // 1번 defer s.close() // 2번 defer func() { err := s.close() if err != nil { fmt.Println(err) } }() // 3번 defer func(s stmt) { err := s.close() if err != nil { fmt.Println(err) } }(s) }
-
해결됨스프링 핵심 원리 - 고급편
advisor 메서드 단위에서 순서 지정
안녕하세요. 이전 강의에서는 advisor를 수동으로 지정해줄 경우 어떤 메서드를 먼저 작성해주느냐에 따라 advisor 순서를 지정해준 거 같은데요, @Aspect를 사용해서 advisor를 지정해줄 경우 메서드 단위에서는 advisor 순서를 정해주지 못하나요??
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
모바일 화면에서 hiring의 sns 문제-소스코드 올려 놓았습니다.
index.html: <!doctype html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <title>bizpage website-Architecture</title> <link rel="icon" href="images/bizpage_logo3.png"> <script src="js/jquery-2.1.4.js"></script> <!-- Page scroll Effects JS & CSS --> <script src="js/velocity/modernizr.js"></script> <script src="js/velocity/velocity.min.js"></script> <script src="js/velocity/velocity.ui.min.js"></script> <script src="js/velocity/main.js"></script> <link rel="stylesheet" href="js/velocity/velocity.css"> <!-- Smooth Scrolling --> <script src="js/jquery.scrollTo.min.js"></script> <!-- Slick.js --> <script src="js/slick/slick.min.js"></script> <link rel="stylesheet" href="js/slick/slick-theme.css"> <link rel="stylesheet" href="js/slick/slick.css"> <!-- Featherlight.js --> <script src="js/featherlight/featherlight.js"></script> <link rel="stylesheet" href="js/featherlight/featherlight.css"> <!-- Custom JS & CSS --> <script src="custom.js"></script> <link rel="stylesheet" href="style.css"> <link rel="stylesheet" href="responsive.css"> </head> <!-- hijacking: on/off - animation: none/scaleDown/rotate/gallery/catch/opacity/fixed/parallax --> <body data-hijacking="on" data-animation="rotate"> <div class="container"> <section class="cd-section visible" id="home"> <div> <div class="content"> <div class="home-inner"> <h3 class="welcome-text">Can your homepage do this?<br>You can!!<span>with bizpage<i class="fa fa-heart"></i></span></h3> <div class="opacity-image"></div> <div class="home-heading"> <span>Creative</span> <span>Architecture</span> <span>Specialist</span> </div> </div> </div> </div> </section> <section class="cd-section" id="about"> <div> <div class="content"> <div class="about-inner"> <div class="about-items"> <div class="item"> <img src="images/careers-main-01.png"> <span> <h3>Together we can make an impact</h3> <p>Design Works the excitement of an entrepreneurial environment with the stability of an established practice. Principals and senior leadership work side-by-side with junior designers to create innovative, workable designs.</p> </span> </div> <div class="item"> <img src="images/careers-main-02.png"> <span> <h3>We’re always looking for talent</h3> <p>If you don’t see an open position that fits your talents, send us your resume. We’re always looking for smart, self-starters and will reach out to you if something becomes available.</p> </span> </div> <div class="item"> <img src="images/careers-main-03.png"> <span> <h3>Fellowship</h3> <p>Every summer we offer a Fellowship to a select group of students in architecture, planning and landscape architecture. Read about our 2019 Fellowship winners and learn more about what the Fellowship has to offer.</p> </span> </div> </div> </div> </div> </div> </section> <section class="cd-section" id="project"> <div> <div class="content"> <div class="project-inner"> <input type="radio" name="tabmenu" id="tab1" checked> <input type="radio" name="tabmenu" id="tab2"> <input type="radio" name="tabmenu" id="tab3"> <div class="tabs"> <div class="tab"> <div class="project-info" data-text="01"> <h3>Project: Glass Wall Architecture</h3> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Quia atque ratione, vitae culpa natus ex quae labore architecto nostrum odit laboriosam laborum aut vel dolores nulla et cumque placeat molestiae sunt? Aut consequuntur eos mollitia quam adipisci labore, sequi impedit. </p> <ul> <li><b>Area</b> : 1670 m2</li> <li><b>Completed Date</b> : September 2018</li> <li><b>Architect</b> : Daniel Kang</li> <div class="detail"> <div> <span>225</span>WORKING DAY </div> <div> <span>320</span>MEMBERS </div> <div> <span>3M</span>BUDGET </div> </div> <a class="view-project" href="project-detail-01.html" data-featherlight="iframe">view project<i class="fa fa-long-arrow-right"></i></a> </ul> </div> <div class="project-photo"> <img src="images/project-main-01-01.jpg"> <img src="images/project-main-01-02.jpg"> <img src="images/project-main-01-03.jpg"> <img src="images/project-main-01-04.jpg"> </div> </div> <div class="tab"> <div class="project-info" data-text="02"> <h3>Project : Hallway of Architecture</h3> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Quia atque ratione, vitae culpa natus ex quae labore architecto nostrum odit laboriosam laborum aut vel dolores nulla et cumque placeat molestiae sunt? Aut consequuntur eos mollitia quam adipisci labore, sequi impedit. </p> <ul> <li><b>Area</b> : 2345 m2</li> <li><b>Completed Date</b> : April 2019</li> <li><b>Architect</b> : Daniel Kang</li> <div class="detail"> <div> <span>321</span>WORKING DAY </div> <div> <span>420</span>MEMBERS </div> <div> <span>8M</span>BUDGET </div> </div> <a class="view-project" href="project-detail-02.html" data-featherlight="iframe">view project<i class="fa fa-long-arrow-right"></i></a> </ul> </div> <div class="project-photo"> <img src="images/project-main-02-01.jpg"> <img src="images/project-main-02-02.jpg"> <img src="images/project-main-02-03.jpg"> <img src="images/project-main-02-04.jpg"> </div> </div> <div class="tab"> <div class="project-info" data-text="03"> <h3>Project : Outside Stairs Architecture</h3> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Quia atque ratione, vitae culpa natus ex quae labore architecto nostrum odit laboriosam laborum aut vel dolores nulla et cumque placeat molestiae sunt? Aut consequuntur eos mollitia quam adipisci labore, sequi impedit. </p> <ul> <li><b>Area</b> : 1200 m2</li> <li><b>Completed Date</b> : May 2020</li> <li><b>Architect</b> : Mark Lee</li> <div class="detail"> <div> <span>132</span>WORKING DAY </div> <div> <span>202</span>MEMBERS </div> <div> <span>5M</span>BUDGET </div> </div> <a class="view-project" href="project-detail-03.html" data-featherlight="iframe">view project<i class="fa fa-long-arrow-right"></i></a> </ul> </div> <div class="project-photo"> <img src="images/project-main-03-01.jpg"> <img src="images/project-main-03-02.jpg"> <img src="images/project-main-03-03.jpg"> <img src="images/project-main-03-04.jpg"> </div> </div> </div> <div class="btn"> <label for="tab1"></label> <label for="tab2"></label> <label for="tab3"></label> </div> </div> </div> </div> </section> <section class="cd-section" id="plan"> <div> <div class="content"> <div class="plan-inner"> <div class="plan-feature"> <div class="plan-info"> <div class="plan-heading"> <h2>Planning<br> For the Next Project</h2> <hr class="bar"> <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Facilis at deleniti ullam aut. Ex, dolorem animi, enim vitae molestiae eligendi, neque deserunt veritatis nam voluptate repellendus? Quis, itaque totam fuga repellat ut animi molestiae suscipit commodi culpa ducimus. Illo accusantium non numquam? Hic tempore molestias dicta labore debitis cupiditate ab.</p> </div> <div class="plan-photo"> <img src="images/plan-main-01.jpg"> </div> </div> <div class="history-info"> <h2>History</h2> <hr class="bar"> <div class="history-slider"> <div> <h4>The Project <br>of Architecture for the <span>2013</span></h4> <p> Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nostrum et beatae aperiam perferendis explicabo quod voluptate sed autem sapiente distinctio. </p> </div> <div> <h4>The Project <br>of Architecture for the <span>2014</span></h4> <p> Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nostrum et beatae aperiam perferendis explicabo quod voluptate sed autem sapiente distinctio. </p> </div> <div> <h4>The Project <br>of Architecture for the <span>2015</span></h4> <p> Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nostrum et beatae aperiam perferendis explicabo quod voluptate sed autem sapiente distinctio. </p> </div> <div> <h4>The Project <br>of Architecture for the <span>2016</span></h4> <p> Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nostrum et beatae aperiam perferendis explicabo quod voluptate sed autem sapiente distinctio. </p> </div> <div> <h4>The Project <br>of Architecture for the <span>2017</span></h4> <p> Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nostrum et beatae aperiam perferendis explicabo quod voluptate sed autem sapiente distinctio. </p> </div> <div> <h4>The Project <br>of Architecture for the <span>2018</span></h4> <p> Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nostrum et beatae aperiam perferendis explicabo quod voluptate sed autem sapiente distinctio. </p> </div> <div> <h4>The Project <br>of Architecture for the <span>2019</span></h4> <p> Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nostrum et beatae aperiam perferendis explicabo quod voluptate sed autem sapiente distinctio. </p> </div> <div> <h4>The Project <br>of Architecture for the <span>2020</span></h4> <p> Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nostrum et beatae aperiam perferendis explicabo quod voluptate sed autem sapiente distinctio. </p> </div> </div> </div> </div> </div> </div> </div> </section> <section class="cd-section" id="awards"> <div> <div class="content"> <div class="awards-inner"> <div class="about-awards"> <div class="about-heading"> <h2>2020 <br>Architecture Awards <br>Winner</h2> <hr class="bar"> <p> The mission of the Architecture MasterPrize (AMP) is to advance the appreciation and exposure of quality architectural design worldwide. The AMP architecture award celebrates creativity and innovation in the fields of architectural design, landscape architecture, and interior design. Submissions from architects all around the world are welcome. </p> <a class="view-awards" href="https://architectureprize.com/" target="_blank">VIEW THE AWARDS</a> </div> </div> <div class="victory-jump"> <img src="images/victory-jump.png"> </div> </div> </div> </div> </section> <section class="cd-section" id="location"> <div> <div class="content"> <div class="location-inner"> <div class="feature"> <div class="office"> <div class="headquater"> <b>CREATIVE DESGIN GROUP</b> <h2>Headquarter</h2> <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia culpa libero, veritatis vero corporis quasi eaque commodi quia fugiat, qui ad consectetur vitae. Obcaecati odit expedita officia, veritatis accusamus illo. </p> <span>Address : #324, 510, Misa-daero, Hanam-si, Gyeonggi-do, Republic of Korea / Tel : 031 425 3336</span> </div> <div class="customer"> <b>THE PERFECT WAY</b> <h2>Customer Service</h2> <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia culpa libero, veritatis vero corporis quasi eaque commodi quia fugiat, qui ad consectetur vitae. Obcaecati odit expedita officia, veritatis accusamus illo. </p> <span>Address : #324, 510, Misa-daero, Hanam-si, Gyeonggi-do, Republic of Korea / Tel : 031 425 3336</span> </div> </div> <div class="service"> <div class="service-item"> <i class="fa fa-leaf"></i> <h3>Built and natural contexts</h3> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nulla voluptatibus debitis tempora impedit quam. </p> </div> <div class="service-item"> <i class="fa fa-bullseye"></i> <h3>Landscape design</h3> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nulla voluptatibus debitis tempora impedit quam. </p> </div> <div class="service-item"> <i class="fa fa-cube"></i> <h3>Every building site unique</h3> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi nulla voluptatibus debitis tempora impedit quam. </p> </div> </div> </div> </div> </div> </div> </section> <section class="cd-section" id="contact"> <div> <div class="content"> <div class="contact-inner"> <div class="contact-feature"> <div class="contact-form"> <h3><b>Contact </b>Us</h3> <p>Feel free to ask for details, don't save any questions.</p> <form class="send-box"> <label>Email <span>*</span></label> <input type="email"> <label>Subject <span>*</span></label> <input type="text"> <label>Message <span>*</span></label> <textarea cols="30" rows="10"></textarea> <!-- <input type="submit" value="send message"> --> <button>send message</button> </form> </div> <div class="contact-info"> <h4>Our <b>Office</b></h4> <ul> <li>Address : #324, 510, Misa-daero, Hanam-si, Gyeonggi-do, Republic of Korea</li> <li>Phone: +82-31-425-3336, +82-10-3687-4054</li> <li>Email: oykang64@gmail.com</li> </ul> <h4>Business <b>Hours</b></h4> <ul> <li><i class="fa fa-clock-o"></i> Monday - Friday : 9am to 5pm</li> <li><i class="fa fa-clock-o"></i> Saturday : 9am to 2pm</li> <li><i class="fa fa-clock-o"></i> Sunday : Closed</li> </ul> <h4>Get in <b>Touch</b></h4> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Suscipit impedit qui harum nulla cum hic sed esse molestias animi veniam. </p> </div> </div> </div> </div> </div> </section> <header> <div class="gnb-inner"> <div class="logo">bizpage</div> <div class="gnb"> <div class="menu"> <a href="#home">Home</a> <a href="#about">About</a> <a href="#project">Project</a> <a href="#plan">Plan & History</a> <a href="#awards">Awards</a> <a href="#location">Location</a> <a href="#contact">Contact</a> </div> <div class="slogan">We think different and make different.</div> </div> <div class="trigger"> <span></span> <span></span> <span></span> </div> </div> </header> </div> <a href="#" class="gototop active"><img src="images/gototop.png"></a> <a href="hiring.html" class="btn-hiring" data-featherlight="iframe"><i class="fa fa-commenting"></i></i>Hiring</a> <nav> <ul class="cd-vertical-nav"> <li><a href="#0" class="cd-prev inactive">Next</a></li> <li><a href="#0" class="cd-next">Prev</a></li> </ul> </nav> </body> </html> style.css: /* Google Web Font : Montserrat */ @import url('https://fonts.googleapis.com/css?family=Montserrat:200,300,400,500&display=swap'); @import url('https://fonts.googleapis.com/css?family=Manrope:300,400,500,600&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@200;300;400;600;700;900&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Nanum+Gothic&family=Nunito&family=Open+Sans:ital,wght@0,300;0,400;0,500;0,600;1,400&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Nanum+Gothic&family=Nunito&family=Open+Sans:ital,wght@0,300;0,400;0,500;0,600;1,400&family=Overpass&family=Source+Sans+Pro&display=swap'); /* FontAwesome CDN 4.7 */ @import url('https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css'); /* Reset CSS */ * { box-sizing: border-box;} ul {list-style: none; padding: 0;} a {text-decoration: none;} /* Default CSS */ body { font-family: 'Open Sans', 'sans-serif'; color: #222; font-size: 15px; margin: 0; height: 100vh; background-color: #fff; } /* Entire Layout */ .cd-section { height: 100vh; } .cd-section > div { height: 100%; position: relative; } .content { position: absolute; width: calc(100% - 40px); height: calc(100% - 80px); left: 20px; bottom: 20px; overflow: hidden; } /* Header */ header { position: fixed; top: 0; left: 0; width: 100%; z-index: 100; } .gnb-inner { /* border: 1px solid #000; */ width: calc(100% - 40px); margin: auto; height: 60px; line-height: 60px; } .logo { font-size: 2.4rem; font-weight: bold; color: #066bf7; float: left; } /* .logd img { padding-top: 17px; } */ .gnb { float: right; } .menu { display: none; } /* .menu a {} */ .slogan { font-style: italic; font-size: 16px; float: right; } .trigger { display: none; } /* Hiring Button */ .btn-hiring { position: fixed; right: 30px; bottom: 30px; color: #fff; background-color: #000; padding: 10px 20px; border-radius: 20px; box-shadow: 5px 5px 20px rgba(0, 0, 0, 0.38); transition: 0.5s; } .btn-hiring .fa { transform: rotateY(180deg); margin-right: 5px; } .btn-hiring:active { transform: scale(0); } /* ################## Section : home ################## */ .home-inner { background-color: #fff; height: 100%; } .home-inner::before { content: ''; background-color: #000; position: absolute; width: 0%; height: 100%; top: 0; left: 0; animation: overlay 1s 3s ease-in-out both; } .welcome-text { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 50px; font-weight: 300; text-align: center; line-height: 1.2em; margin: 0; font-family: 'Source Sans Pro', sans-serif; animation: slideup 3s 0s linear; animation-fill-mode: both; } .welcome-text span { display: block; font-size: 26px; color: #066bf7; } .welcome-text span .fa { color: crimson; margin-left: 10px; } .opacity-image { background: url(images/section-bg-01.jpg) no-repeat center center; height: 100%; background-size: cover; opacity: 0; animation: opacity-image 1s 3.5s ease-in both; } .home-heading { position: absolute; top: 50%; left: 250px; transform: translateY(-50%); } .home-heading span { display: block; font-size: 90px; color: #fff; font-weight: bold; width: 0; overflow: hidden; } .home-heading span:nth-child(1) { animation: reveal 1s 4s ease-in-out both; } .home-heading span:nth-child(2) { animation: reveal 1s 4.5s ease-in-out both; } .home-heading span:nth-child(3) { animation: reveal 1s 5s ease-in-out both; } @keyframes slideup { 0% { opacity: 0; margin-top: 50px; } 20% { opacity: 0.5; margin-top: 0; } 80% { opacity: 1; margin-top: 0; } 100% { opacity: 0; } } @keyframes overlay { 0% { width: 0; left: 0; } 50% { width: 100%; left: 0; } 100% { width: 0; left: 100%; } } @keyframes opacity-image { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes reveal { 0% { width: 0; } 100% { width: 100%; } } /* ################## Section : about ################## */ .about-inner { background: #0dace3 url(images/line-drawing.png) no-repeat right bottom; height: 100%; background-size: 60%; /* background-color: #0dace3; */ } .about-items { width: 60%; color: #fff; position: absolute; top: 50%; transform: translateY(-50%); margin-left: 100px; } .item { overflow: hidden; margin: 60px; } .item:hover h3 { color: #000; /* letter-spacing: 0px; */ } .item:hover img { filter: invert(0); } .item img { height: 160px; float: left; margin-right: 30px; filter: invert(1); transition: 0.5s; } .item h3 { font-size: 30px; font-weight: 500; margin: 0; transition: 0.5s; letter-spacing: -1px; } .item p { overflow: hidden; font-size: 20px; } /* ################## Section : project ################## */ .project-inner { height: 100%; } .tabs { height: 100%; width: 300%; transition: 0.5s; } .tab { height: 100%; float: left; width: 33.333333%; } .tab > div { height: 100%; float: left; } .project-info { width: 25%; background-color: #fff; } .project-photo { width: 75%; height: 100%; /* overflow: hidden; */ } .project-photo img { width: 100%; height: inherit; object-fit: cover; } input[name="tabmenu"] { display: none; } .btn { position: absolute; left: 0; bottom: 30px; width: 25%; text-align: center; } .btn label { cursor: pointer; width: 5px; height: 5px; background-color: #000; display: inline-block; border-radius: 50%; margin: 8px; position: relative; } .btn label::before { content: ''; display: inline-block; border: 1px solid transparent; width: 15px; height: 15px; border-radius: 50%; position: absolute; left: -5px; top: -5px; transition: 0.3s; } .btn label:hover::before { border: 1px solid #aaa; } input[id=tab1]:checked ~ .btn label[for=tab1]::before, input[id=tab2]:checked ~ .btn label[for=tab2]::before, input[id=tab3]:checked ~ .btn label[for=tab3]::before { border: 1px solid #aaa; } input[id=tab1]:checked ~ .tabs { margin-left: 0; } input[id=tab2]:checked ~ .tabs { margin-left: -100%; } input[id=tab3]:checked ~ .tabs { margin-left: -200%; } /* project-info */ .project-info { padding: 30px; position: relative; } .project-info h3 { font-size: 18px; position: relative; } .project-info p { font-size: 16px; line-height: 1.4em; } .project-info ul { line-height: 2em; } .project-info ul li::before { content: "\f105"; font-family: fontawesome; margin-right: 10px; } .detail { margin-top: 30px; margin-bottom: 30px; } .detail div { display: inline-block; text-align: center; width: 32%; color: #999; font-size: 12px; } .detail div span { font-size: 36px; font-weight: bold; display: block; margin-bottom: 10px; color: #000; } .view-project { background-color: #3f3f3f; color: #fff; text-transform: uppercase; font-size: 13px; text-align: center; width: 200px; display: inline-block; transition: 0.5s; } .view-project:hover { background-color: #000; } .view-project .fa { margin-left: 10px; transition: 0.5s; } .view-project:hover .fa { margin-left: 30px; } .project-info::before { content: attr(data-text); font-size: 100px; color: #eee; position: absolute; top: -15px; left: 10px; } /* ################## Section : plan ################## */ .plan-inner { background-color: #1d1b24; height: 100%; } .plan-feature { width: 85%; height: 85%; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .plan-feature > div { height: 250px; color: #aaa; } .plan-info > div { float: left; } .plan-heading { width: 70%; padding-right: 50px; } .plan-heading h2, .history-info h2 { font-weight: normal; color: #fff; margin: 0; } .plan-heading p { font-size: 14px; line-height: 1.4em; margin: 0; } .plan-photo { width: 30%; } .plan-photo img { height: 200px; } .plan-heading hr.bar, .history-info hr.bar { background-color: dodgerblue; margin-top: 20px; display: inline-block; } .history-slider div { margin-right: 10px; } .history-slider div h4 { color: #fff; font-size: 20px; font-weight: normal; margin: 0; } .history-slider div h4 span { color: dodgerblue; } .history-slider div p { font-size: 14px; line-height: 1.5em; } /* Slick.js Custom CSS */ .history-slider .slick-arrow { display: none !important; } .history-slider .slick-dots li button::before { color: #fff; font-size: 40px; } .history-slider .slick-dots li { margin: 0; } /* ################## Section : awards ################## */ .awards-inner { height: 100%; } .awards-inner > div { float: left; width: 50%; height: 100%; position: relative; } .about-awards { background-color: #1a1f24; color: #fff; } .about-heading { position: absolute; top: 50%; left: 50%; transform: translate(-50% ,-50%); text-align: center; width: 70%; } .victory-jump { background-color: #eee; } .victory-jump img { position: absolute; top: 50%; left: 50%; transform: translate(-50% ,-50%); width: 80%; } .about-heading h2 { margin: 0; } hr.bar { width: 50px; height: 4px; border: none; background-color: crimson; margin: 30px auto; } .about-heading p { color: #999; font-size: 17px; line-height: 1.5em; /* 16px * 1.5 */ /* margin-bottom: 40px; */ } .view-awards { color: #aaa; border: 1px solid #aaa; padding: 5px 15px; border-radius: 20px; transition: 0.5s; display: inline-block; margin-top: 20px; } .view-awards:hover { background-color: #31c0ce; color: #fff; border-color: transparent; } /* ################## Section : location ################## */ .location-inner { background: url(images/background-location.jpg) no-repeat center center; height: 100%; position: relative; } .location-inner::before { content: ''; background-color: rgba(0, 0, 0, 0.8); width: 100%; height: 100%; position: absolute; /* display: block; */ } .feature { width: 80%; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .feature > div { float: left; color: #aaa; } .office { width: 60%; padding-right: 100px; } .service { width:40%; } .office b { font-weight: normal; } .office h2 { color: #1db1f0; font-weight: 500; margin: 5px 0; } .office p { font-size: 16px; line-height: 1.5em; } .office span { color: #fff; } .customer { margin-top: 40px; } .service-item { margin-top: 40px; } .service-item .fa { color: #1db1f0; font-size: 40px; } .service-item h3 { color: #fff; font-size: 22px; margin: 0; } /* ################## Section : contact ################## */ .contact-inner { background-color: #eee; height: 100%; border: 1px solid #ddd; } .contact-feature { width: 80%; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .contact-feature > div { float: left; width: 50%; padding: 20px; } .contact-form h3 { font-size: 30px; font-weight: normal; margin: 0; } .send-box label { display: block; font-weight: bold; font-size: 16px; margin: 10px 0; margin-top: 20px; } .send-box label span { color: crimson; font-weight: normal; } .send-box input[type=email], .send-box input[type=text], .send-box textarea { border: 1px solid #ccc; padding: 10px; border-radius: 3px; outline: none; width: 100%; transition: 0.5s; } .send-box input[type=email]:hover, .send-box input[type=text]:hover, .send-box textarea:hover { border: 1px solid #0088cc; box-shadow: 0 0 5px #0088cc; } .send-box input[type=email]:focus, .send-box input[type=text]:focus, .send-box textarea:focus { background-color: #fff; } .send-box button { background-color: #0088cc; color: #fff; display: block; text-transform: uppercase; padding: 12px 20px; border: none; border-radius: 5px; cursor: pointer; transition: 0.5s; margin-top: 20px; } .send-box button:hover { background-color: #000; } .contact-info h4 { font-weight: normal; font-size: 20px; margin: 0; margin-top: 20px; } .contact-info ul li { line-height: 2em; /* body 15px x 2 */ } .contact-info ul li:last-child { color: #0088cc; } .contact-info p { line-height: 1.5em; } /* ################## Subpage : hiring ################## */ .modal { font-family: 'Source Sans Pro', sans-serif; } .header { position: fixed; width: 100%; background-color: #fff; z-index: 1000; } .header-inner { width: 95%; margin: auto; height: 90px; line-height: 90px; border-bottom: 1px solid #ddd; } .modal-dispaly { font-size: 16px; } .hiring-main { height: 600px; position: relative; } .hiring-heading { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); text-align: center; } .hiring-heading span { text-transform: uppercase; font-weight: 600; font-size: 20px; position: relative; } .hiring-heading span::before, .hiring-heading span::after { content: ''; height: 2px; background-color: #000; position: absolute; width: 30px; top: 50%; } .hiring-heading span::before { right: 120%; } .hiring-heading span::after { left: 120%; } .hiring-heading h1 { font-size: 80px; font-weight: 200; margin: 0; margin-top: 40px; } .hiring-info { overflow: hidden; margin-bottom: 30px; } .hiring-info > div { float: left; width: 50%; height: 480px; } .center-parent { position: relative; } .center-child { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 70%; } .center-child h2 { font-size: 30px; font-weight: normal; } .center-child p { font-size: 20px; font-weight: 300; line-height: 1.5em; } /* .photo { background: url(images/hiring-main-01-01.jpg) no-repeat center center; background-size: cover; } */ .photo img { width: 100%; height: 100%; } .hiring-slogan { display: inline-block; padding: 100px; } .hiring-slogan p { font-size: 25px; font-weight: 300; text-align: center; width: 80%; margin: auto; position: relative; color: #999; } .hiring-slogan p::before { content: ',,'; font-family: 'Overpass', sans-serif; font-size: 180px; position: absolute; color: #ddd; transform: rotate(180deg); top: -78px; left: -85px; } .hiring-contact ul { display: inline-block; width: 49%; font-size: 16px; font-weight: 300; line-height: 1.6rem; } .hiring-contact ul li:first-child { font-weight: 400; } .hiring-contact ul li:last-child { color: dodgerblue; } .sns { margin-top: 20px; } .sns a { font-size: 15px; color: #000; width: 30px; height: 30px; display: inline-block; border-radius: 50%; text-align: center; line-height: 30px; margin: 2px; position: relative; transition: 0.3s; } .sns a::before { content: ''; position: absolute; width: inherit; height: inherit; border-radius: 50%; z-index: -1; left: 50%; transform: translateX(-50%) scale(0); transition: 0.3s; } .sns a:hover { color: #aaa; } .sns a:hover::before { transform: translateX(-50%) scale(1); } .sns a:nth-child(1)::before { background-color: #1877F2; } .sns a:nth-child(2)::before { background-color: #1DA1F2; } .sns a:nth-child(3)::before { background-color: #0A66C2; } .sns a:nth-child(4)::before { background-color: #E4405F; } .sns a:nth-child(5)::before { background-color: #CD201F; } .sns a:nth-child(6)::before { background-color: #09B83E; } /* ################## Subpage : project-detail ################## */ .project-detail .hiring-main.project-main1 { background: url(images/project-modal-main-01.jpg) no-repeat center center; background-size: cover; height: 100vh; } .project-detail .hiring-main.project-main2 { background: url(images/project-modal-main-02.jpg) no-repeat center center; background-size: cover; height: 100vh; } .project-detail .hiring-main.project-main3 { background: url(images/project-modal-main-03.jpg) no-repeat center center; background-size: cover; height: 100vh; } .project-detail .hiring-heading { color: #fff; width: 100%; animation: slidedown 1s linear both; } .project-detail .hiring-heading h1 { font-size: 60px; } .project-detail .hiring-heading span::before, .project-detail .hiring-heading span::after { background-color: #fff; } .project-detail .hiring-info { margin-bottom: 0; } .project-detail .center-child p { font-size: 18px; } .project-detail .project-info { font-size: 18px; font-weight: 300; padding-top: 100px; border: none; } @keyframes slidedown { 0% { opacity: 0; margin-top: -50px; } 100% { opacity: 1; margin-top: 0; } } /* Featherlight Custom CSS */ .featherlight .featherlight-content { position: relative; text-align: left; vertical-align: middle; display: inline-block; overflow: auto; padding: 0; border-bottom: 25px solid transparent; margin-left: 0; margin-right: 0; max-height: 100%; background: #fff; cursor: auto; white-space: normal; width: 100%; height: 100%; outline: none; } .featherlight iframe { border: none; width: 100%; height: 100%; } .featherlight .featherlight-close-icon { position: absolute; z-index: 9999; top: 10px; right: 10px; line-height: 25px; width: 25px; cursor: pointer; text-align: center; font-family: Arial, sans-serif; background: #fff; background: rgba(255, 255, 255, 0.3); color: #000; border: none; padding: 0; font-size: 30px; color: #bbb; } responsive.css: @media (max-width: 480px) { /* html { scroll-behavior: smooth; } */ /* Entire Layout */ .cd-section { height: auto; } .cd-section > div { height: auto; } .content { position: static; width: 100%; height: 100%; } /* Header */ header { transition: 0.5s; z-index: 100; } header.active { background-color: #fff; border-bottom: 1px solid #eee; } .logo { color: #fff; } .logo.active { color: #066bf7; } .menu { display: block; } .slogan { display: none; } .gnb { background-color: #fff; position: fixed; top: 0; right: -270px; width: 250px; height: 100vh; box-shadow: -5px 0 10px rgba(0, 0, 0, 0.1); transition: 0.5s; } .gnb.active { right: 0; } .menu { line-height: 40px; margin-top: 60px; } .menu a { text-align: right; display: block; padding-right: 20px; color: #000; font-size: 20px; } /* Trigger */ .trigger { display: block; width: 24px; height: 14px; position: absolute; right: 20px; top: 20px; } .trigger span { position: absolute; height: 1px; width: 100%; background-color: #000; transition: 0.5s; } .trigger span:nth-child(1) { top: 0; } .trigger span:nth-child(2) { top: 50%; width: 80%; } .trigger span:nth-child(3) { top: 100%; } .trigger.active span:nth-child(1) { top: 50%; transform: rotate(45deg); } .trigger.active span:nth-child(2) { top: 50%; width: 80%; opacity: 0; } .trigger.active span:nth-child(3) { top: 50%; transform: rotate(-45deg); } /* Gototop */ .gototop { position: fixed; bottom: 20px; left: 20px; border: 1px solid #fff; display: block; width: 40px; height: 40px; border-radius: 50%; text-align: center; line-height: 50px; transform: translateY(30px); opacity: 0; transition: 0.5s; } .gototop.active { opacity: 1; transform: translateY(0px); } .btn-hiring { right: 15px; bottom: 20px; font-size: 15px; padding: 5px 10px; } .cd-vertical-nav { display: none; } /* ################## Section : home ################## */ .home-inner { height: 100vh; } .welcome-text { transform: translate(-50%, -50%) scale(0.7); width: 100%; font-size: 40px; } .home-heading { left: 30px; } .home-heading span { font-size: 40px; } /* ################## Section : about ################## */ .about-inner { height: auto; padding-top: 10px; } .about-items { width: 100%; position: static; margin-left: 0; transform: none; text-align: center; padding: 20px; } .item img { float: none; height: 120px; } .item h3 { font-size: 22px; } .item p { font-size: 16px; } /* ################## Section : project ################## */ .project-inner { height: auto; padding-top: 60px; } .tab > div { width: 100%; float: none; } .view-project { width: 100%; } .project-info { padding: 20px; } .project-info p { position: relative; } .btn { width: 100%; bottom: -10px; background-color: #fff; padding: 20px; } .project-info::before { top: -20px; } /* ################## Section : plan ################## */ .plan-inner { height: auto; padding-top: 60px; } .plan-feature { width: 100%; position: static; transform: none; padding: 20px 0 20px 20px; } .plan-feature > div { height: auto; } .plan-info > div { float: none; width: 100%; } .plan-photo img { width: 100%; margin: 20px 0; } .plan-heading { padding-right: 0; } /* ################## Section : awards ################## */ .awards-inner { height: auto; } .awards-inner > div { float: none; width: 100%; } .about-heading, .victory-jump img { position: static; transform: none; width: 100%; padding: 70px 20px; } /* ################## Section : location ################## */ .location-inner { height: auto; } .feature { width: 100%; position: relative; top: 0; left: 0; transform: none; padding-top: 50px; } .feature > div { float: none; width: 100%; padding: 20px; } /* ################## Section : contact ################## */ .contact-inner { height: auto; padding: 60px 20px 20px 20px; } .contact-feature { width: 100%; position: static; transform: none; } .contact-feature > div { float: none; width: 100%; } /* ################## Subpage : hiring ################## */ .hiring-main { height: 300px; } .hiring-heading { width: 100%; top: 65%; } .hiring-heading h1 { font-size: 32px; margin-top: 20px; } .hiring-info > div { float: none; width: 100%; height: auto; padding: 20px; } .center-child { position: static; transform: none; width: 100%; } .center-child h2 { font-size: 24px; } .hiring-slogan { padding: 50px 20px; } .hiring-slogan p { font-size: 24px; } .hiring-slogan p::before { font-size: 140px; top: -60px; left: -45px; } .hiring-contact ul { display: block; width: 100%; } /* featherlight */ .featherlight .featherlight-close-icon { font-size: 24px; right: 20px; top: 30px; } /* ################## Subpage : project-detail ################## */ .project-detail .hiring-main.project-main1, .project-detail .hiring-main.project-main2, .project-detail .hiring-main.project-main3 { height: 70vh; } .project-detail .hiring-heading { top: 220px; } .project-detail .hiring-heading h1 { font-size: 40px; } .project-detail .project-info { font-size: 18px; font-weight: 300; padding-top: 0; } /* slick-theme.css .slick-prev slick-arrow 제거 */ .slick-prev:before { content: ''; } }
-
미해결파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기
위시캣 로그인 처리 및 크롤링 질문
안녕하세요 먼저 좋은강의 감사합니다 위시캣 강의수강중 두가지 질문사항이 있습니다 1)녹화시점과는 다르게 위시캣 개발자도구에서 form data가 나오지 않습니다 왜이런건지 의도적으로 숨긴건가요??이럴경우에는 formdata를 어떻게 확인할수있을까요?? 강의시점 현재 제가확인하는 화면 request headers 밑에 formdata가없음 2) 위의 formdata 확인없이도 key값이름이 바뀌진 않았는지 다행히 로그인되어 실습은 완료하였습니다 그런데 만약 아래와 같이 parsing이 되었다고 했을때 [<div class="body-3 mb10 header">지원한 프로젝트<p class="body-3-medium">0건</p></div>, <div class="body-3 mb10 header">계약한 프로젝트<p class="body-3-medium">0건</p></div>, <div class="body-3 header">누적 완료 금액<p class="body-3-medium">0원</p></div>] 출력결과를 강의영상처럼 div태그에있는 지원한프로젝트 따로 p태그에있는 0건 따로 각각 string을 사용해서 출력하려면 어떻게 코드를짜야할까요?? 아래처럼 p태그는 접근이되는데 div태그에 있는 텍스트가 따로접근이 안되어서(아래처럼 None출력됨) string이 아닌 text를 사용하여 실습완료 했습니다 <참고용실습전체코드> import sys import io from bs4 import BeautifulSoup import requests from fake_useragent import UserAgent sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8') sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8') #요청 URL URL = 'https://www.wishket.com/accounts/login/' #Fake User-Agent 생성 ua = UserAgent() #print(ua.ie) #print(ua.chrome) #print(ua.random) with requests.Session() as s: #URL연결 s.get(URL) #Login 정보 Payload LOGIN_INFO = { 'identification': 'xxx', 'password': 'xxx', 'csrfmiddlewaretoken': s.cookies['csrftoken'] } #print('token', s.cookies['csrftoken']) #요청 response = s.post(URL,data=LOGIN_INFO,headers={'User-Agent':str(ua.chrome), 'Referer':'https://www.wishket.com/accounts/login/'}) #HTML 결과 확인 #print('response',response.text) if response.status_code == 200 and response.ok: soup = BeautifulSoup(response.text,'html.parser') projectList = soup.select("div.user-project>div") for i in projectList: print(i.text)
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]
SQL오류...
안녕하세요? 박메일 선생님! 또 질문을 남기게 됩니다.. 현재 강의를 잘듣 고있는데 게시물 등록할때 강의 06:14까지 들었을때 영어로 게시물 등록하면 잘되는데 한글로 등록하면 java.sql.SQLException: Incorrect string value: '\xED\x95\x9C\xEA\xB8\x80...' for column 'title' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1094) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4226) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4158) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2840) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082) at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1302) at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:46) at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74) at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50) at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:198) at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:185) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:434) at com.sun.proxy.$Proxy15.insert(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:279) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:57) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59) at com.sun.proxy.$Proxy17.insert(Unknown Source) at kr.inflearn.service.BoardServiceImpl.register(BoardServiceImpl.java:24) at kr.inflearn.web.BoardController.registerPost(BoardController.java:41) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:871) at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:615) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1627) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) 이러한 오류가 뜹니다 ㅜㅜ web.xml에는 필터 잘 설정해 두었습니다. 혹시 이런경우 톰캣에서 한글설정을 하면 되는지 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1 - N번 질문 있습니다.
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll a,b,c; ll go(ll a, ll b){ if(b == 1){return a % c; ll _c = go(a, b/2); _c = (_c * _c) % c; if(b % 2) _c = (_c * a) % c; return _c; } } 재귀 부분에서 _c의 값을 어떻게 결정하는건가요?? _c = (_c * _c) % c 이라면 값을 결정할 수 없는거 아닌가요ㅜㅠ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
자바 11 환경변수 설정 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 4월에 VS코드를 받고 자바 18버전을 세팅해놓았는데 어제 섹션1 프로젝트 생성 강의 진행 중에 자바 11을 설치하여 환경변수 설정까지 마치고 실행 후 명령프롬프트 java -version을 실행하면 여전히 18 버전이라고 나옵니다.. 인텔리제이에서는 17로 떠서 에러가 나구요 어떻게 해야할까요?
-
미해결데이터 분석 SQL Fundamentals
DB연결방식 관련 문의
안녕하세요 선생님~! DB연결 관련 질문이 있습니다~ 첫 강의 듣는데, DB연결을 백업파일로 DB 복원으로 하는 것 같은데, 현재 제가 회사 노트북에서 실습을 하고 있어서요 ㅠㅠ 회사 DB에 백업파일 복원 방식으로 DB를 불러오면 혹시나 문제가 생길까봐 혹시 복원말고 다른 방식으로 DB 추가할 수 있는 방법은 없을지 문의드립니다! 아니면 기존 DB에 복원을 하여도 문제가 생기지 않을런지요. 확인부탁드립니다.
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
group id 질문입니다
group id 옵션 설정하게 되면 consumer group 이 지정되어, 컨슈머가 토픽의 파티션을 구독하는 형태로 지정이 된다고 이해하고 있습니다. Assignor 가 (2.5.0기준 RangeAssignor) 해당 컨슈머 그룹에 구독되는걸 설정해 주는건지가 궁금합니다. 컨슈머 그룹 운영시에 Assignor 가 설정한다면 assign() 함수로 할당을 하게 된다면 어떻게 할당되는지도 궁금합니다. Assignor 가 동작을 하지 않고 개발자가 직접 할당하는 것인지... 정리하자면 GroupId 를 사용하는 컨슈머 그룹에 대한 구독 대한 설명과 Assing() 함수를 통하여 컨슈머를 할당하는 것에 대한 차이가 어떻게 되는것인지 입니다
-
미해결
em.clear() 후 member.getId()
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 자바ORM표준 JPA프로그래밍 - 기본편을 들으면서 기초를 다지고 있습니다. 관련 질문들이 있는지 찾아봤는데 말끔히 해소되지 않는 부분이 있어서요 id 생성전략은 AUTO로 두었습니다. AUTO에서는 em.persist, 즉 영속화할 때 id생성을 위해서 DB로부터 id값을 가져와야 하기 때문에 call next value for hibernate_sequence 다음과 같은 쿼리를 통해 id값을 가져온다고 이해했습니다. 해당 코드에서는 영속화를 하고 flush()를 진행한 후에 clear()를 진행하는데, clear()는 해당 영속성 컨텍스트를 모두 비우는 것인데, find메서드에서 인자값으로 member.getId()를 넣어줬는데 실제로 값이 있다는 것에서 조금 미묘하게 헷갈려서요 persist할 때 db로부터 id값을 알아온 것은 해당 영속성컨텍스트를 비워줘도 사용이 가능한건가요? id값을 알고있는 것과 영속성컨텍스트를 비우는 것은 영향을 미치지 않는다고 봐도되는것인가요?
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
페이징 정렬 문의
이전 페이징 섹션에서 Pageable로 조회할때는 정렬 기본 조건이 ASC 라 순차적으로 조회되는거는 이해 했는데요, QueryDSL에서 PostSearch를 이용한 페이징에서는 정렬 조건이 없는데 기본이 DESC 인거 같습니다. 어디서 설정되는지요..? 이 부분도 기존 Pageable과 같이 id 1번 값부터 나올꺼라 기대했었습니다. 추가로 PostSearch에 페이징 조건만 들어가 있는데 보통 조회 조건 필드 Condition 클래스와 Paging 관련 클래스를 상속해서 사용할까요? PostSearch 처럼 다른 도메인 조회/페이징 처리할때마다 동일하게 페이지 관련 정보를 입력할꺼 같지는 않아서요. 감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의는 샀지만..
안녕하세요. 입문강의를 다 듣고 이제 다음 강의로 넘어가 보려고 합니다. 하지만 입문강의를 들었을때 좀 벅차다라는 생각이 들었습니다. 흐름은 알겠으나, 이해가 안되는부분을 생각해보면 .(점)이나 ()(괄호) 부분의 사용처 입니다. 막상 제가 혼자 개발을 한다고 생각해보면 ex) member1 = new MMR(); member2 = new MS(member1); Member finMember = memberService.finOne(SaveId).get(); Member member = em.find(Member.class, id); @GeneratedValue(strataegy = GenerationType.IDENTITY) 위 예제처럼 ()안에 들어갈 때와 의미 어떨때 들어가는지, .get()이 추가 의미 및 언제 사용하고 어느때 사용 하는지, Member.class 처럼 .class는 언제 어느때 들어가고 왜들어가는지.. @GeneratedValue에 GenerationType.IDENTITY 선택은 왜 했는지.. Ctrl + Q누르면 설명이 나오긴하는데 감이 안잡힙니다. 어느 핀트를 잡고 그 원리대로만 가면 되는건지... 강사님이 말씀하신것처럼 망망대해처럼 제가 뭐가 부족해서 어떻게 공부를 해야 할 지 잘 모르겠습니다.
-
해결됨따라하며 배우는 리액트 A-Z[19버전 반영]
onSumbit={this.handleSumbit} 이랑 onSumbit={()=>this.handleSumbit()} 차이가 무엇인가요?
onSumbit={this.handleSumbit} 랑 onSumbit={()=>this.handleSumbit()} 랑 onSumbit={this.handleSumbit()} 랑 차이가 있을까요?