[GO]클래스 없는 객체지향 언어
GO2023. 5. 24. 16:39[GO]클래스 없는 객체지향 언어

서론 객체지향 프로그래밍(OOP) 패러다임으로 개발하다보면 class를 잘 사용하는 것이 잘하는 개발자일 것이다. 이번에 공부해본 GO 언어는 class를 사용하지 않는 객체지향 언어이다. 어떻게 class 없이 객체지향 프로그래밍이 가능한지 살펴보자. OOP의 3요소 캡슐화: 정보 은닉 상속: 재사용 + 확장 다형성: 사용편의 클래스스럽게만 사고하고 개발했다면 GO를 만났을 때 충격받을 것이다. GO는 코드의 간결성과 성능을 위하여 클래스 문법을 직접적으로 제공하지 않는다. GO의 객체지향 인터페이스 (Interfaces): 인터페이스는 함수의 집합으로 정의되며, 해당 인터페이스를 구현하는 구조체는 자동으로 인터페이스를 따르게 . 인터페이스를 사용하여 다형성을 지원하고, 코드의 유연성과 재사용성을 향상..

[NestJS] TypeORM을 통한 트랜잭션 관리
Node.js2023. 4. 30. 19:02[NestJS] TypeORM을 통한 트랜잭션 관리

서론 NestJS에서 관계가 묶여있는 여러 테이블에 INSERT를 해야하는 경우가 있습니다. 이 글에서는 TypeORM을 통해 트랜잭션을 관리해보겠습니다. 트랜잭션 관련 글 https://puleugo.tistory.com/142 데이터베이스 트랜잭션이란? 트랜잭션(Transaction) 트랜잭션: 데이터베이스 관리 시스템에서의 최소 상호작용의 단위 개요 데이터베이스 트랜잭션은 데이터베이스에서 수행되는 일련의 작업이며 모두 단일한 논리적 작업 단 puleugo.tistory.com https://puleugo.tistory.com/143 트랜잭션 격리 수준 데이터베이스 트랜잭션 격리 수준 데이터베이스 트랜잭션의 격리 수준은 격리성(각각의 트랜잭션은 서로 간섭없이 독립적으로 수행되어야한다는 규칙)의 견고함..

개발자는 도적질을 해야한다.
생각 정리2023. 4. 19. 17:10개발자는 도적질을 해야한다.

By. 공자 생각 없이 배우기만 하면 얻는 것이 없고, 생각만 하고 배우지 않으면 오류나 독단에 빠질 위험이 있다. 잘하는 개발자는 도적질을 일삼는다. 코드의 유지보수성보다 빨리 굴러가야하는 경우가 있다. 애자일이나 배포가 시급한 경우.. 그리고 항상 살아남는 코드는 동작하는 코드들이다. 코드 도적질은 빠르게 동작하는 코드를 얻을 수 있으며, 사고의 확장까지 할 수 있다는 이점이 있다. 이번 글에서는 어떻게 효율적으로 도적질을 하며 최신 도적질 트렌드를 알아보려고 한다. 글 컨셉 때문에 성장은 레벨업이라고 표현하겠다. 개발자가 되고 싶은 자는 나에게... 좋은 선례를 도적질하라. 회사의 기술 블로그나 공신력있는 개발자의 코드를 도적질해라. 코드가 없다면, 그 사람의 학습 방식을 도적질하라. 회사의 기술블..

"우아한 도적질"
How to.2023. 4. 9. 19:26"우아한 도적질"

우아한 테크 블로그를 읽다가 양질의 파일럿 프로젝트들이 공개되어 있는걸 처음 알았습니다. 테크 블로그 사랑합니다. 우아한 형제들 개발자들이 고민한 흔적들이 기록되어 있어서 이를 정리하고 정리본을 공유하려고 합니다. 공부할 때 사용하면 좋을 것 같습니다. 노션 페이지 Nest.js로 풀어보는 중인 레퍼지토리

