zzang9ha의 등록된 링크

키자드에 등록된 총 1357개의 포스트를 확인하실 수 있습니다.

Naver Blog

[GitHub] - 프로젝트 구조 확인 도구 OctoTree(크롬 확장 프로그램)

OctoTreeGitHub에서 소스코드를 확인하려면, 일일이 폴더를 들어가서 확인해야 하는 번거로움이 있습니다.하지만 최근에 OctoTree 라는 크롬 확장 프로그램을 알게되었고, 정말 정말 유용한 것 같아서 공유합니다.https://chrome.google.com/webstore/detail/octotree-github-code-tree/bkhaagjahfmjljalopjnoealnfndnagc위 사이트로 들어가서 Chrome에 추가하면 끝.저 확장 프로그램을 추가하고 깃허브에 들어가면 프로젝트의 전체 구조를 한눈에 확인할 수 있는 탭이 생기게됩니다.깃허브 좌측에 Octotree 라는 작은 탭이 생기고, 클릭하면/...위와 같이 프로젝트의 전체적인 구조를 한눈에 확인 할 수 있습니다.

Naver Blog

[GitHub] - 크롬 확장 프로그램(GitHub Isometric Contributions) 커밋내역 확인

GitHub Isometric ContributionsGitHub Isometric Contributions 프로그램은, 깃허브에서 Commit 내역을 3D 형식으로 보여주는 확장 프로그램입니다.https://chrome.google.com/webstore/detail/github-isometric-contribu/mjoedlfflcchnleknnceiplgaeoegien/related위 사이트에서 크롬 확장 프로그램을 추가해주면 끝!그 후 깃허브로 들어가면 바로 변경이 됩니다.GitHub 프로필에서 위와 같이 Commit 내역을 3D 형식으로 보여주고, 기존과 같이 보려면 2D 를클릭하시면 됩니다.Contributions총 Commit 수와 이번주 Commit 수, 하루에 가장 많이 한 Commit 수 등을 보여주며,Streaks가장 오랫동안 유지된 일일커밋 & 현재 유.......

Naver Blog

2주차: 자바 데이터 타입, 변수 그리고 배열

https://github.com/whiteship/live-study/issues/2목표- 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다학습할 것 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var프리미티브 타입 종류와 값의 범위 그리고 기본 값프리미티브 타입(기본형 타입: Primitive type) 기본 자료형, 원시 자료형이라고 불리는 프리미티브 타입은 총 8개가 있다. 기본값이 있기 때문에 Null이 존재하지 않는다.......

Naver Blog

[Java/자바] - Scanner.nextInt() 메서드 스캐너 입력 오류(개행문자)

Scanner - nextInt() 입력 후 nextLine() 입력 받을 때 오류Java에서 Scanner 클래스의 nextInt() 메서드를 사용 후 nextLine() 메서드를 사용하면, 정상적으로 입력이 되지 않는다.nextInt() 메서드는 입력의 가장 마지막 개행문자(엔터)를 제거하지 않는다.즉, 개행문자(엔터) 전 까지만 숫자로 입력을 받는데, 이어서 nextLine() 메서드를 사용 해 입력을 받을 경우 이전에 제거되지 않는 개행문자(엔터)가 존재하므로, 정상적으로 입력이 안된다.예제를 통해 위의 문제점을 알아보고, 해결 방법을 알아보자.Scanner.nextInt() 문제위의 출력문에서 10을 입력했지만, 문자 입력은 건너띄고 바로 출력이 되었다.nextInt() 메서드를.......

Naver Blog

인텔리제이(IntelliJ) - 필수 단축키 활용하기! 꿀팁

인텔리제이(IntelliJ) - 필수 단축키안녕하세요! 인텔리제이를 사용해본지도 한달이 넘었네요 !확실히 유료 IDE인 만큼 지원해주는 기능, 단축키들도 정말 많고 정말 편리한 기능들이 많은 것 같습니다.저는 강의를 보면서 많은 단축키를 익힌 편이라, 이클립스에는 없는 유용한 단축키들이 많은 것 같습니다!저번 이클립스 단축키 정리에 이어 이번에는 인텔리제이에서 많이 사용하고, 유용한 단축키들 정리해보겠습니다 !(중요하고, 자주 사용하는 유용한 단축키는 빨간색으로 표시했습니다.) Ctrl + Shift + Enter현재 구문 완성 은 정말 정말 많이 사용하는 필수 단축키 입니다.for문, if문 등의 루프문 끝에서 Ctrl + Shift + E.......

Naver Blog

[Java/자바] - (Map) HashMap vs LinkedHashMap vs TreeMap

Collections(Map) - HashMap(LinkedHashMap) , Hashtable , TreeMapMap 인터페이스는 키와 값을 하나의 쌍으로 저장하는 방식인 Key-Value 형식으로 데이터를 저장합니다. 여기서 키(Key)는 실제 값(Value)를 찾기 위한 이름의 역할을 합니다.Map 컬렉션 클래스 특징 요소(Element)의 저장 순서를 유지하지 않습니다. 키(Key)는 중복을 허용하지 않지만, 값(Value)는 중복을 허용합니다.Map 컬렉션 클래스 종류 HashMap<K, V> Hashtable<K, V> TreeMap<K, V>※ Hashtable 클래스는 JDK 1.0부터 사용해 온 HashMap 클래스와 동일한 동작을 하는 클래스입니다.현재는 호환성을 위해 남아있는 클래.......

Naver Blog

3주차: 연산자

https://github.com/whiteship/live-study/issues/2목표- 자바(Java)가 제공하는 다양한 연산자를 학습하세요.학습할 것 산술 연산자 비트 연산자 관계 연산자 논리 연산자 instanceof assignment(=) 연산자 화살표(->) 연산자 3항 연산자 연산자 우선 순위 (optional) Java 13. switch 연산자산술 연산자 수학적 계산을 위해 쓰이는 연산자 두 개의 피 연산자를 가지는 이항 연산자 산술 연산자의 종류비트 연산자 데이터를 비트(bit) 단위로 연산 0과 1로 표현이 가능한 정수 타입만 비트 연산이 가능Left Shift 연산(<<)x << y 형식으로 연산자를 사용하고, x의 비트를 왼.......

Naver Blog

[Java/자바] - 달력, 날짜 유효성 검사(Validation Date)

Java - 날짜 유효성 검사Java에서 날짜, 시간과 관련된 클래스나 함수들이 많이 존재하는데 아직 헷갈리는 것도 많고, 사용 못해본 것들도 많다.이번에 날짜와 관련해서 유효성 검사를 할 필요가 있어서 찾아보다가 SimpleDateFormat 클래스에 관련 메서드들이 존재해서 정리해보고자 한다.날짜 형식의 문자열을 입력받고, 입력받은 문자열이 유효한 날짜인지 검사하는 경우가 종종 있다. 예를들자면 .. yyyyMMddHHmmss(연/월/일/시/분/초) - yyyy : year - MM : month - dd : day - HH : hour - mm : minute - ss : second위와 같은 형식으로 입력을 받고자 할 때, 입력받은 문자열이 유효하지 않을 수 있는데,예를 들면 월(MM)은 1월.......

Naver Blog

2020년 11월 회고록

2020년 11월 회고록딱히 별다른일이 없던 11월, 뭐했는지 모를만큼 빠르게 지나간 것 같다.별로 쓸 내용이 없을것 같긴 하지만, 정말 큰 환경의 변화가 있었고 그 외에 기억나는만큼 써봐야겠다.스터디 & 공부최근 코로나 확진자가 급격히 증가하면서, 엄청 이슈가 되고있고 그에따라 또다시 모각코를 잠시 중단하게 되었다.8월~9월 두 달 가량 쉬고, 10월부터 다시 진행되었는데 또다시 중단하게 되었다.또한 최근에는 주말에 회사 스터디도 나가게 되면서 아마 모각코는 중단해야 할 것 같다.서울와서 처음 해봤고, 이끌어본 스터디는 쉽지 않았다. 어떻게 이끌어야 할지, 스터디 분위기나 환경 등등에서 어려움이 있었지만, 좋은분.......

Naver Blog

[Linux] - 하드 링크(hard link), 심볼릭 링크(symbolic Link)

하드 링크(hard link), 심볼릭 링크(hymbolic Link)리눅스에서 하드링크와 심볼릭 링크란 무엇일까?Windows 운영체제에서의 바로가기 링크와 비슷한 개념이다.바로가기 아이콘을 클릭하면 실제 원본 파일을 실행하는 것처럼 심볼릭 링크도 원본 파일을 가리키는 '링크' 이다.하지만 리눅스에서는 '하드 링크' 와 '소프트 링크' 로 종류가 나뉜다는 차이점이 있다.하드 링크(hard link)하드 링크는 원본 파일과 동일한 inode를 가지는 링크이다. 이 뜻은, 원본 파일이 두 개의 파일(원본 파일, 하드 링크 파일)로 서로 다른 이름으로 존재하지만 같은 파일 정보를 가지게 되는 것이다.따라서 원본 파일.......

Naver Blog

처음 맛보는 참치 ! 신림 맛집 거해참치

신림 - 거해참치안녕하세요 !이번에 처음으로 참치를 먹어봤어요~평소에 회, 해산물을 별로 안좋아해서 ..거의 먹지를 않았는데 참치는 뭔가 먹어보고싶어서이번에 도전해봤습니다 !다녀온 곳은 신림역 근처에 있는 "거해참치"리뷰 고고~거해참치 위치서울특별시 관악구 남부순환로185길 5 1층 02-875-8934매일 16:00 ~ 01:00신림역 8번출구에서 200m 정도 위치에 있습니당~삐까빤짝 하네유~참치 무한리필!저는 어떤거 시키는지도 몰랐는데 ..보통 1인당 참치회 시키면 무한리필이라고 ...거해참치 분위기1인석인가요?주방 앞에서 식사할 수 있는 테이블도 있어용~의자 아래 있는 조명이 은은하이 이쁩니다.가게는.......

Naver Blog

IE(Outlook) - 조건부 주석(Conditional Comments)

Internet Explorer 조건부 주석(Conditional Comments)최근 개발을 진행하면서 MS Outlook(아웃룩) 에서는 CSS에서 width 속성이 먹히지가 않아서 조건부 주석을 통해 처리를 해주어야 했는데, 이 과정에서 조건부 주석을 처음 알게되었다.조건부 주석은 어떠한 조건이 충족되지 않으면 주석처리가 되고, 조건이 충족되면 주석안의 내용이 브라우저에 렌더링 되는 것을 말한다. 주로 크로스브라우징을 위해 많이 사용되는 방법으로 IE 버전을 구분하는 용도로 사용한다.IE 10 미만에서만 작동하는 조건문이다. 조건을 만족하지 않으면 무시되는 코드로, 크롬 등의 다른 브라우저에서는 해당 코드를 주석으로 인식하여 무시해버린다.아래와.......

Naver Blog

1주차: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가

https://github.com/whiteship/live-study/issues/1목표 - 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기.학습할 것 JVM이란 무엇인가? 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가? JIT 컴파일러란 무엇이며 어떻게 동작하는가? JVM 구성 요소 JDK와 JRE의 차이JVM이란 무엇인가?JVM(Java Virtual Machine)은 자바 가상 머신으로, 다른 프로그램을 실행시키는 것이 목적인 프로그램이다. JVM은 서로 다른 운영체제(윈도우, 리눅스 등)이더라도 JVM만 설치되어 있으면 동일한 자바 프로그램을 동작할 수 있게 만든다는 특징이 있다."Write Once Run Anywhere" 즉, 한 번만 프로.......

