일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ojdbc6
- db
- JavaScript
- Spring
- datagrip 한글깨짐
- DART
- 인텔리제이
- oracle
- REST
- @RequestBody
- node.js
- TypeScript
- Aspect
- javascript error
- tecoble
- 봤어요처리
- class-transformer
- 프로젝트 여러 개
- Stream
- svn
- MySQL
- maven
- InteliJ
- SQL
- Mac
- flutter mac 설치
- Java
- eqauls-hashcode
- 프로그래머스
- 코어자바스크립트
- Today
- Total
목록Dev (92)
개발자가 되고 싶은 개발자
[분할정복 알고리즘] - 이진 탐색 - 합병 정렬 - 퀵 정렬 - 선택 정렬 [동적 프로그래밍 알고리즘] - 피보나치 수열 문제 - 연쇄 행렬 곱셈 문제 - 스트링 편집 거리 문제 - 모든 정점 간의 최단 경로 - 저울 문제 [탐욕법(욕심쟁이 알고리즘)] - 동전 거스름돈 문제 - 배낭문제 - 최소 신장 트리 - 최단 경로 - 작업 스케줄링 문제 - 작업 선택 문제 - 허프만 코딩 * 탐욕법을 적용해 최소 신장 트리를 구하는 알고리즘 - 프림 알고리즘 - 크루스칼 알고리즘 [정렬 알고리즘] - 버블, 선택, 삽입, 셸, 합병, 퀵, 힙 - 비교 기반 정렬의 하한 - 계수 정렬 - 기수 정렬 [탐색 알고리즘] - 순차, 이진 - 탐색 트리 - 해싱 [근사 알고리즘] - 클래스 P와 클래스 NP - NP-완..
GitHub - fullth/effective-typescript: Effective TypeScript: 62 Specific Ways to Improve Your TypeScript Effective TypeScript: 62 Specific Ways to Improve Your TypeScript - GitHub - fullth/effective-typescript: Effective TypeScript: 62 Specific Ways to Improve Your TypeScript github.com 아이템 28 유효한 상태만 표현하는 타입을 지향하기(valid-states) 타입을 잘 설계 -> 직관적인 코드를 작성할 수 있음. 효과적인 타입설계 -> 유효한 상태만 표현할 수 있는 타입을 만들어..
타입스크립트는 타입 추론을 적극적으로 수행한다. 타입 추론은 수동으로 명시해야 하는 타입 구문의 수를 엄청나게 줄여준다. -> 코드의 전체적인 안정성 향상. 타입스크립트 초보자 vs 숙련자 -> 타입 구문의 수에서 차이 보임. 전부 다 타입을 도배할 필요가 없다는 것을 알 수 있음. 불필요한 타입 구문은 필요없음. 타입 추론에서 발생할 수 있는 문제와 그 해법이 3장의 내용. 목표: 타입 추론이 가능한 경우라도 타입 선언을 작성해야 하는 것이 필요한 상황은 언제인지 이해하기. 아이템 19 추론 가능한 타입을 사용해 장황한 코드 방지하기 결국 타입을 위한 언어 -> 변수를 선언할 때마다 타입을 명시해야 한다고 생각 -> 정곡 let x: number = 12; (x) -> let x = 12; 로 충분. ..
(코어 자바스크립트(정재남 저- 위키북스)를 참조하여 작성.) 코어 자바스크립트 - YES24 자바스크립트의 근간을 이루는 핵심 이론들을 정확하게 이해하는 것을 목표로 합니다최근 웹 개발 진영은 빠르게 발전하고 있으며, 그 중심에는 자바스크립트가 있다고 해도 결코 과언이 아니 www.yes24.com 콜백함수란? 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. 콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수도 있고, 아니면 나중에 실행할 수도 있다. -위키백과- 콜백함수에 대해 일상생활의 알람시계에 비유. 약속시간에 늦지 않기 위해 중간중간 잠에서 깨어 핸드폰을 확인하는 것과(수시로 구하는 함수를 직접 호출), 알람시계의 알람을 맞춰놓는 것. (알람설정 함수를 호출 -> 호출 당..
이펙티브 타입스크립트 - YES24 타입스크립트는 타입 정보를 지닌 자바스크립트의 상위 집합으로, 자바스크립트의 골치 아픈 문제점들을 해결해 준다. 이 책은 《이펙티브 C++》와 《이펙티브 자바》의 형식을 차용해 타입스 www.yes24.com GitHub - fullth/effective-typescript: Effective TypeScript: 62 Specific Ways to Improve Your TypeScript Effective TypeScript: 62 Specific Ways to Improve Your TypeScript - GitHub - fullth/effective-typescript: Effective TypeScript: 62 Specific Ways to Improve Y..
(코어 자바스크립트(정재남 저- 위키북스)를 참조하여 작성했습니다.) 코어 자바스크립트 - YES24 자바스크립트의 근간을 이루는 핵심 이론들을 정확하게 이해하는 것을 목표로 합니다최근 웹 개발 진영은 빠르게 발전하고 있으며, 그 중심에는 자바스크립트가 있다고 해도 결코 과언이 아니 www.yes24.com 자바스크립트에서는 실행 컨텍스트가 활성화 될 때(생성될 때), this의 정보가 결정됩니다. (실행 컨텍스트에 대한 설명은 아래 포스팅을 참고하시면 됩니다.) [JavaScript] 실행 컨텍스트 (코어 자바스크립트(정재남 저- 위키북스)를 참조하여 작성했습니다.) (ECMAScript Spec 9.4에 해당 내용이 명세되어 있습니다.) 코어 자바스크립트 - YES24 자바스크립트의 근간을 이루는 핵..
(코어 자바스크립트(정재남 저- 위키북스)를 참조하여 작성했습니다.) (ECMAScript Spec 9.4에 해당 내용이 명세되어 있습니다.) 코어 자바스크립트 - YES24 자바스크립트의 근간을 이루는 핵심 이론들을 정확하게 이해하는 것을 목표로 합니다최근 웹 개발 진영은 빠르게 발전하고 있으며, 그 중심에는 자바스크립트가 있다고 해도 결코 과언이 아니 www.yes24.com ECMAScript® 2023 Language Specification The first and subsequent editions of ECMAScript have provided, for certain operators, implicit numeric conversions that could lose precision or ..
이펙티브 타입스크립트 - YES24 타입스크립트는 타입 정보를 지닌 자바스크립트의 상위 집합으로, 자바스크립트의 골치 아픈 문제점들을 해결해 준다. 이 책은 《이펙티브 C++》와 《이펙티브 자바》의 형식을 차용해 타입스 www.yes24.com GitHub - fullth/effective-typescript: Effective TypeScript: 62 Specific Ways to Improve Your TypeScript Effective TypeScript: 62 Specific Ways to Improve Your TypeScript - GitHub - fullth/effective-typescript: Effective TypeScript: 62 Specific Ways to Improve Y..
이펙티브 타입스크립트 - YES24 타입스크립트는 타입 정보를 지닌 자바스크립트의 상위 집합으로, 자바스크립트의 골치 아픈 문제점들을 해결해 준다. 이 책은 《이펙티브 C++》와 《이펙티브 자바》의 형식을 차용해 타입스 www.yes24.com GitHub - fullth/effective-typescript: Effective TypeScript: 62 Specific Ways to Improve Your TypeScript Effective TypeScript: 62 Specific Ways to Improve Your TypeScript - GitHub - fullth/effective-typescript: Effective TypeScript: 62 Specific Ways to Improve Y..
(코어 자바스크립트(정재남 저- 위키북스)를 참조하여 작성했습니다.) 코어 자바스크립트 - YES24 자바스크립트의 근간을 이루는 핵심 이론들을 정확하게 이해하는 것을 목표로 합니다최근 웹 개발 진영은 빠르게 발전하고 있으며, 그 중심에는 자바스크립트가 있다고 해도 결코 과언이 아니 www.yes24.com 자바스크립트의 데이터 타입에는 기본형(원시형, Primary Type)과 참조형(Reference Type)이 있습니다. 기본형 데이터와 비교해보며 참조형에 대해 알아보도록 하겠습니다. 객체(Object) 자바스크립트의 참조형은 객체이고, Array, Function, RegExp, Date, Map, Set 등이 객체의 하위분류로 속해있습니다. 기본형의 데이터 할당 먼저, 기본형과 참조형의 구분은 ..
문제 Spring Initializr에서 생성 후 프로젝트 실행 시 서버가 구동되지 않고 바로 종료되었습니다. 원인 및 해결방법 build.gradle에 아래 의존성을 추가 후 refresh 하시면 됩니다. implementation 'org.springframework.boot:spring-boot-starter-web' InteliJ의 Gradle탭에서 해당 의존성을 살펴보면, Spring Boot에서 사용하는 내장 톰캣이 spring-boot-starter-web과 연관돼 있는 것을 보실 수 있습니다. 해당 라이브러리가 없어서 발생하는 문제이고, web 모듈을 받아주면 됩니다. 가끔 프로젝트를 의존성 없이 생성한 후 실행이 안돼서 무지성으로 검색부터 할 때가 있어 기록합니다.
API 문서와 소스를 통해 스택 자료구조가 작성되어 있는 Stack 클래스를 분석해보도록 하겠습니다. Java Platform SE 8 docs.oracle.com Stack 클래스의 구조 Stack 클래스란? public class Stack extends Vector 스택 클래스는 객체의 LIFO 스택을 표현합니다. 스택 클래스는 백터를 스택으로 취급할 수 있게 해주는 다섯 가지 작업로 백터 클래스를 확장합니다. push와 pop 작업이 제공되고, 스택의 상단 요소를 찾기 위한 메서드와, 스택이 비어있는지 확인할 수 있는 메서드, 그리고 요소를 찾을 수 있는 메서드와 상단으로부터 얼마나 떨어져 있는지 찾기 위한 메서드가 제공됩니다. 더 완전하고, 일관된 LIFO 스택 작업의 set은 Deque 인터페..
문제 devtools 의존성과 livereload 설정을 해주었는데도 소스가 자동으로 빌드되지 않음 implementation 'org.springframework.boot:spring-boot-devtools' spring.devtools.livereload.enable=true 해결방법 (Mac) ctrl + shift + a 를 누르면 검색 창이 뜬다. Advanced Settings 검색. Allow auto-make to start even if developed application is currently running 체크 (2021.2 부터 Resistry에서 설정했던 것이 Advanced Settings로 변경됐다고 함.) MEMO 해당 설정은 프로젝트 단위로 적용됨. 기존 작성 링크 참..
문제 통신후 서버에서 반환하는 값을 정상적으로 넘겨받았음에도 statusText가 parsererror로 떨어짐. 원인 서버에서 받는 데이터 타입과 넘겨주는 타입이 다름. 사용중인 라이브러리에서 text 타입으로 넘겨주고 있음. 해결방법 명시적으로 dataType을 text로 지정해줌. dataType: "text",
문제 ajax 통신으로 데이터 전송 시 서버측에서 해당 오류 발생 원인 put 메서드 이용 시 json 형식으로 요청하여야 하는데, 사용하는 라이브러리에서 text데이터를 보내고 있었음. 해결방법 JSON.stringify(item) json형식으로 변환하여 전송하여 해결함. 참고 Spring post method "Required request body is missing" @PostMapping(path="/login") public ResponseEntity loginUser(@RequestBody Map userData) throws Exception { return ResponseEntity.ok(userService.login(userData))... stackoverflow.com
코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 10진법 124나라 10진법 124나라 1 1 6 14 2 2 7 21 3 4 8 22 4 11 9 24 5 12 10 41 500,000,000 이하의 자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return해주는 함수를 작성하는 문제입니다. 효율성 테스트 실패 코드 public String failSolution(int n) { String answer = ""; int rest = 0; while(n > 0) { rest = n % 3; n /= 3; if(rest == 0) { rest = 4; n -= 1; } answer = rest + answer; } return answer; }..
먼저, JVM이란 - JVM은 Java Virtual Machine의 약자로 자바 가상머신을 의미합니다. - 우리가 작성한 자바 코드는 컴파일러를 통해 자바 바이트 코드 즉, class 확장자 파일로 컴파일됩니다. - 해당 파일을 JVM위에서 동작시킴으로서 JVM만 설치되어 있다면 운영체제에 구애받지 않고 프로그램을 동작할 수 있습니다. 위 그림의 3번인 Runtime Data Area가 알아보고자 하는 JVM의 메모리 영역입니다. 운영체제 위에서 JVM이 실행되면서 할당받는 메모리 영역입니다. 5개의 영역이 존재합니다. 메소드, 힙, 스택 영역에 대해서만 알아보도록 하겠습니다. 메소드 영역(Method Area) 스택 영역(Stack Area) / 힙 영역(Heap Area) Reference 마로의 ..
Java에서의 정렬 자바에서 데이터를 정렬해야 할 때, 기본적인 정렬은 java.util 패키지에 정의되어 있는 Arrays와 Collections의 sort메소드를 사용합니다. int[] randomNum = {3, 4, 6, 3, 2}; Arrays.sort(randomNum); String[] fruits = {"apple", "banana", "kiwi"}; Arrays.sort(fruits); ArrayList alphabetList = new ArrayList(Arrays.asList("C", "A", "B", "a")); Collections.sort(alphabetList); 위의 예시대로 작성한다면, 기본 정렬인 오름차순으로 정렬하게 됩니다. 기본적으로 제공되는 기능들로 오름차순, 내림차..
사파리 -> 파일 -> 가져오기 -> Google Chrome...
환경 InteliJ + SpringBoot + Thymeleaf 상황 구글링 해본 결과 다음과 같은 설정과 Resisty의 수정이 필요하다고 하여 적용하였으나 작동되지 않았습니다. spring.thymeleaf.cache=false spring.devtools.restart.enabled=true spring.devtools.livereload.enabled=true 해결방법 Run > Edit Configurations Running Application Update Policies의 On 'Update' action / On frame deactivation 항목을 Update classes and resources로 변경해줍니다.
기본적인 자료구조인 큐에 대해서 작성한 소스를 통해 알아보도록 하겠습니다. 전체소스 import java.util.NoSuchElementException; class Queue { private Node front; private Node rear; public void add(T item) { Node node = new Node(item); if(rear != null) rear.next = node; rear = node; if(front == null) front = rear; } public T remove() { if(front == null) throw new NoSuchElementException(); T data = front.data; front = front.next; if(fro..
상황 API를 호출하여 컨트롤러에서 @RequestBody 어노테이션을 사용하여 데이터를 받아왔습니다. 하나의 데이터를 제외한 나머지는 정상적으로 받아오고, 특정 값만 받아오지 못하여 문제가 되었습니다. 해결책 "Spring mvc uses jackson to parse json by default. It is guessed whether the field name of the entity class is changed when the field name is converted to json." Spring은 json파싱을 위해 기본값으로 jackson 라이브러리를 사용한다고 합니다. 필드명을 아래와 같은 형태로 작성하게 되면 IDE혹은 Lombok에서 자동생성해주는 Getter/Setter의 메소드명은..
유클리드 알고리즘에 대해 알아보고, 관련 문제를 해당 알고리즘으로 풀어보도록 하겠습니다. 유클리드 알고리즘, 유클리드 호제법(互除法)이란? 유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘의 하나이다. 호제법에 대한 설명은 다음과 같습니다. 두 수가 서로 상대방을 나누어서 결국 원하는 수를 얻는 알고리즘을 나타낸다. 호제법이라는 말은 서로(互) 나누기(除) 때문에 붙여진 이름이다. 이 뜻의 '호제' 라는 단어가 따로 있지는 않다. 다시, 유클리드 호제법 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질..
최근 몇 개월간 배치 프로그램 개발을 맡아서 진행하였는데, 반복적인 업무를 자동화 할 수 있다는 점에서 굉장히 흥미로웠습니다. 아직은 경험해 본 범위 내에서만 활용할 줄 알기때문에, 다른 사람들과 기업에서는 어떻게 활용하고 있는지, 추가적인 기능은 없는지 찾아보며 Spring Batch에 관하여 정리해보려 합니다. Spring Batch란 A lightweight, comprehensive batch framework designed to enable the development of robust batch applications vital for the daily operations of enterprise systems. 엔터프라이즈 시스템의 운영에 필수적인 강력한 배치 애플리케이션을 개발할 수 있도..
한빛미디어의 이것이 취업을 위한 코딩테스트다 with 파이썬을 요약 정리했습니다. 그리디 알고리즘이란 - 탐욕 알고리즘, 탐욕법 - 여기서 탐욕적이라는 말은 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다. 그리디 알고리즘의 특징 - 매 순간 가장 좋아보이는 것을 선택 - 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않음 - 사전에 외우고 있지 않아도 풀 수 있을 가능성이 높은 문제 유형 예제문제- 거스름돈 거스름돈으로 사용할 500, 100, 50, 10원짜리 동전히 무한히 존재한다고 가정. 거슬러 줘야 할 돈이 N원일 때 거슬러 줘야 할 동전의 최소 개수를 구하라. (단, 거슬러 줘야 할 돈 N은 항상 10의 배수이다.) 소스코드 - 예제 소스 3-1.py를 자바로 작성하였음 Git..
에러내용 - svn: E155011: Directory '...' is out of date 상황 - 작업중인 패키지 삭제 후 소스 커밋 원인 - 삭제가 반영된 서버의 소스 버전과 로컬의 소스 버전이 다르기 때문에 발생 해결방법 - 프로젝트 우클릭 -> Subversion -> Update Directory - 아래 이미지와 같이 HEAD revision으로 변경해준다.
문제 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 목표 - 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천 규칙 - 아이디의 길이는 3자 이상 15자 이하여야 합니다. - 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. - 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. 조건 - 네오가 설계한 7단계의 순차적인 처리 과정을 거쳐야 함 - 1단계 new_id의 ..
인덱스란? - 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조를 일컫는다. - 책을 볼 때 특정 내용을 빨리 찾기 위해 있는 맨 뒷 부분의 찾아보기 부분이 인덱스라고 생각하면 된다. - 인덱스는 테이블에 있는 한 개 이상의 컬럼으로 만들 수 있다. - 만약 인덱스가 없다면 테이블 전체를 뒤지는 풀 스캔을 하게 된다. B-tree 인덱스 - 여러 종류의 인덱스가 있는데 가장 일반적인 인덱스가 B-tree인덱스이다. - 표준인 B-tree인덱스는 인덱스 키와 이 키에 해당하는 컬럼 값을 가진 테이블의 로우가 저장된 주소 값으로 구성된다. - 인덱스 키: 인덱스로 만들 테이블의 컬럼 값 고려사항 - 입력, 수정, 삭제를 하게 되면 인덱스를 새로 갱신하여야 하기 때문에 성능이 저하된다..
서론 프로젝트 막바지가 되면서 배포할 일이 잦아지고 있는데, 현재 방식이 서버에 직접 들어가서 jar파일을 넣고, 실행해주어야 한다. 자주 반복되다보니 여간 귀찮은 일이 아닐 수 없다. 불편함을 느낀 후 자동화 등을 도입했을 때의 이해도와 편리함은 배가 될 것이다. 업무에 적용할 수 있으면 좋고, 아니면 개인 프로젝트에서 사용하면 되니 우선 공부해보려 한다. 반복되는 작업 - 신규작업/수정작업 ▶ 테스트 ▶ 배포 CI/CD란? - Continuous Integration 지속적인 통합 - Continuous Delivery 또는 Continuous Deployment 지속적인 서비스 제공 또는 지속적인 배포 도입 후 이점 - 빈번한 소스 커밋으로 인한 통합 문제 방지 - 변경된 코드로 부터 즉각적인 피드..
문제 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 코드 class Solution { public int[] solution(int[] lottos, int[] win_nums) { int zeroCnt = 0; int chkMatched = 0; for(int i : lottos) { if (i == 0) zeroCnt ++; else { for ( int j : win_nums) { if(i == j) { chkMatched++; break; } } } }..