Refresh Token을 사용하는 이유(Feat. Redis)
트러블 슈팅2023. 4. 7. 19:43Refresh Token을 사용하는 이유(Feat. Redis)

개요 리프레시 토큰을 Redis에 저장한다는 사례를 들어서 직접 구현해봤습니다. Token Based Authenticaion, Refresh Token을 공부해보았습니다. 결론: 해당 방식은 비효율적이고 보안적 가치가 없는 방식이었습니다. What is Redis? 레디스는 인메모리 방식의 데이터베이스입니다. Diff Basic DB vs In-Memory DB 기존 DB(e.g. mysql, postgreSQL)은 보조기억장치에 데이터를 저장합니다. 그래서 많은 양의 데이터를 오래 저장하는 데에 적절합니다. 인메모리 DB(e.g. Redis, MemCache)는 주기억장치에 데이터를 저장합니다. 그렇기에 데이터 조회 성능이 월등히 빠릅니다. 주기억장치를 이용하기 때문에 RAM의 휘발성 메모리의 특징도..

인덱스의 카디널리티, 복합키의 성능 최적화
트러블 슈팅2023. 3. 30. 19:25인덱스의 카디널리티, 복합키의 성능 최적화

서론 학교 백엔드 CS 스터디 중 카디널리티라는 키워드가 나왔습니다. 설명 들었을 때 처음듣는데 중요하다고 생각되어 조사해보고 정리해본 후, 개발했던 프로젝트 리팩토링을 진행하였습니다. 카디널리티(cardinality)이란? 우리 레코드를 조회할 때 인덱스를 정의합니다. 인덱스를 정의할 때 우리는 카디널리티가 높은 것을 사용합니다. 카디널리티란? 해당 컬럼의 중복된 수치를 말합니다. "성별, 학년, 국적 등은 카디널리티가 낮다"라고 말하며, 반대로 "학번, 주민등록번호 등은 카디널리티가 높다"라고 말합니다. 우리가 성별, 학년같은걸 인덱스로 잡진 않죠? 그렇다면 복합키(여러 컬럼을 인덱스로 구성)를 사용한다면 어떻게 될까요? 우선, 복합키의 예시를 가져와보겠습니다. 위 이미지의 user-auths 테이블..

팀원이 설정한 알람이 내 폰에서 울려야한다.
트러블 슈팅2023. 3. 28. 20:09팀원이 설정한 알람이 내 폰에서 울려야한다.

팀원이 설정/수정한 알림이 내 폰에서 울려야한다. 서론 프로젝트를 전부 구현해놨더니 기획을 엎어버렸다. 내가 기획팀한테 타 서비스와의 차별성과 방향성이 애매하다고 하긴했지만, 이런 결과를 원한 것은 아니다.. ㅠㅠ 지인들은 기획팀을 엎으라고 했지만, 더 나은 결과물을 위한 것이니 좋게 생각하고 있다. 개선된 기획안은 이렇다. "열정은 있지만 팀프로젝트를 할 사람이 필요한 사람들에게 마음맞는 팀원을 구할 수 있는 TODO 및 캘린더 기능과 커뮤니티를 제공해준다." 여기서 TODO, 캘린더 기능이 팀 단위로도 설정할 수 있기 때문에 본인이 아닌 다른 팀원이 추가, 수정한 알람이 내 폰에서 울려야한다. 본론 FCM쓰면 되긴하는데 학생이니 구현 경험을 쌓고 싶었다.. 내가 조사해본 결과 우리 프로젝트에 가장 ..

FK란 무엇인가? 각 관계형은 어떤 경우에 가장 효율적인가?
CS2023. 3. 24. 18:55FK란 무엇인가? 각 관계형은 어떤 경우에 가장 효율적인가?

