개발

41개의 글

PHP·Python·JavaScript·Java·Go·Rust·C/C++·Kotlin·Swift 등 다양한 프로그래밍 언어의 입문과 심화, MySQL·SQL 데이터베이스, 리눅스 서버 운영, 실무 에러 해결과 코드 팁까지. 입문자도 따라 할 수 있는 예제 중심 개발 가이드입니다.

개발

3GB 로그 앞에서 서버가 멈췄다 — 파이썬 제너레이터로 메모리 아끼기

월요일 아침, 로그 분석 스크립트를 돌리던 서버가 갑자기 멈췄다. 파일은 고작 3GB였는데 메모리는 8GB나 되는 서버에서 MemoryError가 터진 것이다. 원인은 단 한 줄, lines = f.readlines()였다. 이런 일은 파이썬을 쓰다 보면 한 번쯤 꼭 겪는다. 해법은 서버 증설이 아니라 제너레이터라는 작은 개념 하나다.

2026.10.19 · 읽기 6분 · 조회 296
3GB 로그 앞에서 서버가 멈췄다 — 파이썬 제너레이터로 메모리 아끼기
개발

한 번의 쿼리로 순위와 증감까지 — MySQL 윈도우 함수, 실무 패턴 정리

월말 정산 보고서를 만들던 개발자 민수 씨는 요청 하나를 받았습니다. "지점별 매출 순위, 그리고 전월 대비 증감까지 한 번에 뽑아 주세요." 예전 같으면 쿼리 결과를 파이썬이나 엑셀로 옮겨 순위를 매기고 뺄셈을 했을 겁니다. 하지만 MySQL 8.0부터는 윈도우 함수 덕분에 SQL 한 번으로 끝낼 수 있습니다. 오늘은 그 핵심만 차근차근 정리해 봅니다.

2026.10.16 · 읽기 4분 · 조회 769
한 번의 쿼리로 순위와 증감까지 — MySQL 윈도우 함수, 실무 패턴 정리
개발

금요일 저녁의 장애 전화는 빨간 줄이 막아 준다 — TypeScript, 처음 시작하기

금요일 오후 다섯 시, 배포를 마치고 퇴근 가방을 챙기던 신입 개발자 민수 씨의 휴대폰이 울렸습니다. 운영 화면에 "Cannot read properties of undefined (reading 'name')"이라는 오류가 가득하다는 연락이었습니다. 원인은 단순했습니다. 서버가 돌려준 값에 `user`가 없을 수도 있다는 사실을 코드가 전혀 모르고 있었던...

2026.10.13 · 읽기 5분 · 조회 554
금요일 저녁의 장애 전화는 빨간 줄이 막아 준다 — TypeScript, 처음 시작하기
개발

50초가 3초로 줄던 날 — Go 고루틴과 채널, 처음 이해하기

월요일 아침, 주문 서버를 맡고 있는 지민 씨는 난감한 요청을 받았습니다. "상품 100개의 재고를 외부 API로 조회하는 데 지금 50초가 걸리는데, 5초 안으로 줄여 주세요." 코드를 열어 보니 상품을 하나씩, 순서대로, 응답을 기다리며 호출하고 있었습니다. 이런 상황에서 Go가 빛을 발합니다. 오늘은 Go의 고루틴과 채널을 처음 접하는 분도 따라올 수...

2026.10.10 · 읽기 3분 · 조회 621
50초가 3초로 줄던 날 — Go 고루틴과 채널, 처음 이해하기
개발

같은 서버는 두 번 다시 만들어지지 않는다 — PHP를 도커에 담아야 하는 이유

운영 서버에 새 PHP 버전을 올리던 날, 로컬에서는 멀쩡하던 코드가 서버에서만 경고를 쏟아낸 적이 있다. 원인은 어이없을 만큼 단순했다. 로컬 `php.ini`의 `upload_max_filesize`는 64M인데, 서버 것은 2M으로 맞춰져 있었다. 개발자 세 명이 각자 다른 PHP 마이너 버전을 쓰고 있었다는 사실도 그날 처음 알았다. "내 컴퓨터에선...

