이번에 11월초 모니터 핫딜이 있어 구매하게 되었습니다.

 

기존엔 오디세이 G5 32인치 모니터를 사용했었습니다. 같은 G5라인을 사용해서 구매할때 크게 부담은 없었습니다.

(주사율은 업그레이드지만 그외에는 크게 업그레이드,다운그레이드 느낌은 아니었거든요)

 

예전에는 더블모니터를 사용했었는데 공간차지도 그렇고 모니터 하나로만 쓰게됐는데 

32인치 모니터는 화면은 크지만 작업할때 분할이 효율적이거나 그렇지는 않아서 와이드 모니터를 구입하게 되었습니다.

 

화면분할을 통해 작업을 많이 하시는 분들은 와이드 모니터를 추천합니다.

딱 반으로 나눴을때 비율이 만족스럽습니다.

 

 

우선 제품 스펙은 아래와 같습니다.

 

(출처 : 삼성 공식 홈페이지)

 

주사율도 좋고 응답속도도 좋습니다.

 

VA패널과 커브드라는 점이 가장 호불호가 갈릴만한 영역이라 고민이 될 부분이라고 생각합니다.

저는 기존에 32인치 오디세이 모니터를 쓰면서 만족했던 부분이라 크게 문제가 되진 않았습니다.

 

다만, 이정도 주사율에 IPS패널을 장착한 모니터면 가격이 더 상승하게 되기때문에 가격을 생각하게되면 VA패널도 저는 추천할만하다고 생각합니다.(VA패널만의 장점도 있구요)

 

커브드 자체는 취향에따라 달라질텐데 적어도 와이드 모티너라면 커브드의 장점이 확실히 살아난다고 느꼈습니다.

 

스탠드는 솔직히 구린편이라 기존에사 용하던 모니터암을 사용하고있습니다.

 

32인치 쓸때보다 장점은 다른것보다도 21:9 비율 영상을 시청할때 같습니다

 

 

마지막으로 게이밍 모니터인만큼 게임할때 역시 너무 만족스러웠습니다.

제가 하는 피파온라인의경우 압도적으로 게임이 유리해진다 이런건 아니지만, 그래도 게임하는 재미가 늘었습니다.

 

 

총평

- 행사 가격기준 가격대비 최고의 선택! 그러나 행사가격이 아니라면 고민해볼만한 가격

즐겨하는 게임이 피파온라인이다보니 자연스럽게 패드를 사게 됐었습니다.

지금은 가끔 심심할 때를 제외하면 키보드를 쓰고있지만....

 

그래도 첫 패드 구매라 설렜습니다.

유선식입니다.

 

 

 

패드로 게임을 많이 해보진 않아서 비교는 불가능하지만

적어도 키가 안눌린다거나 쓰는데 불편함은 없었습니다.

이 제품 또한 가격대를 생각하면 

 

저처럼 패드를 처음 접하시는 분들은 패드 체험용으로 괜찮아 보입니다.

 

온라인 게임을 하다보면 디스코드 등 커뮤니케이션을 하면서 게임하는 경우가 생깁니다.

 

학생때 PC방에서 헤드셋을 써본적은 있지만 

직접 구매를 한건 처음 인듯 하네요

 

올해 6월에 구매해서 쓰고있습니다.


사실 헤드셋을 이것저것 써본건 아니고 첫구매라 비교는 불가능하지만

가격을 생각하면 정말 성능 좋았습니다.

 

마이크 위치가 조절이 되니까 좋더라구요

다만 여름에 쓰기엔 많이 더웠습니다..

 

실물은 요렇게 생겼습니다.

 

개발을 하다보면 프로그램이 종료가 안되는 경우가 간혹 있습니다.

 

그럴때 해결방법은 pid를 찾아서 taskkill로 죽여주면 되는데요

 

첫번째 방법은 작업관리자에서 PID 옵션을 켜주고 찾은다음 cmd에서 해당 명령을 실행해주면 됩니다.

 

1. 작업관리자에서 PID 체크

 

 

2. 종료시킬 프로그램 PID 확인 후 taskkill 명령 수행

taskkill /f /t /pid 21884

 