서론"FK란 무엇인지, 왜 사용하는지, 언제 사용하는지 설명해주세요." 모의 면접에서 질문이 나왔다. 이부분을 조금 더 깊게 공부해보려고 한다. FK란 무엇이고 왜 사용하는가?Foreign Key는 외래키라고 부른다. RDBMS에서 관계를 지정할 때 사용합니다. 하지만, FK 말고 일반 컬럼으로도 관계를 표현할 수 있지만, 그럼에도 FK를 사용하는 이유는 *참조 무결성 제약조건을 설정할 수 있기 때문입니다. (참조 무결성은 RDBMS에서 FK와 PK간의 일관성을 유지하는 것입니다.) 관계의 종류는 어떻게 되나요?기본적으로 RDBMS에서는 아래 네가지 종류의 관계를 지원해줍니다.One-to-OneOne-to-Many / Many-to-OneMany-to-Many 각 관계 매핑에 따라 장단점과 적절한 예시를..

어떨 때 composite key를 사용해야 할까?
트러블 슈팅2023. 3. 19. 02:36어떨 때 composite key를 사용해야 할까?

https://github.com/inje-megabrain/waka-board-be GitHub - inje-megabrain/waka-board-be Contribute to inje-megabrain/waka-board-be development by creating an account on GitHub. github.com 이번 게시글에서 쓰일 프로젝트다. 프로젝트 요구 사항은 아래와 같다. 동아리 WAKATIME 관리 프로젝트이다. 테이블에는 코딩 시간이 저장된다. (20분마다 갱신됨) 조회하는 케이스는 둘이다. 오늘 코딩 시간 조회 지난 n일전에 얼마나 코딩했는데 조회 및 평균 계산 로그를 id로 직접 조회할 일은 없다. DB 설계 테이블 소개 user: wakatime 이용자의 계정 정보를 ..

생각 정리2023. 3. 17. 18:00개발자에게 글쓰기가 필요한 역량일까?

https://dev.gmarket.com/30 개발자의 글쓰기는 다르다. 안녕하세요. Seller & SD Engineering 팀 박명훈입니다. 기존에는 프로젝트나 기술적인 내용에 중점을 주어 글을 작성했는데 오늘은 내용을 좀 환기하여 개발자의 글쓰기에 대해 이야기합니다. 회사에 dev.gmarket.com 위 글을 읽고 느낀점, 학생 개발자로써 느낀 점을 이야기해보려고합니다. 개발자에게 글쓰기는 중요한가? 아니요. '개발자'에게 글쓰기는 중요하다고 말할 수 없습니다. 다만 글쓰기를 하였을 때 메리트는 있습니다. 본인의 생각을 타인에게 보여줄 수 있고, 글쓰기를 하는 사람의 생각은 글을 작성하며 한번 정리되기 때문에 꽤나 확고합니다. 그렇다면 이렇게 다시 물어볼 수 있습니다. 성장을 관점으로 봤을 때..

내가 생각하는 좋은 개발자란?
생각 정리2023. 3. 17. 15:50내가 생각하는 좋은 개발자란?

어제 동아리 선배와 커피챗을 했다. 그러다 학생 개발자의 성장을 주제로 이야기하게 되었는데, 그 내용을 글로 다시 적어보려고 한다. 내가 생각하는 좋은 개발자란? 지금 내가 생각하는 좋은 개발자는 프로덕트를 개발할 수 있으면서 어떻게 개발하였는 지 설명할 수 있는 개발자다. 물론 이를 아는 것은, 개발자가 사용하는 모든 도구에 대한 대략적인 이론, 작동원리 등을 이해하고 있어야만 가능하다. 그래서 대기업에서는 컴퓨터 이론을 학습한 컴퓨터 관련 전공자를 선호하는 것이라고 생각한다. 때문에 개발자로서 먹고살려면 본인이 사용하는 프레임워크의 함수가 뭐가 있는지 보다. 도구 그 자체를 이해하고 있을 필요가 있다. (우리가 CS를 배워야하는 이유) 커뮤니케이션이나 소프트스킬같은것도 물론 중요하지만 그런 부분까지 ..

CS2023. 3. 15. 16:09데이터베이스 Lock이란

