Loading...
XML 사이트맵 생성 및 제출하기 - 검색 엔진 최적화의 필수 단계

웹사이트를 구글이나 네이버에 등록할 때, "사이트맵(Sitemap)을 제출해야 한다"는 말을 들어본 적 있을까? 다만 사이트맵이 정확히 뭔지, 왜 필요한지, 어떻게 만드는지 설명할 수 있는 개발자는 생각보다 적다. 그냥 "이게 필요하다더라" 정도만 알고 있을 뿐이다. 사이트맵은 검색 엔진이 당신의 웹사이트를 더 빠르고 완벽하게 크롤링하도록 도와주는 일종의 ···

17 0
Open Graph(og 태그)로 SNS 공유 최적화하기 - 검색/SEO 기초

블로그나 웹사이트의 글을 SNS(페이스북, 카카오톡, 트위터 등)에 공유할 때, 제목, 이미지, 설명이 제대로 표시되지 않은 경험이 있을까? 또는 내가 설정한 이미지가 아니라 엉뚱한 이미지가 나타난 적은? 이런 문제는 대부분 "Open Graph" 메타 태그가 제대로 설정되지 않아서다. Open Graph는 페이스북이 개발한 프로토콜로, 웹 페이지의 정보를···

13 0
쿠키 vs 세션 vs 토큰 - 웹 인증 방식 완벽 비교

웹 개발을 하면서 사용자 로그인을 처리해야 할 때 쿠키, 세션, 토큰이라는 세 가지 방식을 마주치게 된다. 다만 이 세 가지가 정확히 뭐가 다른지, 어떤 상황에서 뭘 써야 하는지 설명할 수 있는 개발자는 생각보다 적다. 많은 사람들이 그냥 "세션을 쓰면 된다더라" 또는 "요즘은 토큰을 쓴다더라" 정도만 알고 있을 뿐이다. 다만 각 방식의 원리를 이해하면, ···

13 0
JavaScript async/await 완전 정복 - Promise와 뭐가 다른가요

JavaScript를 다루다 보면 async/await를 만나게 된다. 특히 서버 통신, 파일 처리, 데이터베이스 조회 등 시간이 걸리는 작업을 할 때 거의 필수적으로 사용된다. 다만 async/await가 정확히 뭔지, Promise와는 뭐가 다른지, 언제 사용해야 하는지 명확하게 이해하는 개발자는 생각보다 적다. 그냥 "좋다고 해서" 또는 "이 코드를 ···

17 0
Linux chmod 권한 완전 이해하기 - 755? 644? 777? 정확히 뭔가요

리눅스 서버를 다루다 보면 chmod 명령어를 자주 사용하게 된다. 특히 파일 업로드 기능, 권한 설정, 디렉토리 접근 제한 등 웹 개발 과정에서 거의 매일 마주친다. 다만 대부분의 개발자들은 chmod 뒤에 붙는 숫자가 정확히 뭔지 모른 채 인터넷에서 가져온 코드를 그냥 복사해 붙인다. "755 권한으로 설정해" 라는 말은 들어봤지만, 왜 755인지, 6···

22 0
jQuery 성능 최적화 - 흔한 실수 10가지와 최적화 팁

jQuery는 편리하지만, 잘못 사용하면 웹사이트 성능을 크게 떨어뜨릴 수 있다. 특히 대규모 프로젝트에서 jQuery를 남용하거나 최적화하지 않으면 페이지 로딩 속도, 메모리 사용량 등 여러 문제가 발생한다. 이번에는 jQuery를 사용할 때 자주 하는 실수들과 그 해결책을 정리해서 소개하겠다. 이 글을 읽고 당신의 jQuery 코드를 점검해보면, 분명히···

14 0
jQuery AJAX 완전 정복 - 서버 통신부터 에러 처리까지

jQuery를 사용하는 가장 큰 이유 중 하나가 바로 AJAX 기능이다. AJAX를 통해 페이지를 새로고침하지 않고도 서버와 통신할 수 있기 때문에, 사용자 경험을 크게 향상시킬 수 있다. 다만 AJAX는 비동기 통신이기 때문에 실행 순서, 에러 처리, 타이밍 등 신경 써야 할 부분이 많다. 이번 글에서는 jQuery AJAX의 기본부터 시작해서, 실무에서···

