( 이 글이 올라올 때 쯤이면, 이미 프로그래머스에서 진행하는 웹개발 챌린지가 끝난 후에 올라와있을겁니다 :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번..
Ruby on Rails 코드를 짤 때 있어서 남들한테 홈페이즈 결과(프론트)가 보여지는거도 중요하지만, 내부 퍼포먼스도 중요합니다. 이번에는 SQL 퍼포먼스에 대해 한번 글을 써나아가보고자 합니다. SQL Performance : update / update_all SQL 퍼포먼스를 설명에 있어 대표적으로 update, update_all 메소드에 대해 살펴보겠습니다. 1) update : 조건에 맞는 메소드에 대해 Attribute 내용을 수정합니다. 2) update_all : 조건에 맞는 데이터 전체를 한번에 수정합니다. 비교분석 SQL 작업 속도 update 메소드를 통해서도 조건에 맞는 다수의 데이터를 한번에 수정할 수 있긴 합니다. 그런데 update 메소드와 update_all 메소드의 모..
해당 글은 https://blog.naver.com/kbs4674/221420285631 로 부터 게시글이 이전되었습니다. 루비온 레일즈에서 다루는 여러가지 메소드를 소개하고자 합니다. 위 테이블의 자료를 기반으로 한번 여러 메소드를 알아보겠습니다. 1. where VS find_by 1) where : 조건에 맞는 데이터에 대해 여러 개의 데이터 결과가 출력됩니다. # Model.where(attribute: value) Post.where(title: "서윤 연구소") 2) find_by : 조건에 맞는 데이터에 대해 한 개의 데이터 결과가 출력됩니다. 출력되는 한 개의 데이터는 제일 처음에 쓰여진 데이터입니다. 번외 여기서 where에 대해서 좀 더 깊게 짚어보자면, 아까와는 조금 다르게 # Mod..
해당 글은 https://blog.naver.com/kbs4674/221182443309 로 부터 게시글이 이전되었습니다. 댓글에 또 다른 답 댓글, 즉 중첩댓글에 대한 글을 다룹니다. 중첩댓글 : act as commentable with threading 참고 Post Scaffold에서 댓글을 구축하는 예시로 설명함. Devise Gem을 기본적으로 사용한다는 가정 하에 사용하셔야 합니다. [참고] 1. Gemfile 에 다음 내용을 입력해줍니다. gem 'acts_as_commentable_with_threading' 새로운 Gem을 설치해 주세요. bundle install 2. 다음 명령어를 입력해서 Model과 DB(Migration 파일)를 생성해 줍니다. rails generate act..
해당 글은 https://blog.naver.com/kbs4674/221174702377 로 부터 게시글이 이전되었습니다. 띵동! 누군가가 제 게시물에 댓글을 달면 그 알림이 오면 참 좋겠죠! 이번에는 누군가 댓글을 달면 알람이 울리는 알람잼에 대해 같이 해보겠습니다! 참고 1. Deivse Gem [클릭], act-as-commentable-with-threading(중첩댓글) [클릭] Gem을 활용한 기준으로 설명드립니다. 알람잼 : unread 참고 시작 전 제 댓글 방식은 다음 댓글방식을 이용했습니다. [참고 : 클릭] 위 댓글 방식을 기준으로 설명합니다. 1. Gemfile 을 열어서 다음 내용을 추가합니다. gem 'unread' 이어서 Gem을 설치합니다. bundle install 2. 터..
해당 글은 https://blog.naver.com/kbs4674/221173415422 로 부터 게시글이 이전되었습니다. 투표를 진행하려면 찬성, 반대 이 2가지에 대한 선택권이 있어야 합니다. 이번 글에서는 이런 투표 시스템을 간단히 구축할 수 있는 Gem을 만들어 보겠습니다. 참고 본 실습에 있어선 Post Scaffold를 기반으로 설명이 진행됩니다. 투표 Gem, Gem : acts_as_votable 1. Gemfile에서 다음 Gem을 입력합니다. gem 'acts_as_votable' Gem을 설치합니다. bundle install 2. 터미널에 다음 명령어 입력합니다. rails generate acts_as_votable:migration 그럼 새로운 테이블이 생성된게 확인될겁니다. 3..