두번째 방법은 매번 찾기 귀찮으니 윈도우 배치파일로 만드는것입니다.

아래 코드를 복사해서 프로그램 이름만 바꿔서 "원하는파일명.bat"으로 저장해서 사용하면 됩니다.

 

@echo off



FOR  /F  "tokens=2  delims= "  %%a  IN  ('tasklist ^| findstr putty.exe')  DO  set  result=%%a

taskkill /f /t /pid %result%

echo %result%



timeout /t 5

 

만든 배치파일을 더블클릭하면 해당 프로그램의 PID를 찾아서 종료한것을 확인할 수 있습니다.

 

'언어 > Tool' 카테고리의 다른 글

IntelliJ 설치  (0) 2020.03.26
[이클립스] 폰트 변경  (2) 2017.04.19
[이클립스] 개발환경 구축(설치)  (4) 2017.04.19

1. IntelliJ ?

 

  

IntelliJ IDEA는 JetBrains사에서 제작한 상용 통합 개발 환경으로 줄여서 IntelliJ 혹은 IDEA로도 부릅니다.


JVM언어인 JAVA, Kotlin, Scala, Grovy 등의 언어와 JavaScript, TypeScript등 스크립트 언어들을 사용가능합니다.



2. 다운로드

 

1) IntelliJ IDEA 공식 홈페이지

https://www.jetbrains.com/ko-kr/idea/



저는 코틀린 개발을 위해 무료 버전인 커뮤니티 버전을 설치했습니다.






3. 설치



설치 경로를 지정한 후 넘어갑니다.


1GB정도 공간이 필요 합니다.



바탕화면에 아이콘을 추가하는등의 설치 옵션을 선택하고 넘어갑니다.



시작메뉴에 폴더 이름을 정하고 인스톨 버튼을 클릭하면 설치가 시작됩니다.




설치가 완료된 화면입니다. 


체크 박스를 선택하면 바로 실행이됩니다.





4. 실행 및 프로젝트 생성


IDEA 설정을 임포트 할 수 있습니다.


전 최초 사용이기때문에 임포트 하지않고 진행 했습니다.



정책 동의를 하고 넘어갑니다.



테마를 선택하고 다음으로 넘어갑니다.



기본 플러그인 설정 화면입니다.


사용하지 않을 플러그인은 제거하고 진행 가능합니다.



추가 플러그인을 받을 수 있는 화면입니다.


필요한 플러그인 설치 후 진행 가능합니다.



기본적인 세팅이 끝나고나면 프로젝트를 생성 및 임포트 할 수 있습니다.



어떤 프로젝트로 생성할지 선택하는 화면입니다.




프로젝트 이름을 입력하는 화면입니다.



테스트 프로젝트를 생성한 화면입니다.





출처 및 참고 


IntelliJ 로고

IntelliJ 공식 홈페이지(https://www.jetbrains.com/ko-kr/)





'언어 > Tool' 카테고리의 다른 글

(윈도우)프로그램 강제로 종료하는 방법  (0) 2021.11.06
[이클립스] 폰트 변경  (2) 2017.04.19
[이클립스] 개발환경 구축(설치)  (4) 2017.04.19
1. 코틀린(Kotlin)?
 

  

코틀린은 Andorid Studio 개발사인 Jet Brains에서 2011년에 공개한 언어로 Google I/O 2017 에서 안드로이드의 공식 개발 언어로 채택되며 계속해서 성장하고 있는 언어입니다.



2. 코틀린 사용 범위

 

1) 안드로이드 개발

2) 서버개발

코틀린 공부 전까지는 안드로이드 개발을 위해서만 사용하는 줄 알았으나 서버사이드 개발에서도 사용합니다.




3. 코틀린의 장점


1) 무료 오픈 소스

코틀린 언어와 컴파일러 라이브러리 및 코틀린과 관련된 도구는 모두 오픈소스이며 어떠한 목적에도 무료료 사용 가능합니다.


2) 정적 타입 지정언어

코틀린 컴파일러가 문백으로 타입을 자동으로 유추하기때문에 변수 선언 시 모든 변수의 타입을 명시할 필요가 없습니다. 


