해당 글은 https://blog.naver.com/kbs4674/221220959692 로 부터 게시글이 이전되었습니다. 크롤링 자료 연결고리 1. Nokogiri를 활용한 크롤링 [클릭] iframe/javascript 기반 사이트에 대해선 크롤링 지원이 안됩니다. selenium에 비해 크롤러가 가볍습니다. 2. Selenium을 활용한 크롤링 [클릭] iframe/javascript 기반 사이트에 대해선 크롤링 지원이 됩니다. Nokogiri에 비해 크롤러가 무겁습니다. Heroku 환경에서는크롬 브라우저에 의존합니다. (Heroku 배포환경에서는 크롬 브라우저 버전에 신경써야 합니다.) 3. Mechanize를 활용한 크롤링 (Nokogiri + 로그인 기능) [클릭] Nokogiri에 로그인 ..
해당 글은 https://blog.naver.com/kbs4674/221212397227 로 부터 게시글이 이전되었습니다. 우리는 갑작스러운 상황에 대비(어떤 자료가 필요한데 지금은 소멸되었으나 n일전 DB에는 남겨져 있을 때, 갑작스러운 사이트 해킹, 롤백)를 위해 자료를 백업을 해야 할 필요성이 있습니다. 이번 시간에는 DB를 자동적으로 백업을 설명하고자 합니다. 다만, 제가 사용하는 DB가 PostgreSQL 이다 보니 기본적으로 사용되는 SQLite3가 아닌 PostgreSQL 기준으로 설명하겠습니다. 참고 1) 이 기능은 PostgreSQL DB 기준으로 설명합니다. 2) 예약된 시간에 따라 자동으로 일 처리를 하는 whenever Gem이 선택적으로 필요합니다. ※ 자동 일처리 : whenev..
해당 글은 https://blog.naver.com/kbs4674/221658347447 로 부터 게시글이 이전되었습니다. 일반적으로 레일즈는 서버를 작동을 시키면 터미널에서 아무것도 입력을 못하는 상태가 됩니다. 하지만 Background Job은 서버가 돌아가는 작업이 이루어지는 동시에, 무언가의 작업이 이루어지는것을 뜻합니다. (작업이라 하면은 이메일 전송 등이 되겠죠!) 이번 시간은 Background Job 및 이를 쉽게 사용하도록 도와주는 sidekiq Gem에 대해 알아보도록 하겠습니다. 개념 Background Job을 순차적으로 Background Job에 있어서도, 작업이 들어오자 마자 바로 진행할건지 여러개의 작업이 들어오긴 했으나, 들어온 순서대로 순차적으로 진행할건지 위와같은 방식..
해당 글은 https://blog.naver.com/kbs4674/221197430824 로 부터 게시글이 이전되었습니다. 제 홈페이지 같은 경우는 Paranoia의 기능 중, 만약에 게시글을 삭제되어도 겉으론 삭제된 척, 실제론 삭제가 안되게(DB상에 남아있게) 보존을 해놓는 기능이 있습니다. 하지만 이렇게 이미 한번 삭제된 게시글이 계속 영구적으로 남겨놓으면 좋겠지만.. 계속 쌓이는 더미데이터에 대해 굳이 가지고 있을 필요가 없어, n개월 후에 삭제된 게시글이 자동으로 완전히 삭제되는 방식을 적용하기위해 lib/task과 whenever Gem에 대해 소개하고자 합니다. 참고로 whenever Gem은 레일즈 Active Job의 기술이 쓰이는 Gem 중 하나로서, 홈페이지가 돌아가는 와중에 뒤에서 ..
Devel UP Develup은 Goorm에서 주최하는 프로그래밍 교육 컨텐츠로, 교육 러닝에 대해선 언어 선택의 자유 및 온라인 중심으로 이루어집니다. http://develup.co.kr/ 2019. 11. 31 일자를 마지막으로 Devel Up Season 1의 모든 순간이 끝나게 되었습니다 :D Devel Up 프로그램은 위에 서술했다 싶이 온라인을 위주로 프로그래밍 교육이 이루어지는 방식이자, 배우고 싶은 언어는 수강생인 자기가 직접 선택해서 교육을 듣는 방식입니다. 그동안 클라우드 IDE, 온라인 강의로 중심되었던 구름에서 어찌보면 컨텐츠를 잘 살린 것 같습니다. 하지만 온라인 수강의 한계점은 질문을 하기 힘들다는 문제점이 있습니다. 그래서 그런 단점을 매꾸고자 한게 멘토의 존재들이었습니다. ..
( 이 글이 올라올 때 쯤이면, 이미 프로그래머스에서 진행하는 웹개발 챌린지가 끝난 후에 올라와있을겁니다 :D ) 정말 고된 과제였습니다.. 당근마켓에서 요구하는 기능들 대부분, 거의 1주일만에 구현을 했는데 유일하게 필터링 기능만이 4일 이상에 힘을 쏟은 것 같습니다. 그리고 개발에 있어 확장성+퍼포먼스 둘 다 잡고 싶어서 진짜 별에별 생각을 다하게 만든 개발 챌린지였던 것 같습니다. 이번 시간에는 개발 과정 중, 필터링 검색 구현에 대해 한번 이야기를 풀어나가볼까 합니다. 중간에 일부 내용은 생략되었지만, 위 내용이 당근마켓에서 요구하는 구현사항이었습니다. 일부 페이지에 대해선 미리 디자인을 해줬지만, 그래봤자 3 페이지(로그인, 상품목록, 상품상세) 밖에 안되는 상황이었습니다. 일단 저는 위 요구사..
이번 개발 이야기는 저에게 많은 의미가 있어 따로 이야기 칼럼으로 기록을 해보고자 합니다. 개발 INFO 1. 곰두리봇 개발 프로젝트 소개 https://kbs4674.tistory.com/60 1. 프로그래밍 언어 1) API 서버로 쓰이는 홈페이지 (kakao-bot-api.herokuapp.com) : Ruby / Ruby on Rails(5.1.6) 2) 카카오톡 자동응답을 돕는 Messenger Bot : javascript 2. Github https://github.com/kbs4674/kakao-bot_public 개발 계기 먼 옛날부터 춘천시 교통에 있어 강원대 학생들은 버스노선의 신설에 대해 민감하게 반응하는 택시업계와의 갈등으로 불만이 많았지만, 아무것도 할 수 없어서 어쩔 수 없이 ..
Ruby on Rails 코드를 짤 때 있어서 남들한테 홈페이즈 결과(프론트)가 보여지는거도 중요하지만, 내부 퍼포먼스도 중요합니다. 사실 레일즈에서는 SQL 문법으로 안쓰고 ORM 방식, 즉 모델 참조 방식으로 데이터 조작을 하다보니 SQL 문법에 관심이 없을 수도 있는데 이는 먼 미래에 있어선 큰 치명적일 수 있습니다. 결국 최종적으로는 Rails에서 작성된 ORM이 SQL로 변환되서 데이터 탐색이 이루어지기 때문입니다. 이번에는 SQL N+1 문제에 대해 맛보기 형식으로 한번 글을 써나아가보고자 합니다. 테이블 쿼리 탐색에 있어, 테이블 및 데이터는 위 테이블 내 자료를 기반으로 진행합니다. SQL N+1 문제 발생 N+1 문제란? SQL 구문 한번의 입력만으로 결과가 나와야 하지만 추가적으로 N번..