← 홈

💧

⌘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

기초

데이터 타입

정수
42
0b1010  # binary
0o17    # octal
0x1F    # hex
부동소수
3.14
1.0e-10
아톰
:hello
:ok
:error
불리언
true  # same as :true
false # same as :false
문자열
"Hello, World!"
"Hello, #{name}!"  # interpolation
리스트
[1, 2, 3]
[1 | [2, 3]]  # head | tail
튜플
{:ok, "Success"}
{:error, reason}
%{name: "Alice", age: 30}
%{"key" => "value"}
키워드 리스트
[name: "Alice", age: 30]

변수와 연산자

변수 바인딩
name = "Elixir"
패턴 매칭
{a, b} = {1, 2}  # a=1, b=2
[head | tail] = [1, 2, 3]
핀 연산자
x = 1
^x = 1  # match against value
비교
==, !=, ===, !==
>, <, >=, <=
논리
and, or, not  # strict boolean
&&, ||, !    # truthy/falsy
문자열 연결
"Hello" <> " World"
리스트 연결
[1, 2] ++ [3, 4]
리스트 빼기
[1, 2, 3] -- [1]  # [2, 3]

제어 흐름

조건문

If/else
if condition do
  "true"
else
  "false"
end
Unless
unless condition do
  "false branch"
end
Cond
cond do
  x > 0 -> "positive"
  x < 0 -> "negative"
  true -> "zero"
end
Case
case value do
  {:ok, result} -> result
  {:error, reason} -> reason
  _ -> "default"
end
With
with {:ok, a} <- fetch_a(),
     {:ok, b} <- fetch_b(a) do
  {:ok, a + b}
else
  {:error, reason} -> {:error, reason}
end

반복과 재귀

For 컴프리헨션
for x <- [1, 2, 3], do: x * 2
필터 포함
for x <- 1..10, rem(x, 2) == 0, do: x
다중 생성자
for x <- [1, 2], y <- [3, 4], do: {x, y}
Into
for {k, v} <- map, into: %{}, do: {k, v * 2}
재귀
def sum([]), do: 0
def sum([h | t]), do: h + sum(t)
꼬리 재귀
def sum(list), do: sum(list, 0)
defp sum([], acc), do: acc
defp sum([h | t], acc), do: sum(t, acc + h)

함수

함수 정의

이름있는 함수
def greet(name) do
  "Hello, #{name}!"
end
한 줄 함수
def add(a, b), do: a + b
비공개 함수
defp helper(x), do: x * 2
기본 인자
def greet(name \\ "World"), do: "Hello, #{name}!"
패턴 매칭
def handle({:ok, result}), do: result
def handle({:error, reason}), do: raise reason
가드 절
def abs(x) when x >= 0, do: x
def abs(x), do: -x

익명 함수

기본
add = fn a, b -> a + b end
add.(1, 2)  # note the dot
단축 문법
add = &(&1 + &2)
add.(1, 2)
캡처 연산자
&String.upcase/1
&Enum.map/2
인자로 전달
Enum.map([1, 2, 3], fn x -> x * 2 end)
Enum.map([1, 2, 3], &(&1 * 2))

모듈

모듈 정의

기본 모듈
defmodule MyModule do
  def hello do
    "Hello!"
  end
end
모듈 속성
defmodule MyModule do
  @my_constant 42
  @moduledoc "Documentation"
end
Alias
alias MyApp.Accounts.User
alias MyApp.Accounts.User, as: U
Import
import Enum, only: [map: 2, filter: 2]
Use
use GenServer
Require
require Logger
Logger.info("message")

구조체

구조체 정의
defmodule User do
  defstruct name: "", age: 0
end
구조체 생성
user = %User{name: "Alice", age: 30}
구조체 업데이트
updated = %{user | age: 31}
필드 접근
user.name
패턴 매칭
%User{name: name} = user

Enum과 Stream

Enum 함수

Map
Enum.map([1, 2, 3], &(&1 * 2))
Filter
Enum.filter([1, 2, 3, 4], &(rem(&1, 2) == 0))
Reduce
Enum.reduce([1, 2, 3], 0, &(&1 + &2))
Find
Enum.find([1, 2, 3], &(&1 > 1))
Any/All
Enum.any?([1, 2, 3], &(&1 > 2))
Enum.all?([1, 2, 3], &(&1 > 0))
Count
Enum.count([1, 2, 3])
Enum.count([1, 2, 3], &(&1 > 1))
Sort
Enum.sort([3, 1, 2])
Enum.sort([3, 1, 2], :desc)
Group by
Enum.group_by([1, 2, 3, 4], &rem(&1, 2))
Zip
Enum.zip([1, 2], [:a, :b])

파이프 연산자

기본 파이프
[1, 2, 3]
|> Enum.map(&(&1 * 2))
|> Enum.filter(&(&1 > 2))
|> Enum.sum()
Stream (지연)
1..1_000_000
|> Stream.map(&(&1 * 2))
|> Stream.filter(&(&1 > 100))
|> Enum.take(10)

프로세스

기본 프로세스

Spawn
pid = spawn(fn -> IO.puts("Hello") end)
메시지 전송
send(pid, {:hello, "world"})
수신
receive do
  {:hello, msg} -> IO.puts(msg)
  _ -> IO.puts("Unknown")
after
  1000 -> IO.puts("Timeout")
end
자신의 PID
self()
링크
spawn_link(fn -> raise "Error" end)

GenServer

기본 GenServer
defmodule Counter do
  use GenServer

  def start_link(initial) do
    GenServer.start_link(__MODULE__, initial)
  end

  def init(initial), do: {:ok, initial}

  def handle_call(:get, _from, state) do
    {:reply, state, state}
  end

  def handle_cast(:inc, state) do
    {:noreply, state + 1}
  end
end
Call (동기)
GenServer.call(pid, :get)
Cast (비동기)
GenServer.cast(pid, :inc)

테스팅

ExUnit

테스트 모듈
defmodule MyTest do
  use ExUnit.Case

  test "the truth" do
    assert 1 + 1 == 2
  end
end
어설션
assert value
refute value
assert_raise RuntimeError, fn -> ... end
셋업
setup do
  {:ok, user: %User{}}
end

test "with context", %{user: user} do
  # use user
end
Describe
describe "function_name/1" do
  test "case 1" do
    # ...
  end
end
테스트 실행
mix test
mix test test/my_test.exs:10