fun main(args: Array<String>) { val test =3 println("test >> "+test) println("test type >> "+ test.javaClass.name) }



3) 함수형 프로그래밍 & 객체지향 프로그래밍


코틀린은 자바처럼 객체지향 언어인 동시에 함수형 프로그래밍의 장점을 채택하는 언어입니다.


함수를 인자로 전달 한다던가 함수에서 새로운 함수를 만들어서 반환하는 등 함수형 프로그래밍의 장점을 활용 할 수 있습니다.



출처 및 참고 


코틀린 로고 

https://play.kotlinlang.org/?_ga=2.60276845.192411083.1583667055-667909187.1583667055#eyJ2ZXJzaW9uIjoiMS4zLjcwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsImpzQ29kZSI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLyoqXG4gKiBZb3UgY2FuIGVkaXQsIHJ1biwgYW5kIHNoYXJlIHRoaXMgY29kZS4gXG4gKiBwbGF5LmtvdGxpbmxhbmcub3JnIFxuICovXG5cbmZ1biBtYWluKCkge1xuICAgIHByaW50bG4oXCJIZWxsbywgd29ybGQhISFcIilcbn0ifQ==


참고

Kotlin IN ACTION





블라디보스톡 3박4일 - 먹거리


2019년 11월 22일 부터 25일까지 


러시아 블라디보스톡 여행을 다녀왔습니다.


상세한 계획을 짜고 다녀온건 아니지만,


이번 포스팅에서는 먹거리에 대해 포스팅 하려고합니다.


준비할 사항과 관광지는 아래 포스팅을 참고해주세요.


블라디보스톡 3박4일 - 여행준비 & 후기


블라디보스톡 3박4일 - 관광지





1. 수프라 레스토랑


수프라는 우리나라 사람들에게 가장 인기있는 식당이 아닐까 싶습니다. 


근데 생각보다 현지인분들도 많이 오는 식당이었습니다.


해양공원 바로 옆에 있습니다.



정면에서 본 수프라 입니다.



1) 보즈바쉬

양고기, 고수, 토마토 등이 들어있는 수프입니다. 



2) 샤슬릭

러시아 전통 요리 샤슬릭입니다. 양갈비, 돼지고기, 닭 선택 가능합니다.



3) 하차푸리

계란이랑 치즈랑 섞어서 먹는 빵입니다.



4) 힝칼리

러시아식 만두로 종류가 많습니다. 저는 쉬림프로 골라서 시켜먹었습니다.



5) 기타

한국에서 먹어보지 못한 맥주를 먹고싶어서 시켜먹었습니다.



저희 테이블 담당하던 직원분 너무 친절해서 사진까지 찍었습니다!



서비스도 좋고 분위기도 좋은 식당이었습니다. 고수를 싫어하시면 주문하실 때 말씀하시면 됩니다. 한국어 메뉴판도 있어서 주문하기 수월했습니다.


저는 고수를 좋아하는 편이 아니지만 그래도 괜찮게 먹었습니다.


전체적인 평점 : ★ ★ ★ ★ ☆


2. 해적커피


아르바트 거리에 있는 카페입니다.



해적커피 정면 사진입니다.




아메리카노를 마셨는데 맛은 나쁘지 않았습니다.


팁 문화가 있는건 알았지만 계산할때 말없이 팁을 붙여서 계산한건 좀 기분이 좋지는 않았습니다.


전체적인 평점 : ★ ★ ★  ☆


3. 오 마이 크랩


오 마이 크랩 역시 아르바트 거리에 있습니다. 해양 공원이랑도 가까워요!




잘 안보이지만 빨간색 네모친 곳이 오마이크랩입니다.



1) 구운 집게발 + 구운 야채 샐러드


킹크랩을 먹으러 갔으나, 다 소진돼서 아쉬운대로 집게발이라도 먹었습니다.


구운 야채 샐러드는 조금 짰지만 맛있었습니다.



2) 추르킨에서 온 남자 버거


트리플 앱에서 후기를 보고 가서 먹었는데 너무 맛있었습니다.




킹크랩을 먹지 못한건 너무 아쉬웠지만, 너무 맛있었어요


특히 가레스 베일 닮으신 직원분 너무 친절했습니다.


