본문 바로가기

분류 전체보기 98

[그때 알았더라면] 에밋(Emmet)이라고 들어봤니 hoxy...? 부트캠프 시작을 앞두고 정신이 집중이 안돼어서 1일1커밋을 실천하지 못할 것 같아 "지금은 별거 아니지만 처음 알았을 때 오와!!!! 했던 것들" 몇가지에 대해 좀 얘기를 해볼까 한다. 뭐 이를테면 깃이나, 정규표현식이라던가.. 숙련자들은 뭐 이런걸로 글을 썼대 하시겠지만(괜한 걱정), 초보자에게는 매우 도움이 될 것 같다. 내가 그랬으니까!!! 코딩을 처음 배운 사람이 보통 접하게 되는 언어가 뭐가 있을까? 요즘은 파이썬부터 시작하는 분들도 많이 있다지만, 보통은 HTML/CSS/(JS) 부터 접하게 될 것이다. "코딩"이라는 단어가 지금처럼 보편화 되기 전에도, ㅅㅇㅋㄹ, ㅆㅇㅇㄷ 등에서 게시물에 html 코드를 작성하는 방법을 아는 사람들끼리는 알았던 기억도 나고, 그때 네이버나 야후 같은 페이지에.. 2021. 9. 8.
제2회 스파르톤 생존일지!! 2021년 09월 04일 21시!!! 지금부터 시작입니다!!! 빠밤 오늘의 코딩은? 스프링부트 독학하기!! 빠밤!! 스파르타코딩클럽에서 웹개발의 봄, 스프링 반을 들었는데(여기 블로그에도 계속 개발일지 올렸었지), 파이썬과 자바스크립트와는 다르게 자바를 평소에 써 버릇 하지 않다 보니까 이걸 "할 줄 안다"라고 말하긴 힘들거같아 자기계발의 시간을 오늘의 9시간 동안에 가져볼까 합니다. 2021년 09월 04일 22시!!! 스프링(+스프링부트)을 다룬 책들을 보면 환경 설정이 정말 각양각색이고, 아직 각 버전의 차이도 모르는 나로써는 자바 8이랑 11이랑 무슨 차이가 있는지도 모르는데 아무거나 검색해서 보면 안되겠다는 생각에, 스파르타코딩클럽에서 가르쳐주신 강의환경과 최대한 유사한 환경에서 프로젝트를 만들.. 2021. 9. 4.
[파이썬으로 웹스크래핑] 에러? 또 에러?! 셀레니움으로 막힘 없이 스크랩하기 내가 앞에서 쓴 글, 혹은 다른 곳에서 셀레니움을 동작하는 방법을 익힌 분들이 셀레니움이 특정 페이지에서 요소를 못찾거나 하는 이유로 프로그램 자체가 정지해버려 다시 처음부터 자료를 쌓아야 했다거나, 그런 오류(예외)를 막기 위해 try: except: 구문을 남발했더니 코드가 지저분해졌다-하는 이의제기를 해주셔서 글을 작성해본다. 첫번째, 보통 만나게 되는 오류들 브라우저 드라이버를 자유롭게 다루는 셀레니움은 그 기능만큼이나 다양한 오류를 개발자에게 가져온다. 그 중 "웹스크래핑"을 시도하는 개발자에게 자주 보이는 오류들을 선정해본다. (전체 익셉션은 여기에) NoSuchElementException - "예? 그런 엘리먼트(태그) 없는데요?" 에러 ElementNotSelectableException.. 2021. 9. 4.
웹개발의 봄, 스프링 5주차 (최저가셀렉샵) [스파르타코딩클럽] 5주차는 지금까지 만든 나만의 셀렉샵 사이트와 스프링부트 서버를 아마존 AWS와 가비아 도메인을 통해 배포하는 내용이었다. 1. 아마존 RDS 구매하고 MySQL 세팅하기 2. html 웹페이지 메타 OG 태그 작업하기 3. 아마존 서버 EC2 구매하기 4. 도메인 구매 및 연결, EC2 셋팅하고 배포하기 AWS EC2란? 아마존 엘라스틱 컴퓨트 클라우드(Amazon Elastic Compute Cloud, EC2)는 아마존닷컴의 클라우드 컴퓨팅 플랫폼 아마존 웹 서비스의 중앙부를 이루며, 사용자가 가상 컴퓨터를 임대 받아 그 위에 자신만의 컴퓨터 애플리케이션들을 실행할 수 있게 합니다. EC2는 사용자가 아마존 머신 이미지(AMI)로 부팅하여 아마존이 “인스턴스”라 부르는 가상 머신을, 원하는 소프트웨.. 2021. 8. 19.
웹개발의 봄, 스프링 4주차 (최저가셀렉샵) [스파르타코딩클럽] 4주차에도 새로운 개념들을 많이 배웠다. 나만의 셀렉샵이라는 이름의 미니 프로젝트를 만들어보는 시간이었는데, 간단한 프로젝트지만 스프링의 중요한 요소들을 많이 다뤄주신 것 같아 정리 꼼꼼히 해둘 생각. 1. 3계층 아키텍처 어플리케이션을 3개의 논리적·물리적 컴퓨팅 계층으로 분리 구성하는 잘 정립된 소프트웨어 어플리케이션! (출처 IBM) 이 3개의 계층이란 프리젠테이션(클라이언트) 계층(JS,HTML,GUI 등 프론트엔드), 애플리케이션 계층(미들웨어, API), 데이터 계층(DBMS)으로 나눠지는데, 프리젠테이션 계층에서는 데이터 계층과 직접적으로 통신할 수 없고, 모든 통신은 애플리케이션 계층을 통과한다. 즉, 아래와 같은 형식으로 프로그램이 작동하는 모습인데, 적절한 분업을 통해 각각의 계층들이 .. 2021. 8. 18.
웹개발의 봄, 스프링 3주차 (24시간뉴스피드) [스파르타코딩클럽] 이번 주차는 메모의 CRUD를 구현하고 그것을 웹에 구현해, 24시간이 지나면 게시물(메모)이 저절로 사라지는 서비스를 만들었다. 스파르타코딩클럽의 왕초보시작반(웹개발 종합반1)을 들었던 사람이라면 내용이 파이썬의 Flask를 이용하는 것에서 자바의 Spring을 이용하는 것으로 바뀌었다고 생각하면 될 것 같다. 그래서 어떻게 보면 아는 사람한테는 별거 아닌 주차였고, HTML/CSS/JAVASCRIPT에 대한 기본기가 부족한 분들은 3주차가 의외로 길고 힘든 여정이 되었을 수도 있을 것 같다. 스프링 프레임워크는 RestController라는 것을 제공하는데 이게 진짜 편리하게 Get,Post,Put,Delete를 맵핑하는 어노테이션을 제공한다. 이...이게 다라고? 싶을 만큼 개발자는 크게 할 일이 .. 2021. 8. 16.
웹개발의 봄, 스프링 2주차 (내머리터짐) [스파르타코딩클럽] 이번주는 정말 아무것도 아닌 듯이 많은 개념을 배웠다 여기서 하나하나 정리를 해야 내꺼가 될 듯해서 여기에 정리를 좀 해봐야겠다. JPA: Java의 언어로 번역된 SQL 쿼리라고 생각하면 될 것 같다. 이를테면 H2(서버가 종료되면 데이터 역시 함께 휘발하는 간단한 SQL 도구)에 직접적으로 SQL문을 작성할 필요없이 리포지토리에 새로운 Person 인스턴스를 저장하면 INSERT INTO PERSON... 과 같은 SQL쿼리문으로 번역되어 실행, 해당 데이터가 데이터베이스에 저장된다. Repository: 데이터베이스(SQL DB)와 상응하는 클래스, 자바 안에서는 interface 형태로 구현하고 JpaRepository를 상속받아 사용한다. @Service: 아직 정확하게 "왜" 쓰는지는 잘 모르.. 2021. 8. 15.
웹개발의 봄, 스프링 1주차 (+자바) [스파르타코딩클럽] 리액트 수업을 마치고 호기롭게 시작한 자바, 파이썬과 자바스크립트 다음으로 사랑받는(?) 언어이기도 하고, 리액트네이티브로 앱을 만들 때도 작성은 모던 자바스크립트의 언어로 리액트네이티브라는 틀에 맞게 써냈지만 마지막에 빌드할 때에는 결국 자바, 그래들 같은 것들이 숨어있다가 나타나는 모습을 보고 언젠가는 자바를 배워야 할 거라고, 배우게 될 거라고 생각해왔는데 마침 좋은 기회(미니튜터라는 좋은 기회를 주신 황선애 매니저님 압도적 감사..!!)가 생겨 자바 스프링 강의를 스파르타코딩클럽을 통해 들을 수 있게 되었다. 불과 올해 3월까지만 하더라도, 프로그래밍 언어와 프레임워크 같은 개념도 모르고, 프로그래밍 언어에 어떤 것이 있는지도 몰라서, 자바와 자바스크립트가 비슷한 애들인 줄 알았던 (개발자들은 자.. 2021. 8. 12.
[파이썬으로 웹스크래핑] 셀레니움 기능탐구(2) 기다려! 대기하기 앞서 실행한 스크래핑 코드들을 보면, 프로그래밍한 코드가 동작할 때 사람의 눈보다 훨씬 빠르게 데이터를 읽어오기 때문에, 페이지가 데이터를 불러오기도 전에 당장 눈 앞에 보이는 껍데기 html 구조만 가져오거나 하는 참사가 발생할 수 있었습니다. 혹은 엘리먼트를 선택하려고 하는데 아직 그 엘리먼트가 클릭가능한 상태가 아닌데 클릭하려고 해서 에러가 발생하고 드라이버가 종료될 수도 있지요. 자 이 부분을 어떻게 해결하면 좋을지 고민해 봅시다. 1. 파이썬 내장 모듈 time 사용하기 가장 간단한(무식한) 방법이지만 성능은 확실한 친구입니다. sleep()이라는 간단한 메소드를 사용할 수 있는데, 괄호 안에 파라미터로 숫자를 넘기면, n초 동안 아무 동작을 하지 않고 기다립니다. 셀레니움 외에도 어떤 코드를 .. 2021. 8. 11.
[파이썬으로 웹스크래핑] 셀레니움 기능탐구(1) 요소찾기 자꾸 뭔가 좀 설명하려다가 코드 하나 가져와서 참 쉽죠?를 반복하니까 아는 사람만 재미있게 보고 깜깜이인 초보자 분들은 힘들 수도 있겠다는 생각이 들어 핵심적인 기능 소개를 몇가지 해보고자 합니다ㅎㅎ 한번 들어봐주세요. 셀레니움은 웹드라이버를 조작하는 라이브러리입니다. 사실 셀레니움은 웹스크래핑만을 위해 개발되어진게 아니고 그것이 주목적도 아닙니다. 오히려 웹개발 과정에서 가상의 유저의 행동을 만들어내 그 유저가 정해진 행동을 하도록 만들어내는 게 주목적에 더 가까운 것 같습니다. 제가 만든 로그인 페이지에 셀레니움이 회원가입을 하고, 아이디와 비밀번호를 기입해 로그인하고 사이트를 사용하는 과정을 지켜보면서 "아 여기서 이게 펼쳐지면 안되는군","아 이 부분이 대기시간이 긴 편이네" 할 수 있는 것이지요.. 2021. 8. 11.
[파이썬으로 웹스크래핑] 가슴이 웅장해지는 셀레니움을 araboja.. 꺄꿍 지난 번에 requests와 BeautifulSoup을 사용해 보면서, 웹이 처음으로 html으로 나타날때 requests를 get해 오는 특성 탓에, 여러가지로 부족한 스크래퍼를 만들 수 밖에 없었죠? 결과물이야 나쁘지 않았지만, 각 탭에서 초기에 나타나는 8개의 글만 스크랩해오고 스크롤을 내려야 나타나는 게시물을 못 가져온다던지, 그런 문제들 말이죠..!! 자 문제점을 파악했으니 어떻게 해결하면 좋을까요? 스크롤을 해야겠죠? 그런데 requsets는 브라우저를 실제로 띄우는 것도 아니다 보니 직접 스크롤을 해주기도 힘들어 보입니다. 여러분이 스크랩하고 싶은 어떤 사이트는, 자세히 보기 혹은 더보기 버튼을 눌러야 모든 게시물이 보일 수도 있고, 아니면 로그인을 해야만 볼 수 있는 게시물이 있을 수.. 2021. 8. 10.
[파이썬으로 웹스크래핑] 뷰티풀숲, 오오 아름다운 수프여! 앞선 글에서 제대로 다루지는 않았지만, 대부분의 웹사이트의 데이터는 그것을 제작한 회사의 고유 저작물입니다. 이것을 스크랩하고 사용, 특히 영리적으로 이용하는 것은 법적인 책임을 각오해야 할 가능성이 있음을 미리 밝힙니다. 이것을 방지하기 위해서는 해당 도메인의 robots.txt를 참고하는 것이 좋습니다. 가장 상위 도메인 (예: blog.naver.com이 아닌 www.naver.com) 확인 필수. 이걸 어기면 당장 쇠고랑 차고 어떻게 되는 것은 아닌데, 네이버의 경우 십몇년 전에 일본 진출 과정에서 네이버봇이 robots.txt를 무시하는 크롤러를 사용한 이유로 시장에서 퇴출되다시피 했었던 전례가 있습니다. 윤리적인 문제라고 해두죠. 저도 제 컨텐츠를 무단복사(불펌)하는 것은 싫고 대부분 사람들이.. 2021. 8. 10.