Background
특히 그동안 한국에서는 미국주식 옵션 트레이딩이 불가능한 상태였습니다만, 작년 하반기부터 한 두 곳씩 미국 옵션트레이딩을 허용하고 있습니다.
그렇지만, 현재 대부분의 정보는 기관투자자나 펀드의 매니저 위주로 되어서 개인 투자자가 옵션 트레이딩을 배우고 직접 적용하기는 어렵습니다. 그런 관계로 한국분들은 옵션 트레이딩에 관심이 있어도, 막상 배울만한 곳이 별로 없습니다. 그래서 제가 운영하는 커뮤니티에서 무료로 한인 트레이더를 대상으로 옵션 트레이딩을 가르쳐 드리고 있습니다.
Problem
1. 채널의 분산
대부분의 컨텐츠는 유뷰브 영상 (롱폼)입니다.
기타 기사 (article) 형식은 블로그에 게시하고 있습니다.
소통은 오픈톡방을 이용합니다.
디스코드 서버를 이용한 트레이딩 클럽에서 수익화 방안 테스트 중입니다.
2. 효과적인 메시지 전달방법의 필요성
오픈톡방은 시간이 지나면 메시지/공지를 확인이 불편합니다.
이메일은 편하지만, 따로 sorting이 필요: 정보를 보내는 입장에서 보낸 메시지들의 정보 확인이 불편합니다.
디스코드 서버는 초대받은 베타 테스터들 위주입니다.
Target
1. gmail을 통해, 회원/참여자들의 이메일로 텍스트, 기사, 링크, 이미지 등을 직접 보내는 기능
2. 보낸 이미지를 별도의 파일로 저장해서 추후에 언제 어떤 내용을 보냈나 확인이 가능한 기능
3. 스트림릿 환경으로 구현
과정
1. 초기 코딩
당연히 제가 짤 깜냥은 없… 제가 코드를 짜기는 어렵기 때문에 클로에게 부탁했습니다.
받는 사람의 이메일은 하나 이상 입력할 수 있어야 함
제목, 보내는 사람 이메일 입력 가능해야 함
내용은 텍스트, 이미지, 온라인 링크 등을 넣을 수 있어야 함
아래에는 'SEND' 버튼 필요함
메시지를 보내고 나면, 제목과 보낸시간을 기록한 리스트를 만들어 관리가 필요함
다음번 메시지를 보낼 때 화면 하단에 이미 보낸 메시지 리스트 보여주기도 필요함
2. 에러 디버깅
에러 1
당연히 한 방에 해결되지는 않았습니다.
에러 메시지를 해석해 달라니까, secret.toml 을 제대로 만들지 않았다네요.
toml이 뭔가 물어보니 어렵게도 써놨군요...
이름이 secret.toml인 것과 내용이 비번인 걸 보니, 보안을 위해 한 단계 더 거치게 만들어서 비번만 따로 저장하게 하는 것으로 이해했습니다.
에러 2
이번에는 실행시키니 뭔가 되면서, 쫘안~하고 새 창이 뜹니다.
텍스트 박스를 잽싸게 채우고 실행...
네에, 역시 에러죠?
근데, 패스워드가 안맞는다고...? 내 이메일인데…?
에러 3
생각해 보니, gmail에 2FA를 걸어놔서 그런가 싶더군요.
그래서, 과감히 회사 이메일을 넣고 돌려봅니다.
간 크죠? ㅋㅋ
역시 에러군요. 이게 될리가...
에러 4
이번에는 일회용 이메일 (disposable email)을 넣고 돌려봅니다.
당근 에러...
생각해 보니, 일회용 이메일은 받는 거만 가능하니, 비번을 아무리 넣어봐야...^^
에러 5 지나고, 에러 6...
다시 gmail을 쓰려고 고쳐서 실행...또 에러
그런데, 가만히 보니까 비슷한 이유로 계속 에러가 나길래, 문과생도AI 캠프장이신 정기님이 말씀하신 대로 클로에서 짠 해당 코드와 에러 메시지를 이번에는 챗지한테 물어봐서 cross-check하기로...
챗지의 해결방법이 너무 귀찮으면 어떻게 할까하는 와중에 눈에 띄는게 'App Password'???
3. App Password
일단 2FA가 활성화가 되어 있는 상태의 계정에서 돌릴 수 있고요,
대신 보안은 좀 떨어진다네요.
보안을 생각한다면, pickle이란 걸 쓰라는데, 이건 다음에 하기로 하고 통과!
구글 어카운트에서 검색창에 'App Password'하시면 나오니까, 나머지는 그대로 따라하시면 맨 마지막에 "XXXX XXXX XXXX XXXX" 포맷으로 16자리 코드를 줍니다.
받은 코드를 secrets.toml에 써주고 저장.
그리고 나서, 본문코드에서 "server.login(user_email, st.secrets["EMAIL_PASSWORD"])" 부분도 "server.login(user_email, st.secrets["EMAIL_APP_PASSWORD"])"로 바꿔줘야 할 것 같은 느큄이!
4. 실행
일단 팝업 창에 대충 써넣고 버튼 클릭…
.
.
.
.
.
.
.
.
응? 된거 같은데...?
이메일을 확인하니 맞습니다.
다시 실행해서 살펴보니 방금 전 보낸 기록도 보입니다.
그런데…
어, 이게 왜 되지?
공유하고 싶은 내용:
저는 유튜브 영상이든, 블로그든, 교육자료든 만들면서 '이걸 보는 사람은 어떻게 생각을 할까?' 를 먼저 생각해 봅니다. 그렇게 만들고 나면, 결과물이 좀더 논리적이고 진행과정에 있어서도 순차적으로 진행할 수 있더군요.
그래서 저는 챗지든 클로든 여러분이 코딩을 부탁할 때도 같은 방법을 사용합니다. 이 포스팅을 꼼꼼히 보신 분은 아시겠지만, 제가 가장 처음에 클로한테 코딩을 시키면서 아래처럼 부탁했습니다. 한 번 보시고 참고하세요.
그러니 그냥 '메시지 보내는 프로그램을 짜줘' 보다는, 여러분이 프로그램을 직접 실행시키실 때를 가정하시면서 저처럼 1번, 2번...이렇게 ‘순서대로 짜줘‘라고 시켜보세요. 에러의 횟수를 줄이는데 훨씬 유용하다고 생각됩니다.
자, 오늘도 스압 만땅인 저의 사례를 읽어주셔서 고맙습니다.
B급감성 야매킹, kuri였습니다.
왠지 나 오늘 좀 멋진듯…훗