본문 바로가기
반응형

프로그래밍529

리눅스(Linux) 리디렉션(Redirection)을 알아보자 리디렉션(Redirection)리디렉션(redirection)의 사전적 의미는 '방향 전환'이다. '스트림을 리디렉션 한다'라고 하면 스트림을 어느 방향으로 보내는 것일까? 정답은 파일이다. 리눅스의 리디렉션은 스트림을 파일로 저장하거나 파일의 내용을 스트림으로 가져오는 것을 의미한다.출력 리디렉션(Output Redirection)출력 리디렉션은 프로세스의 출력 스트림을 파일로 출력하는 것을 의미한다. 프로세스의 표준 스트림 중 표준 출력과 표준 에러가 출력 스트림이므로 두 스트림을 파일로 리디렉션 할 수 있다. 표준 출력과 표준 에러 외에도 프로세스가 열어놓은 다른 스트림을 파일로 출력할 수 있다.표준 출력과 표준 에러 리디렉션 하기출력 리디렉션의 기본 형식은 다음과 같다.$ command [stre.. 2025. 2. 9.
너와 나의 생일이 같을 확률은? 생일 문제(Birthday Problem) 생일 문제란?N명이 있을 때, 두 명 이상이 같은 생일을 가질 확률을 구하는 문제이다. 이제, 1년 365일 중에서 N명이 생일을 랜덤 하게 가질 때, 같은 생일이 발생할 확률을 구한다.M = 가능한 생일 개수 (1년 365일)N = 사람 인원수회사에 팀원이 한 사람씩 새로 들어왔을 때 생일이 같을 확률을 구한다고 생각하면 이해가 빠르다.생일 문제 공식두 명 이상이 같은 생일을 가질 확률을 계산하는 공식은 다음과 같다.우선, 생일이 중복되지 않을 확률을 곱해주고 1을 빼주면 우리가 원하는 생일이 중복될 확률을 얻을 수 있다.(*이는 여사건의 확률(Complement Rule)이라고 한다.)또는 지수 함수 근사 공식을 사용하여:N = 사람 수 (생일을 가지는 사람의 수)M = 가능한 생일 개수 (365일).. 2025. 2. 7.
자연 상수 e에 대해서 알아보자 e는 어디서 나왔을까?e는 지수 성장(Exponential Growth)을 나타내는 숫자이다.쉽게 말해 '어떤 것이 계속 증가할 때 그 증가율이 일정하면, 그 성장이 e를 따른다.'라고 이해할 수 있다. 일단 정의만 읽어서는 전혀 감이 오지 않는다. 예를 들어보자.💰 e가 등장하는 실생활 예제예제 : 100원을 투자했을 때, 복리 이자가 붙는 경우은행에서 연이율 100%로 돈을 맡긴다고 가정해 보자.즉, 1년 이후에는 원금의 2배(200원)가 된다.하지만  이자를 한 번만 주는 것이 아니라, 더 자주 주면 어떻게 될까? 이자를 1년에 한 번만 받는 경우 (단리)원금 + 이자 = 100 + (100 * 1) = 200 이자를 1년에 두 번 주는 경우 (반년마다 50% 이자)1차 : 100 + (100 *.. 2025. 2. 6.
줄 끝 스타일(Line Ending Style) - 윈도우 스타일 vs 리눅스 스타일 줄 끝 스타일(Line Ending Style)줄 끝(라인 엔딩, Line Ending) 스타일은 운영체제(OS)에 따라 다르게 처리될 수 있다. 이에 대해서 알아보자.1. 윈도우 스타일 / 도스(DOS) 스타일 (CRLF, \r\n)CRLF는 Carriage Return( /r ) + Line Feed( \n )을 의미한다.윈도우에서는 줄 바꿈을 할 때 두 개의 문자를 사용해서 줄 끝을 나타낸다.예를 들어, 메모장 같은 기본 텍스트 편집기에서 줄 바꿈을 보면 CRLF를 사용한다.2. 리눅스 스타일 / 맥 스타일 (LF, \n)LF는 Line Feed( \n )만 사용하는 걸 의미한다.유닉스 기반 시스템(리눅스, macOS)에서는 줄 끝을 나타낼 때 단일 문자 LF를 사용한다.터미널에서 cat, vim,.. 2025. 2. 6.
리눅스(Linux) IPC의 종류에 대해서 알아보자 IPC(Inter-Process Communication)어떤 프로그램은 다른 프로그램과 상관없이 독립적으로 작동하고, 어떤 프로그램은 다른 프로그램과 상호작용하며 작동한다. 또 어떤 프로그램은 하나 이상의 프로세스를 실행하기도 한다. 여러 프로그램이 문제없이 작동하려면 프로세스 간 데이터 교환이나 이벤트 발생을 알릴 수단이 필요하다. 이렇게 프로세스 간 통신에 사용하는 도구를 IPC(Inter-Process Communication)라고 한다. 리눅스에서 제공하는 IPC의 종류와 특징에 대해서 알아보자.파이프(Pipe)파이프(pipe)는 두 프로세스 간 데이터를 전송할 떄 사용하는 IPC다. 파이프는 데이터를 단방향으로만 전송할 수 있다. 한 프로세스가 데이터를 파이프에 쓰면 다른 파이프가 파이프에서 .. 2025. 2. 4.
리눅스(Linux) 포어그라운드 프로세스와 백그라운드 프로세스 포어그라운드 프로세스와 백그라운드 프로세스리눅스는 프로세스를 실행하는 방식에 따라 포어그라운드(foreground) 프로세스와 백그라운드(background) 프로세스로 구분한다. 둘을 나누는 가장 큰 기준은 프로그램과 사용자 간 인터페이스이다.  셸은 한 프로그램을 실행하면 그 프로그램이 종료돼야 다음 명령을 실행한다. 실행 시간이 짧은 프로그램은 별다른 문제가 없다. 사용자와 상호작용이 필요한 프로그램도 문제없다. 하지만 사용자와 상호작용이 필요하지 않고, 실행 시간도 긴 프로그램이라면 어떨까? 셸은 해당 프로그램이 종료될 때까지 대기해야 한다. 그리고 프로그램이 종료되기 전까지 다른 작업을 수행하지 못한다. 포어그라운드 프로세스는 사용자와 상호작용이 기본이기 때문에 사용자 입력을 받을 수 있다. 사.. 2025. 2. 4.