u8glib 라이브러리 사용하기

`U8glib` 라이브러리를 사용하는 기본적인 방법은 다음과 같습니다. 이 예시는 아두이노에서 U8glib를 사용하여 OLED 디스플레이에 그래픽과 텍스트를 표시하는 간단한 과정을 보여줍니다. ### 1. 라이브러리 설치 - 아두이노 IDE에서 "도구" > "라이브러리 관리"로 가서 `U8glib`를 검색하고 설치합니다. ### 2. 라이브러리 포함 - 아두이노 스케치의 시작 부분에 `U8glib` 라이브러리를 포함시킵니다.   ```cpp   #include <U8glib.h>   ``` ### 3. 디스플레이 객체 생성 - 사용 중인 OLED 디스플레이에 맞는 객체를 생성합니다. 객체 생성 시 사용하는 생성자는 디스플레이 및 사용 중인 통신 프로토콜(I2C 또는 SPI)에 따라 달라집니다.   ```cpp   U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // 예시로 SH1106 128x64 디스플레이 사용   ``` ### 4. 기본 스케치 코드 - `setup()` 함수와 `loop()` 함수 안에 코드를 작성합니다.   ```cpp   void setup() {     // 초기화, 필요한 경우 여기에 코드 추가   }   void loop() {     // 디스플레이 버퍼 지우기     u8g.firstPage();     do {       draw(); // 그리기 함수 호출     } while (u8g.nextPage());          // 필요한 경우 여기에 추가 코드 추가     delay(1000); // 1초 대기   }   void draw() {     // 여기에 디스플레이에 그...

공식 예제 코드를 보다가 섬세하다고 생각했다

이미지
  <p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhorxRGvgA8NWNhc01b05NbB76p7HZSf4FZC6xQNFM7PAJS9J6TGx4liENXH3XppMci-_Jtm9eq5ssRmT3n36KjHSjCVPXb_y7CJFM4HEL-vru-dxhvD6A9O53yOOrJ8u0osgQEr6WZ-w_XAHBEjdjpFyvf1KD4vewRUOJzHJOH0gnquaSn9VlXZBfQqlIA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="276" data-original-width="1182" height="150" src="https://blogger.googleusercontent.com/img/a/AVvXsEhorxRGvgA8NWNhc01b05NbB76p7HZSf4FZC6xQNFM7PAJS9J6TGx4liENXH3XppMci-_Jtm9eq5ssRmT3n36KjHSjCVPXb_y7CJFM4HEL-vru-dxhvD6A9O53yOOrJ8u0osgQEr6WZ-w_XAHBEjdjpFyvf1KD4vewRUOJzHJOH0gnquaSn9VlXZBfQqlIA=w640-h150" width="640" /></a></div><br />&nbsp;<p></p> 공식 코드를 보다가 띄어쓰기가 균일하지 않게 되어 있어서 이상하다고 생각 했는데  삼각형 좌표 보기 쉬우라고 의도적으로 그렇게 된 부분이었다

openai status 챗지피티 오류 기록 보는 곳

 openai status 챗지피티 오류 기록 보는 곳 api, chatgpt, labs, playground를 확인할 수 있다. https://status.openai.com/ playground랑 api가 따로 운영되는 거였나

아두이노 oled 디스플레이 0.96 1.3는 호환이 안된다(같은 것이 아니다)

아두이노 oled 0.96짜리로 쓰다가 너무 작아서 1.3 시키면 그냥 바꿔 끼면 되는 줄 알았는데 왠걸 깨지는 것이었다 0.96은 SSD1306 디스플레이 이고 1.3은 SH1106 디스플레이라서 서로 다른거라고 한다 SSD1306은 adafruit 전용라이브러리가 있어서 그거 쓰면 되지만 SH1106은 없어서 공용라이브러리인 U8glib을 써야 한다. 여기서 깨달음 https://www.reddit.com/r/arduino/comments/13h7tmz/u8g2_not_declared_in_scope/?rdt=63221 https://m.blog.naver.com/ysahn2k/221582484443 공용 라이브러리 쪽으로 코드 수정해야겠다

codec 코덱이란?

 코덱(codec)은 '코더(coder)'와 '디코더(decoder)'의 합성어로, 디지털 데이터 스트림이나 신호를 인코딩(압축)하고 디코딩(해제)하는 기술입니다. 코덱은 주로 오디오와 비디오 파일을 다루는 데 사용됩니다. 이 기술의 목적은 파일 크기를 줄이고(인코딩), 이후에 이 파일을 원래 형식으로 복원(디코딩)할 수 있게 하는 것입니다.  1. **인코딩(압축)**: 이 과정에서 코덱은 데이터를 더 작은 형식으로 변환합니다. 예를 들어, 오디오나 비디오 파일은 원본 상태에서 매우 크기 때문에, 저장하거나 전송하기 위해 압축이 필요합니다. 압축 방식에는 일반적으로 '손실(lossy)'과 '무손실(lossless)' 두 가지가 있습니다. 손실 압축은 데이터의 일부를 제거하여 파일 크기를 줄이지만, 무손실 압축은 원본 데이터를 그대로 유지하면서도 파일 크기를 줄입니다. 2. **디코딩(해제)**: 이 과정에서 코덱은 압축된 데이터를 원래 형태로 복원합니다. 예를 들어, 압축된 비디오 파일을 재생할 때, 적절한 코덱이 해당 파일을 디코딩하여 볼 수 있는 형태로 변환합니다. 코덱은 다양한 형태와 표준으로 존재합니다. 오디오 코덱으로는 MP3, AAC, FLAC 등이 있으며, 비디오 코덱으로는 H.264, HEVC(H.265), VP9 등이 있습니다. 각 코덱은 특정 용도에 맞게 최적화되어 있으며, 호환성, 품질, 압축률 등에서 서로 다른 특성을 가집니다. 비디오 스트리밍에 코덱은 매우 중요한 역할을 합니다. 스트리밍 서비스에서는 대량의 비디오 데이터를 인터넷을 통해 전송해야 하기 때문에, 효율적인 코덱 사용이 필수적입니다. 여기에는 몇 가지 중요한 이유가 있습니다: 1. **데이터 압축**: 코덱은 비디오 파일을 압축하여 인터넷을 통한 전송 시 필요한 대역폭을 줄입니다. 이는 사용자가 빠르고 원활한 스트리밍 경험을 할 수 있도록 해줍니다. 2. **품질 유지**: 좋은 코덱은 파일 크기를 줄이면서도 비디오 ...

