PHP 코드를 유지보수하던 중 경고 메시지를 본 적이 있나. 'Call to undefined function mysql_fetch_array()'라는 메시지가 나타나면서 코드가 작동하지 않는 상황을 말이다. 사실 이건 단순한 버그가 아니라 PHP 5.5.0부터 mysql 확장이 공식 폐기되고, PHP 7.0.0부터는 완전히 제거된 결과다. 다만 많은 개발···
휴대폰을 거의 다 쓸 때쯤 통신사에서 문자가 날아온다. '새 폰으로 갈아타세요. 할인받으세요'라는 내용이다. 그대로 갱신하면 편하겠지만, 그 '할인'이 정말 싼 건지 제대로 확인하지 않은 채 계약하는 사람이 대부분이다. 특히 직장인들은 바쁜 와중에 통신사 추천만 따라 할인폰을 받다가 몇십만 원을 낭비하기도 한다. 이번엔 휴대폰 약정할인의 숨은 구조와 계약 ···
웹 개발을 하다 보면 요소의 위치를 조정해야 할 일이 수없이 많다. 그런데 CSS position 속성을 정확히 이해하지 못한 채 top, left, right, bottom 값만 무작정 조정하다가 레이아웃이 엉망이 되는 경험을 누구나 한 번쯤 해봤을 것이다. 실무에서는 position의 종류에 따라 요소가 배치되는 기준점(containing block)이···
헬스장이나 필라테스, 요가 같은 운동시설 회원비를 매달 자동이체로 내면서도 세금 환급받을 수 있다는 걸 아는 사람은 많지 않다. 건강검진 비용이나 의약품 구매처럼 운동도 일종의 건강유지 활동인데, 정부는 이를 소득공제로 인정해주고 있다. 다만 조건이 있어서 모든 사람이 다 받을 수 있는 건 아니고, 신청 방식도 복잡해서 대부분 그냥 지나친다. 이번에는 스포···
배열에서 요소를 삭제한 후 반복문을 돌리면 뭔가 이상하다고 느껴봤을까? 특히 숫자 인덱스를 예상하고 코드를 짰는데 갑자기 중간에 구멍이 뚫려있거나, JSON으로 변환했을 때 배열이 객체처럼 표현되는 문제. 대부분의 개발자들은 이게 PHP의 버그라고 생각하거나, 단순히 array_splice()를 쓰면 된다고 알고 있다. 하지만 array_values()는 ···
화상회의 기능을 직접 구현해본 개발자라면 얼마나 복잡한지 알 것이다. WebRTC 시그널링, 미디어 스트림 관리, 참여자 제어까지 손으로 하나하나 만들려면 몇 달이 걸린다. 다만 대부분의 백엔드 개발자는 Twilio Video 같은 전문 서비스가 있다는 걸 모르고 처음부터 바닥부터 만들려다가 프로젝트를 포기한다. 이번에는 Twilio Video API를 P···
월급통장에서 자동으로 빠져나가는 돈들 중에서 정말 많은 직장인이 놓치는 게 있다. 바로 '업무 관련 통신비'와 '운송료'다. 출퇴근 길에 급하게 공중전화를 쓰거나, 업무상 택배를 보내거나, 지인을 위해 선물을 배송했을 때 그 비용들이 쌓여 있다는 걸 알 수 있다. 다만 이런 소액의 영수증들은 대수롭지 않게 여겨서 환급받을 생각을 하지 못한다. 그런데 연말정···
다차원 배열에서 특정 열만 추출해야 할 때 대부분의 개발자는 foreach 루프를 돌거나 array_map을 쓴다. 다만 코드가 길어지고 가독성이 떨어지는 경우가 많다. 이번에는 array_column() 함수로 이 문제를 어떻게 깔끔하게 해결하는지, 실제 사용 사례와 함께 완벽하게 정리해서 소개하겠다. array_column() 함수가 뭔가 array_c···
LINE 메신저를 통해 고객과 직접 소통하고 싶다면 LINE Messaging API는 피할 수 없는 선택지다. 다만 대부분의 개발자들은 공식 문서를 읽어도 Webhook 구조, 시그니처 검증, 메시지 전송까지 온전히 구현하지 못하고 중간에 포기한다. 이번에는 LINE 채팅봇을 PHP에서 처음부터 끝까지 구현하는 방법을 정리해서 소개하겠다. 계정 생성부터 ···
연차를 쓰고 돌아온 월급통장을 보면 생각보다 적어 놀란 적이 있을까? 휴가를 낸 날짜만큼 월급이 깎이거나, 휴직 기간 동안 생활이 힘들어진 직장인들이 많다. 다만 이런 상황에서 회사가 법적으로 지급해야 하는 수당이 있다는 걸 아는 사람은 적다. 이번에는 휴가·휴직 중 놓치기 쉬운 임금 손실 및 지원제도, 그리고 회사가 제대로 안 주는 것을 챙기는 방법을 정···
PHP 개발하다 보면 갑자기 화면이 하얀색으로 변하면서 로그에 'Call to undefined function' 에러가 떨어진다. 함수를 분명히 정의했는데 왜 없다고 하는 걸까. 이건 단순한 오타가 아니라 함수의 스코프, 네임스페이스, 파일 로드 순서 같은 다양한 원인이 숨어있다. 대부분의 개발자는 에러 메시지만 보고 당황하지만, 원인을 정확히 파악하고 ···
치과를 방문할 때마다 예상치 못한 고액 청구에 놀란 경험이 있을 것이다. 특히 임플란트나 교정처럼 큰 시술을 앞두면 '건강보험이 적용되나' '정말 이 가격이 맞나' 하는 의구심이 든다. 다만 많은 직장인이 건강보험 적용 범위를 제대로 몰라서 비급여 항목까지 고스란히 내고 있다. 이번에는 치과 치료 중 어디까지 건강보험이 커버되는지, 비급여 비용은 어떻게 줄···
배열에서 값이나 키를 찾을 때 어떤 함수를 쓸지 몰라서 헷갈린 경험이 있을까? 대부분의 PHP 개발자들은 습관적으로 in_array()를 사용하거나, 상황을 제대로 파악하지 못한 채 검색 결과에서 본 함수를 그냥 가져다 쓴다. 다만 각 함수의 차이를 정확히 모르면 성능 저하는 물론이고, 버그까지 야기할 수 있다. 이번에는 array_search(), in_···
robots.txt 파일을 제대로 설정했는데도 구글이 차단된 페이지를 자꾸 크롤링한다거나, 검색 결과에 떠야 할 페이지가 안 나타나는 경험을 해본 적 있을까. 대부분의 웹 개발자들은 robots.txt를 단순한 텍스트 파일 정도로 생각해서 규칙을 써놓고 끝낸다. 다만 검색 엔진이 실제로 그 지시를 따르지 않는 경우가 상당히 많다는 걸 모르는 경우가 많다. ···
개발하다 보면 더 이상 필요 없는 변수나 배열 요소를 삭제해야 할 상황이 자주 생긴다. 대부분의 개발자는 단순히 `unset()`을 호출하면 된다고 생각하지만, 실제로는 메모리 해제 시점, 배열 구조 변화, 그리고 반복문 내에서의 예상치 못한 동작까지 신경 써야 할 게 많다. 이번에는 `unset()`의 정확한 동작 원리부터 실전에서 자주 하는 실수까지 완···
아이를 키우는 직장인이라면 어린이집 보육료나 유치원 교육비, 학원비 같은 돌봄 관련 비용이 월급만큼 나가간다고 느낄 것이다. 다만 많은 사람들이 이 비용들이 연말정산에서 세금을 깎아주는 항목이라는 걸 제대로 인식하지 못한 채 지나친다. 심지어 맞벌이 가구에서는 누가 공제를 받아야 하는지, 얼마까지 받을 수 있는지 헷갈려서 절반만 챙기는 경우도 많다. 이번에···
여러 개의 비동기 작업을 동시에 처리해야 할 때, Promise 조합 메서드를 쓰지 않고 반복문으로 하나씩 기다리는 개발자들이 많다. 다만 대부분은 Promise.all()만 알고 있거나, 하나의 Promise가 실패하면 전체가 실패하는 문제를 겪고도 그 원인을 정확히 모른 채 코드를 작성한다. 이번에는 세 가지 메서드의 동작 방식, 언제 써야 하는지, 그···
배열의 모든 요소를 순회하며 값을 변경해야 할 때 대부분의 개발자는 foreach 루프를 쓴다. 하지만 요소를 제자리에서 수정하려면 참조(&)를 사용해야 하는데, 이 부분을 제대로 이해하지 못하면 의도치 않은 결과가 나온다. 이번에는 array_walk() 함수로 어떻게 간단하게 배열을 일괄 수정할 수 있는지, 그리고 언제 쓰면 좋은지 완벽하게 정리하겠다.···
서버에서 갑자기 PHP 스크립트가 죽어버렸고, 로그에 'Fatal error: Allowed memory size of X bytes exhausted'라는 메시지가 남아있다면 메모리 고갈 문제를 겪고 있는 것이다. 다만 대부분의 개발자들은 memory_limit을 무작정 늘리기만 하고, 정작 왜 메모리가 낭비되는지, 어디서부터 막아야 하는지 모른 채 응급···
영수증이나 신분증 같은 이미지 파일에서 텍스트를 손수 입력하는 건 정말 귀찮다. 많은 개발자들이 OCR(광학 문자 인식) 기능이 필요하다는 걸 알지만, 대부분 복잡한 라이브러리 설정이나 비용 때문에 망설인다. 다만 국내 개발자라면 네이버 클로바 OCR API를 몰랐을 가능성이 크다. 이번에는 네이버 클로바 OCR의 정확한 사용법, 한글 인식 강점, PHP에···