전체 글

전체 글

    [디자인패턴] 빌더 패턴

    1주차 과제로 JSP와 바닐라 자바만으로 게시판을 구현했다. 그 과정에서 아래와 같이 VO, DAO를 하드코딩으로 작성했고 Setter조차 사용하지 않고 무식하게 Post 객체를 생성하는 것에 지적을 받았다. // PostVO.java ​ @Getter @Setter @AllArgsConstructor public class Post { @NonNull private Integer post_id; @NonNull private String title; @NonNull private String writer; @NonNull private String password; @NonNull private String content; @NonNull private Integer category_id; privat..

    자바 클래스패스(classpath)란?

    자바 클래스패스(classpath)란? 자바 언어로 작성된 클래스 파일은 자바가상머신(JVM)에서 실행된다. JVM이 모든 폴더를 찾아보는 것은 비효율적이기에, 클래스파일을 찾을 수 있게 위치의 리스트들을 제공한다. JVM이 프로그램을 실행하기 위해 클래스파일을 찾는데 기준이 되는 경로가 클래스패스다. java 확장자로 끝나는 자바 소스코드를 컴파일한다. 컴파일된 소스코드는 바이너리 형태의 .class 파일로 변환된다. java runtime(jre)으로 .class 파일에 포함된 명령을 실행하려면, 먼저 이 파일을 찾을 수 있어야한다. 이 때 클래스패스가 사용된다. 클래스패스를 지정하려면, 환경변수 CLASSPATH를 사용하거나 java runtime(jre)에 -classpath 플래그를 사용한다. ..

    파이썬 알고리즘 인터뷰 23장 다이나믹 프로그래밍(DP)

    오늘 TIL 3줄 요약 최적 부분 구조 - 문제의 최적 해결방법이 부분 문제에 대한 최적 해결 방법으로 구성되는 경우의 문제 DP 알고리즘을 이용하면 최적 부분 구조를 갖고있는 문제를 풀이할 수 있다. 최적 부분 구조를 푸는 또 다른 알고리즘으로는 그리디 알고리즘이 있다. 그리디는 그 순간에 최적이라 생각하는 것을 선택하며 풀이 DP는 중복된 하위 문제들의 결과를 저장해뒀다가 풀이해 나간다. 중복되지 않은 문제들은 DP로 풀지 않고 병합정렬, 퀵 정렬 등을 이용해 분할정복으로 풀어나간다. 다익스트라 알고리즘은 최적 부분 구조, 중복된 하위 문제들, 탐욕 선택 속성을 모두 갖는 알고리즘이다. TIL (Today I Learned) 날짜 2020 11. 12. FRI 오늘 읽은 범위 파이썬 알고리즘 인터뷰 ..

    파이썬 알고리즘 인터뷰 9, 10, 11장 - 스택, 큐, 데크, 우선순위 큐, 해시 테이블

    오늘 TIL 3줄 요약 스택은 거의 모든 APP을 만들때 사용되는 자료구조로서, 스택과 연관된 알고리즘을 제대로 이해하느냐 못 하느냐에 따라서 기본 알고리즘을 설계할 수 있느냐 없느냐가 결정되기도 한다. FIFO로 처리되는 큐는 BFS, 캐시 등을 구현할 때 널리 사용된다. 데크나 우선순위 큐 같은 변형들도 유용하다. 성능을 위해 파이썬에서는 데크를 사용하는 것이 가장 좋다. 파이썬에서는 대부분의 우선순위 큐 풀이에 heaqpq 모듈을 사용한다. TIL (Today I Learned) 날짜 d2022 10. 24. ~ 2022. 11.07 오늘 읽은 범위 파이썬 알고리즘 인터뷰 9장 스택, 큐, 10장 데크, 우선순위 큐, 11장 해시 테이블 책에서 기억하고 싶은 내용을 써보세요. 파이썬의 Global ..

    파이썬알고리즘인터뷰 8장 연결리스트

    오늘 TIL 3줄 요약 재귀, 연결리스트 활용 500배 TIL (Today I Learned) 날짜 2022.10.10~2022.10.14 오늘 읽은 범위 파이썬 알고리즘 인터뷰 8장 연결리스트 책에서 기억하고 싶은 내용을 써보세요. 런너 기법- 2칸씩 이동하는 포인터 fast와 느린 런너(1칸씩 이동) slow를 둔다. 빠른 런너가 먼저 리스트 끝에 도달하면, 느린 런너는 리스트의 중간 지점을 가리킨다. 이런 방식으로 중간 위치를 찾아내면, 값을 비교하거나 뒤집기를 시도하는 등 활용도가 많다. 아래 파이썬의 변수다중할당 부분 def isPalindrome(head): # 중략 rev, rev.next, slow = slow, rev, slow.next # 위 다중할당은 아래와 같이 바꿔주면 가독성이 좋..

    헤로쿠 503에러 해결 (code=H10 desc=App crashed)

    노마드코더에서 youtube 클론코딩 강좌를 듣고 완성 후 heroku를 이용해 배포했었다. 그런데 얼마전 몽고db 아틀라스에서 장기 미활동으로 인해 클러스터를 정지시킨다는 예고 메일이 왔었다. 이후 클러스터는 자동으로 정지되었고 뒤늦게 배포 사이트를 들어가보니 이미 db가 꺼져버려 정상 접속이 되지 않았다. 위 안내 메세지대로 로그를 확인해보니 위처럼 503 에러를 뱉고있었다. 루트페이지와 파비콘 등 초기 페이지 전체가 정상적으로 처리되지 않는다. 뒤늦게 mongoDB에 접속해 다시 클러스터를 켜주고 헤로쿠 환경 변수 DB_URL을 새롭게 업데이트 해줬다. (몽고디비 클러스터 0를 inactive -> active 해주는 과정에서 db 안 date들이 초기화되었기에 해주었다. 실제 url이 변경되는지 ..

    타입스크립트 angle brackets, 꺾쇠 괄호 <>

    타입스크립트의 angle brackets, 꺾쇠 괄호 노마드코더 타입스크립트 10일차 과제는 abstract classes, generics 그리고 overloading 을 이용해 fake API를 만드는 과제다. 과제를 진행하는도중 타입스크립트의 다양한 타입 형태가 나를 헷갈리게 한다. abstract class AbLocationStroage { [key: string]: T } /// LocalStorage를 흉내낸 class class LocalStorageAPI { private stroage: AbLocationStroage = {} } setItem(key: string, value: T) { if (this.stroage[key]) { console.log(`${key} already ex..

    Framer-motion 리액트 애니메이션 라이브러리

    Framer-motjon 리액트를 위한 오픈소스 프로덕션레디 모션 라이브러리 프로덕션 레디란? 사용자의 요구-사용성, 의존성, 가용성-을 충족 시키는 소프트웨어. 실제 운영 환경에서 구동이 가능한 코드. 설치 npm install framer-motion import { motion } from "framer-motion" export const MyComponent = ({ isVisible }) => ( ) Animations Motion 컴포넌트를 animate 속성을 통해 제어하며, 간단한 애니메이션은 animate props에서 직접 값을 설정할 수 있습니다. Gestures 제스쳐는 리액트 이벤트 시스템을 확장하여 사용하며 호버, 탭, 드래그를 지원합니다. Variants Variants를 통..

    [타입스크립트] CRA를 활용하지 않은 TS프로젝트 생성

    CRA를 사용하지 않고 타입스크립트 프로젝트를 생성하기 콘솔창에 npm init -y 를 입력, package.json 파일 생성 npm i -D typescript 입력, devDependency에 타입스크립트 추가 타입스크립트 설정 파일 tsconfig.json 생성 이 파일을 통해 vscode는 TS로 작업하는 것을 감지하고 자동완성을 제공한다. { /* Directories for compiled JS */ "include":[ "src" ], "compilerOptions":{ "outDir" : "build", /* Product will be located at */ "target":"ES6", /* Product will be compiled in ES6 */ "lib": ["ES6", "..

    [북TIL] 파이썬 알고리즘 인터뷰 7장 배열

    오늘 TIL 3줄 요약 브루트포스, 투포인터는 생각보다 다양한 풀이에서 써먹을 수 있다. 그러나 두 방법보다 효율이 좋은 풀이도 존재한다. 파이썬은 쓰기 쉬운 언어다. 그러나 Go나 C(++)에 비해 성능이 부족한걸 기억하고 푼다. TIL (Today I Learned) 날짜 2020 08.05. FRI. ~ 08.11. THU 오늘 읽은 범위 파이썬 알고리즘 인터뷰 7장 배열 책에서 기억하고 싶은 내용을 써보세요. 추상자료형(ADT)의 실제 구현 대부분은 배열 또는 연결 리스트를 기반으로 한다. 파이썬과 같은 동적 프로그래밍 언어는 정적 배열 자체를 제공하지 않는다. 동적 배열은 미리 초깃값을 작게 잡아 배열을 생성하고, 데이터가 추가되면서 꽉 채워지면 늘려주고 복사하는 식이다. 비교, 탐색을 쓰지 않..