아두이노 우노에서는 oled 한글 넣기가 너무 부담된다

 아두이노 우노에서는 한글 넣기가 너무 부담된다 크기 너무 크고 일단 사이즈도 너무 크고 https://rottenstar.tistory.com/37 그래서 비트맵으로 넣는다는 글 발견.. 일단 그럼 나도 비트맵..

아두이노 관련 배터리 쓰는 diy하다가 불나면 큰일난다.

  https://youtu.be/PU7NWcDNPlc?si=QF1UVq29M9dWoIlV 이거 보니까 조금 무섭다 간단한거 밖에 안다루지만 아무래도 전자전기 쪽 지식은 부족해서 예전에 쇼트난적도 있고

아두이노 부품 온라인 시뮬레이션 해보는 사이트

oled 디스플레이 모듈 시뮬레이션 해볼수있는 곳 못봤는데  찾아서 저장해둠 https://wokwi.com/
 https://www.youtube.com/@PenguinDIY/videos

아두이노 oled 한글 사진->코드

이미지
 아두이노 oled 관련 링크 u8g2가 디스플레이에 그려주는 모듈인데 글자도 그려주는 부분이 있는 듯 https://m.blog.naver.com/zeta0807/221509723560 https://github.com/olikraus/u8g2/blob/master/doc/u8g2fntlistall.pdf https://github.com/olikraus/u8g2/wiki/fnticons 일본어.. https://github.com/mgo-tec/ESP32_SPIFFS_SSD1331_Gadgets 어우러기 한글 라이브러리 https://github.com/sookmook/EURK_Arduino 완성형이냐 조합형이냐를 고민했다는 설명이 인상적. 이미지 -> 코드 https://javl.github.io/image2cpp/ RLE로 압축하는 법 https://www.arduino.cc/reference/en/libraries/rlebitmap/ https://github.com/MHotchin/RLEBitmap 어차피 압축 해제해서 전역 변수로 가지고 있을 거면 의미 없지 않나? 이블로그 도움됨 https://m.blog.naver.com/zeta0807/223281462499 아두이노 Oled 애니메이션 이미지 다운 받을 수 있는 코드 https://animator.wokwi.com/ https://youtu.be/0KGMFhFQ0YY?si=Yms1RvhOA4NXAHLL 이건 위에 제작자의 유튜브인데  댓글에 나랑 비슷한 고민한 사람 댓글이 있다 용량 많이 차지 -> 차이만 기록 저장해서 보여주는 방식을 만드는 건 어떤가.. 차이가 너무 크면 크게 의미 없을 거 같긴한데.. blocking 문제 : 스레드가 하나라서 애니메이션 도는 동안 버튼 클릭이 안먹는데 이건 코드로 고칠 수 있는 부분.. 아 한글 쓰는 것도 라이브러리 용량이 상당하다는게 문제다.. 안들여다봤지만 한글 글자 수만큼 비트맵 이미지 처럼 저장되어 있을듯.. 라이브러리...

충전 모듈 03962A 사용법

이미지
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj3GIFYn9MvDJ6cHdaz2jET5ZQog73ov8fwEwlSCPjpNQNfTOpN7ghycQ0H7wG8jkUicco09cIk3DygF3Lmdgr0LwxFkW-lSzNgUgtFFGD7k4cOr7YmwACvWpClyKUDbcsvmgbjQAkkOR9inFj6OEwdw3YtB3SliQfVq7IEfbcln3OLOgisvR00mT4VkTsA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="834" data-original-width="1334" height="200" src="https://blogger.googleusercontent.com/img/a/AVvXsEj3GIFYn9MvDJ6cHdaz2jET5ZQog73ov8fwEwlSCPjpNQNfTOpN7ghycQ0H7wG8jkUicco09cIk3DygF3Lmdgr0LwxFkW-lSzNgUgtFFGD7k4cOr7YmwACvWpClyKUDbcsvmgbjQAkkOR9inFj6OEwdw3YtB3SliQfVq7IEfbcln3OLOgisvR00mT4VkTsA" width="320" /></a></div>  이미지 저장용

아두이노 vscode 설정 기록 대충

이미지
아두이노 익스텐션 설치하고 Arduino:path 에 내 아두이노 ide 위치를 넣어야함 대충 어떤식으로 넣는지 예시 써있는데 난 /Applications   그리고 하단에서 아두이노 보드를 선택하는데 선택하려면 보드 설정을 다운 받아야함. UNO 포함된 저거 다운 받음 아두이노에 필요한 라이브러리는  아두이노ide에서 직접 다운 받아야한다. 다운 받고 vscode에서 veritfy(상단 우측에 생기는 익스텐션 버튼) 눌렀더니 해결됨.

크리스마스라서 크리스마스 문제 풀기

이미지
<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgz5QcxqH9w604IwU95u64ElwALdWcdX9rP9z8xvP4141wy83Doo54h5GplxK2DgjG5tSwuibI2zpZOFohAGqhXI-gZBl4A07MyIXuFnIds8tfNdIPKmzWSdI5VRISajGLWfffRM_YfTPQtBMORCo3kTh1Va-HziQjqMjeDse72AmOhzLuXDmLfe32tfVhs" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1240" data-original-width="1598" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEgz5QcxqH9w604IwU95u64ElwALdWcdX9rP9z8xvP4141wy83Doo54h5GplxK2DgjG5tSwuibI2zpZOFohAGqhXI-gZBl4A07MyIXuFnIds8tfNdIPKmzWSdI5VRISajGLWfffRM_YfTPQtBMORCo3kTh1Va-HziQjqMjeDse72AmOhzLuXDmLfe32tfVhs" width="309" /></a></div><br />&nbsp;<p></p>   크리스마스 관련 문제가 27개나 된다 제목들이 귀엽다

이 블로그 마크다운 설정이랑 꼬여서 이미지랑 유튜브 임베드 할때 코드로 한번 바꿔서 그거 다시 복사해서 붙여넣어 주어야 한다.

 이 블로그 마크다운 설정이랑 꼬여서  이미지랑 유튜브 임베드 할때  글 쓸 때 html 모드 코드로 한번 바꿔서  그 부분 다시 복사해서 붙여넣어 주어야 한다.

[fun] solved ac의 날짜 갱신되는 시간이 오전 6시

