- 리눅스 한 학기 살기 - 2주차2025년 03월 17일 23시 42분 44초에 업로드 된 글입니다.작성자: kugorang
들어가며
Dash! Do you know curl? Do you know make? 지난 주에 작성한 글의 연장선 상에 있는 글이다.
리눅스 한 학기 살기 - 1주차
들어가며대학교 마지막 학기에 재학 중이다. 3학점만 들어도 졸업이 가능했으나, 또 무슨 심보가 발동 됐는지 결국 18학점 꽉 채워버렸다 (나란 인간 정말...) 매번 게임과 관련된 수업만 듣다 이
kugora.ng
이번 주차에 본격적으로 우분투를 적극적으로 사용해보고자 이것저것 설치해봤다. 42경산 과제 수행을 위해 curl, make, vim, git을 설치했고 사용해보지 못했지만, Anthropic 사의 claude-code를 사용해보고 싶어 npm도 설치해봤다.
이 중에서 다른 패키지에 비해 상대적으로 이해도가 적은 curl과 make에 대한 보고서를 이번 주차에 작성해보고자 한다.
curl 이해하기
curl이란 무엇인가?
curl
은 "Client for URLs"의 약자로, 다양한 프로토콜을 사용하여 데이터를 전송하거나 받기 위한 명령줄 도구이다. 1996년에 다니엘 스텐버그(Daniel Stenberg)라는 스웨덴 개발자가 IRC 사용자들을 위해 환율 정보를 자동으로 가져오는 것을 목표로 처음 개발했다. 초기에는 'httpget', 그리고 'urlget'이라는 이름으로 불리다가 현재의 'curl'이라는 이름을 갖게 되었다.curl의 핵심은
libcurl
이라는 무료 클라이언트 측 URL 전송 라이브러리에 기반한다. 이 라이브러리는 HTTP/1 (HTTP/2 및 HTTP/3 지원 포함), HTTPS, FTP, FTPS, SMTP, POP3 등 광범위한 프로토콜을 지원하며, 쿠키, 프록시, 사용자 인증과 같은 다양한 기능도 제공한다.curl의 기본 동작 원리
curl의 동작은 URL을 목표로 HTTP 요청을 보내고 응답 데이터를 받아오는 과정으로 요약된다. 사용자가 명령줄에 입력한 URL과 옵션에 따라 GET, POST 등의 HTTP 메소드로 서버에 요청을 보내고, 그에 대한 응답(Response)(예: HTML 페이지 내용이나 API 응답 데이터)을 터미널 출력이나 파일로 전달한다.
기본적으로 curl은 클라이언트-서버 모델에 따라 작동한다.
- 사용자가 URL과 함께 curl 명령어를 입력
- curl은 해당 URL의 서버에 HTTP 요청을 전송
- 서버는 요청을 처리한 후 응답을 curl에 반환
- curl은 이 응답을 터미널에 출력하거나 파일로 저장
예를 들어,
curl http://example.com
을 실행하면 example.com 웹사이트의 HTML 내용이 터미널에 출력된다.curl의 주요 기능과 옵션
curl은 200개가 넘는 다양한 옵션을 제공한다. 가장 자주 사용되는 옵션들은 다음과 같다.
기본 옵션
옵션 짧은 형식 설명 예시 --help
-h
curl 명령어의 사용법 및 모든 옵션을 보여준다. curl --help
--version
-V
curl의 버전 정보를 보여준다. curl --version
--output
-o
다운로드한 내용을 지정된 파일 이름으로 저장한다. curl -o example.html https://www.example.com
--remote-name
-O
다운로드한 내용을 URL에 명시된 파일 이름으로 저장한다. curl -O https://www.example.com/image.jpg
요청 관련 옵션
옵션 짧은 형식 설명 예시 --request
-X
사용할 HTTP 메소드를 지정한다 (GET, POST, PUT, DELETE 등). curl -X POST https://api.example.com/users
--data
-d
POST 또는 PUT 요청 시 서버에 전송할 데이터를 지정한다. curl -X POST -d "name=John&age=30" https://api.example.com/users
--header
-H
HTTP 요청 헤더를 추가한다. curl -H "Content-Type: application/json" https://api.example.com/data
--user
-u
서버에 접속하기 위한 사용자 이름과 비밀번호를 지정한다. curl -u username:password ftp://example.com
디버깅 및 출력 옵션
옵션 짧은 형식 설명 예시 --verbose
-v
통신 과정을 상세하게 보여준다. curl -v https://www.example.com
--head
-I
서버로부터 HTTP 헤더 정보만 가져온다. curl -I https://www.example.com
--location
-L
서버의 응답이 리디렉션인 경우, 자동으로 따라간다. curl -L http://shorturl.com/abcd
--insecure
-k
SSL 인증서 검증을 건너뛴다. (주의해서 사용해야 한다.) curl -k https://self-signed.example.com
curl의 실무 활용 사례
API 호출 및 테스트
REST API 엔드포인트와 상호작용하는 데 curl은 매우 유용하다.
# GET 요청 예시 curl https://jsonplaceholder.typicode.com/posts/1 # POST 요청 예시 curl -X POST \ -H "Content-Type: application/json" \ -d '{"title":"새로운 게시물", "body":"내용입니다", "userId":1}' \ https://jsonplaceholder.typicode.com/posts
파일 다운로드
웹 서버나 FTP 서버로부터 파일을 다운로드한다.
# 파일 다운로드 (원래 이름으로 저장) curl -O https://example.com/file.zip # 파일 다운로드 (사용자 지정 이름으로 저장) curl -o my_file.zip https://example.com/file.zip # 중단된 다운로드 이어받기 curl -C - -O https://example.com/largefile.zip
인증 및 보안
인증이 필요한 서비스에 접근한다.
# 기본 인증 curl -u username:password https://api.example.com/secure # 토큰 기반 인증 (Bearer 토큰) curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \ https://api.example.com/secure
자동화 스크립트에서의 활용
쉘 스크립트나 배치 파일 내에서 웹 요청을 자동화하는 용도로 curl을 많이 사용한다. 예를 들어 크론(cron) 작업으로 정기적으로 특정 웹페이지를 가져와 변경 여부를 모니터링하거나, CI/CD 파이프라인 스크립트에서 배포 후 Webhook API를 호출하는 단계 등에 curl 명령을 넣어 자동화할 수 있다.
curl의 고급 활용 기법
curl과 jq를 활용한 API 응답 처리
curl과 jq(JSON 프로세서)를 함께 사용하면 API 응답을 더 효과적으로 처리할 수 있다.
# GitHub API에서 저장소 정보를 가져와 특정 필드만 추출 curl -s https://api.github.com/repos/flutter/flutter | jq '{name: .name, stars: .stargazers_count, forks: .forks_count}'
복수 URL 병렬 처리
xargs와 함께 사용하여 여러 URL을 병렬로 처리할 수 있다.
# urls.txt 파일에 있는 모든 URL을 10개씩 병렬로 처리 cat urls.txt | xargs -P 10 -n 1 curl -O
성능 측정
curl의 -w 옵션을 사용하여 요청 성능을 측정할 수 있다:.
# 요청 시간 측정 curl -s -w "\nDNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n" -o /dev/null https://www.example.com
make 이해하기
make란 무엇인가?
make
는 소스 코드로부터 실행 가능한 프로그램이나 라이브러리를 자동으로 빌드하는 데 사용되는 빌드 자동화 도구이다. 특히 Unix 및 Unix 계열 운영체제에서 오랫동안 널리 사용되어 왔으며, 소프트웨어 개발 과정에서 필수적인 도구로 자리매김했다.make의 가장 큰 장점은 효율성이다. make는 Makefile에 정의된 의존성 관계를 파악하여, 소스 코드 파일이 변경되었을 경우 해당 파일과 그에 의존하는 파일들만 다시 컴파일한다. 이는 전체 프로젝트를 매번 다시 빌드하는 것에 비해 훨씬 빠르고 효율적인 작업 방식을 제공한다.
Makefile의 구조와 문법
Makefile은 make 도구가 프로젝트를 어떻게 빌드해야 하는지에 대한 지침을 담고 있는 텍스트 파일이다. 일반적으로 프로젝트의 소스 코드와 같은 디렉토리에 위치하며, 이름은 Makefile 또는 makefile로 지정된다.
기본 구조
Makefile은 일련의 규칙 (rules)으로 구성된다. 각 규칙은 하나 이상의 타겟 (target), 0개 이상의 의존성 (dependencies), 그리고 타겟을 생성하기 위한 명령어 (commands 또는 recipe)로 이루어진다. 기본적인 Makefile의 구조는 다음과 같다.
타겟: 의존성 명령어
- 타겟 (Target): 생성하거나 업데이트해야 하는 파일 또는 수행해야 하는 동작의 이름을 나타낸다.
- 의존성 (Dependencies): 타겟을 생성하기 위해 필요한 파일들의 목록이다.
- 명령어 (Commands): 타겟을 생성하기 위해 실행되는 쉘 명령어이다. 각 명령어는 반드시 탭 (Tab) 문자로 들여쓰기 되어야 한다.
변수 사용
Makefile에서는 변수를 사용하여 코드를 더 깔끔하고 유지보수하기 쉽게 만들 수 있다.
# 변수 정의 CC = gcc CFLAGS = -Wall -g OBJS = main.o helper.o TARGET = program # 변수 사용 $(TARGET): $(OBJS) $(CC) $(CFLAGS) -o $@ $^
자동 변수
Makefile에서는 다음과 같은 자동 변수를 사용할 수 있다.
$@
: 현재 타겟의 이름$<
: 현재 타겟의 첫 번째 의존성$^
: 현재 타겟의 모든 의존성 (중복 제거)$?
: 현재 타겟보다 더 최근에 수정된 의존성들
패턴 규칙
Makefile에서는 패턴 규칙을 사용하여 여러 파일에 대해 동일한 명령을 적용할 수 있다.
%.o: %.c $(CC) $(CFLAGS) -c -o $@ $
이 규칙은 모든
.c
파일을 해당하는.o
파일로 컴파일한다.make의 주요 기능과 옵션
make 명령은 다양한 옵션을 제공하며, 그 중 실무에서 자주 쓰이는 것들은 다음과 같다:
옵션 설명 예시 -f <파일>
기본 Makefile 대신 다른 파일을 사용한다. make -f MyBuild.mk
-j <숫자>
병렬로 실행할 작업의 개수를 지정한다. make -j4
-B
모든 타겟을 무조건 다시 빌드한다. make -B
-n
실제로 명령을 실행하지 않고 어떤 명령이 실행될지만 보여준다. make -n
-C <디렉토리>
지정된 디렉토리로 이동한 후 make를 실행한다. make -C src
make의 실무 활용 사례
복잡한 C/C++ 프로젝트 빌드
# 변수 정의 CC = gcc CFLAGS = -Wall -g LIBS = -lm SRC_DIR = src OBJ_DIR = obj BIN_DIR = bin TARGET = $(BIN_DIR)/program # 소스 파일과 오브젝트 파일 목록 SRC = $(wildcard $(SRC_DIR)/*.c) OBJ = $(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(SRC)) # 기본 타겟 all: $(TARGET) # 디렉토리 생성 $(BIN_DIR) $(OBJ_DIR): mkdir -p $@ # 실행 파일 빌드 $(TARGET): $(OBJ) | $(BIN_DIR) $(CC) $(CFLAGS) -o $@ $^ $(LIBS) # 오브젝트 파일 빌드 $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR) $(CC) $(CFLAGS) -c -o $@ $ # 정리 clean: rm -rf $(OBJ_DIR) $(BIN_DIR) # phony 타겟 (실제 파일이 아닌 작업을 위한 타겟) .PHONY: all clean
이 Makefile은 소스 디렉토리의 모든 C 파일을 컴파일하고, 최종 실행 파일을 생성한다.
테스트 자동화
# 테스트 관련 타겟 test: $(TARGET) ./$(TARGET) --test # 커버리지 보고서 생성 coverage: CFLAGS += --coverage coverage: clean test gcov $(SRC) .PHONY: test coverage
이 규칙들은 프로그램을 테스트하고 코드 커버리지 보고서를 생성한다.
문서 생성
# 문서 생성 docs: doxygen Doxyfile # 문서 정리 clean-docs: rm -rf docs/html docs/latex .PHONY: docs clean-docs
이 규칙들은 Doxygen을 사용하여 소스 코드의 문서를 생성하고 정리한다.
make의 고급 활용 기법
조건부 규칙
Makefile에서 조건문을 사용하여 환경에 따라 다른 동작을 수행할 수 있다.
# 개발/프로덕션 환경에 따른 조건부 빌드 ENV ?= development ifeq ($(ENV), production) CFLAGS += -O3 -DNDEBUG else CFLAGS += -g -DDEBUG endif build: $(CC) $(CFLAGS) -o $(TARGET) $(SOURCES)
매크로 정의
복잡한 작업을 매크로로 정의하여 재사용할 수 있다.
# 디렉토리 생성 매크로 define make-dir mkdir -p $(1) @echo "Directory $(1) created." endef setup: $(call make-dir,build) $(call make-dir,logs) $(call make-dir,data)
파일 생성을 위한 템플릿
Makefile에서 템플릿을 사용하여 파일을 동적으로 생성할 수 있다.
define CONFIG_TEMPLATE { "appName": "$(APP_NAME)", "environment": "$(ENV)", "apiUrl": "$(API_URL)", "version": "$(VERSION)" } endef export CONFIG_TEMPLATE config.json: @echo "$$CONFIG_TEMPLATE" > config.json
728x90웹 개발에서의 활용
웹 개발에서의 일반적인 활용 방법
프론트엔드 개발에서의 curl 활용
프론트엔드 개발에서 curl은 다음과 같은 목적으로 활용된다.
- 백엔드 API 테스트: 개발 중인 웹 애플리케이션의 백엔드 API를 테스트하기 위해 curl을 사용한다. 이는 프론트엔드를 구현하기 전에 API의 동작을 확인하는 데 매우 유용하다.
# JSON API 테스트 curl -X GET \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ https://api.example.com/users
- CDN에서 라이브러리 다운로드: 프로젝트에 필요한 JavaScript 라이브러리나 CSS 프레임워크를 CDN에서 다운로드한다.
# Bootstrap 다운로드 curl -O https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css
- 웹훅 테스트: GitHub나 Slack 등의 웹훅 기능을 테스트할 때 curl을 사용하여 페이로드를 전송한다.
# Webhook 테스트 curl -X POST \ -H "Content-Type: application/json" \ -d '{"text":"Hello from curl!"}' \ https://hooks.slack.com/services/YOUR/WEBHOOK/URL
백엔드 개발에서의 make 활용
백엔드 개발에서 make는 다양한 개발 작업을 자동화하는 데 활용된다.
- 개발 환경 설정: 프로젝트의 개발 환경을 일관되게 설정하기 위한 Makefile이다.
# 개발 환경 설정 Makefile setup: npm install cp .env.example .env mkdir -p logs uploads # 개발 서버 실행 dev: npm run dev # 테스트 실행 test: npm test # 린트 체크 lint: npm run lint # 데이터베이스 마이그레이션 migrate: npx prisma migrate dev .PHONY: setup dev test lint migrate
- 마이크로서비스 관리: 여러 마이크로서비스로 구성된 백엔드 시스템을 관리하기 위한 Makefile이다.
# 마이크로서비스 관리 Makefile SERVICES = auth user payment notification all: $(SERVICES) $(SERVICES): @echo "Starting $@ service..." cd services/$@ && npm start & stop: @echo "Stopping all services..." pkill -f "node.*services" || true logs: tail -f services/*/logs/app.log .PHONY: all $(SERVICES) stop logs
CI/CD 파이프라인에서의 활용
CI/CD 파이프라인에서 curl과 make는 다음과 같이 활용된다.
- 배포 알림: curl을 사용하여 배포 완료 후 Slack이나 Discord에 알림을 보낸다.
# Slack에 배포 알림 보내기 curl -X POST \ -H "Content-Type: application/json" \ -d '{"text":"애플리케이션이 성공적으로 배포되었습니다."}' \ $SLACK_WEBHOOK_URL
- 빌드 자동화: make를 사용하여 복잡한 빌드 과정을 자동화한다.
# CI/CD 빌드 Makefile ci: install test build install: npm ci test: npm test build: npm run build deploy: aws s3 sync ./dist s3://my-bucket/ .PHONY: ci install test build deploy
최신 개발 환경에서의 활용
Docker 환경에서의 활용
Docker와 함께 curl과 make를 사용하는 방법이다.
# Docker 환경 관리 Makefile IMAGE_NAME = myapp CONTAINER_NAME = myapp-container build: docker build -t $(IMAGE_NAME) . run: docker run -d --name $(CONTAINER_NAME) -p 8080:8080 $(IMAGE_NAME) stop: docker stop $(CONTAINER_NAME) docker rm $(CONTAINER_NAME) push: docker push $(IMAGE_NAME) health-check: curl -f http://localhost:8080/health || (make stop && exit 1) .PHONY: build run stop push health-check
클라우드 서비스와의 통합
AWS CLI와 curl, make를 함께 사용하는 예이다.
# AWS 서비스 관리 Makefile S3_BUCKET = my-bucket LAMBDA_FUNCTION = my-function API_URL = https://api.example.com deploy-static: aws s3 sync ./dist s3://$(S3_BUCKET)/ --delete invoke-lambda: aws lambda invoke --function-name $(LAMBDA_FUNCTION) --payload '{"key":"value"}' response.json test-api: curl -s $(API_URL)/health | grep "ok" || echo "API health check failed" cleanup: aws s3 rm s3://$(S3_BUCKET) --recursive aws cloudformation delete-stack --stack-name my-stack .PHONY: deploy-static invoke-lambda test-api cleanup
팀 개발 환경에서의 표준화
팀 개발 환경에서 curl과 make를 사용하여 작업을 표준화하는 방법이다.
# 팀 개발 환경 Makefile include .env # 환경 변수 로드 help: @echo "사용 가능한 명령어:" @echo " make setup - 개발 환경 설정" @echo " make start - 개발 서버 시작" @echo " make test - 테스트 실행" @echo " make lint - 코드 스타일 검사" @echo " make build - 프로덕션 빌드" @echo " make deploy - 배포" setup: npm install curl -s $(CONFIG_URL) -o config.json ./scripts/setup-db.sh start: npm start test: npm test lint: npm run lint build: npm run build deploy: ./scripts/deploy.sh .PHONY: help setup start test lint build deploy
이 Makefile은 팀 전체가 일관된 방식으로 개발 환경을 설정하고, 테스트, 빌드, 배포 등의 작업을 수행할 수 있도록 한다.
Dart와 Flutter 개발에서의 활용 방법
Dart 개발에서의 curl 활용
Dart 개발에서 curl은 다음과 같은 용도로 활용된다.
- Pub 패키지 정보 조회: Dart 패키지 관리자인 Pub의 패키지 정보를 curl을 통해 조회할 수 있다.
# Pub 패키지 정보 조회 curl https://pub.dev/api/packages/http
- Dart REST API 테스트: Dart로 작성된 백엔드 API를 테스트한다.
# Dart 백엔드 API 테스트 curl -X POST \ -H "Content-Type: application/json" \ -d '{"query":"getUsers"}' \ http://localhost:8080/graphql
- Dart SDK 다운로드: 특정 버전의 Dart SDK를 자동으로 다운로드한다.
# Dart SDK 다운로드 curl -O https://storage.googleapis.com/dart-archive/channels/stable/release/2.19.6/sdk/dartsdk-linux-x64-release.zip
Flutter 개발에서의 make 활용
Flutter 개발에서 make는 다음과 같은 용도로 활용된다.
- Flutter 프로젝트 빌드 자동화: 다양한 플랫폼(Android, iOS, Web)을 위한 빌드 과정을 자동화한다.
# Flutter 프로젝트 Makefile FLUTTER = flutter APP_NAME = my_flutter_app ANDROID_DIR = build/app/outputs/flutter-apk IOS_DIR = build/ios/iphoneos WEB_DIR = build/web .PHONY: all clean android ios web all: android ios web clean: $(FLUTTER) clean android: $(FLUTTER) build apk --release @echo "Android APK built at $(ANDROID_DIR)/app-release.apk" ios: $(FLUTTER) build ios --release --no-codesign @echo "iOS app built at $(IOS_DIR)" web: $(FLUTTER) build web --release @echo "Web app built at $(WEB_DIR)" run-android: $(FLUTTER) run -d android run-ios: $(FLUTTER) run -d ios run-web: $(FLUTTER) run -d chrome
- Flutter 테스트 자동화: 단위 테스트, 위젯 테스트, 통합 테스트를 자동화한다.
# Flutter 테스트 Makefile test: test-unit test-widget test-integration test-unit: flutter test test/unit/ test-widget: flutter test test/widget/ test-integration: flutter test test/integration/ coverage: flutter test --coverage lcov --remove coverage/lcov.info '**/*.g.dart' -o coverage/lcov.info genhtml coverage/lcov.info -o coverage/html open coverage/html/index.html .PHONY: test test-unit test-widget test-integration coverage
- Flutter 환경 관리: 다양한 Flutter 채널(stable, beta, dev) 간 전환과 의존성 관리를 자동화한다.
# Flutter 환경 관리 Makefile FLUTTER_CHANNEL ?= stable setup: flutter channel $(FLUTTER_CHANNEL) flutter upgrade flutter pub get format: flutter format lib/ test/ lint: flutter analyze gen-code: flutter pub run build_runner build --delete-conflicting-outputs gen-code-watch: flutter pub run build_runner watch --delete-conflicting-outputs .PHONY: setup format lint gen-code gen-code-watch
Flutter CI/CD 파이프라인에서의 curl과 make 통합
Flutter 프로젝트의 CI/CD 파이프라인에서 curl과 make를 함께 활용하는 방법이다.
# Flutter CI/CD Makefile APP_NAME = my_flutter_app FIREBASE_TOKEN ?= $(shell cat .firebase-token) FIREBASE_APP_ID ?= 1:123456789012:android:abcdef1234567890 ci: setup test build deploy notify setup: flutter clean flutter pub get test: flutter test build: flutter build apk --release deploy: curl -X POST \ -H "Authorization: Bearer $(FIREBASE_TOKEN)" \ -H "Content-Type: application/octet-stream" \ --data-binary @build/app/outputs/flutter-apk/app-release.apk \ "https://firebaseappdistribution.googleapis.com/v1/projects/$(FIREBASE_APP_ID)/releases?app=android" notify: curl -X POST \ -H "Content-Type: application/json" \ -d '{"text":"Flutter 앱이 성공적으로 배포되었습니다."}' \ $(SLACK_WEBHOOK_URL) .PHONY: ci setup test build deploy notify
이 Makefile은 Flutter 앱을 빌드하고, Firebase App Distribution을 통해 배포한 후, Slack에 알림을 보내는 전체 CI/CD 프로세스를 자동화한다.
마치며
curl
과make
는 각각 다른 목적을 가진 도구이지만, 개발자의 작업을 단순화하고 자동화하는 데 있어 매우 중요한 역할을 하고 있었다. curl은 인터넷을 통한 데이터 통신을 쉽게 만들어주며, make는 복잡한 빌드 프로세스를 자동화한다.웹 개발 환경에서는 이 두 도구가 프론트엔드와 백엔드 개발 전반에 걸쳐 다양하게 활용되고 있다고 생각한다. 특히 Dart와 Flutter 개발에서도, curl은 API 테스트와 패키지 관리에, make는 빌드 및 테스트 자동화에 효과적으로 사용되고 있는 것을 볼 수 있다. 기본 개념을 이해하고 간단한 예제부터 시작하여 학습하니 이러한 도구들이 조금은 더 친숙하게 느껴졌다.
이상으로 2주차에 해당하는 글을 마무리한다. 다음 주차에는 1주차에 시도했다 실패했던 화면 공유에 대한 재도전을 하고, 그에 대한 기록을 포스팅 해보도록 하겠다.
참고 자료
- curl 공식 웹사이트: https://curl.se/
- curl 문서: https://curl.se/docs/
- GNU Make 공식 문서: https://www.gnu.org/software/make/manual/make.html
- GNU Make 사용 안내서: https://www.gnu.org/software/make/manual/html_node/index.html
- Makefiles 튜토리얼: https://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/
- Flutter 공식 문서: https://flutter.dev/docs
- Dart 공식 문서: https://dart.dev/guides
- jq 매뉴얼: https://stedolan.github.io/jq/manual/
728x90'프로그래밍' 카테고리의 다른 글
리눅스 한 학기 살기 - 1주차 (1) 2025.03.16 코딩한다면서 아직도 코드트리를 모르세요? (0) 2025.03.09 코드트리 2025 리뉴얼 완전 분석: UI/UX 개편부터 백준·프로그래머스와의 비교까지 (2) 2025.02.09 개발자 오늘도 마음 튼튼하게 성장하기 (하) (7) 2024.12.22 개발자 오늘도 마음 튼튼하게 성장하기 (상) (7) 2024.11.10 다음글이 없습니다.이전글이 없습니다.댓글