전체 글

기타 (Other)

Git 관련 읽어볼만한 글

https://news.hada.io/topic?id=11403 Git 형상관리 잘하는 법 | GeekNews하나의 브랜치 전략 수립다양한 전문 분야 지식 있는 팀원이 함께 일하면 워크플로 접근방식 상충될 수 있음이를 방지하기 위해 리더는 하나의 브랜치 전략 세워 모두에게 전파해야 함브랜치news.hada.io https://jvns.ca/blog/2023/11/01/confusing-git-terminology/ Confusing git terminologyConfusing git terminology November 1, 2023 Hello! I’m slowly working on explaining git. One of my biggest problems is that after almost 15 ..

자바스크립트 (JavaScript)

Prettier import 정렬 플러그인 비교

플러그인npm: @trivago/prettier-plugin-sort-imports @trivago/prettier-plugin-sort-importsA prettier plugins to sort imports in provided RegEx order. Latest version: 5.2.2, last published: 2 months ago. Start using @trivago/prettier-plugin-sort-imports in your project by running `npm i @trivago/prettier-plugin-sort-imports`. There are 237 otherwww.npmjs.comnpm: prettier-plugin-organize-imports prettie..

인프라 (Infra)

장고 앱 CI/CD, 무중단 배포 구현기

개요AS-IS기존의 시스템은 다음과 같은 워크플로우로 CD를 진행했습니다.다음 구조에서는 다음과 같은 부분에서 아쉬움을 느꼈습니다.서버에서 직접 도커 이미지를 빌드서버 자원을 더 사용합니다도커 컨테이너 종료후 빌드와 재실행빌드하는 동안 시간이 많이 걸려 서버가 다운타운이 길어집니다빌드후 서버 종료-재실행을 진행해 중단 시간을 줄여도, 여전히 무중단은 아닙니다Nginx 관련Nginx가 같이 재시작하고 있어 무중단 배포가 어려운점그리고 도커에서 실행되고 있어 TLS 인증서 자동 갱신이 어려웠던 점그리하여 해당 구조를 개선하기 위한 작업을 하고자 합니다.TO-BE도커 이미지 저장소기존에 서버에서 도커 이미지를 직접 빌드했던 가장 큰 이유는 도커 이미지 저장소가 마땅하지 않았기 때문입니다.가장 디폴트로 사용할 ..

서버(Server)/장고 (Django)

Django 환경 변수 관리기

AS-IS기존에는 django-environ을 이용하여 .env파일 하나로 환경변수를 관리했다.# Build paths inside the project like this: BASE_DIR / 'subdir'.BASE_DIR = Path(__file__).resolve().parent.parent# 환경 변수 설정env = environ.Env(DEBUG=(bool, True))environ.Env.read_env(env_file=os.path.join(BASE_DIR, ".env"))SECRET_KEY = env("DJANGO_SECRET_KEY")django-environdjango-environ은 .env를 읽는것을 도와주고, 여러 부가적인 기능을 가지고 있지만, 동시에 여러 환경변수 파일을 읽는것..

회고 & 기록

2024-2 ICT 학점연계 프로젝트 인턴십 지원 후기

지원 기업기준1시간 30분 내에 이동 가능한 지역백엔드 직무 모집가능하면 인원 모집 2명이상, 회사 인원도 많을수록 좋음가능하면 자체 서비스학교와 집이 인천에 있기에 판교나 강남쪽은 2시간정도 소요되었기에 부담이 커 지원하지 못했고, 주로 마포구 쪽의 기업이 1시간 10분정도로 이동 가능해 주로 지원하게 되었다.이때까지 프론트엔드쪽 개발을 많이 해오긴 했으나, 원래 하고 싶었던 것은 백엔드 개발이기에 Spring과 Django 경험을 살릴 수 있는 백엔드 쪽 직무를 모집하는 기업에 주로 지원했다.확률을 높이고 여유가 있는 기업을 찾기 위해 인원 모집이 많은 기업을 노렸고, 회사 인원도 많을수록 평가가 더 좋고 배워갈 게 많을 것이라 생각해서 가능하면 회사 인원이 많은 쪽을 골랐으며 또한 잡플레닛도 찾아보..

회고 & 기록

Master Spring Boot 3 & Spring Framework 6 with Java 수강 후기

