본문 바로가기

Programming181

Do it 타입스크립트 프로그래밍 후기 💡 타입스크립트는 Javascript 언어에 타입 안정성을 얹은 언어입니다. Microsoft에서 제작되었고, C#을 창시했던 아네르스 하일스베르가 핵심 개발자로 참여하고 있습니다. 본격적으로 대중화되기 시작한 계기는 Google의 Angular 팀이 타입스크립트를 사용하기 시작하면서 리액트나 Vue.js에서도 Typescript를 받아들이기 시작합니다. 최근 대부분의 Node.js 스택을 사용하는 기업에서는 Typescript로 넘어가고 있거나 이미 넘어간 상황입니다. 최근 읽어본 글 중에서 당근마켓, ZUM에서도 Typescript로 넘어가고 있다는 기술블로그를 작성하기도 했습니다. 그만큼 Typescript가 제공하는 타입 안정성을 갈망하는 추세입니다. TypeScript를 활용한 서비스개발 당근마켓은.. 2022. 10. 11.
Typescript로 express 1분만에 실행하기 Javascript가 괴물이 되어가는 과정 Javascript는 동적 타입 언어입니다. 즉, 변수의 타입이 런타임 환경에서 결정되어 버립니다. 예외 상황에 취약하다는 단점을 가지고 있습니다. Javascript 언어의 태생이 웹 브라우저에서 구동되는 목적이다 보니 말도 안되는 코드도 어떻게든 작동되도록 설계되어 있습니다. 정말 정말 이상한 코드를 하나 보시죠. arr라는 배열에 true Boolean 타입의 변수를 더해줬습니다. 이런 경우는 거의 없겠지만 Javascript가 괴물이 되어가는 상황을 가정해봤습니다. 과연 result 변수에는 어떤 내용이 담겨 있을까요? const arr = [1,2,3] const result = arr + true; console.log(result); console... 2022. 10. 10.
mkdir -p 옵션이란? 💡 mkdir 에러발생 ⛑ Directory를 생성할 때 쓰이는 명령으로는 mkdir이 있습니다. Make Directory의 줄임말로, 새로운 폴더를 생성할 수 있습니다. 참고로 새로운 파일을 생성하기 위해서는 touch 명령어를 사용하시면 됩니다. 여기서 문제가 생기는데요, 새롭게 생성할 폴더 하위에 폴더를 만들기 위해서는 그냥 mkdir 명령어로는 작동이 안됩니다. 예를 들어서 test 디렉토리 하위에 test 디렉토리를 만든다고 가정해봅시다. 새로운 폴더 하위에 1-1_sub 폴더를 만들어야 되니 아래 처럼 명령을 입력하면 에러를 반환합니다. $ mkdir 01-test/1-1_sub mkdir: cannot create directory ‘01-test/1-1_sub’: No such file or.. 2022. 10. 10.
백엔드 개발자 기술 면접 질문 준비 정리 🔦 백엔드 개발자 기술 면접 질문 정리 🔦 💻 Computer Science 공통 질문 ✔️ 프로세스와 쓰레드의 차이점에 대해 설명해주세요 프로세스 프로세스는 프로그램이 CPU를 할당받은 상태입니다. 독립적인 메모리 영역(CODE, Data, Heap, Stack)을 가지고 다른 프로세스와 공유하지 않습니다. 프로세스간 통신은 IPC를 사용합니다. 멀티 프로세스는 여러개의 프로세스가 동시에 실행되면서 CPU 레지스터에서 컨텍스트 스위칭이 발생하는데, 프로세스 간 공유되는 메모리 영역이 없으므로 부담이 됩니다. 프로세스는 최소 1개의 쓰레드를 가집니다. 쓰레드 쓰레드(Thread)는 프로세스내의 하위 실행 단위입니다. 프로세스의 메모리 영역(CODE, Data, Heap)은 쓰레드간 공유합니다. 쓰레드는 .. 2022. 10. 6.
Markdown code block language 선택하는 방법💡️ Markdown형식으로 글을 작성할 때 코드 블럭을 삽입할 수 있습니다. 여기서 언어를 선택해서 Markdown에 삽입이 가능합니다. Markdown code block language 선택하는 방법 예를 들어 javascript로 아래 코드를 작성합니다. const helloWorld = () => { console.log('hello world'); } Markdown에서 ```code``` 형식으로 코드를 삽입할 수 있습니다. 언어 선택을 하지 않는 경우 default로 bash가 선택되어 출력됩니다. 코드 가독성이 떨어집니다. 언어를 선택하기 위해서는 아래와 같이 언어를 명시해줍니다. ```javascript const helloWorld = () => { console.log('hello wor.. 2022. 10. 2.
Django Admin superuser 계정 생성 비밀번호 찾기 💡️ Django 프레임워크에서는 admin 패널을 기본으로 제공해줍니다. admin 패널에서 DB를 생성하고 삭제할 수 있고, 현재 몇명의 유저가 등록되어 있는지 한눈에 확인할 수 있습니다. Django Admin 패널 접속하기 💡️ 먼저 Django에서 Server를 실행합니다. $ python3 manage.py runserver admin 패널에 접속하기 위해서는 /admin URL로 접속합니다. http://localhost:8000/admin Django Admin 계정 생성 🚀️ admin 패널을 사용하기 위해서는 superuser를 생성해야 합니다. $ python3 manage.py createsuperuser superuser를 생성하면 이름, 이메일, 비밀번호를 입력하는 라인으로 이어집니다.. 2022. 10. 1.
프로세스 스레드 차이점 ⁉️ Process? 프로그램을 실행하면 우선 주기억장치에 적재되어 CPU에 의해 실행됩니다. 이 때 CPU에 실행상태에 있는 프로그램을 프로세스라고 합니다. CPU가 프로그램에 할당되고 PCB(Process Control Block)을 정의하는 단위가 됩니다. 쉽게 말해서 프로그램이 CPU에 할당받는 단위를 프로세스라고 합니다. 여러개의 프로세스를 처리하기 위해서는 CPU에서 프로세스 스케줄링을 통해 일정량의 시간만 할당해 멀티 프로세스를 처리할 수 있게 됩니다. Ubuntu에서 Monitor을 켜시거나 윈도우에서 작업관리에 들어가시면 현재 동작중이 프로세스들을 확인할 수 있습니다. 옆에 ID가 프로세스를 특정하는 PID(Process ID)가 됩니다. 프로세스 상태 전이도 프로세스는 주요한 3가지 상태를 .. 2022. 10. 1.
Spring boot VS Node Express 차이 성능 비교💡️ 서버 프로그램을 제작하는 프레임워크는 다양합니다. 프로그램 언어가 다양한 만큼 많은 종류의 프레임워크가 존재합니다. 각자 손에 익은 언어가 있지만, 사용하는 용도에 따라 사용하는 서버 프로그램 프레임워크도 달라집니다. Node.js로 서버 작업을 하다 갑자기 궁금해졌습니다. 전 세계적으로 가장 보편화 되어 있는 Spring Boot와 Node.js의 expresss는 어떤 차이점이 있을까요? Spring Boot 🌏️ JAVA 로 구성된 서버 프레임워크입니다. 대한민국은 JAVA 공화국이고, 아직까지도 많은 분야에서 사용되는 언어입니다. JAVA 계열에서는 Spring Boot를 사용해 금방 서버 애플리케이션을 만들 수 있습니다. 개발하는데 필요한 대부분의 라이브러리들이 이미 spring boot에 들어.. 2022. 10. 1.
Django 프로젝트 시작하는 방법 💡️ Django는 python을 사용하는 서버 제작 프레임워크 입니다. 프로젝트를 시작해 간단하게 서버 프로그램을 돌릴 수 있습니다. Django 프로젝트 시작하는 방법 💡️ Django 프로젝트를 시작하기 앞서, 의존성을 주입해주기 위해 사용하는 툴이 '가상환경'입니다. 가상환경을 실행하고, 구성된 가상환경안에서 버서 제작에 필요한 모듈을 설치하여 사용할 수 있습니다. 가상환경 만들기 $ python3 -m venv 가상환경이름 위와 같이 명령어를 실행하면 다음과 같은 디렉토리가 생성됩니다. . ├── bin │ ├── activate │ ├── activate.csh │ ├── activate.fish │ ├── Activate.ps1 │ ├── easy_install │ ├── easy_install-.. 2022. 10. 1.
[회고록] 코드스테이츠 블록체인 파이널 프로젝트 완수 후기 코드스테이츠 블록체인 파이널 프로젝트 완료 한달의 기간이 주어졌던 파이널 프로젝트가 드디어 완료되었습니다. 프로젝트 주제는 4주동안 퍼블릭 블록체인을 활용한 DID 서비스를 제작했습니다. 팀장을 포함한 총 4명의 팀원이 구성되었고, 중간에 1명이 잠수를 타버려서 결국 한명 분은 제외하고 남은 3명이서 Backend, Frontend, Smart Contract 부분으로 Role을 나눠서 프로젝트를 진행했습니다. 프로젝트 진행하면서 꼭 1명씩은 잠수를 타버리는건 질량 보존의 법직 같은건가요? 더 최악인건 잠수탄 사람이 일부 Role을 받은 상황에서 잠수를 타버려 구현하고자 했던 기능 자체를 구현 못하는 상황에 이르게 되었습니다. 결국 해당 부분은 차후 개선하기로 표시하고, 구현 하지 못한채로 발표에 임하게.. 2022. 9. 30.
MongoDB Atlas 백업 하는 방법 (mongodump mongorestore) MongoDB Atlas 백업 하는 방법 프로그램을 작성할 때 N-Tier 아키텍처로 서비스를 구성할 때 데이터베이스를 사용한다면 백업 DB구성은 선택이 아니라 필수입니다. AWS의 RDS를 사용하는 경우 snapshot 기능을 지원하지만 MongoDB Atlas를 사용하는 경우 따로 백업 DB를 구성해야 합니다. 물론 무료 Tier로 제공되는 M0 cluster에 한정된 이야기 입니다. M10 이상의 클러스터를 사용하는 경우 continous cloud backup 기능을 자동으로 지원하므로, 돈주고 사용하면 되지만 우리는 배고픈 개발자입니다. 무료 티어를 사용하는 경우 MongoDB Atlas 백업하는 방법을 알아봅니다. mongodump / mongorestore MongoDB Atlas DB를 백.. 2022. 9. 29.
MSA 아키텍처란? SOA를 구현해보자 🚀️ MSA? 개발자들은 뭐든지 분리하는 것을 선호합니다. 잡동사니들이 쌓여있는 방에서 필요한 물건을 찾는건 어렵죠? 같은 논리로 하나의 파일에 모든 기능이 담겨있으면, 프로그램이 작동하다가 실패할 경우 어떤 곳에서 bug가 발생했는지 디버깅을 따로 해야 하는 작업이 부담스러워 집니다. 이렇게 복잡하게 짜인 코드를 스파게티 코드 혹은 에일리언 코드라고 합니다. MSA(Micro Service Architecture)란 작고 독립적으로 배포가능한 수준의 단위로 서비스를 쪼개서 수행되는 아키텍처를 의미합니다. 마이크로서비스는 완전히 독립적이어야 하고 다른 기술 스택들이 사용될 수도 있는 단일 영역으로 구분됩니다. Monolithic VS Micro 마이크로 서비스의 반대되는 개념은 모놀리식 서비스입니다. 모든 기.. 2022. 9. 28.
기술 스택 badge 2022. 9. 27.
React 새로고침 방법 3가지 React 컴포넌트를 사용한 후 새로고침을 해야 하는 경우 적용가능한 방법은 3가지 입니다. 만약 이동하고자 하는 페이지 URL 상대 경로가 '~/user/login' 이라고 하면 window.location 사용 window.location.replace('/user/login') location 사용 location.reload('/user/login') history 사용 history('/user/login'); 3가지 방법 중 편한 방법으로 사용하시면 됩니다. 2022. 9. 25.
React .env 사용법 node.js 환경에서는 비밀값으로 가져가야 하는 데이터들은 .env 파일에 넣어두고 process.env 객체를 불러와 사용합니다. 마찬가지로 React에서도 process.env 객체에 접근해 데이터를 시크릿하게 관리할 수 있습니다. React .env 사용법 우선 .env 파일의 위치는 메인 디렉토리 하위에 위치시킵니다. . ├── public ├── README.md ├── src ├── node_modules ├── package.json ├── package-lock.json ├── .gitignore └── .env 생성한 .env 파일에 시크릿하게 관리해야 할 정보들을 입력합니다. 이때 주의하셔야 될 점은 변수명에 REACT_APP_을 무조건 붙여줘야 합니다. 이거때문에 몇시간 동안 삽질했.. 2022. 9. 25.