교환일기 웹 사이트 제작
- LANGUAGE : TypeScript(backend), JavaScript(front)
- SERVER : nestjs, typeorm, aws RDS(mysql)
- CLIENT : hbs(kind of html rendering engine), css, JavaScript
- ETC : github, swagger, jest
교환일기 웹 사이트 제작
API 테스트에 대해서는, 각 컨트롤러, 서비스의 목적에 맞는 설계까지만 작성한다.
예컨대, 서비스에서 Repository를 검증하려고 하지 않고, MockRepository를 사용하는 것을 의미한다.
더 풀어서 설명하자면, 그룹을 생성할 때 비밀번호가 hash가 되어서 추가되는지, 서비스의 로직만 확인하고,
DB에 저장이 됐는지, 서버 외부 로직을 검증하지 말라는 의미이다.
컨트롤러에서는 다시, 서비스가 제대로 된 응답을 반환했을 거란 가정 하에서만 다룬다.
테스트를 하려고 했던 것은 좋지만, 무분별한 테스트 작성은 생산성을 떨어뜨릴 뿐이다.
Originally posted by @kakasoo in #1 (comment)
리마인드 차원에서, 별도의 이슈로 작성한다.
나만 볼 수 있도록 하는 그룹 "내게 쓰기"를 일반적인 다른 그룹과 구별하는 방법이 있는가?
현재 DB로는 없다, 값을 다르게 넣는 방법을 쓰면 부분적으로는 가능할지 모르지만 모든 데이터를 꺼내서 서버 측에서 filter를 해야 하기 때문에 부담이 크다.
또한 특정 유저가 그룹의 이름에 그 값을 넣는 경우,
예컨대 "내게 쓰기" 그룹을 특정할 목적으로 "나만보기" 라는 이름의 그룹을 생성하게 했을 때, 유저가 해당 텍스트 이름으로 그룹을 만든 경우 구별할 방법이 사라진다.
따라서 테이블이나 칼럼 자체를 나눠야 할 것 같은데, 아무래도 칼럼이 더 효율적인 방법이다.
Originally posted by @kakasoo in #1 (comment)
영역을 분리하여, 만든다.
제목과 동일하다.
휴대폰 어플리케이션에서 제공하는 것처럼, 웹 사이트에서도 그러한 기능을 제공하면 좋을 것 같다.
프론트 개발자를 구하면 좋을 것 같은데, 안 되면 직접 개발하는 수 밖에.
카카오톡을 database와 연관 지어서 생각을 해보자.
유저가 회원가입하고, 방에 들어가는 순간, 어느 방에 어떤 유저가 있는지를 저장할 필요가 있다.
이것을 redis로 관리할 수도 있겠지만, 일단은 캐시가 아니라 데이터베이스에 모두 저장한다고 해보자.
그러면 데이터베이스에서 유저와 room은 n:m의 관계를 가지게 될 것이다.
그러면 유저와 room은 userRooms와 같이 ( 이름은 반드시 저럴 필요가 없다. ) 관계를 나타낼 별도 테이블이 필요하다.
여기까지 나타냈을 때, 지금 내가 궁금한 것은,
유저가 회원가입을 할 때, 유저가 내게 보내기 기능이 있는 한, 각 유저는 '내게 쓰기' 방을 생성하고 가입해야 하는가?
만약 그렇다고 한다면, room과 userRooms에는 user 수 만큼의 데이터가 추가된다.
회원 가입과 동시에 데이터가 3개씩 추가되는 꼴이다.
비효율적인 방식인가?
지금 이것을 고민하는 이유는, 내가 일기를 작성하는 로직을 개발할 때에도, 나만 보기를 만들고 있기 때문이다.
공개 범위를 나까지만으로 설정하는 것을 의미한다.
Originally posted by @kakasoo in #1 (comment)
리마인드 차원에서, 별도의 이슈로 작성한다.
그룹 카드를 만들 때, 클릭된 횟수, 그룹원의 수, 그룹 소개, 그룹의 매니저 정도는 소개해도 좋을 것 같다.
칼럼을 추가하는 대신 매니저들을 등록할 새로운 테이블을 만들자.
그룹의 매니저들, 칼럼은 USER_ID, GROUP_ID, OWNER ( => boolean )만 가진다.
그룹 클릭 횟수와, 그룹 소개는 각기 따로 테이블을 두자.
클릭 횟수는 특히나 빈번할 수 있어서...
Originally posted by @kakasoo in #12 (comment)
코멘트가 추가되면 이메일을 이용해서 알림을 줄 수 있게 만들면 어떨까?
Originally posted by @kakasoo in #16 (comment)
일기 쓰기 어려운 사람들을 위해 질문을 던져주는 기능을 만들자.
Originally posted by @kakasoo in #9 (comment)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.