이미지
  <p>&nbsp;</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgGjTXPjXJEk9ZUh_i5OGNnJxI55GFDMojxXL8rU9J5906vu6egC8oNQXsTsHPQGN4giNyMc9r14rl0ql9cG19_9yymm0iWmdX1PyLwRHXmvkxfjx4bscvakUEq5ZzL1gv9eu8eUD4ih13E55UppuLwZmUgDK6MwPvwvkLQ0gXWl0l6Z0gsO9hNuMLSsctR" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="192" data-original-width="1356" height="45" src="https://blogger.googleusercontent.com/img/a/AVvXsEgGjTXPjXJEk9ZUh_i5OGNnJxI55GFDMojxXL8rU9J5906vu6egC8oNQXsTsHPQGN4giNyMc9r14rl0ql9cG19_9yymm0iWmdX1PyLwRHXmvkxfjx4bscvakUEq5ZzL1gv9eu8eUD4ih13E55UppuLwZmUgDK6MwPvwvkLQ0gXWl0l6Z0gsO9hNuMLSsctR" width="320" /></a></div><p></p> solved ac의 날짜 갱신되는 시간이 오전 6시. 사람들이 늦게 자서 그런가? 잠들기 전까지는 오늘로 쳐주는 친절한 갱신 시간이다

디자인 참고 블로그

 여기 좋은글 많은듯 https://tammist.tistory.com/27

[fun]핸드폰으로 놀 때 자동 감지해서 혼나는 방법

이미지
 man-in-the-middle attack처럼 프록시 서버를 두고 사이트 접속이 노는 걸로 보이면 알렉사로 일하라고 말하게 한다.    셀프  man-in-the-middle attack 이라는 표현이 인상깊음 https://youtube.com/shorts/Knrsx-HjldQ?si=egqJxT7j92ZaYfNy <p></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/Knrsx-HjldQ" width="320" youtube-src-id="Knrsx-HjldQ"></iframe>

예쁜 다이어그램 그리기 사이트

손그림 느낌의 다이어그램을 그릴 수 있는 도구  https://excalidraw.com/

Microservices Architecture vs Monolithic Architecture

 MSA는 "Microservices Architecture"의 약어로, 소프트웨어 시스템을 개발하고 구축하는 데 사용되는 소프트웨어 아키텍처 스타일 중 하나입니다. MSA는 전통적인 단일 모놀리식 애플리케이션 아키텍처와 대조되며, 여러 개의 작은 독립적인 서비스로 분할된 애플리케이션을 구축하는 접근 방식을 나타냅니다. MSA의 주요 특징 및 이점은 다음과 같습니다: 1. 서비스 분해: 애플리케이션은 작은 서비스로 나누어집니다. 각 서비스는 특정 기능 또는 업무를 담당하며, 서로 독립적으로 배포, 관리 및 확장될 수 있습니다. 2. 독립성: 각 서비스는 자체 데이터베이스와 개발 스택을 가질 수 있으며, 다른 서비스와 독립적으로 운영됩니다. 이로써 한 서비스의 장애가 다른 서비스에 영향을 미치지 않습니다. 3. 민첩성과 확장성: 서비스는 개별적으로 확장 가능하므로 필요에 따라 자유롭게 스케일링할 수 있습니다. 또한 다른 기술 스택 및 언어를 사용하여 각 서비스를 개발할 수 있어, 팀이 독립적으로 작업할 수 있습니다. 4. 분산 시스템: MSA는 분산 시스템으로 간주되며, 서비스 간 통신은 주로 HTTP, RESTful API, gRPC 등을 통해 이루어집니다. 5. 유연한 배포 및 업데이트: 서비스 간 독립성은 개별 서비스의 배포 및 업데이트를 용이하게 만듭니다. 새로운 기능 추가나 버그 수정을 빠르게 반영할 수 있습니다. 6. 복잡성 관리: MSA는 애플리케이션을 더 작은 서비스로 분할하므로 전체 시스템의 복잡성을 줄일 수 있습니다. 각 서비스는 관리하기 쉽고 이해하기 쉽습니다. MSA는 클라우드 네이티브 애플리케이션 개발 및 관리를 위한 인기 있는 아키텍처 스타일 중 하나이며, 민첩하고 확장 가능한 애플리케이션을 구축하는 데 도움이 됩니다. 그러나 MSA를 성공적으로 구현하려면 적절한 도구와 관행을 사용하여 관리 및 모니터링을 수행하는 것이 중요합니다. 전통적인 단일 모놀리식(Monolithic Architecture) 애플리케이션 아키텍처...

프로그램 실행 systemctl vs 백그라운드

 ELK Stack (Elasticsearch, Logstash, Kibana)을 설치하는 방법은 여러 가지가 있지만, `systemctl`을 이용한 설치는 ELK Stack 각 컴포넌트를 시스템 서비스로 관리할 수 있게 해주어 많은 장점을 제공합니다. `systemctl`을 사용하면 다음과 같은 이점이 있습니다: 1. **서비스 관리**: 각 ELK 컴포넌트를 시스템 서비스로 등록하여 쉽게 시작, 중지, 재시작할 수 있습니다. 2. **자동 시작 설정**: 시스템 부팅 시 자동으로 ELK 컴포넌트를 시작하도록 설정할 수 있습니다. 3. **상태 모니터링**: `systemctl status` 명령어를 통해 서비스의 현재 상태를 확인할 수 있습니다. 4. **로그 관리**: 시스템 로그를 통해 서비스의 문제를 쉽게 진단할 수 있습니다. 5. **보안**: 서비스를 더 안전하게 운영할 수 있는 보안 옵션을 제공합니다. 그러나 ELK Stack을 설치하기 전에는 시스템 요구 사항, 네트워크 설정, 보안 설정 등을 고려해야 합니다. 또한, ELK Stack을 Docker 컨테이너나 Kubernetes 클러스터와 같은 컨테이너 오케스트레이션 환경에서 실행하는 것도 고려할 수 있습니다. 이러한 방법은 배포 및 관리를 더욱 효율적으로 만들어줍니다. 설치 방법은 사용하고 있는 리눅스 배포판, 시스템 환경, 사용 목적에 따라 달라질 수 있으니, 자세한 설정 방법은 공식 문서를 참조하는 것이 좋습니다. --- 리눅스에서 프로세스를 백그라운드에서 실행하는 방법 중 하나는 명령어 끝에 `&`를 붙이는 것입니다. 이 방법은 터미널 세션과 독립적으로 프로세스를 실행시키는 데 유용합니다. 하지만, 이 방식에는 몇 가지 주의할 점이 있습니다: 1. **세션 종료 시 프로세스 종료**: 터미널 세션을 종료하면 백그라운드에서 실행 중인 프로세스도 종료될 수 있습니다. 이를 방지하기 위해 `nohup` 명령어를 사용할 수 있습니다. 예를 들어, `nohup 명령어 &` ...

