Blog

2025.04.23

Ada둜 C 라이브러리 λ§Œλ“€κΈ°

κ°•λ ₯ν•œ μ•ˆμ „μ„±κ³Ό 신뒰성을 μžλž‘ν•˜λŠ” Ada μ–Έμ–΄λ‘œ C 라이브러리λ₯Ό μž‘μ„±ν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. 특히 C ν”„λ‘œκ·Έλž¨μ— 메인(main) ν•¨μˆ˜κ°€ μžˆμ„ λ•Œ λ°œμƒν•˜λŠ” Ada λŸ°νƒ€μž„ μ΄ˆκΈ°ν™” 문제λ₯Ό ν•΄κ²°ν•˜λŠ” λ°©λ²•κΉŒμ§€ ν¬ν•¨ν•˜μ—¬ 전체 과정을 λ‹¨κ³„λ³„λ‘œ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.


2025.04.22

Ada μ–Έμ–΄μ˜ 섀계 λͺ©ν‘œ

Ada(에이닀)λŠ” ν”„λ‘œκ·Έλž¨ μ‹ λ’°μ„± 및 μœ μ§€λ³΄μˆ˜, 인간 ν™œλ™μœΌλ‘œμ„œμ˜ ν”„λ‘œκ·Έλž˜λ°, 그리고 νš¨μœ¨μ„±μ„ 염두에 두고 μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.


2025.04.20

Ada: μ‹€ν–‰ 파일 λ§Œλ“€κΈ°

μš°λ¦¬κ°€ μž‘μ„±ν•œ Ada μ½”λ“œλ₯Ό μ»΄ν“¨ν„°μ—μ„œ μ‹€ν–‰ν•  수 μžˆλŠ” 파일둜 λ§Œλ“€λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν• κΉŒμš”? μ§€κΈˆλΆ€ν„° κ·Έ 방법을 ν•¨κ»˜ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.


2025.04.14

C ν”„λ‘œκ·Έλž¨μ˜ μ‹œμž‘μ : main ν•¨μˆ˜ μ™„μ „ 정볡

ν”„λ‘œκ·Έλž˜λ°μ˜ μ„Έκ³„μ—μ„œ β€œμ‹œμž‘β€μ΄λΌλŠ” λ‹¨μ–΄λŠ” 맀우 μ€‘μš”ν•©λ‹ˆλ‹€. 특히 C μ–Έμ–΄λ‘œ μž‘μ„±λ˜μ–΄ 운영체제 μœ„μ—μ„œ μ‹€ν–‰λ˜λŠ” ν”„λ‘œκ·Έλž¨μ€ main() ν•¨μˆ˜λΌλŠ” νŠΉμ •ν•œ μ§„μž…μ μ—μ„œ 싀행을 μ‹œμž‘ν•˜λŠ”λ°μš”. μ˜€λŠ˜μ€ 독립 μ‹€ν–‰ν˜• C ν”„λ‘œκ·Έλž¨μ—μ„œ main() ν•¨μˆ˜κ°€ μ™œ ν•„μš”ν•˜λ©° μ–΄λ–€ 핡심적인 역할을 ν•˜λŠ”μ§€ 깊이 μ‚΄νŽ΄λ³΄λ €κ³  ν•©λ‹ˆλ‹€.


2025.04.14

λ‚˜λ§Œμ˜ μ›Œλ“œν”„λ ˆμŠ€ ν…Œλ§ˆ μ œμž‘

