전체보기
잘못된 에러 핸들링과 로그에 관하여
잘못된 에러 핸들링과 로그에 관하여
2024.04.16로그레벨에 관하여 개발을 진행하다보면 로그를 테스트나 서비스 상태나 장애 파악을 위해 많이 쓰게 됩니다. 그래서 단계에 따른 레벨을 사용하게 됩니다. log4j 기준으로 RACE, DEBUG,INFO, WARN, ERROR, FATAL 으로 구분을 지어 사용합니다. ⭐ 로그레벨 정의 TRACE : 추적 레벨은 DEBUG보다 좀 더 상세한 정보를 나타낸다. DEBUG : 프로그램을 디버깅하기 위한 정보를 지정한다 INFO : 상태변경과 같은 정보성 메세지를 나타낸다. WARN : 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메세지를 나타낸다. ERROR : 요청을 처리하는 중 문제가 발생한 경우이다. FATAL : 아주 심각한 에러가 발생한 상태로 시스템적으로 심각한 문제가 발생해 어..
클라우드 서버 제작 및 서버 인프라 설계
클라우드 서버 제작 및 서버 인프라 설계
2023.12.18서버구축에 있어서 올해 프로젝트를 진행하면서 팀장 역할과 Android와 BackEnd 개발을 하게 되었습니다. Spring을 공부하고 있어 서버 개발은 할 수 있었지만, 서버 인프라 설계에 대해 잘모르고 있었습니다. AWS, GCP를 이용하면 시간 절약이 가능했지만 비용문제로 Local 서버로 만들어야 하는 상황이라 학교에서 배운 네트워크 기반과 보안 지식을 꺼내야만 했습니다. 한정적인 자원을 효율적으로 로컬 컴퓨터에 서비스를 설치해서 사용할 수 있지만, 만약 서버가 문제가 생기면 모든 서비스가 문제가 문제가 생기거나, 백업이 불편하다는 점이 있었습니다. 그래서 다른 방법을 찾게 되었습니다. 특히 한정적인 로컬 자원을 잘 활용하며 백업이 유연해야 했습니다. 주변에 어떤 방법이 찾아보던중 이미 자원을 효..
WebRTC란?
WebRTC란?
2023.04.10WebRTC란 WebRTC(Web Real-Time Communication)는 웹과 애플리케이션에서 별다른 소프트웨어 없이 카메라, 마이크 등을 사용하여 실시간 커뮤니케이션을 제공해주는 기술이다 WebRTC의 기술 시그널링 SDP(Session Description Protocol)은 멀티미디어 커뮤니케이션 세션을 설명하기 위한 포맷이다. SDP 자체는 미디어 스트림을 전달하지 않지만, 엔드 포인트 간에 네트워크 메트릭, 미디어 유형 및 기타 관련 속성의 연결에 사용된다. 연결 STUN(Session Traversal Utilities for NAT)은 실시간 음성, 비디오, 메시징 애플리케이션 및 기타 상호작용 통신 부문에서 네트워크 주소 변환(NAT)과 통신하여 Peer의 공인IP 주소를 보내는 것..
Kotlin Coroutines 이란 무엇인가요?
Kotlin Coroutines 이란 무엇인가요?
2023.02.06Coroutines 이란 무엇인가? Kotlin coroutines은 비동적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계된 패턴이다. 코루틴은 Kotlin 1.3 버전에 추가되었습니다. 코루틴의 장점 경량화 코루틴은 실행 중인 스레드를 차단하지 않은 “정지”를 지원하므로 단일 스레드에서 많은 코루틴을 실행할 수 있다.(정지 하는것은 동시 작업을 지원하므로 차단보다 메모리를 절약합니다.) 기본으로 제공되는 취소 지원 실행 중인 코루틴 계층 구조를 통해 자동으로 취소가 전달됩니다. Jetpack통합 많은 Jetpack라이브러리에 코루틴을 완전히 지원하는 확장 프로그램이 포함되어있습니다. Coroutines와 Thread Process와 Thread 프로세스(Proce..
객체지향 코드 설계 5가지 원칙(SOLID)
객체지향 코드 설계 5가지 원칙(SOLID)
2022.09.27코드 설계 원칙(SOLID) SOLID은 SRP(단일책임원칙), OCP(개방 폐쇄 원칙), LSP(리스코프 치환원칙), DIP(의존역전 원칙), ISP(인터페이스 분리 원칙)의 앞글자를 따서 만들어졌다. SOLID를 지키고 설계를 한다면 시간이 지나고 유지보수와 확장이 쉬운 소프트웨어로 개발할 수있고 프로그램 설계에서는 어떠한 원칙을 정하고 그것을 기반으로 프로그램을 작성한다면 원칙 없이 작성한 코드보다 좋은 결과를 볼 수 있다. 단일 책임 원칙 (Single Responsibility Principle) 객체 지향 프로그래밍에서 단일 책임 원칙(Single Responsibility Principle)은 모든 클래스는 하나의 책임만 가지며 클래스는 그 책임을 완전히 캡슐화 해야한다. 클래스가 제공하는 ..
세계에서 가장 강력한 Apple의 M1 Ultra
세계에서 가장 강력한 Apple의 M1 Ultra
2022.03.163월 9일에 Apple Event가 있었습니다. 공개 당시 iPhone13 그린, iPhone SE, iPad Air가 새롭게 발표되었지만 그중에서 제일 눈에 띈 발표가 바로 Apple Silicon중 최고의 프로세서인 M1 Ultra 발표 였습니다. 보자마자 역시 Apple의 혁신적인 기술을 대단하다고 한번더 알게되었습니다. M1 Ultra는 M1 Max를 UltraFusion 기술로 두개 합쳐 만들어진 Apple Silicon입니다. 이 새로운 Soc칩셋은 1,140억개의 트랜지스터를 구성하고 있습니다. 지금까지 출시된 칩중에서 가장 많은 수의 트랜지스터라고하는데, M1 Pro가 337억개, Nvidia RTX3090는 283억개, AMD Ryzen 9 5950x 가 109억개 입니다. 어마어마한 트..
백준 Kotlin 2447번 : 별 찍기 -10
백준 Kotlin 2447번 : 별 찍기 -10
2021.09.252447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 문제 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다. N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다. 입..
백준 Kotlin 2839번 : 설탕 배달
백준 Kotlin 2839번 : 설탕 배달
2021.09.222839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 ..
백준 Kotlin 10250번 : ACM 호텔
백준 Kotlin 10250번 : ACM 호텔
2021.09.2210250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 문제 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다. 문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 ..
백준 Kotlin 2869번 : 달팽이는 올라가고 싶다.
백준 Kotlin 2869번 : 달팽이는 올라가고 싶다.
2021.09.222869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. imp..
백준 Kotlin 1712번 : 손익분기점
백준 Kotlin 1712번 : 손익분기점
2021.09.221712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 문제 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다. 예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다. 노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대..
백준 Kotlin 1152번 : 단어의 개수
백준 Kotlin 1152번 : 단어의 개수
2021.09.221152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 문제 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. 입력 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다. 출력 첫째 줄에..