이미지 파일 및 설정 파일 삭제, 새로운 CLI 및 문서 추가

This commit is contained in:
2025-03-04 12:19:53 +09:00
parent fb66b69644
commit 2c0a2d738c
33 changed files with 3149 additions and 54 deletions

View File

@@ -0,0 +1,231 @@
# **Ruby에서 CSV, JSON, YAML 파일 처리 및 네트워크 요청 보내기**
현대 프로그래밍에서 데이터는 다양한 포맷으로 저장되며, 네트워크를 통해 주고받는 일이 많다. Ruby에서는 **CSV, JSON, YAML** 같은 파일을 쉽게 다룰 수 있고, **HTTP 요청**을 통해 웹 API와 데이터를 주고받을 수도 있다. 이번 글에서는 이러한 작업을 어떻게 수행하는지 설명한다.
---
## **1. CSV 파일 다루기 (`csv` 라이브러리)**
CSV(Comma-Separated Values)는 데이터를 테이블 형식으로 저장하는 파일 포맷이다. Ruby에서는 `csv` 라이브러리를 사용해 CSV 파일을 읽고 쓸 수 있다.
### **1.1. CSV 파일 쓰기**
```ruby
require "csv"
CSV.open("data.csv", "w") do |csv|
csv << ["이름", "나이", "직업"]
csv << ["홍길동", 30, "개발자"]
csv << ["김철수", 25, "디자이너"]
end
```
출력 (`data.csv`):
```
이름,나이,직업
홍길동,30,개발자
김철수,25,디자이너
```
### **1.2. CSV 파일 읽기**
```ruby
CSV.foreach("data.csv", headers: true) do |row|
puts "#{row["이름"]} (#{row["나이"]}세) - #{row["직업"]}"
end
```
출력:
```
홍길동 (30세) - 개발자
김철수 (25세) - 디자이너
```
---
## **2. JSON 파일 다루기 (`json` 라이브러리)**
JSON(JavaScript Object Notation)은 웹 API에서 데이터를 주고받을 때 가장 많이 쓰이는 포맷이다.
### **2.1. JSON 파일 쓰기**
```ruby
require "json"
data = [
{ name: "홍길동", age: 30, job: "개발자" },
{ name: "김철수", age: 25, job: "디자이너" }
]
File.write("data.json", JSON.pretty_generate(data))
```
출력 (`data.json`):
```json
[
{
"name": "홍길동",
"age": 30,
"job": "개발자"
},
{
"name": "김철수",
"age": 25,
"job": "디자이너"
}
]
```
### **2.2. JSON 파일 읽기**
```ruby
json_data = File.read("data.json")
data = JSON.parse(json_data)
data.each do |person|
puts "#{person["name"]} (#{person["age"]}세) - #{person["job"]}"
end
```
출력:
```
홍길동 (30세) - 개발자
김철수 (25세) - 디자이너
```
---
## **3. YAML 파일 다루기 (`yaml` 라이브러리)**
YAML(YAML Ain't Markup Language)은 사람이 읽기 쉬운 데이터 포맷으로, 설정 파일 등에 많이 사용된다.
### **3.1. YAML 파일 쓰기**
```ruby
require "yaml"
data = [
{ "name" => "홍길동", "age" => 30, "job" => "개발자" },
{ "name" => "김철수", "age" => 25, "job" => "디자이너" }
]
File.write("data.yaml", data.to_yaml)
```
출력 (`data.yaml`):
```yaml
---
- name: 홍길동
age: 30
job: 개발자
- name: 김철수
age: 25
job: 디자이너
```
### **3.2. YAML 파일 읽기**
```ruby
yaml_data = File.read("data.yaml")
data = YAML.load(yaml_data)
data.each do |person|
puts "#{person["name"]} (#{person["age"]}세) - #{person["job"]}"
end
```
출력:
```
홍길동 (30세) - 개발자
김철수 (25세) - 디자이너
```
---
## **4. 네트워크 요청 보내기 (`net/http` 라이브러리)**
웹 서버와 데이터를 주고받으려면 **HTTP 요청**을 사용해야 한다. Ruby에서는 `net/http` 라이브러리를 이용하면 간단하게 요청을 보낼 수 있다.
### **4.1. GET 요청 보내기**
```ruby
require "net/http"
require "json"
url = URI("https://jsonplaceholder.typicode.com/posts/1")
response = Net::HTTP.get(url)
data = JSON.parse(response)
puts "제목: #{data["title"]}"
puts "내용: #{data["body"]}"
```
출력 (샘플 API 응답):
```
제목: sunt aut facere repellat provident occaecati excepturi optio reprehenderit
내용: quia et suscipit suscipit...
```
### **4.2. POST 요청 보내기**
```ruby
require "net/http"
require "json"
url = URI("https://jsonplaceholder.typicode.com/posts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true # HTTPS 요청
request = Net::HTTP::Post.new(url, { "Content-Type" => "application/json" })
request.body = { title: "새 글", body: "내용입니다.", userId: 1 }.to_json
response = http.request(request)
puts response.body
```
출력 (샘플 API 응답):
```json
{
"title": "새 글",
"body": "내용입니다.",
"userId": 1,
"id": 101
}
```
---
## **5. HTTP 요청을 쉽게 하는 `http` 라이브러리**
`net/http`보다 더 편리한 HTTP 클라이언트 라이브러리로 `http`를 사용할 수도 있다.
```ruby
require "http"
response = HTTP.get("https://jsonplaceholder.typicode.com/posts/1")
data = response.parse
puts "제목: #{data["title"]}"
```
POST 요청도 매우 간단하다.
```ruby
response = HTTP.post("https://jsonplaceholder.typicode.com/posts", json: { title: "새 글", body: "내용입니다.", userId: 1 })
puts response.parse
```
---
## **6. 마무리**
이번 글에서는 Ruby에서 **CSV, JSON, YAML 파일을 다루는 방법**과 **네트워크 요청을 보내는 방법**을 살펴보았다.
- **CSV 파일** → `CSV.open`, `CSV.foreach`
- **JSON 파일** → `JSON.parse`, `JSON.pretty_generate`
- **YAML 파일** → `YAML.load`, `data.to_yaml`
- **HTTP 요청 (`net/http`)**
- `Net::HTTP.get(url)` → GET 요청
- `Net::HTTP::Post.new(url, headers)` → POST 요청
- **더 쉬운 HTTP 요청 (`http` 라이브러리)** → `HTTP.get(url)`, `HTTP.post(url, json: {})`
이제 Ruby에서 다양한 데이터 포맷을 다루고, 웹 API와 상호작용하는 프로그램을 쉽게 만들 수 있다!