개요최근에 스프링을 공부하기 위해 강의를 수강했습니다. 국내에서는 김영한님의 강의등 이미 유명하고 다들 추천하는 강의와 커리큘럼이 있지만, K-MOOC에서 지급해준 Udemy 구독권이 있어 Udemy의 강좌를 찾아보았습니다.제가 선택한 강의는 in28Minutes의 Master Spring Boot 3 & Spring Framework 6 with Java 입니다.한국 자막으로 번역도 되어있고, 한글 버전으로는 【한글자막】 Spring Boot 3 & Spring Framework 6 마스터하기! [최신판] 라는 제목으로 제공되고 있습니다.【한글자막】 Spring Boot 3 & Spring Framework 6 마스터하기! [최신판] [유데미] Spring Boot 3 & Spring Framework..

인프라 (Infra)

Azure 기본 IP 주소 vs. 표준 IP 주소

Basic(기본) IP vs. Standard(표준) IPAzure의 IP 주소 가격 정책을 보면 다음과 같이 기본과 표준으로 나누어져 있는 것을 볼 수 있습니다.QnA를 보면 다음과 같은 설명이 별첨되어 있습니다.Q. 표준 공용 IP와 기본 공용 IP는 어떻게 다른가요?A. 기본 공용 IP에 포함된 기능 외에도 표준 공용 IP는 영역 복원력을 제공합니다. 표준 Load Balancer와 함께 사용하면 표준 공용 IP는 고가용성과 영역 복원력을 제공합니다.이와 같이 전반적으로 표준 SKU가 기본 SKU 보다 더 최신의 기능을 제공하는 것을 알 수 있습니다.SKU란? SKU(Stock Keeping Unit)은 Azure에서 제공하는 각 서비스의 세부 유형을 나타내는 식별자입니다- 가상머신을 예로 들면 C..

회고 & 기록

우아한테크캠프 7기 지원 후기

우아한테크캠프우아한형제들의 교육 프로그램인 우아한테크캠프 7기에 지원했습니다.이번에는 Java 백엔드 트랙만이 준비되었고, 이전의 8주→10주로 교육기간이 연장 되었습니다. [모집 마감] 2024 우아한테크캠프 7기 | 우아한형제들 기술블로그 [모집 마감] 2024 우아한테크캠프 7기 | 우아한형제들 기술블로그기존보다 2주 늘어난 교육 기간부터 글로벌 개발자가 될 수 있는 기회까지! 새롭게 꽃단장한 우아한테크캠프 7기 모집을 시작합니다. 모집일정 우아한테크캠프 7기는 4월 3일부터 프로그래머스techblog.woowahan.com 지원 전형은 접수 → 1차 코딩테스트 → 2차 과제테스트 → 서류접수 → 면접 단계로 이루어집니다.커리큘럼또한 기존의 TDD, 클린코드, Spring, JPA 등을 다루었던 교..

기타 (Other)

Github organization force push시 403 오류

문제 상황Github organization의 repository에 git push —force 를 사용하여 커밋 기록을 삭제할때 403 권한 오류가 발생했습니다.remote: Permission to org/repo.git denied to devMuromi.fatal: unable to access '': The requested URL returned error: 403해당 문제는 개인 계정 repository를 사용하거나, organization repository에 단순히 push 할때는 발생하지 않았습니다.개인 repository, 일반 push ⇒ O개인 repository, force push ⇒ O조직 repository, 일반 push ⇒ O조직 repository, force push..

자바 (Java)

자바, SQL 날짜/시간 정리

TL;DRJavaDate는 immutable하지 않고, 레거시LocalDate = 날짜, LocalTime = 시간, LocalDateTime = LocalDate + LocalTimeZoneId: 지역 정보(Asia/Seoul), ZoneOffset: 시간대 정보(+09:00)OffsetDateTime = LocalDateTime + ZoneOffset 로 시간대 정보가 포함됨ZoneDateTime = LocalDateTime + ZoneOffset + ZoneId 로 지역 정보가 포함되어 써머타임등 관리 가능Instant: 1970-01-01T00:00:00Z 를 기준으로 지난 시간을 측정. OffsetDateTime과 비슷하다SQLDATE: 날짜만 저장하며 시간 정보는 포함되지 않습니다.DATETI..