제임스딘딘의
Tech & Life

개발자의 기록 노트 149

TCP : BBRv2 및 CUBIC 의 공존

최근 TCP Congestion Control Algorithm에 대해 살펴볼 기회가 생겨서 틈틈히 공부중이다. 우리말로는 혼잡 제어 알고리즘 이라고도 부르는 것 같고, 줄여서 CC Algorithm 으로 부르기도 하는 것 같다. 나는 편의상 CC 알고리즘 이라고 하겠다. 리눅스 커널 TCP 스택의 기본 CC 알고리즘으로는 CUBIC 이란 것이 사용되고있다. 그런데 BBRv2 라는 또다른 CC 알고리즘을 구글에서 개발하고 있는데, 이것이 최근 조명을 받고 있다. 나는 이 둘에 대해 관심을 가지고있으며, 실제 망에서 이 둘이 혼재되어 동작할 때 어떤 일이 발생 할 지 상당히 궁금하다. 실제 네트워크 망은 각종 라우터들이 존재할텐데, 이들의 버퍼크기, AQM 로직, RTT, Send Rate도 제각각일 것이..

gRPC-java 프레임워크 로그 출력 설정

gRPC java framework를 사용해서 클라이언트와 서버를 구성하고, 서로 통신하도록 만들었다. 이후, 디버깅이 필요하여, gRPC java framework의 소스코드를 살펴보니, java.util.logging 패키지를 사용하여 로그 출력코드가 삽입되어 있는것을 보았다. 이 내용을 콘솔에 출력하는 방법을 찾아보았다. [logging.properties] # Create a file called logging.properties with the following contents. handlers=java.util.logging.ConsoleHandler io.grpc.level=FINE java.util.logging.ConsoleHandler.level=ALL java.util.logging...

마우스 위치 강조하기 (feat. PowerToys)

윈도우키 + R 을 눌러 '실행' 창을 띄운 뒤 'PowerShell' 을 넣고 확인을 눌러 PowerShell을 실행한다. PowerShell에서 아래 명령을 넣고 엔터. winget install Microsoft.PowerToys --source winget 아래와 같이 윈도우 패키지 매니저가 PowerToys 를 다운로드 후 설치 한다. 잠시 기다리면 설치 성공 이란 메세지와 함께 설치가 완료되며, PowerToys가 자동으로 실행된다. 마우스 유틸리티 의 설정열기 버튼을 누른다. 1. 마우스 찾기 이와같이 마우스 찾기 사용 기능을 켜고, 활성화 방법은 편한 것을 선택해준다. 나는 왼쪽 컨트롤 키를 두번 누르는 것으로 사용. 왼쪽 Ctrl 키를 두 번 누르거나 마우스를 흔들어 커서 위치를 스포트라..

ChatGPT : 거짓 정보를 그럴듯하게 포장해내는 인공지능

ChatGPT 라는 인공지능 언어모델 서비스가 최근 인기입니다. '언어모델' 이라는 단어에서 알 수 있듯이 사용자가 특정 언어로 질문을 하면 같은 언어로 대답을 해주는 인공지능입니다. 현재는 웹사이트에서 '문자' 로 사용가능한데, '음성-문자 변환' 기술을 잘 이어붙여주기만 하면 음성을 문자로 변환하는 것은 가능한 일이니, 곧 음성으로도 서비스 할 것 같아요. 저도 호기심에 몇번 ChatGPT사용을 해보다가, 사용을 해보니 뭔가 쓸만(?) 한 정보를 주는 것 같아서 종종 회사업무에도 활용합니다. 예를 들면 아래와 같이요. 최근에 회사에서 SMB 프로토콜을 사용하는 네트워크 파일 서버에 연결하는 안드로이드 기반 파일탐색기 앱에서 '이미지 미리보기' 기능을 구현할 수 있는지를 빠르게 검증해보라는 상사의 요구..

USB 규격 마스터링

USB(Universal Serial Bus)는 한국어로 '범용 직렬 포트' 라 번역할 수 있는 장치간 연결을 위한 표준 규격이다. 애플이 오리지널 아이맥(iMac)에 사용하기로 결정을 내린 1998년 이래로 2023년 현재까지 컴퓨터와 거의 모든 IT 장치의 표준 연결 유형으로 자리매김해왔다. USB가 등장하기 전에는 장치간 연결에 어떤 규격을 사용했었을까? ADB에서 FireWire (파이어와이어)와 SCSI (한국에서는 보통 '스카시' 불렀다)에 이르는 다양한 연결 유형이 있었다. 게다가 각각은 고유한 변형까지 있었다. USB 모양 다시 USB 이야기로 돌아와서. 대부분의 기술 표준들들이 그렇듯이 USB는 몇 년마다 새로운 버전이 출시되어왔으며, 속도, 기능부분이 점점 향상되어왔다. ‘범용’임에도 ..

