본문 바로가기

Programming181

2022년 회고 기어고 2022년이 끝나고 2023년이 시작되었다. 이번 년도에 새롭게 깨달은 것은 아무리 힘든 시기라도 결국 지나간다는 것이다. 프로그래밍을 시작하고, 블로그와 유튜브를 시작하고 실력이 늘어나기 시작하면서 지식과 기술을 공유하면서 내가 배우는 것은 또 다르다는 점을 느끼게 된다. 2022년을 마무리 하면서 2021년 부터 시작한 코딩 공부가 정보처리기사, 블록체인, 웹, 앱으로 이어질 줄은 생각하지 못했다. 한 연구결과에 따르면 형제 중 첫째가 성적이 가장 좋다는 통계학적인 결과가 나왔다. 해야할 것도 많고 챙겨야 할 것도 많은 첫째가 성적이 가장 좋다는 결과에 대해서 학자들은 이렇게 코멘트를 달았다. 첫째는 누군가를 teaching 하면서 스스로 더 많이 배운 것이다. 이 결과물은 나한테도 큰 생각을.. 2023. 1. 2.
CI/CD #4 배포 구성하기 AWS EC2 [최종] 이전글 2022.12.29 - [Programming] - CI/CD #1 배포 구성하기 Node.js 빌드 2022.12.29 - [Programming] - CI/CD #2 배포 구성하기 Dockerfile 2022.12.29 - [Programming] - CI/CD #3 배포 구성하기 Github Actions 이번 콘텐츠에서는 CI/CD를 위한 AWS EC2 구성을 알아보겠습니다. 지금 까지 Node.js 서버 프로그램을 작성하고 Dockerfile을 제작하여 이미지를 만들었습니다. 또한 Github Actions workflow를 설정해서 CI/CD 기본을 구성했습니다. Github Actions에서 구성한 workflow가 실제로 동작하는 환경은 서버 환경입니다. 이 부분을 AWS EC2로 .. 2022. 12. 29.
CI/CD #3 배포 구성하기 Github Actions 이전글 CI/CD #1 배포 구성하기 Node.js 빌드 CI/CD #2 배포 구성하기 Dockerfile CI/CD 구성 Github Actions Github Actions은 개발자들의 놀이터라고 불리는 Git에서 제공하는 pipeline 서비스입니다. 개발이 완료된 소스코드를 빌드 -> 테스트 -> 배포까지 한번에 관리할 수 있어 효율적인 배포 환경을 구성할 수 있습니다. 💡여기서 빌드/테스트를 CI라고 하고, 배포를 CD라고 합니다. Github token 생성 CI/CD를 구성하기 위해서는 토큰이 필요합니다. 이전 콘텐츠에서 소스코드를 업로드한 github repository로 이동합니다. 전체 메뉴에서 settings로 이동합니다. 왼쪽 하단에서 Settings->Developer settin.. 2022. 12. 29.
CI/CD #2 배포 구성하기 Dockerfile 이전글 CI/CD #1 배포 구성하기 Node.js 빌드 CI/CD 구성 Dockerfile 작성 이전 글에서는 기본적인 서버 프로그램 작성을 알아보았습니다. 이번 콘텐츠에서는 작성된 서버를 Dockerfile로 이미지화 하는 방법을 알아보겠습니다. 💡 Dockerfile이란? 도커를 통해 작성된 프로그램을 이미지화 하여 실행환경을 통일시켜주는 작업을 도와줍니다. Dockerfile을 통해 개발환경과 실행환경을 일치할 수 있도록 프로그램을 이미지라는 단위로 감싸서 배포 환경에 올릴 수 있습니다. 배포 환경에서는 이미지를 다운로드 받아서 컨테이너를 실행할 수 있습니다. 만약 우분투 OS 환경에서 개발한 경우 Window에서 해당 프로그램을 실행하는 경우 환경변수가 안맞아 실행이 안되는 경우가 있었지만 도커.. 2022. 12. 29.
CI/CD #1 배포 구성하기 Node.js 빌드 CI/CD 서비스를 개발한 후 사용자에게 전달하기 위해서는 배포를 진행해야 합니다. 물리적인 서버를 구성해서 서비스를 배포하는 것 보다 AWS에서 제공하는 IaaS를 이용해 on demand 형식으로 서버를 구성하면 합리적인 가격으로 서비스를 운영할 수 있습니다. 한 걸음 더 나아가 CI/CD는 Continuous Integration / Continuous Deploy의 약자로 github과 같은 형상관리자에서 수정사항을 push 하면 이것을 트리거로 잡아서 원격 서버에 자동으로 배포까지 진행해주는 서비스입니다. 간단하게 수정사항만 신경쓰면 되고, 이후 작업은 알아서 해주니 편리하지 않을 수 없습니다. CI의 경우 빌드와 테스트처리를 자동으로 할 수 있습니다. 배포하기 전 정상적으로 테스트를 통과하는지.. 2022. 12. 29.
React build blank 페이지 뜰 때 해결법 React 앱을 빌드 후 정적 웹사이트 배포를 할 때 AWS S3를 사용하게 됩니다. 먼저 로컬에서 잘 돌아가는지 확인하기 위해 build 후 로컬 웹 브라우저에서 리액트를 돌리면 생각지 못한 문제에 봉착하게 됩니다. 바로 화면이 안나오는 것이죠. 정적 웹 사이트 배포 리액트 프레임워크로 제작된 웹 사이트를 배포하기 위해서는 localhost:3000 으로 배포하지 않습니다. 웹팩을 장착한 create-react-app을 사용해 js, css, image들을 번들링한 컴팩트 버전으로 빌드 후 배포하게 됩니다. AWS S3를 사용해도 되고, Nginx와 같은 웹서버 프로그램을 통해 정적 웹 페이지를 바로 리턴해줘도 됩니다. 우선 create-react-app으로 새로운 애플리케이션을 시작합니다. packa.. 2022. 12. 27.
ios 앱 개발 공부 순서 ios 앱 개발 공부 순서 전문적인 개발자 뿐만 아니라도 아이폰 앱을 개발할 수 있습니다. 목적은 다양한데요, 아래에 하나라도 속한다면 아이폰 앱 개발에 도전해보시길 추천드립니다. 🎓 비개발 직군 직장인이지만 앱 테크를 해보고 싶다 🎓 앱 프로그래머로 디지털 노마드로 살아보고 싶다 🎓 스타트업을 운영하는데, 앱 개발 견적이 너무 비싸다 🎓 새로운 도전을 해보고 싶다 일단 애플에서 출시 후 관리하는 Swift 언어를 통해 아이폰 애플리케이션을 개발할 수 있습니다. 개발을 위해서는 아래 조건들이 필요합니다. 👩‍💻 아이폰, 아이패드, 맥, 워치 애플리케이션을 개발하기 위해서는 맥이 필요합니다. 🔨개발환경으로는 XCode를 사용합니다. 🕊 개발 언어로는 Swfit를 사용합니다. 아이폰 앱을 개발하기 위해서 맥.. 2022. 12. 23.
[DEX PJ] #2 성공적인 프로젝트의 조건 DEX Project 진행 시 아쉬운 점 약 2주간 블록체인 DEX 프로젝트를 진행했다. 나를 포함한 총 3명의 참여자가 투입된 프로젝트였고, 기간은 2주로 짧은 시간 동안 컨트랙트를 작성하고, 프론트와 백엔드를 붙여서 만들어보는 간단한 프로젝트였다. 문제의 시작(소통 부재) 부트캠프를 참여하면서 이미 3번의 프로젝트를 진행하면서 느낀 부분은 소통이 힘들다는 점이었다. 서비스를 하나 만들기 위해서는 피그마를 통해 만들고자 하는 프로젝트를 시각화하면서 구체적인 기능들에 대한 명세를 세세한 부분들을 사전 정의를 내려야 한다는 점이었다. 프로젝트 기획이 꼼꼼하면 꼼꼼할수록 더 완성도 있는 프로젝트가 만들어진다는 점은 어찌 보면 당연한 일이다. 하지만 개발을 처음 시작하는 우리들 입장에서는 당장 키보드를 두드리.. 2022. 11. 1.
개발자 리부트 책 후기 소프트웨어 개발자는 모든 조직에 필수적인 존재로 자리잡고 있습니다. 디지털 대전환이라는 키워드가 화두가 되면서 아날로그에서 디지털로 비즈니스 환경의 판도가 변하고 있습니다. 컴퓨터가 등장하고 난 후 폰 노이만 아키텍처를 사용자가 쉽게 동작할 수 있도록 등장한 Operating System부터 AI, 머신 러닝 까지 기술은 계속 변해왔고, 그 중에서 구글, 페이스북, 카카오와 같은 대기업이 등장합니다. 개발자로 살아간다는건 어떤 의미일까요? [개발자 리부트]의 저자 조성룡은 책에서 자신의 생각을 명쾌하고 직설적으로 설명하고 있습니다. 제조업을 뿌리 산업으로 성장한 대한민국에서 소프트웨어의 발전은 아직까지도 요원한 일이 되어 버린 현실을 지적하고 있습니다. 개발은 취미로 놀랍게도 많은 개발자들이 소프트웨어 .. 2022. 10. 19.
매개변수(parameter) VS 인수(Argument) 차이점 함수를 선언하고 사용할 때 가장 많이 혼동되어 사용되는 단어가 매개변수와 인수 혹은 인자입니다. 두 개념은 함수에 변수로 전달하는 데이터라는 점에서 동일하지만 분명 차이점이 존재합니다. 매개변수(parameter) 매개변수는 함수 선언문에서 사용됩니다. 함수 이름 뒤 괄호를 치고 어떤 변수가 들어올지 선언하는 변수입니다. 인수 | 인자(arguments) 인자 혹은 인수는 함수를 호출할 때 함수에 전달하는 값입니다. 아래 코드를 보면 helloworld라는 함수를 선언합니다. 함수는 string 타입의 매개변수를 선언하고 있습니다. 반면 helloworld 함수가 호출되는 부분을 보면 '안녕하세요'라는 string 데이터를 인자로 함수에 값으로 전달하고 있습니다. // parameter 선언 functi.. 2022. 10. 15.
Nest.js TypeORM 2.0에서 3.0으로 Nest.js에서는 built-in ORM으로 TypeORM을 사용합니다. 하지만 typeorm 2.0에서 3.0으로 업그레이드 되면서 대규모 코드 변경이 진행되었습니다. 대표적으로 Repository의 주입성을 관리해주는 @EntityRepository()가 deprecated됩니다. 이 문제를 해결하기 위해 동적 모듈을 생성하고, 자체적으로 데코레이터를 생성하면서 땜빵식으로 해결하는 방법이 Stack Overflow에 떠돌아 다니는데, 적합한 방법은 아닌 것으로 보입니다. 비단 이 문제 뿐만 아니라 import module이 지원이 안된다던지, [Error] TypeOrmModule Unable to connect to the database. Retrying... entity 연결이 아예 안되는 문.. 2022. 10. 14.
GET POST 차이점 💡 HTTP GET 메소드, POST 메소드 🔦 HTTP 메소드 중 GET과 POST는 다른 방식으로 작동합니다. 하나의 컨트롤러에 GET과 POST를 같이 묶어버리면 보안을 제대로 신경쓰지 않은 결과물이 탄생하게 됩니다. HTTP 메소드에서도 두개의 메소드를 구분해놓은 만큼 상황에 맞는 메소드를 사용해야 합니다. GET 특징 ⭐️ HTTP GET 메소드는 서버로로 부터 리소스를 응답받을 때 사용합니다. 메인 페이지를 응답받거나, 게시판의 글을 조회할 때 사용됩니다. ① GET은 cache를 사용할 수 있다 Client가 서버에게 GET 요청을 보내면 웹 캐시가 요청을 가로챌 수 있습니다. 서버로부터 리소스를 새롭게 다운로드하는게 아니라 cache에 저장된 리소스를 바로 응답받을 수 있습니다. HTTP He.. 2022. 10. 14.
Typescript 인터페이스 타입 차이점? 인터페이스(Interface) vs Type 차이점 타입스크립트 에서 인터페이스는 변수의 타입 강제와 하위 클래스에서 메소드 구현을 강제하는 2가지 용도로 사용됩니다. 타입 강제 부분에서 유사한 기능을 하는 Type이 있지만 인터페이스와 타입은 차이점이 존재합니다. ① 우선 인터페이스는 동일한 이름을 가지고 확장이 가능합니다. 코드를 보시면 Obj라는 동일한 이름의 인터페이스를 선언했지만 기능이 확장됩니다. interface Obj { name:string age:number } interface Obj{ address:string } const o:Obj = { name:'about-tech', age:100, address:'Korea' } console.log(o); ② 인터페이스는 객체에만 적용이.. 2022. 10. 13.
객체 지향 프로그래밍이란(OPP) 객체 지향 프로그래밍은 객체를 최소단위로 하여 객체간 통신을 통해 프로그램을 구현하는 방법론을 의미합니다. 소프트웨어를 개발하는데 사이즈가 커지고, 비용이 증가하면서 소프트웨어를 구성하는 최소 단위를 객체로 정의하면서 빠르고 쉽게 프로그래밍이 가능해집니다. 객체 지향 프로그래밍 현실속 속성과 메소드가 결합된 형태로 객체를 구현합니다. 속성에 대한 기능을 담당하는 부분을 메소드로 표현하고, 데이터를 저장하는 변수를 멤버 또는 속성이라고 표현합니다. 속성 VS 메소드? 객체는 클래스 형태로 조직화되고, 인스턴스로 만들어 멤버와 메소드를 사용할 수 있게 됩니다. 장점 객체 지향 프로그래밍을 통해 프로그래밍 복잡도를 줄일 수 있습니다. 또한 객체를 재사용하면서 소프트웨어의 확장성과 유지보수를 용이하게 할 수 있.. 2022. 10. 13.
브라우저 주소창에 URL을 입력하면 어떻게 될까? What happens when you type a URL in browser? 신입 개발자 면접 질문으로 단골로 등장하는 개념입니다. chrome, safai, firefox등의 웹 브라우저에 우리는 URL을 치고 페이지를 이동합니다. 이 때 우리가 보지 못하는 영역에서 수많은 일이 벌어집니다. 그것도 아주 빠르게 말이죠. 🚀Step#1 Browser(IP) 🚀 ① 브라우저는 로컬 컴퓨터에 설치된 프로그램입니다. 처음 브라우저를 실행하면 컴퓨터의 OS가 브라우저 process에 CPU를 할당하고 화면을 띄우게 됩니다. ② 브라우저에 www.example.com을 입력한 후 엔터를 치면 브라우저는 URL을 IP address로 번역하게 됩니다. www.example.com 서버에서는 URL로 통신하지 않.. 2022. 10. 12.