[리눅스 명령어] systemctl

 `systemctl`은 리눅스에서 사용되는 명령어로, `systemd` 시스템 및 서비스 매니저를 제어하기 위해 사용됩니다. `systemd`는 현대 리눅스 배포판에서 널리 사용되는 초기화 시스템(init system)과 서비스 매니저로, 시스템 부팅 및 관리를 담당합니다. `systemctl`을 사용하여 시스템 서비스를 시작, 중지, 재시작, 활성화(부팅 시 자동 시작), 비활성화(부팅 시 자동 시작 안 함) 할 수 있습니다. 또한 시스템의 현재 상태, 서비스 상태, 시스템 로그 등을 확인하는 데에도 사용됩니다. 예를 들어, 특정 서비스를 시작하려면 `systemctl start 서비스명`, 상태를 확인하려면 `systemctl status 서비스명`과 같이 사용합니다. 이러한 기능들 덕분에 `systemctl`은 리눅스 시스템 관리에 있어서 중요한 도구 중 하나로 여겨집니다. ELK Stack으로 예를 들자면,  ELK Stack (Elasticsearch, Logstash, Kibana)을 설치하는 방법은 여러 가지가 있지만, `systemctl`을 이용한 설치는 ELK Stack 각 컴포넌트를 시스템 서비스로 관리할 수 있게 해주어 많은 장점을 제공합니다. `systemctl`을 사용하면 다음과 같은 이점이 있습니다: 1. **서비스 관리**: 각 ELK 컴포넌트를 시스템 서비스로 등록하여 쉽게 시작, 중지, 재시작할 수 있습니다. 2. **자동 시작 설정**: 시스템 부팅 시 자동으로 ELK 컴포넌트를 시작하도록 설정할 수 있습니다. 3. **상태 모니터링**: `systemctl status` 명령어를 통해 서비스의 현재 상태를 확인할 수 있습니다. 4. **로그 관리**: 시스템 로그를 통해 서비스의 문제를 쉽게 진단할 수 있습니다. 5. **보안**: 서비스를 더 안전하게 운영할 수 있는 보안 옵션을 제공합니다. 그러나 ELK Stack을 설치하기 전에는 시스템 요구 사항, 네트워크 설정, 보안 설정 등을 고려해야 합니다. 또한...

elastic search search api 중 query dsl

Elasticsearch의 Query DSL (Domain Specific Language)은 Elasticsearch에서 데이터를 검색하기 위한 강력하고 유연한 쿼리 언어입니다. Query DSL을 사용하면 다양한 검색 요구 사항에 맞춰 복잡한 검색 쿼리를 구성할 수 있습니다. 여기에는 Query DSL의 주요 특징과 구성 요소에 대한 개요를 드리겠습니다. ### 주요 특징 1. **유연성**: Query DSL은 다양한 검색 요구 사항을 충족시키기 위해 다양한 쿼리 타입을 조합할 수 있는 유연성을 제공합니다. 2. **강력한 검색 기능**: 텍스트 검색, 범위 검색, 정확도 조절, 불리언 조합 등을 포함하여 매우 복잡한 검색 쿼리를 작성할 수 있습니다. 3. **JSON 기반 구조**: 쿼리는 JSON 형식으로 작성되며, 이는 Elasticsearch와의 통신에서 사용되는 주된 형식입니다. ### 핵심 구성 요소 1. **기본 쿼리 타입**:    - **Match Query**: 텍스트/키워드 필드에서 텍스트를 검색합니다. 텍스트 분석이 적용되어 유연한 검색을 지원합니다.    - **Term Query**: 정확한 용어를 검색합니다. 텍스트 분석을 거치지 않습니다.    - **Range Query**: 숫자, 날짜, 문자열 범위 내의 값에 대해 검색합니다. 2. **복합 쿼리**:    - **Bool Query**: 여러 쿼리를 `must`, `should`, `must_not`, `filter` 조건으로 조합합니다.      - `must`: 조건을 충족해야 합니다.      - `should`: 하나 이상의 조건을 충족하는 것이 좋습니다 (옵션).      - `must_not`: 조건을 충족하지 않아야 합니다.      - `filter`: 조건을 충족해야 하지만 점수(...

react ink

리액트로 커맨드 라인 툴 만들기 https://github.com/vadimdemedes/ink-ui

redux vs react-query

 `react-query`와 `redux`는 React 애플리케이션에서 데이터를 관리하는 데 사용되는 라이브러리이지만, 주요 사용 목적과 핵심 기능이 다릅니다. 이 둘의 차이점을 이해하면 왜 많은 개발자들이 서버 데이터를 관리하기 위해 `redux` 대신 `react-query`를 선택하는지 이해할 수 있습니다. ### Redux - **전역 상태 관리**: Redux는 애플리케이션의 전역 상태를 관리하는 데 사용됩니다. 그것은 중앙 집중식 저장소에서 애플리케이션의 모든 상태를 관리하도록 설계되었습니다. - **명시적**: Redux는 상태 변화를 위해 액션과 리듀서를 사용하며, 상태 변화 과정이 명시적입니다. - **미들웨어**: 다양한 미들웨어를 통해 비동기 작업, 로깅, 디버깅 등을 지원합니다. - **캐싱 및 데이터 동기화 미포함**: Redux 자체는 API 콜의 캐싱이나 데이터 동기화 기능을 제공하지 않습니다. 이러한 기능을 구현하기 위해서는 추가적인 미들웨어나 라이브러리가 필요합니다. ### React-Query - **서버 상태 관리**: React-Query는 서버 데이터를 가져오기, 캐싱, 동기화, 백그라운드 리프레시와 같은 작업을 자동화하는데 중점을 둡니다. - **자동 캐싱**: 데이터를 자동으로 메모리에 캐싱하고, 시간이 지나면 캐시를 무효화합니다. - **백그라운드 동기화**: 애플리케이션이 포커스될 때 자동으로 데이터를 최신 상태로 동기화할 수 있습니다. - **별도의 상태 관리 필요 없음**: 상태를 관리하는 별도의 구조나 로직 없이 API 결과를 직접 사용할 수 있습니다. ### 그래서 Redux 대신 React-Query를 사용하는 이유는? 1. **간소화된 데이터 페칭 로직**: Redux에서 API를 호출하고 데이터를 저장하려면 여러 액션, 리듀서, 그리고 종종 미들웨어 (예: redux-thunk, redux-saga)가 필요합니다. 반면, React-Query는 이러한 프로세스를 대폭 단순화합니다. 2. **내장된...

