PHP·Python·JavaScript·Java·Go·Rust·C/C++·Kotlin·Swift 등 다양한 프로그래밍 언어의 입문과 심화, MySQL·SQL 데이터베이스, 리눅스 서버 운영, 실무 에러 해결과 코드 팁까지. 입문자도 따라 할 수 있는 예제 중심 개발 가이드입니다.
회원 목록과 주문 목록이 각각 다른 표에 흩어져 있다고 해보자. "이번 달에 주문한 사람의 이름을 뽑아줘"라는 부탁을 받는 순간, 우리는 두 표를 어떤 식으로든 이어 붙여야 한다. 이 '이어 붙이기'가 바로 JOIN이다. 개념은 단순한데, 막상 실무에서 결과 행이 이상하게 부풀거나 빠지면 그때부터 머리가 아파진다. 대부분은 JOIN의 종류를 정확히 구분하지...
밤 11시, 배포한 지 10분 만에 알림이 울린다. "결제 페이지에서 에러가 나요." 로그를 열어 보니 원인은 허무하다. 서버가 내려준 값이 문자열 `"0"`이었는데, 코드에서는 숫자 `0`으로 여기고 `price - discount`를 계산한 것이다. 자바스크립트는 이 실수를 조용히 넘어간다. 실행되기 전까지 아무도 몰랐고, 하필 그걸 사용자가 먼저 발견...
리스트에서 값 하나를 찾는 코드를 짰습니다. 항목이 100개일 때는 눈 깜짝할 사이에 끝났죠. 그런데 서비스가 커져서 100만 개가 되자, 같은 코드가 몇 초씩 멈칫거리기 시작합니다. 코드는 한 글자도 바꾸지 않았는데 왜 갑자기 느려졌을까요? 이 질문에 "데이터가 많아져서요"라고 답하는 건 절반만 맞습니다. 진짜 답은 그 코드가 데이터 양에 대해 어떤 비율...
새벽 2시, 트래픽이 몰려 API 서버가 버벅였다. 한 개발자가 로그를 뒤지다 문득 이런 생각을 한다. "언어를 바꾸면 이 문제가 좀 나아질까?" 그 답을 찾다 많은 사람이 만나는 이름이 바로 Go다. 구글이 2009년에 공개한 이 언어는, 요즘 서버·클라우드 세계에서 조용히 그러나 확실하게 자리를 넓혀 왔다. Go는 화려하지 않다. 오히려 심심할 정도로 ...
새 프로젝트에 합류한 첫날, 팀장이 건넨 저장소를 내려받아 실행 버튼을 누릅니다. 그런데 에러가 쏟아집니다. 파이썬 버전이 다르고, 데이터베이스가 안 깔려 있고, 어떤 라이브러리는 설치조차 되지 않습니다. 옆자리 동료의 노트북에서는 멀쩡히 돌아가는 그 프로그램이, 내 컴퓨터에서는 요지부동입니다. 개발자라면 누구나 겪는 이 장면의 이름이 바로 ==\"제 컴퓨...
금요일 저녁, 고객사에서 회원 5만 명의 연락처 파일이 도착했습니다. 열어 보니 `010-1234-5678`, `010 1234 5678`, `01012345678`, `+82-10-1234-5678`이 뒤죽박죽 섞여 있습니다. "이걸 언제 다 손으로 고치지..." 이럴 때 30분이면 끝나는 도구가 정규표현식입니다. 정규표현식(Regular Expressi...
며칠 밤을 새워 만든 기능을 커밋한 순간, 뭔가 잘못됐다는 걸 깨달은 적이 있을 것이다. 방금 지운 파일이 사실은 지우면 안 되는 것이었거나, 커밋 메시지를 엉뚱하게 적었거나, 아직 손도 안 댄 다른 사람의 코드까지 통째로 덮어써 버렸거나. 그때 머릿속에 떠오르는 단어는 하나다. 되돌리기. 그런데 막상 검색해 보면 `reset`, `revert`, `res...
"분명 방금 글을 올렸는데 작성 시간이 9시간 전으로 찍혀요." PHP로 웹을 만들다 보면 한 번쯤 마주치는 황당한 버그다. 기능은 멀쩡한데 시간만 어긋난다. 범인은 십중팔구 ==시간대(timezone)== 설정이다. 오늘은 PHP와 MySQL 사이에서 시간이 꼬이는 이유와, 깔끔하게 맞추는 방법을 실무 관점에서 정리한다. 왜 9시간이 어긋날까 PHP의 기...
서버 모니터링 알림이 울렸다. "디스크 사용량 98%." 부랴부랴 접속해 `df -h`를 쳐 보니 정말 루트 파티션이 꽉 차 있다. 그런데 막상 `du`로 폴더 용량을 더해 보면 합이 영 맞지 않는다. 분명 어딘가 수십 기가가 사라졌는데 보이질 않는다. 리눅스를 운영하다 보면 한 번쯤 겪는 ==유령 디스크== 미스터리다. 오늘은 이 범인을 차분히 찾는 순서...
금요일 저녁, 정산 배치가 돌아가는 시간이었다. 평소엔 1분이면 끝나던 작업이 멈춰 있었고, 화면에는 낯익은 한 줄이 떠 있었다. `Lock wait timeout exceeded; try restarting transaction`. 누군가는 이 메시지를 보면 일단 서버부터 재시작하고 보지만, 그건 대개 문제를 미루는 일일 뿐이다. 오늘은 이 에러가 왜 생...