Naver Blog

[Docker/도커] - Error response from daemon

Docker를 처음 설치하고, hello-world 이미지를 실행하려 했으나 아래와 같은 오류가 발생함.docker: Error response from daemon: ~해결방법 1. resolv.conf 파일 수정$ sudo vi /etc/resolv.conf 로 들어간 뒤 nameserver를 8.8.8.8 로 수정한다.(vi 편집기 사용법은 i를 통해 Insert모드로 들어간 뒤, 수정하고 esc + : 를 누른 후 wq(저장후종료)를 실행하면 된다.)위와 같이 수정한 후, hello-world를 run하면 정상적으로 실행이 된다.해결방법 2. 아래 사이트 참고..!https://wings2pc.tistory.com/entry/%EB%8F%84%EC%BB%A4Docker-Error-response-from-daemon-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95

Naver Blog

Docker 아키텍처 & hello-world 이미지 구동(VM, Vagrant)

Docker 아키텍처 & hello-world 실행(Virtual Machine , Vagrant)Docker는 애플리케이션을 신속하게 구축하고, 배포할 수 있는 소프트웨어 플랫폼이다.Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 Packaging하며, 이 컨테이너는 라이브러리, 시스템 도구, 코드 등 소프트웨어를 실행하기 위한 필요한 모든 것들이 포함되어 있다.도커의 아키텍처도커는 소프트웨어 개발자가 컨테이너를 이용해 개발 생산성을 높일 수 있도록 컨테이너를 Build(작성), Ship(이동), Run(실행) 할 수 있는 기능을 지원하는데, 이러한 기능을 제공하는 도커는 도커 데몬 서버와 클라이언트인 도커 커맨드, 그리고 이미지의 보관소인 레지스트리로.......

Naver Blog

[구디 모각코] 열한번째 스터디 후기

열한번째 모각코~저번주에 이어 이번주도 도커를 공부했는데, 일주일만이라 까먹은것도 있었지만 그래도 저번주보단 많이 알게된 것 같다.도커의 아키텍처 나 개념, 이미지 등을 다운 받아서 실습을 해보았고, 신기하기도 했다.하지만 아직 의문점은 왜 도커가 그렇게나 좋은 소프트웨어인지 감이 잘 안온다..물론 개발 환경을 처음부터 셋팅하기에는 시간도 오래걸리고, 오류날 부분도 많은데.. 이러한 부분에 있어서의 장점이라고 어렴풋이 알고있지 정확히 뭐가 좋은지는 잘 모르겠다.혹~~~시나 기회가 되면 나중에 실무에서도 사용해보고 싶다..최근 스터디원 두 분이 빠지면서, 인원 결원이 생겨서 한두분 정도 모집을 하려고 했.......

Naver Blog

[IntelliJ/인텔리제이] - Progress Bar 꾸미기(Nyan Progress Bar)

인텔리제이 Progress Bar 꾸미기IDE를 사용하다 보면 빌드나 컴파일, 프로젝트 실행 등 대기시간에 Progress Bar가 뜨게 되는데,기다리는 지루한 시간동안 Progress Bar를 꾸며서 지루함을 없애보자.File > Settings ... > Plugins 에 들어간다.(윈도우 기준 Ctrl + Alt + S)Progress Bar 검색하면 위와 같이 여러 Progress Bar가 나오는데 다운받을 아이콘을 클릭한 후 우측에 Install을 누르면 된다.나는 귀여운 고양이인 Nyan을 다운받았다.다운로드가 끝나면 IDE를 재실행하라고 바뀌고, 클릭해서 재실행해주면 된다.다시 실행하면 저렇게 귀여운 고양이가 나타난다~

Naver Blog

[IntelliJ, 인텔리제이] - GitHub,깃허브 연동(README 파일)

IntelliJ - GitHub 연동하기Git 설정하기.File > Settings 클릭(Window 기준 Ctrl + Alt + S)그 후 Version Control > Git 에서 설치한 Git의 실행 파일 경로를 지정하고, 우측 Test 버튼을 클릭한다.테스트가 성공하면 아래에 Git version이 출력된다.(Git version is 2.26.0)GitHub 계정 연동Git 바로 아래 있는 GitHub를 클릭하고, 계정을 설정해주면 된다.(미리 계정 등록해서 GitHub 계정이 연동되어 있음...)IntelliJ - GitHub 연동1) 프로젝트 명으로 GitHub에 새로운 Repo 생성하기. VCS > Import into Version Control > Share Project on GitHub 클릭위와 같은 창이 나오는데, 설명문을 적을거면 Descri.......

Naver Blog

[MySQL] - 데이터 삭제(DELETE, TRUNCATE)

테이블 데이터 삭제 - DELETE , TRUNCATE테이블에서 데이터를 삭제할 때 주로 사용하는 명령어는 DELETE 이다. 간단한 문법은 아래와 같다..최근 테이블에 데이터가 100만건 정도 존재하는데, 이 중 90만건을 DELETE로 제거하니 ...10분 조금 넘는 시간이 소요됐다... 컬럼 하나 추가하는데도 5분 정도 걸렸었다 ..위와 같은 속도를 향상할 방법을 찾아보았는데, 다음과 같이 여러 방법이 존재했다.여러가지 방법 중 TRUNCATE 데이터에 대해 알아보자.테스트를 위해 DELETETEST 테이블을 생성하자. 테스트를 위해 데이터를 100만 개 정도 삽입했다. (재귀 INSERT)각 테이블에 존재하는 DT(DATE) 별 데이터 갯수는 다음과 같다........

Naver Blog

구디역맛집, 감성술집 - 토라

구디역맛집 - 토라안녕하세요! 이번에 구로디지털단지역 근처에 있는 분위기 있는 맛집"토라" 음식점에 다녀왔습니당 ^_^외관에서 보기에도 식당이 고급지고, 분위기도 좋아서 추천합니당~구디역맛집 - 토라 위치서울특별시 구로구 도림천로 448 예성유토피아 201동 101호 0507-1388-7982평일 17:00 ~ 00:00금요일 17:00 ~ 01:00 (불금 ㅎㅎ..)토요일 17:00 ~ 00:00일요일 휴무구로디지털단지역 3번출구에서 100m정도 걸어오면 있어서 방문하기도 좋아욤.입구부터 간판이 많이 보입니다잉토라시그니처1. 삼단모듬숯불구이 - 45,000원2. 정통숯불꼬치구이 - 16,000원위 두 메뉴가 시그니처 메뉴라고 합니당~ 참고참고.......

Naver Blog

[구디 모각코] 아홉번째 스터디 후기

아홉번째 모각코 이번주도 모각코를 진행했습니다~벌써 아홉번째네요! 벌써 11월이고 .......총 네분이서 하고, 두 분은 일찍가시고 다른 한분과 끝까지 진행했네요~그동안 모각코에서도 자바 & 스프링 위주로 공부를 했었는데 ...모각코 시간 만큼은 3~4시간이지만 다른 분야를 공부를 해보고 싶어서 정한 분야! 도커 & 쿠버네티스사실 저번에 이벤트로 위에 책이 당첨되어서 집에 고스란히 모셔두었는데... 드디어 조금조금씩 보게 되네요~그동안 공부해보고 싶었는데 시간이 나질 않아서,, 모각코 시간만이라도 공부를 해보고싶네용계속 동일한 공부를 하다보니 금방 지칠거 같기도 하고, 분위기 전환겸 시작하게 되.......

Naver Blog

[인프런] 스프링 핵심 원리 기본편 이해 - 빈 생명주기 콜백

본 포스팅은 인프런 김영한 강사님의 스프링 핵심 원리 - 기본편강의를 정리한 내용입니다!www.inflearn.com/course/스프링-핵심-원리-기본편스프링 빈(Bean) 생명주기 콜백데이터베이스 커넥션 풀이나 네트워크 소켓처럼 애플리케이션이 시작될 때 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하기 위해서는 객체의 초기화와 종료 작업이 필요하다.스프링에서는 이러한 초기화 및 종료 작업을 어떻게 진행하는지 알아보자.외부 네트워크에 미리 연결하는 객체를 생성한다고 가정해보자.아래 NetworkClient 클래스는 애플리케이션 시작 지점에 connect() 메서드를 호출해서 연결을 맺고,애플리케.......

Naver Blog

2020년 10월 회고록

하루지난 10월의 회고록...10월은 올해 가장 바쁜 달 중 한달이었고 배운것도, 느낀것도 많은 한달이었던 것 같다.9월 추석지나 10월9일 한글날까지는 시간이 정말 빠르게 지나갔는데, 중순부터는 빠르게 지나간 것 같지가 않다.그래도 벌써 11월이고 2020년도 이제 2달밖에 남지 않았다.스터디 & 공부모각코코로나로 인한 거리두기가 1단계로 낮아지면서 그동안 중단된 모각코를 10월중순?부터 진행했다. 딱히 토요일에 약속이 없어서 모든 모각코에 다 참여를 했었고, 어제부터는 도커 & 쿠버네티스에 대해 공부하고 있다.그동안 모각코에서도 자바나 스프링 등으로 공부를 했었는데 뭔가 색다른걸 공부하고 싶었다.비록 3.......

Naver Blog

관악 봉천동곱창 - 행수곱창

봉천동 맛집 - 행수곱창안녕하세요~어릴때는 곱창이 너무 질겨서 별로였는데...요샌 곱창만한게 없네요 ㅎㅎ..친구 생일이기도 하고 오랜만에 만나서곱쏘(곱창+쏘주) 땡기고 왔네용~행수곱창 위치서울특별시 관악구 남부순환로 1726 1층 0507-1379-7818영업: 16:00 ~ 03:00봉천역 2번출구에서 50m도 안가서 바로있어요.골목가에 바로 있어서 찾기 쉬워요!생긴지 얼마 안되었다고 하더라구요!옆에 조그마한 주차장이 있습니다!행수곱창 분위기6~7테이블 정도 있었네요.엄청 크진 않았어요~처음 방문했을때는 거의 테이블이 꽉차있었어서...먹을수있나? 생각도 함.. ㅎㅎ..ㅋㅋㅋ벽에 붙여있던 벽지...사장님의 유쾌함이 드러납.......

Naver Blog

[자바스크립트] - jQuery Effects 콜백 함수

jQuery Effects 콜백 함수 - 효과자바스크립트에서 콜백 함수는 현재 효과가 완전히 끝난 뒤에 실행이 됩니다.자바스크립트는 문장들을 차례대로 실행하는데, 어떠한 효과를 추가하고자 할 때, 이 효과가 끝나기 전에 다음 라인의 코드가 실행되는 것을 예방하기 위해 콜백(CallBack) 함수를 사용합니다.아래 예제에서 alert() 함수를 통해 알아보겠습니다.위 코드에서 div를 hide 한 뒤 alert()가 실행되기를 원했지만,실제로는 hide가 되기전에 alert()가 먼저 뜬 걸 볼 수 있습니다.위와 같은 상황을 예방하기 위해 콜백 함수를 사용합니다. => 사용자가 원하는 행동을 먼저 취하고, 그 후의 행동을 취하도록 ..위에.......