16 0
jQuery 선택자와 DOM 조작 완전 가이드 - 기초부터 심화까지

jQuery를 처음 배우거나, 오래전에 배웠지만 기초가 흔들리는 개발자들이 많다. 특히 선택자(Selector)와 DOM 조작은 jQuery의 가장 기본이 되는 부분인데, 이것만 제대로 알아도 jQuery를 훨씬 효율적으로 사용할 수 있다. 또한 최근에는 Vanilla JavaScript가 많이 사용되고 있지만, 여전히 레거시 프로젝트나 빠른 개발이 필요한···

15 0
MySQL ERROR 1045: Access denied for user 완전 가이드

MySQL을 처음 다루거나 새로운 서버에 접속할 때 가장 자주 마주치는 에러가 "MySQL ERROR 1045: Access denied for user" 이다. 에러 메시지는 간단하지만, 정확히 어디서 문제가 발생했는지 파악하기가 쉽지 않아서 많은 사람들이 헷갈려한다. 특히 처음 데이터베이스를 설정할 때나, 권한 설정이 필요한 상황에서 더욱 그렇다. 이번···

12 0
PHP Fatal error: Allowed memory size exhausted 원인과 해결법

PHP 웹사이트를 운영하다 보면 갑자기 서버에서 "PHP Fatal error: Allowed memory size of X bytes exhausted" 라는 에러가 발생하는 경험을 하게 된다. 특히 대용량 파일을 처리하거나 많은 데이터를 조회할 때 더 자주 발생한다. 이 에러가 발생하면 해당 페이지는 완전히 작동 불능 상태가 되기 때문에 사용자 경험도 ···

17 0
MySQL 느린 쿼리 로그로 성능 문제 디버깅하기

웹사이트를 운영하다 보면 시간이 지나면서 데이터가 쌓이고, 어느 순간부터 갑자기 페이지 로딩이 느려지는 경험을 하게 된다. 특히 PHP에서 MySQL 쿼리를 실행할 때 어떤 쿼리가 느린지, 왜 느린지 파악하기가 쉽지 않다. 직접 쿼리를 날려보거나 전체 쿼리를 로깅하는 것도 방법이지만 효율적이지 못하다. 이럴 땐 MySQL의 느린 쿼리 로그(Slow Quer···

19 0
URL 을 통해 데이터 전송시 조금더 안전한 데이터 검증 방식을 이용해 보자.

요즘들어 회사에서 REST API 를 통한 다양한 연동 작업들이 많이 진행되고 있다. 물론 전문화된 API 서버가 있는건 아니고 POST 메서드로 JSON 데이터를 전송하는 수준의 연동 작업을 진행중이다. 솔직히 REST API 작업은 난이도로 보면 쉬운 작업에 속하긴 하는데 API 규격서를 제공해야하는 입장이라면 정말 귀찮은 작업이 될 수 있다. 또한 데···

611 14
PHP의 취약점에 대하여

PHP의 취약점을 검색하면 상당히 많은 검색결과를 볼 수 있다. 하지만 PHP 뿐만 아니라 모든 언어는 취약점이 발생하기 마련이다. 이런걸 보안하여 패치하는게 개발자의 일이기도 하다. 그럼 PHP의 취약점 보완을 위해 버전 업그레이드를 받는다고 해서 취약점이 해결될까? 절대 그럴일이 없다.. 이미 엉망인 소스에다가 PHP 버전을 업그레이드 받는다고 취약점이···

437 2
보안을 위해선 수시로 접속로그를 확인하는 습관이 필요하다.

개인 사이트 또는 블로그 운영시 접속로그를 살펴보는건 중요한 부분중 하나다. 사이트 접속 로그를 수시로 살펴보고 어떤 곳에 유입이 많이 되었는지 확인하여 컨텐츠를 구성하는데 도움이 될 수 있다. 하지만 언제나 그렇듯 접속로그를 보다보면 수상한 접속 기록등이 확인될 때가 있다. 보통 개인이 서버로 운영하지 않고 네이버 또는 티스토리와 같은 서비스에서 블로그를···

514 5
PHP를 이용한 FCM HTTP V1 푸시 전송 방법 (PHP 7.4 이상)

푸시 서비스중 하나인 FCM HTTP API 방식이 24년 6월에 최종적으로 지원이 종료됨에 따라 회사 앱도 HTTP V1 방식으로 마이그레이션을 해야만 했다. 소식은 지금으로 부터 1년전부터 알고 있었지만 귀찮아서 계속 미루고 있다가 어느덧 6월이 다가와 더이상 미룰 수가 없었다. 하지만 조금이나마 더 미룰 수 있을까하여 살펴보니 기존 HTTP API 방···

5,006 8
접속 아이피가 스팸인지 체크해주는 사이트 - ClanTalk

요즘들어 사이트 로그를 살펴보면 로봇의 비율이 80%를 넘기는데 이와 더불어 별 이상한 그지 같은 악성 크롤러도 판을 치고 있어서 걱정이 많다. 크롤러라면 최소한 유저에이전트에 정보라도 남겨놓는게 예의 인데 악성 크롤러는 신원같은건 무시한체 긁어가는것에 집중을 하고 있다. 간혹 이런 악성크롤러의 아이피 출처에 대한 상세 정보를 알고싶을때가 있다. 이때 조회···

1,230 3
보안토큰을 적용하여 안전하게 FORM 전송을 하는 간단한 예제

최근들어 큰 프로젝트들이 많이 겹쳐 블로그 운영을 많이 못했던것같다. 현재 UI도 리뉴얼 구성중에 있긴하나 당분간은 엄두가 나지 않을듯 싶다. 이번에 소개할 내용은 보안토큰을 적용한 간단한 FORM 전송 예제이며 이 방법을 주로 사용하는 목적은 스팸(악성)글을 막기위한 용도로 많이 사용된다. 자세한 방법은 아래 예제 소스를 통해 알아보자. EX) 폼 파일 ···

