Loading...
홈 › 블로그

IT 개발 블로그 — REDINFO

Zoom API JWT 인증 중단 대응 - Server-to-Server OAuth 2.0 토큰 발급 및 PHP cURL 연동 완벽 가이드

Zoom API를 연동해 화상 회의실을 자동 생성하는 시스템을 구축해보았는가?다만 2023년 이후 기존 JWT 앱 인증 방식이 완전히 지원 중단(Deprecated)되어, 예전에 작성한 코드가 401 Unauthorized 에러를 뱉거나 Server-to-Server OAuth 2.0 인증 절차에서 헤매는 개발자들이 많다.이번에는 Zoom의 변경된 인증 표···

22 0
MySQL ERROR 1366: Incorrect string value 원인 분석과 utf8mb4 변환 완벽 해결 가이드

웹 서비스를 운영하다가 사용자가 이모지(?, ?)나 특정 다국어 문자를 입력하고 저장할 때 MySQL ERROR 1366 (HY000): Incorrect string value 에러가 발생하며 데이터 저장이 튕기는 현상을 경험해봤을까?다만 대부분의 개발자들은 이 에러의 정확한 원인이 MySQL 기본 utf8 인코딩의 3바이트 제한이라는 사실을 모른 채, ···

22 0
PHP array_reduce()로 배열을 단일 값으로 축약하기 - 복잡한 집계 연산 완벽 가이드

배열의 모든 요소를 순회하면서 누적된 결과값을 계산해야 할 때가 있다. 장바구니 총액 계산, 배열 요소 조건부 필터링 후 합산, 또는 복잡한 데이터 변환 같은 작업 말이다. 다만 대부분의 개발자들은 반복문(foreach)으로 변수를 하나하나 더하거나 빼면서 코드가 길어지고 유지보수하기 어려워진다는 걸 경험했을 것이다. 이번에는 PHP array_reduce···

19 0
카카오 로컬 API 주소-좌표 변환 실패 - PHP cURL로 Geocoding 연동 및 Authorization 헤더 포맷 오류 완벽 해결

웹 서비스나 쇼핑몰 프로젝트를 개발하다 보면 사용자에게 입력받은 주소를 기반으로 지도에 핀을 표시하거나, 매장 간의 거리를 계산하기 위해 위도와 경도 좌표로 변환해야 하는 상황을 다들 경험해봤을 것이다.다만 Kakao Developers에서 REST API 키를 발급받아 cURL 요청을 보냈는데 401 Unauthorized 에러가 발생하거나, 응답 결과가···

28 0
Bing 검색 엔진에 사이트 등록하기 - Google Search Console과 다른 Webmaster Tools 완벽 가이드

많은 개발자와 마케터들이 Google Search Console에만 집중하느라 Bing 검색 엔진을 놓친다. 다만 Bing은 전 세계 검색량의 약 3~5%를 차지하고 있고, 특히 기업 사용자와 Windows 통합 검색에서 여전히 중요한 역할을 한다. 게다가 검색 노출 설정 방식이 Google과 다르기 때문에 제대로 알지 못하면 Bing에서는 아예 색인되지 ···

21 0
301 vs 302 리다이렉트 차이 - SEO 점수 유실과 검색 색인 전환 오류 완벽 해결

웹사이트의 URL 구조를 리뉴얼하거나 특정 페이지를 새 주소로 옮길 때 리다이렉트(Redirect)를 설정해본 경험이 있으실 겁니다.다만 대부분의 개발자들은 301과 302 상태 코드의 명확한 차이점과 이것이 검색엔진 크롤러에 미치는 치명적인 영향을 모른 채 단순 이동용으로 302나 자바스크립트 이동을 남발하곤 합니다.이번 글에서는 301과 302 리다이렉···

23 0
PHP array_key_exists()와 isset()의 치명적 차이 - null 값 처리 완벽 가이드

배열에서 특정 키가 존재하는지 확인할 때 많은 개발자들이 isset()과 array_key_exists()를 같은 것으로 생각한다. 다만 둘은 null 값을 처리하는 방식이 완전히 다르고, 이 차이를 모르면 버그를 찾기 어렵다. 이번에는 두 함수가 정확히 뭐가 다른지, 언제 뭘 써야 하는지, 실전 예제로 완벽하게 정리해서 소개하겠다. 1단계: 기초 개념 -···

