← 홈

🔴

⌘K
🤖
Claude Code AI 도구
🤗
Hugging Face AI 도구
🦜
LangChain AI 도구
🧠
Keras AI 도구
🦙
Ollama AI 도구
🐍
Python 프로그래밍 언어
🟨
JavaScript 프로그래밍 언어
🔷
TypeScript 프로그래밍 언어
⚛️
React 프로그래밍 언어
🐹
Go 프로그래밍 언어
🦀
Rust 프로그래밍 언어
📊
MATLAB 프로그래밍 언어
🗄️
SQL 프로그래밍 언어
⚙️
C/C++ 프로그래밍 언어
Java 프로그래밍 언어
🟣
C# 프로그래밍 언어
🍎
Swift 프로그래밍 언어
🟠
Kotlin 프로그래밍 언어
Next.js 프로그래밍 언어
💚
Vue.js 프로그래밍 언어
🔥
Svelte 프로그래밍 언어
🎨
Tailwind CSS 프로그래밍 언어
💚
Node.js 프로그래밍 언어
🌐
HTML 프로그래밍 언어
🎨
CSS/SCSS 프로그래밍 언어
🐘
PHP 프로그래밍 언어
💎
Ruby 프로그래밍 언어
🔴
Scala 프로그래밍 언어
📊
R 프로그래밍 언어
🎯
Dart 프로그래밍 언어
💧
Elixir 프로그래밍 언어
🌙
Lua 프로그래밍 언어
🐪
Perl 프로그래밍 언어
🅰️
Angular 프로그래밍 언어
🚂
Express.js 프로그래밍 언어
🐱
NestJS 프로그래밍 언어
🛤️
Ruby on Rails 프로그래밍 언어
◼️
GraphQL 프로그래밍 언어
🟪
Haskell 프로그래밍 언어
💚
Nuxt.js 프로그래밍 언어
🔷
SolidJS 프로그래밍 언어
htmx 프로그래밍 언어
💻
VS Code 개발 도구
🧠
PyCharm 개발 도구
📓
Jupyter 개발 도구
🧠
IntelliJ IDEA 개발 도구
💚
Neovim 개발 도구
🔮
Emacs 개발 도구
🔀
Git DevOps & CLI
🐳
Docker DevOps & CLI
☸️
Kubernetes DevOps & CLI
☁️
AWS CLI DevOps & CLI
🔄
GitHub Actions DevOps & CLI
🐧
Linux 명령어 DevOps & CLI
💻
Bash 스크립팅 DevOps & CLI
🌐
Nginx DevOps & CLI
📝
Vim DevOps & CLI
🔨
Makefile DevOps & CLI
🧪
Pytest DevOps & CLI
🪟
Windows DevOps & CLI
📦
패키지 매니저 DevOps & CLI
🍎
macOS DevOps & CLI
🏗️
Terraform DevOps & CLI
🔧
Ansible DevOps & CLI
Helm DevOps & CLI
🔨
Jenkins DevOps & CLI
🔥
Prometheus DevOps & CLI
📊
Grafana DevOps & CLI
💻
Zsh DevOps & CLI
🐟
Fish Shell DevOps & CLI
💙
PowerShell DevOps & CLI
🔄
Argo CD DevOps & CLI
🔀
Traefik DevOps & CLI
☁️
Azure CLI DevOps & CLI
☁️
Google Cloud CLI DevOps & CLI
📟
tmux DevOps & CLI
🔧
jq DevOps & CLI
✂️
sed DevOps & CLI
📊
awk DevOps & CLI
🌊
Apache Airflow DevOps & CLI
🔢
NumPy 데이터베이스 & 데이터
🐼
Pandas 데이터베이스 & 데이터
🔥
PyTorch 데이터베이스 & 데이터
🧠
TensorFlow 데이터베이스 & 데이터
📈
Matplotlib 데이터베이스 & 데이터
🐘
PostgreSQL 데이터베이스 & 데이터
🐬
MySQL 데이터베이스 & 데이터
🍃
MongoDB 데이터베이스 & 데이터
🔴
Redis 데이터베이스 & 데이터
🔍
Elasticsearch 데이터베이스 & 데이터
🤖
Scikit-learn 데이터베이스 & 데이터
👁️
OpenCV 데이터베이스 & 데이터
Apache Spark 데이터베이스 & 데이터
🪶
SQLite 데이터베이스 & 데이터
Supabase 데이터베이스 & 데이터
🔵
Neo4j 데이터베이스 & 데이터
📨
Apache Kafka 데이터베이스 & 데이터
🐰
RabbitMQ 데이터베이스 & 데이터
🔤
Regex 유틸리티
📝
Markdown 유틸리티
📄
LaTeX 유틸리티
🔐
SSH & GPG 유틸리티
🌐
curl & HTTP 유틸리티
📜
reStructuredText 유틸리티
🚀
Postman 유틸리티
🎬
FFmpeg 유틸리티
🖼️
ImageMagick 유틸리티
🔍
ripgrep 유틸리티
🔍
fzf 유틸리티
📗
Microsoft Excel 오피스 애플리케이션
📘
Microsoft Word 오피스 애플리케이션
📙
Microsoft PowerPoint 오피스 애플리케이션
📝
한컴 한글 한컴오피스
📽️
한컴 한쇼 한컴오피스
📊
한컴 한셀 한컴오피스
📄
Google 문서 Google Workspace
📊
Google 스프레드시트 Google Workspace
📽️
Google 프레젠테이션 Google Workspace
🔌
Cadence Virtuoso EDA & 하드웨어
⚙️
Synopsys EDA EDA & 하드웨어
💎
Verilog & VHDL EDA & 하드웨어
LTSpice EDA & 하드웨어
🔧
KiCad EDA & 하드웨어
📝
Notion 생산성 도구
💎
Obsidian 생산성 도구
💬
Slack 생산성 도구
🎮
Discord 생산성 도구
🎨
Figma 디자인 도구
📘
Confluence Atlassian
📋
Jira Atlassian
🃏
Jest 테스팅
Vitest 테스팅
🎭
Playwright 테스팅
🌲
Cypress 테스팅
🌐
Selenium 테스팅
💙
Flutter 모바일 개발
📱
React Native 모바일 개발
🍎
SwiftUI 모바일 개발
📱
Expo 모바일 개발
🐍
Django 웹 프레임워크
FastAPI 웹 프레임워크
🌶️
Flask 웹 프레임워크
🍃
Spring Boot 웹 프레임워크
🍸
Gin 웹 프레임워크
Vite 빌드 도구
📦
Webpack 빌드 도구
esbuild 빌드 도구
🐘
Gradle 빌드 도구
🪶
Maven 빌드 도구
🔧
CMake 빌드 도구
🎮
Unity 게임 개발
🤖
Godot 게임 개발
🔌
Arduino 임베디드 & IoT
🔍
Nmap 보안
🐕
Datadog 모니터링
📖
Swagger/OpenAPI 문서화
검색 결과가 없습니다
EN KO

