분류 전체보기(97)
-
express.js의 Middleware
데브코스 강의 중 app.use() 함수를 사용하여 express.json()(json parser)를 등록하는 것을 보고 그 원리가 궁금하여 더 공부해보았다. 1. Middleware란? Middleware는 express.js의 핵심 개념 중 하나인데 간단히 설명하면 클라이언트의 request와 response 사이에 존재하여 미들웨어 자신이 담당한 기능을 마친 후 다음 미들웨어 기능으로 제어권을 넘기거나 응답을 보내는 함수들이다. app의 get, post 등 route handler function 들도 미들웨어의 한 예들이다. app.get('/', (req, res) => { res.json({ id: 1, 이름: 'Ashraful' }); }; 또, 클라이언트의 요청 payload에서 jso..
2023.12.15 -
Destructuring assignment
Javascript에 Destructuring assignment, 한국어로 역구조화라는 신기한 문법이 있다는 것을 알았다. (Perl, Python에도 있다고 한다) ES6에 추가된 이 문법은 구조화된 배열 또는 객체를 Destructuring하여 개별변수에 할당하는 것이다. 필요한 값만 추출해서 사용할 때 유용하다. 1. ES6 이전에는... 아래의 코드는 각각 ES5, ES6를 기준으로 배열의 값을 각 변수에 할당하는 코드이다. ES6 이후 매우 간결해진 것을 알 수 있다. // ES5 var arr = [1, 2, 3]; var one = arr[0]; var two = arr[1]; var three = arr[2]; console.log(one, two, three); // 1 2 3 // E..
2023.12.10 -
IntelliJ @RequiredArgsConstructor 에러 해결
오류 아래 사진과 같이 build.gralde 파일에 lombok 의존성을 추가했다. 하지만 IntelliJ에서는 lombok 어노테이션을 인식하지 못하고, final 키워드의 멤버변수가 초기화 되지 않았다고 인식하여 문법 오류(빨간 줄)를 표시한다. 그런데 프로젝트를 빌드해보면 또 빌드가 잘된다. Foo.class 파일을 보면 final 멤버변수 Bar를 초기화하는 생성자가 잘 생성되어있다. 실제로는 lombok의 @RequiredArgsConstructor 이 잘동작한 것이다. 원인 lombok은 자바의 Annotation Processor를 사용하여 동작한다. lombok의 어노테이션(@Getter, @Setter, @RequiredArgsConstructor 등)은 컴파일 시점에 분석 되고, 각 ..
2023.12.07 -
[프로그래머스/Java] 배달 Lv.2
문제 배달 풀이 다익스트라 알고리즘을 활용하여 1번 마을에서 다른 마을까지의 거리를 모두 구한 뒤 K와 대소비교한다. 풀이 import java.util.*; class Solution { public int solution(int N, int[][] road, int K) { int[] dist = new int[N + 1]; for (int i = 2; i < N + 1; i++) { dist[i] = Integer.MAX_VALUE; } int[][] graph = new int[N + 1][N + 1]; for (int[] r : road) { graph[r[0]][r[1]] = graph[r[0]][r[1]] == 0 ? r[2] : Math.min(graph[r[0]][r[1]], r[2]);..
2023.12.05 -
개발자 블로그, 포트폴리오, 자소서 작성TIP
데브코스 라이브 강의 중 김송아 강사님이 알려주신 개발자 블로그, 포트폴리오, 자소서 작성법을 정리해보았다. 블로그 블로그를 작성하는 사람은 드물기 때문에 취업에서 유리할 수 있다고 하셨다. 블로그는 주 2회정도 꾸준히 작성하는 것이 좋다. 1. 보여줘야하는 것 블로그를 작성함으로써 회사에 어필해야하는 부분들은 꾸준함, 협업, 자기개발이라고 한다! 개발자로서 자기자신을 꾸준히 개선하는 사람이구나 자신의 것을 남에게 공유할 수 있는 사람이구나 오류(이슈)가 있었다면 정리해두는 사람이구나 2. 글 주제로 하면 좋을 것들 오류캡처, 해결방안 -> 이 주제가 BEST, 개발과정에서 오류 경험과 해결방안을 공유한다 공부한 내용 정리 -> 공부한 내용을 단순히 나열하지 말고, 내 머리속의 말로 재정의하면 좋다. -..
2023.12.04 -
[프로그래머스/Java] 행렬 테두리 회전하기 Lv.2
문제 행렬 테두리 회전하기 풀이 단순 구현을 해도 풀리는 문제였다. 주어지는 행, 열 크기에 맞춰 board를 만들어주고 queries의 (x1, y1, x2, y2) 좌표에 맞게 시계방향으로 값을 swap해준다. 이때 각 query별 값의 최솟값을 찾는다. 코드 import java.util.*; class Solution { int[][] board; public int[] solution(int rows, int columns, int[][] queries) { setBoard(rows, columns); int index = 0; int[] answer = new int[queries.length]; for (int[] query : queries) { int x1 = query[0] - 1; i..
2023.12.02