-
[AWS] CloudFront 캐싱 무효화 하는 방법
디자인팀에서 기존 s3에 올려놨던 이미지 파일을 변경해 달라고 요청이 들어왔다.파일명은 같아서 기존 파일을 덮어씌우는 형태로 변경 후 '변경완료했습니다~' 하고 피드백을 드렸다. 왠걸? 주신 파일 그대로 변경했는데 변경이 안되었다고 연락이 왔고,'엥 난 변경했는데??' 생각하면서 이슈 확인이 시작되었다..다행히 30분 내로 원인 + 해결까지 완료 이 이슈를 통해서 알게 된 점1. 같은 파일명으로 변경 후, 변경 전 파일이 캐싱되어 있으면 캐싱이 만료되기 전까지는 변경 전 파일을 바라보게 된다는 점2. 네트워크 응답 헤더를 통해 cloudfront를 통해 캐싱되었는지 확인할 수 있는 태그가 있다는 점3. cloudFront를 폴더별, 파일별로 무효화시키는 명령어가 있다는 점 해당 파일이 cloudFro..
2024.11.08 16:24 -
[AWS] Global Accelarator 적용 후기
1. 적용 계기최근엔 프리랜서로 올해 글로벌 서비스 앱 런칭도 준비하고 있다.백엔드 개발자가 나혼자라 다양한 시도를 하며 고군분투 중이다. 어느새 6개월이 되어가고 있네 시간이 엄청 빠르다.. 현재 시드 투자를 받기 위해 투자자 미팅이 많은데, 대표님께서 미국 투자자 미팅 일정이 잡혀 갑자기 당장 내일 모레 뉴욕을 간다고 하셨다.한창 개발 중이라 운영 서버도 구축이 안되어있고, 개발 서버도 서울 리전에 있는데, 뉴욕에서 성능이 괜찮을지 걱정이 되었다. 서울 -> 서울리전 서버는 트래픽 성능이 좋겠지만, 뉴욕 -> 서울리전 서버는 과연..? 기존에 이미지 최적화를 위해 CloudFront를 적용해놨지만, CloudFront는 정적 콘텐츠를 캐싱해주고, 캐싱되지 않은 데이터는 오리진으로 요청한다. 그럼..
2024.11.01 15:40 -
[Mac] MySQL root 비밀번호 변경하기
이슈 - root 계정 비밀번호 까먹어서 접근 불가... 방법 1. 혹시라도 mysql 서버가 켜져있지 않다면 실행시켜 주기 $ mysql.server start 아래와 같이 뜨면 정상적으로 실행됨 2. 비밀번호 없이 root 계정에 접근하기 $ mysql - u root 3. database [mysql]에 접속 $ use mysql; 4. 새로운 비밀번호 변경 쿼리 $ alter user 'root'@'localhost' identified with mysql_native_password by '변경할 비밀번호 작성'; 5. 현재 사용 중인 MySQL 새로운 설정을 적용 (ID, 패스워드 추가 & 수정될 경우는 환경 설정이 변경되었기 때문에 필요함) $ flush privileges; 6. 확인하기
2024.04.10 21:50 -
[AWS] Kinesis Data Streams 1분 요약 (개념, 예시, 그 외 비슷한 서비스 종류)
최근 면접 볼 일이 많았는데, 그중 프리랜서 면접 본 곳에서 AWS Kinesis를 통해 데이터 스트림 처리 관련 업무를 맡게 되는 곳이 있었다.. (Kinesis라는 용어조차 처음 들었더니 발음을 잘 모르겠어서 AWS에 데이터 스트림 서비스라고 검색해 본 건 안 비밀...) 그만큼 모르는 분야였어서 이번 기회에 간략하게 정리해 보았다.. 나와 비슷한 경험이 있는 사람들이 빠르게 아는 척하기에 딱 훑기 좋은 글이 되길 바라면서..😝 📝 AWS Kinesis 개념 - 실시간 비디오 및 데이터 스트림을 수집, 처리 및 분석할 수 있는 완전관리형 AWS 서비스이다. 데이터 스트림을 일상생활에 비유를 해보자. 내가 카페에 앉아 있고 주변에서 일어나는 모든 대화를 실시간으로 듣고 있다고 가정하면, 여기서 일어나는..
2024.04.07 16:35 -
[리눅스마스터 1급] 2023년 필기 합격 후기 & 시험 공부 방법
📝 개요✍🏻 시험을 보게 된 계기 회사에서 AWS 업무를 배우게 되면서 다소 작은 장애들은 내 선에서 대응해야 할 일들이 생겼다. 현재 생성된 인스턴스들의 os는 모두 ubuntu로 올라가 있는 상황이었다. 문제가 생겼을 시 당연히 리눅스 명령어 사용하여 원인 파악을 해야 하는지라 리눅스 지식이 어느 정도 필요해졌음을 느끼게 되었다. 이전에 알고 있던 명령어는 cd, cat, vi와 같이 정말 기본적인 명령어였기 때문에 예를 들어 out of memory라는 이슈가 생겨서 서버가 뻗었을 경우, 어떤 명령어로 어떻게 찾아야 하는 건지 그때그때 구글링을 해서 급급하게 찾아보는 상황이었다. 이러저러한 이유로, 리눅스 기본기를 다지자 라는 마음으로 그냥 공부하려다가 이왕이면 관리자 영역까지 공부할 수 있는 리눅..
2023.09.10 16:14 -
[리눅스마스터 1급] 16/03/12 기출 - 3과목 정리
✅ 파일 공유를 위한 서비스 및 프로토콜 - SAMBA, NFS(Network File System), FTP(File Transport Protocol) 📕 SAMBA 특징 GPL 기반의 자유 소프트웨어로 리눅스와 윈도우 간 디렉토리, 파일,, 프린터 등 공유에 사용 TCP/IP 기반으로 NetBIOS상에 동작하는 SMB(Server Message Block) 프로토콜 이용 삼바에서 설정한 그룹과 호스트명이 윈도우의 Network Neighborhood에 컴퓨터 이름으로 표시된다, 또한 삼바를 이용하면 상대의 호스트의 IP 주소 대신 컴퓨터 이름을 이용하여 접속 가능 (WINS- Windows Internet Name Service) CIFS(Common Internet File System)은 SMB..
2023.08.26 03:42 -
[Ubuntu] OpenSSL 버전 업데이트 기록 (Ubuntu 18.04 LTS)
회사 AWS EC2 서버 내 OpenSSL은 1.1.1 버전을 사용하고 있는데, 해당 버전이 2023년 9월 11일 지원 종료이므로 버전 업데이트를 진행할 필요가 생겼다. 현재 장기적으로 안정적인 버전은 3.0.10 (2026년 9월 7일까지)이므로 해당 버전으로 업데이트 하기로 했다. ----------- 적용 환경 OS: Ubuntu 18.X ~ 22.X Old OpenSSL: 1.1.1, 3.0.2 등 New OpenSSL: 3.0.10 OpenSSL패키지, 버전 확인 # 패키지 확인 sudo apt list openssl or sudo apt list libssl # 버전 확인 openssl version 패키지 업그레이드(사전작업) sudo apt update OpenSSL 다운로드 (OpenS..
2023.08.19 00:28 -
[Network] google.com을 검색하면 어떻게 될까?
🔍들어가기전 우연히 유튜브에서 해외 개발자가 이런 면접 질문을 받았을 때 당신은 대답할 수 있냐는 영상을 보게 되었다. 'google.com'을 검색하면 일어나는 과정을 설명해봐라 google.com을 검색하면...google창이 나옵니다... 라고 말한다면 면접 광탈하겠지..^_^ 대충 DNS가 컴퓨터가 읽을 수 있는 IP주소로 변환해줘서 그걸 서버로 요청해서 응답받는 과정이라고만 알고있어서 이 기회에 확실히 대답할 수 있도록 공부해야겠다는 생각이 들었다. 정말 단순한 질문인 것 같은데 '너 네트워크의 기초를 알고 있니?'에 대한 대답을 들을 수 있는 질문인 것 같아서 네트워크 개념을 말할 수 있는 좋은 질문 같다. 그래서 이번 포스팅에서는 네트워크 기본 원리에 대해 설명할 수 있도록 정리해보았다. 먼..
2023.07.29 23:33 -
[Node.js] Node.js의 비동기적 작동이 어떻게 나오게 되었을까? (작성중)
Node.js 환경에서 약 2년 정도를 개발했지만, 이미 구성되어 있는 프레임에서만 개발을 진행했다. 어떻게 동작하고, 왜 Node.js가 생겨나게 된건지 이제서야 궁금해지기 시작해서 공부하게 되었다. 내용의 기반은 Node.js 디자인 패턴 책과 기타 논문을 종합한 짬뽕 글이다. 학습 목표: - Node.js 철학, "Node way" - Reactor 패턴 - Node.js의 비동기 이벤트 주도 아키텍처의 핵심 메커니즘 -브라우저와 다르게 서버에서 동작하는 Javascript의 의미 Node.js 코어를 구성하는 몇가지 원칙들이 있다. - 최소한의 기능세트를 가지고 코어의 바깥부분에 유저랜드 혹은 유저스페이스라고 불리우는 사용자 전용 모듈 생태계이다. (*유저랜드: 사용자들이 모여서 소통하고 상호작용..
2023.07.28 01:59 -
[생각정리] 지금 다니고 있는 회사에서 하는 일을 잘하기 위해서 노력하는 것이 가장 좋은 공부다.
요 근래에 나의 생각 중 많은 부분을 차지하던 공부 방향에 대해 조금의 해답이 되었던 글을 공유한다. 개발자의 평생공부 개발자의 평생공부평생 공부하는 건 개발자만이 아니다. 다른 직업을 가진 사람들도 쉼 없이 공부하고, 컨퍼런스와 세미나를 참가하고, 스터디를 한다. 공부없이 할 수 있는 일이 없기 때문이다....zdnet.co.kr 사실 위 컬럼의 내용이 정답은 아니다. 실력을 쌓고 싶다고 말하지만 실력이란 무엇일까에 대한 깊게 고민해본 적은 없었다. 실력을 쌓고 빠르게 증명 할 수 있는 방법은? 아무리 생각해도 현재 내가 담당하고 있는 업무에서 눈에 띄게 무언가 성과를 낸다는 것.. 그게 실력이 아닐까 싶다.. 내가 실력을 쌓고 싶은 이유는 좋은 성과를 내고, 누군가에게 도움이 되고 싶고 이 누군가가..
2023.07.24 01:14 -
[MySQL] Temporary Table(임시테이블)
🔎 들어가기 전 회사에서 임시테이블을 이용하여 데이터를 조회하는 프로시저를 생성했었다. 그러던 중 특정 테이블을 조회했는데 해당 테이블에 있는 데이터가 조회되지 않았고, 테이블을 조회하기 직전에 호출했던 프로시저 내용이 조회되었다. 응.....? 갑자기 왜 이러지?.. 너무나 당황했다. 1차적으로 든 생각은 내가 호출한 프로시저 내부에서 임시테이블이라고 생성 또는 DROP한 테이블이 임시테이블이 아니라 그냥 테이블이었나? 다행히 임시테이블을 생성한게 맞았고, 실제 테이블명과 같게 생성하여 해당 세션에서는 임시테이블이 우선으로 보여지고 있는 상황이었다. (이런 실수를 하다니......sql 모드는 이런거 안잡아주나..?) 아무튼 실수를 통해 또 한가지 배웠다. 정말 감사하게도 개발 DB에서 배운게 다행!!..
2023.07.23 23:34 -
[Eclipse] Properties 인코딩 깨지는 현상 해결
다른 곳에서 UTF-8 인코딩 변경했는데, Properties에서만 인코딩이 깨지는 현상이 발생했다. Properties 관련 인코딩 변경하러 가는 방법 👉 Window > Preferences > General> Content-Types > Text 클릭 > Java Properties File 클릭 아래 Default encoding : UTF-8로 변경 Apply 클릭하면 인코딩이 정상적으로 된 properties를 확인할 수 있다.
2023.07.19 17:00 -
[Spring] 클라이언트 device 정보 간단하게 조회하기
서론 ✅ Spring boot 에서 클라이언트 요청 시 어떤 디바이스 환경인지 조회하는 코드 정리해보았다. 나중을 위해 기억해놔야지!!! ✅ Spring AOP에 사용자 디바이스 정보를 조회하여 로그를쌓고 싶었다. 마침 아래 Spring 에서 제공하는 maven이 있길래 해당 라이브러리 추가하여 사용했다. 별도의 어려운 방법 없이 사용 가능하기 때문에 다른 방법이 있는지는 모르겠지만! 정상 작동확인했다. 우선 해당 라이브러리의 버전을 확인해야한다. 23.07.18 기준으로 안정적인 버전은 2.0.0.M3이었다. 아래 사이트에서 현재 버전을 확인할 수 있다. 👉 참고: https://spring.io/projects/spring-mobile#learn 버전을 확인했으면 이제 pom.xml에 reposito..
2023.07.18 22:24 -
[NestJS] ExpressJS만 써본 개발자가 공부하는 NestJS - 기본 아키텍처 편
더보기 ✍🏻 들어가기 전 ----------------------------------------------------------------------------------------------- 해당 글은 NestJS 초보자가 study를 하기 위해 틈틈이 작성 중인 게시글입니다. 부족한 점이 많기 때문에 NestJS 고수 분들께서 피드백 주시면 너무 감사드립니다 :) ✅ NestJS NestJS를 학습하게 된 계기는 회사 내 담당하고 있던 프로젝트의 프레임워크인 ExpressJS를 조금 더 나은 구조로 개선할 수 있을까라는 고민에서 시작되었다. 현재 약 하루 500명 정도의 방문자가 있고, 앞으로 회사 측에서 더 투자할 프로젝트이기 때문에 대량의 트래픽이 발생하기 전에 미리 안정적인 서버를 구축해놓고..
2023.07.16 23:30 -
[개념] axios 와 fetch 어떤게 더 좋을까?
🔎 들어가기 전 B/E 파트에서 개발할 때는 데이터를 요청하기 보다는 데이터를 응답하는 입장이 되어 개발을 진행했다. 그러다보니 데이터를 요청하는 부분에 대해서 깊게 생각할 기회가 없다가 SMS 발송 파트를 개발하게 되었고, 그때 axios를 처음 접했다. 그 후 계속 axios만 쓰다가 최근 들어 F/E파트에서 개발하며 fetch도 보게 되었다. 단순히 둘다 비동기 HTTP 통신을 위해 사용하는 걸로 알고 있고, 그 둘의 차이점에 대해서는 자세히 모르고 있었다. 문득 axios는 라이브러리이고, fetch는 내장 함수인데 왜 굳이 axios라는 라이브러리를 설치해서 쓰는거지? 라는 의문이 들었다. 둘은 뭐가 다른걸까? 뭐가 더 효율적인걸까? 이번 기회에 API 요청할 때 뭐가 더 좋은지 공부해보려고 한..
2023.07.15 23:37 -
[AWS] CloudFront 개념 뿌시기
📍CloudFront란? [AWS 공식 문서 정의] "Fast, highly secure and programmable content delivery network (CDN)" Amazon CloudFront는 전 세계 고객에게 데이터, 비디오, 애플리케이션 및 API를 안전하게 제공하는 빠른 CDN(Content Delivery Network) 서비스 📌CloudFront 핵심 포인트 1. Edge Location CloudFront를 위한 캐시 서버(Cache Server)컬렉션 사용자가 데이터 요청 시 1차적으로 엣지로케이션에 캐싱된 콘텐츠가 있는지 체크 후 있으면 즉시 전송, 없으면 오리진 서버에서 데이터 캐싱 후 사용자에게 제공 캐시 서버이기 때문에 캐시 만료시간도 설정 가능 2020년 기준 글..
2023.07.14 22:54 -
[Spring] Spring-context.xml 정리
Application Context spring 프레임워크에서 제공하는 핵심 기능 중 하나 Spring IoC 컨테이너로서 Spring 애플리케이션에서 객체의 생성, 구성 및 관리 담당 용어 정리 IoC (Inversion of Control) 제어의 역전 소프트웨어 디자인 패턴 중 하나 누구에게 주도권이 있는지가 핵심 개념 제어반전이 적용된 구조는 외부 라이브러리가 프로그래머가 작성한 코드를 돌아게하는 것 즉, 제어권이 반전됨 프레임워크와 라이브러리 사용차이 프레임워크에 등록되어있는 요소들을 가져다 씀 라이브러리는 필요한 구성요소를 가져옴 장점 미리 정해진 협약대로만 동작하게 됨 모듈을 바꾸어도 다른 시스템에 부작용을 일으키지 않음 DI (Dependency Injection) 프로그래밍에서 구성요소간..
2023.07.13 23:20 -
[Java] Spring properties 환경 변수 적용
- 변경해야 할 부분 환경별 properties 구분 (폴더 구조) spring-context.xml spring-datasource.xml server 탭 > tomcat 더블 클릭 폴더 구조 아래와 같이 환경별 생성 local:로컬, dev: 개발,prod: 운영 이제 아래 폴더명으로 구성된 properties는 환경별로 세팅할 수 있도록 구성 완료 Server (tomcat) 설정 - spring server 탭 > tomcat 더블 클릭 General Information > Open launch configureation > Arguments 탭 클릭 VM arguments에 -Dspring.profiles.active=local 추가 후 Apply 현재는 로컬환경이니까 local로 기본해놓고,..
2023.07.12 22:45 -
[Server] Ngnix 왜 사용할까?
🔎 들어가기 전.. 이번 포스팅은 Nginx 사용법보다는 Nginx를 사용하는 이유에 대해 중점적으로 다뤄보려고 한다. ngnix 서버 올리는 방법, 포트 포워딩 하는 방법, redirect하는 방법 등 과 같은 사용법에 대해서는 구글링만 하면 코드를 그대로 갖다 쓸 수 있을 정도로 잘 정리된 포스팅이 많다. 그렇기 때문에 nginx를 굳이 왜 써야하는지, nginx를 왜 만들었는지에 대한 이해를 바탕으로 쓴다면 위에 말한 포스트들을 내가 필요한 순간에 잘 활용할 수 있을 것 같았다. 웹서버에 대해 듣게 된다면 꼭 빠지지 않는 Ngnix! 왜 만들게 된 걸까? ✏️ 기존 Apache의 한계 먼저 웹의 역사와 긴밀한 관련이 있다. 초기 웹 상황 웹 브라우저에 정보를 표현할 수 있게 해주는 마크업 언어 HT..
2023.07.11 00:27 -
[AWS Skill Builder] 유료 학습 과정 체험 2023.07.06 14:57
-
[React] React-Hook-Form 개념편
📝 들어가기 전 Form은 웹 사이트나 어플리케이션에서 개발해 본 경험이 있다면 필수로 다뤄봤을 부분이다. 로그인, 회원가입, 게시글을 등록하거나 등등 많은 부분에서 form을 쉽게 접할 수 있기 때문이다. react를 사용한 여러 프로젝트에서 매번 controlled component를 사용하여 Form을 개발했다. React에서는 state로 관리하면 실시간으로 사용자가 입력한 값을 확인할 수 있는 등의 이유로 추천하고 있기 때문이다. contolled component로 Form을 개발한다면, 아래와 같이 input의 값을 관리하기 위해 state 변수들을 만들 것이다. 그리고 각각 onChange 이벤트들을 추가하고, 우리는 input을 업데이트할 때마다 state가 함께 update되며 값을 c..
2023.07.05 21:43 -
[Ubuntu] 에러 node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node)
개발환경 Ubuntu: 18.04.6 LTS nvm: 0.39.2 npm: v8.3.1 node: v18.16.0 문제상황 aws ec2서버에 node 설치 후 pm2 설치하려는데 에러남 nvm사용해서 node 18.16.0으로 버전 설치했는데, node 버전이나 npm 버전을 체크하면 자꾸 아래와 같은 에러가 났다. 에러 node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node) 해결 - ubuntu 18.04.6 에서는 node v18^버전을 사용하면 위 에러가 발생한다. 1. ubuntu 버전을 다운 혹은 업하거나 2. node버전을 다운하거나 최신 버전으로 올려야하는데, - 나는 node 버전을 v..
2023.07.04 21:25 -
[ubuntu] ubuntu 버전 확인 명령어
1. ubuntu 버전 체크 $ cat /etc/issue 2. 결과
2023.07.04 21:04 -
[NVM] nvm node 기본 버전 설정
1.특정 버전으로 기본 셋팅 # nvm alias default [버전] $ nvm alias default 16.14.2 2.그냥 최신버전으로 할때 $ nvm alias default node 3. 최종 결과 확인 $ nvm use $ node -v
2023.07.04 20:53 -
[NVM] nvm node 버전 삭제하기
# nvm에 설치된 node 버전 리스트 조회 nvm list # node 8.xx 버전 삭제하기 nvm uninstall v8 만약에 삭제가 안된다면, 아래와 같이 nvm 노드 버전 조회 후 nvm list 선택된 버전을 삭제하려고 하는건 아닌지 체크해보기 아래와 같이 초록색으로 되어있는게 현재 선택된 버전임 nvm use [설치된 노드 버전 중 한개] 삭제하려고 하는 버전 말고 다른 버전을 선택 후 삭제하면 아래와 같이 삭제가 잘된다.
2023.07.04 20:45 -
[TypeScript] setState props로 넘길 때 타입 지정하기
interface ILibrary { book:string setBook: React.Dispatch } 해결 방법: - React.Dispatch 와 같이 명시해주면 된다!
2023.07.03 22:10 -
[React] 에러 img elements must have an alt prop, either with meaningful text, or an empty string for decorative images.
👉 build 시 아래와 같이 es-lint warnig이 떴다. 👉이유: 변경 전 변경 후 아래와 같이 alt 속성을 추가해줬고, 해당 이미지가 안보일 시 보여지는 문구를 작성해주면 해결
2023.07.03 14:40 -
[DB] SQL과 NoSQL 개념
🔎들어가기 전 관계형 데이터베이스 vs 비관계형 데이터베이스 SQL 기반 데이터베이스 vs. NoSQL 기반 데이터베이스 관계형 데이터베이스 vs. NoSQL SQL vs. NoSQL 같은 듯 다른 말로 느껴지는데 각각 무슨 차이가 있는 걸까? SQL이 뭐고 NoSQL이 뭔지는 알지만 위 비교문들이 각각 같은 의미인지 다른 의미인지에 대해 헷갈려서 확실하게 공부하기 위해 포스팅을 하게 되었다. 이번에는 관계형 데이터베이스와 비관계형 데이터베이스에 대해 중점적으로 포스팅해보려고 한다. Chapter 1. 관계형 데이터베이스가 있다. 관계형 데이터베이스에서는 테이블의 구조와 데이터 타입 등을 사전에 정의 테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입 가능 테이블의 관계가 구조화된 데이터의 모음이기 때문..
2023.07.02 23:14 -
[React] Fragments
🔎들어가기 전 react로 개발할 때 아래와 같은 패턴을 많이 접했을 것이다. return ( ...someting ) 잘 알고 쓰고 있다면 베스트! 하지만, 나는 그냥 요렇게 감싸야 빨간 밑줄이 안쳐져서? 또는, 단순히 여러개의 엘리먼트들을 그룹화하고 싶을 때 사용하고 있었다. 그러던 중 아래와 같은 코드를 보게 되었다. ...someting 응? 이게 뭘까? 알고 보니 와 같은 의미였다. 제대로 모르고 그냥 쓰다보니 마치 계피와 시나몬이 다른 건 줄 아는 느낌이었다..^^;;... 그래서 이번 기회에 간단하더라도 짚고 넘어가자! 라는 의미로 포스팅하게 되었다. 📍Fragments란? Fragment는 React v16에 추가된 기능으로, DOM에 별도의 노드를 추가하지 않고 여러 자식을 그룹화한다. ..
2023.07.01 23:19 -
[React] React 동작 방법 - Virtual DOM
📝 들어가기 전 프로젝트에서 React를 실제로 사용하고 있어서 React의 장점에 대해서는 어느 정도 파악하고 있다고 생각했다. 그런데 갑자기 의문이 들었다..! 화면 깜빡임 없이 변경사항만 부드럽게 화면에 표시해주는게 사용자 경험이 향상되는데 도움을 주는 건 알겠어, 근데 Virtual DOM은 왜 쓰는거지? 실제 DOM 조작이 왜 비효율적인거지? 어떤 부분 때문에 비효율적인거지? 등등.. 브라우저 작동원리에 대한 이해도가 부족함에서 오는 의문들이었다. 그래서 이번 기회에 React의 작동원리도 제대로 짚고 넘어갈겸 브라우저 작동 원리 그리고 왜 DOM을 직접 조작하는게 비효율적인지에 대해서 공부해보려고 한다. ps. 다른 분들이 잘 정리해놓은 글을 스스로 공부하기 위해 요약한 정도의 글이라 부족할 ..
2023.06.29 23:33