- 59
- 5 566
무지개곰
South Korea
เข้าร่วมเมื่อ 24 มิ.ย. 2016
내가 하고 싶은 것을 하는 공간
[dev-playground] graphQL subscription을 활용한 채팅 기초 with golang
이전부터 사용해보고 싶었던 graphQL을 사용하여 채팅의 기반을 구현하였습니다.
앞으로 채팅 내용을 DB에 저장하기도 하고 채팅방을 나누기도 하는 등 추가적인 작업을 진행하며 꾸준히 기록하도록 하겠습니다.
여가시간에 코딩을 즐기고 싶어서 시작한 프로젝트 입니다.
구현해보고 싶은 기능들을 구현하는 것을 우선시 하고 그때 그때 필요한 상황에서 아키텍처를 구상하여 기록하려고합니다.
효율과 상품성은 생각하지 않고 써보고 싶은 기술들을 최대한 많이 사용해보려고 합니다.
마음껏 개발할 수 있는 놀이터라는 의미에서 dev-playground라고 이름 지었습니다.
성장을 위해서 꾸준히 노력하겠습니다.
많은 조언 부탁드립니다.
개인 블로그입니다.
rainbow96bear.tistory.com/
앞으로 채팅 내용을 DB에 저장하기도 하고 채팅방을 나누기도 하는 등 추가적인 작업을 진행하며 꾸준히 기록하도록 하겠습니다.
여가시간에 코딩을 즐기고 싶어서 시작한 프로젝트 입니다.
구현해보고 싶은 기능들을 구현하는 것을 우선시 하고 그때 그때 필요한 상황에서 아키텍처를 구상하여 기록하려고합니다.
효율과 상품성은 생각하지 않고 써보고 싶은 기술들을 최대한 많이 사용해보려고 합니다.
마음껏 개발할 수 있는 놀이터라는 의미에서 dev-playground라고 이름 지었습니다.
성장을 위해서 꾸준히 노력하겠습니다.
많은 조언 부탁드립니다.
개인 블로그입니다.
rainbow96bear.tistory.com/
มุมมอง: 46
วีดีโอ
[dev-playground] 로그 시스템
มุมมอง 3421 วันที่ผ่านมา
여가시간에 코딩을 즐기고 싶어서 시작한 프로젝트 입니다. 구현해보고 싶은 기능들을 구현하는 것을 우선시 하고 그때 그때 필요한 상황에서 아키텍처를 구상하여 기록하려고합니다. 효율과 상품성은 생각하지 않고 써보고 싶은 기술들을 최대한 많이 사용해보려고 합니다. 마음껏 개발할 수 있는 놀이터라는 의미에서 dev-playground라고 이름 지었습니다. 성장을 위해서 꾸준히 노력하겠습니다. 많은 조언 부탁드립니다. 개인 블로그입니다. rainbow96bear.tistory.com/
[개발일기] 채팅 기록 저장 방법
มุมมอง 399 หลายเดือนก่อน
채팅을 구현하는 과정에서 내용을 저장해야합니다. 어떠한 내용을 저장하여야하는지 고민하고 주로 어떤 DB를 사용하는지 찾아보았습니다. 저장 방법은 RDBMS, 파일시스템 활용, NoSQL 등이 있었습니다. 새로운 기술을 공부해보고 싶은 마음과 함께 다양한 타입의 정보를 기록해야한다는 점에서 NoSQL이 괜찮을 것 같아 선택하게 되었습니다! 언제나 조언은 배우겠다는 마음으로 받아드리고 있습니다. 많은 조언 부탁드립니다. timestamp 00:00 시작 01:10 저장할 내용 02:10 저장 방법 05:10 NoSQL 장단점 Obsidian으로 정리한 내용은 아래의 주소에 올려두고 있습니다. rainbowbear-obsidian.netlify.app/ 개인 블로그입니다. rainbow96bear.tisto...
[개발일기] 데드락, 라이브락, 기아상태
มุมมอง 689 หลายเดือนก่อน
채팅을 구현할 때 go의 장점인 goroutine을 활용하며 context에 대한 공부를 하기 위하여 동시성 프로그래밍에 대한 공부도 시작하였습니다. 동시성 프로그래밍에서 주의하여야하는 데드락, 라이브락, 기아 상태에 대하여 알아보았습니다. 아직 프로그래밍을 하며 직접 만나보지 못하여 체감은 되지 않지만 이러한 문제가 발생할 수 있다는 것을 알았으니 프로그래밍을 할 때 주의하도록 하겠습니다! 언제나 조언은 배우겠다는 마음으로 받아드리고 있습니다. 많은 조언 부탁드립니다. timestamp 00:00 시작 01:28 데드락 05:51 라이브락 08:46 기아 상태 Obsidian으로 정리한 내용은 아래의 주소에 올려두고 있습니다. rainbowbear-obsidian.netlify.app/ 개인 블로그입...
[개발일기] 채팅 구현 사전 공부
มุมมอง 3110 หลายเดือนก่อน
Websocket에 대하여 조사를 하던 중 WebRTC도 알게되어 짧게나마 기록으로 남기게 되었습니다. 채팅기능을 구현하는 방법 중에 STOMP를 활용해보도록 하겠습니다! 이와 동시에 go routine과 context에 대한 공부도 함께 하여 다양한 도전을 해보겠습니다! 언제나 조언은 배우겠다는 마음으로 받아드리고 있습니다. 많은 조언 부탁드립니다. timestamp 00:00 시작 01:22 WebSocket이란? 03:13 WebRTC란? 04:34 STOMP란? Obsidian으로 정리한 내용은 아래의 주소에 올려두고 있습니다. rainbowbear-obsidian.netlify.app/ 개인 블로그입니다. rainbow96bear.tistory.com/ #채팅 #websocket #STOMP ...
[개발일기] gRPC 자료조사
มุมมอง 1510 หลายเดือนก่อน
gRPC를 브라우저에서 사용하기 위하여 조금 더 찾아보았습니다 gRPC를 브라우저에서 사용하려면 gRPC-web을 사용하여야 하는데 제약이 생각보다 많아 이번 채팅은 websocket을 활용하기로 결정하였습니다. websocket에 대하여 기본기를 다지며 context를 함께 다루어보도록 하겠습니다. 언제나 조언은 배우겠다는 마음으로 받아드리고 있습니다. 많은 조언 부탁드립니다. timestamp 00:00 시작 00:40 gRPC소개 06:56 gRPC통신 방법 07:22 gRPC-Web의 메커니즘 Obsidian으로 정리한 내용은 아래의 주소에 올려두고 있습니다. rainbowbear-obsidian.netlify.app/ 개인 블로그입니다. rainbow96bear.tistory.com/ #gRP...
[개발일기] 채팅 구현을 위한 자료조사
มุมมอง 3011 หลายเดือนก่อน
기록을 하면 할수록 설명을 못하겠습니다..ㅎㅎ 제 머리속에 정확히 정리가 안 된 문제라고 생각하기에 앞으로 더 열심히 공부하도록 하겠습니다.. 채팅 기능을 구현하는 방법으로 websocket, STOMP와 gRPC방법으로 구현할 수 있다고 확인하였고 gRPC를 다뤄보고 싶은 마음에 gRPC를 활용할 방법을 더 알아보도록 하겠습니다. gRPC를 브라우저에서 사용하기 위하여 gRPC-web와 gRPC-Proxy에 대하여 더 알아보고 구현해보도록 하겠습니다. 처음 다루는 주제다보니 기록을 하면서도 무슨말인가 싶었습니다.. 아직 많이 부족하다는 것을 다시 한 번 느끼며 열심히하겠습니다. 언제나 조언은 배우겠다는 마음으로 받아드리고 있습니다. 많은 조언 부탁드립니다. timestamp 00:00 시작 01:47...
[개발일기] controller - service - repository 리팩토링 (조언 환영)
มุมมอง 11611 หลายเดือนก่อน
정말 오랜만에 영상으로 기록을 남기려니 안 그래도 횡설수설하는 설명이 더 두서없이 횡설수설한 것 같아 어쩌면 더 잘 풀어 말 할 수 있을까 고민이 됩니다..ㅎㅎ 기존의 코드는 model이라는 폴더에서 요청을 처리하는 메서드를 만들고 query작업까지 작성을 하였습니다. 계층형 구조로 리팩토링을 하며 느낀 점은 작업을 분리하니 요청에 대한 작업을 메서드로 나눌 수 있었고 이를 통하여 로직에 대한 이해를 긴 코드를 보는 것이 아닌 메서드 명과 메서드에 대한 주석으로 쉽게 할 수 있다는 점이었습니다. 물론 계층을 나누기만 하였고 제대로 활용하였는지에 대한 의구심은 계속 있습니다..ㅎㅎ 앞으로도 프로젝트를 진행하며 더 좋은 방법을 고민하며 리팩토링해 나가겠습니다. 언제나 조언은 배우겠다는 마음으로 받아드리고 ...
[개발일기] 해시태그, 기술스택 구현 (조언 환영)
มุมมอง 4011 หลายเดือนก่อน
처음 만들어보는 해시태그 기능을 고민하고 구현하는 과정까지 쉽지는 않았습니다. 더 좋은 방법과 더 깔끔하고 좋은 코드를 작성하였다면 더 만족스럽겠지만 아쉬움을 뒤로한 체 다음 목표를 이루어 갈 때 더 좋은 코드를 작성하도록 노력하겠습니다. 프로필 페이지에 대한 프로필 수정 작업을 마무리 되었지만 더 좋은 아이디어, 놓치고 있는 부분이 있다면 조언 부탁드립니다. 추후에 꼭 리팩토링을 하며 배워 나가겠습니다. 언제나 조언은 배우겠다는 마음으로 받아드리고 있습니다. 많은 조언 부탁드립니다. timestamp 00:00 시작 01:50 트랜잭션 실행 방식 05:43 결과 06:35 다음 목표 Obsidian으로 정리한 내용은 아래의 주소에 올려두고 있습니다. rainbowbear-obsidian.netlify...
[개발일기] 프로필 수정 결과, 해시태그 구상 (조언 환영)
มุมมอง 1511 หลายเดือนก่อน
파일을 업로드 하고 client에서 불러오는 과정에도 신경써야할 부분이 정말 많다는 것을 느꼈습니다. 마음은 빠르게 작업을 해내고 쭉쭉 성장하고 싶지만 걸음마 단계라는 사실에 아쉬움이 많이 남습니다ㅎㅎ 프로필 수정과 해시태그에 대하여 작업을 마무리 하였지만 제가 생각하지 못한 내용들이 있다면 꼭 댓글로 조언 부탁드립니다. 언제나 조언은 배우겠다는 마음으로 받아드리고 있습니다. 많은 조언 부탁드립니다. timestamp 00:00 시작 00:51 이미지 파일 제공 04:10 결과 04:54 해시태그 구상 09:03 참고 자료 Obsidian으로 정리한 내용은 아래의 주소에 올려두고 있습니다. rainbowbear-obsidian.netlify.app/ 개인 블로그입니다. rainbow96bear.tist...
[개발일기] 프로필 이미지 수정 구상 및 공부 기록 (조언 환영)
มุมมอง 7211 หลายเดือนก่อน
프로필 이미지를 변경하는 것에 대하여 고려하여야 할 점이 많다는 것을 느끼며 몰랐던 부분을 알게 되어 배우는 재미가 엄청납니다ㅎㅎ 단순 구현만 하는 것이 아닌 효율적인 방법을 고민하고 원리를 파악하는 과정을 거치는 과정이 너무 재밌고 프로젝트를 시작한 의도와 맞아 너무 즐겁습니다. 프로젝트를 진행하면 할수록 부족함을 많이 느끼지만 배워나간다는 마음으로 즐겁게 열심히 하겠습니다! 언제나 조언은 배우겠다는 마음으로 받아드리고 있습니다. 많은 조언 부탁드립니다. Obsidian으로 정리한 내용은 아래의 주소에 올려두고 있습니다. rainbowbear-obsidian.netlify.app/ 개인 블로그입니다. rainbow96bear.tistory.com/ #프로필 #프로필이미지수정 #프로필페이지 #프로젝트 ...
[개발일기] 프로필 수정 페이지 2차 기록 (조언 환영)
มุมมอง 2911 หลายเดือนก่อน
해시 태그 수정을 작업하기 전 프로필 이미지, 닉네임, 한 줄 소개에 대한 db 값을 변경하는 작업을 진행하였습니다. 이미지 파일의 경우 파일을 db에 저장하는 것이 아닌 서버에 저장된 이미지 경로를 저장하여야 합니다. 이러한 과정에 대한 문제를 해결하며 header에 대한 개념을 확실하게 잡고 가야겠다고 생각하였습니다. 언제나 조언은 배우겠다는 마음으로 받아드리고 있습니다. 많은 조언 부탁드립니다. Obsidian으로 정리한 내용은 아래의 주소에 올려두고 있습니다. rainbowbear-obsidian.netlify.app/ 개인 블로그입니다. rainbow96bear.tistory.com/ #프로필 #프로필수정 #프로필페이지 #중간점검 #프로젝트 #golang #go #golanguage #Reac...
[개발일기] 프로필 수정 페이지 1차 기록 (조언 환영)
มุมมอง 38ปีที่แล้ว
프로필 수정 페이지 작업 중 hashtag 수정 방법에 대한 고민이 생겨 기록으로 남기게 되었습니다. 두 방법이 큰 성능 차이를 보이지 않을 수 있지만 앞으로 이와 비슷한 상황에 더 많은 자료에 대하여 빗슷하게 진행할 수 있다고 생각하여 고민해볼 필요가 있다고 생각하였습니다. 제가 놓치고 있는 부분, 추가되면 좋은 부분, 잘못 생각하는 부분에 대하여 조언은 항상 갈망하고 있으니 꼭 부탁드립니다. 프로필 페이지를 시작으로 2024년도 화이팅 하겠습니다. timestamp 00:00 시작 00:34 중간 점 02:39 고민 중인 작업 05:14 결과 Obsidian으로 정리한 내용은 아래의 주소에 올려두고 있습니다. rainbowbear-obsidian.netlify.app/ 개인 블로그입니다. rainb...
[개발일기] 프로필 수정 페이지 구상 (조언 환영)
มุมมอง 32ปีที่แล้ว
이전까지 OAuth를 통한 로그인을 작업을 하였습니다. 새로운 내용을 배우고 적용하며 지금으로서 만족스러운 작업이었습니다. 앞으로 새로운 내용을 또 배우게 된다면 다음에 다시 리팩토링을 하기로 기약하고 프로필 페이지를 구상하였습니다. 생각보다 구상이 잘 되지 않아 아쉬움이 남았지만 구상을 하는데 더 시간을 보낼 수 없다고 생각되어 간략히 작성하였습니다. 제가 놓치고 있는 부분, 추가되면 좋은 부분, 잘못 생각하는 부분에 대하여 조언은 항상 갈망하고 있으니 꼭 부탁드립니다. 프로필 페이지를 시작으로 2024년도 화이팅 하겠습니다. timestamp 00:00 시작 02:06 프로필 수정 페이지 접근 Flow Chart 03:58 프로필 수정 Flow Chart 05:39 와이어 프레임 Obsidian으로...
[개발일기] 로그인, 로그아웃 요청은 GET? POST? (조언 환영)
มุมมอง 62ปีที่แล้ว
로그인, 로그아웃에 대한 요청은 GET인가? POST인가? 에 대한 질문에 명확하게 답할 수 없었습니다. 어디서 잠깐 확인하였던 내용은 POST가 보안 상 더 좋다는 내용이었지만 이 조차도 확신을 가지고 답 할 수 없었기에 공부가 필요하다고 생각되었습니다. 이번 기회를 통하여 GET과 POST에 대한 기본적인 차이를 한 번 더 잡고 갈 수 있었습니다. 혹시 잘못이해한 내용이 있다면 댓글로 말씀 부탁드립니다! 여전히 부족한 부분이 많기에 성장을 위해서 꾸준히 노력하겠습니다. 많은 조언 부탁드립니다. timestamp 00:00 시작 01:34 GET 특징 03:09 POST 특징 05:43 로그인, 로그아웃은 GET? POST? 참고 자료 - whales.tistory.com/120#google_vign...
[아키텍처] 아키텍처 공부의 필요성 - 개발자 관점, 기업 관점 (조언 환영)
มุมมอง 116ปีที่แล้ว
[아키텍처] 아키텍처 공부의 필요성 - 개발자 관점, 기업 관점 (조언 환영)
[개발일기] 관리자 페이지 구현 - 미들웨어, bcrypto (조언 환영)
มุมมอง 46ปีที่แล้ว
[개발일기] 관리자 페이지 구현 - 미들웨어, bcrypto (조언 환영)
채팅의 경우 NoSql도 좋은 선택입니다. 저장하기 편하기도 합니다. 게시판 댓글이나 채팅은 NoSql을 활용하기에 정말 좋은 케이스입니다. 하지만 서비스가 제공할 기능에 따라 선택이 달라져야 합니다. 특히 게시판같은 서비스를 만드는 경우 관계형 DB로 하면 정말 복잡해 질 수 있는 내용을 NoSql로 만들면 간단히 끝나기도 하지요. 하지만 이런 DB 선정에 더 중요한 전제가 있습니다. 해당 데이터가 "관리되어야 하는 데이터"이냐 아니냐는 차이입니다. 제가 예전에 어떤 프로젝트를 갔는데 회사에서 관리하는 중요 데이터를 자신이 배운것이 몽고 DB밖에 없어 NoSql로 저장한 경우를 본적이 있습니다. 그게 가상 자산이었는데 말이죠. 다른 케이스인데 SM에서 수억을 받고 외주를 받은 회사가 코인 관련 개발에서도 몽고 DB를 사용해서 저장한다고 제안하고 있었습니다. 이건 말도 안되는 선택입니다. 그런 기본도 안되는 선정을 보고 있으면 한숨이 나옵니다. 아시다시피 NoSql의 기본 전제는 중복 허용입니다. NoSql에서 사용하기 가장 적합한 데이터는 AI 학습 데이터 수집이나 로그등의 데이터 저장입니다. 중복되도 대세에 지장없는 케이스에서 저장해야 합니다. 또한 속도가 중요한 경우에도 사용됩니다. 예전에 적용했을 경우 관계형 DB보다 20배 정도의 속도 차이를 보였습니다. 하지만 통계를 내야 하거나 주요 데이터를 저장해야 하는 경우라면 관계형 DB를 사용하세요. 속도 문제를 걱정하시지만 웬만하면 인덱스를 사용해서 속도가 나옵니다. 관계형 데이터를 사용하는데 속도가 너무 늦다면 90% 이상은 인덱스만 잘 걸어도 속도가 해결되는 경우가 많습니다. 만일 1억건의 데이터가 DB에 있다고 합시다. 이게 인덱스를 걸지 않을경우 1분이상의 속도로 검색될 수 있습니다. 하지만 인덱스를 걸면 O(n) = 10^8, 약 8번의 검색으로 검색이 될 겁니다. 실제 걸어보면 틱단위로 속도를 측정해야 할 겁니다. 혹은 많은 경우 쿼리를 잘못 작성한 경우입니다. 몇백 라인의 쿼리라도 제대로 작성된 쿼리라면 10~20ms 안에 끊습니다. 제가 서버는 아무리 느려도 20ms 를 넘기지 말라고 합니다. 이는 클라이언트가 요청해서 서버가 응답하는 전 과정에서의 속도입니다. 서버가 느린 상당히 많은 이유가 DB 응답시간 일 경우가 많고 이는 보통 인덱스와 쿼리 문제일 경우가 많습니다. 속도로 인해 DB 선택을 NoSql로 해야만 하는 경우라면 아직까지 제 경우는 만나보지 못했습니다. 이런 경우는 특수한 경우일수 있는데요. 초당 1억건의 데이터들이 밀려들어 오는 경우라면 고려해 볼수 있습니다. 그런데 그런 특수한 경우는 데이터 저장이 필요한 경우 그냥 파일로 떨굽니다. 예를들어 통신사 중간에 데이터들은 음성 데이터뿐만이 아니라 부가 장비 데이터도 밀려들어 옵니다. 여러개의 장비들이 거치는데 해당 장비들의 정보까지 밀려들어 오는데요. 이런 케이스등은 실제 속도가 중요한 케이스이긴 합니다. 하지만 일반적으로는 앞서 말했듯이 데이터의 특징에 따라 DB를 선정하는것이 맞아 보입니다. 즉, 채팅 서비스에 따라서도 채팅을 특히 중요하게 생각하지 않는 경우 몽고 DB를 활용할 수 있습니다. 가장 적합한 예시는 유튜브 실시간 채팅이 있을 수 있습니다. 유튜브 실시간 채팅의 경우 기능이 NoSql을 적용하면 상당히 편한 형태입니다. 아시겠지만 어차피 DB 사용이 파일 저장입니다. 해당 경우에는 굳이 사용하실 필요가 없습니다. 파일 시스템을 사용하는 경우는 DB보다 더 빠른 속도가 필요한 경우가 되겠습니다. 가장 좋은 케이스일 경우는 메모리 DB인 Redis의 경우 데이터베이스가 종료될때 마지막에 저장된 내용이 다시 해당 DB를 올리면 그대로 올라옵니다. 이런식으로 DB보다 더 빠른 속도로 영구적으로 저장해야 할 경우 파일로 그대로 저장하고 불러오는 방식을 취할 수 있습니다. 그리고 일반적으로 파일 시스템은 그냥 나만의 포맷으로 데이터를 만들어 저장할 때 사용하기 좋습니다. 제가 예전에 윈도우폰이 처음 나왔을때 시를 적을때 처럼 자유롭게 데이터를 저장하면 어떨까 해서 만든 다이어리 앱이 있었는데요. 그때 마이크, 손글씨, 일반적인 글, 이미지, 영상등을 한 다이어리에 저장할수 있도록 했습니다. 이때 데이터 저장 방식을 나만의 데이터 형식을 만들어 파일로 저장하는 형태였습니다. 참고로 채팅 데이터를 이미지나 첨부 파일 저장을 관계형 DB로 할경우 그대로 저장하지 않습니다. 일종의 파서 형태로 저장을 하기 때문에 결국 DB에 들어가는것은 문자열 형태입니다. 여기서 파서라고 표현한 것은 정말 간단한 예를 들어 특정 태그안에 정보를 전달하고 그걸 다르게 표시하는 방식을 말합니다. [<$$ Type : Image, Url : /images/202401042_bg.png $$>] 라는 데이터가 있다면 이 데이터로 클라이언트는 해당 이미지를 표현하는 방식을 취합니다. 이렇게 해야 어떠한 요소가 오더라도 클라이언트가 자유롭게 표시할 수 있습니다. 저런 타입이 링크, 동영상, GIF, 이모지 등이 오는 형태입니다. NoSql의 데이터 중복이 발생할수 있다는 것은 생각하신 것과는 조금 다른 내역입니다. 예로 드신 채팅을 두번 보내 저장하는 것은 정당한 요청이기 때문에 관계형 DB에서도 정당한 데이터입니다. 중복이 발생할 수 있다 함은. 예를들어서 돈이라고 한다면 관계형 데이터베이스는 자신의 자산이 한 테이블 같은 곳에 한 테이블에 존재합니다. 그것을 조인을 걸고 한 데이터를 여러 다른 테이블과 합쳐서 표현하는 식이죠. 그런데 NoSql은 여러 컬렉션에 금액이 다르게 저장할수 있다는 이야기입니다. 즉, 내 잔고가 어떤 컬렉션에서는 100만원이 남았다고 하고 어떤 컬렉션은 1원이 남았다고 저장됩니다. 이것을 기본적으로 허용하는 DB입니다. 그에따라 만일 이렇게 다르게 저장된 경우 어떤 데이터가 옳은지 해당 데이터만으로는 판단할수 없습니다. 그렇기에 DB 선정 조건은 속도가 아니라 데이터가 어떤 특징을 가지냐에 따라 선정되어야 합니다. 개인적으로는 명확한 데이터 구조를 보장하지 않는 것은 NoSql의 단점이라고 생각하지는 않습니다. 애초에 그런 DB이기 때문이죠. 명확한 데이터 구조가 필요한 경우라면 NoSql을 선택하지 말아야 합니다. NoSql의 대표적은 MongoDB의 경우 데이터를 그대로 받아서 그대로 돌려주는 목적에 적합합니다. 예를들어 내가 특정 App에서만 사용하는 데이터를 서버에 저장하는 경우에 좋을 수 있습니다. 일반적으로 NoSql만 사용하는 경우는 극히 드물고 사용한다면 관계형 DB와 같이 사용하는 경우가 많습니다. 이게 제가 한번 다른 분에게도 언급한 적이 있는 내용인데요. 중요 데이터를 다양한 데이터 형식을 저장해야 하기에 NoSql을 사용하려고 하시던 분이 있어서 비슷하게 답변을 드렸습니다. 여기서 가장 중요한 것은 다음 내역입니다. "DB를 선정할 때는 저장하는 데이터의 특징에 따라 선택하세요." 이에 일반적으로는 채팅 및 댓글등은 몽고 DB에 저장하기 좋은 데이터입니다. 그런데 제가 어떤 프로젝트에서 댓글을 분석해서 특정 작업을 하려고 하는 회사가 있었는데요. 이러한 경우는 관리되어야 하는 데이터가 되기에 관계형 DB를 사용했습니다.
오늘도 잘 보고 갑니다. 처음부터 만족할수는 없겠지만 그래도 이전보다는 도움이 되었으리라 생각되네요. sql은 어느정도 익숙해지면 orm 라이브러리를 써보는것도 추천드립니다. 직접 컨트롤하는 것도 공부목적으로 보면 나쁘진 않다고 봅니다만, 현업에서는 orm을 많이 쓰니까요. 그리고 저도 golang은 공부중인데 context 패키지를 잘써야 한다고 하더라구요. 특히나 handler나 여러부분에 사용을 하던데, 무지개곰님의 코드에서는 보지 못해서 한번쯤 스터디해보실 수 있을까요. 얼마전에 go언어로 배우는 웹애플리케이션 개발이라는 책도 새로 나왔던데 한번 봐보세요.
항상 좋게 봐주셔서 감사합니다! orm의 경우 gorm을 사용해볼까 고민하다가 query에 익숙해지자는 생각에 query를 사용해보았습니다! context도 잘 활용해보아야 하는데 잘 다뤄보지 않은 기술이다보니 적용해보지 못하였습니다! 다음 기능인 채팅기능을 구현하며 연습해보도록 하겠습니다! ' go언어로 배우는 웹애플리케이션 개발'의 경우 jpub에서 서평단을 모집하길래 지원했지만 아쉽게 선발되지 못하여 책을 따로 구하여 참고하려고 합니다ㅎㅎ 항상 좋은 조언과 한 단계 성장할 수 있는 방법을 소개해주셔서 항상 감사하게 참고하고 있습니다! 감사합니다!
영상 잘봤습니다. 기능적인 면은 rollback과 commit도 적용 잘 한 것 같습니다. 다만 github을 봤는데 리팩토링을 한번 하고 넘어가면 어떨까요. pkg밑에 model이란 개념으로 도메인들 분리는 잘했는데 각 파일에 모든 계층이 들어가 있습니다. clean architecture를 참고해서 각모델별로 controller - service - repository로 구분지어서 분리하면 좋겠습니다. 이렇게 나누는 이유는 각각의 레이어의 구현체가 달라지는 경우를 상정해야 하기 때문인데, 이건 찾아보면 좋을 것 같네요. 앞에서 아키텍쳐 공부도 하셨기 때문에. 당장은 리포지토리 패턴과 클린 아키텍쳐만 찾아보셔도 좋겠습니다. 그리고 에러처리 구현을 했으면 꼭 테스트를 해보셔야 합니다. 정석은 단위테스트를 구현해서 노멀케이스와 에러케이스 모두 검증해봐야 하고, 그게 아니면 일부러라도 그 상황을 만들어서 회복이 가능한지 봐야 됩니다. 노멀케이스는 다들 테스트해보지만, 에러는 확인 안하고 넘어갔다가 실제 상황시에 예상대로 동작 안하는 경우가 많습니다. 이 부분은 꼭 체크하시면 좋겠네요. 공부뿐 아니라 실무에도 도움이 많이 될겁니다. 그럼 다음 영상도 기대할게요.
항상 좋은 피드백 감사합니다! 혼자하거나 친구들과 프로젝트를 할 때면 한 단계 성장할 수 있는 다음 단계? 느낌의 피드백이 없어 아쉬웠는데 항상 하나씩 배워갑니다! 기대할 만한 영상인지는 모르겠으나 덕분에 프로젝트 과정을 영상으로 올리길 잘했다고 생각합니다! 아키텍처를 적용하는 것은 앞으로 코드를 깔끔하게 짤수있는 기본기가 될 수 있기에 controller-service-repository에 대한 공부를 통하여 전체적인 리팩토링을 먼저 진행하도록 하겠습니다! 에러 처리 구현도 리팩토링 이후 잘 고민하여 단위테스트를 구현하는데 힘써보겠습니다! 감사합니다!
그냥 이 정도가 있다고 알고 넘어가시면 될듯. 요즘에는 GPT등과 같은 LLM API를 다루게 되면 SSE(Server Sent Event)에 대해서도 알게 될겁니다.
프로필 이미지 수정 이후에 해시태그 수정에 대한 방법도 고민하고 채팅을 구현하도록 노력하겠습니다! 감사합니다!
오늘도 잘보고 갑니다. 프로필 사진은 구현하다 보면 생각할게 더 생길거 같네요. 데이터 전송은 좀만 더 깊이 가면, 텍스트 데이터의 경우는 한번의 송수신으로 끝나지만 용량이 큰 바이너리 데이터라든가 지속적으로 주고 받는 스트리밍의 경우 고민할 부분이 많아집니다. http 통신은 일정 패킷 단위로 잘라서 보내게 되는데, 받아서 하나로 합치려면 이 데이터에 대한 헤더라든가 메타정보가 필요하겠죠. 그 외에 지속적인 연결유지를 위한 websocket이라든가 grpc라든가 있는데, golang을 공부하신다하니 grpc쪽은 다뤄보지 않을까 생각이 드네요
깊게 파고들면 끝도 없이 들어갈 것 같다는 생각이 들었습니다ㅎㅎ 배워가는게 재미있어서 더 자세히 알아보고 싶기도 하지만 채팅 기능을 구현하면서 websocket에 대한 공부도 하고 싶은 마음도 있고 말씀해주신 grpc도 활용해보고 싶고 배우고 싶은게 참 많아서 마음이 앞서네요.. 항상 조언해주셔서 감사합니다!
몇가지 질문 드리고 싶습니다. 1. 프로필 사진은 DB에 url로 저장하는데 그럼 원본 이미지는 어떤 저장소를 사용하실건가요. 오브젝트 스토리지 혹은 볼륨 마운트? 2. 이미지 업로드 기능도 구현한다면 사이즈 제한은 어떻게 할지 3. 프로필을 보여줄때 원본 이미지를 그대로 사용하실건가요? 아니면 어느단계에서 섬네일 이미지를 만드실 건가요. 이 부분의 테이블은 어떻게 추가하실지. 4. 이미지 업로드 후 파일 이름은 새로 바꾸실건지. 아니면 폴더 식으로 구성해서 각각 유지할지. http 전송은 multipart/form-data를 보시면 좋을듯. 텍스트, 이미지, 음성, 동영상에 대해서 어떤 방식이 있는지 살펴보면 좋을거 같아요.
안녕하세요! 항상 좋은 조언 감사합니다! 1. 원본데이터의 경우 우선은 로컬환경에 assets 폴더에 저장하려고 합니다 추후에 AWS를 공부하며 S3를 사용해볼 계획입니다! 2. 사이즈 제한은 생각을 못하였습니다! 이부분에 대하여 대부분 프로필 사진의 사이즈를 어떻게 다루는지 조사하도록 하겠습니다! 3. 원본 이미지를 그대로 사용하는 방법 말고 다른 방법을 잘 몰라서 이에 대한 부분도 자료 조사를 하도록 하겠습니다! 4. 처음에는 단순히 업로드 하면 바뀌는 과정만 생각을 하였습니다! 질문을 받고 생각을 해보니 각 유저별로 프로필 사진에 대한 파일 명을 정하고 이미지 파일을 수정하면 파일을 교체하는 방법도 괜찮을 것 같다고 생각하게 되었습니다. 이러한 방법을 사용하면 유저당 이미지 파일 하나를 저장하게 되어 저장소의 공간을 아낄 수 있을 것 같습니다! http 전송은 multipart/form-data를 보시면 좋을듯. 텍스트, 이미지, 음성, 동영상에 대해서 어떤 방식이 있는지 살펴보고 꼭 기록하도록 하겠습니다! 감사합니다!
사이즈는 사진 크기말고 실제 파일 사이즈를 얘기한건데 보통 1MB이하로 설정합니다. 이부분은 추후에 nginx proxy-body-size하고도 연관이 됩니다. 사용할 용도가 정해져 있으면 이미지변환을 통해서 특정 사이즈로 바꾸기도 합니다. 썸네일 이미지는 지금 댓글 옆에 나오는 아바타 이미지에 쓰이기도 하는 작게 변환한 이미지를 말하는데, 원본이미지를 쓰게 되면 데이터 로딩에 효율이 떨어지니 썸네일 이미지를 따로 저장해서 보여주곤 합니다. 현재는 어느 방식으로 가도 상관없지만 한번 쯤 고민하고 넘어가면 포트폴리오 만들때도 도움이 될 것 같네요.
실제 파일 사이즈에 대한 규정? 기본적인 틀? 이 존재하는지 몰랐습니다! 왜 주로 1MB인지, nginx proxy-body-size 등에 대하여 꼭 확인해보도록 하겠습니다! 썸네일 이미지도 따로 저장해서 보여주는 방식에 대하여 알아보도록하겠습니다! 덕분에 많은 것을 배우고 있습니다! 감사합니다!
프로필에서 id는 query parameter보다는 path parameter가 더 나은 방식인데, /profile/:id 이런식으로요. 이부분은 path parameter vs query parameter를 찾아보면 좋을 것 같네요. 해시태그는 나중에 모아서 보여주는 역할도 하는 건가요? 같은 해시태그를 입력한 다른 사용자조회도 되는지. 테이블을 어떻게 구성할지 궁금하네요. 나중에 erd도 한번 올려주세요. 글을 쓰고 보니 이미 db도 올렸군요.
항상 조언 감사합니다! path parameter와 query parameter에 대한 비교도 공부하도록 하겠습니다! 해시태그는 검색 혹은 가장 많은 해시태그 등으로 활용할 계획입니다! 해시태그 변경에 대한 방법을 고민하고 DB에 수정이 필요하다고 생각되면 ERD를 수정하여 다시 올리도록하겠습니다! 열심히 배우도록 하겠습니다!
댓글을 열심히 썼는데 날아간건지 😂 상태가 변한다는 점에서 post를 주로 선호하고 대부분 사용하고 있습니다. logout은 캐시를 지우고 세션을 정리한다는 행동에서 delete여야 한다는 소수 의견도 있습니다. 보안성은 http는 get이든 post든 문제가 되니 https여야 하구요. 링크남긴 글에서처럼 get을 쓸 경우 최신의 브라우저들에서는 prefetch로 인해 logout을 실제 수행하기도 전에 prefetch단계에서 로그아웃이 된다고 합니다. 좀더 자세히 공부하려면 rest api design을 찾아봐야겠지만, crud에는 어떤 method를 쓰면 좋은지만 찾아보고 다른 서비스들의 api reference를 참조하면 좋을거 같아요. -- 링크를 첨부하면 댓글이 날아가는군요.
로그아웃은 Delete를 사용한다는 의견도 있군요! get은 read, post는 create, put은 update, patch는 일부분 수정, delete는 delete 정도는 공부해두었는데 단순히 그러한 내용 외에도 캐싱이 비활성화 되어있다 등의 정보는 새로운 배움이었습니다ㅎㅎ 하나하나 배워가는게 참 재밌습니다! 좋은 조언 주셔서 감사합니다!
피드백 바로 적용하고 영상도 금방 올리셨네요. 회사에 들어가서 협업을 할때 처음 하는 작업이 컨벤션을 맞추는 일입니다. 디렉토리 구조는 어떻게 할지, 네이밍 규칙이라든지, 무슨 라이브러리를 쓸지 등이요. 혼자 작업하면 맘대로 해도 되지만 지금부터 신경쓰면 일하기 편할거에요. golangci-lint 등 스타일을 검사해주는 툴들이 있습니다. 정적 분석 도구라고 하는데 보통 ci에 연결하거나 pre-commit hook을 이용해서 커밋전에 검사하기도 합니다. 검색하면 당근마켓 테크블로그에 정리가 잘되어 있는데, 카카오나 네이버, 우형 등 각 테크회사 블로그 글들을 공부할때 참조하면 좋을 것 같아요. 저는 go 개발자는 아니지만 테크 회사에서 백엔드 개발을 하고 있습니다. go는 이번 프로젝트에 사용하게 되어서 막 시작하고 있구요.
파일이 더 커지기 전에 빠르게 조치가 필요하다고 생각되어서 바로 실행으로 옮겼습니다.ㅎㅎ 공식적으로 standard layout이 있는지 몰랐다보니 너무 신기했습니다! golangci-lint도 알아보도록 하겠습니다! 감사합니다! 테크회사 블로그도 꾸준히 참고하도록 노력하겠습니다!
왜 go로 하시나요?
블록체인에 관심이 있어 golang을 입문하였다가 빠지게 되었습니다.ㅎㅎ
우연히 들러보았는데 공부 기록들이 멋지네요. handler들이 모두 get으로 되어 있는데 보안상 좋지 않습니다. login, logout 모두 post로 변경하셔야 하고 이유는 찾으면 나오니 한번 찾아보세요. go는 권장되는 style guide가 확실한 편이라 폴더나 파일도 go style guide에 맞춰서 바꾸면 좋을 것 같네요.
감사합니다! 로그인, 로그아웃은 post가 보안상 좋다는 것을 어디서 한 번 본 것 같은데 get을 사용하였네요! 자세한 이유는 한 번 더 찾아서 확실하게 기억하고 적용하도록 하겠습니다! go에 권장되는 style guide가 있었군요! 오늘 바로 확인하고 수정하도록 하겠습니다! 좋은 정보 감사합니다!
작게 시작해서 리팩토링하는 모습도 좋아보입니다. 공부했던 것 바탕으로 적용하면서 스스로 필요성을 느끼고 수정하면 더 많이 배우니까요. 다만 이미 아키텍쳐에 대해서도 공부하시는것 같으니까 클린 아키텍쳐는 아니더라도 레이어드 아키텍쳐를 참조하시면 좀 더 구조화된 프로젝트가 될 거 같아요. 다른 코드 참조없이 혼자서 다 하겠다고 마음 먹어도 폴더 구조만이라도 참조하시면 좋을 것 같네요. 완성될때까지 화이팅입니다.
레이어드 아키텍처 패턴은 전혀 몰랐습니다! 좋은 조언 해주셔서 감사합니다! 레이어드 아키택처 패턴도 확인해보고 적용하도록 노력하겠습니다!
보안은 get,post 와 같은 http method 와는 관련이 전혀 없습니다. 네트워크 레이어에서 종단간 패킷을 암호화를 하냐 안하냐가 중요합니다 http method 는 어떤 행위인가에 더 초점이 맞춰져있습니다. 로그인 로그아웃 등은 사용자의 요청을 통해 특정 action이 일어나길 바라는것이기에 post 가 적절합니다. get 은 method 명 그대로 특정 리소스를 가져오는데 적합하겠죠?? 코딩 공부 화이팅 입니다
post가 get보다 보안적으로 좋다는 글을 봤는데 잘못된 정보였나봅니다! 로그인은 action이기에 post가 사용된다는 점 조언 감사합니다! 관련 자료를 조사해서 기록하겠습니다!
Redirect에 localhost로 하드코딩되어 있네요. Env파일이이나 다른 방식을 도입해서 서비스별로 적용되게 구성하는게 좋을거 같습니다.
감사합니다! Env를 활용하면 나중에 배포를 하게 되었을 때 도메인을 구매하면 변경이 편리하겠네요! 바로 수정하도록 하겠습니다! 혹시 제가 생각한 이유 이외에 다른 이유가 있을까요?
I_User interface 명을 BaseUser 처럼 접두사를 사용하지 말고 사용하시는게 좋을거 같습니다. 그리고 매서드가 하나인 인터페이스는 인터페이스를 사용하지 않는게 더 좋습니다. 왜냐하면 레이어만 늘어나고 불필요한 코드만 늘어나는 효과만 있습니다.
BaseUser처럼 접두사는 사용하지 않고 Interface 폴더에 담아두는 것은 괜찮을까요? 메서드가 하나인 인터페이스는 사용하지 않는게 좋다는 것은 기억하고 바로 수정하겠습니다! 조언 감사합니다!
유튜브에서 자동재생으로 틀어주었는데, 태그에 golang이 있어서 잠깐 봤네요. 그런데 MySQL Schema가 int라서 저장에 실패되었다고 varchar로 변경하셨다고 하는데.. 리액트 profile/:id 라우터를 보니 30억이 넘어가긴 하네요 ㅎㅎ 그렇다면 MySQL 스키마 타입은 bigint로 하시면 되지 않았을까요? varchar로 하게 되면 string 타입이라 파싱을 해야하고, bigint면 uint32 같은걸로 자료형을 쓰면 될거 같은데 (profile id를 어떻게 지정하신건지는 모르겠어서...)
안녕하세요! 우선 영상을 보고 조언해주셔서 감사합니다! kakao에서 OIDC를 사용하여 회원정보를 요청하니 회원번호를 string 값으로 전달해주어 varchar를 사용하게 되었습니다! 처음에 OIDC를 사용하지 않았을 때 회원번호를 long타입으로 전달해주어 int를 사용하였습니다. 지금 보니 OIDC로 변경하였다는 내용을 기록하지 않은 것을 알게되었습니다! 최대한 꼼꼼하게 기록한다고 생각하였는데 놓친점에 대하여 죄송합니다.. 회원번호가 string 타입으로 전달되는 상황에서는 varchar를 사용하는 것이 좋은지 bigint를 사용하는 것이 좋은지 궁금합니다! 추후에 회원가입을 생각한다면 string을 유지하는 것이 좋지 않을까 생각되는데 이에 대한 조언이 가능하시다면 부탁드립니다! DB에 대하여 다른 댓글에서 조언주신 내용을 바탕으로 전체적인 수정을 하였습니다! DB의 수정된 내용은 영상으로 기록하겠습니다! 시간이 되신다면 성장할 수 있게 앞으로도 많은 조언 부탁드립니다!
DB에 대해서 잠시 이야기 해 보겠습니다. 사소한 일일 수 있지만 테이블 명과 컬럼명의 규칙이 제각각인것 같습니다. 일반적으로 DB에서는 언더바 및 소문자를 많이 사용하기는 합니다. 사소한 것일 수는 있지만 해당 규약 하나가 다르게 적용되었을 때, 해당 작명으로 인한 버그가 유발될 수 있습니다. 두번째는 profile_userinfo_id를 많이 사용하고 있는데 왜 userinfo_id를 직접 참고하지 않는지에 대한 의문 사항입니다. 즉, profile 테이블이 주 키가 따로 id를 가진것이 아니라 주 키가 userinfo 의 id를 래퍼런스로 가지기 때문인 것이 맞을까요? 만일 관계도가 profile이 주로 다른 테이블의 키로서 사용된다면 userinfo와 profile 관계가 1:1 이더라도 profile의 id를 생성하고 이 id를 다른 테이블에 사용할 것 같습니다. 이렇게 해야 userinfo 테이블과 다른 테이블이 연결이 느슨하게 되는 것이며, 작성한 것처럼 사용한다면 ERD 상에서는 userinfo와 projct hashtaglist_has_profile, tech_has_profile등의 테이블의 연결이 없는 것처럼 보이지만. 실제는 userinfo와 다른 테이블 관계가 연결된 상태입니다. profile 1 - n project 관계에서 혹시 여러명이 한개의 프로젝트를 하는 경우는 어떻게 처리되는지 궁금하네요. 그리고 hashtaglist에는 id를 가져야 하지 않을까 합니다. id가 없다면 hashtaglist_has_profile 에서 hashtaglist_hashtag 필드는 중복이라 괜히 데이터 관리도 어려울 뿐더러 중복된 데이터가 되지 않을까 합니다. 그리고 제가 설명을 들었음에도 tech와 techcategory는 명확히 어떤 역할인지 구분을 잘 못하겠네요. code또한 컬럼명이 같고... 왜 테이블이 나누어져야 하는지도 잘 모르겠습니다. 백엔드와 프론트엔드, fullstack의 구분은 언어가 아니라 profile에서 해당 사용자가 어떤 역할을 주로 담당하는지로 구분하면 되지 tech쪽하고는 상관 없지 않는지라는 생각이 드네요. tech_has_profile에는 사용자의 레벨을 기록하는 컬럼이 하나 있어야 하지 않나 싶습니다. 참고로 R_UserInfo에서 아스테리크로 * 가져오는 것은 개인적으로는 실 프로젝트에서는 한번도 사용한적이 없습니다. 이에 약간은 불편하긴 했습니다. 또한 R과 C로 구분하시긴 했지만 리턴 포맷이 동일한것이 좀 더 좋다고 생각합니다. 종종 insert후에 생성한 데이터의 id를 반환값으로 반환하기도 하거든요. 예를들어 글을 작성한후 해당 글을 바로 확인하려고 상세 페이지로 이동할때 생성한 id를 반환받아 이동하기도 합니다. 위와 같은 요청이 들어와서 처리한다면 어떤 insert는 error만 반환하고 어떤 insert는 info, error를 반환하게 되어 이 또한 오류를 발생시키기 쉽습니다. 그리고 inset, update 쿼리등은 transaction 처리가 되고 있는 것이 맞나요? rollback, commit등이 없고 exec로 되어 있는데 해당 사항이 바로 적용이 된다면 위험하다는 생각이 듭니다. 그리고 로그인시 정보를 왜 쿠키로 전달하는지는 이해를 하지 못하겠네요. 해당 사항은 현재 서버에서 엑세스 토큰 관리하는 모듈을 만드는 시간을 절약하기 위해서 사용자 정보를 쿠키에 저장하고 클라이언트가 전달해주는 쿠키의 정보를 믿고 사용한다. 라는 것이 맞나요? 일단 당연히? 서버는 클라이언트를 믿으면 안됩니다. 클라이언트는 신용 불량자거든요.
우선 영상을 시청해주시고 저의 부족한 부분에 대한 조언을 남겨주셔서 감사드립니다! 전체 내용을 읽어보면서 조언과 문제점에 대한 정리를 하였고 이에 대한 답변을 아래와 같이 정리하였습니다. 모든 내용이 저의 부족함을 정확하게 집어주셔서 많이 부끄럽지만 하나씩 다시 고민을 할 수 있었던 즐거운 시간이었습니다! 성장할 수 있는 기회를 주셔서 정말 감사합니다! 1. DB 테이블 명과 컬럼명의 규칙이 제각각인 문제 해당 규약 하나가 다르게 적용되었을 때 작명으로 인한 문제가 유발될 수 있다. 답변 : 이 부분을 신경쓰지 못한 제 잘못이라고 생각합니다! 바로 수정하도록 하겠습니다. 테이블 명, 컬럼 명 모두 일관성이 있어야 협업을 하는 상황에서도 서로의 이해가 더 빠를 수 있다는 점에서 테이블 명 컬럼명은 빠르게 수정하도록 하겠습니다! 감사합니다! ---------- 2. profile_userinfo_id를 많이 사용하고 있는데 userinfo_id를 직접 참고하지 않는지에 대한 의문 profile이 주로 다른 테이블의 키로서 사용되기에 userinfo와 profile이 1:1이더라도 profile의 id를 생성하고 이 id를 다른 테이블에 사용하는 것이 다른 테이블의 연결과 느슨하게 되기에 더 나은 방법 답변 : 말씀해주신 것 처럼 user의 정보가 메인이라고 생각하고 연결되는 순서로 참고하도록 연결하였습니다! 이부분은 생각하지 못하였던 부분으로 정말 감사합니다! 단순히 DB의 관계만 생각하는 것이 아닌 서로의 연결에 대한 부담을 줄이는 것도 고민할 수 있는 개발자가 되도록 꼭 기억하겠습니다! ---------- 3. profile 1-n project 관계에서 여러명이 한 개의 프로젝트를 하는 경우 어떻게 처리되는지? 답변 : 이 부분에 있어서 초기에 구상은 여러 명이 프로젝트를 진행하며 공통으로 협업 과정도 기록하는 페이지를 생각하였습니다. 이러한 경우 N:M의 구조를 가지는 것이 맞다고 생각하였습니다. 시작은 위와 같이 생각하였지만 프로필 페이지를 구상하는 동안 프로젝트 진행에 대한 기록을 어떻게 구현할까 고민을 짧게 해보았고 생각의 늪에 빠지게 되면서 잠시 고민을 뒤로 미루게 되었습니다. 좋은 습관은 아니라고 생각되지만 우선의 프로필 페이지를 위하여 개인이 진행한 프로젝트만 기록할 수 있는 테이블 구조인 1:N으로 덮어두게 되었습니다. 더 많은 고민과 함께 보다 나은 방법을 찾아 꼭 개선하도록 하겠습니다! ---------- 4. hashtaglist에는 id를 가져가야 하지 않을까? 답변 : 왜 이런 멍청한 생각을 하였을까 부끄럽습니다. 당장 수정하여야 할 내용입니다. userid : hashtag 1111 : 사과 2222 : 사과 2222 : 바나나 라는 관계로 N:M을 생각하였고 hashtag의 값 자체가 고유한 값으로 PK역할 까지 할 수 있지 않을까 생각하여 id가 따로 존재하지 않고 테이블을 만들었습니다. 이야기를 듣고 곰곰히 생각해본 결과 hashtaglist가 의미가 없고 profile과 hashtaglist_has_profile의 관계만으로도 충분하다는 것을 알게되었습니다. ---------- 5. tech와 techcategory에 대한 이해가 어려움 답변 : '각각의 code 번호로 분류 할 수 있다면 편리하지 않을까?'라고 짧게 생각한 것 같습니다. 지금 해당 값을 추가할 수 있는 관리자 페이지를 구상하는 중에 이 부분에 대한 수정이 필요하다는 것을 확인하여 더 나은 방법을 고민하고 있습니다. 말씀주신대로 언어로 백엔드, 프론트엔드, fullstack을 구분하는 것이 아닌 hash tag에서 표현하는 방법으로 생각하고 있습니다. 이러한 방법 이외에 추천하시는 방법이 있거나 좋은 아이디어가 있다면 조언 부탁드립니다. ---------- 6. R_UserInfo에서 아스테리크로 * 가져오는 것 답변 : 이 부분에 대하여 값을 불러오면 된다는 짧은 생각이었습니다. R_UserInfo의 역할을 생각해 보았을 때 DB에 값이 저장되었는지를 확인하기 위하여 생성하였습니다. 지금의 query문보다 아래와 같은 query문을 사용하는게 올바른? 알맞은? query문이라고 생강하여 수정하였습니다. "SELECT ID FROM userinfo WHERE ID = ?;" 이러한 이야기가 아니셨다면 실례가 아니라면 조언 부탁드립니다. ---------- 7. rollback, commit등이 없고 exec로 되어있는 문제 답변 : SQLD를 준비하며 rollback과 commit에 대하여 공부를 하였지만 이러한 부분에 대한 경험이 1도 없이 프로젝트를 해왔다보니 버려야하는 나쁜 습관이었습니다. rollback과 commit의 활용에 대하여 다시 한 번 고민하여 적절한 방법으로 수정하여 기록하도록 하겠습니다! ---------- 8. 로그인 정보를 왜 쿠키로 전달하는지? 답변 : user의 id와 nickname등을 cookie로 전달하는 것을 의미하는 것이라고 이해하였습니다. 이 경우에 cookie는 클라이언트에서 수정하여 문제를 일으킬 수 있다는 것을 알고 인지하였고 지금은 cookie에는 session의 id 값을 저장하고 session에서 확인된 user의 정보를 json형식으로 전달하도록 수정하였습니다. 이와 관련된 내용은 '로그인 로그아웃 구현'영상에 기록해두었습니다. 많은 레퍼런스를 찾아보지 못하였고 머릿속의 구상과 함께 작업을 진행하였기에 더 좋은 방법과 더 안전한 방법이 있을 것이라고 생각하고 있습니다. 다른 작업이 진행되고 추후에 더 공부를 하여 리팩토링하려고 하였습니다. 작업 순서와 중요도에 대한 정보도 전혀 무지한 상태이므로 스스로 느끼기에도 공부가 많이 필요하다고 느끼고 있습니다. 이에 대한 부분도 추가적으로 조언 해주실수 있다면 부탁드립니다.
머싯서요 ~~!
오호이 감사합니다~!
혼자 하시나요? 응원합니다!
넵 우선은 혼자 시작하려고 합니다! golang으로 backend를 만들어보는게 처음이라 속도가 감이 잡히지 않아 팀원을 구하면 피해를 줄지 몰라서 React 복습겸 초반은 혼자 하고 어느정도 틀이 잡히면 사람을 구해보려고 합니다! 응원 감사합니다! 최대한 매일 전날 작업에 대한 기록을 남기도록 하겠습니다! 많은 조언 부탁드립니다!
응원합니다. 그런데 솔직히 신입 입장에서 당장 배워야할 것들이 많을텐데 개념을 잡고 go를 하신다는 걸 보니 물음표가 많이 생기네요. 적어도 구인자 입장에선 매력적이진 않을 거 같아요.
네트워크도 자세히 모르고 기본이 너무 없다고 생각하여 개념을 잡으려 하였고 go는 개인적인 목표로 잡았습니다. 당장 배워야할 것들이 많긴 합니다ㅎㅎ 개념을 잡고 go언어로 넘어가는 부분이 물음표이시다면 추천해주실 방법이 있으실까요? 저 뿐만 아니라 다른 분들이 보신다면 도움이 될 수 있지 않을까하여 조심스럽게 부탁드려봅니다.
그래픽스 ㄱㄱ
그래픽스가 무엇인지 몰라서..ㅎㅎ 찾아보았는데 컴퓨터 그래픽스를 이야기하시는게 맞을까요? 자세히 알아보고 제가 바라는 방향에 필요하다면 공부해보겠습니다! 조언 감사합니다!