기초

변수와 타입

불변 (val)
val name: String = "Scala"
가변 (var)
var count: Int = 0
타입 추론
val x = 42 // Int inferred
기본 타입
Int, Long, Double, Float, Boolean, Char, String
튜플
val t = (1, "hello", true)
t._1 // 1
Option
val opt: Option[Int] = Some(42)
val none: Option[Int] = None
리스트
val list = List(1, 2, 3)
val map = Map("a" -> 1, "b" -> 2)

문자열 연산

보간
s"Hello, $name!"
s"1 + 1 = ${1 + 1}"
Raw 문자열
raw"Line1\nLine2" // no escape
여러 줄
"""|
  |Multi
  |Line
  |""".stripMargin
포맷
f"$name%s is $age%d years old"

제어 흐름

조건문

If 표현식
val result = if (x > 0) "positive" else "non-positive"
If/else if/else
if (x > 0) {
  "positive"
} else if (x < 0) {
  "negative"
} else {
  "zero"
}
패턴 매칭
x match {
  case 1 => "one"
  case 2 => "two"
  case _ => "other"
}
가드가 있는 매치
x match {
  case n if n > 0 => "positive"
  case _ => "non-positive"
}
타입 매칭
obj match {
  case s: String => s.length
  case i: Int => i
  case _ => 0
}

