기술 9

Java JSONObject에서 키 값이 없는 경우 파싱하기

Github API를 사용해서 한달간의 commit 수를 나타내는 json 값을 파싱해와야 하는 일이 있었다. 그런데 key값이 없어서 값을 다루는 데 삽질하다가 JSONArray로 접근해서 해결한 내용을 포스팅하려 한다. 아래는 내가 가져올 JSON 값이었다. key값이 하나도 지정돼있지 않고, value의 배열이 나열되어 있었다. 각 배열의 3번째값이 그 날의 Commit 수를 나타내고 있었기에, 나는 각 배열의 3번째 값들 (3, 10, 8)만 get해와서 더해주고자 했다. [ [ 0, 0, 3 ], [ 0, 1, 10 ], [ 0, 2, 8 ] ] 그런데 key값이 없어서 값을 get 해올 수가 없었다. //참고 --- 일반적인 JSON 형식 (key값 존재) { "age":22, "name":"..

기술 2021.07.18

NP-hard 란? Linear Classification의 NP-hard 문제

머신러닝 이론 공부 중, Linear Classification의 문제점으로 NP-hard 문제가 나왔는데 뭔지 짚고 넘어가고자 포스팅한다. 사전 지식 결정성(deterministic) 알고리즘 VS 비결정성 알고리즘 1) 결정성 알고리즘 : input에 따라 결과가 정해져있는 알고리즘. 즉, A -> B로 결정되어 있는 알고리즘이다. 2) 비결정성 알고리즘 : 답이 유일하게 결정되지 않는 알고리즘이다. A -> B,C,D 인지 정해지지 않음. NP의 반대 개념, P (polynomial) NP전에 우선 P를 알아야 한다. P는 결정론적 (deterministic) 알고리즘을 사용해서 다항 시간 내에 답을 구할 수 있는 문제의 집합이다. 즉, P는 yes/no 로 답할 수 있는 문제이다. ​​ # NP ..

기술 2021.04.19

SQL DATE 타입 insert 하기

방법 1. 일/월/년 순으로 입력 > INSERT INTO {테이블명} values ('김윤서', '05/03/2000') 방법 2. 년-월-일 순으로 입력 > INSERT INTO {테이블명} values ('김윤서', '2000-05-03') 명시되지 않은 시간 분/초는 default값이 12:00:00으로 입력됨. 원하는 포맷으로 저장하고 싶을 경우 방법 3. > ALTER session set NLS_DATE_FORMAT = 'DD/MM/RR HH:MI:SS'; DATE 의 format (NLS_DATE_FORMAT)을 변경시킨 후 > INSERT INTO {테이블명} values ('김윤서', '2000/03/05 12:10:17'); 입력. 방법 4. > INSERT INTO {테이블명} va..

기술 2021.04.16

Nodejs TypeError: Cannot read property undefined 해결 방법

오류 상황 template.js 파일에서 html 코드를 return 하는 함수 templateHTML()를 exports 하고, main.js 파일에서 require(./template.js)를 통해 받아서 templateHTML() 함수를 사용하려고 하는데 아래와 같은 에러가 발생했다. TypeError: Cannot read property 'templateHTML' of undefined 아래 방법들을 통해 해결했다. 방법 1. module.exports = HTML 를 소스 코드 가장 아래로 내리기 HTML 정의 후에 export 하도록 해주는 것이다. 방법 2. main.js 에서 불러오는 코드를 아래처럼 변경한다. var HTML = require('./template.js'); // 새로운..

기술 2021.04.07

Nodejs `JavaScript heap out of memory` 오류 시 해결방법

nodejs 웹페이지를 구현할 때 콘솔창에 node main.js 를, (main.js는 내가 만든 js파일 이름) 검색엔진에 localhost:3000 을 입력해서 페이지로 이동한다 (3000 은 내가 지정한 포트번호) ​ 그런데 아래와 같이 콘솔창에 에러 메시지가 뜨면서 웹이 안뜬다면 JavaScript heap out of memory 오류가 발생한 것이다. 이 오류는 과도한 메모리 점유로 인하여 js 엔진이 폭발한 것인데, 이럴 때는 더 큰 메모리를 할당해주면 된다. 1. JavaScript heap out of memory Nodejs의 기본 메모리 사이즈를 512MB 초과하면 자동으로 앱이 종료된다. 기본 메모리 사이즈를 늘리는 방법에 대해서 알아보자. 커맨드라인 환경에서는 node --max..

기술 2021.04.07

IntelliJ `Cannot resolve symbol` 에러 해결 방법 총정리

잘만 돌아가던 프로젝트에 온갖 빨간 줄이 그어졌다. 에러 내용은 "Cannot resolve symbol.. " 사실 이 에러는 IntelliJ IDEA에서 잊을 만 하면 나오는,, 그만큼 자주 보이는 에러이다. 다시 말해 아래와 같이 import가 제대로 안 돼서 생긴 에러이다. import org.springframework.beans.factory.annotation.Autowired; build.gradle 을 뒤져봐도 잘못 된 게 없어보이고,, 이런 어이없는 이유로 시간 낭비하는 게 너무 짜증나서, 해결하고 이번에 따로 정리해두기로 했다. 해결 방법 1번째 방법: 빌드를 다시 한다. 상단 메뉴바 Build > Clean Project 하고 나서, Build > Rebuild Project 2번째..

기술 2021.02.27

인텔리제이 Run 실행 안 될 때 해결 방법

프로젝트를 Run 하려는데 버튼 클릭이 안 되고 위와 같은 문구가 뜰 때 혹은 main 프로젝트가 실행이 안 되고 테스트케이스(JUnit)만 작동하는 경우 해결 방법 1. Add Configuration...을 누른다. 2. 위와 같은 창(Run/Debug Configuration)이 뜨면, "+" 버튼을 눌러 Add Configuration 한다. (혹은 Alt+Insert) 3. Application을 추가한 후, 4. "Main Class" 칸에서 Shift+Enter를 눌러, 메인 클래스를 설정한다. 5. 정상 작동 --> localhost:8080으로 접속해도 페이지가 잘 작동한다.

기술 2021.02.24

spring 프로젝트를 윈도우 cmd창에서 빌드하고 실행하기 (Windows)

cmd 창에서 순서대로 하면 됩니다. 1. cmd창 켜고, 스프링 프로젝트가 있는 폴더로 이동 > cd 폴더경로 2. gradlew 명령어 실행 (아래 순서대로 입력) > gradlew.bat > gradlew build 3. 실행파일(.jar) 찾아가기 > cd build > dir //build 폴더의 파일/디렉터리 보기 > cd libs > dir 4. 실행 > java -jar 파일명 --> 실행 성공 ※참고 cmd 창에서 실행한 경우, 인텔리제이에서 동시에 실행하면, 같은 포트 번호를 사용하게 되므로 에러 납니다. + 윈도우 cmd에서는 ls 대신 dir 명령어를 사용하는 등, 리눅스 명령어 사용이 안 되는데 이게 갈 수록 불편해지기 때문에 git bash와 연동하여 nix 계열 명령어를 사용하..

기술 2021.01.20