데이터베이스 락이란? Lock이란 트랜잭션 처리의 순차성을 보장하기 위한 방법입니다. 데이터베이스 트랜잭션과 격리성의 이해가 있어야 이해하기 쉬우실겁니다. Lock의 종류 공유(Shared) Lock 배타(Exclusive) Lock 이를 쉽게 말하면.. 공유락: Read Lock(읽기 락) 배타락: Write Lock(쓰기 락) 이라고 말합니다. 해당 글에서는 읽기 락과 쓰기 락이라고 표현하겠습니다. 읽기 락(i. e. 공유 락) 읽기 락은 자원을 읽을 때 사용됩니다. 읽기 락의 특징은 읽기 Lock끼리 하나의 자원을 읽을 때 여러 사용자(트랜잭션)가 동시에 접근할 수 있다는 것입니다. 쓰기 락(i. e. 배타 락) 쓰기 락은 데이터를 변경할 때 사용합니다. 트랜잭션이 완료될때까지 유지됩니다. 배 타락..

트랜잭션 격리 수준
CS2023. 3. 7. 14:00트랜잭션 격리 수준

데이터베이스 트랜잭션 격리 수준 데이터베이스 트랜잭션의 격리 수준은 격리성(각각의 트랜잭션은 서로 간섭없이 독립적으로 수행되어야한다는 규칙)의 견고함 정도를 말합니다. 트랜잭션 격리 수준 트랜잭션의 격리 수준은 총 네 단계로 나뉩니다. READ UNCOMMITED READ COMMITED REPEATABLE READ SERIALIZABLE READ-UNCOMMITED가 가장 성능이 낮은 대신 가볍고, SERIALIZABLE이 가장 성능이 높으며 무겁습니다. 때문에 프로덕트 케이스에 맞는 트랜잭션 격리 수준을 선택하면 되겠습니다. 성능이 좋고 나쁘고는 어떻게 판단하나요? 성능을 판별하는 기준은 격리성을 얼마나 잘 유지하느냐입니다. 위에서 설명한 네가지 격리 수준에서는 아래와 같은 이슈가 발생합니다. DIR..

[PostgreSQL] 데이터베이스 트랜잭션이란?
CS2023. 3. 6. 19:54[PostgreSQL] 데이터베이스 트랜잭션이란?

트랜잭션(Transaction) postgresql을 기준으로 작성되어있습니다. 트랜잭션: 데이터베이스 관리 시스템에서의 최소 상호작용의 단위 개요 데이터베이스 트랜잭션은 데이터베이스에서 수행되는 일련의 작업이며 모두 단일한 논리적 작업 단위입니다. 즉, 특정 트랜잭션을 일부만 수행하거나 결과를 저장하는 경우는 절대 존재할 수 없습니다. 결과는 무조건 성공 / 실패만 존재합니다. 트랜잭션은 여러개의 DML으로 이루어질 수 있습니다. DML(Data Manipulation Language)이란 데이터 조작 언어라는 뜻으로 CRUD의 행동을 제어합니다. SELECT (READ) INSERT (CREATE) UPDATE (UPDATE) DELETE (DELETE) 트랜잭션을 쪼개면 여러 DML이 존재할 수 있..

[Jest] it vs test
Node.js2023. 3. 4. 16:00[Jest] it vs test

jest로 테스트코드를 작성하던 도중, it()와 test()의 차이가 궁금해졌다. 결론부터 말하자면, it()와 test()는 같은 함수다. 둘다 jest.It.()를 가르키고 있다. 기능 적으로는 차이가 없으니, 문서를 읽을 때 이를 참고하자. 개인 취향에 따라 사용하면 되고, 가독성을 생각하며 사용하자.

OAuth 로그인을 하는데 새로운 계정이 생성되면 안된다.
트러블 슈팅2023. 2. 23. 14:32OAuth 로그인을 하는데 새로운 계정이 생성되면 안된다.

