본문 바로가기

전체 글

(88)
[Rails] Map vs Pluck Active Record 모델에서 특정 컬럼의 데이터를 가져오는 방법으로 pluck와 map을 사용합니다. 이 두개의 메서드 비교를 통해 어떤 상황에서 사용해야하는지에 대해 알아보도록 하겠습니다. User.pluck(:name) # => (0.1ms) SELECT "users"."name" FROM "users" User.all.map(&:name) # => User Load (0.1ms) SELECT "users".* FROM "users" # 두 명령어의 실행 두 명령어의 실행 결과, 질의되는 쿼리가 서로 다르다는 것을 확인할 수 있습니다. pluck은 필요한 컬럼에 대한 데이터만 조회하지만, map의 경우에는 전체 데이터를 조회합니다. #map map은 DB 쿼리 결과를 Active Record 객..
[git] git 사용법 #branch(브랜치)란? 브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념입니다. 필요해 의해 만들어진 각각의 브랜치는 다른 브랜치의 영향을 받지 않기때문에, 여러 작업을 동시에 진행할 수 있습니다. 또한 각각 만들어진 브랜치는 병합(Merge)함으로써, 작업한 내용을 다시 새로운 하나의 브랜치로 모을 수 있습니다. #git branch 생성 git branch branchName : 현재 위치에서 새로운 브랜치를 생성 git checkout branchName : 현재 Master 브랜치에서 지정한 브랜치로 이동하여 작업을 수행할 경우 checkout 명령어를 사용 git checkout -b branchName : 브랜치 생성과 체크아웃을 동시에 진행 #git add git add 다음 변경(co..
[Ruby] 기본문법 #Hash 해시란 키와 값으로 이루어진 조합물입니다. ruby에서는 Hash.new를 이용하여 hash를 생성한 뒤 =>를 사용하여 키에 값을 할당합니다. my_hash = {"name" => "Kim", "age" => "20, "hungry?" => true"} puts my_hash["name"] puts my_hash["age"] puts my_hash["hungry?"] 1. Hash.new 사용 위의 예시에서는 해시의 리터럴 표기법(literal notation)을 사용하여 해시를 생성했습니다. 또한 Ruby에서는 Hash.new를 이용하여 해시를 생성할 수도 있습니다. 변수에 Hash.new를 할당하면 비어있는 상태의 새로운 해시가 생성됩니다. 이는 변수에 비어있는 중괄호 {} 를 할당하는 ..
[Rails] Routiong #Rails Routing Rails 라우터는 URL을 인식하고, 이를 컨트롤러의 동작으로 발송하게 됩니다. 라우팅을 할 때, 주소는 컨트롤러의 이름/액션 이름으로 구성을 하고 액션 이름에 맞는 뷰 파일을 생성해서 사용 즉, 라우팅은 컨트롤러와 뷰 사이를 연결시켜주는 역할을 합니다. rails application directory > config directory > routes.rb에서 설정을 할 수 있습니다. 1. 클라이언트로부터 URL을 통해 요청(request)을 받게 되면 GET /users/1 2. 다음과 같이 routes.rb에 설정한 컨트롤러와 매핑됩니다. users controller에 정의된 show action으로 dispatch가 이루어지고 {id : '1'} 라는 paramete..
[Mac] 개발 환경 Setting #HomeBrew Homebrew란 macOS용 패키지 관리자 터미널(Terminal)에서 명령어를 통해 자신이 필요한 프로그램을 설치, 삭제, 업데이트를 손쉽게 관리할 수 있습니다. #HomeBrew를 사용하는 이유? Mac을 사용하여 개발을 진행하다 보면 개발 환경에 따라 많은 프로그램을 설치하게 됩니다. App store 또는 해당 사이트에 접속하여 프로그램을 다운받아 설치하는게 일반적인 방법입니다. 하지만 이럴 경우 원치 않는 프로그램이 자신도 모르게 설치될 수도 있고 나중에 프로그램을 재설치, 삭제, 업데이트할 때 기존의 데이터가 남아있는 경우가 발생할 수도 있습니다. "HomeBrew"를 사용할 경우, 이러한 문제 없이 깔끔하게 프로그램을 설치, 삭제, 업데이트 할 수 있습니다. 즉 HomeB..
[Stack] 괄호문자 제거 괄호문자 제거 입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성 ■ 문제 풀이 1) 입력 설명 - 첫 줄에 문자열이 주어진다. - 문자열의 길이는 100을 넘지 않는다. 2) 출력 설명 - ( ) 소괄호 사이에 존재하는 문자가 제거된 남은 문자만 출력한다. 3) 테스트 - input : (A(BC)D)EF(G(H)(IJ)K)LM(N) - output : EFLM 4) 문제풀이 - 첫번째 solution의 경우, 닫는 괄호가 아닌 경우에는 모두 stack에 담고 닫는 괄호인 경우 여는 괄호가 나올때까지 Stack에 쌓여있는 값들을 모두 꺼내서 최종적으로 stack에 저장된 값들을 출력 - 두번째 solution의 경우, 여는 괄호일 경우 stack에..
[HTTP 웹 기반 지식] HTTP API 간단한 HTTP API 설계 예시를 통해 HTTP 메서드가 왜 필요한지에 대해 알아보겠다. [요구사항] "회원 정보 관리 API를 만들어라" 회원 목록 조회 회원 조회 회원 등록 회원 수정 회원 삭제 위와 같은 요구사항에서 초보 개발자들은 다음과 같은 실수를 저지른다. "이해하기 편하도록 이름을 잘 지어서 URI를 기준으로 구현해볼까?" [API URI(Uniform resource Identifier) 설계] 회원 목록 조회 /read-member-list 회원 조회 /read-member-by-id 회원 등록 /create-member 회원 수정 /update-member 회원 삭제 /delete-member 초보 개발자들은 이것을 보고 URI 설계를 잘 했다고 착각 할 수도 있다. 하지만 이것이 진..
[HTTP 웹 기반 지식] HTTP 기본 ■ 모든 것이 HTTP HTTP(Hyper Text Transfer Protocol) : 하이퍼미디어 문서를 전송하기 위한 프로토콜 HTTP에서는 다음과 같은 데이터를 전송할 수 있습니다 - HTML, TEXT - IMAGE, 음성, 영상, 파일 - JSON, XML (API) - 거의 모든 형태의 데이터를 전송하는 것이 가능 - 서버 간의 데이터를 주고 받을 때도 대부분 HTTP를 사용 1) HTTP의 역사 - HTTP/1.1 1997년 : 가장 많이 사용, 현재 우리에게 가장 중요한 버전 - HTTP/3 진행 중 : TCP 대신 UDP를 사용, 성능 개선 2) HTTP 기반 프로토콜 - TCP : HTTP/1.1, HTTP/2.0은 TCP 프로토콜 위에서 동작 - UDP : HTTP/3은 UDP 기반..