목록전체보기 (117)
마이의 개발 블로그
배경 소프트웨어가 설치되는 환경에 따라 하나의 서버에 접속한 후 그 서버와 연결된 다른 서버에 접속해야하는 경우가 있습니다. 예를 들어 web, WAS, DB서버들로 구성된 환경에서 web은 외부 IP로 접근이 가능하지만 WAS, DB는 web을 통해서만 접근이 가능한 경우가 이에 해당합니다. 이럴 때 사용할 수 있는 방법들을 제가 겪었던 문제 상황들과 함께 제시해보겠습니다. 문제 상황 1. web서버로만 접근이 가능한 WAS 서버에 접속하여 작업을 수행해야할 때 (ssh 이용) 1) 터미널을 통해 web 서버에 접속합니다. 2) 접속된 web 서버의 터미널에서 ssh 명령어를 이용해 WAS에 접속합니다. - 명령어 형식: ssh @ -p - 예를들어 1.2.3.4:1234 에 user라는 이름으로 접속..
배경 스프링과 FastAPI를 각각 사용하여 서버를 개발 하던 중 두 서버 모두 로그를 파일로 저장하는 기능이 필요했습니다. 두 프레임워크 모두 로깅은 기본적으로 제공하고 있었는데 스프링에서는 간단한 설정만으로 파일 크기와 시간(일별 기록)을 모두 고려한 파일 롤링 정책 적용이 가능했지만, 파이썬에는 두 경우에 각각 대응되는 파일 핸들러들을 분리하여 제공하고 있습니다. 파이썬에서도 스프링에서처럼 파일 크기와 시간(일별 기록) 둘 다를 고려한 핸들러가 필요하여 해당 내용을 탐색했습니다. 문제 파이썬의 logging 라이브러리는 TimedRotatingFileHandler와 RotatingFileHandler를 제공합니다. 전자는 이름 그대로 시간을 기준으로 롤링 정책을 적용하는 핸들러이고, 후자는 파일의 ..
배경 SICP 스터디 중 매개변수(parameter)와 전달인자(argument)의 개념이 명확하게 서있지 않았다는 걸 깨닫게 되어 간단히 내용을 정리해봤습니다. 내용 1. 매개변수(parameter) - 함수 정의에 사용되는 변수이며, 함수가 필요로 하는 입력값을 나타냅니다. - 함수의 정의 부분(보통 소괄호 안)에 작성되며, 함수 내에서 변수로 사용됩니다. 2. 전달인자(argument) - 함수 실행 시 실제로 사용되는, 함수 호출 시 전달되는 값입니다. - 함수 호출 시에 지정되고, 함수의 매개변수에 할당됩니다. 한 줄 정리 매개변수는 함수의 정의부에, 전달인자는 함수의 호출부에 작성됩니다. 예시 def say_hi(name): # name = 매개변수 print("Hello,", name) sa..
배경 일명 '마법사책'으로 불리는 SICP(컴퓨터 프로그램의 구조와 해석)의 JS버전을 스터디하며 발제를 맡은 부분을 정리한 내용입니다. 연습문제는 일부만 별도 포스트로 다룰 예정입니다. 내용 서론 ㅇ복합 데이터를 이용한 추상화 방식을 탐구 ㅇ이점? - 접착제 제공: 복잡한 개념(유리수)을 단일 객체로 다룰 수 있게됨(분자 + 분모 연결) - 모듈성 향상: 표현부와 연산부를 분리( 추상화) ㅇ순서 1) 유리수 산술 시스템 구현 2) 닫힘(closure), 접착제를 이용한 복합 데이터 구성 (그래픽 언어 예시) 3) 기호 표현식(symbolic expression) 4) 일반적 연산(generic operation)의 구현과 데이터 지향적 프로그래밍 2.1 데이터 추상화 ㅇ데이터추상화: 하나의 복합적인 대..
배경 스프링 부트 프로젝트에서 메모리 관련 트러블슈팅(점유율, 누수, 가비지 컬렉션 등)을 해야하는 상황에서 필요에 따라 메모리를 줄이면서 가비지 컬렉션(GC) 수행 여부를 눈으로 확인할 필요가 있었습니다. 터미널에서 직접 명령어를 통해 옵션을 입력할 수도 있지만 보통은 IDE를 통해 개발을 하기 때문에 IntelliJ를 기준으로 메모리 크기 지정 실행 옵션을 추가하는 방법을 알아보도록 하겠습니다. 메모리 크기 지정 방법 1. 우측 상단 Configurations 클릭 - Edit Configurations - 스프링 부트 앱 선택 2. Modify options 클릭 - Add VM options 체크 - (새로 생성되는 라인에) -Xms16M -Xmx20M 입력 (각각 최소값, 최대값) - Run 버..