본문 바로가기

Programming12

Ruby의 객체 복사 Ruby에서는 배열이나 해시 같은 컬렉션 객체는 메모리에 참조(reference)로 저장되며, 이 참조를 통해 컬렉션의 데이터를 조작할 수 있다. 이 말은 아래와 같이 코드를 짜는 경우 default_manager_ids = [1,2] requests.each do |request| notify_user_ids = default_manager_ids notify_user_ids.push(request.manager_id) end default_manager_ids와 notify_user_ids는 메모리를 함께 공유하게 된다. notify_user_ids에 값을 추가하면 같은 메모리를 참조하고 있는 default_manager_ids의 값에도 동일하게 값이 추가되는 것이다. 이것이 의도한 것이라면 문제가 .. 2024. 3. 27.
[Ruby On Rails] before_action 및 after_action 사용법과 실행 순서 Rails에서는 컨트롤러의 메서드 실행 직전 또는 직후에 특정한 작업을 처리하기 위해 before_action, after_action, around_action을 사용할 수 있다. 세 가지 필터 모두 기본적인 사용법은 아래와 같다. 관례적으로 컨트롤러의 상단에 정의해 준다. UserController 내의 정의된 모든 public 메서드 실행 직전에 require_login이 먼저 실행되게 된다. class UserController < ActionController::Base before_action :require_login end 특정 액션에서만 사용하기 only를 사용할 경우 특정 액션에서만 before_action이 실행된다. class UserController < ActionControll.. 2023. 6. 17.
JWT의 개념 및 Access Token과 Refresh Token에 대한 고찰 JWT를 통해 로그인 기능을 구현하면서 들었던 의문점들에 대해 정리한 글입니다. 1. JWT(JSON Web Token)란? 2. 왜 JWT를 사용할까? (Cookie + Session vs JWT) 3. JWT를 사용할 경우 만료 기한은 어느 정도로 지정할 것인가? 4. Refresh Token이 탈취된다면 보안적으로 똑같이 위험하지 않은가? 5. Refresh Token을 저장하고 있어야 하는가? 6. 토큰 탈취 자체를 방지할 수 있는 방법은 없을까? 7. 결론 JWT(JSON Web Token)란? : 두 개체 사이에서 정보를 JSON 개체로 안전하게 전송하기 위한 컴팩트하고 독립적인 방식을 정의하는 개방형 표준으로, 전자 서명이 되어 있으므로 신뢰할 수 있다. JWT는 .을 기준으로 하여 Head.. 2023. 6. 6.
[Ruby On Rails] database migration 관련 명령어 모음 Rails는 데이터베이스와 관련하여 여러 기능들을 지원하고 있다. databeses.rake 파일에서 사용 가능한 명령어들을 확인할 수 있다. https://github.com/rails/rails/blob/v5.2.6/activerecord/lib/active_record/railties/databases.rake GitHub - rails/rails: Ruby on Rails Ruby on Rails. Contribute to rails/rails development by creating an account on GitHub. github.com db:create 현재 환경에 대한 데이터베이스를 생성 db:create:all 모든 환경에 대한 데이터베이스를 생성 db:drop 현재 환경에 대한 데이.. 2023. 5. 18.
[Elasticsearch] Query DSL 주요 쿼리 정리 Query DSL이란? Elasticsearch에서 쿼리 실행에 사용할 수 있도록 JSON 스타일의 도메인 전용 언어 Query context 전문 검색 시 사용 - 분석기에 의해 분석이 수행되고 연관성 관련 score를 계산 ex) "Harry Portter" 같은 문장 분석 Filter Context 조건 검색 시 사용 - Yes/No로 단순 판별만 가능하며 연관성 관련 score 계산을 하지 않음 ex) "create_year" 필드의 값이 2023년인지 여부 Query DSL의 주요 쿼리 Match all query : 모든 문서를 검색하는 쿼리 { "query": { "match_all": {} } } Match query : 텍스트, 숫자, 날짜 등이 포함된 문장을 형태소 분석을 통해 term.. 2023. 5. 5.
[Ruby On Rails] Module Mixin (2) - ActiveSupport::Concern 2023.04.18 - [Programming/Ruby On Rails] - [Ruby On Rails] Module Mixin [Ruby On Rails] Module Mixin Ruby는 다중 상속을 지원하지 않는다. 즉 Ruby 클래스는 하나의 부모 클래스(슈퍼 클래스)만 가질 수 있다는 뜻이다. Ruby에서는 다중 상속을 모듈의 Mixin을 통해 구현이 가능하다. Mixin에 대해 알아 garonnome.tistory.com 이전에 Module Mixin에 기본적인 개념을 살펴보았다. 모듈을 사용하다 보면, 모듈을 하나의 클래스에 동시에 extend와 include를 하고 싶은 경우가 생기기도 한다. 아래와 같이 클래스 내에서 두 번 Mixin 하는 것이 문법적으로는 가능하지만, 의도와는 다르게 .. 2023. 4. 30.