전체적인 평점 : ★ ★ ★ ★ 


4. 스보이


가장 맛있었던 식당이었습니다. 


보르쉬를 먹으러 갔었는데 가리비, 파스타도 너무 맛있었습니다.


수프라와 가까운 거리에 있습니다.



스보이 정면 사진입니다.



1) 보르쉬


약간 김치찌개 맛이 나는 것 같으면서도 맛있었습니다.



2) 크리소스를 얹은 가리비 + 해산물 파스타


둘 다 너무 맛있었어요



3) 후식 나폴레옹 + 수제 아이스크림


왼쪽이 나폴레옹, 오른쪽이 수제 아이스크림 입니다.


나폴레옹이 너무 맛있었어요



한국어 메뉴판도 있고, 직원분이 한국어로 "맛있게드세요"라고 인사도 해주셨습니다.


맛도 최고, 서비스도 최고였습니다.


전체적인 평점 : ★ ★ ★  


5.기타


1) 곰새우


한국인 사장님이 운영하시는 기념품 숍 입니다. 


아르바트 거리를 걷다보면 현지인분이 빨간색 전단지를 주는데 이곳의 전단지입니다.



이곳에서 곰새우를 포장해서 먹었습니다.


조리까지 해주셨습니다.


매운게 너무 먹고싶어서 진라면도 같이 샀습니다.



완전 꽉차있는건 아니었지만 곰새우 속에 알이 많았습니다.



전체적인 평점 : ★ ★ ★  


2) 도너 케밥


길거리 음식을 안먹어보면 후회가 남을 것 같아서 케밥을 사먹었습니다.



저는 치킨 케밥을 사먹었습니다.



양이 생각보다 많았습니다. 맛도 괜찮았어요


전체적인 평점 : ★ ★ ★  ☆




'ETC > 여행' 카테고리의 다른 글

블라디보스톡 3박4일 - 관광지  (0) 2019.11.28
블라디보스톡 3박4일 - 여행준비 & 후기  (0) 2019.11.26
오사카 여행 4일차  (0) 2018.12.24
오사카 여행 3일차  (1) 2018.12.23
오사카 여행 2일차  (0) 2018.12.19

블라디보스톡 3박4일 - 관광지


2019년 11월 22일 부터 25일까지 


러시아 블라디보스톡 여행을 다녀왔습니다.


상세한 계획을 짜고 다녀온건 아니지만,


이번 포스팅에서는 관광지에 대해 포스팅 하려고합니다.


준비할 사항과 먹거리는 아래 포스팅을 참고해주세요.


블라디보스톡 3박4일 - 여행준비&후기


블라디보스톡 3박4일 - 먹거리





1. 일반적인 거리 + 아르바트 거리


처음에 도착했을때는 도시에 눈들이 녹고있었습니다.





거리에 삼성 매장이 있길래 찍어봤습니다. 되게 뿌듯하더라구요!



아르바트 거리에 있는 피아노 의자입니다. 



눈이 오니까 분위기가 확 달라지는 것 같았습니다.



전체적인 느낌 : 도시가 전체적으로 깔끔하고 가까운 유럽이라는 말이 실감나는 느낌이었습니다.


전체적인 평점 : ★ ★ ★ ★ ☆


2. 혁명광장


블라디보스톡의 핵심 랜드마크 혁명 광장입니다.






혁명광장에 있는 포크롭스키 성당입니다. 여전히 공사중이었습니다.



3. 해양공원


바다를 볼 수있는 공원입니다. 관광객 뿐만 아니라 현지인분들도 많았습니다.





말을 태워주기도 하는 것 같습니다.



퀵보드를 타는 아이들이 많았습니다.



전체적인 평점 : ★ ★ ★ ★ ☆


4. 독수리 전망대


블라디 보스톡 도시를 한눈에 볼 수 있는 독수리 전망대입니다. 


가는길이 오르막길의 연속이기때문에 택시타고 가시는걸 추천합니다.

(저는 두번이나 걸어갔습니다.)


블라디스톡이 항구도시이기도 하고, 전망대의 경우 높은 지대에 있기때문에 안개가 많이 껴있었습니다. 날씨 좋은 오후에 가시는걸 추천드립니다.