μ„Έμƒμ—λŠ” μˆ˜λ§Žμ€ μ›Œλ“œν”„λ ˆμŠ€ ν…Œλ§ˆκ°€ μžˆμ§€λ§Œ, λ•Œλ‘œλŠ” λ‚΄ μ›Ήμ‚¬μ΄νŠΈλ§Œμ˜ λ…νŠΉν•œ κ°œμ„±κ³Ό κΈ°λŠ₯을 λ‹΄μ•„λ‚΄κΈ° μœ„ν•΄ 직접 ν…Œλ§ˆλ₯Ό λ§Œλ“€κ³  μ‹Άλ‹€λŠ” 생각을 ν•˜κ²Œ λ©λ‹ˆλ‹€. β€˜λ‚˜λ§Œμ˜ 곡간’을 λ‚΄ μ†μœΌλ‘œ μ„€κ³„ν•˜κ³  κ΅¬μΆ•ν•˜λŠ” 일은 λΆ„λͺ… λ§€λ ₯적이죠. 이 κΈ€μ—μ„œλŠ” μ›Œλ“œν”„λ ˆμŠ€ ν…Œλ§ˆ μ œμž‘μ˜ κ°€μž₯ 첫 단계인 κΈ°λ³Έ λΌˆλŒ€ ꡬ성뢀터 μ›Ήμ‚¬μ΄νŠΈμ˜ ν•„μˆ˜ μš”μ†ŒμΈ λ„€λΉ„κ²Œμ΄μ…˜ 메뉴 κ΅¬ν˜„κΉŒμ§€, κ·Έ 과정을 μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.


2025.04.13

영혼이 ν˜Όλ―Έν•΄μ§ˆ μ •λ„λ‘œ λ‚  ν₯λΆ„μ‹œν‚¨ μ–Έμ–΄λ“€

λˆ„κ΅¬λ‚˜ μ‚΄λ©΄μ„œ β€˜μ™„μ „ κ°œλ―Έμ³€λ‹€β€™ 싢을 μ •λ„λ‘œ μ‹¬κ°νžˆ λΉ μ Έλ“œλŠ” 무언가가 μžˆμ„ κ±°μ—μš”. ν”„λ‘œκ·Έλž˜λ°μ˜ μž¬λ―Έμ—λ„ μ‚¬λžŒμ΄ 맀우 깊게 빠질 수 μžˆμ–΄μš”. 성취감이 κ°•λ ¬ν•˜κ±°λ“ μš”. 그런데 λ‹¨μˆœνžˆ μ½”λ“œλ₯Ό μ§œλŠ” 재미λ₯Ό λ„˜μ–΄, κ·Έ μ–Έμ–΄κ°€ λ„ˆλ¬΄ ν₯λ―Έλ‘œμ™€ μΌμƒμƒν™œμ΄ 망가지고 영혼이 ν˜Όλ―Έν•΄μ§ˆ μ •λ„λ‘œ λͺΉμ‹œ ν₯λΆ„ν•˜κ³  λͺ°μž…ν–ˆλ˜ 세월듀이 μžˆμ—ˆμ£ . μ˜€λŠ˜μ€ μ €λ₯Ό 그토둝 μ‚¬λ‘œμž‘μ•˜λ˜ μ–Έμ–΄λ“€, μžλ°”, 루비, C, 그리고 ν˜„μž¬μ§„ν–‰ν˜•μΈ Ada/SPARK에 λŒ€ν•œ 이야기λ₯Ό ν’€μ–΄λ³ΌκΉŒ ν•©λ‹ˆλ‹€.


2025.04.12

FreeBSDμ—μ„œ pf 둜그 ν™•μΈν•˜κΈ°

FreeBSDμ—μ„œ λ„€νŠΈμ›Œν¬ λ³΄μ•ˆκ³Ό νŠΈλž˜ν”½ λͺ¨λ‹ˆν„°λ§μ€ 맀우 μ€‘μš”ν•©λ‹ˆλ‹€. pf (packet filter)λŠ” κ°•λ ₯ν•œ λ³΄μ•ˆ 필터링을 μ œκ³΅ν•  뿐만 μ•„λ‹ˆλΌ, λ‘œκΉ… κΈ°λŠ₯을 톡해 μ–΄λ–€ νŠΈλž˜ν”½μ΄ ν—ˆμš©λ˜κ³  μ°¨λ‹¨λ˜μ—ˆλŠ”μ§€λ₯Ό μžμ„Έν•˜κ²Œ κΈ°λ‘ν•©λ‹ˆλ‹€. 이번 κΈ€μ—μ„œλŠ” pf 둜그λ₯Ό ν™•μΈν•˜λŠ” 방법을 λ‹¨κ³„λ³„λ‘œ μ†Œκ°œν•©λ‹ˆλ‹€.