웹 서비스 구조(feat. SpringBoot와 nginx)

스프링부트 개념 우선 스프링 부트. '스프링 프레임워크'의 사이드 프로젝트로 시작되어 만들어진 웹 애플리케이션 프레임워크다. Java를 기반으로 한다. '스프링 부트'가 등장하기 전 '스프링 프레임워크'가 먼저 등장했는데, '스프링 프레임워크'는 초기 환경 설정시 시간을 많이 할애해야했다. 그것을 문제로 생각한 이들이 사이드 프로젝트로 '스프링 부트' 를 만들었다. 즉, '스프링 부트' 는 '스프링 프레임워크' 를 기반으로 하지만, 엄밀히 말하면 다른 것이니 주의가 필요하다. '스프링 프레임워크'는 위와 같은 구조를 가지고 있다. Python을 이용한 Django, Ruby를 이용한 Ruby on Rails, Javascript를 이용한 Node.js 이 있다면, Java 개발자들은 스프링(=스프링 프레..

[스프링부트] 레퍼런스 문서는 필수품

스프링부트 개발을 하다보면 스프링부트 버전별로 조금씩 달라지는 것들이 있다. 내가 겪었던 문제를 예를들면, 스타터 + 자동설정이 되도록 만든 라이브러리(maven프로젝트)를 AutoConfigure 에 등록하는 것. 2.X 버전까지는 META-INF/spring.factories 파일에, org.springframework.boot.autoconfigure.EnableAutoConfigration = [추가할 클래스 전체경로] 이런식으로 해줬었다. 그런데 이게 스프링부트 3 버전 부터는 변경된 걸 모르고 그대로 했더니, key is not supported as of Spring boot 3... 이런 에러가 발생한다. 레퍼런스 문서에서 'auto-configuration' 관련 키워드로 급하게 찾아보니..

[Rust] 윈도우 환경에서 컴파일 실패 : linker link.exe not found

문제 아래는 Rust의 Hello world 출력 코드이다. fn main() { println!("Hello, world!"); } MS윈도우 환경에서, 이것을 cargo run 명령을 통해 실행해보려고 하는데 아래와 같은 에러를 만나게 될 때가 있다. error: linker link.exe not found 원인 Rust컴파일러는 MS윈도우 용 실행파일을 만들어내기 위해 MS Visual C++ Build Tools 를 사용한다. link.exe 는 컴파일된 오브젝트파일을 라이브러리들과 링크 시켜주는 빌드 툴의 하나. 그런데, 어떤 이유에서인지 이게 설치가 안된 상황이라면 이런 에러가 발생한다. Compiling helloworld v0.1.0 (C:\Users\DELL\helloworld) err..

[Rust] main함수에서 test function 호출하는 방법?

Rust에서는 unit test 를 위해 #[cfg(test)] 및 #[test] 와 같은 annotation을 사용한다. 아래와 같이 tests라는 모듈에 #[cfg(test)] 를 붙여주면, 해당 모듈은 test 를 위한 모듈이라고 선언하는 것과 같은 의미. 그런데 이걸 main 함수에서 호출할 수 있을까? main 함수에서 tests 모듈안의 open_door 함수를 호출하는 방법이 있을지 알아보았다. #[derive(Debug)] struct Door { is_open: bool, } impl Door { fn new(is_open: bool) -> Door { Door { is_open } } } trait Openable { fn open(&mut self); } impl Openable fo..

[Rust] 시작하기 - 개발 환경 만들기

Rust 시작하기 Getting started A language empowering everyone to build reliable and efficient software. www.rust-lang.org 회사에서 3일짜리 교육을 통해 Rust 언어를 학습할 기회가 생겼다. Rust 학습을 시작하는데 필요한 환경설치부터 간단한 hello world 출력 까지 진행해 보았다. Rust는 멀티플랫폼을 지원하기 때문에 MS윈도우, 리눅스나 MacOS 에서 학습환경을 구성가능하다. 내 학습 환경은 MS윈도우10 이다. Rust 언어가 무엇인지 궁금하다면? 아래 링크의 글을 참고로 읽어보길 바란다. https://www.technologyreview.kr/how-rust-went-from-a-side-proj..

pow( ) - 거듭제곱 함수 구현하기(정수 기반)

개요C언어의 수학 함수 중, 거듭제곱을 구하는 pow( )라는 함수가 있다.예를들어, 2의 10승을 계산하고 싶다면, pow(2.0, 10.0); 형태로 사용하는 함수이다.이 함수는 math.h 헤더를 include하면 사용할 수 있는 함수이다. #include double pow(double x, double y); x : 거듭제곱의 밑수y : 거듭제곱의 지수 그런데 이렇게 거듭제곱을 계산하는 함수를 직접 구현해야 하는 경우가 있었다.매우 큰 수의 거듭제곱을 계산하면서 중간중간에 주어진 특정 값으로 mod 연산(나눗셈 후 나머지 값을 취하여 반환하는 연산)을 해야 하는 알고리즘 풀이 문제였다. 문제 조건 상, pow( )를 직접 사용하면 연산속도가 느려지는 상황이라 직접 구현을 시도해 보았다. my_p..

[네트워크/C reference] Special IPv6 주소 검사 매크로

개요 IPv6 주소 체계에서는 'Special IPv6 addresses' 라고 부르는, 미리 정의된 특별한 주소들이 있다. 미리 정의된 비트 패턴(bit pattern) 으로 각 주소의 역할을 구분한다. 최근들어 C언어로 네트워크 프로그래밍을 하면서 IPv6 주소를 다루게 되는 경우가 발생하곤 하는데, 이 주소가 특정 Special IPv6 address 인지 아닌지를 확인 해야 하는 경우가 있었다. 그래서 조금 찾아보니, 이런 경우 유용하게 사용 할 수 있는 매크로 함수가 C의 표준 라이브러리인 glibc 의 netinet/in.h 헤더에 정의가 되어 있었다. 이번 포스팅에서는 이들 매크로 함수들을 간단히 소개한다. 특수 IPv6 주소(Special IPv6 Address) 검사 매크로 함수IEEE ..

[우분투 16.04] 32bit library를 64 bit 우분투 16.04에 설치하는 방법

개요우분투라는 운영체제는 32 bit CPU용 버전과 64 bit CPU용 버전이 제공된다.그런데 종종, 32bit 용으로 빌드 된 실행파일을 64 bit 용 우분투에서 실행시켜야 하는 경우가 있다.그리고 우분투 12.04 LTS의 64bit 버전에서는 꼼수로써, ia32-libs 라는 패키지를 제공해서, 32bit용 실행파일을 실행 시킬 수 있도록 했었다. 그러나 우분투 16.04 에서는 ia32-libs 패키지가 deprecated 처리가 되었다.그 이유는 MultiArch를 사용하도록 유도하기 위해서 인 듯 싶다. 하지만 방법이 있다.아래와 같은 순서로 MultiArch를 설치하고, 32 bit 용 실행파일을 우분투 16.04 의 64bit 버전 에서 실행되도록 할 수 있다. i386 아키텍쳐 활성..

shell prompt에 git branch 이름 표시 / 색상으로 status 표시

git 기본 사용시 불편한 점여러 소스코드 형상관리 툴 중 git을 주로 사용하는데, linux shell prompt에서 사용하다 보면, 불편한 경우가 있다.아래 두가지 경우였다. 1. 현재 git directory의 branch가 어디인지?2. 현재 git directory의 변경사항이 있는지? 기본 상태에서...1번의 경우는, 'git branch' 라고 명령을 입력해야 확인 가능하다.2번의 경우는 'git status' 라고 명령을 입력해야 확인 가능하다. 이게 은근 귀찮다.그래서 shell prompt에서 git directory로 진입을 하면 branch명을 표시하고, 해당 branch명을 다시 status에 따라 녹색/빨간색으로 표시하도록 하고자 한다. .bashrc 파일 수정 HOME di..

[우분투 16.04] 부팅시 프로그램을 자동으로 시작하도록 설정하는 방법 (How to add auto startup applications in Ubuntu 16.04)

프로그램 자동실행 이유우분투 16.04 이 설치된 PC를 켤때 synergy client를 자동으로 실행되도록 하고 싶다.지금은 우분투 PC가 켜지면, shell prompt를 띄우고, 명령어를 직접 입력해서 synergy client를 실행시켜 synergy server PC에 연결되도록 수동으로 사용하고 있다. 이 과정이 번거롭기 때문에, 자동화 하고자 한다. 참고로 synergy는 서로다른 2대 이상의 PC를 연결시켜서, 한쌍의 키보드와 마우스를 이용해 연결된 PC 모두를 제어하도록 도와주는 프로그램이다.본 포스팅에서 설명하고자 하는 것은, 우분투 16.04 PC가 synergy client가 되고, 그외의 PC (윈도우 혹은 Mac 혹은 또다른 우분투)가 synergy server가 되는 상황이다..

[네트워크/C reference] inet_pton 함수

기능 요약 (Summary)inet_pton( ) 함수는 사람이 알아보기 쉬운 텍스트(human-readable text)형태의 IPv4 와 IPv6 주소를 binary 형태로 변환 하는 기능을 한다. 헤더 (Header files)이 함수를 사용하려면 다음 헤더파일을 포함시킨다. #include API 원형 (API Prototype)3개의 파라미터를 가지는 함수이다. int inet_pton(int af, const char *src, void *dst); af [input] - address family를 지정한다. src의 문자열이 IPv4 주소를 나타내는지, IPv6 주소를 나타내는지를 함수에 알린다.src [input] - 문자열 형태의 IP주소를 넣는다.dst : [output] - src를..

[네트워크/C reference] inet_ntop 함수

기능 요약 (Summary)inet_ntop - IPv4 와 IPv6 주소를 binary 형태에서 사람이 알아보기 쉬운 텍스트(human-readable text)형태로 전환해준다. 헤더 (Header files) #include API 원형 (API Prototype)const char *inet_ntop(int af, const void *src, char *dst, socklen_t size); 설명 (Description)이 함수는 네트워크 주소 구조체인 src를 캐릭터 문자열 dst로 변환해주는 함수이다. 네트워크 주소는 IPv4 혹은 IPv6 가 될 수 있으며, 'address family'를 의미하는 af 를 참고하여 src를 해석하게 된다. 결과가 저장되는 dst는 반드시 NULL 포인터가..

TCP Flags: PSH 그리고 URG

개요TCP헤더를 들여다 보면, 1비트 짜리 플래그가 몇개 있다. 1비트로는 0 아니면 1 만을 나타낼 수 있기 때문에, 플래그는 태생적으로 boolean type 이다.이 플래그들은 TCP연결을 통하는 데이터의 흐름을 조절 및 제어 하기 위해 사용된다고 알려져 있다. RFC 3168 에 의해 혼잡 통지(Congestion Notification)을 위해 추가된 CWR 그리고 ECE 플래그를 제외하고나면, 총 6개의 TCP 제어 플래그가 남는다.일단 CWR과 ECE는 논외로 하자. Data Offset 다음을 보면, 6개의 플래그, URG, ACK, PSH, RST, SYN, FIN 이 보인다. 그 중, 아래 4개는 TCP연결의 설정(establish), 유지 관리(management) 및 분리(tear-..

[C][CURL] CURLOPT_FOLLOWLOCATION 의 버전별 동작 차이

C언어로 프로그램을 작성하다보면, HTTP 통신을 해야 할 때가 종종있는데, 이때 개인적으로 선호하는 라이브러리가 있다. 바로 CURL 이다. 라이브러리만을 따로 부를땐 libcurl 이라는 이름으로도 부른다. 이 libcurl을 사용해서 HTTP 처리를 하다보면, 서버가 주는 3xx 응답을 만날때가 있다. 이때 클라이언트는 이에 대한 추가적인 처리 - 변경 혹은 이동된 URL을 따라간다던가 하는 - 를 해야 할 경우가 있다. libcurl은 이때 간단히 사용할 수 있는 옵션을 제공하는데 바로 'CURLOPT_FOLLOWLOCATION' 옵션이다. 우선 HTTP 3xx status에 대해 간단히 살펴보겠다. 300(여러 선택항목): 서버가 요청에 따라 여러 조치를 선택할 수 있다. 서버가 사용자 에이전트..

[NMEA-0183] Checksum 계산 예제코드 (How to calculate checksum of NMEA-0183)

본 포스팅에서 다뤄볼 내용은 NMEA-0183 문장의 checksum 계산 방법이다.보통 GPS chip은 해석한 GPS신호를 NMEA라는 특정 형태의 프로토콜로 제공한다.NMEA 가 무엇인지에 대해서 더 자세히 알고싶다면 아래 포스팅을 참고하도록 하자. 2017/08/10 - [하드웨어 Note/GPS 이야기] - [GPS 이야기] NMEA-0183 형식, NMEA Sentence Format 위 포스팅에 나와있듯이, NMEA sentence는 $ 문자로 시작해서 * 문자로 끝난다.checksum의 계산은 $, * 의 사이에 있는 각각의 문자 하나하나를 exclusive-or (XOR) 연산 및 누적하면 된다.어떤 NMEA sentence가 주어졌을 때, "*" 뒤에 있는 16진수 두자리의 checks..

[GPS 이야기] NMEA-0183 형식, NMEA Sentence Format

만약 당신이 GNSS와 직접적으로 관련된 일을 한다면. 혹은 간접적으로 GPS등과 같은 것을 통해 얻은 위치정보등을 다뤄야 할 일이 있다면. 조만간 'NMEA' 라는 것을 마주하게 될 수도 있다. 위치정보라는것은 어떤 목적으로 활용하느냐에 따라 다뤄야 하는 데이터는 달라진다. 현재 위치에 기반하여 날씨정보를 보여주는 어플리케이션처럼 간단히 위도, 경도만 알면 되는 경우가 있는가 하면, 목적지까지 경로를 알려주는 내비게이션 어플리케이션처럼 때로는 위도, 경도 뿐만아니라 속도, 위치정확도 오차값, 방향.. 등을 알아야 하는 경우도 존재 한다. 또한 종종 등산 트래커 어플리케이션처럼 고도를 활용하는 경우도 있다. 사실 고가의 GPS가 아닌 이상, 스마트폰과 같은 저렴한 GPS칩이 주는 고도값은 부정확하다고 알..

[우분투] 우분투 16.04 런처(Launcher) 위치 바꾸기

개요우분투에는 '런처(Launcher)'라 불리는 것이 있다.MS의 윈도우 운영체제와 비교하자면, '작업표시줄' 과 비슷한 것 쯤으로 이해하면 쉽다. 그동안의 우분투 LTS 버전들에서는 이 런처의 위치가 왼쪽에 세로로 고정되어 있었다.아래 그림과 같이 말이다. 런처 위치 변경 명령어우분투 16.04 에서는 드디어 런처의 위치를 변경할 수 있게 되었다.방법은 간단하다. shell에서 명령어 한줄이면 된다. /* 런처를 왼쪽에 위치함 */ $ gsettings set com.canonical.Unity.Launcher launcher-position Left /* 런처를 아래쪽에 위치함 */ $ gsettings set com.canonical.Unity.Launcher launcher-position Bo..

jQueryScript.net - jQuery Script Plugin 예제 제공 사이트

jQuery Script Plugin 예제를 찾다 보니, 굉장히 퀄리티 높은 예제들을 제공하는 사이트인 jQueryScript.net 을 찾게 되었다. 연결 : http://www.jqueryscript.net/ 나는 ... 의 헤더 태그를 이용해서 자동으로 포스팅의 목차를 만들어주는 기능을 구현해보려고 하던 참이었다.이미 이러한 류의 javascript플러그인들이 상당 수 존재 했다. 직접 구현하기보다는, 잘 구현된 플러그인을 가져다 사용하는 방향을 택하기로 했다.이런 류의 플러그인들은 'TOC (Table Of Contents)' 플러그인 으로 통칭되고 있는것 같다. 그리고, 'TOC javascript plugin' 키워드로 검색을 하다보니, 지금 소개하는 jQuery Script.net을 찾게 되..

[리눅스/Vi] vi editor 문자열 치환(replace) 방법

개요 리눅스 환경에서 코드를 작성하다 보면, 종종 vi editor 혹은 vim editor를 사용해서 코드의 특정 단어를 다른 단어로 교체(replace) 해야 하는 상황이 종종 있다. 즉, 특정 문자열을 치환해야 하는 경우이다. 예를들면, 현재 소스코드 파일에서 'apple_result' 이라는 변수를 모두 'melon_result' 라는 변수로 바꾸어야 하는 상황 같은 것 말이다. 상황에 따라 아래와 같은 몇가지 방법이 있다.우선 ex모드로 진입해야 한다. 1. 현재 문서를 편집중인 '편집모드'라면, 키보드의 ESC 키를 눌러 편집모드에서 명령모드로 나온다.2. 콜론(:)을 눌러 ex모드로 진입한다.3. ex모드에서 아래와 같은 방법들 중, 자신의 상황에 맞는 방법을 선택해 수행하면 된다. 혹시, ..

[네트워크/C] addrinfo 구조체

이 포스팅은 POSIX/리눅스에서 C 언어를 사용한 네트워크 소켓 프로그래밍과 관련된 글이다. addrinfo 구조체는 네트워크 주소정보(인터넷 주소)와 호스트이름을 표현하는데 사용되며, 이 정보는 bind( ), connect( )호출 시 입력 파라미터에 사용될 수 있다.또한 getaddrinfo( ) 함수 호출 시, hint 정보를 알리는 입력 파라미터로 사용할 수 있으며, getaddrinfo( ) 함수의 결과값을 전달하는 출력 파라미터로도 사용된다. 관련 헤더struct addrinfo를 코드에서 사용하기 위해서는 아래 헤더파일을 포함시키면 된다. #include 구조체 원형 struct addrinfo { int ai_flags; /* 추가적인 옵션을 정의 할 때 사용함. 여러 flag를 bit..

[네트워크/C] getaddrinfo 함수

개요 getaddrinfo는 domain address를 받아서 네트워크 주소 정보(IP address)를 가져오는 함수이다. 예를들면, http://www.google.co.kr라는 domain address가 있는데, 이 주소는 사람이 알아보기 쉬운 주고이긴 하지만, 컴퓨터는 이 주소를 가지고 해당되는 구글의 서버를 찾아가지 못한다. 그래서 이 domain address와 대응되는 IP주소가 무엇인지를 알아 낸 뒤에 그 IP주소로 연결을 해야한다. 즉, Domain address -> IP address 변환을 하고 싶을 때 사용하는 함수라는 뜻이다.이걸 전문용어로 DNS (Domain Name System/Service) resolving 이라고 한다. getaddrinfo 함수는 총 4개의 매개변..

[네트워크/C] sockaddr, sockaddr_in, sockaddr_un 구조체 - 소켓 주소 정보를 나타낸다

기본 지식'Socket Address Structures' 에 관해서 설명하는 글이다. 리눅스/유닉스 시스템에서는 소켓(socket)의 통신 대상을 지정하기 위해 '주소(address)'를 사용한다. 이 '주소' 라는 것을 저장하거나 표현하는데 사용하는 구조체가 바로, 본 포스팅에서 설명하고자 하는 'struct sockaddr' 이다. bind( ), connect( ) 와 같은 함수들이 2번째 매개변수로써 바로 이 'struct sockaddr' 을 받는다. 이 struct sockaddr은 기본 형태이고, 주소체계(Address family)값에 따라서 구조체를 형변환 해서 사용하면 편리하다. 즉, 일반적으로 개발을 하다보면 struct sockaddr_in, struct sockaddr_un, s..

[네트워크/C] ifreq 구조체 (struct ifreq)

관련 헤더 #include #include 설명linux에서 네트워크 장치의 설정과 관련된 대부분의 ioctl( ) 호출에 세번째 인자로 사용하는 구조체이다.참고로, linux의 ioctl( ) 호출시 첫번째 인자는 file descriptor인데, family나 type과 관계없이 어떠한 소켓 file descriptor라도 사용할 수 있다.구조체의 멤버변수는 아래와 같다. struct ifreq { char ifr_name[IFNAMSIZ]; /* Interface name */ union { struct sockaddr ifr_addr; struct sockaddr ifr_dstaddr; struct sockaddr ifr_broadaddr; struct sockaddr ifr_netmask; st..

[우분투] Ubuntu 16.04 삼바(Samba) 설치 및 사용하기

윈도우 PC와 리눅스 PC 두대를 사용해서 개발등을 하다 보면, 두 PC간에 파일을 빈번하게 이동할 일이 발생한다.이럴때 선택할 수 있는 방법은 여러가지가 될 수 있다. 우선 USB메모리나, 외장 하드디스크와 같은 저장장치를 이용할 수도 있다.혹은 이메일이나 메신저의 파일전송 기능, 혹은 인터넷 게시판에 업로드 하는 방법 등으로 전달할 수도 있다.좀더 우아한 방법으로는 one drive나 google drive 혹은 dropbox와 같은 클라우드 저장소를 활용할 수 도 있다. 그러나 이 방법도 한번 고려해 보자.'Samba' 라는 프로그램을 활용해서 우분투의 디렉토리를 공유 디렉토리로 만들고, 윈도우에서 접근 할 수 있는 방법이다. Samba 설치하기 우분투 shell에서 apt 커맨드로 간단히 설치할 ..

1 2 3 4 5