전체 글

나만의 기록... 까먹지말자...
· Java
🤔디자인 패턴은 소프트웨어 디자인에서 공통된 문제들을 해결하는 데 도움이 되는 설계 방법론 ⚡디자인 패턴에 대해서 알아야 되는 이유 패턴에 대해 아무것도 알지 못해도 프로그래머로 일할 수 있다는 것이다. 실제로 많은 프로그래머가 패턴에 대한 아무런 지식 없이 업무를 수행하고 있다. 또 자신도 모르는 사이에 일부 패턴들을 구현하고 있는 경우도 있다. 그럼에도 왜 패턴을 배워야 하는지, 그 이유들을 정리해 보겠다. 디자인 패턴은 소프트웨어 디자인의 일반적인 문제들에 대해 시도되고 검증된 해결책들을 모은 것이다. 이러한 문제들을 다루지 않더라도 패턴을 알고 있으면 여전히 쓸모가 있는데, 그 이유는 패턴을 배우게 되면 객체 지향 디자인의 원칙들을 사용해 많은 종류의 문제를 해결하는 방법들을 배울 수 있기 때문입..
일단 내용을 정리하기에 앞서 내가 추천받은 책을 한 권 소개를 하려고 한다. 추천해 주신 분은 같이 개발하시는 선임님께서 먼저 읽어 보고 추천을 해주셨고 구매를 하게 되었다. 책의 내용을 간략하게 소개하자면 책을 지은 사람은 마틴 파울러라는 ThougthWorks의 수석 과학자이며 우리가 개발을 하면서 한 번쯤은 들어본 IOC(제어 역전)와 DI(의존성 주입)의 용어를 대중화시킨 분 이시다. 😲 리팩터링에 대해서, 리팩터링의 이유, 리팩터링을 해야 할 곳을 찾고 싶다면?, 리팩터링 실습 등 내용이 굉장히 알차다. 물론 책을 한번 쭉 정독했다고 해서 개발된 소스를 다이내믹하게 수정한다거나 바로 눈에 띄는 곳이 별로 없을 수 있지만 개발을 하면서 "아 이거 책에 있었던 거 같은데 한번 봐야겠다." 하면서 계..
· DevOps
⚡git 명령어 설명 git에서 자주 사용되는 명령어를 중심으로 내용을 정리 해보려고 한다. 👉git help [명령어] 가장 기본적인 help 명령어 이다. 명령어를 입력하는 부분에 원하는 명령어를 입력하면 자세한 설명과 사용 방법을 알수 있다. 👉git init git init은 새로운 git 저장소를 생성합니다. 명령어를 실행할 때 현재 디렉토리가 git 저장소로 초기화되며, .git 디렉토리가 생성된다. 👉git clone git clone은 기존의 git 저장소를 복제한다. 원격 저장소의 URL을 입력하면 해당 저장소를 로컬 컴퓨터로 복제한다. 👉git add git add는 변경된 파일을 staging area에 추가합니다. 새 파일, 수정된 파일, 삭제된 파일 등을 staging area에 ..
· CS
(하아.... 😭😭😭) Git.... Git에 대해서 개념 및 어떻게 사용해야하는지에 대해서 다시 한번더 정리를 하겠지만.. 내가 경험해본 위험성에 대해서 공유 하고 정리를 해보려고 한다. 회사에서 같이 협업을 해서 웹 개발을 진행중이였으며, Git으로 형상 관리를 하고 있었다. 우리는 이미 많은 커밋과 푸시를 했으며 작업이 어느정도 진행된 상태였다. 나는 커밋된 특성 작성자의 변경이 필요했고 해당 부분에 대한 내용을 찾기 시작했다. 검색을 해본 결과 일괄로 저장하는 스크립트를 찾아서 적용을 했다. 스크립트는 아래와 같다. git filter-branch -f --env-filter ' WRONG_EMAIL="체크할 이메일" NEW_NAME="변경할 사용자명" NEW_EMAIL="변경할 이메일" if [..
· Spring
1. 연동 이유 및 사용했던 부분에 대한 내용 정리 회사 내부의 래거시 시스템인 근태 관리 시스템 고도화 개발중 사용자의 근무 시간 및 근무 정책에 따라서 동적으로 근무 정보를 표현하는 부분이 존재했다. 관리자가 정책 변경 또는 사용자가 근무 시간을 변경 (초과 근무, 휴가, 출장등) 을 신청 하고 결재하게 되면 사용자의 스케줄이 변하게 되고 해당 사용자 별로 각각의 유동적이 스케줄을 가지게 됩니다. 근무 정보를 구할때, 사용자 정보, 신청 정보, 이미 정산이된 근무량 등등(...😱) 너무 많은 데이터를 조합해서 근무 정보를 구해야한다. 고객사의 기준으로 년 단위 조회 또는 구축이 된지 오래된 고객사의 경우는 조회가 너무 느려지는 이슈가 발생을 하면서 방법을 찾기 시작했다. 쿼리 튜닝, DB 인덱스 추가..
· CS
⚡네트워크란? 기본 정의 정의로는 Net + Work의 합성어로 컴퓨터들이 통신 기술을 이용하여 그물망처럼 연결된 통신 이용 형태를 의미한다. 쉽게 말하면 두대 이상의 컴퓨터들을 연결하고 서로 통신할 수 있는 것이라고 정의할 수 있다. ⚡프로토콜 각 컴퓨터는 통신을 통해서 데이터를 주고받는 형식을 정할수 있었는데 A 컴퓨터에서 보내는 데이터를 제목, 날짜, 형식, 내용 순서로 보냈지만, B 컴퓨터에서는 제목, 내용, 날짜, 형식으로 받도록 하다보니 서로의 통신 내용을 이해하는데 어려움을 격게 되었고, 이때 주고 받는 데이터를 어떻게 할 것인지 정하게 되었다. 이러한 약속된 데이터 형식을 프로토콜이라고 부르게 되었다. ⚡허브 두대의 컴퓨터를 1:1로 연결할 때는 직접 연결을 해서 사용하면 된다. 하지만 엄..
· CS
HTTPS는 Hyper Text Transfer Protocol Secure Socket layer의 약자 ⚡등장 배경 HTTPS(HTTP Secure) 의 경우 HTTP/1.1이 개발되고 얼마 뒤에 등장했다. HTTP 자체는 암호화되지 않은 텍스트로만 통신하기 때문에 중간에 누군가 통신내용을 가로채거나 사용자의 정보를 탈취할 수 있는 문제점이 있기 때문이다. 이를 방지하기 위해서는 HTTP 통신에 신뢰성과 무결성을 추가할 필요를 느끼게 된다. HTTPS는 이문제를 대화상대가 서로 자신이 신뢰할 수 있음을 증명하는 인증서를 사용하고 통신내용은 SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security) 라는 프로토콜로 암호화하는 방식으로 해결했다. ⚡SSL, T..
· CS
⚡프로세스(Process)란? 프로세스는 운영체제에서 실행 중인 프로그램을 말한다. 간단히 말해, 컴퓨터에서 실행 중인 프로그램이 하나의 프로세스이다. 프로세스는 각자의 가상 메모리 공간을 할당 받아 실행되며, 서로 독립적으로 실행된다. ⚡스레드(Thread)란? 스레드는 프로세스 내에서 실행되는 작은 작업 단위이다. 프로세스는 여러 개의 스레드를 가질 수 있으며, 각 스레드는 프로세스의 가상 메모리 공간을 공유한다. 이 때, 각 스레드는 다른 스레드와 독립적으로 실행되지 않으며, 프로세스 내의 자원을 공유하게 된다. ⚡프로세스의 특징 프로세스는 운영 체제에서 실행되는 실행 단위로, 다음과 같은 특징을 가지고 있다. 자원의 독립성: 프로세스는 운영 체제로부터 자신만의 주소 공간, 스택, 레지스터, 파일 ..
· CS
⚡HTTP 진화 과정 페이지를 열고, 개발자 도구에서 네트워크 탭을 통해서 확인한 프로토콜의 정보이다. (어떤 페이지에서든 확인 가능) 위 사진의 프로토콜 컬럼을 보면 http/1.1, h2, h3 를 확인할 수 있다. 이는 각 통신이 HTTP/1.1, HTTP/2, HTTP/3 을 이용했다는 것을 알 수 있다. 여기서의 의문점은 하나의 웹 페이지에서 서로 다른 버전의 HTTP가 사용되고 있다는것이다. 그래서 이번에 정리해볼 내용의 경우 HTTP의 배경과 버전별 특징을 정리해보려고 한다. 왜 이렇게 변화가 되었는지를 알아야 기억하기도 편하다고 생각이 된다. HTTP/1.1전에 HTTP/1.0과 HTTP/0.9 라는 두 개의 버전이 더 있지만, 이 부분의 경우 좀 더 깊게 공부하고 싶은 경우 추천한다. 간..
HaeTae
soTech