Java Spring 초기 설정에서 가장 먼저 만나는 문제가 한글 깨짐이다. 폼으로 넘긴 한글이 ??? 나 ë°ì´í° 같은 형태로 들어오는 상황이다.web.xml 설정<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> ..
Dart 문법 정리Flutter를 위한 Dart 문법 정리 Keywords ( 예약어로 변수 선언 이름으로 사용할 수 없다 ) ( 이미지를 클릭하여 링크 이동 ) 변수 초기화 String name = '홍길동'; print(name); // 홍길동 기본값은 nullvar name; // name = null 기본변수 (var, dynamic)var test = "name"; // 자동으로 String 타입지정test = 12345; // Error !! dynamic name = "홍길동";name = 1234;print(name); // 1234 Final 선언을 할경우 변수를 변경할수 없다final name = '홍길동'; // 자동으로 String 타입 지정 final String nickname ..
Laravel 개발 시 설치하면 개발 능률이 올라가는 composer 리스트다. 원래 정리해뒀던 목록에 현재 기준 설명과 대안을 덧붙인다.디버깅Laravel DebugbarSQL, route, session 등등을 확인할 수 있다. 실행된 쿼리 수가 화면 하단에 표시돼서 N+1을 잡을 때 가장 유용하다.composer require barryvdh/laravel-debugbar --dev--dev를 반드시 붙인다. 운영에 켜져 있으면 쿼리와 환경 변수가 그대로 노출된다.요즘은 Laravel Telescope도 같이 볼 만하다. Debugbar가 현재 요청을 화면에 띄운다면, Telescope는 요청·잡·예외·메일을 별도 대시보드에 기록해서 나중에 조회할 수 있다. API 서버라면 Telescope가 더 ..
개발자는 도구만 잘 써도 생산성이 배로 올라간다. PHP의 대표적인 IDE인 PhpStorm은 기능이 워낙 많아서, 설치해놓고 메모장처럼만 쓰는 경우가 의외로 많다.가장 좋은 학습 자료는 Laracasts의 무료 시리즈다.How to Be Awesome in PhpStorm여기서는 그중에서도 익히면 체감이 확 오는 것들만 추려본다.1. 이동 관련 단축키 (이것만 외워도 절반)마우스로 파일 트리를 뒤지는 시간이 하루에 얼마나 되는지 생각해보면, 여기가 가장 효율이 좋다.Shift Shift — Search Everywhere. 파일·클래스·설정·액션 전부 검색Cmd/Ctrl + B — 정의로 이동. 메서드 이름에서 누르면 구현부로Cmd/Ctrl + Alt + B — 구현체로 이동. 인터페이스에서 실제 구현..
사용자가 올린 이미지를 그대로 저장하면 문제가 금방 생긴다. 요즘 폰 사진은 한 장에 5MB를 넘고, 목록 화면에서 원본을 그대로 뿌리면 로딩이 느려진다. 세로로 찍은 사진이 가로로 뒤집혀 보이는 문제도 흔하다.Laravel에서 이미지를 다룰 때 표준처럼 쓰이는 게 Intervention Image다. 리사이즈, 크롭, 회전, 워터마크, 포맷 변환을 전부 지원한다.설치composer require intervention/imagev2와 v3의 사용법이 꽤 다르다. 신규 프로젝트라면 v3를 쓰는 게 좋다.v2 (레거시)v2는 서비스 프로바이더와 파사드를 수동 등록해야 했다.// config/app.php'providers' => [ Intervention\Image\ImageServiceProvide..
IDE로 Laravel을 개발할 경우 자동완성 및 goto 기능을 지원해주는 패키지다. 파사드와 Eloquent 매직 메서드 때문에 IDE가 타입을 못 잡는 문제를 해결해준다.왜 필요한가Laravel은 편의성을 위해 PHP의 동적 기능을 적극적으로 쓴다. 문제는 IDE가 정적 분석으로 타입을 추론하는데, 이런 코드는 분석이 안 된다는 점이다.파사드 — Auth::user() 는 실제로 __callStatic으로 뒤에서 인스턴스에 위임한다. IDE는 Auth 클래스에 user()가 없다고 본다Eloquent 매직 메서드 — User::where() 는 모델이 아니라 쿼리 빌더의 메서드다모델 속성 — $user->email 은 DB 컬럼이라 클래스에 프로퍼티 선언이 없다매크로 — 런타임에 등록되는 메서드ID..