OAuth 로그인을 하는데 새로운 계정이 생성되면 안된다. 서론 애플리케이션 프로젝트 기획 회의에서 회원의 로그인 방식에 대해 이야기했다. 우리 애플리케이션은 회원간의 팀 활동을 통해 함께 성장할 수 있는 커뮤니티 애플리케이션이다. 로그인 방식을 개발하며 기획 개선사항이 있어 이를 기획 팀에 건의했다. 우선, 현재 기획에서의 로그인 방식은 이렇다. OAuth2 인증을 통해 카카오,네이버, 구글, 애플 로그인 등을 제공하기로 하였다. 여기서 백엔드 개발자가 설계할 수 있는 방향은 크게 2가지다. 새로운 OAuth 로그인 시, 새로운 계정으로 회원가입되도록 설계 새로운 OAuth 로그인 시, 이전에 가입한 계정으로 로그인되도록 설계 2번 방식이 애플리케이션 기획과 UX를 해치지 않을 것이라고 생각하여, 2번..

우리는 왜 JWT를 사용하는가? / JWT 사용 이유
CS2023. 2. 20. 17:49우리는 왜 JWT를 사용하는가? / JWT 사용 이유

서론 CS 스터디를 준비하다가 웹 보안에 대한 주제로 스터디를 진행하기로 하였다. 그 중 JWT에 대한 내용을 조사하다가 고민해본 점을 정리한다. What is JWT JSON Web Token의 준말입니다. 자바스크립트의 Object(Key Value) 자료구조를 가지고 있으며, Web Token으로써 사용할 수 있다는 의미다. JWT 사용 이유 HTTP는 기본적으로 state-less를 지향합니다. state-less(무상태)란? 서버-클라이언트 구조에서 서버가 클라이언트의 상태를 가지고 있지 않는 것. 장점1: 서버의 확장성이 높으며 대량의 트래픽이 발생해도 대처할 수 있음. 장점2: (서버가 분리되어 있는 경우) 특정 DB/서버에 의존하지 않아도 인증할 수 있음. 단점1: state-ful(세션)..

[ 개발바닥 2사로 ] 면접 스터디를 시작하며..
CS2023. 2. 15. 16:00[ 개발바닥 2사로 ] 면접 스터디를 시작하며..

개발바닥 2사로에서 진행되는 CS 면접 스터디에 참가하게 되었습니다. 스터디 목적 리마인드 목적은 인턴 준비 면접 준비 두괄식으로 말하기 면접관이 질문했던 내용을 다시 말하며 답변 시작하기. (면접관 질문 리마인드 + 생각할 시간 창출..) 면접관의 의도가 이해가 되지 않는다면 의도에 관해 재질문하기. 애매한 용어는 사용하지 않기. CS 지식 습득 네트워크, DB, 운영체제, SQL 등 프레임워크 지식 습득? 이번에 참여한 스터디원 중 저를 제외한 모두가 JVM 개발자라 프레임워크보단 CS부분을 많이 얻어가려고합니다. 나만의 스터디 룰 본인이 맡은 부분에 대해서는, 이 부분 외에는 더이상 공부할 것이 없을 정도로 준비해 오기. 블로그에 작성할 수 있는 정도로 조사하기. 각 키워드별 예상 질문 뽑아오기. ..

[템플릿] 노션으로 API 명세서 작성하기
Notion2023. 2. 7. 23:12[템플릿] 노션으로 API 명세서 작성하기

토이프로젝트에서 API 명세서를 작성을 담당하게 되었는데, 꽤나 반응이 좋아 블로그로 공유합니다. 출처 없이 막 공유하셔도 상관없습니다. URL: https://www.notion.so/puleugo/API-060ef34cec6c45e982c2c773600602b6 옵션 ··· → 그룹화 → 그룹화 기준 → API 분류 / 태그 를 선택하여 그룹화 조건을 변경할 수 있습니다. 개선 아이디어 말씀해주시는거 환영입니다. 추가했을 때 "오히려 별로다." 하는거 아니면 웬만해서 해드려요.

