-
MYSQL
Prevent Race Condition in Laravel
라라벨에서 레이스 컨디션을 방지하는 방법
Race Condition 이란? 레이스 컨디션(Race Condition)이란 컴퓨터는 워낙 빠르기고 분산되어 처리되기에 동시에 하나의 데이터를 수정하려고 할 때 발생하는 문제입니다. PHP는...
-
MYSQL
MySQL 테이블 저장 디렉토리 변경
MySQL TableSpace 삽질
문제 발생 최근 서비스의 Database 용량이 차오르면서 저장 공간을 늘려야 하는 이슈를 맞닥드렸습니다. 하지만 지금 사용중인 서비스에선 Disk 만 늘릴 수 있는 기능을...
-
PHP
self vs static
self vs static
TL;TR self 키워드는 코드가 선언된 곳의 ‘클래스’를 가르키고, static 키워드는 코드 위치에 관계없이 ‘인스턴스’를 가르킵니다. <h1...
-
PHP
PHP 라운드업 #1
PHP 정기 정리글 #1
원문 PHP Roundup #1 Published on Apr 28, 2022 by Ayesh Karunaratne 첫 번째 PHP 라운드업(정리 글)에 오신...
-
Book
데이터 중심 애플리케이션 설계 정리
Part 2
분산 데이터 여러 장비 간 분산된 데이터베이스를 필요로 하는 이유 확장성 내결함성/고가용성 지연 시간 고부하로 확장 더 강력한 장비로 변경을...
-
Book
데이터 중심 애플리케이션 설계 정리
Part 1
믿을 수 있는 애플리케이션의 조건들 신뢰성 “결함”이 있더라도, 사용자가 예상하는 기능을 “올바르게” 제공해야 함을 의미합니다. 하지만 이러한 결함들이 0 이 될 수는...
-
Laravel
Laravel HTTP Client Test
라라벨 HTTP 테스트
TL;TR 1. HTTP client test 에서 Http::fake(['url' => function () {}]) 이 가능하다. 2. HTTP client test 에서 네트워크...
-
Laravel
Laravel HTTP 비동기 요청
도큐먼트에도, PHP Doc에도 없는 따끈따끈한 기능
기존의 PHP에서 curl_exec나 file_get_contents 등을 이용해 요청하는 Http 요청은 모두 동기적인 방식이다보니 여러개의 요청을 할 때는 순서대로 하나하나 씩...
-
Laravel
Laravel Octane Beta 릴리즈
이전 Laravel Octane 소개글 원본글 - The Laravel Octane Beta is Available Swoole와 RoadRunner 환경에서 고성능 Laravel을 실행할...
-
PHP
PHP의 Git 서버가 해킹되었습니다.
PHP가 공급망 공격에 피해를 입었습니다.
PHP 인터널 공지: https://news-web.php.net/php.internals/113838 TR; TL; PHP의 git 서버가 공급망 해킹에 당해 앞으로 php-src는 Github를 메인으로 사용합니다. 하지만 여러분에...
-
Laravel
Laravel Octane
WOW. That's insane!
원본글 - Laravel Octane Taylor Otwell은 Laracon Online 2021에서 Laravel Octane을 처음 선보였습니다. Laravel Octane은 Swoole와 RoadRunner 환경을...
-
Dairy
새로운 Note 색션을 추가했습니다
Note 섹션 추가
Hello, Note! 블로그에 새로운 Note 섹션을 추가했습니다! 정확히 말하면 기술적인 내용들에 대한 단어 정의, 혹은 정리를 하고, 간단하게 정리된 내용을 트위터...
-
PHP
PHP Enums
PHP 8.1 RFC를 통과한 PHP Enums
PHP에서는 기존까지 별도의 Enum class를 지원하지 않아 아래의 예시 처럼 class의 const(상수)를 선언해 사용했었습니다. class Status {...
-
Laravel
Laravel 8.28에 AsArrayObject와 AsCollection 커스텀 케스트 추가
"AsArrayObject and AsCollection Custom Casts Added in Laravel 8.28" 변역글
이번 주 릴리즈된 Laravel 8.28에는 Taylor Otwell가 기여한 두가지 새로운 Custom 캐스트 타입인 AsArrayObject, AsCollection가 있습니다. ArrayObject는 기존의 array와 JSON 캐스트에 비해 몇가지 장점이...
-
Laravel
새 라라벨 라우트 "Missing" 메소드
New Laravel Route “Missing” Method의 번역글
원본글 - New Laravel Route “Missing” Method 라라벨 v8.26.0 버전과 함께 출시하는 라우터는 새로운 missing() 메소드가 추가되어 없는 페이지를...
-
Security
Laravel 쿼리 바인딩 취약점 분석
Laravel query binding vulnerability research
6.20.11, 7.30.2, 8.22.1 보안 패치 이후, 유사한 방법으로 취약점이 발생해 6.20.14, 7.30.4, <code...
-
Laravel
[번역] 쿼리빌더 sole() 메소드 이해하기
Understanding the sole() Query Builder Method의 번역글입니다.
원본글 - Understanding the sole() Query Builder Method 라라벨 8.23에서 쿼리빌더 sole() 메소드가 소개 되었습니다. 이 메소드는 단일 레코드를...
-
Laravel
[번역] 라라벨 8.23 릴리즈
Laravel 8.23 Released 글의 번역글입니다.
원본글 - Laravel 8.23 Released Laravel 팀에서 laravel 8.23을 발표 했습니다. 이번 발표에는 새로운 sole() 쿼리 빌더 메소드와,...
-
PHP
PHP8 에서 파라미터 기본값 선언
PHP8 에서 파라미터 기본값을 선언할 때의 주의할 점
PHP에선 다음과 같이 함수에 기본값을 설정할 수 있습니다. function myFunction($a = 'default') <span...
-
Laravel
기능(Feature) 테스트 VS 유닛(Unit) 테스트
Laravel의 Feature 테스트와 Unit 테스트의 다른점
이번 글을 쓰게된건 매번 기능(Feature) 테스트와 유닛(Unit) 테스트의 차이점을 확실히 하고, 개인적으로 쌓인 유닛 테스트에 대한 오해를 풀어 보려고 합니다. Laravel 코드상의...
-
Laravel
서비스 프로바이더에서 Boot와 Register의 차이와 주의할 점
boot vs register in Service provider and Caution
Laravel Service provider 라라벨에선 Service provider를 통해 라라벨 어플리케이션이 실행되기 전에 필요한 데이터를 미리 등록, 가져올 수 있습니다. Service...
-
PHP
PHP key를 가진 배열의 spread 연산자 RFC
PHP key를 가진 배열의 spread 연산자에 작동 방식에 대한 RFC입니다.
기존의 글을 그대로 번역하지 않고 제가 필요한 부분을 추가하고, 재편집했습니다. 원본 RFC은 여기서 확인하실 수 있습니다. PHP Array spread operator...
-
Laravel
Artisan 명령 목록에서 Laravel Artisan 명령어 숨기기
'Hiding Laravel Artisan Console Commands from the list of available commands'의 번역 글입니다.
원본글: Hiding Laravel Artisan Console Commands from the list of available commands 만일 제품이나 패키지는 릴리즈 할 때, 설치만을 위해 사용되거나 특정 상황에서만...
-
PHP
PHPunit filter 사용 시 완벽히 일치할 때만 테스트
PHPunit의 filter 팁
TR;TL phpunit --filter 'regex' PHPunit Filter phpunit을 사용하면서 특정 메소드, 혹은 클래스만 테스트 하고 싶을 땐 아래 처럼 <code class="language-plaintext...
-
Laravel
20가지 Laravel eloquent 팁과 트릭
'20 Laravel Eloquent Tips and Tricks'의 번역 글입니다.
들어가며 라라벨의 모델은 정말 다양한 방법으로 사용할 수 있고, 또한 많은 부분을 자동으로 처리해줍니다. 이러한 특성을 최대한으로 살리는 아래의 팁들은 라라벨로 개발할...
-
CI/CD
Github Action SQLITE "ON CONFLICT, DO UPDATE" Syntax error
SQLITE UPSERT
TL;TR SQLite 에선 ON CONFLICT, DO UPDATE(일명 Upsert) 는 3.24.0 (2018-06-04)버전에서 추가 되었으나, ubuntu-18.04에선 SQLite...
-
PHP
__invoke PHP 매직 메소드
__invoke php magic method
PHP __invoke 매직 메소드 PHP에는 다양한 매직 메소드 들이 있습니다. 이는 PHP의 유연함을 대표하기도 하면서, IDE의 정적 분석을 어렵게 하기에 많은 말이...
-
Laravel
Laravel의 Macro
With Mixin
Laravel Macro 소개 Laravel에는 기존의 존재하는 다양한 메소드 들을 제공하지만, 내가 원하는 기능을 하는 메소드를 넣기위해서 일일히 Model을 확장해 작업하기는 쉽지 않습니다....
-
Diary
GitHub Page로 이사
bye bye wordpress
Hello GitHub Page 근 5년을 함께해온 기존의 워드프레스 블로그 대신 github page를 사용해 보려합니다. 익숙한 WYSIWYG를 떠나 markdown으로 작성하려니 어색함이 많이 몰려옵니다....