2025.04.12

Ada ν”„λ‘œκ·Έλž¨μ˜ κΈ°λ³Έ ꡬ쑰와 핡심 μš”μ†Œ

Ada ν”„λ‘œκ·Έλž¨μ΄ 일반적으둜 μ–΄λ–€ ꡬ쑰λ₯Ό κ°€μ§€λ©°, μ–΄λ–€ 핡심 μš”μ†Œλ“€λ‘œ κ΅¬μ„±λ˜λŠ”μ§€ μ’€ 더 μžμ„Ένžˆ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 이 κΈ°λ³Έ ꡬ쑰λ₯Ό μ΄ν•΄ν•˜λŠ” 것은 더 λ³΅μž‘ν•˜κ³  체계적인 Ada ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜κΈ° μœ„ν•œ ν•„μˆ˜μ μΈ λ‹¨κ³„μž…λ‹ˆλ‹€.


2025.04.12

C둜 ν•˜λŠ” OOP

C μ–Έμ–΄λŠ” 절차 μ§€ν–₯의 λŒ€ν‘œμ£Όμžμ§€λ§Œ, 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP)의 κ°•λ ₯ν•œ κ°œλ…λ“€μ„ Cμ—μ„œλ„ κ΅¬ν˜„ν•΄λ³Ό 수 μžˆμ„κΉŒμš”? λ†€λžκ²Œλ„, 창의적인 μ ‘κ·Όκ³Ό μ•½κ°„μ˜ 기법을 톡해 C μ–Έμ–΄μ—μ„œλ„ OOP의 핡심 κ°œλ…λ“€μ„ κ΅¬ν˜„ν•˜λŠ” 것이 κ°€λŠ₯ν•©λ‹ˆλ‹€. 이 κΈ€μ—μ„œλŠ” C μ–Έμ–΄λ‘œ OOP μŠ€νƒ€μΌμ˜ 섀계λ₯Ό μ–΄λ–»κ²Œ μ‹œλ„ν•  수 μžˆλŠ”μ§€, 그리고 κ·Έ κ³Όμ •μ—μ„œ μ€‘μš”ν•œ 객체 μ§€ν–₯의 핡심 원칙듀을 μ–΄λ–»κ²Œ κ΅¬ν˜„ν•  수 μžˆλŠ”μ§€ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€.


2025.04.11

러슀트 μ†Œμœ κΆŒ, 정말 μƒˆλ‘œμš΄ κ°œλ…μΌκΉŒ?

졜근 러슀트(Rust) μ–Έμ–΄κ°€ λ©”λͺ¨λ¦¬ μ•ˆμ „μ„±μ΄λΌλŠ” κ°•λ ₯ν•œ 무기둜 λ§Žμ€ μ£Όλͺ©μ„ λ°›κ³  μžˆμŠ΅λ‹ˆλ‹€. 특히 러슀트의 핡심 κΈ°λŠ₯인 β€˜μ†Œμœ κΆŒ(ownership)β€˜ μ‹œμŠ€ν…œμ€, 컴파일 μ‹œμ μ— 이쀑 ν•΄μ œ(double free), λŒ•κΈ€λ§ 포인터(dangling pointer)와 같은 λ©”λͺ¨λ¦¬ 였λ₯˜λ₯Ό μ›μ²œμ μœΌλ‘œ λ°©μ§€ν•˜κ³  λŒ€λΆ€λΆ„μ˜ λ©”λͺ¨λ¦¬ λˆ„μˆ˜(memory leak) λ°œμƒ κ°€λŠ₯성을 크게 μ€„μ—¬μ£ΌλŠ” λŠ₯λ ₯ 덕뢄에 ν˜μ‹ μ μœΌλ‘œ 평가받곀 ν•©λ‹ˆλ‹€.