航海9週間振り返り
進捗
1. Code review & refactoring
今週、バックエンドチームは追加機能を実施するよりも、既存のコードを修正することにした.まず,自分のレンズでなくても対応しなければならない場合を防ぐため,コードコメントを行った.それぞれ作成したルータ,ミドルウェア,カスタムライブラリ,CRUDロジックについて説明した.
コードコメントとともに、コメントも行いました.成分を減らすことができるコード,DB繰返しクエリを行うコード,符号化約定に合致しない変数名などを修正した.
2.無限スクロール機能の追加
無限スクロール機能を追加する必要があるため、機能を追加しました.ここでORMは本当に书けないと思います細かい操作が必要なDBトランザクションはrawqueryで処理するのがずっと便利です. const { categorySpace, categoryInterest, categoryStudyMate } = req.query;
let { page } = req.query;
// 페이지네이션에 필요한 것 : page query string, total number of posts, total page
if (!page) page = 1;
const postPerPage = 9;
const totalCnt = await Post.count();
const totalPage = Math.ceil(totalCnt / postPerPage);
const offset = (page - 1) * postPerPage;
// 로그인한 사람이 좋아요, 북마크했는지 확인할 때 쓸 변수. 토큰 유무에 따라 재할당 할 수 있으므로 let 선언
// WHERE에 사용할 조건문을 담을 List
let condition = [];
if (categoryInterest)
condition.push(`Post.categoryInterest='${categoryInterest}'`);
if (categorySpace) condition.push(`Post.categorySpace='${categorySpace}'`);
if (categoryStudyMate)
condition.push(`Post.categoryStudyMate='${categoryStudyMate}'`);
/*
* 조건이 안 들어온다 -> WHERE 없이 빈 문자열 처리
* 조건이 한 개 이상 들어온다 -> WHERE 붙이고, 조건 배열을 " AND "로 join하고 붙인다.
*/
let where =
condition.length === 0 ? "" : `WHERE ${condition.join(" AND ")}`;
const sqlQuery = `SELECT Post.postId, Post.imageCover, Post.title, Post.categorySpace, Post.categoryStudyMate, Post.categoryInterest, Post.contentEditor, Post.date, Post.userId,
COUNT(DISTINCT Likes.likeId) AS likeCnt,
COUNT(DISTINCT Bookmarks.bookmarkId) AS bookCnt
FROM Posts AS Post
LEFT OUTER JOIN Likes AS Likes ON Post.postId = Likes.postId
LEFT OUTER JOIN Bookmarks AS Bookmarks ON Post.postId = Bookmarks.postId
${where}
GROUP BY Post.postId
LIMIT ${postPerPage}
OFFSET ${offset};`;
const posts = await sequelize.query(sqlQuery, {
type: Sequelize.QueryTypes.SELECT,
});
印象的なハーモニー...
3.開発書を読む
「クリンアーキテクチャ」という本を買って読み始めた.実は内容が難しすぎて、今のレベルでは本の中の知識を吸収するのは難しいです...白いのは紙、黒いのは字・・・
来週の予定
1.アーキテクチャの変更
DB、ファイル・リポジトリの物理的分離
2.学習/応用TS
付加機能についてはTypeScriptを採用することにした.早く勉強しなければなりませんね.
振り返る
同僚の一人が16時間にわたるコードコメントを行った.自分で作成したコードを説明する以外に、どんな機能をするかさえ説明できません.神様...本人のコードと他の同僚の説明で行います.
これは,コードコメントを行う際に学習態度を考え直すきっかけである.勉強では、自分の心の中に余計な自尊心や頑固さがあるかどうかを常に観察しなければならない.
ますます多くの人が就職問題を心配し始め、航海専門家の一人がAI/ML社の面接提案を提出した.意外な提案に戸惑う.しかし、困ったことに、AI/MLは今まで私の関心の問題ではありませんでした.職業技術書を作成しています.今はまだ寒い.
Reference
この問題について(航海9週間振り返り), 我々は、より多くの情報をここで見つけました
https://velog.io/@goatyeonje/항해-8주차-회고
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
const { categorySpace, categoryInterest, categoryStudyMate } = req.query;
let { page } = req.query;
// 페이지네이션에 필요한 것 : page query string, total number of posts, total page
if (!page) page = 1;
const postPerPage = 9;
const totalCnt = await Post.count();
const totalPage = Math.ceil(totalCnt / postPerPage);
const offset = (page - 1) * postPerPage;
// 로그인한 사람이 좋아요, 북마크했는지 확인할 때 쓸 변수. 토큰 유무에 따라 재할당 할 수 있으므로 let 선언
// WHERE에 사용할 조건문을 담을 List
let condition = [];
if (categoryInterest)
condition.push(`Post.categoryInterest='${categoryInterest}'`);
if (categorySpace) condition.push(`Post.categorySpace='${categorySpace}'`);
if (categoryStudyMate)
condition.push(`Post.categoryStudyMate='${categoryStudyMate}'`);
/*
* 조건이 안 들어온다 -> WHERE 없이 빈 문자열 처리
* 조건이 한 개 이상 들어온다 -> WHERE 붙이고, 조건 배열을 " AND "로 join하고 붙인다.
*/
let where =
condition.length === 0 ? "" : `WHERE ${condition.join(" AND ")}`;
const sqlQuery = `SELECT Post.postId, Post.imageCover, Post.title, Post.categorySpace, Post.categoryStudyMate, Post.categoryInterest, Post.contentEditor, Post.date, Post.userId,
COUNT(DISTINCT Likes.likeId) AS likeCnt,
COUNT(DISTINCT Bookmarks.bookmarkId) AS bookCnt
FROM Posts AS Post
LEFT OUTER JOIN Likes AS Likes ON Post.postId = Likes.postId
LEFT OUTER JOIN Bookmarks AS Bookmarks ON Post.postId = Bookmarks.postId
${where}
GROUP BY Post.postId
LIMIT ${postPerPage}
OFFSET ${offset};`;
const posts = await sequelize.query(sqlQuery, {
type: Sequelize.QueryTypes.SELECT,
});
1.アーキテクチャの変更
DB、ファイル・リポジトリの物理的分離
2.学習/応用TS
付加機能についてはTypeScriptを採用することにした.早く勉強しなければなりませんね.
振り返る
同僚の一人が16時間にわたるコードコメントを行った.自分で作成したコードを説明する以外に、どんな機能をするかさえ説明できません.神様...本人のコードと他の同僚の説明で行います.
これは,コードコメントを行う際に学習態度を考え直すきっかけである.勉強では、自分の心の中に余計な自尊心や頑固さがあるかどうかを常に観察しなければならない.
ますます多くの人が就職問題を心配し始め、航海専門家の一人がAI/ML社の面接提案を提出した.意外な提案に戸惑う.しかし、困ったことに、AI/MLは今まで私の関心の問題ではありませんでした.職業技術書を作成しています.今はまだ寒い.
Reference
この問題について(航海9週間振り返り), 我々は、より多くの情報をここで見つけました
https://velog.io/@goatyeonje/항해-8주차-회고
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(航海9週間振り返り), 我々は、より多くの情報をここで見つけました https://velog.io/@goatyeonje/항해-8주차-회고テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol