일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- react
- game
- nodejs
- Python
- typeORM
- Queue
- cookie
- jest
- 공룡게임
- dfs
- flask
- Dinosaur
- OCR
- 정렬
- Bull
- MongoDB
- MySQL
- 게임
- Sequelize
- mongoose
- AWS
- JavaScript
- GIT
- Nest.js
- TypeScript
- 자료구조
- nestjs
- Express
- class
- Today
- Total
포시코딩
1월 3주차 - 스파르타 내일배움캠프 10주차 본문
이번 주 알게 된 점
TypeScript
Tuple: 고정된 배열의 길이, 각 요소의 지정된 타입 형식
const player: [string, number, boolean] = ["seonghun", 1, true]
Enum: 열거형. 특정 값들의 집합
기억안나는건지 안다뤄봤는지 Java에는 기본 자료형으로 있는 기능이라 함.
JavaScript에는 없어서 TypeScript 와서야 쓸 수 있게 되었는데 상당히 깊이 있는 자료형인듯 싶다.
하지만 사용에 조심해야할게
enum은 tree-shaking으로 사용되지 않는 것들에 대한 정리 대상에 포함되지 않기 때문에
const enum과 같은 형식으로의 사용을 추천한다.
좀 더 구글링해보니 차라리 const enum보다 union type의 사용을 추천하는 글도 있었는데
이 부분은 머리 한켠에 남겨놓고 그 상황이 되면 알게될 것 같다.
Generic: 타입에 대한 파라미터.
type Player<E> = {
name: string
extra: E
}
const john: Player<number> = {
name: "john",
extra: number
}
Python
reversed
a = [1, 2, 3, 4, 5]
for x in reversed(a):
print(x) # 5, 4, 3, 2, 1
reversed는 반복자(iterator)로 결과값을 반환하기 때문에
다른 range, [::-1]을 이용하는 방법보다 메모리에 효율적인 방법이다.
map
a = [1, 2, 3, 4, 5]
result = list(map((lambda x: x * 2), a))
print(result) # [2, 4, 6, 8, 10]
JavaScript에서의 map과 비슷하다.
Sequelize Transaction
// transaction 선언
const { sequelize } = require('../sequelize/models/index');
const transaction = await sequelize.transaction();
try {
// transaction을 걸며 db 조작
await model.create({ title, contents }, { transaction });
// 로직 완료 후 transaction commit 처리
await transaction.commit();
} catcn (err) {
// 실패 상황 시 transaction rollback 처리
await transaction.rollback();
}
기본적인 사용법은 위와 같다.
추가로 Propagation(전파 속성), Isolation Level(격리 수준 레벨)에 대한 고려도 해야할 것 같은데
나중에 따로 포스팅할 예정
bcrypt.hash()
하나의 기능에 대해 오버로드(overload)되는 두 함수
export declare function hash(
data: string | Buffer,
saltOrRounds: string | number,
callback: (err: Error | undefined, encrypted: string) => any,
): void;
export declare function hash(data: string | Buffer, saltOrRounds: string | number): Promise<string>;
두 함수는 같은 기능을 함.
쓰기에 더 적합한걸 쓰면 된다.
지금까지는 구글링해서 나오는 블로그의 방법 그대로를 불편해도 억지로 썼는데
TypeScript를 볼 수 있게 되니까
해당 함수에 대해 링크타고 들어가서 다양한 사용 설명서를 직접 까서 알 수 있게 된 것 같다.
이번 주 목표 달성
미완성인 팀프로젝트 완성하기
한주 사이에 그동안 쌓여있던 수많은 이슈들을 정리하고 남은 이슈들이다.
이슈 하나를 해결하면 아쉽거나 새로 추가해야 될 기능들이 보여 이슈 두개가 생기는 현상이 있었는데
그런거까지 다 해결하고 나니 벌써 1월이 끝나간다..
위에 남은 이슈들은 진짜 급한불 다 끄고 마무리 짓는 이슈들이라서 차근차근 남은 시간동안 해결하면 될 것으로 보인다.
대신 아직 남은 과제들이 있는데,
- authMiddleware에 대한 보안 이슈 해결
- 리뷰 관련 기능
두가지다.
사장 관련 기능은 그냥 내가 코드를 완전 갈아엎어서 완성 시켰다.
리뷰 기능도 하면 될텐데 지금까지 해온거의 연장선이라 당장은 패스해야 될듯 싶다.
(지금도 새로 배우는게 너무 많은데 붙잡고 있으면 또 뒤쳐지게 된다.)
그래도 지난 2주간 팀스터디 + 이 프로젝트 보수를 하며 진짜 많이 성장한거 같다.
Lv.1 문제 하루 1문제 이상 풀기
Lv.1 문제들을 약 1년전에 JavaScript로 다 푼 기억이 있는데
(물론 JavaScript 내장 함수들을 구글링해가며 풀었지만)
내가 JavaScript로 어렵게 풀어왔던 문제들이 맞나 싶을 정도로 슥슥 풀린다.
당연히 한번 풀어봐서이겠지만
역시 Python의 힘을 무시하지 못한다. 특히 문자열 다루는 문제에서 강세다.
최근에 새로 배울 것들이 많아 쉬운 문제 5개 정도만 풀며
뇌 깨우기 & 감 잃지 않는 정도로 유지하는듯!
바뀐 팀에서의 팀원을 이끌어갈 스터디 진행
솔직히 다른 팀원들을 따라오게끔 시작한 스터디였는데
그분들 열정도 없고 (그냥 하루종일 뭐 하는지 모르겠다. 리뷰하자고 하면 코드 5줄 복붙해온거 따라 읽고 끝임)
해서 원래 목표로한 '바뀐 팀에서의 팀원을 이끌어갈 스터디'는 폐지다.
대신 잘하는 팀장과 그나마 따라오는 한분이랑 해서 나까지 셋이 거의 스터디를 주도하고 있는데
이 과정에서 새롭게 배우는게 미쳤다.
제일 좋았던건 저번 팀프젝 때 셋이 다 다른팀이었어서 각자의 팀 프로젝트를 서로 리뷰해주는걸 진행했는데
리뷰하는 과정에서 같은 기능에 대해 전혀 다른 접근 방법과
다양한 코딩 기술들을 배울 수 있던 것이었고 그 과정에 대한 리뷰는 아래 두 글이다.
또 매일 자잘하게 새로 배운 코딩 상식이나 유용한 팁 같은걸 서로 공유하는데
그 과정에서 내가 알게되어 아 그냥 이런게 있구나 하고 지나갈법한 것도 한번씩
정리하고 포스팅도 하게 되니까 전혀 단점이 없는 스터디인 것 같다.
항상 오후 4시 30분에 모여서 스터디를 진행하는데
소문이 퍼졌는지 4시 30분이 되면 어느샌가 다른 팀에서도 와가지고 같이 듣고 가시는 분들이 생겼다 ㅎㅎ.. (도강 멈춰!)
앞으로도 이렇게 더 듣는 분들이 생기면 그분들한테도 오늘 새로 배운 것들 뱉으라고 할 예정이다 ㅋㅋ
그리고 4시 30분까지 뭔가를 정리해서 '발표'해야하기 때문에
자체적으로 데드라인을 설정해준다는 장점도 있다.
아무튼 이 시스템은 정말 좋다는 생각이 들어서
프로젝트 끝날 때까지 진행할 예정이고 다음 팀프로젝트나 더 나아가 취직을 하더라도
따로 진행하면 좋을거 같다는 생각이 든다.
jwt, session, cookie, token에 대해 다시 공부하고 authMiddleware 새로 만들기
session 관련해서 passport로 로그인 시스템 만든 프로젝트를 하나 만들었는데
https://github.com/cchoseonghun/nodejs_login_prac
나머지 기능들에 대해서는 진행하지 못했다..
대신 이번 주말을 걸쳐 jwt(bearer)나 다른 로그인 방법에 대해 또 정리할 예정이다.
꼭 해야하는 이유 중 하나로
곧 새 팀프로젝트를 시작하는데
여기에 적용할 로그인 시스템이 필요하기 때문이다.
아마 못따라온 팀원들이 있어 되도록이면 필수로 들어갈 기능들을
미리미리 만들어놓고 싶은데 로그인 기능을 미리 만들어놓으면 정말 편하지 않을까 싶다.
다음 주 목표
4일짜리 목표
사실 연휴동안 매일 평일처럼 보내서 (연휴동안 매일 공부함..)
WIL을 26일(수요일)에 작성하고 있는데 아래 목표들은 남은 4일에 대한 목표가 될 것 같다.
전 팀프로젝트 테스트 코드 (유닛, 통합) 작성
위에서 설명한 팀스터디 주제로 테스트 코드(유닛, 통합)를 월요일까지 준비하기로 했다.
전 팀프로젝트에서 진행하는 테스트 코드기에
테스트 코드를 작성하기 좋게끔 프로젝트를 다듬어야 하는일이 또 추가되었다.
jwt, session, cookie, token에 대해 다시 공부하고 authMiddleware 새로 만들기
'WIL' 카테고리의 다른 글
2월 2주차 - 스파르타 내일배움캠프 13주차 (0) | 2023.02.12 |
---|---|
1월 4주차 - 스파르타 내일배움캠프 11주차 (0) | 2023.01.29 |
1월 2주차 - 스파르타 내일배움캠프 9주차 (0) | 2023.01.15 |
1월 1주차 - 스파르타 내일배움캠프 8주차 (0) | 2023.01.08 |
12월 5주차 - 스파르타 내일배움캠프 7주차 (0) | 2023.01.02 |