Naver Blog

객체지향의 사실과 오해 - 리뷰

객체지향의 사실과 오해 - 역할, 책임, 협력 관점에서 본 객체지향이 책의 목차는 다음과 같다.01 / 협력하는 객체들의 공동체02 / 이상한 나라의 객체03 / 타입과 추상화04 / 역할, 책임, 협력05 / 책임과 메시지06 / 객체 지도07 / 함께 모으기부록 A / 추상화 기법부록 B / 참고 문헌이 책은 객체지향이란 무엇인가라는 원론적이면서도 다소 위험스러운 질문에 대한 나름대로 저자의 대답을 말하기 위해 쓰여졌다. 1) 객체지향으로 향하는 첫 걸음은 클래스가 아니라 객체를 바라보는 것에서 시작한다. 2) 객체지향으로 향하는 두 번째는 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 존재로 바라보는 것이다.......

Naver Blog

[구디 모각코] 열번째 스터디 후기

열번째 모각코 열번째 모각코입니다.어제 바로 글을 올렸어야했는데... 저녁에 약속이 있어서 이제야 쓰네용..이번주도 도커, 쿠버네티스만 공부하려고 했으나... 온라인 세미나(?) 하나 듣는게 있어서 전부 몰빵하진 못했네요..!한국 커뮤니티 데이 KCD..!원래는 오프라인으로 진행되는거 같은데, 이번에는 온라인으로 사전 등록을 받아서 진행했어요.무료 신청이고 5천원에 멀티USB충전기, 카드지갑을 주길래 바로 구매했습니다 !트랙이 2개로 나뉘어서 거의 4시간동안 강연이 진행되는데, 저는 중간중간 저에게 필요할 것 같은 강의들을 들었네요.주로 오픈소스 관련된 강의들...그리고 마지막 이벤트로 5명 뽑아서 젯브레인의 모든 IDE를.......

Naver Blog

[Git/Github] - 특정 브랜치만 Clone 하는 방법

Git / Github - 특정 브랜치(branch)만 Clone하기Git에서 특정 branch만 선택해서 Clone 하는 방법을 알아보도록 하겠습니다.그동안 Git에서 Clone을 하면 프로젝트가 다운이 되고, 잘 실행이 되었었는데...이번에 계속 Clone을 해도 분명 branch에는 코드가 존재하는데, Clone을 했을 때 아무런 코드도 존재하지 않았습니다...알고보니 Clone을 해서 master branch만 계속해서 받아서, 아무런 파일이 존재하지 않았던것...Clone 하려는 Repo의 default 브랜치가 master여서...계속해서 Clone을 떠도 빈 파일이 존재하는 삽질을 했던것 .....아래와 같이 특정 브랜치를 지정해서 Clone을 하면 됩니다!굳굳! https://www.slipp.ne.......

Naver Blog

[Java/자바] - JSON 데이터 다루기

JSONObject, JSONParser, JSONArrayJSON은 주로 클라이언트 <---> 서버 에서 데이터를 주고받을 때 사용하는 아래와 같은 데이터 형식입니다.Key , Value 쌍으로 값을 가지는 형식으로 되어있고, Java에서는 HashMap과 비슷한 형식입니다.자바에서 간단하게 JSON 데이터에 대해 다뤄보도록 하겠습니다.먼저 json-simple 디펜던시를 추가해 줍니다.(pom.xml)예제를 통해 살펴보겠습니다.JSONObjectJSON in JSONJSON to StringJSON 파싱JSONArray

Naver Blog

MySQL - 다중 Primary Key(PK) 기본키 설정

MySQL - 다중 PK 기본키 설정MySQL에서 다중 PK(Primary Key) 기본키를 설정해보도록 하겠습니다.PK(Primary Key)란?한 개 혹은 여러 개의 칼럼으로 테이블 내의 각 행들을 구별하기 위한 목적을 갖고있습니다.PK는 그 자체만으로 Unique 하지만, 만약 여러 개의 Column이 PK로 묶여있다면, 해당 값들의 조합이 Unique 합니다.PK는 NULL 값이 될 수 없고, Unique Key라는 특징을 갖게 됩니다.id를 PK로 가지는 test1 테이블과id, name을 PK로 가지는 test2 테이블을 생성해보도록 하겠습니다.테이블 생성PK, INDEX 확인 - SHOW INDEX FROM TABLE명id를 PK로 가지는 test1 테이블과 , id와 name을 PK로 가지는 test2 테이블이 생.......

Naver Blog

[인프런] 스프링 핵심 원리 기본편 이해 - 컴포넌트스캔 @ComponentScan

본 포스팅은 인프런 김영한 강사님의 스프링 핵심 원리 - 기본편강의를 정리한 내용입니다!www.inflearn.com/course/스프링-핵심-원리-기본편스프링 컴포넌트 스캔 @ComponentScan @ComponentScan : 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 기능 @Autowired : 의존관계를 자동으로 주입해주는 기능AutoAppConfig.java 컴포넌트 스캔을 사용하기 위해 @ComponentScan 을 설정 정보에 붙여준다. 기존의 AppConfig와는 다르게 @Bean으로 등록한 클래스가 하나도 없음. ※ 컴포넌트 스캔은 기존의 @Configuration 이 붙은 설정 정보도 자동으로 등록되기 때문에 기존에 만든 AppConfig 등의 설정 정보를 제외하기 위해 e.......

Naver Blog

[구디 모각코] 여덟번째 스터디 후기

모각코 스터디저번주에 이어 이번주도 모각코를 진행했습니다.벌써 여덟번째네요, 6월부터 진행했지만 중간중간 빠지고 한게 많았습니다.초창기부터 계시던분들도 계시고, 많이 바뀌신분들도 계시고 그러네욤..이번주는 총 네명이서 진행을 했습니당.오늘은 스프링 강의보고 정리하고 하느라 잡담은 거의 못했네요..... 죄송합니당요즘 뭔가 슬럼프가 올 것 같은 느낌이 들어서... 다음주부터는 자바 스프링이 아닌 도커, 쿠버네티스 쪽으로 공부해보려고 합니다!저번에 이벤트로 당첨된 책이 있어서, 모각코 시간만큼은 따른 공부를 해야 의욕이 조금 오를 것 같습니다! 구럼 이만!

Naver Blog

[인프런] 스프링 핵심 원리 기본편 이해 - 의존관계 자동 주입

본 포스팅은 인프런 김영한 강사님의 스프링 핵심 원리 - 기본편강의를 정리한 내용입니다!www.inflearn.com/course/스프링-핵심-원리-기본편스프링 다양한 의존관계 주입 방법 생성자 주입 Setter 주입 필드 주입 일반 메서드 주입생성자 주입 생성자를 통해 의존 관계를 주입 받는 방법 생성자 호출시점에 딱 1번 호출되는 것이 보장된다. 불변 , 필수 의존관계에 사용 ※ 생성자가 딱 1개 있으면 @Autowired를 생략해도 자동으로 주입이 된다.Setter 주입 Setter 함수를 의존관계를 주입하는 방법. 선택, 변경 가능성이 있는 의존관계에 사용 자바빈 프로퍼티(Getter, Setter...) 규약의 수정자 메서드 방식을.......

Naver Blog

[인프런] 스프링 핵심 원리 기본편 이해 - 의존관계 자동 주입(2)

본 포스팅은 인프런 김영한 강사님의 스프링 핵심 원리 - 기본편강의를 정리한 내용입니다!www.inflearn.com/course/스프링-핵심-원리-기본편롬복(Lombok)과 최신 트랜드기존 코드롬복을 사용한 간결한 코드롬복이 자바의 어노테이션 프로세서 라는 기능을 이용해 컴파일 시점에 생성자 코드를 자동으로 생성해준다.롬복(Lombok) 라이브러리 적용build.gradle 에 라이브러리 환경 추가File > Settings > Plugins 에서 lombok 검색 후 설치File > Settings > Annotation Processors 검색 후 Enable annotation processing 체크위 과정이 끝나면 롬복(Lombok) 라이브러리 설치는 끝나고 실제 테스트를 해보면 된다........

Naver Blog

[Java/자바] - final 키워드, 상수, 불변 객체

Java final - 상수, 불변 객체위키백과에서 설명하는 final 정의는 다음과 같다. - Java 언어에서, final 키워드는 엔티티를 한 번만 할당한다. - final 키워드는 Immutable / Read-Only 속성을 가진다.상수는 '값이 변하지 않는 수'를 의미한다. Java에서는 한번 그 값이 정해지면 이후로는 변경이 불가능한 변수도 상수라 한다.자바의 일반적인 상수변수를 선언할 때 그 앞에 final 이라는 키워드를 추가하면 그 변수는 '상수'가 된다. 그리고 다음 두 가지의 특징을 가진다. 값을 딱 한번만 할당할 수 있다. 한 번 할당된 값은 변경이 불가능하다.final 키워드는 클래스, 메서드, 필드 등 다방면으로 사.......

Naver Blog

IntelliJ/인텔리제이 - 글자크기, Console창 글자 크기 변경

IntelliJ / 인텔리제이 - 글자 크기, Console 크기 변경하기평소 이클립스를 사용하다가 인텔리제이를 사용해보니 단축키가 다른것이 많아서 적응하기가 약간 힘들 것 같습니다.이클립스에서는 Ctrl + 마우스 휠을 통해 글자 크기를 수정할 수 있는데, 인텔리제이에서는 별도의 설정이 필요합니다.Ctrl + 마우스 휠을 통해 글자 크기 설정하기인텔리J에서는 '설정(Setting)' 부분에서 설정을 해주어야 합니다.File - Settings... 로 들어갑니다. (단축키는 Ctrl + Alt + S)그 후 Editor > General 에서 Change font size with Ctrl+Mouse Wheel 을 체크하면Ctrl + 마우스 휠 을 통해 인텔리제이에서 글자 크기를 조절할.......

Naver Blog

[인텔리제이/IntelliJ] - 자동 저장 끄기, 저장안된 파일 *표시

인텔리제이 자동 저장 끄기 Auto Save OffFile > Settings 에서 Apperance & Behavior > System Settings 에 들어간다.그 후 Autosave 에서 다음 내용을 체크 해제한다.Save files if the IDE is idle for ~ secondsSave files when switching to a different applicationBack up files before saving.저장하지 않은 파일 * 표시기존의 이클립스와는 다르게 인텔리제이에서는 저장이 됐는지 안됐는지 판단을 할 수 없었다.따라서 다음처럼 * 표시를 통해 저장이 되었는지, 안되었는지 확인할 수 있다.File > Settings 에서 Editor > General > Editor Tabs 에 들어간다.Mark modified (*) 에 체크를 한다.그.......

Naver Blog

[인프런] 스프링 핵심 원리 기본편 이해 - 스프링 컨테이너와 스프링 빈

