본문 바로가기

전체 글

(45)
프론트엔드 빌드 시스템에 대해서 알아보자! (feat. Webpack) 📌 웹팩을 사용하기 전, 알고 있으면 좋은 배경 지식들 웹팩을 사용하기 전, Node.js & NPM이 필요합니다. 해당 도구들에 대한 배경 지식이 있으면 웹팩을 다루는데 도움이 됩니다. 해당 배경 지식이 있는 분들은 웹팩으로 바로 넘어가셔도 좋습니다. ✨ Node.js 브라우저 밖에서도 자바스크립트를 실행할 수 있는 환경을 의미합니다. ✨ NPM(Node Package Manager) 자바스크립트 라이브러리를 설치하고 관리할 수 있는 패키지 매니저입니다. 주요 명령어 npm init : 명령어 실행 시, package.json 파일이 생성됩니다. npm init -y : 명령어 실행 시, package.json 파일이 생성됩니다. npm install ${라이브러리 이름} : 해당 명령어로 라이브러리 ..
👀 스코페(scofe 2021) 후기 최근 코딩 테스트에서 떨어진 이후, 꾸준히 알고리즘을 풀고 있었습니다. 어쩌다가 스코페 2021을 알게 되었고 참가에 의의만 두고, 가볍게 보자는 생각으로 참가하게 되었습니다. 🙋🏻‍♂️ 1차 대회는 3월 20일(토) 2시부터 6시까지 4시간 동안 진행되었습니다. 구름 IDE를 사용했고, 백준과 프로그래머스를 주로 이용하다 보니 크게 다른 것은 없었습니다. 문제는 총 6문제가 나왔고, 1번부터 4번은 20점, 나머지 두 문제는 30점짜리 문제가 있었습니다. 처음엔 모든 문제를 가볍게 보고 유형을 파악한 뒤, 배점이 높은 문제부터 풀게 되었습니다. 5번, 6번 문제는 BFS로 풀게 되었고, 최근 그래프 탐색 문제를 자주 풀어서 30점짜리 두 문제는 생각보다 빠르게 풀렸습니다. (참고로 제출 버튼을 누르면 ..
🤔 BOJ16954 움직이는 미로 탈출 (Java) 📌 문제 색상 의미 구현 주의할 점 결론 욱제는 학교 숙제로 크기가 8×8인 체스판에서 탈출하는 게임을 만들었다. 체스판의 모든 칸은 빈 칸 또는 벽 중 하나이다. 욱제의 캐릭터는 가장 왼쪽 아랫 칸에 있고, 이 캐릭터는 가장 오른쪽 윗 칸으로 이동해야 한다. 이 게임의 특징은 벽이 움직인다는 점이다. 1초마다 모든 벽이 아래에 있는 행으로 한 칸씩 내려가고, 가장 아래에 있어서 아래에 행이 없다면 벽이 사라지게 된다. 욱제의 캐릭터는 1초에 인접한 한 칸 또는 대각선 방향으로 인접한 한 칸으로 이동하거나, 현재 위치에 서 있을 수 있다. 이동할 때는 빈 칸으로만 이동할 수 있다. 1초 동안 욱제의 캐릭터가 먼저 이동하고, 그 다음 벽이 이동한다. 벽이 캐릭터가 있는 칸으로 이동하면 더 이상 캐릭터는 이..
✨ Clean Code 9장: 단위 테스트 📌 TDD 법칙 세 가지 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. TDD는 실제 코드를 짜기 전에 단위 테스트부터 짜라고 요구하고 있다. 이렇게 하다 보면 많은 테스트 케이스가 나오게 된다. 하지만 실제 코드와 맞먹을 정도로 테스트 코드는 방대해지며 이에 대한 관리 문제를 유발하기도 한다. 📌 테스트 코드는 깔끔하게 유지하자. 테스트 케이스의 중요성 개발자들은 코드의 유연성, 유지보수성, 재사용성에 대한 중요성을 알고 있다. 해당 단원에서는 이러한 중요성에 대한 버팀목이 단위 테스트라고 소개한다. 이유는 테스트 케이스가 있으면 변경에 두렵지..
✨ Clean Code 7장: 오류 처리 🗣 서론 오류 처리는 프로그램에 반드시 필요한 요소 중 하나이다. 잘못된 가능성은 늘 존재한다. 우리는 이러한 잘못된 점을 잡을 책임이 있다. 깨끗한 코드와 오류 처리는 확실하게 연관성이 있다. 여기저기 흩어진 오류 처리 코드로 실제 코드가 하는 일을 파악하기 어려울 때가 있기 때문이다. 따라서 우리는 깔끔하게 오류를 처리하는 기법과 고려 사항들을 인지하고 있어야 한다. 📌 오류 코드보다 예외를 사용하라 오류 플래그나 호출자에게 오류 코드를 반환하여 오류를 처리하는 방법은 논리와 오류 처리 코드가 뒤섞여 깔끔하지 못하다. 오류가 발생하면 오류를 던지는 편이 훨씬 좋다. 그러면 호출자 코드가 더 깔끔해진다. 📌 Try-Catch-Finally 문부터 작성하라 try 블록은 트랜잭션과 비슷하다. try에서 ..
✨ Clean Code 6장: 객체와 자료구조 📌 자료 추상화 아래 두 코드는 2차원 점을 표현했다. 두 번째 코드는 인터페이스로 자료 구조를 명백하게 표현한다. 첫 번째 코드는 변수를 private로 선언하더라도 값마다 get/set 함수를 제공한다면 구현을 외부로 노출시키는 것은 마찬가지다. 따라서 추상 인터페이스를 제공하여 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미를 가지는 클래스를 나타낼 수 있다. 즉 개발자는 객체의 자료를 표현할 가장 좋은 방법을 신중하게 고민해야 한다. 생각 없이 get/set 함수를 추가하면 안 된다. public class Point { public double x; public double y; } public interface Point { double getX(); double getY..
✨ Clean Code 5장: 형식 맞추기 📌 형식을 맞추는 목적 코드 형식은 의사소통의 일환으로 중요한 부분 중에 하나이다. 오늘 작성한 코드는 변경될 가능성이 높다. 따라서 오늘 작성한 코드의 가독성은 앞으로 많은 영향을 미칠 수 있다. 즉 유지보수와 확장성에 영향을 미칠 수 있어 코드 형식에 대해 깊게 고민할 필요가 있다. 코드 형식을 생각하지 않고 마구잡이로 개발하다 보면 내가 지금 제대로 하고 있는지 의심만 가득 생길 수 있다. 📌 적절한 행 길이 유지하기 소스 코드 길이가 길수록 이해하기 힘들다. 아무래도 짧은 코드가 이해하기 쉽다. 대다수 신문 기사는 짧은 것을 볼 수 있다. 날짜, 이름, 사실 등 뒤죽박죽 섞은 기사를 읽는다면 금방 읽다가 포기할 것이다. 코드는 신문 기사와 같다. 간단하고 짧게 이루어져야 한다. 대부분의 코드는 왼..
☀️ 100일 동안 일찍 일어나기 ✍️ 서론 유튜브에서 김유진 변호사님을 처음 알게 되었고 구독을 하고 있었는데, 우연히 이 분이 쓰신 '나의 하루는 4시 30분에 시작된다'라는 책을 선물 받아 읽게 되었다. 최근 코로나로 인해 학교도 온라인으로 진행되어서 아침 약속이 없으면 4시가 넘어 잠자리에 들고, 점심시간이 되면 일어나곤 했다. 계획을 세우고 실행하고 있는데 이상하게 수면시간이 일정하지 않아 하루를 잘못 보내고 있다는 생각이 든다. 그래서 일찍 일어나는 습관을 가지고자, 100일 동안 진행하는 것을 목표로 한다. ☀️ 후기 4시 30분에 일어나기에는 너무나 일찍 잠들어야 해서 약속이 있으면 오히려 스트레스였다. 그래서 5시 30분으로 타협하게 되었는데, 초반 의지와 달리 꾸준히 지켜나가는 건 역시 힘들다. 알람을 끄고 잠을 더 자..