전체 글 363

[Java] Clean Code가 무엇이고 왜 사용해야 하는가

오늘은 클린코드에 대해 알아보려고 합니다. Clean Code의 대략적인 개념에 대해서 알아보고, 추가로 클린 코드의 중요성과 적용 방법에 대해서도 예시를 들어 설명드리겠습니다.  Clean CodeClean Code does one thing well, Clean Code is simple and direct단순하여 읽기 쉽고, 각 역할마다 주어진 하나의 일만 담당하며, 복잡하거나 모호하지 않은 코드이를 통해 프로그램의 동작을 보장하는 것뿐만 아니라, 코드 자체가 가독성이 뛰어나고 유지보수가 쉬워집니다원하는 로직을 빠르게 찾을 수 있는 코드이자 모든 팀원이 이해하기 쉽도록 작성된 코드Importance of Clean Code코드의 가독성이 떨어진다면 해당 코드가 무슨 일을 하는 코드인지, 어떤 메커니..

Java/Java Concept 2024.07.24

[Frontend] localStroage vs SessionStorage

오늘은 웹 브라우저에서 클라이언트 측 데이터를 저장하는데 사용되는 메커니즘인 localStorage, SessionStorage에 대해 알아보겠습니다.   HTML5를 사용하기 시작한 이래로 클라이언트 브라우저에 정보를 캐시하거나 저장하는 다양한 옵션이 제공되었습니다. 이전에는 브라우저에 데이터를 저장할 때 쿠키만 사용했지만, 제한적인 용량과 보안적인 문제로 인한 한계가 존재했습니다. 이에 대한 개선안으로 localStorage, SessionStorage가 도입되었는데, 이 두 개의 특징과 차이점에 대해 간단하게 설명드리겠습니다. localStorage저장방식: 웹 브라우저에서 키/값 쌍형태로 저장합니다. (로컬 컴퓨터에 저장)유지기간: 영구적으로 데이터 저장(도메인별로 지속), 브라우저를 닫아도 데이..

JavaScript 2024.07.11

[Spring] Spring Batch Architecture & Component