본 포스팅은 인프런 김영한 강사님의 스프링 핵심 원리 - 기본편강의를 정리한 내용입니다!www.inflearn.com/course/스프링-핵심-원리-기본편스프링 컨테이너의 생성 과정1. 스프링 컨테이너 생성 스프링 컨테이너를 생성할 때는 구성(설정) 정보를 지정해주어야 한다. 현재 AppConfig.class 를 구성(설정) 정보로 설정2. 스프링 빈 등록소스에서 @Bean 어노테이션을 설정한 정보들에 대해 스프링 컨테이너에 빈을 등록한다.빈 이름 빈 이름은 메서드 이름을 사용한다. 빈 이름을 직접 부여할 수 있다. @Bean(name="memberService")※ 빈 이름은 항상 다른 이름을 부여해야 한다. 같은 이름을 부여하면 다른 빈.......

Naver Blog

[구디 모각코] 일곱번째 스터디 후기

안녕하세요~오랜만에 쓰는 모각코 회고 입니다!여섯번째가 8월 9일에 작성했었는데.. 코로나 때문에 2달만에 진행을 했네요.그동안 찌푸둥 하고 효율성이 떨어졌었는데, 확실히 여러 사람들과 함께 모여서 카페에서 스터디를 하니,혼자하는 것보다 효율은 좋은 것 같습니다.그 이전에 나가시는분이 계셔서 두 분? 세 분?을 구해서 진행을 했는데, 오늘은 총 여섯분이 나오셨습니다 !오늘 스터디는 외주 작업이 좀 있어서 진행하고, 알고리즘 좀 하니 4시가 후딱 넘어가버렸숩니다...음 오늘 알고리즘 문제 간단히 회고해보면... n , width를 매개변수로 받고 n * n 행렬을 만들고,,행과 열이 같은곳에서 좌 우만큼 width를 aster.......

Naver Blog

[인프런] 스프링 핵심 원리 기본편 이해 - BeanFactory, ApplicationContext

본 포스팅은 인프런 김영한 강사님의 스프링 핵심 원리 - 기본편강의를 정리한 내용입니다!www.inflearn.com/course/스프링-핵심-원리-기본편BeanFactory 와 ApplicationContextBeanFactory 스프링 컨테이너의 최상위 인터페이스이다. 스프링 빈을 관리하고 조회하는 역할 getBean() 메서드를 제공한다.ApplicationContext BeanFactory 기능을 모두 상속받아서 제공한다. 빈을 관리하고 조회하는 BeanFactory 의 기능 외에도 부가적인 기능이 많이 필요하다. MessageSource 메시지소스를 활용한 국제화 기능.(한국 -> 한국어, 영어 -> 영어로 출력) EnvironmentCapable 로컬, 개발, 운영 등을 구분해서 처리함.......

Naver Blog

신림 닭갈비 맛집 - 박재성의 메밀숯불닭갈비

신림 맛집 - 박재성의 메밀숯불닭갈비안녕하세요 !오랜만에 맛집 다녀왔습니다~~~~~신림에 존재하는 이름도 긴~ 숯불 닭갈비집박재성의 메밀숯불닭갈비 !!!맛있었어요 ㅎㅎ 한가지 아쉬운점 빼면 ㅠㅠㅠ아쉬운점은 리뷰에서 보시죵~박재성의 메밀숯불닭갈비 위치서울특별시 관악구 신원로 40-16 1층 02-887-1236매일 16:00 ~ 24:00 입니다!근처에 산책하기 좋은 도림천이 있어용 ~7시쯤 갔는데... 모야 사람이 왜케 많죠????사람이 꽉차서 예약했는데도 웨이팅 시간이 있었어요!디자인이나 인테리어도 깔끔하고 이뻤어요.요런 문구 너무 좋아요~소중한 당신은 아니었지만 ...내부 구조도 약간 신기하게 되어있습니다 !.......

Naver Blog

[인프런] 스프링 핵심 원리 기본편 이해 - 싱글톤 컨테이너

본 포스팅은 인프런 김영한 강사님의 스프링 핵심 원리 - 기본편강의를 정리한 내용입니다!www.inflearn.com/course/스프링-핵심-원리-기본편웹 애플리케이션과 싱글톤 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 웹 애플리케이션 => 보통 여러 고객이 동시에 요청(Request)을 한다. 기존에 생성한 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때마다 객체를 새로 생성한다. 고객 트래픽이 초당 100일경우 => 초당 100개의 객체가 생성되고 소멸된다 ==> 메모리 낭비가 심하다! => 객체가 딱 1개만 생성되고, 공유하도록 설계하면 해결이 된다(싱글톤 패턴)싱.......

Naver Blog

[인프런] 스프링 핵심 원리 기본편 이해 - @Configuration과 싱글톤

본 포스팅은 인프런 김영한 강사님의 스프링 핵심 원리 - 기본편강의를 정리한 내용입니다!www.inflearn.com/course/스프링-핵심-원리-기본편@Configuration과 싱글톤AppConfig 클래스 코드 memberService() 메서드와 orderService() 메서드에서 각각 memberRepository() 메서드를 호출한다. memberRepository() 메서드는 MemoryMemberRepository() 를 호출한다. MemoryMemberRepository() 메서드는 두 번 호출되어서 싱글톤이 깨지는것 처럼 보이는데, 스프링 컨테이너는 어떻게 해결할까?직접 테스트를 해보자.MemberServiceImplOrderServiceImpl테스트를 위해 MemberServiceImpl , OrderServiceImpl 클래스에 MemberRepository.......

Naver Blog

Spring CRUD 게시판 만들기 - 1. 소개 & 개발 환경

Spring CRUD 게시판 만들기 - 1. 소개 & 개발 환경안녕하세요! 앞으로 스프링을 통해 간단한 CRUD 게시판(생성, 조회, 수정, 삭제)을 구현해보도록 하겠습니다.기존에 학습한 내용을 정리하면서 복습할 겸, IntelliJ IDE에 익숙해질 겸, 겸사겸사 해서 정리를 해보도록 하겠습니다!모든 예제는 코드로 배우는 스프링 웹 프로젝트 교재를 참고하여 구현하며, 개발 환경은 다음과 같습니다.원래 교재에서는 Eclipse를 사용하지만, 저의 목적은 IntelliJ에도 익숙해지기 위해 활용하는 것으로 Eclipse를 사용해도 무방합니다.내용이 방대해서 설치하는 부분, 내용 설명 부분 등등의 생략이 많을 수 있습니다.혹시 중간에 막히시면 질.......

Naver Blog

인텔리J(IntelliJ) - Auto Import / 이클립스 Ctrl + Shift + O

Auto Import이클립스에서는 Ctrl + Shift + O 단축키를 누르면 클래스에서 필요한 모든 라이브러리들이 자동으로 import가 되었었다.하지만 인텔리제이에는 추가 설정을 통해 코드를 작성하는 시점에서 바로바로 import 해주는 좋은 기능이 있다!Files > Setting (Ctrl + Alt + S) 를 통해 설정에 들어간 후 아래 두가지를 체크해준다.Add unambiguous imports on the flyOptimize imports on the flyOptimize imports on the fly 옵션은, 코드를 작성할때 자동으로 패키지 import문을 삽입 및 삭제해주는 옵션이다.필요한 패키지가 있으면 자동으로 삽입을 해주고, 불필요한 패키지는 자동으로 삭제해주는 엄청 편리한 기능이다!.......

Naver Blog

[인프런] 스프링 핵심 원리 기본편 이해1 - 예제 만들기

본 포스팅은 인프런 김영한 강사님의 스프링 핵심 원리 - 기본편강의를 정리한 내용입니다!www.inflearn.com/course/스프링-핵심-원리-기본편개발 설정 및 환경 Gradle Project , Spring Boot: 2.3.4, Java 11, IntelliJ비즈니스 요구사항과 설계 회원 회원을 가입하고 조회할 수 있다. 회원은 일반, VIP 두 가지로 나뉜다. 회원 데이터는 자체 DB 혹은 외부 시스템과 연동할 수 있다. 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원 할인회원 도메인 설계 회원 도메인 협력 관계회원 클래스 다이어그램회원 도메인 개발.......

Naver Blog

[인프런] 스프링 핵심 원리 기본편 이해2 - 객체 지향 원리 적용

본 포스팅은 인프런 김영한 강사님의 스프링 핵심 원리 - 기본편강의를 정리한 내용입니다!www.inflearn.com/course/스프링-핵심-원리-기본편개발 설정 및 환경 Gradle Project , Spring Boot: 2.3.4, Java 11, IntelliJ새로운 할인 정책 개발기존에 할인은 VIP일 경우 1000원 FixDiscountPolicy 정책이었으나, 새로운 요구사항이 발생했다.좀 더 합리적인 주문 금액당 할인하는 정률% 할인으로 변경 RateDiscountPolicy RateDiscountPolicy 코드RateDiscountPolicy 테스트 코드 작성할인정책을 추가하고 테스트까지 완료했으나, 문제점이 있다.새로운 할인 정책 적용과 문제점할인 정책을 변경하려면 클라이언트인 OrderServiceImpl.......

Naver Blog

구로 안경 아비드안경콘택트(대림점)

안녕하세요 !이번에 구로 안경점 - 아비드안경콘택트(대림점)에 다녀왔습니당..라식을 했는데.. 하루종일 모니터를 봐야해서눈이 좀 건조해서 이번에 다시 안경을 맞췄습니당~서울특별시 구로구 도림도93 1층 아비드안경아비드안경콘택트 대림점위치는 위와 같습니다!대림역 1번출구에서 200m 근처에 있습니다~ 02-859-3328평일 10:00 ~ 21:00공휴일 10:00 ~ 20:00위와 같이 큰 나무.. 두개 사이에 있어요~구로 안경점, 아비드안경 콘택트재난지원금(?) 사용 가능하고,, 사은품도 증정합니다 !매장 내에도 저렴하고 가성비좋은 제품들이 많이있어요 !!!!!안경테가 진짜 너무너무 많아서 ...고르는거도 힘들었습니당 ㅋㅋ고급 브랜.......

Naver Blog

[인프런] 스프링 핵심 원리 기본편 이해2 - 객체 지향 원리 적용(2)

본 포스팅은 인프런 김영한 강사님의 스프링 핵심 원리 - 기본편강의를 정리한 내용입니다!www.inflearn.com/course/스프링-핵심-원리-기본편스프링으로 전환 AppConfig에 설정을 구성한다는 뜻인 @Configuration 을 붙여준다. 각 메서드에 @Bean을 붙여준다. @Bean 은 스프링 컨테이너에 스프링 빈으로 등록한다는 설정.MemberApp에 스프링 컨테이너 적용OrderApp에 스프링 컨테이너 적용 두 코드의 실행은 기존 결과와 동일하다.스프링 컨테이너 ApplicationContext 를 스프링 컨테이너라고 한다. 기존에는 개발자가 AppConfig 를 통해 직접 객체를 생성한 후 DI를 했지만, 스프링은 컨테이너를 통해 사용한다. 스.......

Naver Blog

[오라클/Oracle] - 비밀번호 만료 "the password has expired"

오늘 오라클에서 DB를 연결하려고 하니 위와 같이 비밀번호가 만료되었다는 오류가 발생했습니다.ORA-28001: the password has expired... - 'the password has expired'*Cause: The user's account has expired and the password needs to be changed ...오류 내용을 보니 비밀번호가 만료되었고, 변경해야 한다는 오류입니다.저는 오라클 11g 버전을 사용하고 있는데, 이 버전이 나왔을떄 사용자의 기본 프로필이 180일이 지나면 비밀번호가 만료 되도록 변경이 되었다고 합니다...따라서 비밀번호를 변경해주어야 합니다.SQL Plus에 들어가서 다음 명령어를 통해 비밀번호를 변경해주면 됩니다.비밀번호를 변경하.......