인생샷을 찍기도 하는 장소로 유명했었는데 날씨가 너무 흐려서 사진이 어둡게 나왔습니다.



정상에 있는 동상입니다.



독수리 전망대 가는 도중에 붙어있는 "안녕" 강아지 스티커입니다. 


QR 코드를 찍어보니 인스타그램으로 연결됐습니다.



전체적인 평점 : ★ ★ ★ ☆ 


5.기타


1) 기념품 숍


한국인 사장님이 운영하시는 기념품 숍 입니다. 


츄다데이도 가보고 다른 기념품 숍도 가봤는데 무엇보다 사장님이 너무 친절하시고 다른 제품은 몰라도 당근크림은 이곳이 가장 쌉니다!


어떤 상품이 잘 팔리는지 물어보기도 너무 편해서 곰새우 포장할때까지 세번이나 방문 했습니다.


짐 보관도 무료로 해주시고 여성분들의 경우 캐리어도 들어주시고 너무 친절하셨습니다!


아르바트 거리를 걷다보면 현지인분이 빨간색 전단지를 주는데 이곳의 전단지입니다.




한국인 사장님의 가게여서 그런지 대통령님들의 마트료시카도 있었습니다.



전체적인 평점 : ★ ★ ★  


2) 시가라운지


흡연자분들의 경우 시가라운지 방문도 추천드립니다. 아르바트거리에 있기때문에 가깝기도 하고 담배종류가 꽤 많았습니다.



전체적인 평점 : ★ ★ ★  ☆


3) 쿠쿠 클럽


비가 너무 많이 오는 관계로 사진은 찍지 못했는데 만족스러웠습니다.


입장료 500루블 잭콕 한잔 450루블을 지불했습니다.


생각보다 아는 노래도 꽤 많이 나왔고, 현지인 분들의 분위기는 무리끼리 와서 무리끼리 노는 분위기였습니다.


외국인에 대한 큰 관심은 없는듯 하지만 생각보다 많은 분들과 얘기를 나눠 본 것 같습니다.



전체적인 평점 : ★ ★ ★  ☆




'ETC > 여행' 카테고리의 다른 글

블라디보스톡 3박4일 - 먹거리  (0) 2019.12.02
블라디보스톡 3박4일 - 여행준비 & 후기  (0) 2019.11.26
오사카 여행 4일차  (0) 2018.12.24
오사카 여행 3일차  (1) 2018.12.23
오사카 여행 2일차  (0) 2018.12.19

블라디보스톡 3박4일 후기


2019년 11월 22일 부터 25일까지 


러시아 블라디보스톡 여행을 다녀왔습니다.


상세한 계획을 짜고 다녀온건 아니지만,


가기전에 준비한 내용과 

이용 후 느낀점을 포스팅 하려고합니다.


관광지와 먹거리는 아래 포스팅을 참고해주세요


블라디보스톡 3박4일 - 관광지


블라디보스톡 3박4일 - 먹거리



0. 러시아


1) 팁문화


러시아는 10%의 팁문화가 있습니다. 식당에 따라서 5%, 10%, 20% 주고싶은만큼 달라는 식당도 있었습니다.


간혹 계산할 때 팁 10%를 붙여서 계산하는 곳도 있었습니다.


2) 강력한 금연·금주 법


러시아는 금연, 금주에 강력한 법을 시행하고 있는 나라라고 합니다.


실내에서는 대부분이 금연구역입니다. 객실 예약시 참고 하세요


담배는 쓰레기통이 있는곳이면 필 수 있습니다. 생각보다 거리에 쓰레기통이 많기 때문에 정해진 흡연구역에서 흡연하시면 될 것 같습니다.


은 펍이 아닌이상 현지시간으로 오후 10까지만 판매 합니다. 


숙소에서 드실 술은 미리 장보시는걸 추천합니다.


3) 주의사항


러시아의 수돗물에는 석회물질이 많이 포함되어있다고 합니다. 양치할때는 생수로 입을 한번 더 행궈주세요


사진찍어 준다고 하는 분들은 돈을 받는 경우가 대부분이기 때문에 돈을 지불할 경우가 아니라면 거절하셔야 합니다.