1,935 11
javascript로 카드번호 입력하면 4자리마다 하이픈 또는 공백 자동으로 붙이기(+마스킹처리)

이번편은 지난번 생년월일 입력 이벤트를 활용하여 카드번호 입력 후 4자리마다 하이픈 또는 공백등의 구분자를 붙여는 스크립트 예제에 대해서 알아보자. 참고로 기본적인 기능들은 앞서 생년월일 입력 이벤트와 유사하며 이를 조금만 활용하면되고 다만 카드 입력의 경우 보안이 중요한 만큼 마스크처리를 추가하였다. 카드번호 입력 후 유효성 체크하여 자동 구분자 넣어주는···

3,304 3
javascript로 생년월일 입력하면 슬래시 또는 하이픈 자동으로 붙이기 (+유효성 체크)

생년월일은 과거 달력에서 선택하는 방식을 많이 채택하였지만 나이가 있으신분들은 한참을 뒤로 가야하는 불편함이 발생되어 요즘은 입력방식을 사용하는편이다. 이번편에서는 간단하게나마 생년월일 입력 후 슬래시(/) 또는 하이픈(-)을 붙여주는 스크립트이다. 본래 이번편에 소개하는 예제는 JS 라이브러리로 제공할 목적이였으나 시간상 여유가 없어 간단하게 입력 후 처···

3,367 3
아파치 웹서버 - Service Unavailable Error(503 에러) 해결 방법

아파치 웹서버에서 발생되는 Service Unavailable Error 에러는 서비스는 시작되었지만 접근할 수 없는 서버 내부 오류로 검색을 통해서 해결이 안되는 경우가 있다. 주로 검색을 하면 포트를 열어서 해결하라는 식으로 소개가되는데 이러한 방법으로도 끝까지 해결이 안되는 경우가 있다. 물론 포트를 사용가능하게 여는것도 필요하지만 가장 중요한건 서버···

12,390 5
REDINFO Since 2014
webmaster@redinfo.co.kr
Copyright © Redinfo All Rights Reserved