묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Vue3 완벽 마스터: 기초부터 실전까지 - "기본편"
'@' 경로 설정
안녕하세요. 기본편 수업을 다 듣고 궁금한 점이 생겨서 질문 드립니다. '@'를 사용해서 import를 했을때에는 Go to Definition 기능이 잘 작동하지 않고, ../components/ 식으로 작성했을 때에만 기능이 잘 작동합니다.구글링으로 해결해보려 했는데 처음 vue를 접하는 거라 검색이 쉽지가 않네요. 혹시나 방법을 아시면 알려주시면 감사하겠습니다!
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
마이바티즈 스프링 모듈이 해주는 예외 변환
안녕하세요 항상 좋은 강의 감사합니다. 강의 마지막 즈음에 JDBC는 스프링 내부적으로, 마이바티즈는 스프링 마이바티즈 모듈이 예외변환 을해준다고 하셨는데, 그럼 예외 변환을 위한 @Repository의 AOP프록시 객체는 필요가 없는건가요 ? 확인해보니 @Repository를 붙이면 무조건 프록시 객체로 만들어 주는것 같은데. 마이바티즈나 JDBC템플릿을 사용할때는 Repository 객체를 꼭 프록시 객체로 만들어야 하나 싶은 의문이 듭니다! 마이바티즈나 JDBC템플릿을 사용할 때는@Component만 사용하여 빈등록을 하여도 괜찮을까요 ? 감사합니다!
-
미해결[D.P.(DappProject)] 디앱 프로젝트(NFT 생성, NFT 구매 및 판매)
web3 설정 강의 수강중 메타마스크 연동후 deploy 후 컨트랙트 생성/ 빌드가 안됩니다.
Injected Provider-Metamask 메뉴좋은 강의 감사드립니다. web3 설정 강의 수강중 메타마스크 연동후 deploy 후 컨트랙트 생성/빌드가 안됩니다. remix-ide에 현재버전에서는 Inject Web3란 메뉴는 없고 Injected Provider-Metamask 메뉴가 있는데 이 메뉴 사용하는게 맞는거죠? Injected Provider-Metamask 메뉴선택 후 메타마스크 연동하고, MintAnimalToken 컨트랙트 선택후 "Deploy"버튼 실행하여 메타마스크 연동되여 가스비포함 컨트랙트 생성비용창까지 뜨고 확인을 눌렀지만, 이후 컨트랙트 생성이 안되고 아무런 반응이 없습니다. 왜 안되는 것일까요?
-
해결됨배달앱 클론코딩 [with React Native]
react-native Splash Screen 질문 드립니다!
안녕하세요 강의에 나온 스플래시 스크린 실습을 진행하고 있는데요.. MainActivity.java 코드가 달라서 실행 시 오류가 나 여쭤보고자 합니다. 이 제 MainActivity.java 코드는 위와 같이 생성되어 있었어요. onCreate 부분이 없어서 아래와 같이 함수 부분을 전부 복사해서 넣어서 사용했습니다. @Override protected void onCreate(Bundle savedInstanceState) { SplashScreen.show(this); // here super.onCreate(savedInstanceState); } 그런데 이제 run-android 시키니 해당 부분에서 오류가 발생했습니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
Test updateItem() 질문있습니다.
안녕하세요 항상 좋은 강의 감사드립니다! Jpa강의를 예전에 이미 다들었는데, 아직 실무에서 안쓰다보니 가물가물한 하네요..ㅜ ItemRepositoryTest에 updateItem() 테스트를 보면 save한후 update하고, 그후 find를 하게 되어있습니다. save()를 했을 때 영속 컨텍스트에 데이터가 저장되고, update(), find()했을때는 영속 컨텍스트에서 데이터를 가져와 사용하고 커밋되기 전 롤백되기 떄문에 쿼리가 발생하지 않는 걸로 알고있습니다. 그런데 save()를 할때 insert 쿼리는 발생하는게 이해가 가질 않습니다. 커밋을 하지않았기 때문에 insert쿼리는 발생하지 않고 영속 컨텍스트에만 저장되어 있어야 하지않나 생각이듭니다.. 기초적인 질문이라 죄송합니다.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
products send시 inactiveMockError
영상과 제 버전의 postman 인터페이스가 조금씩 달라 어려웠지만 한치의 오차도 없이 모두 영상 진도 그대로 따라갔는데 inactiveMockError가 뜹니다 ㅜㅜ
-
미해결[리뉴얼] 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로 떠서 에러가 나구요 어떻게 해야할까요?