[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([]) : 옵션 위의 코드를 …

Laravel $model->relation Vs. $model->relation()

TL;DR $model->relation()은 모델 객체(object)를 반환$model->relation은 relation의 결과값을 반환 Laravel에선 모델간의 관계(relation)을 편리하게 사용할수 있는 기능을 제공한다.[docs]외래키(foreign_key)를 이용하여 해당 데이터에 해당되는 값을 가져올 수 있는 편리한 기능이다. 다음과 같은 구조의 DB가 있다고 생각해보자. User : table – id : integer (auto_increase, primary_key) – name : string – password : string Post : table – id : …

Vue keep login state using token (with axios)

TL;DR https://github.com/SilNex/vue-practice/commit/9f385a7571cf8d13504ac8f9fbc06b04059c9f06 https://github.com/SilNex/vue-practice/tree/master/vue-axios-login Vue 강좌를 보며,Vue-route, axios, Vuex를 이용해 만든 간단한 Login 페이지 이다. 다만 위에 프로젝트에서 한가지 문제가 있는데, 바로 /login 페이제서 로그인 후 token을 localstorage에 저장하여서 beforeEnter에 넣어 주었으나, 해당 부분이 실행되지 않고 로그인이 필요하는 메시지와 함께 /login으로 이동하게된다.하지만 /login 페이지에선 잠시후 로그인이 완료되었다는 알림창이 표시된다. 즉, Login인 상태가 컴포넌트에서 컴포넌트론 유지가 되는데,새로고침이나 …

Linux resource limit

현재 OS상의 제한이 걸려 있는 목록을 볼 수 있는 명령어 ulimit -a 위의 리스트 중에서 File open의 제약(Socket connect)을 걸고 있는 것이 바로 open files ulimit -n 50000 혹은 /etc/security/limits.conf 파일에* soft nofile 16384 * hard nofile 16384을 추가후 껏다 키면 적용된다. (sysctl -p로도 적용될수도..?) python에선 resourece 패키지를 통해 해당 스크립트가 실행되는 동안 변경할 수 …

Laravel 5.8 PHPunit test setUp, tearDown error

갑작스레 Laravel을 5.8로 업데이트 하고나서 잘만 동작하던 test가PHP Fatal error: Declaration of Tests\Feature\Test::setUp() must be compatible with이런 에러를 벹으며 동작하지 않았다. github, laracast등에 올라온지 꾀 된 내용인데 laravel upgrade 가이드엔 test 관련 표기가 없어 당황하던 도중 github에서 방법을 찾게 되었다. (작성일 기준으론 upgrade 가이드에 표시되지 않았을뿐 현재는 표시되어있다.) 해결 방법은 setUp과 tearDown 메소드에 반환형을 :void로 …