전체 글

전체 글

    [JSTL] "EEE, dd MMM yyyy" ParseException

    [JSTL] "EEE, dd MMM yyyy" ParseException

    ❗ 문제 네이버 블로그 RSS를 JSTL XML Tag를 가지고 읽어오는 부분 구현 중에 날짜 포맷팅하는 과정에서 발목이 잡혔다.😧 rss에서는 게시글 작성일자의 형식을 "Thu, 15 Jun 2023 14:08:20 +0900 "이런 식으로 제공하는데 로 Date형으로 변환 후 2023-06-15 포맷팅을 해주려 하니 ParseException이 발생했다. 이 외에도 태그를 잘못 사용해서 데이터가 제대로 들어가지 않는 문제 등등.. 마냥 쓰던 스타일대로만 쓰다 보니 기본을 잊어버렸던 것 같다. 💡 해결 첫 번째로 태그에서 value가 제대로 들어가지 않았던 것 // 문제의 코드 // 수정 코드 value 내에선 EL태그는 적용하지만 JSTL은 적용되지 않는다. 하지만 value에서 저장하는 것 외에도 ..

    [Eclipse, Tomcat] 404 error : 경로를 찾을 수 없습니다.

    [Eclipse, Tomcat] 404 error : 경로를 찾을 수 없습니다.

    ❗ 문제 서버 꺼둔 상태에서 작업하다가 다시 런 돌리니 에러가 발생했다. 최초로 발생한 에러는 로그쪽 관련 에러였다. 로그쪽 버전이 맞지 않아서 발생한 에러였는데 그걸 모르고 maven update, project clean 등.. 여러 방법을 시도해 보다가 server clean을 했더니 준비된 예외페이지도 찾아가지 못하는 404 error가 발생했다. 💡 해결 이런저런 시도를 해보다가 도저히 해결이 안돼서 회사 과장님께 여쭤봤다. 문제는 server path 경로가 달랐던 것 .. ! 하지만 나는 server를 clean을 제외하고는 건드린 게 없는 걸 .. ? 싶어서 말씀드리니 server clean을 하게 되면 server path가 project context root에 저장된 path로 설정이..

    예외 exception

    프로그램 오류(error) 프로그램이 정상적으로 실행되지 못하고 오작동 또는 비정상적 종료를 발생시키는 경우를 말한다. 자바(.java) → 기계어(.class)로 변환하는 과정을 ‘컴파일’(compile)이라고 한다. 컴파일러는 컴파일 과정에서 문법 검사를 진행한다. 이 과정에서 문제가 있는 경우 오류 메시지와 함께 컴파일을 중단한다. 컴파일 중 불명확한 코드에 대해서 경고를 보내기도 한다. 오류 메시지를 보고 잘못된 코드를 수정하는 과정을 ‘디버깅’(debugging)이라고 한다. 오류 발생시점에 따라 ‘컴파일 오류’(compile error)와 실행 오류(runtime error)로 나뉜다. 컴파일 오류는 구문(syntax) 오류가 발생하고, 실행 오류로는 논리(logic) 오류, 시스템(syste..

    [SpringBoot,React] axios POST 403 Forbidden Error

    [SpringBoot,React] axios POST 403 Forbidden Error

    ❗ 문제 스프링 부트와 리액트로 개발하는 과정에서 axios POST로 multipart 전송을 했더니 발생한 오류다. GET으로 할 때는 문제가 없던 터라 오타가 났다거나 파일이 보내는 과정이 잘못되었다고 생각해서 엉뚱한 곳을 찾아보고 있었다. 더욱이 스프링 시큐리티는 처음이라 이 오류가 CORS에서 걸린 줄도 몰랐다. 스프링 시큐리티, CORS, CSRF 관련해서 공부할 수 있었던 좋은 기회라고 생각했다. 💡 해결 http.csrf().disable(); 멀리 돌아와서 그렇지 해결방법은 생각보다 간단했다. 이 방법을 초반 서치할 때 보았음에도 적용할 수 없었던 이유는 SpringSecurity 설정 파일을 못 찾았던 이유였다.(+ 스터디로 시작한 프로젝트라서 설정을 내가 하지 않았다..) Applic..

    첫 프로젝트 회고

    Work 입사 후 처음으로 사내 Java CMS 플랫폼을 활용한 프로젝트 전 과정을 참여했다. 입사 초반에 작은 수정사항이 있어서 CMS를 다뤄보았는데 그때와 비교해서 코드 이해도가 많이 나아진 모습을 확인할 수 있었다. 하지만 새 기능을 올리는 것은 어렵지 않았으나 원래 있던 소스에 수정사항이 생겼을 경우 아직 헤매는 부분이 많았고, 내가 모르는 CMS 기능들이 많아서 코드를 세밀하게 뜯어보아야겠다고 생각이 들었다. ( * 코드를 뜯어보면서 어떤 식으로 정리를 해나가는 게 좋을까? ) CMS를 공부하고 정리한 내용을 바탕으로 문서화해서 남겨둬야겠다. 큰 프로젝트의 전체를 코드만으로 파악하는 것은 꽤 힘든 일이었다. 내가 그랬고, 이후 신입 개발자가 비슷한 상황에 처했을 경우 꽤 도움이 될 것 같다. 특..

    AWS로 시작하는 인프라 구축의 정석

    AWS로 시작하는 인프라 구축의 정석

    토이 프로젝트를 위해서 EC2, RDS, S3로 간단한 웹 서버 구축을 진행했었다. 그 당시 기술 블로그들을 참고하며 EC2, RDS, S3, IAM 사용자 계정까지 건드렸는데 대부분의 기술 블로그는 프리티어의 한도 내에서 웹 서버를 구축하는 정보들 이 많아서 웹 서버 구축은 이 정도면 끝인가 보다 하고 생각하고 있었다. 대부분 '서버 구축'에 대한 정보만 소개했는데 내가 서버 구축에 대한 지식이 조금만 더 있었다면 보안과 효율은 어떻게 잡는 거지?라는 의문을 가졌을 것 같다. 'AWS로 시작하는 인프라 구축의 정석'을 읽으면서야 내가 그때 놓쳤던 것들을 되새겨 볼 수 있었다. 클라우드와 네트워크 지식이 깊은 편은 아니었는데 서버 구조와 설명이 꼼꼼하게 적힌 터라 네트워크 지식과 AWS 인프라 구축 기능..

    [ASP.NET] Excel 업로드 중 프로시저가 안 먹을 경우 ( + 엑셀 셀서식 )

    [ASP.NET] Excel 업로드 중 프로시저가 안 먹을 경우 ( + 엑셀 셀서식 )

    ❗ 문제 btnClick 메서드가 실행되면 먼저 delete 프로시저가 한 번 실행되어 해당 연도의 데이터를 전부 지우고 그다음 업로드할 엑셀의 데이터를 insert 하는 메서드를 구현하는 작업을 진행했다. 진행하는 도중 delete는 정상적으로 되면서 insert 차례에서 오류 메시지 하나 없이 데이터가 들어가지 않는 일이 생겼다. if에서 걸렸거나 프로시저가 잘못되었다고 생각했는데 결론은 둘 다 아니었다. 💡 해결 먼저 해결방법은 Substring으로 문자열을 잘라주는 것이었다. Substring이면 String은 받을 수 있다는 이야기인데 yyyy-mm-dd 형태의 문자열을 trim 했을 때는 안되더니 Substring했을 때는 된 이유가 몰 .. 가 .. ? 첫 번째로 yyyy-mm-dd 뒤에 더..

    프로그래머의 뇌

    프로그래머의 뇌

    음, 어쩌면 뇌가 너무 큰 인지 부하를 겪고 있나 봐 코딩 노베이스 보다 적어도 기초적인 문법을 이해하고 있고 코드 작성 경험이 있는 독자에게 적극 추천하는 책이다. 최근 들어 개발자에게 필요한 역량 중 하나로 메타인지가 많이 언급이 되고 있는 추세다. 프로그래머의 뇌는 코드를 읽고, 작성할 때 내 머릿속에서 대체 무슨 일이 일어나고 있는 걸까? 에 대한 해답이 찾을 수 있다. 이 책으로 인해 개발자로서 자신을 회고하고, 더 나은 방향을 선택할 수 있도록 사고하는 법을 배울 수 있었다. 📗 책 구매 링크 프로그래머의 뇌 인지과학에 기반을 둔 각종 방법론으로 개발자가 새로운 언어나 프레임워크를 빠르게 배워 생산성을 향상하도록 돕는다. 코드를 더 잘 이해하는 것에서 나아가, 버그 방지, 명확한 작명법, 리팩..

    세상에 없던 금융, 디파이 입문편

    세상에 없던 금융, 디파이 입문편

    디파이를 가장 쉽고 생생하게 이해할 수 있는 책 블록체인에 대해 아무것도 모르더라도 비트코인, NFT라는 단어는 한 번쯤은 들어봤을 것이다. 비트코인을 구입하려면 거래소를 이용해야 하고, NFT를 구입하려면 지갑과 코인이 필요하다. 거래소와 지갑, 코인은 각각 은행, 계좌, 화폐의 역할을 가진다. 디파이란 은행 중심의 금융이 아닌, 사용자 중심의 금융을 말한다. 고로 탈중앙화 금융이라고 불린다. NFT와 비트코인은 디파이 위에서 돌아가기 때문에 시작하기 위해선 디파이에 대한 이해를 어느 정도 가지고 있어야 한다. 📗 책 구매링크 세상에 없던 금융, 디파이: 입문편 - 교보문고 은행 없는 대출, 꽝이 없는 복권, 실시간 스트리밍 지불 등 지금 당장 시작 | 탈중앙화 금융 혁명이 세계를 장악하고 있다 은행 ..

    CURSOR : 테이블에서 여러 개의 행을 조회한 후 쿼리의 결과를 한 행씩 처리하는 방식

    CURSOR 테이블에서 여러 개의 행을 조회한 후 쿼리의 결과를 한 행씩 처리하는 방식 SELECT한 결과(행 집합)를 반복작업 할 경우 유용 많은 데이터를 처리할 경우에는 사용을 권장하지 않음 특징 내장 SQL문의 수행 결과로 반환되는 복수의 튜플들을 액세스할 수 있는 개념 결과로 반환되는 첫 번째 튜플에 대한 포인터 반환되는 튜플을 한 번에 하나씩 차례대로 처리 명령어 DECLARE : 커서 정의, 커서와 관련한 선언 OPEN : 질의 결과의 첫 번째 튜플을 포인트로 설정 FETCH : 질의 결과의 튜플들 중 다음 튜플로 커서 이동 CLOSE : 수행 결과에 대한 처리 종료 시 커서를 닫음

    EXEC : 저장 프로시저를 실행하는 명령

    EXEC 저장 프로시저를 실행하는 명령 리턴값이 없을 때 Exec [저장프로시저 이름] [매개변수1], [매개변수2],... Exec TestSelect @temp 리턴값이 있을 때 Exec [값을 받을 변수] = [저장프로시저 이름] [매개변수1], [매개변수2],... Declare @nTemp int Exec @nTemp = TestSelect @temp select값이 있을 때 Declare @tableTemp table (sTemp varchar(32)) Insert @tableTemp exec [저장프로시저 이름] [매개변수1],[매개변수2]

    자료구조

    자료구조

    사전적인 의미로 자료의 집합을 말한다. 각 원소들이 논리적으로 정의된 규칙에 의해서 나열되며 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 표현하는 것 자료구조는 왜 필요할까 ? 자료를 더 효율적으로 저장하고 관리한다. 그렇기 때문에 올바른 자료구조 방법은 실행시간을 단축시키고, 메모리 용량을 절약하도록 돕는다. 자료구조의 선택기준 자료의 처리시간 자료의 크기 자료의 활용빈도 자료의 갱신정도 프로그램의 용이성 자료구조의 특징 1. 효율성 예를 들어 데이터의 양이 많다면 순차검색보다는 이분검색을 활용하는 것이 좋다 2. 추상화 추상화란 복잡한 자료, 모듈, 시스템, 등으로부터 핵심적인 개념만 간추리는 것을 말한다 3.재사용성 자료구조의 분류 선형 데이터가 일렬로 나열되어 있다. ex. 배..