이끌든지 따르든지 비키든지

전체 글 63

[프로그래머스] 하샤드 수 - JAVA

프로그래머스 코딩 테스트 연습 문제 - 하샤드 수 / JAVA 풀이 정리 https://school.programmers.co.kr/learn/courses/30/lessons/12947 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 입력된 값(x)의 자릿수 합(sum)을 구한다. 입력된 값(x) % 자릿수 합(sum) == 0에 대한 결과를 boolean 타입으로 반환한다. 내가 작성한 코드 public boolean solution(int x) { int sum = 0; int origin = x; //자릿수의 합 계산하기 while (x >..

[프로그래머스] 기능 개발 문제 - JAVA

프로그래머스 코딩 테스트 연습 문제 - 기능 개발 / JAVA 풀이 정리 https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 이 문제는 각 기능이 배포될 때마다 몇 개의 기능이 배포되는지를 구하는 문제이다. 각 기능별 작업 진도와 작업 속도를 이용하여 배포일을 계산하고, 배포일에 배포되는 기능 수를 구하면 된다. 기능별별 배포일 계산 작업 진도(progress)와 작업 속도(speed)를 이용하여 각 기능의 배포일을 계산 배포일 = (1..

[Node.js] Node.js 서버에서 AWS S3 이미지 가져오기

AWS S3 Storage에 저장된 이미지를 Node.js를 통해 가져오는 방법에 대해 알아본다. S3 Bucket 설정 우선, 이미지를 담을 S3 Bucket을 생성한다. 버킷 이름을 설정해주고, 퍼블릭 엑세스 차단 설정을 반드시 체크해주어야 Node.js 서버에서 S3 버킷에 접근할 수 있다. 버킷을 생성했다면, 버킷 속성 → 권한 → 버킷 정책 → 버킷 정책 편집 → 정책 생성기로 들어가 버킷 정책을 만들어준다. 입력해야하는 값 Type of Policy - S3 Bucket Policy Principal - * Actions - GetObject ARN - 버킷 정책 편집 페이지에서 볼 수 있음 전부 맞게 입력했다면, Add Statement → Generate Policy 버튼을 차례대로 눌러 ..

Project/Node.js 2023.09.20

[JavaScript] 자바스크립트의 비동기 처리

비동기(Asynchronous) 처리 자바스크립트는 단일 스레드 기반의 언어로, 한 번에 하나의 작업만 처리할 수 있다. 그러나 비동기 처리 방식을 사용해 코드를 순차적으로 실행하되, 실행 결과를 기다리지 않고 다음 코드를 실행한다. 그래서, 우리가 보기에 여러 작업이 동시에 실행되는 것처럼 보인다. 비동기 처리는 코드를 순차적으로 실행하지만, 실행 결과를 기다리지 않고 다음 코드를 실행한다. 이 때문에, 작업이 실행 중일 때 다른 작업을 수행할 수 있으며, 사용자의 요청에 빠르게 응답할 수 있다. 자바스크립트의 비동기 처리를 확인할 수 있는 간단한 예시를 보자면, console.log("Hello"); setTimeout(function() { // 1초 뒤에 실행 console.log("Dev"); ..

[JavaScript] const의 불변성

자바스크립트에서 const는 상수, 즉 불변형 변수를 선언할 때 사용한다. 자바의 final과 같은 역할을 하는 키워드인 셈인데, const로 선언된 객체를 Java에서 final로 선언된 객체와 같이 Read-Only라고 생각할 수 있지만, const로 선언된 객체의 속성은 변경할 수 있다. 그럼 Read-Only가 아니라는 건가? 예시 코드를 통해 알아보자면, const person = { name: 'John', age: 30 }; person.age = 31; console.log(person); // 출력: { name: 'John', age: 31 } 위 코드처럼, person의 속성인 age는 변경이 가능하다. const person = { name: 'John', age: 30 }; per..

[Node.js] Crypto 모듈로 비밀번호 암호화하기

웹 서비스를 운영하면 사용자 정보를 안전하게 저장하고 관리해야 한다.이를 위해 암호화하거나 해싱하는 등의 작업이 필요한데, Node.js 환경에서는 bcrypt, Scrypt, crypto 등의 모듈을 통해 이 작업을 수행할 수 있다. 이 중, crypto 모듈을 사용해 사용자의 정보(비밀번호)를 암호화하는 방법에 대해 알아본다.Crypto 모듈 설치npm install crypto위 명령어를 통해 crypto 모듈을 설치할 수 있다. package.json의 dependencies에도 자동으로 crypto가 추가된다.Typescript 환경에서 작업하는 경우에도 특별히 다른 모듈 설치 없이 사용할 수 있다.Crypto로 비밀번호 암호화하기 비밀번호 암호화는 위 그림의 순서대로 진행되는데, 그림에 설명을..

Project/Node.js 2023.09.14

[Node.js] env로 환경변수 관리하기

웹서버에서 DB로 연결을 구성할 때, config 파일에 호스트, 이름, 암호, 포트번호 등을 반드시 작성해야 한다. 로컬 환경에서 개발·테스트를 진행할 때에는 이 정보를 하드코딩(상수나 변수값을 코드에 직접 쓰는 것)해도 큰 문제가 발생하지 않겠지만, public 등에 배포되는 경우, 암호나 비밀키가 그대로 노출되는 문제가 발생한다. 위와 같은 문제를 예방하기 위해 중요한 정보(암호, 비밀키 등)은 환경 변수를 사용해 관리할 것을 권장하는데, Node.js는 process.env 라는 자체 기능을 통해 환경 변수 관리를 지원한다. 하드코딩 방식으로 config를 작성한 경우 const databaseConfig = { database: 'mydatabase', username: 'myuser', pas..

Project/Node.js 2023.09.13

[JAVA] 객체지향과 자바

객체 지향 프로그래밍(Object Oriented Programming)이란 현실 세계의 객체(Object)를 모델링하고 이러한 객체들 간의 상호 작용을 통해 소프트웨어를 개발하는 방법론을 말한다. 객체 지향 프로그래밍에는 크게 4가지 특징과 5가지 원칙(SOLID 원칙)이 있는데, 이 중 특징과 이에 대한 Java에서의 구현에 대해 알아본다. 캡슐화(Encapsulation) 캡슐화란, 서로 관련 있는 정보나 데이터, 이를 처리하기 위한 기능을 한 곳에 모아 관리하고, 필요한 부분만을 외부로 노출하는 것을 말한다. 캡슐에 담긴 데이터에 대한 직접적인 접근은 허용하지 않고, 대신 이를 확인하거나, 수정할 수 있는 인터페이스를 구현해 이를 통해서만, 데이터에 접근할 수 있도록 하는 정보 은닉이 캡슐화의 핵..

[Node.js] 간단한 로그인 기능 구현하기

로그인 / 회원가입은 웹 · 앱 서비스를 개발할 때 필수적으로 들어가야할 핵심 기능 중에 하나다. Node.js 진영에서는 개발 편의성, 보안, 로그인 상태 관리를 위해 Passport, JWT, Bcrypt, OAuth 등등 많은 미들웨어와 라이브러리를 사용하는데, 오늘은 이러한 기능의 사용 없이 Express.js만으로 로그인 요청을 처리하는 로직을 구현해본다. Controller 코드 작성 export default class AuthController { login = async (req, res) => { const { username, password } = req.body; // 원래는 DB에 보관된 사용자 정보와 비교하는 검증 로직이 들어가야함! const isValid = if (user..

Project/Node.js 2023.09.12

[JAVA] 메소드 오버로딩 & 오버라이딩

JAVA에서는 객체지향 프로그래밍의 특징 중 하나인 다형성(Polymorphism)을 구현하기 위해 메소드 오버라이딩, 메소드 오버로딩 2가지 방식을 사용한다. 두 단어가 비슷하고 부모 클래스로부터 상속 받은 메소드를 사용한다는 점이 같아 헷갈려하는 사람이 많다. 두 방식의 개념을 1줄로 요약하자면.. 메소드 오버로딩 - 새로운 메소드를 정의하는 것 메소드 오버라이딩 - 기존에 있던 메소드 재정의하는 것 메소드 오버로딩(Method Overloading) 모든 접근 제어자(public, private, protected ···)를 사용할 수 있다. 메소드명을 변경할 수 없다. 리턴 타입이 달라도 된다. 매개변수(파라미터)가 달라야 한다. 같은 클래스 내에서만 적용할 수 있다. class Calculato..