본문 바로가기

분류 전체보기

(187)
마카 드로잉 - 처음으로 책과 마카를 사다(feat. 사각사각 드로잉) 요즘 마카 드로잉에 관심이 생겨서 이것 저것 찾아보다가 '사각사각 드로잉' 이라는 책을 찾게 되었다.서현 영풍문고에서 구입한 후, 그 옆에 있는 모닝글로리에서 마카 팬도 구입! 신한 터치트윈 마카로 구입하였는데 하나에 4,100 원.. 15개 사니까 육만원 넘게 나왔다. 세트로 팔긴 하지만 내가 원하는 색을 사고 싶어서 아래와 같이 다양하게 골랐다. 사실 그리다보니 이걸로도 다양한 색을 표현하기에 많이 부족했다ㅠㅠ 책 첫부분에서 있으면 좋다고 한 PRISMACOLOR 흰 색연필, 얇은 테두리를 표한할 수 있는 신한 터치라이너 펜, 그리고 220g 이상이 되는(너무 얇으면 뒤에 다 새겨진다) 스케치북 도 구입하였다. 참고로, 표면이 울퉁불퉁한 종이는 피하라고 책에 쓰여있었다.위의 스케치북은 사보고 나니 표..
Rails Authorization with Pundit 출처: https://www.sitepoint.com/straightforward-rails-authorization-with-pundit/#report-ad "Pundit" 은 "학자" 또는 "똑똑한 사람"(때때로 부정적인 의미로 씌인다)를 뜻하지만 실제로 이를 사용하기 위해서는 똑똑할 필요는 없다. Pundit 은 굉장히 이해하기 쉽다. Pundit 의 도큐멘테이션을 살펴보면서 나는 pundit과 사랑에 빠지게 되었다.Pundit 의 배경에 있는 아이디어는 새로운 DSL 을 이용하지 않고 이전의 Ruby 클래스와 메서드를 사용함에 있다. 이 젬은 오직 몇 개의 유용한 헬퍼들만 추가하므로 전반적으로 당신이 적합하다고 생각하는 방식으로 시스템을 만들 수 있다. 이 해결책은 CanCanCan 보다 약간 낮..
(33) Graphql-ruby - 에러 핸들링 Errors in GraphQL GraphQL 에는 다양한 종류의 에러가 있다. 이번 포스팅에서는 주요 에러들과 언제 이를 적용해야 되는지에 대해서 알아볼 것이다. Validation Errors GraphQL 은 타입 언어이기 때문에 쿼리를 실행하기 전에 모든 쿼리에 대해서 유효성 검사를 실행한다. 만약에 요청된 쿼리가 유효하지 않다면 이는 실행되지 않을 것이다. 대신 응답은 에러와 함께 되돌려보내질 것이다.{ "errors" => [ ... ] } 각 에러는 message, line, column 그리고 path 를 가지고 있다.유효성 검사 규칙은 GraphQL 스펙의 일부분이며 GraphQL-Ruby 에 내장되어 있기에 쿼리를 수행할 때 모든 유효성 검사를 스킵하도록 validate: false 를..
(32) Graphql-ruby - Mutation의 모든 것 Mutation RootGraphQL mutation 은 모두 mutation keyword 로 시작한다.mutation($accountNumber: ID!, $newBalance: Int!) { # ^^^^ here setAccountBalance(accountNumber: $accountNumber, newBalance: $newBalance) { # ... } } mutation 으로 시작하는 동작들은 GraphQL 런타임에 의해서 특별한 취급을 받는다. 루트 필드들은 순차적으로 실행되도록 보장된다. 이러한 방법으로 여러개의 mutation 의 결과를 예측할 수 있다. mutation 은 특정한 GraphQL 객체인 Mutation 에 의해 실행된다. 이 객체는 다른 GraphQL 객체들과 같이 정..
(31) Graphql-ruby - 필드(fields) 의 모든 것 Introduction 객체 필드는 해당 객체에 대한 데이터나 다른 객체와의 연결에 대한 데이터를 보여준다. field(...) 클래스 메서드를 사용해서 객체에 필드를 추가할 수 있다.field :name, String, "The unique name of this list", null: false Objects 와 Interfaces 는 필드를 가진다.필드 정의는 아래와 같은 요소들을 갖는다.Return types 은 해당 필드가 어떤 종류의 데이터를 리턴하는지에 대해 알려준다.Documentation 필드에 대한 설명과 더이상 쓰이지 않는 필드에 대해 설명한다.Resolution behavior Ruby 코드와 GraphQL 필드를 엮는다.Arguments 쿼리가 있을 때 필드에 입력값을 받도록 한다..
(30) Graphql-ruby - 범위설정(scoping) Scoping Scoping 은 권한부여와 함께 사용하는 것을 고려해볼만 하다. "이 사용자가 이걸 볼 수 있어?" 라고 체크하는 대신에 scoping 은 아이템 리스트를 현재 사용자와 context 를 적합한 하위 집합으로 필터링 한다. 결과 하위집합은 정상적으로 권한부여가 되고, 각 아이템은 권한부여 검사를 통과해야 한다. 비슷한 기능으로는 Pundit scopes와 Cancan’의 .accessible_by.를 참고하자. scope: option 필드는 스코핑을 가능하게 하거나(또는 불가능하게 하기 위해) scope: 옵션을 받는다.field :products, [Types::Product], scope: true # Or field :all_products, [Types::Product], sco..
(29) Graphql-ruby - Pundit Integration ⚡️ Pro Feature ⚡️ 해당 기능은GraphQL-Pro 에서만 가능하다. Pundit Integration GraphQL::Pro 에서는 GraphQL authorization 과 Pundit policies 의 통합을 사용할 수 있다.귀찮게 왜 이렇게 해야되는가? GraphQL 타입 자체에 권한부여 코드를 넣을 수도 있지만 따로 권한부여 레이어를 작성하는 것은 몇가지 이점을 준다.authorization 코드가 GraphQL 에 포함되어 있지 않기 때문에 , 같은 로직을 앱의 GraphQL 이 아닌 부분(또는 레거시 코드)에도 사용 가능하다.authorization 로직은 독립되어 테스트 하는게 가능해지고, 그러므ㄹㅗ GraphQL 테스트는 그만큼 많은 가능성들을 테스트 하지 않아도 된다. G..
(28) Graphql-ruby - Authorization 의 모든 것 Overview 다음은 GraphQL 권한부여에 대한 개념적인 접근과 내장된 권한부여 프레임워크에 대한 설명이다. 프레임워크의 각 부분은 각각의 가이드에 설명되어 있다. Authorization: GraphQL vs REST REST API 에서는 일반적인 권한 부여 패턴은 꽤 단순하다. 요청된 액션을 시행하기 이전에 서버는 현재 클라이언트가 해당 액션에 대한 필요한 권한이 있는지 확인한다.class PostsController