집에 LG OLED TV가 있지만.. 쇼파에서 보는게 점점 귀찮아지고 있을때 쯤 눈에 들어온 게 빔프로젝터이다.
이전사용해봤던 제품은 대륙의 실수 라고 불렸던 가성비 빔프로젝터 GM60를 사용했었다.
(새제품 기준 약 9~10만원)
어디껀진 잘 모르겠지만 해상도도 800x480에 소음도 큰 제품을 몇번 써보지도 못하고 약 한달정도 사용하다가 중고나라로 보냈다. 이유는 생각보다 화질이 너무 구려서.. 글씨가 자글자글해서 눈나빠지겠다는 생각이 들었기 때문이다.
고로 이번에는 적어도 FHD(1920x1080) 정도 되는 해상도를 구입하고자 이번 제품을 고르게 되었다.
HD(1280x720)인 PH550 을 고려했었으나 기왕 사는김에 좋은제품 써보자.. 라는마음에 약 20만원을 더주고 구매했다. LG TV대용처럼 LG전용 WebOS 3.5 를 사용할 수 있다는 것도 무척 컸다. (넷플릭스, 티빙, 푹, 유투브 등 사용 가능한 점)
위메프에서 쿠폰 이것저것 받고 해서 약 59만원에 구입할 수 있었다.
결론은 매우만족이다.ㅎㅎ
LG공식 홈페이지에서 제공하는 스펙은
제품 리뷰에 앞서 안시가 무엇인지 검색해서 찾아보았다. (참고)
◐루멘 (lumen):광원즉 전구나 LED 또는 촛불 등의 밝기를 나타내는 수치, 단위는 lm ◎'루멘'은 단순히 램프 자체의 밝기만 나타낼뿐이고, 실제 멀리 떨어진 스크린에 투사 되는 밝기를 나타 낼수 없습니다. 그래서 '안시루멘' 이라는 단위가 만들어 집니다.
◐안시루멘 (ANSI lumen): 보통줄여서 '안시'라고 부르고 있음. 스크린을 9개 면적으로 나누고, 실제 투사된 밝기의 평균을 내어 산출합니다 (스크린의 크기가 감안된 실제 빔의 밝기) ◎1 안시루멘은 대략 1개 촛불 밝기 ◎좁은 실내는 400안시루멘 /일반 가정은 600 ~ 1,000정도 /넓은 강당은 2,000 안시가 적당. ◐쇼핑몰 같은데서 소형 빔의 밝기를 조금이라도 높게 표시 하려고 '루멘'으로 적어 놓는곳이 있으며, 이경우 완전히 다른 단위이고, 수치도 높게 나타나므로 일종의 속임수라고 할수 있으니 햇갈리지 말아야 합니다.
포장은 뾱뾱이가 정말 많이 싸져있어서 파손이란 있을수 없어 보였음
구매처 리뷰랑 QNA를 보면 정품라벨이 붙여져 있지 않다는 언급이 있어 혹시나 했는데 붙여져 있진않았다.
중고나라에서 미개봉 파는사람중 LG정품라벨이 붙여져 있는 사진을 보긴 했다. 씰은 확실하게 있긴 하다.
LG 정품라벨은 없지만 박스 뒷면에 제조년월이 2019년 9월이라는 점이 매우 마음에 들었다..ㅎㅎ 제일 최근제품이라니..
제품을 언박싱 하고 구성품을 살펴보면 아래와 같이 리모컨, 건전지, 제품보증서와 설명서, 충전잭, 충전기, 제품 으로 구성되어 있다.
제품의 뒷 단자와 리모컨이다.
단자를 살펴보면 일반 LG TV 단자와 비슷한 느낌입니다. 특이한 점이 있다면 usb type-C 가 있다는것?..
LAN포트는 기본적으로 와이파이 연결을 지원하기 때문에 잘 안쓰는것같고,
여기서 사용할건 충전선 밖에 안보입니다. ㅋㅋ 가끔 다운받은 영상 보기 위한 USB정도..
리모컨은 그냥 LG TV와 비슷한 리모컨인것 같습니다. 요즘 나오는 매직리모컨이 훨씬 편하긴 한데...ㅎㅎ
제품 초기셋팅 화면 ㅎㅎ
무슨 이용약관이 있는데.. 잘 몰라서 나중에 동의하기...ㅋ
이게.. 셋톱박스로 기본설정을 해놨는데.. 매번 프로젝트 킬때마다 지지직 화면이라서 좀 짜증난다..
빠른 디버깅을 위해서 단축키를 익혀놓으면 편하다. 하지만 하나하나 찾아서 하기는 귀찮으니, 아래 처럼key promoter플러그인을 설치하자.
설치하면내가 클릭한 기능의 단축키를 바로 보여준다.
단축키를 확인 한 후, 다음부터는 단축키로 명령을 실행하자.
Break Point
습관적으로run을 실행하지만, 로컬 개발에서는 웬만하면debug로 실행하자. 어플리케이션 구동 중에 Break Point를 사용하려면debug여야만 한다.
코드 좌측의 여백을 우클릭하면Show Line Numbers가 나오는데 이를 체크하면 아래처럼 코드 라인에 숫자가 부여된다. 에러가 발생했을 때, 몇 번째 Line에서 발생했는지log에 표시되는데, 저 표시가 없으면 개발자가 보기 힘드니미리 체크해놓자.
라인 넘버와 코드 사이의 여백을 클릭하면 아래처럼 그 Line에 Break Point가 표시 된다.
어플리케이션이debug모드일때, 해당 Break Point가 지정된 라인이 실행되는 시점에서 멈추게 된다. 이때 여러 값을 확인하고, 명령어를 실행하면서 디버깅을 시작하면 된다. 추가로 여기서Break Point를 우클릭하면조건으로 break를 걸 수가 있다. (굉장히 중요함)
(productId가 2L일때만 위 point에서 break가 되도록 지정)
특히나for,while등의반복적인 행위속에, 특정값이 들어올때만 break를 하고 싶은 때가 있다. 이때 정말 유용하게 사용할 수 있는 기능이다.
디버깅 버튼
위 내용을 통해 break를 걸게 되면, 아래처럼 여러 버튼을 사용할 수 있다.
(break가 된 상태에서만 사용 가능하다)
resume
단축키 :option+command+r
기능 :다음 break point로 이동
첫번째 break point에서
다음 break point로 이동한다.
이클립스의 resume(F8)과 동일한 기능이다.
step 버튼들은 왼쪽에서 오른쪽 순으로 하겠다.
step over
단축키 :F8
기능 : 현재 break 된 파일에서다음 라인 이동
break 걸린 라인을 전부 실행 후, 다음라인으로 이동한다.
이 기능을 몰라서 라인 하나하나에 전부 break를 걸었다면,F8을 사용하자.
step into
단축키 :F7
기능 : 현재 break 된 라인에서실행하고 있는 라인으로 이동한다.
break 걸린 라인에서 다음 실행될 코드는PurchaseOrder.createOrder다. 이때F7을 누르면
이렇게createOrder로 이동한다.
Force step into
단축키 :option+shift+F7
기능 : 다음 실행되는 라인으로 이동하나,step into와 달리Stepping을 무시하고 진행한다.
예를 들어,command+shift+a->stepping으로 설정창을 오픈후,
아래처럼skip simple getters를체크하자.
이렇게 한 뒤,getter메소드를 호출하는 곳에 break point를 지정한 후,
번갈아가며 step into와 force step into를 입력해보자.
step into(F7)
이렇게 메소드 invoke 영역으로 바로 이동한다.
반면에
force step into(option+shift+F7)
설정과 무관하게getter메소드까지 이동한다. 굳이 확인이 불필요한getter,생성자등에 skip 옵션을 설정한 뒤,skip이 필요할때는 step into로,전부 확인이 필요하다면 force step into로 이동하면서 디버깅 하면 된다.
Step out
단축키 :shift+F8
기능 : 현재 break 된 라인에서호출한 곳으로 이동한다.
step into 로createOrder메소드로 이동 후,
step out의 단축키인shift+F8을 입력하면,
메소드를 빠져나오게 된다.
보통은step into로파고들어간 라인을 빠져나오려할때많이 사용한다.
Drop Frame
단축키 : 없음
기능 :call stack을 거슬러 올라간다.
이것만 보면 step out과 별차이 없어 보이는데, 큰 차이점은 step out은 해당 라인이실행된 후 돌아가지만, drop frame은 해당 라인이실행되기 전에돌아간다.
Run to Cursor
단축키 :option+F9
기능 : 포커스 되어있는 라인으로 이동
위 처럼 break된 상태에서 다음에 실행될 코드 중,ApplicationTests의assert에 포커스를 두고,
(51라인에 포커스를 두었다.)
여기서option+F9를 누르면
이렇게 포커스가 지정된 51라인으로 break가 이동한다.
보통 break point로 지정하지 않고,단발성으로 break를 걸고 싶을때사용한다.
Watch와 Call Stack
break point와 디버그 버튼들로 break line을 사용하는 법과 이동하는 법을 배웠다. 이제는 break된 라인에서 어떤 일이 가능한지 확인하겠다.
Evaluate
break 된 상태에서 코드를 실행할 수 있는 방법은 2가지가 있다. Evaluate와Watch인데, 둘 중에 한가지만 사용하기 보다는 둘다 인지하고 그때그때 상황에 따라 사용하면 될것 같다.
디버깅 버튼들 가장 우측(run to cursor우측)에 계산기처럼 되어 있는 버튼이Evaluate버튼이다.
단축키 :option+F8
기능 : break 된 라인에서 사용가능한 모든 코드를 실행할 수 있음
Evaluate를 클릭하면 아래와 같이 팝업이 하나 등장하는데, 여기서 확인하고 싶은 코드를 입력하고 실행시키면 결과를 바로 확인할 수 있다.
모든 코드를 사용할수는 없다. 현재 라인에서 사용 가능한 코드(메소드 변수, 클래스 필드 등)만 사용할 수 있다.
Watch
바로 위Evaluate와 거의 동일한 기능이다. 사용법은 간단하다. 먼저 디버그 모드에서 아래처럼 watch를 활성화 시키자.
위 클릭을 따라가면 아래와 같은 형태가 된다.
우측 하단에 있는watches에서 우리는 마음껏 디버깅 코드를 작성해보면 된다. 예를 들어,purchaseOrderRepository.save기능이 잘 수행되었는지 확인하기 위해, 아래와 같이 확인해볼 수 있다.
해당 라인에서 가능한 모든 값, 메소드를 사용할 수 있다. 단순한 변수값부터 시작해서Autowired된 코드까지 전부 사용가능하다.
Evaluate vs Watch
2개의 기능은 동일하다. 단, Evaluate의 경우 코드를 계속수동 실행해야하지만, Watch의 경우 삭제하지 않는한, break line이 실행될때마다자동 실행된다. 값을 변경하는 코드를 watch에 등록했다면의도치 않게 값이 변경되서 다른 로직을 수행하게 되는 경우도 있으니 주의하자. 하지만 Watch는여러 디버깅 코드의 결과를 동시에 확인이 가능하고, 반복적으로 디버깅 코드를 사용할 필요 없어서 개인적으로 더 선호한다.
evaluate를 선호하는 분들의 경우단축키때문에 많이들 사용한다. watch는 기본 단축키가 없어 마우스를 사용하거나, 단축키를 추가해야하는데 evaluate는 option+F8으로 열고 바로 코드 작성 후 실행하면 되서 사용하기 편하다
Call Stack
디버깅 화면의 좌측 하단에는 해당break line에 오기까지의 call stack 이 출력된다. 이를 통해 이전에 어떤 값들이 넘어 온것인지, 이전에 다른 연산을 했으면 어떻게 값이 바뀔지를 모두 확인할 수 있다.
예를 들어,order메소드를 호출한test코드의 값을 확인하고 몇가지 연산식을 사용한다고 하자.
좌측 하단의 Call Stack에서 찾고자 하는 코드라인을 클릭하면 해당 라인으로 이동하게 된다.
이동후에는, break line에서 했던것 처럼Variables와Watches를 이용해 확인하고자 하는 값과 코드를 확인하면 된다.
특히 Spring과 같은프레임워크에서 어떻게 코드가 실행되고 값이 변경되는지 확인할때 굉장히 유용하게 사용된다.