20 0
PHP password_hash()와 password_verify() - 안전한 비밀번호 암호화와 로그인 검증 완벽 가이드

웹 서비스를 개발하며 회원 시스템을 구축할 때 사용자의 비밀번호를 md5나 sha256으로 단순 해싱해서 DB에 저장해 본 경험이 있을까? 다만 대다수 개발자가 솔트(Salt)의 정확한 개념이나 Bcrypt 알고리즘의 필요성을 모른 채 인터넷 블로그의 구형 코드를 그대로 복사해 붙이는 경우가 많다. 이번에는 PHP에서 제공하는 password_hash()와···

18 0
PHP 배열 요소 존재 여부 확인 - isset() vs array_key_exists() vs in_array() 완벽 비교

PHP로 배열을 다루다 보면 특정 키가 존재하는지, 값이 있는지 확인해야 할 순간이 자주 온다. 다만 대부분의 개발자들은 isset(), array_key_exists(), in_array() 세 함수의 차이를 명확히 모른 채 상황에 맞지 않는 함수를 써서 버그를 만든다. 이번에는 이 세 함수가 정확히 뭐가 다르고, 언제 어떤 걸 써야 하는지, 그리고 각각···

23 0
PHP 다차원 배열 정렬 복잡함 해결 - array_sort_by_key() 서포트 함수 제작 및 활용법

DB에서 데이터를 조회한 뒤 PHP 단에서 특정 키(Key) 기준으로 연관 배열 목록을 재정렬해야 할 때, 매번 usort()나 array_multisort()의 복잡한 익명 함수 문법 때문에 애를 먹은 적이 있을 것이다.다만 대부분의 개발자들은 array_multisort()에 인자를 전달하는 방식이나 usort()의 우주선 연산자() 작동 원리를 정확히···

17 0
검색 결과에서 내 사이트가 모바일과 PC에서 다르게 보일 때 - Mobile-First Indexing 완벽 가이드

구글 서치 콘솔을 확인해보니 모바일에서는 검색 노출이 잘 되는데 PC에서는 떨어져 있다거나, 반대 상황을 경험해봤을까? 혹은 구글에서 보낸 알림메일에 "Mobile-First Indexing" 같은 낯선 용어가 나와서 막막했던 경험이 있을까? 대부분의 웹 개발자와 SEO 담당자들은 이게 정확히 뭔지, 왜 신경 써야 하는지, 어떻게 대비해야 하는지 모른 채로···

20 0
Cloudflare API v4 연동으로 웹사이트 캐시 자동 퍼지(Purge) 구현하기 - PHP cURL 실전 가이드

웹사이트의 정적 리소스나 콘텐츠를 수정했음에도 사용자의 브라우저에는 계속 옛날 버전이 노출되어 난감했던 경험이 있을 것이다.다만 Cloudflare CDN을 사용하는 환경에서 관리자 페이지 내 콘텐츠 업데이트 기능과 연동하여 캐시를 자동으로 지우는 방법을 몰라, 매번 Cloudflare 대시보드에 로그인하여 수동으로 버튼을 누르는 경우가 많다.이번에는 Cl···

28 0
PHP array_combine()으로 두 배열을 키-값 쌍으로 병합하기 - 실무 데이터 매핑 완벽 가이드

배열 처리 작업을 하다 보면 두 개의 배열을 하나로 병합해야 하는 상황이 자주 생긴다. 예를 들어 CSV 파일에서 헤더 행과 데이터 행을 읽었을 때, 각 데이터를 헤더와 매핑해야 하거나, API 응답에서 이름 배열과 값 배열을 받았을 때 이를 연결하는 경우다. 다만 대부분의 개발자들은 반복문으로 일일이 처리하거나, 존재하지 않는 함수를 찾아 헤매는 경우가 ···

10 0
PHP PDO Transaction 데이터 꼬임 방지 - commit 및 rollback 완벽 가이드