Naver Blog

[우아한테크세미나] 리팩토링 정리 (by 자바지기 박재성님)

[우아한테크세미나] 190425 TDD 리팩토링 by 자바지기 박재성님https://youtu.be/bIeqAlmNRrA안녕하세요! 이번에 정말 좋은 강의를 보게 되어서 정리하고자 글을 쓰려고 합니다!본 강의는 TDD, 리팩토링에 대한 연습방법에 대한 강의이지만 저는 리팩토링에 대한 내용을 중점으로 정리를 하도록 하겠습니다.앞 내용인 1~2단계는 TDD에 대한 내용이고, 3단계부터 리팩토링과 관련된 내용입니다.리팩토링과 관련한 제약사항, 방법은 다음과 같습니다.위와 같은 과정을 지키면서, 더 나아가 함수(메서드)의 라인 수를 줄이거나, Indent의 depth를 1까지만 허용하도록 더 개선해 나가면서 리팩토링을 진행합니다.리팩토링에 사용될.......

Naver Blog

2020년 9월 회고록

조금 뒤늦은(?) 9월 회고록을 작성하게 되었다.저번주말엔 좀 바빴어서 작성을 못했고, 이제야 쓰게 되었다.9월도 별일없이 지나가고 벌써 10월이 다가왔다... 이제 2020년도 얼마 남지 않았다.최근 코로나 상황이 좀 괜찮아져서 회사로 출근을 했고, 화요일 휴가를 내서 월요일 저녁 ~ 일요일 거의 일주일이 정말 녹아버렸다 ...고향가서 어느정도 공부를 하려고 계획했지만, 거의 놀다만 온 것 같다... ㅋㅋㅋ 정말 긴 연휴도 끝났고 내일부터는 다시 일상으로 돌아가야 하는데.. 뭔가 적응이 힘들것같다.. ㅎㅎ스터디 & 공부이번에 조금 저렴하게 책을 구매할 기회가 생겨서 꽤 많이 구매했는데... 언제 다볼지 걱정이다!확실히 최.......

Naver Blog

HTML, CSS 소스를 자동 인라인(inline) 변환 - Emogrifier, Premailer

Emogrifier, Premailer최근 Java에서 메일 관련 프로그램을 개발하는데, 여기에 HTML과 외부 CSS를 적용해서 메일을 발송해야 하는 경우가 있었다.HTML의 내용은 정상적으로 출력이 되지만, CSS가 적용이 안되는 문제가 발생했었는데......HTML으로 메일 발송 시 CSS 깨짐 현상HTML으로 메일 발송 기능을 개발하는데, 고려해야 할 것은 CSS 이다!HTML, CSS 태그를 담은 페이지를 별도의 웹페이지에서 띄었을때는 정상적으로 출력이 되지만, 메일 발송을 했을때는 CSS가 적용이 안되는 현상이 발생한다!CSS가 적용이 안되는 현상은 다음과 같다.기존 CSS를 외부의 파일이나, <style> ... </style> 형식으로 적용을 한다면 C.......

Naver Blog

[Java/자바] - Optional<T> 클래스

Optional<T>보통 코드를 작성하고 실행을 해보면 NullPointerException 예외를 빈번하게 접하게 됩니다.따라서 이러한 Null 값에 대한 예외를 고려하고 코드를 작성해야 하는데, 이는 번거로운 일입니다.이러한 일을 단순히 처리할 수 있도록 자바 8에서는 Optional<T> 라는 클래스가 있습니다.어떠한 정보를 저장하는 코드를 간략히 나타내보겠습니다.위와 같은 코드에서, 만약 친구가 휴직 상태일경우 해당 멤버는 null 일 수 있습니다.따라서, 위와 같은 null 값에 대한 처리를 해주려면 코드가 복잡해집니다.위와 같이 각각의 정보들에 대해 null 값인지, 아닌지를 일일이 비교를 해주어야 합니다.NullPointerException 예외.......

Naver Blog

구로디지털단지역, 구디역 곱창집 - 이모네한우돌곱창

구로디지털단지역 - 이모네한우돌곱창안녕하세요 ! 오랜만에 맛집 리뷰를 올리게 되었네요~그동안 코로나때문에 밖에 다니기도 좀 그랬고, 추석도 끝나서오랜만에 휴일인만큼 친구들과 곱창집에 다녀왔습니다 !바로 리뷰 고고할게용~이모네한우돌곱창 위치서울특별시 관악구 조원로 13위치는 위와 같습니다.구로디지털단지역 6번출구에서 200m 내외정도에 있어요!그나저나 저쪽은 관악구인걸 처음알았네요 !구디역 근처에 위치해있어서 쉽게 찾아갈 수 있습니당.커다란 현수막 하나가 기다리고 있습니당.흐흐이모네한우돌곱창 메뉴한우곱창이라 그런지 일반곱창보다는 가격이 약간 있네요 ㅎㅎ..기본 메뉴인 곱창, 대창, 막창, 염.......

Naver Blog

[Java/자바] - 객체 지향 설계의 5가지 원칙 - SOLID

좋은 객체 지향 설계의 5가지 원칙 - SOLID클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리한 개념. SRP: 단일 책임 원칙(Single Responsibility Principle) OCP: 개방/폐쇄 원칙(Open/Closed Principle) LSP: 리스코프 치환 원칙(Liskov Substitution Principle) ISP: 인터페이스 분리 원칙(Interface Segregation Principle) DIP: 의존관계 역전 원칙(Dependency Inversion Principle)SRP 단일 책임 원칙 - Single Responsibility Principle 한 클래스는 하나의 책임만 가져야 한다. 클래스를 변경한 이유가 단일해야 한다. 프로그램의 각 클래스와 모듈은 단일 작업에 중점을 두어야 한다. 하.......

Naver Blog

IntelliJ - "Could not target platform" 에러(JDK 버전 에러)

> Coult not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'.IntelliJ에서 스프링부트로 프로젝트를 생성하고 Gradle Build를 수행하니 위와 같은 오류가 발생했다.이전까지는 JDK 8 버전을 사용하고 있었고, 환경 변수도 JDK8로 잡혀있었는데 Gradle에는 JDK 11을 사용하려고 하니 오류가 발생했다.오류 내용은 뭔지 알았으나, 인텔리제이에 익숙하지 않아서 어느 부분을 손봐야할지 잘 모르겠지만..인텔리제이에 적응도 할 겸 이것저것 살펴보며 해결을 해보자~해당 프로젝트의 우클릭 > Open Module Settings(F4) 로 들어간다.위 화면에서 Project SDK: 에 기존에는 JDK 1.8로 되어있어.......

Naver Blog

[Java/자바] - 가변 인자(Varargs)

Java - 매개변수의 가변 인자가변 인자(Varargs)는 매개변수를 동적으로 받을 수 있는 방법으로, 자바 1.5부터 지원되었습니다.위와 같이 ... 이 삽입된 메소드의 매개변수 선언을 '가변 인자 선언' 이라고 합니다. 매개변수의 가변 인자 선언과 호출메소드의 매개변수를 선언할 때, '가변 인자 선언' 을 하면 전달되는 인자의 수에 제한을 두지 않고 동적으로 받을 수 있습니다.자바의 가변 인자 선언은 단순하고 명료한데, 오버로딩과 비슷한 것 같습니다.위 코드를 통해 알 수 있는 사실은, vargs가 배열을 참조한다는 것입니다. 따라서 length 를 통해 길이를 확인할 수 있습니다.위와 같이 메서드 호.......

Naver Blog

[Spring] - BeanFactory not initialized or already closed - call 'refresh' ...

BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext스프링에서 시큐리티를 설정하는 도중 위와 같은 오류가 발생했다.위 예외는 ContextLoaderListener 를 제공하는데서 발생하는 예외이다.하지만, applicationContext.xml와 같이 스프링 configuration 파일에 대한 context-param 을 제공하지 않는다는 문제이다.따라서 <context-param> 부분을 유심히 살펴봐야한다.(물론 다른 부분일 수도 있다...)나의 시큐리티 설정은 위와 같이 /WEB-INF/spring/security-context.xml 으로 되어있었는데,해당 파일은 spring/appServlet 경로에 있어서 발생한.......

Naver Blog

프로그래머스[Java] - 삼각 달팽이

https://programmers.co.kr/learn/courses/30/lessons/68645코드풀이기존에 사각형 달팽이 문제와 유사한 삼각형 달팽이 문제이다.이 삼각형 달팽이 문제는 규칙을 찾는것이 우선이다. 사각형 달팽이와 비슷한데 내가 찾은 규칙은 다음과 같다.n=4 일때를 기준으로 보자.위와 같은 삼각형을 위와 같은 이등변 삼각형으로 보고, 각 방향대로 값을 채워 배열에 담아서 리턴해주면 된다.↓ , → , 각 방향으로 갈 때마다, 반복되는 횟수가 1회씩 줄어든다.4회 반복 ↓ 3회 반복 → 2회 반복 1회 반복 ↓0회 반복 (끝)따라서, 입력받은 n이 0이 될때까지, ↓ , → , 방향으로 진행하면서 2차원 배열에 값을 채우고,각 단.......

Naver Blog

프로그래머스[Java] - 키패드 누르기(2020 카카오 인턴십)

https://programmers.co.kr/learn/courses/30/lessons/67256코드풀이이 문제에서의 핵심은 각 핸드폰 번호사이의 거리를 좌표를 기준으로 생각하는 것이다.위 사진처럼 0,0 부터 3,2 까지 좌표를 기준으로 각 중간의 핸드폰 번호(2, 5, 8, 0) 간의 거리를 구하면 된다.그러면 중앙 번호를 기준으로 좌측과 우측의 번호가 어느것이 더 가까운지 파악할 수 있다.만약 눌러야하는 번호가 5번(1, 1), 좌측의 현재 손가락은 7번(2, 0) , 우측의 현재 손가락은 6번(1, 2) 라고 가정하면좌측의 거리는 |1-2| + |1-0| = 2 가 되고,우측의 거리는 |1-1| + |1-2| = 1 이 되어서우측의 거리가 더 가까우므로 우측의 손으로 누를 수 있다.따.......

Naver Blog

[Java/자바] - ArrayList.removeIf(predicate<? super E> filter)

ArrayList.removeIf(predicate<? super E> filter)안녕하세요~ 이번에 정리할 내용은 자바 컬렉션 프레임워크 ArrayList의 removeIf(Predicate <? super E> filter) 메서드 입니다!Java8 공식문서 설명에는 주어진 predicate를 만족하는 컬렉션의 요소들에 대해 모두 제거해준다고 나와있네요~removeIf() 메서드에 대해 내부적으로는 위와 같이 구현되어 있는데요, 매개변수 내용은 아래를 참고해주세요!함수형 인터페이스 Predicate? 와일드카드removeIf() 메서드와 람다표현식을 함께 사용하면 간단한 코드로 다양한 구현을 할 수 있습니다.기존의 중복 제거가 아닌, 중복 되는 수를 완전히 제거해보는 코드를 작성.......

Naver Blog

프로그래머스[Java] - 두 개 뽑아서 더하기