[Node.js] 싱글 스레드 언어가 어떻게 비동기 처리가 가능한가?, Node.js 동작 원리
트러블 슈팅2023. 1. 26. 16:34[Node.js] 싱글 스레드 언어가 어떻게 비동기 처리가 가능한가?, Node.js 동작 원리

await/ async에 대한 문법 소개 글을 작성하다가 기초가 부족해서 이 질문까지 왔다. await / async 설명 작성 중.. → “아.. 이걸 설명하려니까 Promise를 배워야겠다.” → “어 Promise를 보면 비동기 처리가 가능하다고 하는데 자바스크립트는 싱글스레드가 아닌가?“ → “Node.js는 다른가? Node.js는 JS의 단순 런타임이 아닌가?” JS가 싱글 스레드인데 어떻게 비동기 처리가 가능한지 학생 분들이 계신 방에 질문해봤다. → 저학년들이 많고, Node 진형 개발자분들이 적어 스레드 풀 얘기까지는 나왔지만, 제대로 된 답이 나오지 않았다. 현직자 분들이 많은 개발바닥 채팅방에 질문해봤다. → Node.js에 포함된 libuv라는 라이브러리가 비동기 처리를 책임져준다...

[NestJS] Forever를 사용하여 영구적인 실행을 해봅시다.
Node.js2023. 1. 18. 16:00[NestJS] Forever를 사용하여 영구적인 실행을 해봅시다.

백그라운드 실행은 nohup과 forever이 있지만, nohup은 자동으로 꺼지는 에러를 발견하고 forever을 사용해보려고합니다. Forever은 개발자가 업데이트를 포기한 상황입니다. 새로 개발 하시는 경우에는 Docker, nodemon, pm2를 추천드립니다. 구동환경 Ubuntu 22.04.1 LTS Nest.js 9 Forever 설치 yarn: yarn global add forever npm: npm install -g forever Forever 실행 forever start --minUpdate 1000 --spinSleepTime 1000 -c "yarn start" ./ main.js를 실행했을 때는 DI 쪽으로 에러가 나서 직접 yarn start를 호출하는 방식을 이용했습니다..

온라인으로 개발 공부하기
생각 정리2023. 1. 18. 09:10온라인으로 개발 공부하기

참고자료: https://www.youtube.com/watch?v=d3PYoBwow9I 위 영상을 보고 복기 및 재정리 용도로 적은 글입니다. 영상으로 보셔도 충분합니다. 영상에서는 3가지의 온라인 공부팁을 공유합니다. 공식문서를 읽으세요. 기술에 대한 지식 습득용이 아닌 스택 오버 플로우, GPT한테 얻은 코드 복붙은 거의 성장이 안될거에요. 커뮤니티의 글을 복사-붙여넣기만 반복한다면 코파일럿 미만의 결과물을 얻을 것이고, 개발자 본인의 성장도 더뎌질 것 입니다. 공식문서는 모든 시니어 개발자가 말하는 옳은 공부 방법입니다. 현직자도 꾸준히 읽고 있으며, 본인이 사용하는 기술에 대한 공부를 하는 데에는 개발문서만한 자료가 없습니다. 공식 문서가 도움되는 방식: 초보자: 기본 쌓기 주니어: 지식 강화 ..

[NestJS 에러] node @nestjs/schematics:module --name=auth --no-dry-run --no-skip-import --language="ts" --source-root="src" --spec --no-flat
Node.js2023. 1. 17. 17:52[NestJS 에러] node @nestjs/schematics:module --name=auth --no-dry-run --no-skip-import --language="ts" --source-root="src" --spec --no-flat

$ nest g mo auth Error: Cannot read properties of undefined (reading 'properties') Failed to execute command: node @nestjs/schematics:module --name=auth --no-dry-run --no-skip-import --language="ts" --source-root="src" --spec --no-flat 에러 해결 방법은 2가지가 있는듯하다. @nestjs/schematics 재설치 yarn이라면: yarn global add @nestjs/schematics npm이라면: npm i -g @nestjs/schematics 다만 이 방법으로 해결되지 않았고, 다른 방법을 찾았다. typsc..

