완성한 줄 알았던 것을 진짜 완성하기

Today I Learned 날짜 2023년 12월 21일 목요일 내용 아오 하루종일 되는게 하나도 없다 그냥 또 데모 로그인 테스트서버 까지 확인한 후 실서버로 배포했다. 그런데 실서버에서 또 작동이 안된다… 로딩페이지에서 넘어가지 않는 상황이었다. 콘솔창을 확인해보니 계정 정보는 가져왔지만 그와 연관된 shop을 가져오지 않고 있었다. 해당 계정의 shop이 하나도 없다고 뜨는 상황. 2가지 가설을 세웠다. 설정한 계정의 계정 정보와 shop의 relationship이 DB에서 깨졌다. 실서버에서만 되지 않는 것과 관련하여 로직에 문제가 있다. 1번을 증명하는 방법은, 데모가 아닌 버전으로 로그인 해보면 된다. shop을 못가져오면 당연히 로그인도 안될테니까. 하지만 문제없이 잘 됐다. ...

2023년 12월 21일 · 1 분 · 배준수

데모페이지를 완성했다

Today I Learned 날짜 2023년 12월 20일 수요일 내용 데모 관련 Task 끝 어제 발견했던대로, DB에 commit이 일어나면 object가 refresh되었다. Loading Relationships In the last step, we called [Session.commit()](https://docs.sqlalchemy.org/en/14/orm/session_api.html#sqlalchemy.orm.Session.commit) which emitted a COMMIT for the transaction, and then per [Session.commit.expire_on_commit](https://docs.sqlalchemy.org/en/14/orm/session_api.html#sqlalchemy.orm.Session.commit.params.expire_on_commit) expired all objects so that they refresh for the next transaction. SQLAlchemy docs에서 찾은 내용이다. db에 commit하면 현재 session의 object들이 expired되고, object를 새로 로드해야 한다. 로그인할 때, object로 계정 정보로 DB에서 관련된 shop들을 가져오는데, 데모 로그인떄는 데모 스토어로 사용할 shop만 가져오도록 로직을 작성했다. 이 object가 동기화되면서 내가 선택한 shop이 무용지물 되버린건데.. 내가 몰랐던 SQLAlchemy의 기능인 것 같다. ...

2023년 12월 20일 · 1 분 · 배준수

SQL은 어려워

Today I Learned 날짜 2023년 12월 19일 화요일 내용 너무 힘들다. 흑흑 SQL 데모 로그인은 로그인의 로직을 이용해 만들었다. 로그인 함수가 호출되면, 해당 계정 정보가 관계를 갖고 있는 shop들을 불러와 shops 라는 배열에 담는다. 데모 로그인 때는, 가져온 후 데모로 설정한 shop_id와 일치하는 것만 남기도록 처리하였다. 이 과정이 DB에 영향을 끼치지 않도록 하기 위해, DB에 최근 접근 시간을 업데이트하고 commit하는 이후에 해당 로직을 추가하였다. shop들을 가져와 배열에 담는 joinedload에 특정한 조건을 추가하는 코드를 작성해야 했다. 사실 이 부분에서도 많이 헷갈렸는데, joinedload가 일반 join과 다른 점은 eager loading이라느 것이다. 간단히 말하자면 lazy-loading은 레코드를 조회할 때 연관관계가 있는 데이터들의 조회를 필요한 순간까지 미루는 것이고 eager-loading은 레코드를 조회할 때 연관이 있으면 다 가져와놓는 것이다. 지금 고민하는 부분과는 다른 이야기이니 차치하고, join과는 언제 연관된 데이터를 갖고 오느냐만 다르다는 의미이다. ...

2023년 12월 19일 · 2 분 · 배준수

얕고 낮은 지식과 고민

Today I Learned 날짜 2023년 12월 18일 월요 내용 데모 어드민 페이지 만들기 지난 주에 했던 회고대로, 데모로 설정할 어드멘 계정을 환경변수로 설정할 이유가 없었다. 슈퍼관리자 페이지에 데모 계정을 설정 하는 기능을 만들고자 하였다. 그런데 내가 생각을 너무 얕게 했었다. 이 기능은 결국 DB에 현재 누가 데모 계정인지를 저장해야 한다. 이에 따라 두가지 방법이 떠올랐다. 데모 계정을 표시하는 새로운 테이블을 생성한다. 기존 계정(혹은 샵)이 저장된 테이블에 데모임을 표시하는 새로운 Column을 추가한다. 두 경우 모두 일이 생각보다 많이 커질 것 같았다.. 데모 계정 하나를 등록하자고 새로운 테이블을 만드는 것도 비효율적이라고 생각했고, 기존에 존재하는 Table을 수정하는 것은 더 최악으로 느껴졌다. 괜히 내가 잘 할 자신이 없어서 겁 먹은 건지, 진짜 이 방법들이 효용성이 떨어지는 지 확인받았다. ...

2023년 12월 18일 · 2 분 · 배준수

코드싸개

Today I Learned 날짜 2023년 12월 15일 금요일 내용 진행중인 Task가 마무리된듯 마무리 되지 않고 있다. 일사천리가 드문게 당연지사지만, 내가 미연에 방지할 수 있었을 텐데 그러지 못했다는게 문제다. 데모 사이트 만들기 이번주에 데모 관련된 작업을 마무리 하려고 했지만 다 못했다.. 형식상으론 마무리 되긴 했지만..? 어제 로딩페이지 관련된 CSS도 마무리 해서 테스트 서버에서 확인했는데, 코드와 관련해서 추가적으로 고칠 필요가 있었다. 우선 중복된 코드가 존재했다. 기존에 있던 로그인과 내가 새로 만든 데모용 로그인은 검증 성공시(엄밀히 말하면 데모 로그인엔 검증이 없지만) 똑같은 로직이었다. 복붙으로 만든 것이니 당연한 말이지만.. 따라서 성공 시 처리되는 로직을 새로운 함수로 분리시켰다. 5~6줄 정도 되는 짧은 로직이지만 그런 것들이 모여 전체 코드를 더럽게 만드는 거니까.. ...

2023년 12월 15일 · 3 분 · 배준수

Session 이용하기

Today I Learned 날짜 2023년 12월 12일 화요일 내용 Session 현재까지 데모버전으로 로그인을 한다는 것은 우리가 원하는 계정(데모 스토어를 위한 계정)에 자동으로 로그인 해주는 것 외에는 딱히 차이가 없었다. 해당 스토어를 체험을 위해 잘 구성하기만 하면 되겠다고 생각했다. 하지만 어드민 페이지에서 기타 store나 account에 대한 setting을 변경할 수 있다는 문제를 인지했다. 꼭 critical 하지 않은 정보들도 있겠지만, 쇼핑몰의 위젯이나 리뷰 관련된 컨텐츠들만 제공해야할 데모 버전이기 떄문에 불필요한 수정을 방지하는 것이 필요하다고 생각했다. 내가 탐색해본 결과, 알파리뷰 어드민 페이지에서 Settings에 들어가는 버튼은 2곳에 있다. 좌 하단과 우측 상단 user 아이콘을 클릭하면 나타나는 버튼. 데모버전에서는, 이 둘을 무력화해야했다. ...

2023년 12월 12일 · 2 분 · 배준수

데모 사이트 제작

Today I Learned 날짜 2023년 12월 11일 월요일 내용 구현 방향 데모용 어드민 페이지를 들어갈 때 로그인이 없어야 한다. 우리 서비스를 경험해 보고 싶은 사람에게 제공되는 기능이기 때문이다. 그 외의 것들은 우리 서비스와 동일해야 한다. 따라서 특정 쇼핑몰을 데모용 쇼핑몰로 만들고, 데모 로그인은 그 쇼핑몰로 접속하는 것을 의미한다고 판단했다. 로그인 로직을 아예 없앨지, 서버가 알아서 처리해주도록 할지가 고민되었다. 우선 알파리뷰 어드민 페이지로 접속하는 로직을 파악하기로 했다. 간단히 말하면, Shopify에서 unique 하게 설정하는 여러 값들이 존재한다. 내가 데모 로그인을 요청하는 유저의 verification을 대신 해주기엔 너무 복잡했다.. 따라서 기존 유저가 해야할 일을 내가 대신하는 방향으로 계획을 잡았다. ...

2023년 12월 11일 · 2 분 · 배준수

네번째 테스크 : 체험판 만들기

Today I Learned 날짜 2023년 12월 8일 금요일 내용 새로운 Task를 시작했다. 데모 사이트 고객들이 알파리뷰를 체험해볼 수 있도록 데모 쇼핑몰과 그 관리 페이지를 만들기 시작했다. 기존 어드민페이지는 로그인이 필요한데, 알아서 데모를 위한 계정으로 로그인하도록 구현할 예정이다. 기존에 있는 Shopify 계정에 데모용 쇼핑몰을 추가하여 설정하려고 했는데, 생각해보니 알파리뷰에는 계정에 속해있는 다른 쇼핑몰로 이동할 수 있는 기능이 있다. 따라서 고객이 다른 페이지에 접근할 수 있다는 위험성이 존재했다. 따라서 새로운 구글 계정과 shopify 계정을 만들고 여기에는 데모용 쇼핑몰만 설치할 예정이다. 이번 Task의 핵심 목표는 2가지 정도로 추려진다. ...

2023년 12월 8일 · 1 분 · 배준수