온프레미스 서버란

 온프레미스(on-premises) 서버는 기업이나 조직의 물리적인 위치 내에서 운영되는 서버나 데이터 센터를 의미합니다. 이러한 서버는 조직의 건물 내에 위치하거나, 조직이 소유하고 관리하는 다른 위치에 설치될 수 있습니다. 온프레미스 서버의 특징과 장단점은 다음과 같습니다: **특징**: 1. 조직이 직접 서버와 관련 인프라를 구매, 설치, 운영합니다. 2. IT 팀이 서버의 관리, 유지보수, 업데이트, 보안을 담당합니다. 3. 조직 내부의 네트워크를 통해 접근되며, 외부에서는 VPN 등의 방법을 통해 접근할 수 있습니다. **장점**: 1. **데이터 제어**: 조직은 자체 데이터와 인프라에 대한 완전한 제어권을 갖게 됩니다. 2. **보안**: 조직의 보안 정책에 따라 맞춤형 보안 솔루션을 적용할 수 있습니다. 3. **성능**: 내부 네트워크를 통해 빠른 접근 속도를 제공합니다. **단점**: 1. **초기 투자 비용**: 서버와 관련 인프라를 구매하고 설치하는 데 큰 비용이 들 수 있습니다. 2. **유지보수 비용**: 서버의 유지보수, 업데이트, 보안 패치 적용 등에 대한 비용이 지속적으로 발생합니다. 3. **유연성 부족**: 확장이 필요할 경우 추가적인 하드웨어 구매와 설치가 필요합니다. 반면, 클라우드 서비스는 인터넷을 통해 제공되는 서비스로, 기업이나 조직은 필요에 따라 리소스를 사용하고 비용을 지불합니다. 클라우드 서비스는 초기 투자 비용이 적고, 유연성이 높지만, 데이터 제어와 보안에 대한 우려가 있을 수 있습니다.

`kill` vs `pkill`

 `kill`과 `pkill`은 프로세스를 종료하는 데 사용되는 리눅스 명령어들이지만, 사용 방식과 목적이 약간 다릅니다. 1. **`kill`**:     - `kill`은 프로세스 ID (PID)를 직접 지정하여 특정 프로세스를 종료합니다.     - 프로세스를 종료하려면 먼저 그 프로세스의 PID를 알아야 합니다. 이를 위해 `ps` 명령어나 `pgrep` 등의 다른 도구를 사용해야 할 수도 있습니다.     - 예:       ```bash       ps aux | grep elasticsearch       kill [PID]       ``` 2. **`pkill`**:     - `pkill`은 프로세스 이름 또는 다른 패턴을 기반으로 프로세스를 찾아서 종료합니다. 따라서 PID를 직접 지정할 필요가 없습니다.     - 이는 여러 프로세스를 일치하는 이름이나 패턴으로 한 번에 종료할 때 특히 유용합니다.     - 예:       ```bash       pkill -f elasticsearch       ``` `pkill`을 사용하는 주된 이유는 특정 프로세스의 PID를 따로 조회하지 않고도 프로세스 이름이나 패턴을 통해 바로 프로세스를 종료할 수 있기 때문입니다. ELK 스택과 같이 여러 컴포넌트로 구성된 시스템에서는 `pkill`이 `kill`보다 종종 더 편리하게 사용될 수 있습니다.

`filebeat`, `logstash`, `elasticsearch` 키고 끄기

 `filebeat`, `logstash`, `elasticsearch`를 시작하거나 중지하려면 각 컴포넌트에 대한 명령어를 사용합니다. 여기에 간단한 방법을 제시하겠습니다. 1. **Elasticsearch**:     **실행**:     ```bash     ./bin/elasticsearch     ```     **종료**:     - Elasticsearch는 포그라운드로 실행되면 Ctrl+C로 종료할 수 있습니다.     - 백그라운드로 실행된 경우, 프로세스 ID를 사용하여 종료할 수 있습니다.       ```bash       pkill -f elasticsearch       ``` 2. **Logstash**:     **실행**:     ```bash     ./bin/logstash -f /path/to/your/pipeline/config/file.conf     ```     **종료**:     - 포그라운드로 실행되는 경우 Ctrl+C로 종료합니다.     - 백그라운드로 실행된 경우, 프로세스 ID를 사용하여 종료합니다.       ```bash       pkill -f logstash       ``` 3. **Filebeat**:     **실행**:     ```bash     ./bin/filebeat -e -c filebeat.yml     ```     **종료**:     - 포그라운드로 실행되는...

putty 복붙 하는 법

 PuTTY는 Windows 환경에서 SSH 클라이언트로 널리 사용되는 프로그램입니다. PuTTY를 사용하여 SSH로 서버에 접속했을 때 복사 및 붙여넣기는 다음과 같이 수행할 수 있습니다: 1. **복사 (Windows에서 PuTTY로)**: 텍스트를 선택하면 자동으로 클립보드에 복사됩니다. 마우스 왼쪽 버튼을 누른 상태로 원하는 텍스트 영역을 드래그하여 선택하면 해당 텍스트가 클립보드에 복사됩니다. 2. **붙여넣기 (PuTTY에서 Windows로)**: 클립보드에 있는 텍스트를 PuTTY 세션에 붙여넣으려면 마우스 오른쪽 버튼을 클릭하거나 키보드의 `Shift` + `Insert` 조합을 사용합니다. 3. **복사 (PuTTY에서 Windows로)**: 마우스 왼쪽 버튼을 누른 상태로 원하는 텍스트 영역을 드래그하여 선택하면 해당 텍스트가 클립보드에 복사됩니다. 4. **붙여넣기 (Windows에서 PuTTY로)**: 원하는 위치에 마우스 오른쪽 버튼을 클릭하거나 키보드의 `Shift` + `Insert` 조합을 사용합니다. 그러나 몇 가지 주의사항이 있습니다: - 일부 서버나 애플리케이션 설정에 따라 복사 및 붙여넣기 동작이 예상대로 작동하지 않을 수 있습니다. - 매우 긴 내용을 붙여넣을 때 문제가 발생할 수 있으므로, 큰 스크립트나 명령어를 실행하기 전에 주의를 기울여야 합니다. - PuTTY의 설정에서 마우스 동작과 관련된 옵션을 수정하여 복사 및 붙여넣기 동작을 변경할 수 있습니다. 대부분의 경우, 위의 기본 동작으로 PuTTY에서 복사 및 붙여넣기를 쉽게 수행할 수 있습니다.

패키지 관리 도구 apt-get yum