[NestJS] AdminJS를 이용한 크롤러 관리 패널 제작기
트러블 슈팅2023. 1. 14. 16:00[NestJS] AdminJS를 이용한 크롤러 관리 패널 제작기

서론 온라인 인기글, 핫한 주제등을 한 눈에 보여줌으로 통하여 영감을 제공하는 사이트를 개발하고 있다. 다시 말해서 종합 크롤러 사이트인데, 우리 서비스에서 사용하는 크롤러들을 관리할 수 있는 페이지를 개발하였다. 여기서 사용한 라이브러리가 AdminJS이다. Nest.js에서 사용할 수 있는 Admin 라이브러리는 3가지다. Admin Bro (Beta) AdminJS NestJs Admin 선택 및 비선택 사유 Admin Bro: Admin Bro는 Beta 버전이라고 적혀있어서 패스했다. 다만, 개발을 진행해보면서 많은 깃헙 레퍼지토리를 확인해보니 Admin Bro를 이용하여 개발한 프로젝트도 꽤나 있었고, 개발 커뮤니티에서 질문글도 많았으며, 무엇보다 AdminJS와 같은 사에서 만들어서 거의 유..

[puppeteer] 크롤러 성능향상, 이미지 수신 차단
트러블 슈팅2023. 1. 2. 16:55[puppeteer] 크롤러 성능향상, 이미지 수신 차단

서론 NESTJS에서 커뮤니티 크롤러를 만들던 중 용량이 큰 자료가 많은 스압(스크롤 압박) 글들 때문에 크롤러가 Timeout Error가 뜨는 일이 발생했다. 생각해보니, 불필요한 이미지는 수신할 필요가 없었다. JS 크롤러 라이브러리인 puppeteer을 이용해서 효율적으로 크롤링을 진행해보려고 한다. 사용 스택 Nest.JS 9 // 무관 es2017 puppeteer 19.4.1 (준비하기..) 혹시 설치도 안되어있다면 설치하자.. yarn add puppeteer 공식 문서 설치 관련 페이지 시작하기 import * as puppeteer from 'puppeteer'; const browser = await puppeteer.launch({ headless: false }); const pa..

Reddit API로 게시글 가져오기
Node.js2022. 12. 11. 18:33Reddit API로 게시글 가져오기

정보 Reddit은 공식 REST API, Python 모듈인 PRAW 를 지원합니다. 본 글은 Reddit API를 통한 OAuth 및 게시글 가져오기를 진행하며, 해당 내용을 공부하면서 겪었던 시행착오를 공유합니다. 이번 강의 플로우 레딧 개발자 계정을 생성하고, 앱을 등록합니다. 등록한 앱의 정보와 Reddit 계정을 통해 엑세스 토큰을 얻습니다. 얻은 엑세스 토큰으로 게시글을 얻어옵니다. 어떤 언어에서든 따라할 수 있도록, Postman에서 진행합니다. 1. 레딧 개발자 계정 생성 레딧 계정이 없다면, 회원가입 해줍니다. 구글이나 애플을 통한 OAuth 로그인이 아닌, 이메일을 통한 일반 회원가입으로 진행해주세요. 레딧 개발자 앱 등록을 진행합니다. 아래 사이트에 접속해 로그인해주세요. 레딧 개발..

[2022년 회고록] 대학입학부터 SW마에스트로 수료까지..
회고록2022. 12. 4. 19:14[2022년 회고록] 대학입학부터 SW마에스트로 수료까지..

