Lino 시작하기

LinoλŠ” ν˜„λŒ€μ μ΄κ³  ν™•μž₯ κ°€λŠ₯ν•˜λ©° κ²¬κ³ ν•œ .NET μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 생성을 κ°€μ†ν™”ν•˜κΈ° μœ„ν•΄ 개발된 λͺ…령쀄 λ„κ΅¬μž…λ‹ˆλ‹€. 높은 생산성과 κ³ κΈ‰ μ•„ν‚€ν…μ²˜ ν‘œμ€€μ„ μΆ”κ΅¬ν•˜λŠ” 개발자λ₯Ό λŒ€μƒμœΌλ‘œ ν•˜λ©°, LinoλŠ” λ…λ¦½ν˜• λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€λΆ€ν„° λͺ¨λ“ˆν˜• λͺ¨λ†€λ¦¬μ‹κΉŒμ§€ μ™„μ „ν•œ ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•˜κ³  .NET μƒνƒœκ³„μ˜ λͺ¨λ²” 사둀λ₯Ό ν†΅ν•©ν•©λ‹ˆλ‹€.

ν•„μˆ˜ 쑰건

Linoλ₯Ό μ„€μΉ˜ν•˜κΈ° 전에 ν™˜κ²½μ΄ μ œλŒ€λ‘œ μ€€λΉ„λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜μ„Έμš”:

  • βœ… .NET 9.0 SDK λ˜λŠ” μ΅œμ‹  버전이 μ„€μΉ˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. .NET λ‹€μš΄λ‘œλ“œ
  • βœ… .NET CLIκ°€ ν„°λ―Έλ„μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. dotnet --version λͺ…λ ΉμœΌλ‘œ ν™•μΈν•˜μ„Έμš”.
  • βœ… 버전 관리λ₯Ό μœ„ν•œ Git이 μ„€μΉ˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. Git λ‹€μš΄λ‘œλ“œ
  • βœ… λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ μ§€μ›ν•˜λŠ” Entity Framework Core CLIκ°€ μ„€μΉ˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€: dotnet tool install --global dotnet-ef
  • βœ… Docker Desktop λ˜λŠ” Podmanκ³Ό 같은 OCI ν˜Έν™˜ μ»¨ν…Œμ΄λ„ˆ ν™˜κ²½μ΄ μ€€λΉ„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

ν”Œλž«νΌ ν˜Έν™˜μ„±

LinoλŠ” 크둜슀 ν”Œλž«νΌμ΄λ©° μ£Όμš” 운영 μ²΄μ œμ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

  • βœ… Windows
  • βœ… macOS
  • βœ… Linux

μ„€μΉ˜

LinoλŠ” .NET κΈ€λ‘œλ²Œ λ„κ΅¬λ‘œ λ°°ν¬λ©λ‹ˆλ‹€. κ³„μ†ν•˜κΈ° 전에 .NET 9 SDK 이상이 μ„€μΉ˜λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.

μ΅œμ‹  버전을 μ„€μΉ˜ν•˜λ €λ©΄ λ‹€μŒμ„ μ‹€ν–‰ν•˜μ‹­μ‹œμ˜€:

dotnet tool install --global Tolitech.Lino --version 1.0.0-alpha.10

μ„€μΉ˜ ν›„, λ‹€μŒ λͺ…λ Ήμ–΄λ‘œ Linoκ°€ μ •μƒμ μœΌλ‘œ μž‘λ™ν•˜λŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€:

lino --version

μ„€μΉ˜κ°€ μ„±κ³΅ν•˜λ©΄ 터미널에 μ„€μΉ˜λœ 버전이 ν‘œμ‹œλ©λ‹ˆλ‹€.

인증

Linoλ₯Ό μ„€μΉ˜ν•œ ν›„, λͺ¨λ“  κΈ°λŠ₯에 μ ‘κ·Όν•˜λ €λ©΄ 인증이 ν•„μš”ν•©λ‹ˆλ‹€.

