본문 바로가기

개발자 일지120

[자바, 스프링]인프런 김영한 로드맵1, 스프링 입문 강의 정리2 -인프런 김영한 강사님의 스프링 입문 강의 핵심 위주로 정리한다.-모든 소스는 깃허브에서 관리한다.(https://github.com/coderahn/Spring-Lecture1)-이전 글은 아래 링크를 참고해주세요.  [자바, 스프링]인프런 김영한 로드맵1, 스프링 입문 강의 정리1-인프런 김영한 강사님의 스프링 입문 강의 핵심 위주로 정리한다.-모든 소스는 깃허브에서 관리한다.(https://github.com/coderahn/Spring-Lecture1)5개월전에 한 번 듣긴 했었는데 너무 빠르게 듣고 강의 듣roadofdevelopment.tistory.com  4.회원 관리 예제 - 백엔드 개발1)비지니스 요구사항 정리간단한 회원관리 예제를 만든다. 회원등록과 조회 기능을 만든다. 데이터 저장소.. 2021. 12. 12.
[자바, 스프링]인프런 김영한 로드맵1, 스프링 입문 강의 정리1 -인프런 김영한 강사님의 스프링 입문 강의 핵심 위주로 정리한다.-모든 소스는 깃허브에서 관리한다.(https://github.com/coderahn/Spring-Lecture1)5개월전에 한 번 듣긴 했었는데 너무 빠르게 듣고 강의 듣기 자체에만 어느새 목적전도가 되어서..제대로 인프런에서 안내하는 로드맵을 따라서 깃허브 코드 관리와 내용 요약을 하려고 한다. 토이 프로젝트도 하면서 머리도 머리인데 손가락 근육(?)으로도 체득이 더 되도록 해보자..이 정리의 목표는내가 모르는 것, 기억이 가물가물한 것, 실무에 반드시 알고 있어야 하는 것 들에 대해서 정리단순히 클론코딩 하듯이 따라하면 남는 게 없다. 따라하면서 다른 방식으로 실행해 보거나 모르는 게 있으면 따로 심화 정리를 간단하게라도 해보자 1.강.. 2021. 12. 6.
[TIL]try-catch-resource, JWT, equalsgnoreCase() 등 - 한 주간 업무시간이나 영상 등에서 배운 것들을 간단하게 정리한다. JAVA - equalsIgnoreCase() 소나큐브에서 equals()로 되어 있는 소스코드를 equalsIgnoreCase()로 바꾸라고 해서 찾아봤다. 보던 메소드이긴 한데, 정확히 어떤 상황에서 쓰는지 몰랐는데 이번에 잘 알게 되었다. 그냥 말 그대로 '대소문자 무시하고 비교하기'이다. String a = "Test"; System.out.println(a.equalsIgnoreCase("test")); //결과 //true JAVA - try-with-resources Apache Poi로 엑셀 리딩 작업을 하고 close()를 실수로 안 해서 소나큐브에서 잡아주면서 알게 되었다. 보통 finally에 close() 처리를 .. 2021. 12. 4.
[TIL]이번 주 학습 내용들 - 업무 프로젝트를 진행하며 숙지할 필요가 있는 부분을 간단하게 작성한다. 생각해보니 TIL은 Today I Learned인데, Today는 아니다..그래도 한 주간 배운 것을 정리하니 TIL로 해야지. VUE Mixins Vue 컴포넌트에서 재사용 가능한 기능을 배포하는 유연한 방법이다. 공통 함수같은 것을 만들어서 여러 컴포넌트에서 사용하거나 그런 경우 사용한다. JWT 회사에서 만들어진 것을 쓰다보니 궁금증이 생겨서 공부해봤다. 학습 프로젝트로 한 번 해봐야겠다. 기존 세션 방식 로그인 시 인증/인가 방식에는 기존 세션 저장 방식이 있다. 클라이언트에서 로그인 요청시 서버에서 세션 생성을 한다. 그리고 그 세션id를 쿠키에 담아 클라이언트에 전달한다. 이후 Request를 보낼 때 쿠키에 담은 세션.. 2021. 11. 26.
[자바스크립트,JavaScript]함수선언식, 함수표현식 -자바스크립트 함수선언식과 함수표현식에 대해 알아본다.-호이스팅에 대해 알아본다.-함수표현식의 장점에 대해 알아본다.함수 선언식function name () { return 'name'}name() //name 그냥 일반적인 선언 방식이다. 호이스팅에 영향을 받는다. 그래서 실무에서 선언식으로 개발한 컴포넌트는 함수 위치에 따른 에러가 없이 실행될 수 있었던 것이다. 함수 표현식자바스크립트 언어의 유연성을 활용한 방식이다. 호이스팅에 영향을 받지 않는다. 그렇기 때문에 선언 순서를 잘 고려해야 에러가 나지 않는다.let name = function () { return 'name'}name() //name 호이스팅 개념 호이스팅이란 자바스크립트 인터프리터가 함수 안에 있는 선언들을 모두 상단으로 끌어올려.. 2021. 11. 13.
[TIL]블로그와 깃커밋에 관해 / 이번 주 학습 내용들 -블로그 방향성에 대해 고민을 정리한다. -이번 주 학습 내용들을 간단하게 정리한다. 블로그를 쓰면서도 고민하고 있는데 TIL에 적는 것과 각각 카테고리에 포스팅하는 것과 어떤 기준으로 분류 해야할지 모르겠다. 찾아보니 요새는 git에 TIL을 많이 하는 것 같기도 하고..나도 git을 계속 하고 있긴 한데..이런저런 고민하면서 좋은 블로그들도 찾았고 일일커밋에 대한 회의적인 글도 보았다. https://blog.outsider.ne.kr/1141 일일 커밋 :: Outsider's Dev Story 작년에 [샌프랜시스코](http://blog.outsider.ne.kr/1103)에 갔다 오고 나서 오픈 소스 활동을 더욱 열심히 해야겠다는 생각이 들었다. 평소에도 생각하던 일이지만 동기부여가 훨씬 강력히.. 2021. 11. 12.
[자바,스프링]서블릿 컨테이너와 스프링 컨테이너 -서블릿의 라이프 사이클을 관리하고 서블릿을 실행하는 서블릿 컨테이너를 알아본다.-서블릿 컨테이너에서 사용되는 서블릿에 대해 알아본다.-스프링 MVC 핵심 기술인 스프링 컨테이너에 대해 알아본다.서블릿 컨테이너와 스프링 컨테이너는 웹개발자라면 기본적으로 어느정도는 다 알고 있을 것이다. 나도 딱 '어느정도'만 알고 있고, 공부를 할 때는 깊게 배운 것 같았는데 또 실무 프로젝트를 하고 오랜기간 생각을 안하면 기억이 흐려진다. 웹개발자이기 떄문에 언제나 쉽게 서블릿, 서블릿 컨테이너, 스프링 컨테이너 등에 대해 설명할 수 있을 정도가 되어야 된다고 생각하여 포스팅한다. *틀린 개념이 있을 수 있습니다. 지적 부탁드립니다. 서블릿(Servlet)이란? 서블릿은 웹 프로그래밍을 위한 자바 기술이다.Servle.. 2021. 11. 9.
[TIL]vue의 $refs, Oracle SQL의 NULL관련 주의사항 - 업무 프로젝트를 진행하며 숙지할 필요가 있는 부분을 간단하게 작성한다. 1. Vue의 $refs는 컴포넌트 렌더링 이후에 접근 가능하다. created나 beforeCreated에서 사용하면 undefined가 뜬다. 2.현재 AS-IS 소스를 리뉴얼 하고 있다. (AS-IS는 iBatis로 되어 있다.)기존 Mapper 소스에 이런 WHERE 조건이 있었다. 아래의 테이블명, 컬럼명은 작성을 위해 대충 지어냈다. SELECT A,B FROM TEST WHERE NVL(A,' ') IN ($queryStr$, ' ') 여기서 WHERE 조건을 보면 저런식으로 NVL과 ' '처리가 되어 있다. ($queryStr$은 클라이언트 단에서 넘어온 값) NVL로 왜 저렇게 처리했는지 갸우뚱 했다. 저 부분을 .. 2021. 11. 3.
[기타]웹 브라우저 동작 방식, DOM에 관하여 - 웹 브라우저가 내부적으로 어떻게 동작하여 화면에 보여지는지 심플하게 정리한다. - 자바스크립트 엔진과 어떤식으로 맞물려 동작하는지 심플하게 정리한다. 웹 개발자인데 가장 기본적인 개념인 DOM 개념과 웹 브라우저 동작 방식을 잘 모르면 안 될 것 같아서 간단하게라도 정리하여 흐름을 이해해 두려고 한다. 자세한 디테일은 타블로그 등(출처)에 너무 잘 나와서 여기서는 빠르게 훑을 수 있도록만 정리한다. 1.브라우저 동작 순서 브라우저의 여러 구성 요소들 중, HTML, CSS를 파싱하여 브라우저에 화면을 표시하는 핵심 역할을 하는 요소가 '렌더링 엔진' 렌더링 엔진은 브라우저마다 각각 다르다. 크롬, 사파리는 웹킷(Webkit), 파이어폭스는 개코(Gecko)를 사용한다. 참고로 크롬은 다른 브라우저들과.. 2021. 10. 5.
[TIL]배운 내용 및 정리할 내용 요약 요 근래 배운 내용들에 대해 간단하게 정리해둔다. 오랜만에 블로깅 하니 어색하다. 요즘 vue, react 등 사용하는 서비스 회사들이 많겠지만 아직 프로젝트를 하면서 이런 기술들을 사용해보진 못했다. react 클론코딩 등으로 만족하고 있었는데.. 다행스럽게도 이번 프로젝트에서 기존에 써보지 못한 기술, 방법론 등을 많이 써보고 있다. 또 잘하는 윗분들이 많으니 배울 것도 많다. 감사한 일이라고 생각한다. 그러고보니 TIL(Today I Learned)은 아닌 것 같지만 그냥 TIL로 표기하고 앞으로 하루하루 배운 것들이 있으면 조금씩 써봐야겠다. 프로젝트에서 다음과 같은 기술들을 사용한다. Vue.js : 싱글페이지어플리케이션(SPA)를 구축하기 위해 사용하는 프론트엔드 프레임워크를 사용하고 있다. .. 2021. 8. 4.
자바스크립트 동작 원리, 비동기 동작 원리 -자바스크립트의 동작 원리에 대해 살펴본다. -단일스레드인 자바스크립트가 비동기 방식으로 작동하는 원리를 살펴본다. *개인 공부 목적으로 포스팅한 것이기 때문에 틀린부분이 있거나 취약한 부분이 있습니다. 지적해주셔도 좋고 여러 블로그에서 잘 정리 해두었으니 다양하게 참고해보시면 좋을 것 같습니다. 자바스크립트 런타임 환경, 기본 동작 원리 자바스크립트 런타임이란 자바스크립트 코드가 돌아가는 환경을 말한다. 이 런타임을 구성하고 있는 요소들은 인터프리터 V8 엔진, WEB API, 이벤트루프, 콜백큐 등이 있다. 하나하나 개념을 간단하게 살펴보면 다음과 같다. V8 : 크롬 브라우저의 일부인 엔진이다. 자바스크립트 코드는 V8 엔진을 통해 코드가 해석되고 돌아간다. 대표적으로 자바스크립트 엔진이 V8인 것.. 2021. 6. 14.
[토비의 스프링 vol.1]4장 예외 -토비의 스프링 3.1 vol.1의 4장을 정리 및 실습한다. 4.1 사라진 SQLException 3장 템플릿/콜백에서 JdbcContext를 JdbcTemplate로 바꾼 후 예외를 던지는 코드가 사라졌다. //jdbcTemplate 적용 전 public void deleteAll() throws SQLException { this.jdbcContext.executeSql("delete from users"); } //jdbcTemplate 적용 후 public void deleteAll() { this.idbcTemplate.update("delete from users"); } 위의 throws SQLException이 어디로 갔을까? 이번 장에서는 그 이유를 살펴본다. 그 전에 난감한 예외처리의.. 2021. 6. 11.
[리눅스 기초]cron을 사용하여 정기적으로 실행하기 -리눅스 크론(cron)을 사용하여 정기적으로 프로세스를 실행하는 방법을 학습한다. -생활코딩의 리눅스 강의를 바탕으로 학습 및 보충학습하였다. -ubuntu 12.10을 사용하였다. 크론이란 특정 시간에 특정 작업을 자동으로 수행해야 할 때 크론(cron)을 사용한다. 스케쥴링 역할을 한다. 예를 들어 새벽 4시에 정기적으로 사용자들에게 메일을 발송하는 경우가 대표적이다. 크론 작업 설정은 crontab에서 한다. crontab은 /etc/crontab에 위치해 있다. 여기 설정된 크론 설정 정보를 통해 자동으로 수행될 프로세스가 결정된다. 크론 설정은 crontab 명령어를 통해 할 수 있다. crontab -e를 입력하면 편집할 편집기를 설정하라는 메뉴가 나온다.(최초1번만 나옴) 2번 nano를 .. 2021. 5. 16.
[토비의 스프링 vol.1]3장 템플릿 -토비의 스프링 3.1 vol.1의 3장을 정리 및 실습한다. 1장의 초난감DAO코드에 템플릿 기법을 적용하여 완성도를 높여본다. 3.1 다시 보는 초난감 DAO 3.1.1 예외처리 기능을 갖춘 DAO JDBC 수정 기능의 예외처리 코드 1장에서 만든 UserDao에 예외 처리를 추가한다. DB 커넥션 관련 코드는 리소스를 공유하기 때문에 예외가 발생하여 정상적으로 close()가 안 되면, 리소스 반환이 안 되어 나중에 리소스 부족과 관련된 에러가 발생할 수 있다. 일반적으로 서버에서는 제한된 DB 커넥션을 만들어 풀(Pool)로 관리한다. close()를 안 하면 다시 풀에 리소스를 넣지 못해서 반환하지 못한 커넥션이 쌓이면 다음 커넥션 요청 때 풀에 리소스가 없어서 서버 중단이 될 수 있다. 다음과.. 2021. 5. 16.
[토비의 스프링 vol.1]2장 테스트 -토비의 스프링 3.1 vol.1의 2장을 정리 및 실습한다. 2.1 UserDaoTest 다시 보기 2.1.2 UserDaoTest의 특징 1장에서 테스트한 UserDaoTest의 특징은 다음과 같다. 가장 손쉬운 테스트 방법인 main()을 사용 UserDao의 오브젝트를 가져와서 메소드 호출 테스트 전용 입력값(User 오브젝트)를 직접 만들어 인자로 넣음 콘솔에 결과 출력 웹을 통한 DAO 테스트 방법의 문제점 일반적으로 DAO를 테스트하는 방법은 서비스 계층, MVC 프레젠테이션 계층까지 포함한 모든 입출력 기능을 대충이라도 만든 후 서버에 배치한 후에 웹 화면에서 직접 값을 입력하여 버튼을 눌러 등록하여 테스트한다. 이러한 방법의 문제점은 다음과 같다. 시간이 오래 걸림 에러 발생시 정확히 어.. 2021. 5. 12.
[리눅스 기초]daemon,service에 관하여 -daemon의 개념 및 명령어와 이를 실행하는 service 명령어를 알아본다. -생활코딩의 리눅스 강의를 바탕으로 학습 및 보충학습하였다. -ubuntu 12.10을 사용하였다. daemon이란 백그라운드에서 항상 실행되고 있는 프로세스로 메모리에 상주해 있다가 사용자 요청이 오면 응답하는 프로세스이다. 리눅스 시스템의 1번프로세스(PID=1)인 init 프로세스가 실행한다. 데몬 프로그램의 명령어들은 명칭뒤에 d가 붙는다. httpd,ftpd 등이다. 아파치를 설치(sudo apt-get install apache2)한 후, cd /etc/init.d명령어로 디렉토리 이동후 ls -al로 명령을 내리면 apache2 데몬을 확인할 수 있다. /etc/init.d라는 디렉토리에는 데몬 프로그램들이 위.. 2021. 5. 9.
[리눅스마스터2급]1차 시험 문제 학습하기 -리눅스마스터 2급 1차 시험의 내용들을 복기하며 모르는 것들은 최소한으로 정리해본다. -족보 문제를 기준으로 나왔던 문제들을 분석하는 식으로 한다.(족보 출처는 맨 아래 명시) 리눅스마스터2급을 왜 보는가 자격증이 필요해서 따려는 것은 아니다. 그냥 번아웃 증상 완화를 위한 긴급처방 + 리눅스 관련 상식들을 전반적으로 알고 싶은 욕구 정도의 목적을 갖고 있다. 아무래도 시험이라는 목적이 있으면 단기간에 흡수하는 효율이 높아지기 때문에 출퇴근 시간이나 회사에서 짬낼 때 공부하기가 좋다. 인터넷에 족보들이 많고 구글 검색만 해도 나오기에 온라인 시험인 1차 시험은 아마 대부분 붙을 것이라고 본다. 그러나 붙고 끝나는 것이 아니라 몰랐던 것들은 최소한으로 정리해놔야 15,000원이 안 아까울 것이라고 생각했.. 2021. 5. 8.
[리눅스 기초]백그라운드, 포그라운드 프로세스 -리눅스에서 프로세스가 실행되는 방식인 포그라운드, 백그라운드 프로세스를 학습한다. -생활코딩의 리눅스 강의를 바탕으로 학습 및 보충학습하였다. -ubuntu 12.10을 사용하였다. 포그라운드와 백그라운드란 프로세스가 실행되는 방식에는 두 가지가 있다. 포그라운드(foreground)와 백그라운드(background)인데 해석 그대로 앞과 뒤에서 실행되는 프로세스를 의미한다. 포그라운드는 터미널에서 우리가 작업할 때 화면에 출력된 결과를 보고 명령을 입력하는 대화식 작업을 한다. 명령을 실행하고 결과 출력때까지 기다리는 방식으로 처리된다. 백그라운드는 포그라운드 프로세스가 실행되는 동안에 뒤에서 다른 프로세스를 실행하여 한 터미널에서 여러 프로세스를 동시에 실행한다. 데몬, 백신 프로그램같은 것이 예이.. 2021. 5. 6.
[리눅스 기초]파일을 찾는 방법(location,find,whereis) -리눅스에서 파일, 명령어 정보를 찾는 명령어들을 알아본다. -생활코딩의 리눅스 강의를 바탕으로 학습 및 보충학습하였다. -ubuntu 12.10을 사용하였다. find 리눅스에서 파일을 검색할 때 가장 기본적으로 사용되는 명령어이다. 단점은 처음부터 하나씩 검색을 수행하여 속도가 느리다는 것이다. 그렇기 때문에 다음에 소개할 locate를 더 많이 사용한다. find . -name *.log : 현재 디렉토리(.)를 기준으로 모든 log확장자를 가진 파일 검색 find / -name *.log : 루트디렉토리(/)를 기준으로 모든 log확장자를 가진 파일 검색 find ~ -name *.log : 자신의 홈디렉토리(~)부터 모든 log확장자를 가진 파일 검색 find . -type f -name tec.. 2021. 5. 4.
[리눅스 기초]프로세스 확인하기(ps, top) -리눅스의 프로세스를 확인하는 명령어와 옵션들을 살펴본다. -생활코딩의 리눅스 강의를 바탕으로 학습 및 보충학습하였다. -ubuntu 12.10을 사용하였다. 실행중인 프로그램을 '프로세스'라고 한다. 프로세스를 보기 위한 명령어는 ps와 top가 있다. ps와 top 명령어의 차이가 어떤건지 헷깔렸는데 KLDP에 잘 정리가 된 댓글이 있었다.(출처는 글 마지막에 명시) top : 그때 그때의 cpu 사용률. ps : 프로세스 전체 사용시간 동안의 cpu 사용률 top은 모니터링 툴, ps 는 스냅샷이라고 비유했다. 또 다른 블로그들에 공통적으로 정리된 차이점이 있는데, ps는 ps한 시점에 proc에서 검색한 cpu 사용량 top은 proc에서 일정 주기로 합산해 cpu 사용율 출력 라고 정리되어 있다.. 2021. 5. 3.