## 도구 있는지 확인  시스템에 `apt-get` (데비안/우분투 기반 시스템의 패키지 관리 도구) 또는 `yum` (Red Hat 기반 시스템의 패키지 관리 도구)이 있는지 확인하려면 여러 가지 방법을 사용할 수 있습니다. 1. **명령어의 존재 확인**:    `which` 또는 `command -v`를 사용하여 명령어의 경로를 확인합니다.    ```bash    which apt-get    ```    또는    ```bash    command -v apt-get    ```    위 명령어들 중 하나를 실행하면 `apt-get`의 경로가 출력됩니다. 만약 아무런 출력이 없다면 해당 명령어는 시스템에 설치되어 있지 않습니다.    같은 방식으로 `yum`도 확인할 수 있습니다. 2. **버전 확인**:    설치된 패키지 관리 도구의 버전을 확인하려면 다음과 같이 실행합니다.    ```bash    apt-get --version    ```    또는    ```bash    yum --version    ```    이 명령어들은 각각의 패키지 관리 도구의 버전 정보를 출력합니다. 만약 해당 도구가 설치되어 있지 않다면, 오류 메시지가 출력됩니다. 이러한 방법들을 통해 시스템에 어떤 패키지 관리 도구가 설치되어 있는지, 그리고 그 버전은 무엇인지 확인할 수 있습니다. ## `yum` vs  `apt-get` `yum`과 `apt-get`은 리눅스 배포판에 따라 사용되는 주요 패키지 관리 도구입니다. 각 도구는 배포판의 유형과 철학에 따라 설계되었으며, 특정한 목적과 기능을 갖추고 있습니다. 이...

리눅스 명령어 cat grep 그리고 패턴