1. 항공편


항공편은 스카이스캐너 어플을 통해 제주항공을 이용했습니다. 비용은 왕복 300,000원 시간은 2시간 반정도 걸린 것 같습니다.


한국과 1시간 시차가 있습니다.




현지항공 S7, 아에로플로트 등을 이용하시면 비용과 시간을 절약 하실수도 있습니다.


전체적인 평점 : ★ ★ ★ ★ ☆


2. 숙소


숙소는 아고다를 통해 젬추지나 호텔을 이용했습니다.

카드로 결제해서 3박 4일 144,000원정도에 이용했습니다.


찾아볼때 랜드마크처럼 찾아가기 쉬울 것 같아서 예약했지만, 아르바트 거리와 거리가 좀 있었습니다.


숙소 후기를 찾아봤을때와 같이 엘리베이터가 좀 흔들리고 따로 슬리퍼를 주지 않기때문에 다이소같은 곳에서 슬리퍼를 사가시면 좋을 것 같습니다.


조식은 맛이 없다는 평이 많았는데 저는 개인적으로 맛있게 먹었습니다.



중심가는 아르바트 거리이기 때문에 아르바트 거리 쪽에 숙소 잡는것을 추천합니다.


전체적인 평점 : ★ ★ ★ ☆ ☆


3. 로밍


작년에 오사카 여행은 포켓 와이파이를 이용했는데 이번에는 MegaFON 유심을 이용했습니다. 비용은 8,900원정도 였습니다.


3박 4일 동안 만족스럽게 사용했습니다.


여행 후기들을 봤을때 3시 이후에는 영업하지 않을수도 있다는 평을 보고 한국에서 사갔습니다.

(현지시간 4시반에 도착했는데 영업은 하고있었습니다.)


현지에서 구매가 가능하지만, 안전하게 한국에서 사가는 걸 추천합니다! 


전체적인 평점 : ★ ★ ★ ★ ★


4. 교통


블라디보스톡 공항은 위쪽에 있고 중심가는 아래쪽에 있습니다.


공항에서 중심가 까지 이동하는 방법은 공항철도, 버스, 택시 등이 있습니다.


택시는 막심이나 얀덱스 어플을 이용한다고 들었는데 이용 해보지는 않았습니다.


공항  중심가로 이동할때에는 공항철도

중심가  공항으로 이동할때에는 버스(107번)를 이용했습니다.


공항철도는 250루블 버스는 300루블(200루블+캐리어 100루블)


공항철도가 250루블로 가장 저렴하고 빨랐습니다.


공항철도의 경우 하루 5번정도 운행하기때문에 시간표를 확인하고 시간대가 맞을경우에 이용하시면 될 것 같습니다.


공항철도는 열차가 이동하는 중간에 표 검사를 진행합니다. 잃어버리지 않게 주의하세요!



전체적인 평점 : ★ ★ ★ ★ ☆


5. 유용한 앱


1) 트리플

구체적인 계획을 세우지 않고 갔기때문에 트리플 앱을 많이 참고해서 여행을 즐겼습니다.


오프라인 가이드도 다운 가능하기때문에 비행기 안에서 보기도 좋았습니다.


주로 여행 일정, 현지 식당 후기 등 참고하기 좋았습니다.


2) 구글맵(필수)

해외여행은 역시 구글맵이 절반인 것 같습니다. 


전체적인 평점 : ★ ★ ★ ★ ★



6. 전체적인 소감


보통 블라디보스톡을 소개할 때 "가장 가까운 유럽"으로 소개하곤 합니다.


유럽을 가보지 않은 분들에게는 강력히 추천하는 여행지입니다만 이미 유럽을 다녀오신분들이 유럽을 기대하고 간다면 조금 실망할 수도 있습니다.


가장 남쪽에 있는 도시이기 때문에 11월말임에도 불구하고 생각보다 춥지는 않았습니다.


인종차별에 대한 걱정을 많이했는데, 오히려 열차표를 잃어버릴뻔 한걸 러시아 현지분이 주워주시기도 하고 최대한 도와주려고 하는 분들이 많았습니다.


