본문 바로가기

[개발] Programming197

자바 try catch에 finally 사용하는 이유 (익센션 처리) 자바 try catch > Finally 사용 이유 자바로 구현된 시스템을 운영하다 보면 예상치 못한 익셉션이 종종 발생하다. 이때 리소스 관리나 프로그램을 안전하게 구성하기 위해 finally 라는 기능을 흔히 사용하게 된다. finally는 익셉션이 발생하더라도 무조건 실행되는 구조라 특히 리소스를 반환할 때 활용하기 적합하다. 자바 Finally 사용 방법 finally는 항상 try catch 문과 함께 사용한다. try catch는 예상치 못한 익셉션에 대응하기 위해 사용하는데, finally는 어떠한 try catch문에 걸리더라도 무조건 마지막에 실행된다. 아래와 같은 예외처리 문이 있다고 가정하자. 익셉션의 종류에 해당하는 catch 문에서 걸리게 되고, 해당 위치에 구현된 내용이 실행될 .. 2022. 6. 8.
젠킨스 GitHub 빌드 시 : Error fetching remote repo 'origin' Error fetching remote repo 'origin' 젠킨스 빌드를 실행하면 깃허브로 레파지토리로부터 소스를 fetch 해서 빌드하는 프로세스가 있다. 여느 때와 같이 빌드를 돌리는데, 오류가 났다. (깊은 빡침과 욕이..) 혼미해진 정신을 가다듬고 젠킨스 로그를 확인했다. - 젠킨스 빌드 시 오류 로그 - Started by user admin Running as SYSTEM Building in workspace C:\JENKINS_HOME\workspace\front The recommended git tool is: NONE ... 생략 ... at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.j.. 2022. 4. 7.
깃허브 토큰 발급 받기 (GitHub Personal access tokens) 깃허브 개인 토큰 발급받기 깃허브와 젠킨스를 연동하거나 기타 외부에서 레파지토리를 접근하려면 개인 토큰이 필요하다. 깃허브 토큰은 로그인한 후에 발급받을 수 있는데, 원격에서 레파지토리를 접근할 때 각종 권한을 제어하고, 권한에 유효 기간을 두는 목적으로 사용한다. 로그인한 뒤에, '깃허브 > 계정 > Settings', 선택 좌측 메뉴 하단에 ' Developer settings' 클릭 'Personal access token' 클릭 이제 'Generate the token'을 클릭한다. 밑에 나온 두 개의 토큰은 기존에 발급받았기 때문에 나오는 것이다. 토큰의 목적을 알아볼 수 있는 문구를 자유롭게 입력한다. (옵셔널 한 값이다.) 밑에 'Expiration day'는 유효 일자 설정하는 기능인데, .. 2022. 3. 27.
MS 인증 시험 DP-900: Microsoft Azure Data Fundamentals 비용 및 후기 MS 인증 시험 DP-900 MS에서 제공하는 교육과정 중에 'Microsoft Azure Virtual Training Day: 데이터 기본'이라는 교육 과정이 있다. 해당 교육을 통해서 클라우드 환경에서 데이터 관리에 대한 내용을 다루고 있으며, 무료 온라인 교육으로 진행된다. 교육을 수료하면 DP-900 이라는 시험을 응시할 수 있는데, 교육 수료자는 무료이다. 자격이라고 하기보다는 초급 certificate이 더 어울리기에 취업에 플러스 요인이 될 거라는 기대는 하지 않는 게 좋다. 그래도 면접 볼 때 구두로만 관심을 표현하는 것보다는 간단하게라도 써티도 있다고 말하면 훨씬 더 효과적이기 때문에 취득하면 좋을 거라 생각한다. DP-900을 취득하면? 해당 써티를 통해 얻을 수 있는 지식은 다음과 .. 2022. 3. 20.
데이터베이스 뷰의 의미와 만드는 방법, 장단점 (DB View table) 데이터베이스 뷰(View)란? DB에서 뷰는 하나 또는 그 이상의 테이블을 조인하여 만든 새로운 가상 테이블을 의미한다. 실제로 테이블을 생성한 건 아니지만, 사용자에게는 실존 테이블과 동일하게 사용된다. (뷰를 가지고 새로운 뷰를 만들 수도 있다.) 이는 주로 특정 정보만 제공하고 싶은 경우나 복잡한 쿼리를 가상 테이블로 만들어 간편하게 활용할 수 있어 업무에서도 자주 이용하는 기능이다. 예를 들어 자세히 설명하자면, 두 개의 테이블이 있다고 가정하자. memberInfo, PaymentHist. 개발자가 회원 별 결제 이력을 조회하고 싶은데, 회사 규정상 민감한 개인정보는 제공하고 싶지 않은 경우 뷰를 만들어서 제공하면 된다. 테이블 memberInfo에 있는 민감한 개인정보가 담긴 컬럼을 제외하고 .. 2022. 2. 3.
IaaS, PaaS, SaaS 클라우드 컴퓨팅 서비스 형태 클라우드 컴퓨팅 서비스 중에 하드웨어 및 소프트웨어를 플랫폼으로 제공하는 범위에 따라 크게 3종류가 있다. (IaaS, PaaS, SaaS). 'aaS'는 'as a Service'라는 의미로 보통 세컨드 파티가 제공하는 서비스를 의미한다. 해당 서비스를 통해 비즈니스는 인프라나 플랫폼을 업체에 맡김으로 사업에 더 집중할 수 있는 이점이 있다. 그럼 이제 세 가지 클라우드 서비스 타입에 대해 알아보자. IaaS, PaaS, SaaS 비교 클라우 서비스는 세 가지 형태로 제공되는데, 제공되는 범위에 따라 IaaS < PaaS < SaaS 로 구분된다. 딱 네트워크와 서버, 데이터 센터만(인프라만) 제공하는 Iaas, 운영체제와 미들웨어까지만 포함하는 PaaS, 마지막으로 애플리케이션까지 제공하는 SaaS가.. 2022. 1. 16.
윈도우 80 포트 제어 - 다른 프로그램이 먼저 점유할 경우 윈도우 기본 80 포트 변경 윈도우 피씨에 회사 보안 프로그램을 사용할 경우 80 포트를 계속 점유하는 경우가 있습니다. 이럴 때 이클립스에서 웹 프로젝트를 돌리려고 하면, 80 포트를 사용하지 못할 수 있습니다. 이때 레지스터리에서 80 포트에 대한 우선 순위를 조정해주면 별 오류 없이 문제가 해결되어서 공유드립니다. 참고로 저는 윈도우 개발자가 아니고 80 포트를 변경하고 나니 부작용도 있었기 때문에 참고해 주세요. 원래 커맨드 창에서 프로세스 kill로 하다가 매번 너무 번거로워서 레지스토리를 변경한 경우입니다. 윈도우 > 실행 > regedit 입력 후 엔터 좌측에 해당 경로로 이동합니다. 컴퓨터 > HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Serv.. 2021. 12. 24.
페이스북 피드(게시글) 웹 페이지에 내장하기 - Embedded Tag 페이스북 피드 퍼가기 페이스북에 페이지 글을 딱 한 개가 아니라 피드 목록을 나의 웹에 내장(Embed)하고 싶다면 이 글 딱 집중~! 이전에는 'Like Box'라고 하는 기능으로 iframe 형태로 퍼갈 수 있었는데, 근래에 API가 바뀌면서 'Page Plugin'이라는 명칭으로 바뀌었다. (이전 라이크 박스 시절에 퍼갔다면 지금 글이 안 보이고 있을 것이다.) 접속 경로 : https://developers.facebook.com/docs/plugins/page-plugin 링크를 생성하는 방식은 이전과 동일해 보인다. 비록 개발자 페이지이긴 하지만, 계정이 없어도 상관없다. 뭐 이 글은 개발자들이 보고 있을 테니, 아래 값에 대한 설명은 필요 없을 것 같다ㅎㅎ 하단에 체크 박스는 노출하는 설정에.. 2021. 12. 11.
자바스크립트 Uncaught SyntaxError: missing ) after argument list 오류 해결 Uncaught SyntaxError: missing ) after argument list 웹 프로그래밍을 하다 보면 흔히 발생하는 문법 오류가 있다. 그중 위와 같은 오류가 발생했다면, (경험상) 대부분 세 가지 오류에 해당된다. 01 괄호 오류 정말 말 그대로 괄호를 빼먹은 케이스다. JSTL을 사용 한다면, '}' 또는 '{'를 실수로 빼먹을 수도 있고 '(' 또는 ')' 를 빼먹을 수도 있으니 브라우저의 콘솔로 확인해보자. 02 ' 또는 " 오류 실수로 ' 또는 "를 추가로 넣은 경우 발생한다. 예를 들어, 아래처럼 입력하면 오류가 나지 않는데, var aa = "뿌잉 뿌잉"; var bb = "오빠 " + aa; var tmp = "오빠" aa; 또는 var tmp = "오빠 + aa; 와 같.. 2021. 12. 9.