오늘은 스프링 배치에 대해서 포스팅하려고 합니다. 스프링 배치가 무엇이고 왜 사용하는지에 대해 설명드리겠습니다.Spring Batch는 대용량 데이터를 처리하기 위한 프레임워크(이 작업을 "자동화"하여 "시스템의 부하를 줄이고 효율적인 데이터 처리"가 가능하여 사용)로서, 스프링 프레임워크 위에서 동작합니다. Batch 작업이라고 하면, 논리적, 물리적으로 관련된 일련의 데이터를 그룹화하여 일괄 처리하는 작업입니다. Scheduler 기능과는 엄연히 다른 기능인데, Spring Batch에서도 스케줄러 기능과 함께 사용할 수 있습니다.  Spring Batch 특징확장성과 성능: Spring Batch는 대용량의 데이터를 효율적으로 처리할 수 있는 기능을 제공합니다 (멀티스레딩, Chunk 기반 처리, ..

Java/Spring 2024.07.05

[Java] Netty (Concept, Architecture, Component, Work flow)

오늘은 Java 기반 비동기 이벤트 중심의 네트워크 프레임워크인 Netty에 대해서 알아보려고 합니다. 회사에서 WebSocket 통신을 위해 Netty를 도입했지만, 막연히 소켓 통신을 위한 프레임워크 정도로만 인지하고 있었고 세부적인 내용은 모른 상태였습니다. 저는 Netty를 통해 네트워크 소켓 통신이 어떻게 이루어지고, 아키텍처와 동작과정에 대해 분석할 겸 하나씩 정리해보려고 합니다. (물론 웹소켓이 아닌 다양한 많은 프로토콜을 구축할 수 있습니다)  Netty를 개념과 다양한 컴포넌트, 장점(Blocking I/O 방식과 차이를 곁들여서) 및 사용 목적에 대해 상세히 설명드리겠습니다. Netty자바 기반의 비동기 이벤트 중심의 네트워크 애플리케이션 프레임워크유지 관리가 용이한 고성능 프로토콜 서..

Network 2024.06.27

[대만 여행🇹🇼] 2024.06.16 3일차 (타이베이 메인역, 닝샤 야시장, 삼형매 빙수, 까르푸 꾸이린점, 대만 이자카야, 중산역 산책)

3일 차에는 원래 단수이(영화: 말할 수 없는 비밀의 촬영지)를 가려고 했지만, 부득이하게 비가 와서 유동적으로 움직였습니다.  점심 식사를 하러 숙소 근처에 위치한 타이베이 메인역으로 이동했습니다. 가게가 매우 많아 폭립과 양식 중에 고민하던 중, 제가 양식집에 가자고 해서 양식을 먹었습니다 (너무 맛이 무난해서 미안했습니다. 돌아갔으면 폭립을 먹었을 것 같습니다)  맛이 그냥 무난했습니다. 한국에서 먹는 양식보다 맛없으며, 가격은 한국이랑 얼추 비슷한 것 같습니다.  식사를 다 마치고 시먼딩 쪽에 빙수를 먹으러 왔습니다. 손님이 엄청 많았고, 습하고 더운 날씨라 빙수를 먹으러 오는 사람들이 오가는 것을 볼 수 있었습니다. 추가로 벽지에 한국어가 엄청 많아서 놀랐습니다.  빙수를 다 먹고 대만에서 유명..

일상/여행 2024.06.19

[대만 여행🇹🇼] 2024.06.15 2일차 (시먼딩, 타이베이 101, 딘타이펑 맛집 탐방)

2일차에는 본격적으로 계획 리스트를 실천하였습니다.  우선 숙소에서 나와 대만의 명동으로 불리는 시먼딩에 훠궈를 먹으러 갔습니다. 진짜 사진에는 사람이 많이 없어 보이지만, 거리를 걸으면 걸을수록 많은 사람들을 볼 수 있었고 한국인 관광객 분들도 많이 본 것 같습니다.훠궈가 진짜 정말 맛있었고, 식당 직원분도 너무 친절했습니다. 더불어 대만에는 QR 시스템이 잘 되어있어 음식 주문도 편했던 같습니다. (식당 1군데 빼고 전부 QR로 주문)  모든 음료 및 맥주가 무료였으며 후식으로 하겐다즈도 야무지게 먹어줬습니다. 인당 4만 원의 값어치를 한 것 같아 만족스러웠습니다. 이제 소화를 시킬 겸 거리를 걷다가 말로만 듣던 대만 무지개 횡단보도를 보게 되었습니다.여기에서 한국인도 많이 보고, 사진 찍는 사람도 ..

일상/여행 2024.06.19

[대만 여행🇹🇼] 2024.06.14 1일차 (대만 입국 절차와 타오위안 국제 공항 -> 호텔(타이베이 메인역)으로 이동)

오늘은 해외여행 관련 포스팅을 하려고 합니다. 나중에 여행 갈 때 도움도 될 것이고 소중한 추억으로 남기기 위함입니다.  한국과도 되게 친숙한 타이베이에 다녀왔는데요. 입국 과정과 eSiM 설정 오류 대처, 비행기 출발 시간 지연, Lucky draw(대만 여행 지원금), 도착 후 호텔로 이동하는 상세한 내용을 기록하려고 합니다. 출발 시간이 밤 11시인데도 불구하고 정말 많은 일이 있었네요. 이제 차근차근 설명드리겠습니다. 우선 여자친구와 사전에 만나 김포공항역에 존재하는 와우익스프레스로 환전을 먼저 해주었습니다. 알아보니 한국에서 환율우대정책을 받을 수 있는 방법이 사설 거래소 환전과 와우익스프레스인데, 이번에는 와우익스프레스를 선택하였습니다. 환전을 하고 체크인을 하러 바로 공항으로 이동하였습니다...

일상/여행 2024.06.18

[Linux] Curl(Client url) 명령어에 대해 알아보자

curl은 다양한 통신 프로토콜을 이용하여 데이터를 전송하기 위한 라이브러리와 명령줄 도구를 제공하는 컴퓨터 소프트웨어 프로젝트입니다. (https://ko.wikipedia.org/wiki/CURL)즉, curl은 프로토콜을 이용하여 url 구문을 입력해 인터넷에서 파일을 포함한 데이터를 가져오거나 보내는 명령줄 도구라고 보시면 됩니다. 수많은 프로토콜을 지원하기에 다양한 데이터를 주고받기에 용이한 도구입니다.  웹 페이지 요청 및 다운로드 (HTTP): URL을 통해 웹 페이지 내용을 가져올 수 있습니다.파일 업로드 및 다운로드: FTP, SFTP를 통해 파일을 업로드하거나 다운로드할 수 있습니다.API: RestAPI나 기타 웹 서비스를 호출하여 데이터를 주고받을 수 있습니다.  Curl -V Cu..

Linux 2024.06.04

[Frontend] JavaScript 디버깅을 위한 크롬 개발자 도구에 대해 알아보자

JavaScript 디버깅뿐만 아니라 많은 기능을 제공해 주는 크롬 개발자 도구가 무엇이고 왜 필요한지에 대해 설명드리도록 하겠습니다. 중점은 디버깅("Console", "Source" 탭에서 활용)이지만, 디버깅뿐만 아니라 크롬 브라우저에서 제공해 주는 다양한 기능에 대해서도 설명드리겠습니다.   html, css, javascript는 서버의 어떤 요청을 받았을 때 내려받게 되는 자원들입니다. 이 언어들은 컴파일이 된 상태에서 불러오지 않고, 런타임 시점에 언어가 브라우저에서 해석됩니다. 이들이 잘 동작하지 않을 때 크롬 개발자 도구를 띄워놓고 쉽게 찾을 수 있게 됩니다.  또한 HTTP 통신과정, HTML 구조, CSS 스타일, Javascript 디버깅, 프로파일링, 성능 진단 등을 할 수 있습니..

JavaScript 2024.06.01

[Spring] Ajax 통신에서 Csrf Header, Token 정보를 넘겨주는 방법

오늘은 CSRF(Cross-site request forgery) 공격을 막기 위한 방법에 대해 알아보려고 합니다. 우선 Spring Security에서 csrf 설정을 활성화한다는 전제가 있어야 하고, 이 전제를 기반으로 Ajax Post 요청에서 Request Header에 Csrf Header, Token 정보를 넘겨줄 수 있게 됩니다.  CSRF 공격이 무엇인지 알아보고, 왜 Client의 Request에 csrf 설정을 해줘야 하는지까지 설명드리겠습니다.  CSRF(Cross-site request forgery, 사이트 간 요청 위조) 사이트 간 요청 위조는 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹 사이트에 요청하게 하는 공격하나의 사례..

Java/Spring 2024.05.29