현지인분들이 영어를 잘 못한다는 얘기에 걱정이 많았는데 식당, 관광지에서는 의사소통에 전혀 문제가 없었고, 심지어 클럽에서도 영어 잘하는분들이 많았습니다.




'ETC > 여행' 카테고리의 다른 글

블라디보스톡 3박4일 - 먹거리  (0) 2019.12.02
블라디보스톡 3박4일 - 관광지  (0) 2019.11.28
오사카 여행 4일차  (0) 2018.12.24
오사카 여행 3일차  (1) 2018.12.23
오사카 여행 2일차  (0) 2018.12.19

리덕스를 사용한 상태 관리


왜 리덕스를 사용하는가?


컴포넌트를 프리젠테이셔널 컴포넌트컨테이너 컴포넌트로 나눠서 사용하면 사용자가 이용할 유저 인터페이스와 상태를 다루는 데이터가 분리되어 프로젝트를 이해하기 쉽고 컴포넌트 재사용률도 높습니다.


1) 프리젠테이셔널 컴포넌트
오직 뷰만 담당하는 컴포넌트로 UI 관련된 state외에는 state는 존재하면 안되며, props로만 데이터를 처리합니다.

2) 컨테이너 컴포넌트
프리젠테이셔널 컴포넌트들과 컨테이너 컴포넌트들의 관리를 담당하는 컴포넌트로 프리젠테이셔널 컴포넌트와 반대로 스타일은 존재하면 안됩니다.

리덕스

리덕스의 개념적인 부분은 아래 포스팅을 참고해주세요


예제


0) react-redux 라이브러리 설치

yarn을 사용하시는 분들은 yarn add react-redux
npm을 사용하시는 분들은 npm install react-redux로 설치 가능합니다.

1) 작업 디렉토리 생성

/actions : 액션타입, 액션 생성자 파일 
/components : 프리젠테이셔널 컴포넌트
/containers : 컨테이너 컴포넌트
/reducers : 스토어의 기본 상태값, 리듀서 파일
/lib : 일부 컴포넌트에서 함꼐 사용되는 파일

2) 프리젠테이셔널 컴포넌트 생성

좌클릭 시 증가, 우클릭 시 감소, 더블클릭 시 색 변경함수를 props로 전달받습니다.

/components/Counter.js

import React from 'react';
import PropTypes from 'prop-types';
import './Counter.css';

const Counter=({number, color, onIncrement, onDecrement, onSetColor})=>{
return (
<div
className = "Counter"
onClick={onIncrement}
onContextMenu={(e)=>{
e.preventDefault();
onDecrement();
}}
onDoubleClick={onSetColor}
style={{
backgroundColor : color
}}
>
{number}
</div>
);
};

Counter.propTypes ={
number : PropTypes.number,
color : PropTypes.string,
onIncrement : PropTypes.func,
onDecrement : PropTypes.func,
onSetColor : PropTypes.func
}
Counter.defaultProps ={
number : 0,
color : 'black',
onIncrement : ()=>console.warn('onIncrement not defined'),
onDecrement : ()=>console.warn('onDecrement not defined'),
onSetColor : ()=>console.warn('onSetColor not defined')
}

export default Counter;

/components/Counter.css

.Counter{
width: 10rem;
height: 10rem;
display: flex;
align-items: center;
justify-content: center;
margin:1rem;
color:white;
font-size:3rem;
border-radius:100%;
cursor:pointer;
user-select: none;
transition: background-color 0.75s;
}

3) 액션 생성

증가, 감소, 색상 변경 액션을 정의합니다.

/actions/ActionTypes.js

export const INCREMENT = 'INCREMENT';
export const DECREMENT = 'DECREMENT';
export const SET_COLOR = 'SET_COLOR';

정의한 액션을 만들어주는 함수를 만들어 줍니다.

/actions/index.js

import * as types from './ActionTypes';

export const increment = () => ({
type : types.INCREMENT
});
export const decrement = () => ({
type : types.DECREMENT
});
export const setColor = (color) => ({
type : types.SET_COLOR,
color
});


4) 리듀서 생성