이미 계정이 μžˆλŠ” 경우 λ‹€μŒ λͺ…λ Ήμ–΄λ‘œ λ‘œκ·ΈμΈν•˜μ„Έμš”:

lino auth login

λ‹€μŒ 정보λ₯Ό μž…λ ₯ν•˜λΌλŠ” μš”μ²­μ„ λ°›κ²Œ λ©λ‹ˆλ‹€:

  • μ‚¬μš©μž 이름: 사전에 λ“±λ‘λœ 이메일 μ£Όμ†Œ.
  • λΉ„λ°€λ²ˆν˜Έ: 계정에 μ—°κ²°λœ λΉ„λ°€λ²ˆν˜Έ.

아직 계정이 μ—†λ‹€λ©΄ CLIλ₯Ό 톡해 λ‹€μŒ λͺ…λ Ήμ–΄λ‘œ 등둝할 수 μžˆμŠ΅λ‹ˆλ‹€:

lino user register

등둝 κ³Όμ •μ—μ„œ λ‹€μŒ 정보λ₯Ό μž…λ ₯ν•˜μ„Έμš”:

  • 이름: μ‚¬μš©μžμ˜ 이름.
  • μ„±: μ‚¬μš©μžμ˜ μ„±.
  • 이메일: λ‘œκ·ΈμΈμ—λ„ μ‚¬μš©λ  이메일 μ£Όμ†Œ.
  • λΉ„λ°€λ²ˆν˜Έ: μ΅œμ†Œ 6자 μ΄μƒμ˜ μ•ˆμ „ν•œ λΉ„λ°€λ²ˆν˜Έ.
  • λΉ„λ°€λ²ˆν˜Έ 확인: λΉ„λ°€λ²ˆν˜Έλ₯Ό λ‹€μ‹œ μž…λ ₯ν•˜μ—¬ ν™•μΈν•©λ‹ˆλ‹€.

등둝이 μ™„λ£Œλ˜λ©΄ μžλ™μœΌλ‘œ μΈμ¦λ©λ‹ˆλ‹€.

μ–Έμ–΄ μ„€μ •

기본적으둜 Lino CLIλŠ” μ˜μ–΄ en둜 ν‘œμ‹œλ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 제곡된 μ˜΅μ…˜ μ€‘μ—μ„œ μ„ ν˜Έν•˜λŠ” μ–Έμ–΄λ‘œ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

en | pt | es | de | fr | it | ja | ko | ru | zh

μƒˆλ‘œμš΄ μ–Έμ–΄λ₯Ό μ„€μ •ν•˜λ €λ©΄ λ‹€μŒ λͺ…령을 μ‹€ν–‰ν•˜μ‹­μ‹œμ˜€:

lino preferences culture set --name culture

λ˜λŠ” λ‹€μŒ λͺ…령을 μ‚¬μš©ν•˜μ—¬ λŒ€ν™”ν˜• λͺ©λ‘μ—μ„œ μ–Έμ–΄λ₯Ό 선택할 수 μžˆμŠ΅λ‹ˆλ‹€:

lino preferences culture set

UTF-8 인코딩 μ„€μ • (선택 사항)

특수 λ¬Έμžκ°€ ν¬ν•¨λœ μ–Έμ–΄(일본어, ν•œκ΅­μ–΄, λŸ¬μ‹œμ•„μ–΄ λ˜λŠ” 쀑ꡭ어 λ“±)λ₯Ό μ˜¬λ°”λ₯΄κ²Œ ν‘œμ‹œν•˜λ €λ©΄ 터미널이 UTF-8 인코딩을 μ‚¬μš©ν•˜λ„λ‘ μ„€μ •λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.

Windows PowerShellμ—μ„œ 인코딩을 μ‘°μ •ν•˜λ €λ©΄ λ‹€μŒ λͺ…령을 μ‹€ν–‰ν•˜μ‹­μ‹œμ˜€:

