parameter는 함수 정의 시 사용되는 변수로, 함수와 메서드의 입력 변수명을 의미한다. 반면, argument는 함수 호출 시 넘기는 변숫값을 의미한다. 또한, 인수와 인자는 같은 말이지만, 매개변수와 인자(인수)는 다른 말이라는 것을 잊지 말아야 한다. ✨시작하며 개발을 공부하며 헷갈려했던 parameter와 argument의 차이에 대하여 정리해 보았다. Prameter(매개변수) 함수와 메서드 입력 변수명(Variable)으로, 함수 정의 시 사용되는 변수를 말한다. function plus (num1, num2) { return num1 + num2; } 여기서 num1과 num2는 parameter이다. Argument(인자) 함수와 메서드의 입력 값(Value)으로, 함수 호출 시 넘기는..
JPEG 이미지임에도 불구하고 파일 업로드가 되지 않아 파일 시그니처를 체크하게 되었다. 결과적으로, 문제의 파일이 실제로는 PNG 파일이었고, 확장자를 수정하여 업로드하니 정상적으로 작동하는 것을 확인했다. 이미지 파일 업로드 중 에러 발생 시, 파일 시그니처를 체크하라는 교훈을 얻었다. 원인 Metadata metadata = ImageMetadataReader.readMetadata(f1); 이미지 파일이 업로드가 되지 않는다는 이슈를 전달받고 디버깅을 진행하던 중, 위의 코드에서 File format is not supported라는 에러가 발생하는 것을 파악했다. jpg 확장자인 다른 파일들은 업로드되는데 이 파일이 타입 에러로 업로드되지 않는다는 게 이상해 파일 타입을 검사하는 코드를 추가했다..
게시글의 예약번호 첫 글자가 3인지 아닌지를 charAt을 사용해 판별하던 중 문제가 발생했다. 이를 해결하기 위해 java.lang.String 클래스의 substring() 메서드를 활용하여 예약번호 첫 글자를 잘라내고, 비교 연산자를 사용해 3인지 아닌지를 검증했다. 이 과정에서 ==와 eq의 사용에 대한 고민이 있었으나, GPT의 조언을 따라 특정 상황에서 둘 중 어느 것을 사용해도 큰 차이가 없음을 알게 되었다. ✨시작하며 전자정부 프레임워크에서 프로젝트 수행 중 게시글의 예약번호의 첫 글자가 3일 경우와 아닐 경우를 charAt을 사용해 구분해주었다. charAt을 사용해 구분하는 것이 잘못된 방법이었는지 예약번호의 첫 글자가 3임에도 계속 eq쪽 jstl이 아닌 ne쪽 jstl을 탔다. 그래..
lucy-xss-servlet-filter와 multipartFilter 적용 후 이슈가 발생했다. CMS에서 Ckeditor를 통해 작성한 글에서 태그가 그대로 노출되는 현상을 발견하고, lucy-xss-servlet-filter-rule.xml의 url-rule-set 수정을 시도했으나 실패했다. 이후 XssPreventer.unescape를 이용한 특수문자 역치환 작업을 수행하여 문제를 해결했다. ✨시작하며 전자정부 프레임워크에서 프로젝트 수행 중 lucy-xss-servlet-filter와 multipartFilter를 적용한 후, 다시 기능 개발을 하며 테스트 및 수행을 하고 있었다. CMS에서 Ckeditor를 통해 글을 작성한 다음 Reservation Detail 페이지에서 태그가 그대로 ..
Board Name을 확인하고 비회원을 처리하는 과정에서 문자열 비교를 위해 == 연산자를 사용했으나, 에러가 발생하고 말았다. 문자열을 비교할 때는 == 연산자 대신 equals 메서드를 사용해야 한다는 것을 알게 되었다. == 연산자는 객체의 주소 값을 비교하는 반면, equals 메서드는 객체의 값 자체를 비교하는 차이가 있다. ✨시작하며 전자정부 프레임워크 기반 프로젝트 중 게시판 Board Controller에서 Board Name이 지정한 값과 동일할 경우 해당 게시판에서 session값 검증을 통해 비회원을 따로 처리하는 조건문을 만들었다. 그런데 여기서 == 연산자를 사용하여 문자열을 비교하는 바람에 비회원일 경우에도 if문에 걸리지 않고 게시판 화면으로 정상적으로 넘어가버렸다. 기존의 코..
filterMultipartResolver를 거치면서 lucy 필터가 적용되지 않아 web.xml에 multipartFilter를 추가하였으나, 이로 인해 첨부파일 업로드 시 500 에러가 발생하였다. 이를 해결하기 위해 server.xml 및 context.xml을 수정하였다. server.xml은 서버의 실행 시점에 동작을 준비하는 xml 문서로, context-path 설정이 가능하다. 반면 context.xml은 웹 어플리케이션의 지원을 명시해주는 파일로, 웹을 읽어 실행하고 DB를 연결하는 기능을 수행한다. ✨시작하며 전자정부 프레임워크에서 프로젝트 수행 중 lucy-xss-servlet-filter를 사용해 XSS 취약점을 조치 하는데 filterMultipartResolver를 거치게 되면 ..
JSP에서 페이스북 피드 게시물 정보를 크롤링하는 방법을 알아보자. 페이스북 개발자 계정과 페이스북 앱을 준비하고, 그래프 API를 사용해 액세스 토큰을 발급받는 과정을 거친다. 단기, 장기, 영구 액세스 토큰의 발급과 연장 방법에 대해 설명하고, JavaScript 코드를 통해 사용자의 게시글을 불러오는 방법을 제공한다. ✨시작하며 업무 중 JSP에서 페이스북 피드 게시물 정보를 크롤링하는 작업이 필요해졌다. 해당 기능 구현을 위해서는 페이스북 개발자 계정과 페이스북 앱이 필요하다. API 연동을 위한 사전 준비는 아래를 읽어보고 참고하면 된다. 사전 준비 API를 이용하기 위해서는 1. 페이스북 개발자 계정과 2. 페이스북 앱이 필요하다. 먼저 Meta for Developers에 접속한 후 기존 페..
JSP를 이용해 인스타그램 피드를 크롤링하는 방법에 대한 디테일한 가이드. 페이스북 개발자 계정과 페이스북 앱, 인스타그램 프로페셔널 혹은 비즈니스 계정이 필요하며 API 연동을 위한 사전 준비에 대한 설명을 시작으로, 앱 생성 및 설정, 플랫폼 추가, API 설정 등의 과정을 차근차근 안내한다. 단기 액세스 토큰을 발급받아 장기 액세스 토큰으로 변환하는 방법, 사용자 프로필과 미디어를 가져오는 방법, 게시글 불러오기 등 세부적인 과정까지 자세히 설명되어 있다. 본 가이드를 따라하면 JSP에서 인스타그램 피드 게시물 정보를 효과적으로 크롤링할 수 있다. ✨시작하며 업무 중 JSP에서 인스타그램 피드 게시물 정보를 크롤링하는 작업이 필요해졌다. 해당 기능 구현을 위해서는 페이스북 개발자 계정과 페이스북 앱..
시작하며 Notion은 다양한 템플릿이 존재한다. 그중에서 공유받은 템플릿을 그대로 복제하고 싶다면 페이지를 복제하면 된다. 페이지 복제를 하는 방법은 간단하다. 먼저, 복제하고 싶은 Notion 페이지에 접속한다. 여기서는 예시로 블로그에 공유한 독서 노트 템플릿을 사용할 것이다. [Notion] 독서 노트(독서 기록) 무료 템플릿 공유 개요 독서 내용을 기록할 수 있는 Notion 페이지를 공유할까 한다. 평소 기록하는 것을 좋아하거나, 책을 읽고 무언가 기록하는 곳이 필요했다면 한번쯤 사용해보는 것도 나쁘지 않을 것 같다. 템 kgyujin.tistory.com 복제 방법 해당 Notion 페이지에 접속 후, 상단에 위치한 복제 버튼을 클릭한다. 기존에 Notion 로그인을 해두었다면 바로 워크스페..
CMD/CTRL과의 조합 키 설명 n 새 페이지 생성 p quick find 기능 실행 [ 뒤로 가기 ] 앞으로 가기 u 상위 페이지 이동 \ 사이드바 접기·펼치기 k 링크 e 인라인 코드 블록 enter 토글 접기·펼치기 CMD/CTRL + SHIFT의 조합 키 설명 p 새 페이지 경로 지정 n 새 창에서 열기 l 다크모드 전환 m 코멘트 t 전체 토글 접기·펼치기 마치며 이외에도 더 다양한 단축키 조합이 존재하며, 이는 아래 도움말 센터에서 볼 수 있다. 키보드 단축키 – Notion (노션) 도움말 센터 Notion은 키보드와 Markdown 단축키를 완벽하게 갖추고 있어 마우스를 쓰지 않고도 필요한 모든 일을 할 수 있습니다 ⌨️ www.notion.so
✨시작하며 독서 내용을 기록할 수 있는 Notion 페이지를 공유할까 한다. 평소 기록하는 것을 좋아하거나, 책을 읽고 무언가 기록하는 곳이 필요했다면 한번쯤 사용해보는 것도 나쁘지 않을 것 같다! 템플릿 설명 및 간단한 사용법 보기 형식 표 달력 보드 표 List 달력 Calendar 보드 Status Board 독서 노트 페이지 표와 달력, 보드 형식으로 기록한 노트를 확인하고 관리할 수 있다. 기능 도서명 (Name) 독서 시작일 (시작일) 독서 종료일 (종료일) 저자명 (저자) 평점 독서 진행 상태 (상태) 보유 여부 느낀 점 배운 점 궁금증 메모 (인상깊은 구절, 기록하고 싶은 내용 등) 노트를 열면 차례로 세부적으로 기록을 남길 수 있도록 기본 템플릿을 제작해두었다. 느낀 점과 배운 점, 궁금..
제목 # 제목1 ## 제목2 ### 제목3 제목1에서 제목3까지 작성할 수 있다. 목록 (글머리 기호) - 글머리1 * 글머리2 입력 기호는 다르지만 출력 결과는 동일하다. Tab키와 Shift Tab키를 통해 들여 쓰기를 자유롭게 조절할 수 있다. 글자 모양 (텍스트 효과) *기울임2* _기울임1_ **볼드2** __볼드2__ 효과를 주고 싶은 영역을 선택한 다음 Ctrl i키를 누르면 기울임을, Ctrl b를 누르면 볼드 효과를 적용할 수 있다. 코드 블록 이것은 `인라인 코드 블록` 입니다. ``` 이것은 코드 블록 입니다. 코드 블록으로 선택하고 싶은 영역을 잡고 백틱을 입력하면 해당 영역에 코드 블록이 생성된다. 코드 블록의 기능으로만 사용해도 좋지만, 특정 부분을 편하고 빠르게 강조하기에 용이..
클래스, 메서드, 인스턴스 등의 기본 개념과 활용 예시를 다루며, 각각의 용어가 어떻게 코드 내에서 작동하는지를 이해하는 데 도움을 준다. 이를 통해 절차 지향 프로그래밍에서 객체 지향 프로그래밍으로의 전환이나 코드의 가독성 향상, 중복 선언을 피하는 방법 등에 대해 배울 수 있다. 또한, 클래스와 인스턴스의 차이, static의 사용, 생성자와 this의 활용 등에 대한 설명도 포함되어 있다. OOP 객체 지향 프로그래밍(OOP, Object Oriented Programming)은 클래스를 중심으로 프로그램의 구조를 만들어나가는 컴퓨터 프로그래밍 방법론을 의미한다. 이런 방법론을 언어 차원에서 제공하는 언어를 객체 지향 언어라고 한다. 또, 메서드를 다른 컴퓨터 언어에서는 function이나 subr..
람다 표현식을 통한 함수형 프로그래밍, 스트림 API를 사용한 데이터 추상화, java.time 패키지를 이용한 날짜와 시간 API의 변화, 그리고 나즈혼을 통한 자바스크립트 엔진의 변화 등에 대해 자세히 알아볼 수 있다. 각 기능의 특징과 예시를 통해 Java8의 변화와 발전을 이해하는 데 도움을 준다. 특히, 기존 방식과 비교하여 Java8에서 어떤 개선점이 생겼는지에 대해 집중적으로 다루고 있다. Java8 람다 표현식 (Lambda Expression) 함수형 프로그래밍 식별자 없이 실행할 수 있는 함수 표현식으로, 익명 함수 (anonymous function)라고도 부른다. 메소드를 람다 표현식으로 표현하면 클래스를 만들고 객체를 생성하지 않아도 메소드를 사용할 수 있으며 메소드의 매개변수로 ..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.