액션의 type에 따라 변화를 일으키는 함수입니다. 최초 변화를 일으키기전에 가지고 있어야 하는 초기 상태(initai를 정의 해야합니다.

/reducers/index.js

import * as types from '../actions/ActionTypes';

const initialState = {
color : 'black'
, number : 0
};

function counter (state=initialState, action){
switch(action.type){
case types.INCREMENT:
return{
...state,
number:state.number+1
};
case types.DECREMENT:
return{
...state,
number:state.number-1
};
case types.SET_COLOR:
return{
...state,
color : action.color
};
default:
return state;
}
}

export default counter;



5) 스토어 생성


리덕스에서 가장 핵심적인 인스턴스로 현재 상태가 내장되어 있고, 상태를 업데이트 할 떄마다 구독중인 함수를 호출합니다.


리덕스에서 createStore를 불러와서 리듀서를 파라미터로 넣어 스토어를 생성합니다.


/src/index.js


import React from 'react';
import ReactDOM from 'react-dom';
import App from './containers/App';
import './index.css';

import {createStore} from 'redux';
import reducers from './reducers';

const store = createStore(reducers);

ReactDOM.render(
<App />
,document.getElementById('root')
);




6) Provider 컴포넌트로 리액트 앱에 store연동


Provider는 react-redux라이브러리에 내장된 리액트 애플리케이션에 손쉽게 스토어를 연동할 수 있도록 도와주는 컴포넌트 입니다.


Provider를 불러와서 최상위 컴포넌트를 감싸줍니다.


import {Provider} from 'react-redux';

ReactDOM.render(
<Provider store={store}>
<App />
</Provider>
,document.getElementById('root')
);




7) 컨테이너 컴포넌트 생성


react-redux의 connect 함수를 사용하여 스토어에 연결합니다.


connect([mapStateToProps], [mapDispatchToProps], [mergeProps])


mapStateToProps : store.getState() 결과 값인 state를 파라미터로 받아서 props로 사용할 객체를 반환

mapDispatchToProps : dispatch를 파라미터로 받아 액션을 디스패치하는 함수들을 객체 안에 넣어서 반환

mergeProps : state와 dispatch가 동시에 필요한 함수를 props로 전달해야할 때 사용(일반적으로 잘 사용하지는 않음)


/containers/CounterContainer.js


import Counter from '../components/Counter';
import * as actions from '../actions';
import { connect } from 'react-redux';

// 13가지 색상 중 랜덤으로 선택하는 함수
export function getRandomColor() {
const colors = [
'#495057',
'#f03e3e',
'#d6336c',
'#ae3ec9',
'#7048e8',
'#4263eb',
'#1c7cd6',
'#1098ad',
'#0ca678',
'#37b24d',
'#74b816',
'#f59f00',
'#f76707'
];

// 0부터 12까지 랜덤 숫자
const random = Math.floor(Math.random() * 13);

// 랜덤 색상 반환
return colors[random];
}

// store 안의 state 값을 props로 연결
const mapStateToProps = (state) => ({
color: state.color,
number: state.number
});

/*
액션 생성 함수를 사용하여 액션을 생성하고,
해당 액션을 dispatch하는 함수를 만든 후, 이를 props로 연결
*/
const mapDispatchToProps = (dispatch) => ({
onIncrement: () => dispatch(actions.increment()),
onDecrement: () => dispatch(actions.decrement()),
onSetColor: () => {
const color = getRandomColor();
dispatch(actions.setColor(color));
}
});

// Counter 컴포넌트의 Container 컴포넌트
// Counter 컴포넌트를 애플리케이션의 데이터 레이어와 묶는 역할
const CounterContainer = connect(
mapStateToProps,
mapDispatchToProps
)(Counter);

export default CounterContainer;


실행 결과





참고 : 리액트를 다루는 기술(저:VELOPERT)



'언어 > ReactJS' 카테고리의 다른 글

[React] 리덕스 개념  (0) 2019.05.24
[React] 함수형 컴포넌트  (0) 2019.05.21
[React] 라이프 사이클 함수  (0) 2019.05.07
[React] 컴포넌트 반복  (0) 2019.05.05
[React] Ref  (0) 2019.05.02

+ Recent posts