[console]::InputEncoding = [System.Text.Encoding]::UTF8
[console]::OutputEncoding = [System.Text.Encoding]::UTF8

μ°Έκ³ : Linux, macOS 및 Windows Terminal μ‹œμŠ€ν…œμ—μ„œλŠ” UTF-8이 기본적으둜 지원

μ‚¬μš© κ°€λŠ₯ν•œ λͺ…λ Ήμ–΄

LinoλŠ” μ§€μ†μ μœΌλ‘œ λ°œμ „ν•˜κ³  있으며, κ³ ν’ˆμ§ˆ .NET ν”„λ‘œμ νŠΈμ˜ μš”κ΅¬ 사항을 μΆ©μ‘±ν•˜κΈ° μœ„ν•΄ μƒˆλ‘œμš΄ λͺ…령어와 κΈ°λŠ₯을 μ§€μ†μ μœΌλ‘œ μΆ”κ°€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš© κ°€λŠ₯ν•œ λͺ…λ Ήμ–΄ 전체 λͺ©λ‘μ„ ν‘œμ‹œν•˜λ €λ©΄ 터미널에 λ‹€μŒμ„ μž…λ ₯ν•˜μ„Έμš”:

lino

λ˜λŠ”, λ‹€μŒμ„ μž…λ ₯ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€:

lino --help

ν„°λ―Έλ„μ—λŠ” λ‹€μŒ μ˜ˆμ‹œμ²˜λŸΌ μ£Όμš” λͺ…λ Ήμ–΄ λͺ©λ‘κ³Ό 각각의 κ°„λ‹¨ν•œ μ„€λͺ…이 ν‘œμ‹œλ©λ‹ˆλ‹€:

COMMANDS:
    project         ν”„λ‘œμ νŠΈλ₯Ό κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
    service         μ„œλΉ„μŠ€λ₯Ό κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
    module          λͺ¨λ“ˆμ„ κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
    entity          μ—”ν‹°ν‹°λ₯Ό κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
    enumeration     μ—΄κ±°ν˜•μ„ κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
    value-object    κ°’ 객체λ₯Ό κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
    query           쿼리λ₯Ό κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
    command         λͺ…λ Ήμ–΄λ₯Ό κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
    api             APIλ₯Ό κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
    page            νŽ˜μ΄μ§€λ₯Ό κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
    database        λ°μ΄ν„°λ² μ΄μŠ€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
    feature         ν”„λ‘œμ νŠΈ κΈ°λŠ₯을 κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
    user            μ‚¬μš©μžλ₯Ό κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
    auth            μ‚¬μš©μž 인증을 κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
    preferences     μ‚¬μš©μž ν™˜κ²½μ„€μ •μ„ κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.

νŠΉμ • λͺ…λ Ήμ–΄μ˜ ν•˜μœ„ λͺ…λ Ήμ–΄ 및 μ˜΅μ…˜μ„ ν™•μΈν•˜λ €λ©΄ λ‹€μŒμ„ μ‚¬μš©ν•˜μ„Έμš”:

lino command

λ˜λŠ”:

lino command --help

예λ₯Ό λ“€μ–΄ project λͺ…λ Ήμ–΄λ₯Ό ν™•μΈν•˜λ©΄:

lino project --help

λ‹€μŒκ³Ό 같이 ν‘œμ‹œλ©λ‹ˆλ‹€:

DESCRIPTION:
    ν”„λ‘œμ νŠΈλ₯Ό κ΄€λ¦¬ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.

EXAMPLES:
    lino project new --name MyProject
    lino project list

COMMANDS:
    new     μƒˆ ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
    list    μƒμ„±λœ ν”„λ‘œμ νŠΈ λͺ©λ‘μ„ ν‘œμ‹œν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.

