본문 바로가기

분류 전체보기

(83)
2024년 1회차 정보처리기사 필기/실기 합격 후기 공부방법, 느낀점 이번 2024년도 1회 차 필기, 실기를 응시하고 자격을 취득했습니다. 제가 전공을 바꾸고 주변에서 가장 많이 들었던 말이 "개발자로 취업하는데 정보처리기사는 필요 없어."였습니다.그런 안일한 말만 듣고 준비하지 않고 있었고, 어느 순간 깨닫게 되었습니다.정보처리기사가 필요 없다는 말을 하는 사람들 중에 정보처리기사를 갖고 있지 않은 사람은 없었습니다. 그래서 정보처리기사는 일단 기본적으로 따야겠다는 생각으로 단기간 빠르게 준비했습니다. 1. 필기는 CBT, CBT, CBT 그리고 또 CBT저는 개정된 이후의 필기 교재를 구매해서 일단 1 회독을 시작했습니다.처음 목표는 사실 필기가 널널하니깐 실기까지 잡으면서 간다는 마인드로 공부를 시작했습니다.하지만 책에 나오는 모든 내용을 다 정독하면서 암기하기에는..
해시(Hash)와 암호화(Encryption)의 차이점? 결론을 먼저 말해보면 둘 다 암호화 기법이지만, 해시(Hash)는 단방향 암호화 기법이며, 암호화(Encryption)는 양방향 암호화 기법이다. 즉, Hash는 평문 데이터를 암호화된 데이터로 바꿀 수 있는 단방향 암호화 기법이고, Encryption은 평문을 암호화된 데이터로 바꾸는 암호화와 암호화된 데이터를 평문 데이터로 바꿀 수 있는 복호화가 존재합니다. 1. Hash 해시 알고리즘은 특정 입력 값에 대해서 항상 동일한 결과 값을 리턴하게 됩니다. 해시 입력 값은 다르지만, 해시 결과 값은 동일할 수 있습니다. (여기서 중복이 적게 생길수록 좋은 해시 함수입니다.) 해시만 적용하는 것으로 완벽한 보안이 될까? 사실 어떻게 보안을 해도 어떤 천재 해커나 집요한 해커들에게 뚫릴 가능성이 Zero는 아..
[Spring] @Async 이용하여 비동기 구현하기 비동기 구현을 하려는 이유 프로젝트에서 서버에서 발생하는 5xx Exception을 모니터링하기 위해서 Slack WebHook을 사용해서 구현했습니다. 현재 로직은 5xx 예외가 발생 -> Slack 메시지 전송 -> 클라이언트에게 응답까지의 과정이 동기적으로 진행됩니다. 여기서 사용하고 있는 Slack 서버는 제가 제어할 수 없는 부분이기 때문에 만약 Slack 서버에 지연이 생겨 응답을 늦게 준다면 어떻게 될지 생각을 해봤습니다. Slack 메시지 전송이 지연되어 정작 더 중요한 다음 과정인 "클라이언트에게 응답"이 제대로 수행되지 않는다면... 끔찍한 상황이 벌어질 수도 있다고 생각했습니다. 실제로 Slack 메시지를 보내는 push() 메서드에서 5초의 지연 시간을 주고 테스트 해보니 클라이언트..
[Jenkins] ERROR: script returned exit code 255 이번에 시작한 프로젝트에서 Jenkins를 사용해서 CI/CD 파이프라인을 구성하고 있습니다. develop 브랜치에서 작업을 하고, push를 하면 Jenkins Pipeline이 동작하면서 자동화 배포 작업이 진행됩니다. 우리 프로젝트에서는 다음과 같은 Pipeline이 동작해서 배포를 진행합니다. Git Clone Github Repository의 develop 브랜치에 변화가 발생되면 Jenkins 동작이 시작됩니다. develop 브랜치를 Jenkins 서버로 clone 해서 가져옵니다. DEV-Build 이 과정에서 프로젝트의 Build와 Test를 진행합니다. Deploy Jenkins 서버에서 Develop 서버로 SSH 통신을 통해 배포 스크립트를 실행합니다. 이 글에서는 이 "Deplo..
[Team Ginger] 크리스마스에도 코딩을 하는 사람이 있다? 저는 어드벤트 캘린더 형식의 크리스마스 익명 편지 서비스인 "Ginger Hotel 🎄"의 2023년 이야기를 적어볼까 합니다. 🛠️ 팀진저의 백엔드에서는 이런 기술 스택을 선택했습니다. 저는 백엔드 개발을 맡아서 진행하게 되었습니다. 가장 먼저 했던 것은 기술 스택을 선택하는 일이었습니다. 팀진저에서 선택했던 백엔드 기술 스택은 Nest.js, Typescript, PostgreSQL이었습니다. "Java, Spring으로 공부하고 계신데 왜 Node 기반의 기술 스택을 선택하게 되었나요?" 저에게도 큰 도전이었던 것 같습니다. 팀원 한분이 풀스택으로 참여를 희망하셨어서 Front-End 개발팀에서 선택했던 언어인 Typescript에 맞추기 위함이 가장 큰 이유였습니다. 저도 처음 사용해 보는 기술 ..
[Github Actions x Docker] 자동화 배포 환경 도커로 변경하기 1. 기존 아키텍처와 배포 스크립트 분석 프로젝트 진행 과정에서 초반에 간단한 인프라 설계를 위처럼 진행했습니다. 먼저 EC2(Ubuntu) 내부에 Node 16 버전을 포함해서 필요한 것들을 모두 수동으로 설치했습니다. 그 후 deploy.sh라는 스크립트 파일을 만들어 배포 스크립트를 작성했습니다. 이제 Github Actions에서 SSH 연결을 통해 EC2에 접근하여 deploy.sh를 실행하여 자동화 배포가 되도록 설정하여 완료했습니다. 기존의 스크립트는 아래와 같이 git 저장소에서 프로젝트 최근 파일을 가져온 후 추가된 npm 라이브러리를 확인하고 설치합니다. 프로젝트를 build 하고, 빌드가 성공하면 현재 실행 중인 프로세스를 확인하고 중지시켜 줍니다. 그 후 백그라운드 실행을 위해서 n..
[디프만 x 인프런] CS 완전 정복 스터디 스터디를 시작한 이유 스터디를 시작했었던 가장 큰 이유는 CS 공부를 하는 데 있어서 어느 정도의 강제성이 필요하다고 스스로 느꼈고, 마침 활동하고 있는 디프만에서 인프런 강의를 이용한 "인프런 스터디"를 모집하고 있어서 바로 관심 버튼 꾹 눌렀습니다. 다른 재미있는 강의들도 많았는데, 그중에서 지금 당장 저에게 유용하고 공부를 해도 해도 항상 부족하다고 느껴졌던 CS 스터디였습니다. CS 강의는 인프런에 있는 개발남노씨님의 "기출로 대비하는 개발자 전공면접 [CS 완전정복]" 였습니다. 커리큘럼을 봤을 때, 자료구조, 운영체제, 데이터베이스, 네트워크의 핵심적인 부분들을 깔끔한 예시 영상을 통해서 정리해 주시는 거 같았습니다. 12월 31일까지 계획된 스터디에서 1주에 1개의 과목씩 해결한다고 생각했을..
[백준] 20210번 파일 탐색기 (Java) 20210번 파일 탐색기 문자열 유형을 혼내주고 있는 도중 내가 혼나버렸다. 문제를 골랐는데, 항상 정답률을 보고 적당한 문제들을 골랐었는데 하하 왜 안 보고 골랐을까. 일단 골라버렸고, 코드는 작성해버렸고 문제를 풀었다. 1. 문제 분석 문제를 처음 보고나서 조건이 되게 많다는 것을 느꼈다. 얼핏 보기에는 뭔가 간단하게 그냥 조건 따라서 정렬하면 되는 문제라고 판단됐다. 그래서 선택했을지도... 둘 다 숫자인 경우 둘 중 하나만 숫자인 경우 둘 다 숫자가 아닌 경우 크게 이렇게 3가지 경우로 나눌 수 있었다. 둘 다 숫자라면? 십진법으로 두 숫자의 크기를 비교한다. 더 작은 숫자가 우선순위가 더 높다. 만약 두 숫자의 크기가 같다면, 앞에 0의 개수가 적은 것이 우선순위가 더 높다. 두 숫자의 크기도..