[번역] 스팸과 싸우는 5가지 방법

원본글 : 5 Ways of Battling Form Spam 만약 여러분이 웹 어플리케이션을 만든다면, 스팸 봇들에게 점렴당하는 것들을 막을순 없을것입니다. 내 프로젝트 중 하나는 회원가입 폼 부분을 당해서 17,000여개의 가짜 유저을 정리하는 것은 정말 힘들었습니다.이를 해결 하기위해 스팸 봇과 싸우는 방법을 트위터에 물어보았고, 많은 반응과 좋은 아이디어들을 얻을 수 있었습니다.나는 언급된 방법들을 공유해 만약 여러분이 공격 …

PHP 7.4 preload

PHP 7.4 마지막 글 업데이트: 2019 12 09 2019년 11월 29일에 php 7.4가 릴리즈 되었다.여러가지 기능이 업데이트 되었고 기다렸던 property type도 추가되었는데가장 눈에 띄이는 기능은 preload 기능이였다. Preload? PHP는 기본적으로 CGI 형식으로 동작합니다. 매번 페이지를 읽을 때마다 PHP는 실행하기 전에 모든 코드를 재컴파일합니다. 심지어 Python의 장난감 프레임워크의 개발 서버도 이런 식으로 돌지는 않습니다. PHP: 잘못된 …

[Clipping] php-fpm slow log

서비스 응답속도 저하시 php-fpm 로그로 원인분석하기 원글: HeuJung php-fpm 기반의 웹 서비스에서 알 수 없는 문제로 응답속도가 저하되는 현상이 발생 할 경우가 있다. 원인은 여러가지일 수 있다. 몇 가지를 꼽자면, DBMS의 SQL 응답속도 저하 (Slow Query) 네트워크 지연 서버 리소스 점유율 (CPU, RAM 등) Disk 입출력 문제 등이 있다. 하지만, 서버 리소스나 네트워크에 별 다른 …

[VS code] php xdebug 설치

최근 VScode에서 제공하기 시작한 Remote-WSL를 사용하기 시작하면서 효과를 톡톡히 보고 있는 와중에 윈도우에선 복잡했던 php xdebug 설정을 통해 laravel 프로젝트에서 테스트 해보고자 한다. 먼저, WSL상에서 phpinfo() 또는 php -i의 결과값을 https://xdebug.org/wizard 에 붙여넣은 뒤 나오는 방법 데로 xdeubg를 설치하고 phpinfo() 또는 php -i의 결과에서 xdebug 가 설치 되어있는지 확인하자. 만약 xdebug 설치중 phpize가 없다면 apt-get …

[PHP] Multiple for(each), while escape

TL;TR; PHP는 중접된 반복문을 원하는 개수만큼 탈출할 수 있는,break 2;와 continue 2;를 지원한다. 다중 for문 PHP가 아니더라도 어디에든 다중 for문을 사용하는 것을 본적이 있을 것이다.물론, for문이 중첩되어있는걸 보면 경기를 일으키는 사람도 있지만,어쩔 수 없이 써야할수도 있고, 지식의 한계와 마감의 촉박함이 다중 for문을 만들어 낼 수 있는 부분은 어쩔수 없다. 뭐 그렇다치고, 모던 PHP그룹을 보던중 신기한(?) …

[PHP] Distinction Null and Undefined

TL;TR <?php array_key_exists(‘value’, get_defined_vars()) ?> 대게 주의에선 PHP에선 Null과 Undefined를 구별하지 못한다고 알려져 있다.나 또한 Null과 Undefined를 구별할 수 있는 방법이 없다고 생각했지만, 성능상의 이슈를 제외하고, PHP에서도 Null과 Undefined를 구분 할 수 있다. PHP에서 변수의 유효성을 확인하기 위해 가장 많이 사용되는 함수인 isset은 해당변수가 ‘정의 되어 있지 않’거나 변수의 값이 ‘Null’인 경우에 false를 반환한다. 즉, …

Laravel Simple API

Laravel의 document엔 간단하게 api를 구성할 수 있는 방법이 나와있다. [doc] 하지만 문서를 따라하는것 만으로는 이해가 힘들기도 했었고, 위에 내용데로 따라 만든 api_token을 어떻게 써야할지도 햇갈려 따로 정리해둔다. 문서대로 users 테이블에 api_token 컬럼이 생성되었으며, str_random() 등과 같은 함수로 임의의 token이 들어간 상태에서 진행되었다고 가정한다. Middleware (‘auth:api’) “auth:api” – ‘auth’ 미들웨어와 ‘api’ poilcy를 사용한다는 뜻이며, 해당 미들웨어가 …

Laravel manual pagination

Laravel에서 groupBy와 함께 paginate을 쓸 땐 수동으로 Paginator 생성하여 사용하는 것을 권장하고 있다. [docs] 나의 경우엔 groupBy 이후에 paginagte()함수를 실행시키면 column을 찾을 수 없다는 에러가 발생하여 어쩔수 없이 수동으로 생성해야한다. 수동으로 생성할땐 use Illuminate\Pagination\Paginator; 를 사용한다. Paginator의 파라미터는$todoItems : array_slice 혹은 slice 메소드로 분리된 배열$perPage : 페이지당 표시할 개수$currentPage(null) : 현재 페이지$option([]) : 옵션 위의 코드를 …