2026.09.28 · 읽기 6분 · 조회 1,183
같은 서버는 두 번 다시 만들어지지 않는다 — PHP를 도커에 담아야 하는 이유
개발

컴파일러가 새벽 두 시의 장애를 막아 준다 — Rust 소유권, 처음 이해하기

새벽 두 시, 운영 중인 서버 프로그램이 이유 없이 죽었다. 로그에는 `Segmentation fault` 한 줄뿐. 원인을 찾는 데 이틀이 걸렸고, 범인은 이미 해제된 메모리를 다른 스레드가 한 번 더 읽은 것이었다. C/C++로 서버를 짜 본 사람이라면 한 번쯤 겪어 봤을 장면이다. Rust는 바로 이런 밤을 없애려고 만들어진 언어다. 그리고 그 핵심에...

2026.09.24 · 읽기 8분 · 조회 1,355
컴파일러가 새벽 두 시의 장애를 막아 준다 — Rust 소유권, 처음 이해하기
AD
개발

이메일 하나 거르려다 반나절을 썼다 — 정규표현식, 오늘 제대로 정리하기

어느 금요일 오후, 회원가입 폼에 이상한 값이 들어온다는 제보를 받았다. 이메일 칸에 `abc@`만 적어도 가입이 되고 있었다. "그거 정규식 하나면 되지 않아요?" 옆자리에서 던진 말이 맞긴 했는데, 문제는 그 '하나'를 만드는 데 반나절이 걸렸다는 점이다. 인터넷에서 복사한 패턴은 동작하는 듯하다가 한글 도메인에서 터졌고, 급하게 고친 패턴은 정상적인 ...

2026.09.04 · 읽기 3분 · 조회 1,102
이메일 하나 거르려다 반나절을 썼다 — 정규표현식, 오늘 제대로 정리하기
개발

두 시간짜리 작업이 조용히 사라졌다 — Git 되돌리기, 상황별로 정리하기

금요일 저녁 6시 40분. 배포 직전에 급하게 고친 파일 세 개를 커밋하려다가, 손이 미끄러져 `git checkout .` 을 눌러버린 신입 개발자 A씨의 이야기입니다. 두 시간 동안 만진 코드가 조용히 사라졌습니다. 에러 메시지도, 확인 창도 없었습니다. Git이 무서운 이유는 어렵기 때문이 아니라, ==틀린 명령이 아무 말 없이 성공하기 때문==입니다...

2026.09.01 · 읽기 10분 · 조회 1,083
두 시간짜리 작업이 조용히 사라졌다 — Git 되돌리기, 상황별로 정리하기
개발

물음표 하나가 회원 테이블을 지운다 — 웹 보안, 개발자가 가장 자주 놓치는 세 곳

금요일 밤 11시, 작은 쇼핑몰을 운영하는 개발자에게 전화가 왔다고 해보자. 관리자 페이지에 접속했더니 상품 목록이 텅 비어 있었다. 서버는 멀쩡했고, 디스크도 넉넉했고, 에러 로그에도 이상이 없었다. 다만 접속 로그에 이런 요청이 하루 종일 찍혀 있었다. ``` GET /product.php?id=12%20OR%201=1-- ``` 숫자 하나가 들어와야 ...

2026.08.30 · 읽기 10분 · 조회 1,921
물음표 하나가 회원 테이블을 지운다 — 웹 보안, 개발자가 가장 자주 놓치는 세 곳
개발

서버가 느려졌다는 전화를 받으면 — 리눅스 진단, 5분 안에 원인 좁히기

금요일 저녁 7시, 퇴근길 지하철에서 메시지가 온다. "사이트가 좀 느린데요?" 노트북을 열 자리도 없는데 마음은 이미 급해진다. 이럴 때 가장 위험한 습관이 하나 있다. ==원인을 짐작해서 아무거나 재시작하는 것==이다. 재시작하면 증상은 잠깐 사라지지만, 원인은 그대로 남아 새벽 3시에 다시 찾아온다. 서버 진단은 감이 아니라 순서다. 확인할 것이 딱 ...

2026.08.29 · 읽기 8분 · 조회 2,116
서버가 느려졌다는 전화를 받으면 — 리눅스 진단, 5분 안에 원인 좁히기
AD