λ‹€μŒ μ„Ήμ…˜μ—μ„œλŠ” Linoλ₯Ό μ‚¬μš©ν•˜μ—¬ μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈλ₯Ό λΉ λ₯΄κ²Œ μƒμ„±ν•˜λŠ” 방법을 μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

λΉ λ₯Έ μ‹œμž‘

λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ ν˜„λŒ€μ μ΄κ³  ν™•μž₯ κ°€λŠ₯ν•œ .NET μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹ μ†ν•˜κ²Œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€:

lino project new --name MyApp

이 λͺ…λ Ήμ–΄λŠ” .NET μ†”λ£¨μ…˜μ„ μƒμ„±ν•˜λ©°, 계측 κ°„ μ±…μž„ 뢄리가 λͺ…ν™•ν•˜κ²Œ 이루어져 μžˆμ–΄ κ°•λ ₯ν•˜κ³  ν™•μž₯ κ°€λŠ₯ν•œ κΈ°μ—… μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 이상적인 기반이 λ©λ‹ˆλ‹€.

MyApp/
β”œβ”€β”€ MyApp.sln
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ Aspire/
β”‚   β”‚   β”œβ”€β”€ AppHost/
β”‚   β”‚   β”‚   └── MyApp.AppHost.csproj
β”‚   β”‚   └── ServiceDefaults/
β”‚   β”‚       └── MyApp.ServiceDefaults.csproj
β”‚   └── Services/
β”‚       └── Shared/
β”‚           β”œβ”€β”€ API/
β”‚           β”‚   └── MyApp.Shared.API.csproj
β”‚           β”œβ”€β”€ Application/
β”‚           β”‚   └── MyApp.Shared.Application.csproj
β”‚           β”œβ”€β”€ Domain/
β”‚           β”‚   └── MyApp.Shared.Domain.csproj
β”‚           β”œβ”€β”€ Infrastructure/
β”‚           β”‚   └── MyApp.Shared.Infrastructure.csproj
β”‚           └── Infrastructure.Persistence/
β”‚               └── MyApp.Shared.Infrastructure.Persistence.csproj
└── tests/
    

μ£Όμš” 이점:

  • βœ… ν˜„λŒ€ μ•„ν‚€ν…μ²˜μ˜ λͺ¨λ²” 사둀에 맞좘 계측 ꡬ쑰.
  • πŸ”§ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€, λͺ¨λ“ˆν™”λœ λͺ¨λ†€λ¦¬μ‹ λ˜λŠ” 전톡적인 λ°©μ‹μœΌλ‘œ ν™•μž₯ κ°€λŠ₯.
  • πŸš€ μΊμ‹œ, λ©”μ‹œμ§•, μž‘μ—… μ˜ˆμ•½κ³Ό 같은 μ¦‰μ‹œ μ‚¬μš© κ°€λŠ₯ν•œ κΈ°λŠ₯λ“€.
  • 🧱 도메인 주도 섀계 (DDD), 이벀트 기반 μ•„ν‚€ν…μ²˜ (EDA) 및 SOLID 원칙을 μ μš©ν•  수 μžˆλŠ” κ²¬κ³ ν•œ 기반.
  • ✨ μ²­κ²°ν•˜κ³  의견이 μ œμ‹œλœ μ½”λ“œλ‘œ, 지속 κ°€λŠ₯ν•œ κ°œλ°œμ„ κ°€μ†ν™”ν•˜λŠ” 데 이상적.

Linoλ₯Ό μ‚¬μš©ν•˜λ©΄ 높은 생산성, νƒμ›”ν•œ μ•„ν‚€ν…μ²˜ 및 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ„±μž₯에 맞좰 ν™•μž₯ κ°€λŠ₯ν•œ μœ μ—°μ„±μ„ κ²°ν•©ν•˜μ—¬ κ³ ν’ˆμ§ˆ .NET ν”„λ‘œμ νŠΈλ₯Ό λΉ λ₯΄κ²Œ 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

처리되지 않은 오류가 발생했습니다. 새로 고침 πŸ—™