https://programmers.co.kr/learn/courses/30/lessons/68644코드풀이1. 주어진 배열의 모든 인덱스에 대해 더하면서 HashSet에 넣는다. - HashSet은 중복이 제거가 되므로, 중복에 대해 신경쓸 필요가 없음!2. HashSet to List 로 변환한 후, 정렬을 한다.3. List의 제네릭 타입이 Integer이므로, int로 변환한다.

Naver Blog

[Java/자바] - 리플렉션(Reflection)

리플렉션 Reflection리플렉션Reflection이란 개념은 저에게는 낯선 용어였습니다. 자바 기본서 2권이 있지만, 이 2권 모두 리플렉션이란 개념이 나오지 않았고, 얼핏 들어보기만 했을뿐 정확히 무엇인지는 잘 몰랐습니다. 리플렉션은 C, C++과 같은 다른 언어에서는 볼 수 없는 기능입니다.하지만, 리플렉션은 실무에서도 많이 사용되고 다방면에서 사용되기에 중요하고 알아야 할 개념입니다. 자바는 정적인 언어로 부족한 부분이 많지만, 이 동적인 문제를 해결하기 위해 리플렉션을 사용합니다. 정적 언어: 컴파일 시점에 타입을 결정 - Java, C, C++ 등 동적 언어: 런타임 시점에 타입을 결정 - JavaScript, Python, Ruby 등등..........

Naver Blog

[Java/자바] - Apache POI 라이브러리를 이용한 엑셀 파일 쓰기

Apache POIApache 에서 제공하는 POI 라이브러리를 통해 Java에서 엑셀 파일을 쓰는(Write) 방법에 대해 알아보겠습니다.Apache POI 라이브러리를 통한 엑셀 파일 읽기http://poi.apache.org/download.htmlPOI 라이브러리는 위에서 다운 받을 수 있습니다. * 저는 4.1.1 버전으로 Maven에 의존성을 추가하는 방식으로 테스트를 진행했습니다.Apache POI 라이브러리 Excel 파일 쓰기 예제pom.xml먼저 pom.xml 파일에 위와 같이 POI 라이브러리를 추가해줍니다.CustomerVo.java 간단한 고객 정보 Vo 객체CustomerExcelWrite.java 엑셀 파일 생성 클래스 .xls 파일은 HSSF ~ 클래스를 사용. .xlsx 파일은 X.......

Naver Blog

[Java/자바] - Apache POI 라이브러리를 이용한 엑셀 파일 읽기

Apache POIApache 에서 제공하는 POI 라이브러리를 통해 Java에서 엑셀 파일을 읽는(Read) 방법에 대해 알아보겠습니다. Apache POI 라이브러리를 통한 엑셀 파일 쓰기https://poi.apache.org/download.htmlPOI 라이브러리는 위에서 다운 받을 수 있습니다. * 저는 4.1.1 버전으로 Maven에 의존성을 추가하는 방식으로 테스트를 진행했습니다.Apache POI 라이브러리 Excel 파일 읽기 예제pom.xml먼저 pom.xml 파일에 위와 같이 POI 라이브러리를 추가해줍니다.CustomerVo.java 간단한 고객 정보 Vo 객체CustomerExcelReader.java 엑셀 파일 읽어오는 클래스 엑셀 파일 쓰기 와 동일하게 .xls 파일은 HSSF를.......

Naver Blog

[Spring/스프링] - 트랜잭션 @Transactional 이란?

트랜잭션 @Transactional 비즈니스에서는 쪼개질 수 없는 하나의 단위 작업을 말할 때 '트랜잭션(Transaction)' 이라는 용어를 사용합니다.즉, '한 번에 이루어지는 작업의 단위' 를 '트랜잭션(Transaction)' 이라고 정의합니다. 트랜잭션으로 묶은 작업 중에서 하나라도 수행이 되지 않고 잘못된다면, 이전에 수행한 모든 작업을 취소하고 실행 이전의 상태로 되돌리게 되는데 이것을 롤백(Rollback) 이라고 합니다.트랜잭션의 성격을 'ACID 원칙' 이라고 설명하는데 다음과 같습니다.트랜잭션을 사용해야 하는 이유트랜잭션을 사용해야 하는 이유는, '계좌 이체' 를 생각해보면.......

Naver Blog

[Spring/스프링] - 트랜잭션 @Transactional 실습

트랜잭션 @Transactional 실습이전의 글에서 트랜잭션 @Transactional 이란 무엇인지 알아보았는데요,이번 시간에는 스프링에서 @Transactional 트랜잭션 실습을 해보겠습니다.※ 실습은 이클립스, 스프링 5.0.7 버전과 Oracle DB, JUnit4를 사용합니다.pom.xml에 spring-jdbc, spring-tx, mybatis, mybatis-spring, hikari 등의 라이브러리를 추가합니다.pom.xmlroot-context.xml의 Namespaces에서 mybatis-spring과 tx를 추가해줍니다.그 후 HikariConfig에 DB 정보를 입력하고, dataSource 와 트랜잭션을 설정할 수 있도록 <tx:annotation-driven/> 태그를 추가합니다.root-context.xml<bean> 으로 등록 된 &qu.......

Naver Blog

[Clean Code / 클린코드] - 10장 클래스

10장 클래스코드의 표현력과 그 코드로 이루어진 함수에 아무리 신경 쓸지라도 더 높은 단계까지 신경 쓰지 않으면 깨끗한 코드를 얻기는 어렵다.이 장에는 깨끗한 클래스를 다룬다.클래스 체계클래스를 정의하는 표준 자바 관례는 다음과 같다. 가장 먼저 변수 목록이 나온다 - 정적static 공개public 상수가 있다면 맨 처음에 나온다. 다음으로 정적static 비공개private 변수가 나오며, 이어서 비공개 인스턴스 변수가 나온다. 변수 목록 다음에는 공개 함수가 나오고, 그 후 비공개 함수가 나온다."추상화 단계가 순차적으로 내려가므로 프로그램은 신문 기사처럼 읽힌다."캡슐화변수와 유틸리티 함수는 가능.......

Naver Blog

[Java/자바] - SqlBuilder

SqlBuilderSqlBuilder 은 Java 어플리케이션에서 SQL 쿼리를 생성하는 과정에서 발생하는 불편함을 덜어주는 라이브러리입니다.하나의 프로그래밍 언어(예를들면 Java) 를 사용하여 다른 언어(예를들면 SQL)에 대한 코드를 생성하는 것은 어려운 일입니다.위의 코드만 보더라도 공백, 문자열, 괄호, 콤마 등을 일치시키는 문제가 항상 존재하고, 코드가 디버깅되고 완전히 테스트 된 후에도 여전히 취약합니다.사소한 변화로 인해 여러 테스트와 수정이 필요하게 됩니다.SqlBuilder 은 SQL 구문을 가볍고 사용하기 쉬운 Java 객체(Java의 StringBuilder와 유사)로 감싸 전체 시나리오를 변경합니다.이로 인해 많은 일반적인 SQL 구문 런타임 오.......

Naver Blog

[Clean Code / 클린코드] - 9장 단위 테스트

9장 단위 테스트애자일과 TDD 덕분에 단위 테스트를 자동화하는 프로그래머들이 아주 많아졌으며 점점 더 늘어나는 추세이다.정확한 테스트 케이스를 작성하는 것은 아주 중요하다.TDD(Test Driven Development) 법칙 세 가지 첫째 법칙: 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 둘째 법칙: 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 셋째 법칙: 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.위 세 가지 규칙을 따르면 개발과 테스트가 대략 30초 주기로 묶인다. 테스트 코드와 실제 코드가 함께 나올뿐더러 테스트 코드가 실제 코드보다 불.......

Naver Blog

[Java/자바] - PDF 출력하기(itextpdf)

Java - PDF 출력(itextpdf)안녕하세요! 이번에 알아볼 내용은 Java에서 Maven 기반으로 pdf를 생성하는 방법에 대해 알아보겠습니다.먼저 pom.xml에 다음 라이브러리들을 추가합니다.MVN REPOSITORY: https://mvnrepository.com/artifact/com.itextpdf/itextpdf/5.5.13.1MVN REPOSITORY: https://mvnrepository.com/artifact/com.itextpdf.tool/xmlworker/5.5.13.1사용되는 소스코드는 다음과 같습니다.설명은 주석으로 대체하고, css 파일은 다음과 같습니다!배경 색상과 폰트 색상을 각각 red, blue로 설정했습니다.위 프로그램을 실행해보면 정상적으로 PDF가 생성됩니다.iText 5.5.13.1 공식문서

Naver Blog

[Spring, pom.xml] - "Multiple annotations found at this line" Failure to transfer javax.jms jar1.1

이클립스에서 스프링 프로젝트를 생성하고, pom.xml 파일에서 세팅할때 위와 같은 오류가 발생했다.Multiple annotations found at this line: Failure to transfer javax.jms:jms:jar1.1 from ...~위와 같은 오류가 발생하면 거의 log4j 와 관련된 오류이다.따라서 log4j 의 버젼을 변경해주면 되는데,,수정 전) 1.2.15수정 후) 1.2.17위와 같이 변경해주면 오류가 감쪽같이 사라진다.+ 관련 없는 jar 들을 제외시키는 방법도 있습니다.https://gubok.tistory.com/356

Naver Blog

[Java/자바] - 열거 타입(Enum) 사용법

Java - 열거형 Enum안녕하세요, 이번에 알아볼 내용은 자바 5에서 추가된 열거형 Enum입니다.열거형 Enum은 '의미가 부여된 이름'을 갖는 '상수'의 선언에 목적이 있습니다.Enum의 특징은 다음과 같습니다. 클래스처럼 보이게 하는상수 서로 관련 있는 상수들을 모아 심볼릭한 명칭의 집합으로 정의 Enum 클래스형을 기반으로 한 클래스형 선언 새로운 열거형(Enum)을 선언하면, 내부적으로 Enum 클래스형 기반의 새로운 클래스형이 만들어짐Enum의 장점은 다음과 같습니다. 코드가 단순해지고, 가독성이 좋습니다. 인스턴스 생성과 상속을 방지하여 상수값의 타입 안정성이 보장됩니다. E.......

Naver Blog

[Java/자바] - 함수형 인터페이스(@FunctionalInterface)

함수형 인터페이스 - @FunctionalInterfaceFirst Class Citizon First Class Citizon 은 아래의 속성들을 모주 만족해야 합니다. 변수에 값을 할당할 수 있어야 합니다. 함수의 파라미터로 넘겨줄 수 있어야 합니다. 함수의 반환값이 될 수 있어야 합니다.Java에 메서드는 위 조건의 모두를 만족하지 않으므로 일급객체가 아니고, 따라서 Java는 함수형 프로그래밍 언어가 아닙니다.하지만, Java8에서는 함수를 일급객체처럼 다룰 수 있게 함수형 인터페이스를 제공합니다.@FunctionalInterface 어노테이션은 자바8에서 추가된 어노테이션입니다.함수형 인터페이스(Functional Interface)는 추상 메서드가 딱 하나.......

Naver Blog

[Java/자바] - Function<T, R> interface