복잡한 결제 처리나 회원 가입 과정에서 여러 개의 데이터베이스 쿼리를 연속으로 실행하다가 중간에 에러가 발생하여 데이터가 꼬인 경험이 있을 것이다.다만 트랜잭션의 정확한 작동 원리나 예외 처리 방식을 모른 채 개별 쿼리만 연속으로 던지는 개발자가 많다.이번에는 PHP PDO 환경에서 데이터 정합성을 완벽하게 보장하는 트랜잭션(Transaction)의 기본 ···

17 0
PHP Null Coalescing Operator(??)와 Spaceship Operator()로 코드 가독성 100배 높이기

PHP 개발자들이 자주 쓰는 삼항 연산자(ternary operator)는 사실 꽤 장황하고 읽기 어렵다. 특히 변수가 null인지 확인하고 기본값을 할당할 때마다 isset() ? $var : $default 같은 코드를 반복하면서 코드가 금방 복잡해진다. 다만 PHP 7.0 이상에서 제공하는 Null Coalescing Operator(??)와 Spac···

21 0
Portone REST API 연동 중 결제 금액 위변조 문제 해결 - PHP cURL 사전 검증부터 결제 승인 완벽 가이드

클라이언트 사이드에서 PG사 결제 창을 호출하고 결제를 진행할 때, 악의적인 사용자가 개발자 도구를 통해 결제 금액을 10원이나 100원으로 위변조하는 문제를 경험해봤을까?웹 서비스 개발에서 PG(결제대행사) 연동은 필수적이지만, 많은 개발자가 클라이언트 자바스크립트 응답만 신뢰하고 DB를 업데이트하는 치명적인 실수를 저지른다.다만 정확한 서버 대 서버(S···

18 0
검색 결과 위치 추적 실패 - Google Search Console API로 순위 모니터링 자동화 완벽 가이드

검색 엔진에서 자신의 웹사이트가 어떤 키워드로 몇 위에 나타나는지 알아야 SEO 전략을 세울 수 있다. 다만 Google Search Console의 웹 인터페이스에서 수동으로 확인하다 보면 시간이 너무 오래 걸리고, 매달 순위 변동을 추적하기도 어렵다. 이번에는 Google Search Console API를 PHP에서 직접 연동해서 검색 순위와 클릭수,···

16 0
공공데이터포털 기상청 단기예보 API 연동하기 - ServiceKey 인코딩 오류 해결부터 PHP 실전 활용까지

웹 서비스나 앱을 개발하면서 사용자의 현재 위치에 맞는 실시간 날씨 데이터를 보여줘야 하는 상황을 경험해봤을까? 공공데이터포털에서 제공하는 기상청 단기예보 API는 대한민국 전역의 날씨 정보를 무료로 활용할 수 있는 가장 확실한 도구다. 다만 API를 신청하고 코드를 작성했음에도 인증키 오류(SERVICE_KEY_IS_NOT_REGISTERED_ERROR)···

29 0
브라우저 탭 비활성화 시 리소스 낭비 방지 - Page Visibility API 완벽 활용법

웹 서비스를 개발하다 보면 사용자가 브라우저 탭을 전환하거나 창을 최소화했음에도 백그라운드에서 실시간 API 요청(Polling)이나 타이머, 애니메이션이 계속 실행되는 상황을 경험해봤을 것이다.다만 대부분의 개발자들은 탭의 활성화 상태를 감지하는 정확한 표준 기술을 모른 채 `window.onblur` 이벤트를 대충 쓰거나, 백그라운드에서 불필요하게 서버···

24 0
GitHub GraphQL API를 PHP에서 연동하기 - REST API 대비 효율성 완벽 비교

GitHub API를 써본 개발자라면 대부분 REST API를 먼저 접한다. 다만 복잡한 저장소 정보를 가져올 때 여러 번의 API 호출이 필요하고, 불필요한 필드까지 받게 되는 비효율성을 경험해봤을 가능성이 높다. 이번에는 GraphQL API로 이 문제를 어떻게 해결하는지, 실제로 어떻게 PHP에서 연동하는지 완벽하게 정리해서 소개하겠다. 1단계. Gi···

21 0
REDINFO Since 2014
webmaster@redinfo.co.kr
Copyright © Redinfo All Rights Reserved