이번년도 있었던 일 SW마에스트로 13기 수료 메가콘(대학교 동아리 기술 컨퍼런스 발표) 참여 2021년 작년 말 기계공학과 마이스터 고등학교에 다니다 취업을 포기하고 컴공으로 진로를 바꾸게 되었어요. 2021년도 초에 코딩을 시작해서 파이썬을 조금 만져보고 컴퓨터 공학에 매력을 느껴서 이 진로를 선택했습니다. 컴공을 진학하는걸 선택했을 때는 수능일이 지나고 수시 마감 1주일 전이었어요. 대학을 갈지 말지 고민하다가 현직 개발자분들한테 메일을 보내보았어요. 다들 일단 대학을 가는것 을 추천하고 대학이 마음에 안들면 중간에 나갈 수도 있으니 수시로 대학에 지원해서 합격하게 됐어요. 그리고 개발 오픈채팅방에서 SW마에스트로를 추천해서 지원해봤어요. 2022년 대학 입학 후 대학을 합격하고 제 목표는 SW마에..

[NestJS] 쿠키와 세션이란?
Node.js2022. 11. 19. 16:00[NestJS] 쿠키와 세션이란?

쿠키와 세션을 함께 설명하는 이유: 이 둘의 특징이 비슷하며 차이점이 명확하기 때문에 비교하면서 배우면 습득하기 편함. 먼저, 개요부터 봅시다. 개요 쿠키란? 쿠키는 브라우저에 휘발성 데이터를 저장하는 방식 세션이란? 세션은 서버에 휘발성 데이터를 저장하는 방식 이 둘은 자주 사용되는 데이터를 빨리 꺼내사용해야 하는 경우 사용됩니다. 세션, 쿠키로 사용하는 이유는 뭘까요? HTTP의 특징 때문입니다. Connectionless(비 연결지향): HTTP의 기본적으로 요청&응답만 하고 끊어버립니다. Stateless(상태정보유지안함): HTTP는 상태정보 저장 안함. 그래서 세션 혹은 쿠키로 데이터를 저장합니다. 쿠키와 세션의 차이 쿠키 세션 저장 위치 브라우저(로컬) 서버 보안성 낮음 높음 수명 반영구 브..

[NestJS] TypeORM 논리 삭제(soft delete)와 물리 삭제(hard delete)
Node.js2022. 11. 9. 16:00[NestJS] TypeORM 논리 삭제(soft delete)와 물리 삭제(hard delete)

백엔드에서 삭제를 하는 방식은 두가지가 있습니다. 논리 삭제: 저장된 데이터를 사용하지 않아서 논리적으로만 삭제하는 방법 물리 삭제: 저장된 데이터를 실제로 삭제해버리는 방법 그렇다면 왜 논리 삭제를 사용할까요? 이유는 다양합니다. AI 학습 데이터로 사용하기 위함. 주고받은 채팅일 시, 법적인 문제가 생겼을 때 증거로 사용해야 하기 위함. 관계(릴레이션)가 맺어져 있을 때 문제가 생김. 물리 삭제는 위험하며 귀찮은 방식이기 때문에 대부분의 서비스에서 논리 삭제를 이용합니다. 여기까지가 이론이고 이제 코드로 봅시다. TypeORM이 논리 삭제와 물리 삭제를 확인해봅시다. 논리 삭제(soft delete) @Entity('users') export class User { @PrimaryGeneratedCo..

[NestJS] 에서 puppeteer 사용하기
Node.js2022. 10. 22. 16:00[NestJS] 에서 puppeteer 사용하기

[추천글] 크롤러 성능향상, 이미지 수신 차단 대학교 애플리케이션에 정보시스템의 정보를 크롤링하는 기능을 구현했다. 크롤러는 다른분한테 들은 Node.js 크롤러인 puppeteer을 이용했다. yarn add puppeteer yarn add @types/puppeteer 이 둘을 설치한 후 service에만 puppeteer을 임포트해서 사용할 수 있다. 사용법 https://github.com/puppeteer/puppeteer GitHub - puppeteer/puppeteer: Headless Chrome Node.js API Headless Chrome Node.js API. Contribute to puppeteer/puppeteer development by creating an accou..

반응형
image