IT

개요회사에 파일에 저장된 text를 불러와 처리하는 프로그램이 있는데 테스트로 echo someword >> file 이런식으로 파일 하나를 만든뒤 이 파일을 읽어들였더니 에러가 발생하였다. (해당 프로그램은 공백과 개행에 민감한데 기존엔 이 처리가 되어있지 않았다.)분명 파일 저장시 공백을 추가하거나 개행처리를 하지 않았는데 왜 이럴까 의문스러웠다.찾아보니 원인은 Unix/Linux 계열 시스템에서 텍스트 에디터(vi, vim, nano 등)로 파일을 저장할 때나 echo 등 POSIX 호환 명령어들을 사용해서 저장할 때 문자열 끝에 개행이 자동으로 추가된다는 것이었다.POSIX 표준과 개행문자이는 POSIX 표준을 따르는 것으로, 텍스트 파일은 개행문자로 끝나야 한다는 규칙에 기인한다.관련 내용은 P..
· IT/라라벨
Laravel 10과 AWS SES를 이용하기 위한 설정 가이드1단계: AWS SDK for PHP 설치composer require aws/aws-sdk-php2단계: AWS SES 설정AWS SES를 사용하여 이메일을 보내려면 AWS SES 계정을 설정하고 이메일 주소나 도메인을 인증 필요.참고: 아직 완료하지 않은 경우, '샌드박스' 모드로 발송에 제한이 있음. 보낼 수 있는 메일의 용량과 속도가 크게 제한되며, 모든 수신자가 SES에서 인증을 받아야 함.3단계: Laravel에서 AWS SES 구성Laravel 프로젝트의 config/services.php 수정. AWS SES 인증 정보를 추가// config/services.phpreturn [ // 다른 서비스 구성... 'ses'..
· IT/php
PHP는 스크립트 언어로 인터프리터 컴파일러가 php 파일을 실행한다. Zend engine 기반으로 실행되며 처리 과정은 다음과 같다. (Zend engine은 PHP를 실행시키는 주체이며 여러 컴포넌트의 구성으로 이루어져 있다. 각 컴포넌트들은 php 파일을 토큰화, 파싱, 컴파일, 실행 등의 역할을 한다.)PHP 실행 과정토큰화(lexer) -> 파싱 -> AST -> opcode(컴파일러에 의해 변환됨) -> 실행 (Zend VM에 의해 실행됨)PHP7 이전엔 파싱 단계에서 opcode까지 생성하였지만, 이후엔 각 기능을 모듈화 (토큰화, 파싱, 컴파일) 하여 분리하였다. 모듈화의 장점복잡한 컴파일 과정을 작은 단계로 나눠 처리할 수 있음각 단계가 독립적이어서 유지보수와 디버깅이 쉬움최적화가 필..
· IT/php
DB 보다 더 높은 성능의 read/write 가 필요할때웹 서비스를 운영하다 보면 DB의 성능만으로는 부족한 순간이 찾아온다. 특히 실시간으로 빠른 응답이 필요하거나, 반복적으로 같은 데이터를 조회하는 경우에는 DB 대신 캐시를 활용하는 것이 좋은 선택이 될 수 있다.캐시로 활용할수 있는 in-memory DB 들과 apcu대표적인 in-memory DB로는 Redis와 Memcached가 있다. 이들은 독립적인 서버로 운영되며, 분산 환경에서도 잘 동작한다. 하지만 단일 서버 환경에서는 이러한 별도의 서버를 띄우는 것이 오히려 오버헤드가 될 수 있다. 이때 PHP에서 제공하는 apuc 를 고려해볼 수 있다.apcu 의 특징 및 장단점PHP 프로세스와 apcu의 관계PHP-FPM은 master proc..
Cloudflare 소개와 이점Cloudflare는 서버 호스팅 시 보안 및 최적화를 위해 많이 사용되는 리버스 프록시 서비스이고 주요 장점은 아래와 같다.DDoS 방어 등 비정상적인 트래픽 차단전역 CDN을 통한 라우팅 최적화WAF(Web Application Firewall) 제공SSL/TLS 인증서 무료 제공DNS 서비스 무료 제공한국 리전(ICN) 사용 시 주의사항Cloudflare는 전 세계 300개 이상의 데이터센터를 보유하고 있으며, 한국에는 인천(ICN)에 데이터센터가 위치해 있다. 하지만 무료 플랜 사용 시 다음과 같은 문제가 발생하는데..리전 강제 할당무료 플랜의 경우 대부분 LAX(로스앤젤레스) 리전으로 강제 할당한국에서 접속 시 물리적 거리로 인한 레이턴시 증가실제 성능 테스트 결과..
· IT/DB
MySQL DB 에 한글 저장시 깨짐현상이 발생하여 트러블슈팅한 과정을 적어보고자 한다.MySQL Character Set 불일치 문제 해결하기1. 문제 상황# 현상- 한글 데이터 저장 시 깨짐 발생 (예: "안녕하세요" -> "안ë..."")- 저장된 한글 데이터 조회 시 깨짐- 개발 환경에서는 정상 동작하나 운영 환경에서 문제 발생# 증상 확인 방법- 데이터베이스에서 직접 조회했을 때의 데이터 상태- 애플리케이션에서 조회했을 때의 데이터 상태2. 원인 분석-- 1. Character Set 레벨Server > Database > Table > Column 순으로 적용-- 2. Connection 설정 확인SHOW VARIABLES LIKE '%character%';SHOW VARIABLES LIK..
웹에서 한글 특수기호가 깨지는 현상 해결하기: '㈝' 문자를 중심으로웹 개발을 하다 보면 ㈝, ㈜, ㉾ 같은 한글 특수기호가 깨져서 표시되는 현상이 발생한다. 오늘은 ㈝ (오전) 문자를 중심으로 이 문제를 해결하는 방법을 알아보자.목차특수문자 이해하기문제 상황해결 방안구현 예시결론특수문자 이해하기문제의 특수문자 정보유니코드 코드 포인트: U+321D이름: Parenthesized Korean Character Ojeon유니코드 버전: 4.0 (2003년 4월)블록: Enclosed CJK Letters and Months (U+3200 - U+32FF)스크립트: Hangul (한글)카테고리: Other Symbol (So)문제 상황아래 글을 읽다가 특수문자가 깨진 것을 발견했다. PC마다 정상 출력되거나..
TypeScript에서 as 키워드 사용하기TypeScript에서 as 키워드를 사용하여 타입을 명시적으로 지정해야 하는 경우는 여러 가지가 있는데 주요 상황들은 아래와 같다.1. 타입 단언(Type Assertion)이 필요한 경우TypeScript가 추론한 타입보다 개발자가 더 구체적인 타입을 알고 있을 때 사용.let someValue: any = "this is a string";let strLength: number = (someValue as string).length;2. 유니온 타입을 더 구체적인 타입으로 좁힐 때function getLength(obj: string | string[]) { if (typeof obj === 'string') { return (obj as..
_이준호_
'IT' 카테고리의 글 목록