전체 글 123

[cote] 예상 대진표

https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습..

Web Dev 2023.04.08

Node.js 기본 2

본 영상 생활코딩: WEB2 - Node.js 재생목록 / 36 ~ n 동기 vs 비동기 자바스크립트에는 Sync가 되는 함수와 안되는 함수 2가지가 존재한다. 동기 방식 비동기 방식 //readFileSync console.log('A'); var result = fs.readFileSync('egoing/syntax/sample.txt', 'utf8'); console.log(result); console.log('C'); //readFile console.log('A'); fs.readFile('egoing/syntax/sample.txt', 'utf8', function(err, result){ console.log(result); }); console.log('C'); 결과 A B C A C B..

Web Dev/Node.js 2023.04.05

Node.js 기본

웹 역사 with node.js 1990년 웹이 등장하면서 수 많은 문서의 정보들이 HTML의 웹 페이지로 만들어짐. 1995년 최초 상업용 웹브라우저인 Netscape를 만든 넷스케이프 커뮤니케이션 사는 브랜든 아이크에게 Javascript 제작을 의뢰함. Javascript으로 인해 HTML 문서가 사용자와 상호작용 하는 웹 어플리케이션으로 변모할 수 있게 됨. 단, 웹브라우저에 인터프리터가 있었기에 웹브라우저에서만 사용될 수 있는 독점적인 프로그래밍 언어이자 웹브라우저에 같혀있는 신세로 지내게 됨. 2008년 구글이 chrome에서 사용되는 javascript의 성능 개선을 위해 오픈소스 V8 엔진을 개발하게 됨. node.js의 창시자 Ryan Dahl이 V8엔진을 기반으로 하는 node.js를 ..

Web Dev/Node.js 2023.04.04

[cote] 피보나치 수

[프로그래머스] level 2 - 피보나치 수 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 문제 설명 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = 2 + 3 = 5 와 같이 이어집니다. 2 이상의 n이 입력되었을 때, n번째 피보나치 ..

Web Dev 2023.04.04

[JPA] 변경감지(더티체킹) vs 병합(merge)

JPA에서 값을 수정하는 방식 JPA를 이용하여 객체를 영속화하고 사용할 때 결국 CRUD에서 수정하는 일을 만나게 된다. JPA는 수정하는 방법에 있어서 변경 감지(더티 체킹)혹은 병합 방식을 사용하게 된다. 오늘은 이 두 방식의 차이에 대해 정리하려한다. Dirty Check? JPA의 장점이자 특징으로 더티체킹이라는 것이 있다. 직역을 하면 이상한 뜻이 되곤 하는데 풀어 설명을 해보자면 다음과 같다. Dirty의 의미는 상태의 변화가 생긴 정도를 의미한다고 하며 Dirty Checking을 설명하자면 상태 변경 검사로 생각하면 된다. 병합 merge는 준영속 상태의 엔티티를 영속화해주는 것이라고 이해하면 된다. 즉, 더티체킹은 영속화된 엔티티에 대해서 변경 감지를 하여 변경에 대한 부분을 적용시켜 ..

카테고리 없음 2023.03.27

[WEB] Thymeleaf 정리 노트

Thymeleaf 정리 기존에는 뷰 템플릿으로 JSP를 주로 사용해보았기에 Thymeleaf를 거의 처음 사용하기에 새롭게 겪은 기능들에 대해서 간단하게 정리해보려고 한다. Layout thymeleaf에서 layout을 관리하는 방법은 크게 include 방식과 계층형 방식이 있다. 다음은 include 방식의 예시이다. jsp `include 액션 태그`처럼 thymleaf에서는 `th:replace`를 통해서 HTML fragment를 관리할 수 있다. --- [2] --- [3] include 방식은 사실 무식한 방법이다. layout을 짜기위해 계속 코드를 작성해주어야 하기 때문이다. 실제 실무라면 계층형 방식이 좋겠지만 간단한 프로젝트에서 계층형 방식을 쓰려면 결국 세팅 과정이 들어가야 하므로..

Web Dev/View 2023.03.24

[JPA] 정적 쿼리와 동적 쿼리

JPA를 사용하여 쿼리를 작성하다보면 동적 쿼리의 필요성에 대해 느낄 때가 있다. 다음 예시를 통해 정적쿼리에서 동적쿼리가 필요할 때 어떤 방식들이 있었는지 정리해보았다. 정적 쿼리를 사용하는 상황 예를들어 이름과 상태 값에 따른 결과 검색을 해야하는 상황이 있다고 생각해보자. JPA를 사용하게 되면 JPQL 쿼리를 입력하고 이름과 상태 파라미터에 맞는 값들을 바인딩해주어 결과를 받는 코드를 작성할 수 있다. em.createQuery("select o from Order o join o.member m" + " where o.status = :status" + " and m.name like :name", Order.class) .setParameter("status", orderSearch.getO..

Web Dev/Spring 2023.03.23

[IDE] Intelli J 단축키

하도 까먹어서 망각할 나를 위해 작성. mac 기호 - ⌘,⌥,⌃, ⇧ 인텔리제이 for mac 만능 검색 ⇧(shift), ⇧(shift) 연타 창 닫기 ⌘(Command) + W 커서 이동(줄 단위) ⌘(Command) + 방향키 커서 이동(단어, space 단위) ⌥(Option) + 방향키 줄 이동 ⌘(Command) + ⇧(shift) + 방향키(위,아래) 줄 삭제 ⇧(shift) + (delete) 줄 복사 ⌘(Command) + D 최근 파일 열기(찾기) - Recent Files ⌘(Command) + E 지역 변수 추출 - Extract (Introduce) local Value ⌥(Option) + ⌘(Comand) + V 메소드 추출 - Extract Method ⌥(Option) +..

Web Dev 2023.03.23

[IDE] Intelli J - 상속 및 UML 확인하기

상속 구조를 타고 들어가면서 읽어보다가 한눈에 어떻게 구조가 이루어지는지 궁금하였고 공부할 때 도움이 될까 싶어 정리해보려고 한다. 만약 어떤 클래스에 대해 가지고 있는 기능과 어떤 클래스를 상속을 받고있는지 궁금하다면 다음과 같이 찾아보자. 단, 하위의 기능 중 일부는 Community Edition에는 없을 수 있다. 내부 메서드 / 프로퍼티 확인하기 내부의 메서드가 프로퍼티가 궁금하다면 Intelli J 좌측 하단 Structure 탭을 확인해보자. 상속 구조 확인하기 클래스 위 아래로 가지고 있는 계층이 궁금하다면 우측 상단의 계층(Hierarchy) 탭을 확인해보자. 한눈에 쉽게 상속 관계를 볼 수 있으며 다양한 정렬 방식도 제공한다. 단축키는 `ctrl + h`이다. 상속 구조를 그림(UML..

Web Dev 2023.03.22

[cote] 기사단원의 무기

코딩테스트(level 1) - 기사단원의 무기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 진행과정1 : 시간초과 int answer = 0; for (int i = 0; i limit) { answer += power; } else { answer += temp; } } return answer; 시간초과가 떴다. 진행과정2 : 비효율적인 for문 개선..

Web Dev 2023.03.22