Function<T, R> interface 안녕하세요, 이번시간에 알아볼 함수형 인터페이스는 Function<T,R> 입니다.위 사진은 공식문서에서의 Function<T,R> 입니다.위 사진은 Function<T, R> 의 내부 코드중 일부 입니다.위 인터페이스에는 다음과 같은 추상 메서드가 존재합니다.apply 라는 메서드가 존재하고, 인자로는 어떤 타입의 T(제네릭) 을 받고 R(제네릭) 을 리턴 합니다.위 개념을 잘 새겨서 예제를 통해 자세히 살펴보겠습니다.함수형 인터페이스인 Function<T, R>을 사용해 내부의 apply() 메서드를 구현한 코드입니다.리팩토링을 통해 위의 코드를 람다 표현식으로 변경해보겠습니다.① 먼.......

Naver Blog

[Java/자바] - Consumer<T> interface

Consumer<T> interface이번에 알아볼 함수형 인터페이스는 Consumer<T> 입니다.위 사진은 공식문서에서의 Consumer<T> 입니다.위 사진은 Consumer<T>의 내부 코드중 일부 입니다.위 인터페이스에는 다음과 같은 추상 메서드가 존재합니다.Consumer 소비한다 라는 단어만 봐도 유추할 수 있듯이, 인자는 전달받지만 반환은 하지 않습니다.따라서 Consumer<T> 인터페이스는 전달된 인자(T)를 가지고 어떠한 결과를 보여야 할 때(소모) 유용하게 사용할 수 있습니다.예제를 통해 살펴보겠습니다.함수형 인터페이스인 Consumer<T>을 사용해 내부의 accept() 메서드를 구현한 코드입니다.위 예제.......

Naver Blog

[Java/자바] - Predicate<T> interface

Predicate<T> interface안녕하세요, 이번시간에 알아볼 함수형 인터페이스는 Predicate<T>입니다.위 사진은 공식문서에서의 Predicate<T> 입니다.위 사진은 Predicate<T> 의 내부 코드중 일부 입니다.위 인터페이스에는 다음과 같은 추상 메서드가 존재합니다.따라서 Predicate<T> 인터페이스는 전달된 인자를 판단하여 true 또는 false를 반환해야 하는 상황에서 유용합니다.매개변수가 양수인지 음수인지 확인하는 예제를 살펴보겠습니다.위 예시는 주어진 매개변수가 양수이면 true를 반환하고, 0이나 음수이면 false를 반환합니다.이번에는 리스트에서 양수만 저장하는 예제를 살펴.......

Naver Blog

[Java/자바] - Supplier<T> interface

Supplier<T> interface안녕하세요, 이번시간에 알아볼 함수형 인터페이스는 Supplier<T>입니다.위 사진은 Supplier<T> 의 내부 코드 입니다.인터페이스에는 다음과 같은 추상메서드가 존재합니다.다른 함수형 인터페이스들의 추상메서드는 모두 매개변수를 받았는데, Supplier<T> 는 특이하게 매개변수를 받지 않고 단순히 무엇인가를 반환하는 추상메서드가 존재합니다.위 코드에서 Supplier<T>의 제네릭 타입은 String 이므로, helloSupplier.get() 을 통해 "Hello " 를 받아올 수 있습니다.Supplier<T> 인터페이스는 추상 메서드 get()을 통해 Lazy Evaluation 이 가능합니다........

Naver Blog

[Spring/스프링] - DispatcherServlet(Front-Controller패턴), web.xml, root-context.xml, servlet-context.xml

Spring 프로젝트에서 DispatcherServlet(Front-Controller 패턴) 과web.xml , root-context.xml , servlet-context.xml 파일 분석스프링 프로젝트에서 매우 매우 중요한 3개의 설정파일(.xml)에 대해 분석해보겠습니다. web.xml root-context.xml servlet-context.xml위 파일들중 web.xml 은 Tomcat 구동과 관련된 설정이고, root-context.xml 과 servlet-context.xml 은 스프링과 관련된 설정입니다.프로젝트의 구동은 web.xml 에서 시작합니다. web.xml 의 상단에는 가장 먼저 구동되는 Context Listener가 등록되어 있습니다.web.xml web.xml 은 Deployment Descriptor(배포 서술자) 라고도 합니다.web.xml 은 WAS(W.......

Naver Blog

[MySQL] - update에서 where 문에 동일한 테이블 서브쿼리(select)

MySQL - Update 시 동일한 테이블 서브 쿼리이번에 MySQL에서 Update 시 동일한 테이블로 Update를 하면 오류가 발생하는데, 이를 해결하는 방법을 알게되어서 포스팅합니다~위의 Update 쿼리문은 다음과 같습니다.testDB 테이블에서 SEND_FG = 'R' 로 Update 하는데, num 값이 testDB 테이블 중 최대값(Max) 이거나 1인 걸 조회해서 Update 합니다.즉, testDB 테이블에서 num 값이 MAX 이거나 1인 값들의 데이터들에 대해 SEND_FG 컬럼을 'R'로 변경하는 쿼리문입니다.위 쿼리처럼 Update를 하면 테이블이 중복되었다는 오류가 발생합니다.즉, MySql에서는 자기 자신을 조건으로 보고 있으면 Update문에서.......

Naver Blog

관악, 신림 분위기 좋은 이자카야 추천 ! "우마"

우마 이자카야 - 신림안녕하세요 ! 이번에는 신림에 있는 "우마 이자카야" 에 다녀왔습니당저녁을 먹으려고 간 곳이지만,,이자카야인 만큼 간술 했어용 ~우마 이자카야 위치서울특별시 관악구 신원로 26 02-830-4549매일 17:00 ~ 02:00 (일요일 휴무)신림역 3번출구에서 350m 정도 근처에 있습니다!우마 이자카야 가게입니다 !주변에 비해 좀 화려하네요 .. ㅎㅎ;우마 IZAKAYA우마 이자카야 내부건물 내부만 봐도 이자카야 가게의 느낌이 납니다!디자인이 전체적으로 깔끔하고 괜찮았어요 !내부는 길~게 테이블이 여러개 있었고, 가장 안쪽에 테이블이 하나 더 존재합니다!내부에는 다양한 일본느낌(?)의.......

Naver Blog

[Clean Code / 클린코드] - 7장 오류 처리

7장 오류 처리 오류 처리는 프로그램에 반드시 필요한 요소 중 하나이다. 뭔가 잘못된 가능성은 항상 존재하는데, 뭔가 잘못되면 바로 잡을 책임은 바로 우리 프로그래머에게 있다. 깨끗한 코드와 오류 처리는 확실히 연관성이 있다. 상당수의 코드 기반은 전적으로 오류 처리 코드에 좌우되므로 오류 처리는 중요하다. 하지만 오류 처리 코드로 인해 프로그램 논리를 이해하기가 어렵다면 깨끗한 코드라 부르기는 어렵다.오류 코드보다 예외를 사용하라Try-Catch-Finally 문부터 작성하라 어떤 면에서 try 블록은 트랜잭션과 비슷하다. try 블록에서 무슨 일이 생기든지 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다. 그.......

Naver Blog

2020년 8월 회고록

8월도 빠르게 지나갔다...매달 매달 한달이 너무 빠르게 지나가고, 2020년도 얼마 안남았다..!8월에는 딱히 별일이 없었기에, 간단하게 작성을 할듯하다.재택근무요즘 코로나가 다시 난리다... 수도권 지역에 특히나 더 심해서 재택근무를 하게 되었다.이번주부터 해서 다음주까지 연장되었고, 언제까지 진행될지는 모르겠다 ...그동안 코로나에 대해 딱히 관심은 없었는데, 최근에 서울쪽에 상황이 나빠지면서 정말 정말 조심해야겠다.회사 들어온지 얼마 됐다고 벌써 3번째 재택근무다.. ㅋㅋㅋㅋㅠ나는 한번씩 환경을 바꿔줘야 공부가 잘되는 스타일인데, 하루종일 집에서 하려니 조금 답답하기도 하다...그래도 상황이 상황인만큼 집.......

Naver Blog

[Java/자바] - 어노테이션(Annotation): @Override, @Deprecated, @SuppressWarnings ...

@어노테이션(Annotation)이번에 설명할 내용은 어노테이션(Annotation) 입니다.자바나 스프링 등을 개발하다 보면 어노테이션을 자주 사용하게 됩니다.어노테이션은 자바 5에서 소개된 내용으로, 클래스나 메서드 앞에 붙은 '@' 표시를 어노테이션이라고 합니다.어노테이션의 용도는 다양하겠지만, 그 중에서도 "메타데이터" 의 비중이 가장 크다고 할 수 있습니다.1. Built-in Annotation자바 5에서 소개된 어노테이션의 타입 세가지는 다음과 같습니다.@Override 위 어노테이션을 선언한 메서드가 오버라이드 되었다는 것을 나타냅니다. 만약 상위(부모) 클래스 및 인터페이스에서 해당 메서드를 찾을 수.......

Naver Blog

[신림(관악)] - 1등급 한우, 부드러운 고기 "모르겐"

"모르겐" 고기집 - 신림(관악)안녕하세요 ! 이번에 한우 함 먹구 왔습니다. ㅎㅎ고기가 너무너무너무 먹고싶어서, 이왕 고기먹을거 좋은거로 먹자해서한우 소고기 한번 먹구 왔습니당 ~고기가 너무너무 부드러운 고기집"모르겐" 입니다!모르겐 위치위치는 위와 같습니다!도로명: 서울 관악구 호암로26가길 18지번: 서울 관악구 신림동 1525-10 02-874-9898모르겐을 검색하면 두 곳이 나옵니다.한곳은 한식, 한곳은 양식인데요!위 위치가 이번에 다녀온 고기집이고 다른 곳은 레스토랑의 양식입니다!저도 처음 방문해봐서 헷갈렸네요 .. ㅎㅎ...그치만 두 곳의 위치가 100m 이내에 위치하고 있어서,다행히 길을 잘.......

Naver Blog

[Clean Code / 클린코드] - 8장 경계

8장 경계 시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다. 때로는 패키지를 사고, 오픈소스를 이용하며, 사내 다른 팀이 제공하는 컴포넌트를 사용하기도 한다. 이 장에서는 소프트웨어 경계를 깔끔하게 처리하는 기법과 기교를 살펴본다.외부 코드 사용하기 인터페이스의 제공자와 사용자 사이에는 특유의 긴장이 존재한다. 제공자는 적용성을 최대한 넓히려고 애쓰고, 사용자는 자신의 요구에 집중하는 인터페이스를 바란다. 한 예로 java.util.Map 을 살펴보자.아래 사진에서 보듯, Map 은 굉장히 다양한 인터페이스로 수많은 기능을 제공한다. 이 라이브러리의 기능성과 유연성은 확실히 유용하지만, 그만.......

Naver Blog

[Clean Code / 클린코드] - 5장 형식 맞추기

5장 형식 맞추기 프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야 한다. 코드 형식을 맞추기 위한 간단한 규칙을 정하고 그 규칙을 착실히 따라야 한다. 팀으로 일한다면 팀이 합의해 규칙을 정하고 모두가 그 규칙을 따라야 하며, 필요하다면 규칙을 자동으로 적용하는 도구를 활용한다.형식을 맞추는 목적 코드 형식은 정말 중요하다! 어쩌면 '돌아가는 코드'가 개발자의 일차적인 의무라 여길지도 모르겠지만, 이 책을 통해서는 생각이 바뀌었기를 바란다. 오늘 내가 구현한 코드는 추후에 바뀔 확률이 아주 높다. 따라서 오늘 구현한 코드의 가독성은 추후 코드의 품질에 지대한 영향을 미친다. 초기의 코드는 시간이 지나.......

Naver Blog

[MyBatis/마이바티스] - resultMap, resultType

MyBatis - resultMap, resultTypeMyBatis에서 resultMap, resultType의 차이점에 대해 알아보겠습니다.먼저 공식문서를 보면 다음과 같습니다.https://mybatis.org/mybatis-3/sqlmap-xml.htmlresultType 은 매핑될 클래스 명을 작성하는 것이고, resultMap은 사용자가 원하는 POJO 클래스(VO) 매핑 시킬 수 있습니다.만약 DB의 컬럼명과 POJO에 있는 setXXX 이름이 다르다면, resultMap을 이용해서 XXX 명과 동일하게 설정합니다.DB의 컬럼명과 POJO 객체의 필드명을 완전히 동일하게 설정한다면, resultType을 사용해 매핑을 해줘도 상관없습니다.코드를 통해 살펴보겠습니다. 위에서 살펴보면 resultType에 POJO 객체인 Bo.......

Naver Blog

[토이 프로젝트] - Java로 스타크래프트 게임 만들기 (4) 마무리;;

사이드 프로젝트로 스타크래프트를 간단하게 콘솔로 만들어보고자 한게 5월 말이었는데...6~7월은 사실 거의 손을 놓고 있었다... 바쁘기도 했지만 애정이 별로 안갔다...;;처음부터 범위를 너무 크게 잡았었고, 생각하면 할수록 따져야 할 것들이 너무너무 많아서 어떻게 손을대야할지 몰랐었다.그래서 바쁘기도하고 핑계기도 하지만 6~7월은 거의 손을 못댔었고, 8월에서야 조금씩 작업을 하기 시작했다.어느정도 마무리는 짓고싶었는데 다 하자니 반복적인 작업도 많고 너무너무 오래 걸릴 것 같아서...진~짜 간단하게 유닛 하나(마린) 만 뽑는 것으로 급 마무리를 했다...........ㅎㅎ;그래도 따져야 할 것도 많았고, 쉽지 않았다... 다.......

Naver Blog

[Clean Code / 클린코드] - 6장 객체와 자료 구조

6장 객체와 자료 구조 변수를 비공개(private)로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서다.그렇다면 어째서 많은 프로그래머들이 조회(getter) 함수와 설정(setter) 함수를 당연히 공개(public)해 비공개 변수를 외부에 노출할까?자료 추상화다음 두 코드를 살펴보자.6-2)의 추상적인 클래스는 점이 직교좌표계를 사용하는지 극좌표계를 사용하는지 알 길이 없다. 그치만 인터페이스는 자료구조를 명백하게 표현한다. 6-2)는 클래스 메서드가 접근 정책을 강제한다. 좌표를 읽을 때는 각 값을 개별적으로 읽어야 하지만 좌표를 설정할 때는 두 값을 한꺼번에 설정해야 한다. 반면 6-1)은 개별적으로 좌표값을.......