반복문

For 루프
for (i <- 1 to 5) println(i)
For with yield
val doubled = for (i <- 1 to 5) yield i * 2
필터가 있는 for
for (i <- 1 to 10 if i % 2 == 0) yield i
중첩 for
for {
  i <- 1 to 3
  j <- 1 to 3
} yield (i, j)
While
while (condition) {
  // code
}
Foreach
list.foreach(println)

함수

함수 정의

기본 함수
def add(a: Int, b: Int): Int = a + b
여러 줄
def greet(name: String): String = {
  val greeting = s"Hello, $name"
  greeting
}
기본 매개변수
def greet(name: String = "World"): String = s"Hello, $name"
이름있는 인자
greet(name = "Scala")
가변 인자
def sum(nums: Int*): Int = nums.sum
익명 함수
val add = (a: Int, b: Int) => a + b
부분 적용
def add(a: Int)(b: Int) = a + b
val addFive = add(5)_
고차 함수
def apply(f: Int => Int, x: Int) = f(x)

클래스와 객체

클래스

기본 클래스
class Person(val name: String, var age: Int)
본문 포함
class Person(val name: String) {
  def greet(): String = s"Hello, $name"
}
보조 생성자
class Person(val name: String) {
  def this() = this("Unknown")
}
상속
class Student(name: String, val grade: Int)
  extends Person(name)
추상 클래스
abstract class Animal {
  def speak(): String
}

객체와 케이스 클래스

객체 (싱글톤)
object Logger {
  def log(msg: String): Unit = println(msg)
}
동반 객체
class Person(val name: String)
object Person {
  def apply(name: String) = new Person(name)
}
케이스 클래스
case class Person(name: String, age: Int)
케이스 클래스 복사
val p2 = person.copy(age = 30)
Sealed trait
sealed trait Shape
case class Circle(r: Double) extends Shape
case class Rectangle(w: Double, h: Double) extends Shape

트레이트

트레이트 정의
trait Greeting {
  def greet(): String
}
구현 포함
trait Greeting {
  def greet(): String = "Hello"
}
믹스인
class Person extends Greeting with Comparable
셀프 타입
trait UserService { this: DatabaseService =>
  // can use database methods
}

컬렉션

컬렉션 연산

Map
List(1, 2, 3).map(_ * 2) // List(2, 4, 6)
Filter
List(1, 2, 3, 4).filter(_ % 2 == 0) // List(2, 4)
FlatMap
List(1, 2).flatMap(x => List(x, x * 2))
Fold
List(1, 2, 3).foldLeft(0)(_ + _) // 6
Reduce
List(1, 2, 3).reduce(_ + _) // 6
GroupBy
List(1, 2, 3, 4).groupBy(_ % 2)
Zip
List(1, 2).zip(List("a", "b")) // List((1,"a"), (2,"b"))
Partition
List(1, 2, 3, 4).partition(_ % 2 == 0)
Take/Drop
List(1, 2, 3, 4).take(2) // List(1, 2)
List(1, 2, 3, 4).drop(2) // List(3, 4)

Option 처리

GetOrElse
opt.getOrElse("default")
Option에 Map
opt.map(_.toUpperCase)
Option에 FlatMap
opt.flatMap(s => Some(s.length))
For comprehension
for {
  a <- optA
  b <- optB
} yield a + b
패턴 매칭
opt match {
  case Some(v) => v
  case None => "default"
}

Implicit과 타입 클래스

Implicit 기초

Implicit 매개변수
def greet(name: String)(implicit lang: String) =
  s"Hello in $lang: $name"
Implicit 값
implicit val defaultLang: String = "English"
Implicit 변환
implicit def intToString(i: Int): String = i.toString
확장 메서드
implicit class RichInt(val i: Int) extends AnyVal {
  def squared: Int = i * i
}
Using (Scala 3)
def greet(name: String)(using lang: String) = ...
Given (Scala 3)
given defaultLang: String = "English"