`cat`과 `grep`을 함께 사용하는 것은 파일에서 특정 패턴이나 문자열을 검색할 때 유용합니다. 그러나 일반적으로 `grep`만으로도 파일 내부를 검색할 수 있기 때문에 `cat`을 꼭 사용할 필요는 없습니다. 그렇지만 `cat`과 `grep`을 함께 사용하는 방법을 이해하는 것은 중요합니다. 1. **기본 예시**:    ```bash    cat filename.txt | grep "search_term"    ```    이 명령어는 `filename.txt` 파일에서 "search_term" 문자열을 검색하여 일치하는 모든 라인을 출력합니다. 2. **여러 파일에서 검색**:    ```bash    cat file1.txt file2.txt | grep "search_term"    ```    `file1.txt`와 `file2.txt`의 내용에서 "search_term" 문자열을 검색하여 일치하는 모든 라인을 출력합니다. 3. **대소문자 구분 없이 검색**:    ```bash    cat filename.txt | grep -i "search_term"    ```    `-i` 옵션을 사용하면 대소문자를 구분하지 않고 "search_term"을 검색합니다. 4. **라인 번호와 함께 검색 결과 출력**:    ```bash    cat filename.txt | grep -n "search_term"    ```    `-n` 옵션을 사용하면 일치하는 문자열이 있는 라인의 번호도 함께 출력됩니다. 다시 한번 강조하지만, `cat` 없이 `grep`만 사용하여 파일 내부를 직접 검색할 수 있습니다. 예를 들어: ```bash grep "search_term" ...

리눅스 명령어 ll cat

1. **ll**    - **설명**: `ll`은 `ls -l`의 약자로, 파일과 디렉터리에 대한 상세한 정보를 표시하는 명령어입니다. 여기에는 파일의 권한, 링크 수, 소유자, 그룹, 크기, 마지막 수정 날짜 및 파일/디렉터리 이름이 포함됩니다.    - **예시**:      ```bash      ll      ```      이 명령어를 사용하면 현재 디렉터리의 모든 파일과 디렉터리에 대한 상세 정보를 볼 수 있습니다. 2. **cat**    - **설명**: `cat`은 concatenate(연결)의 줄임말로, 파일의 내용을 화면에 출력하거나 여러 파일을 함께 연결하는 데 사용됩니다. 주로 파일의 내용을 빠르게 확인할 때 사용합니다.    - **예시**:      - 파일 내용 출력:        ```bash        cat filename.txt        ```        이 명령어는 `filename.txt`의 내용을 화면에 출력합니다.      - 여러 파일 연결:        ```bash        cat file1.txt file2.txt > combined.txt        ```        `file1.txt`와 `file2.txt`의 내용을 합쳐 `combined.txt`에 저장합니다. `ll`은 파일과 디렉터리의 상세한 정보를 확인하기 위해, `cat`은 파일의 내용을 빠르게 확인하거나 파일을 연결하...

리눅스 명령어 free disk lscpu fdisk

1. **free**    - **설명**: 시스템의 전체 메모리 사용량, 여유 메모리, 스왑 메모리에 관한 정보를 보여줍니다.    - **예시**:      ```bash      free -h      ```      `-h` 옵션은 사람이 읽기 쉬운 형태로 출력합니다 (예: M은 메가바이트를 의미). 2. **df -h** (참고로, `disk -h`는 올바른 명령어가 아닙니다. 아마 `df -h`를 의미하셨을 것 같습니다.)    - **설명**: 파일 시스템의 전체 용량, 사용된 용량, 여유 용량, 사용률 등의 정보를 제공합니다.    - **예시**:      ```bash      df -h      ```      `-h` 옵션은 사람이 읽기 쉬운 형태로 출력합니다. 3. **lscpu**    - **설명**: CPU 아키텍처에 관한 정보를 제공합니다. 이를 통해 CPU의 속성, 코어 수, 소켓 수 등을 파악할 수 있습니다.    - **예시**:      ```bash      lscpu      ``` 4. **fdisk -l**    - **설명**: 연결된 모든 디스크와 해당 파티션 정보를 표시합니다.    - **예시**:      ```bash      sudo fdisk -l      ```      관리자 권한이 필요한 경우 sudo를 사용하여 명령어를 실행할 수 있습니다. 이 명령어들은 리눅스...

생각해봤는데 글 쓸 때 태그에 감정 표현도 추가해야겠다.

 재밌는 정보면 재밌다고 태그 달아놓을 것이다. 재미없는 건 그냥 내버려두기 굳이 재미없다고 해. 슬픈 소식은 슬프다고 달아놔야지. 무슨 툴이 유료화된다던가 이러면 슬픔 태그를 이모지로 붙일 것이다

ELK 스택

 ELK 스택은 "Elasticsearch", "Logstash", 그리고 "Kibana"의 세 가지 주요 구성 요소의 약자로, 주로 로그 관리와 분석을 위해 널리 사용되는 오픈소스 도구 모음입니다. 각 구성 요소의 역할과 기능에 대해 자세히 살펴보겠습니다: 1. **Elasticsearch**    - **역할**: 분산형 검색 및 분석 엔진.    - **기능**:      - 대량의 데이터를 실시간으로 저장, 검색, 분석할 수 있습니다.      - JSON 기반의 문서 지향적 구조를 사용하여 데이터를 저장합니다.      - 내장된 RESTful API를 통해 데이터 인덱싱, 검색, 관리 등의 작업을 수행합니다.      - 분산된 아키텍처로 확장성과 내고장성을 제공합니다. 2. **Logstash**    - **역할**: 데이터 처리 파이프라인 도구.    - **기능**:      - 다양한 소스(로그 파일, DB, 큐 등)에서 데이터를 수집합니다.      - 데이터를 파싱, 변환, 정리하고 Elasticsearch와 같은 대상으로 전송합니다.      - 플러그인 기반 아키텍처로 다양한 입력, 필터, 출력 옵션을 제공합니다. 3. **Kibana**    - **역할**: 데이터 시각화 및 대시보드 툴.    - **기능**:      - Elasticsearch에 저장된 데이터를 시각적으로 탐색하고 분석합니다.      - 다양한 차트, 그래프, 지도 등의 시각화 옵션을 제공하여 복잡한 데이터 세트를 한눈에 이해할 수 있게 돕습니다.      - 대시보드를 통해 여러...

로컬 웹 서버를 실행해서 브라우저 인터페이스로 보여지는 방식 (ex. jupyter notebook 작동 방식)

**Jupyter Notebook**도 Kibana와 유사한 개념으로 동작합니다. Jupyter Notebook을 실행하면, 내부적으로 웹 서버가 시작되고 사용자는 웹 브라우저를 통해 해당 서버에 접근할 수 있습니다. 다음은 Jupyter Notebook과 Kibana의 공통점 및 차이점에 대한 간략한 개요입니다: **공통점**: 1. **로컬 웹 서버**: 둘 다 로컬 웹 서버로 실행되며, 웹 브라우저를 통해 사용자 인터페이스를 제공합니다. 2. **웹 인터페이스**: 둘 다 웹 기반의 사용자 인터페이스를 가지며, 사용자가 웹 브라우저를 통해 작업을 수행할 수 있습니다. **차이점**: 1. **용도**:    - **Jupyter Notebook**: 주로 데이터 분석, 머신 러닝, 통계, 시각화 등의 작업을 위한 대화형 파이썬 환경을 제공합니다. 코드와 텍스트, 그래프 등을 하나의 문서로 통합하여 작성하고 실행할 수 있습니다.    - **Kibana**: Elasticsearch에 저장된 데이터를 시각화하고 탐색하는 데 초점을 맞추고 있습니다.     2. **언어 및 기술 스택**:    - **Jupyter Notebook**: 주로 Python 코드를 실행하며, 다른 커널(예: R, Julia)을 사용하여 다양한 언어를 지원할 수 있습니다.    - **Kibana**: JavaScript와 Node.js 기반으로 개발되었으며, Elasticsearch와의 통합을 중심으로 동작합니다. 3. **확장성**:    - **Jupyter Notebook**: 다양한 확장 기능과 플러그인을 통해 기능을 확장할 수 있습니다.    - **Kibana**: 플러그인 아키텍처를 통해 사용자 정의 시각화나 추가 기능을 구현할 수 있습니다. 결론적으로, Jupyter Notebook과 Kibana는 둘 다 웹 서버로 동작하는 웹 기반 인터페이...

워크플로우 그리기

 워크플로우를 그리는 것은 프로세스나 작업의 흐름을 시각적으로 나타내기 위한 것입니다. 워크플로우 다이어그램은 일반적으로 단계, 결정, 화살표(흐름의 방향) 등을 포함합니다. 워크플로우를 그리는 기본적인 방법을 안내하겠습니다: 1. **목적 정의**: 워크플로우를 그리기 전에 목적을 명확히 정의합니다. 어떤 프로세스나 작업의 흐름을 시각화하려는지 결정합니다. 2. **시작과 끝 결정**: 모든 워크플로우에는 시작과 끝이 있습니다. 이를 다이어그램에 첫 번째와 마지막 요소로 배치합니다. 3. **단계 나열**: 프로세스 내의 모든 중요한 단계나 활동을 나열합니다. 각 단계는 일반적으로 박스나 원으로 표시됩니다. 4. **결정 포인트 식별**: 프로세스 내에서 여러 경로로 분기하는 결정 포인트가 있는지 확인하고, 이를 다이아몬드 모양으로 표시합니다. 5. **화살표로 흐름 표시**: 각 단계 및 결정 포인트를 화살표로 연결하여 흐름을 표시합니다. 화살표의 방향은 워크플로우의 진행 방향을 나타냅니다. 6. **단계 및 결정 레이블링**: 각 단계와 결정 포인트에 레이블을 추가하여 이해를 돕습니다. 7. **리뷰 및 수정**: 워크플로우 다이어그램을 리뷰하며 필요한 경우 수정합니다. 다른 사람들의 피드백도 받아볼 수 있습니다. 8. **도구 사용**: 워크플로우를 그리는 데 다양한 도구가 있습니다. 예를 들면, Lucidchart, Microsoft Visio, draw.io, Miro 등이 있습니다. 이러한 도구들은 드래그 앤 드롭 인터페이스와 미리 정의된 모양, 화살표 등을 제공하여 워크플로우 작성을 간소화합니다. 워크플로우 다이어그램은 복잡한 프로세스나 작업의 흐름을 단순화하여 시각적으로 표현하는 데 유용하므로, 문서화, 교육, 커뮤니케이션 및 최적화 작업에 큰 도움을 줍니다. 결정 포인트와 단계는 워크플로우나 프로세스 플로우 다이어그램에서 주요한 구성 요소입니다. 이 두 요소는 서로 다른 목적과 특징을 가지고 있으며, 그 차이점을 이해하는 것은 중요합니...

figma로 프로토타이핑

 Figma는 디자인 및 프로토타이핑 툴로, 사용자 경험을 시뮬레이션하기 위해 상호작용 있는 프로토타입을 쉽게 만들 수 있습니다. Figma에서 프로토타입을 만드는 기본적인 방법을 소개하겠습니다: 1. **프로토타입 모드로 전환**    - Figma의 오른쪽 패널 상단에 `Design`, `Prototype`, `Inspect` 세 가지 모드가 있습니다. `Prototype`을 클릭합니다. 2. **상호작용을 추가하려는 요소 선택**    - 버튼, 아이콘, 카드 등 사용자에게 상호작용을 제공하려는 요소를 선택합니다. 3. **연결 노드(drag handle) 사용**    - 선택한 요소의 우측에 나타나는 작은 원(연결 노드)을 드래그하여 목표 프레임이나 다른 요소로 연결합니다. 4. **상호작용 세부 정보 설정**    - 연결 후, 오른쪽 패널에서 다양한 상호작용 옵션을 설정할 수 있습니다.      - `Trigger`: 사용자가 요소에 어떻게 상호작용을 하는지를 결정합니다 (예: 클릭, 호버, 드래그 등).      - `Action`: 트리거 발생 시 어떤 동작이 일어날지 결정합니다 (예: Navigate to, Open overlay, Swap with 등).      - `Animation`: 프레임 간 전환 시 어떤 애니메이션이 발생할지 결정합니다 (예: Instant, Dissolve, Move in 등). 5. **프로토타이핑 시작**    - 상단 메뉴의 '▶️ Play' 버튼(프로토타이핑 미리보기)을 클릭하여 프로토타입을 실행합니다.    - 이를 통해 설정한 상호작용 및 전환 효과를 확인할 수 있습니다. 6. **다른 상호작용 추가**    - 필요한 모든 요소에 상호작용을 추가하며, 사용자의 여정을 전체적으로 시뮬레이션할 ...

javascript 데이터 시각화

 JavaScript에서 데이터 시각화를 위한 라이브러리는 많습니다. 몇 가지 주요 라이브러리를 소개하겠습니다: 1. **D3.js (Data-Driven Documents)**    - 가장 유명하고 강력한 데이터 시각화 라이브러리 중 하나입니다.    - 웹 표준을 활용하여 문서를 조작하는 기능이 있어, 복잡한 시각화와 상호작용을 만들 수 있습니다.    - 기울기는 가파르지만, 그만큼의 유연성을 제공합니다. 2. **Chart.js**    - 간단하고 아름다운 차트를 생성하는 데 중점을 둔 라이브러리입니다.    - 캔버스를 기반으로 하며, 8가지 다른 차트 유형을 지원합니다. 3. **Highcharts**    - 상업적 및 비상업적 프로젝트 모두에서 널리 사용되는 시각화 라이브러리입니다.    - 막대, 선, 파이 차트 등 다양한 차트 유형을 제공합니다.    - 라이선스에 대한 주의가 필요합니다. 4. **Three.js**    - WebGL을 활용한 3D 그래픽을 위한 라이브러리입니다.    - 데이터 시각화 외에도 3D 애니메이션, 게임, VR/AR 등의 다양한 용도로 사용됩니다. 5. **Leaflet**    - 지도 기반의 시각화를 위한 라이브러리입니다.    - 다양한 플러그인과 함께 사용되어, 지도에 데이터를 오버레이하는 것이 쉽습니다. 6. **Plotly.js**    - D3.js를 기반으로 한 시각화 라이브러리로, 다양한 차트와 그래프를 제공합니다.    - 상호작용이 풍부하며, 데이터 과학자들에게 인기가 있습니다. 7. **C3.js**    - D3.js 위에 구축된 라이브러리로, D3의 복잡성을 줄이면서 간단한 차트를 쉽게 생성할 수 있게 해줍니다....

nohup 명령어로 세션과 독립적으로 백그라운드에서 실행하기

 `nohup`은 "no hang up"의 줄임말로, 쉘 스크립트나 명령어를 터미널 세션과 독립적으로 백그라운드에서 실행하게 하는 리눅스/유닉스 명령어입니다. 터미널이나 쉘 세션에서 프로그램을 실행하면, 해당 세션을 종료할 때 프로그램도 함께 종료됩니다. 그러나 `nohup`을 사용하면, 사용자가 로그아웃하거나 터미널을 종료하더라도 프로세스가 계속 실행되게 할 수 있습니다. **사용 방법**: ``` nohup 명령어 &  ``` `&`는 명령어를 백그라운드에서 실행하라는 의미입니다. 예를 들어, `my_script.sh` 스크립트를 `nohup`으로 실행하려면 다음과 같이 합니다: ``` nohup ./my_script.sh & ``` 기본적으로, `nohup`은 `nohup.out`이라는 파일에 명령어의 출력을 저장합니다. 다른 파일로 출력을 리다이렉트하려면: ``` nohup ./my_script.sh > my_output.log & ``` `nohup`은 오랜 시간 동안 실행되는 작업, 큰 데이터셋의 처리, 원격 서버에서의 작업 등에서 유용하게 사용됩니다.

리눅스 명령어

리눅스 명령어 기본 설명 1. **ls**:    - `ls` 명령어는 "list"의 약자로, 디렉터리의 내용을 나열합니다.    - 다양한 옵션들을 통해 출력 결과를 사용자가 원하는 대로 조절할 수 있습니다.      - `-l`: 상세한 정보(권한, 소유자, 크기, 수정일 등)와 함께 목록을 출력합니다.      - `-a`: 숨겨진 파일을 포함해 모든 파일을 출력합니다.      - `-h`: 크기를 사람이 읽기 쉬운 형식으로 출력합니다. 2. **df**:    - `df`는 "disk free"의 약자로, 사용 가능한 디스크 공간을 보여줍니다.    - 일반적으로 파일 시스템별로 사용된 공간과 사용 가능한 공간을 표시합니다.      - `-h`: 크기를 사람이 읽기 쉬운 형식으로 출력합니다. 3. **du**:    - `du`는 "disk usage"의 약자로, 디렉터리나 파일이 사용하고 있는 디스크 공간의 크기를 보여줍니다.      - `-h`: 크기를 사람이 읽기 쉬운 형식으로 출력합니다.      - `-s`: 주어진 경로의 총 사용량만 표시합니다. 4. **ln**:    - `ln` 명령어는 파일이나 디렉터리에 대한 링크를 생성합니다.    - 기본적으로 하드 링크를 생성하지만, `-s` 옵션을 사용하면 심볼릭 링크(소프트 링크)를 생성할 수 있습니다. 5. **top**:    - `top` 명령어는 시스템의 현재 상태를 실시간으로 모니터링하며, CPU 사용률이 높은 프로세스 순서대로 출력합니다.    - 이를 통해 어떤 프로세스가 리소스를 많이 사용하고 있는지 파악할 수 있습니다. 6. **vi**:   ...