Naver Blog

[Eclipse/Spring, Maven] - Plugin execution not covered by lifecycle configuration: ~

spring-petclinic Maven 프로젝트를 다운받고, 실행하려하니 pom.xml 에서 위와 같은 오류가 발생했다.Plugin execution not covered by lifecycle configuration: io.spring.javaformat:spring-javaformat-maven-plugin:0.0.22:validate ~툴에서 여러가지 해결책을 제시해주는데, 가장 간단한 방법은 다음과 같다.위에서 <plugins> 를 감싸고 있는 태그 밖에 <pluginManagement> 태그를 감싸주는 것이다.위와 같은 형식에서 <build> 와 <plugins> 사이에 <pluginManagement> 태그로 감싸주면 된다. 아래 처럼!그 후 빌드를 하면 에러가 감쪽같이 사라져버린다~참고http://maven.apac.......

Naver Blog

[Spring] - 이클립스에서 spring-petclinic Maven 실행 및 분석하기

spring-petclinic 프로젝트 실행하기스프링을 시작할때 좋은 예제인 spring-petclinic 프로젝트를 다운 받고 실행해보겠습니다.깃허브 관련한 fork, clone 에대한 설명은 생략하겠습니다.spring-petclinic 의 URL은 다음과 같습니다.https://github.com/spring-projects/spring-petclinic위 프로젝트를 먼저 fork 해서 로컬 깃허브에 저장합니다.그 후 코드를 Clone 해줍니다.이클립스에서 File > Import ... 를 클릭합니다.다음과 같이 Maven > Existing Maven Projects 를 클릭합니다.위에서 spring-petclinic 를 Clone 한 폴더를 선택하고 Finish를 눌러줍니다.Finish 를 누르면 파일들을 다운받게.......

Naver Blog

[서울대입구역] - 카도야라멘

서울대입구역 - 카도야라멘안녕하세요~ 이번에 다녀온 곳은 라멘집서울대입구역 5번출구 근처 - 카도야라멘 입니다!카도야라멘 위치위치는 위와 같습니다.관악구 남부순환로 1811 신원메트로빌서울대입구역 5번 출구에서 도보 100m 정도 위치에 있습니다.역 근처라 방문하기에 좋은 위치입니다!매일 11:00 ~ 22:00 02-882-5090입구 앞에서 찍은 주변사진~도로가에 존재합니당.도로가 1층에 저렇게 존재합니다.일본어로 존재하니까 잘 찾아가세용 ㅎㅎㅎ일본어 밑에 카도야라멘 이라고 한글로 적혀있습니다!일본 라멘전문점 "카도야라멘"AM 11:00 ~ PM 15:00런치 할인세트 이벤트중입니다!라멘 주문시 미니.......

Naver Blog

[Eclipse] - Target runtime Apache Tomcat ~ is not defined.

Target runtime Apache Tomcat v6.0 is not defined.위 오류는 프로젝트의 Apache Tomcat 버전과 제 로컬에 설치되어있는 Tomcat 버전이 달라서 발생하는 오류입니다.상단의 Window > Show View > Problems 를 클릭하면 발생하는 Error가 나오게 됩니다.해결 방법Problems 창에서 해당 오류를 우클릭 > Quick Fix 를 클릭합니다.해당 부분을 선택하고 Finish 를 클릭합니다.사용중인 Apache Tomcat 톰캣을 클릭하고 Apply and Close를 클릭합니다.(저는 톰캣을 2개설치했으므로, 아무거나 선택해도 상관이 없습니다.)그 후 위에서 설정한 Apache Tomcat의 버전을 선택하고 Apply and Close 를 클릭하면.......

Naver Blog

[Eclipse] - The hierarchy of the type is inconsistent

The hierarchy of the type is inconsistent위 오류는 아래 오류와 동일합니다.Multiple markers at this line, The type java.lang.Object cannot be resolved...아래 사이트에 동일한 해결방법이 나와있습니다~!참고오늘도 에러를 내뿜는 이끌립스새로운 프로젝트를 받고 파일을 열어보니 위와 같은 오류가 발생했습니다.The hierarchy of the type is inconsistent여기서 확인해봐야 하는것은 두 가지입니다.1. .jar 파일이 제대로 불러져왔는지...2. JDK 버전이 맞는지위 두가지를 확인해야 합니다.프로젝트명 우클릭 > Properties > Java Build Path... 에서 확인할 수 있습니다.저는 위와 같이 JDK 버전.......

Naver Blog

[구로 디지털단지역 맛집] - 맛찬들 왕소금구이

맛찬들 왕소금구이 구로점안녕하세요!이번에 다녀온 맛집은 구로맛집 맛찬들 왕소금구이 입니다!개인적으로 먹어본 고기 중에 역대급이었어요 !고기가 두툼하고, 체인점으로 알고있는데 정말 맛있었습니다~맛찬들 왕소금구이 위치서울특별시 구로구 디지털로32나길 17-28 02-868-6692위치는 구로디지털단지역 3번출구에서 3~5분정도 걸어가시면 됩니다!역근처에 있어서 가기도 쉽습니당.여기입니다 ! 뭔가 이것저것 많이 붙어있어요 ㅎㅎ고기의 기준이 바뀝니다맛 찬 들 3.5 왕소금구이7년연속 이용객 1등7년연속 판매량 1등1등인 이유가 다 있어요 ! !영업 시간은 오전11시 ~ 밤12시 입니다.맛찬들 왕소금구이 분.......

Naver Blog

[Clean Code / 클린코드] - 4장 주석

4장 주석나쁜 코드에 주석을 달지 마라. 새로 짜라 - 브라이언 W. 커니핸, P. J. 플라우거 잘 달린 주석은 그 어떤 정보보다 유용하다. 주석은 '순수하게 선하지' 못하다. 사실상 기껏해야 필요악이다.우리가 프로그래밍 언어를 치밀하게 사용해 의도를 표현할 능력이 있다면, 주석은 거의 필요하지 않으리라.우리는 코드로 의도를 표현하지 못해, 즉 실패를 만회하기 위해 주석을 사용한다. 그래서 주석은 반겨 맞을 손님이 아니다. 그러므로 주석이 필요한 상황에 처하면 곰곰이 생각을 해봐야한다. 상황을 역전해 코드로 의도를 표현할 방법은 없을까?주석은 오래될수록 코드에서 멀어지고, 그릇될 가능성도 커진다. 이유는.......

Naver Blog

[Java/자바] - 제네릭(Generic) - 멀티 타입 파라미터, 제네릭 메소드, 제한된 타입 파라미터

제네릭에 대한 설명은 아래를 클릭하시면 확인할 수 있습니다.자바의 제네릭제네릭에서 자주 사용하는 타입 파라미터타입 파라미터의 이름은 짓기 나름이지만, 일반적으로 다음 두 가지 규칙을 지켜서 이름을 짓습니다. 한 문자로 이름을 짓는다. 대문자로 이름을 짓는다.위와 같은 방식으로 이름을 짓게되면, 다른 종류의 이름들과 구분이 됩니다. 보편적으로 자주 사용하는 타입 매개변수의 이름과 의미는 다음과 같습니다. E Element K Key N Number T Type V Value멀티 타입 파라미터 class<K, V, ...> , interface<K, V, ...>제네릭 타입은 두 개 이상의 멀티 타입 파라미터를 사용할 수.......

Naver Blog

[Java/자바] - 제네릭(Generic) - 와일드카드(Wildcard) 타입<?>, <? extends ...>, <? super ...>

와일드카드 타입 <?>이전에 제네릭, 다양한 타입 파라미터 및 제네릭 메소드에 대해 정리를 해보았습니다.제네릭 클릭멀티타입 파라미터, 제네릭 메소드, 제한된 타입 파라미터 클릭이번에는 제네릭의 와일드카드(Wildcard)타입 에 대해 정리를 해보겠습니다.코드에서 <?> 를 일반적으로 와일드카드(Wildcard) 라고 부릅니다.제네릭 타입을 매개값이나 리턴 타입으로 사용할 때 구체적인 타입 대신에 다음과 같은 세 가지의 방식으로 와일드카드를 사용할 수 있습니다. 제네릭타입<?> : Unbounded Wildcards(제한 없음) - 타입 파라미터를 대치하는 구체적인 타입으로 모든 클래스나 인터페이스 타입이.......