[모집] 갤럭시 홈 미니 베타테스터 모집중

Posted by 돼지로운생활
2019. 8. 28. 15:40 이야기


 


유용한 IT정보 / 전자제품 리뷰
포털에서 MilkyeWay를 검색해주세요👍
유용한 정보였다면 ❤️ 클릭 부탁드려요 😄

이 댓글을 비밀 댓글로

라이젠에서 램오버클럭이 필수인 이유

Posted by 돼지로운생활
2019. 8. 13. 08:42 IT/컴퓨터

 요즘 3세대 라이젠이 출시되어 반응이 뜨겁다. 3700이 가성비가 넘사벽이라 정말 많은 인기를 얻고 있는데 내가 3연속으로 AMD의 CPU를 구매하게 될 줄은 정말 몰랐다.


 오늘은 1세대인 서밋릿지 시절부터 항상 이야기가 나오던 라이젠의 램오버클럭에 대해서 이야기를 해볼까 한다.


 라이젠 램오버클럭이 필수인 이유




1. 라이젠의 구조

 라이젠 같은 경우는 인텔과는 조금 다른 구조로 되어 있다. CCX(Core Complex)라는 구조로 이루어져 있는데, 잠깐 살펴보도록 하자. 

 하나의 CCX는 4개의 코어와 1개의 L3캐시라는 친구를 가지고 있다. 

(이런 용어 다 몰라도 된다. 그냥 있다는 말이 하고 싶은 것이다. 그니까 끝까지 읽어 달라... ㅠㅠ )


 이러한 CCX들이 모여서 우리가 흔히 아는 6코어, 8코어, 12코어의 제품이 나온 것이다. 

[ 어 잠깐? 아까 하나의 CCX는 4개의 코어라면서? 그럼 저 CCX들을 이어 붙여주는 뭔가가 있겠네? ] 라고 생각을 했다면 정답이다. AMD에서는 서로다른 CCX가 통신을 할 때 사용이 되는 통로를 만들어 놨다.

 바로 Infinity Fabric(이하 IF) 이라는 통로를 말이다. 이 IF들은 DRAM의 동작속도에 영향을 받게 된다. 여기가 우리가 라이젠을 사면 램오버클럭을 해야 하는 이유이다. 

※ IF의 대역폭은 L3에 비해 매우매우 낮다.


2. 대역폭의 차이

 L3캐시 메모리의 속도와 Infinity Fabric의 속도를 자동차에 비유를 해보면 L3캐시는 람보르기니이고 IF는 꽉 막힌 퇴근길 강변북로 한복판이다. 이러면 아무리 람보르기니가 빨라도 속도를 낼 수가 없다. 똑같은 이유 때문에 라이젠에서는 병목현상이 발생을 한다. IF의 대역폭이 너무 낮기 때문에 이를 어떻게든 올려주기 위해 램오버클럭을 진행한다. 


 램오버를 통해 속도가 올라가면 IF의 대역폭 또한 늘어난다. 3차선이었던 도로가 6차선이 되어 병목현상이 좀 줄어드는 것이다. 이러한 점 때문에 라이젠에서는 램오버클럭이 성능 향상 체감을 느끼기 가장 쉬운 방법이다. 


3. 과연 AMD가 CCX를 버릴까?

 지금까지의 글만 보면 굉장히 단점만 많은 구조같다는 생각이 든다. 하지만 AMD CPU의 가격을 보면 그 말이 안나온다. 3700X같은 CPU를 인텔에서 구매하려면 가격이 어느정도일까...? 물론 같은 스펙의 제품을 금액 상관 없이 본다고 하면 게임에서는 아직 인텔이 우위인게 사실이다. 하지만 우리는 금액에 함께 신경을 써야 하지 않나... 그렇기 때문에 이렇게 다중코어를 쉽게 찍어낼 수 있는 CCX구조가 나쁜 것은 아니다. 또한 공정이 올라갈 수록 대역폭 또한 개선이 되기 때문에, 시간이 지나고 본다면 좋은 방법일 수도 있다. 


4. 램오버 어려운가?

 어렵지 않다. 구글신에 검색 한 번만 해도 무수하게 많은 가이드가 나온다.  성능 향상을 느낄 수 있으니 꼭 해보도록 하자.


 나도 초보이고 모르는 부분이 많기 때문에 최대한 어렵지 않게 작성을 했다. 라이젠을 구매하는 여러분들이 어느정도의 정보는 가지고 구매를 해서 잘 사용하셨으면 좋겠다는 마음에 글을 작성한다. 


끝! 


유용한 IT정보 / 전자제품 리뷰
포털에서 MilkyeWay를 검색해주세요👍
유용한 정보였다면 ❤️ 클릭 부탁드려요 😄

이 댓글을 비밀 댓글로

초보자를 위한 모니터 고르는 꿀팁 - 2편

Posted by 돼지로운생활
2019. 8. 12. 09:33 IT/컴퓨터

 모니터 고르는 방법 1편에 이어서 2편을 적어보도록 하겠다.

아직 1편을 안보고 이 글을 보시는 분들께서는 1편을 보고 오시면 조금 더 도움이 될 것 같다.


1편 보러가기 ← 클릭! 


모니터 고르는 방법 2편




1. 주사율과 프레임

 흔히들 게이밍 모니터라고하면 144Hz 이상의 모니터를 이야기 한다. 그렇다면 여기서 144Hz의 의미를 알고 구매를 해야 나중에 다른 모니터를 사거나 더 좋은 모니터를 살 때에도 알맞은 모니터를 구매할 수 있을 것이다.


 - 주사율 : 모니터가 1초에 몇장의 장면(사진, 영상 등)을 보여줄 수 있는지 나타내는 수치. 단위는 Hz

 - 프레임 : 게임이나 영상에서 1초에 몇장의 장면을 보여줄 수 있는지를 나타내는 수치. 단위는 Hz


 이게 무슨말이냐 하면 예를 들면, 우리가 컴퓨터로 영화를 볼때 대부분 24프레임으로 인코딩이 되어있다. 여러분이 여기서 144Hz의 모니터를 사용해도 실제로 영상이 1초에 뿌릴 수 있는 영상은 24장뿐이 되지 않는다는 소리이다. 

 또한 게임을 하는데 그래픽카드의 성능이 딸려서 50프레임만 뽑아낼 수 있다면, 여러분은 144Hz의 모니터를 사는 의미가 없다. 모니터가 고주사율을 지원한다고 하여도 실제 처리되어 모니터로 넘어오는 신호가 주사율보다 낮다면 모니터도 그 신호에 맞게 영상을 뿌려준다. 


 

 그러니 자신의 본체 성능이 낮은데 모니터만 좋아야 아무 의미가 없다는 모니터 말이 하고 싶은 것이다... QHD 144Hz 모니터를 사용하고 이 성능을 다 뽑고 싶으시다면, 일반정인 컴퓨터 성능으로는 게임에서 절대로 그 프레임을 뽑아낼 수 없다. 그럼 영상에서 느끼면 되지 않냐?! 하실 수 있지만 우리가 보는 영상이 144Hz로 인코딩되어 오는건 없다. 좋은 화질을 느끼고 싶으시면 60Hz UHD모니터를 구매하시면 된다.



2. 논글레어 & 글레어 패널



 글레어 패널은 자신의 얼굴이 잘생겼다면 쓰시면 된다. 모니터에 비춰지는 자신의 얼굴이 너무 사랑스럽고 마음에 든다면 글레어 패널이 답이다. 하지만 그렇지 않다면 대부분의 경우에는 논글레어 패널이 좋다. 물론 각각 장단점이 있다.그냥 마음 편하게 논글레어 패널을 사용하는게 좋다.

 - 글레어 : 화면이 맑고 선명해보인다. 

 - 논글레어 : 반사가 없다.



3. HDR 



 HDR이라는 기술을 많이 들어봤을 것이다. 하지만 이게 뭔지 잘 모르는 사람들이 많다. 대부분 그냥 화질이 더 좋아보이는거 아니냐고 할 수 있는데 맞다. 모니터의 색감은 사람이 실제로 보는 색감과 100% 일치할 수 없기 때문에 어두운 부분은 더 어둡게 밝은 부분은 더 밝게 해서 사람이 보는 실제 색감과 최대한 비슷하게 만들어 내는게 바로 HDR이다.

 그렇다면 무조건 사면 좋을까? 아니다. HDR을 좀 느껴보고 싶다면 모니터의 밝기가 매우 매우 중요하다. 대부분의 모니터 밝기는 250cd가 많다. 아까 이야기할 때 어두운 부분은 더 어둡게 밝은 부분은 더 밝게 한다고 했는데 여기에서 문제가 발생한다. 모니터 자체의 밝기가 충분하지 않으면 HDR 옵션을 켜는 순간 그냥 어두워 진다. 어중간한 모니터에서 이 기능을 켜면 '뭐야 개쓰레기네' 라는 말이 저절로 나온다.


 최소한 320cd 이상이 되는 밝기의 모니터가 아니라면 이 기능은 있으나 마나다. 참고로 우리가 날이 왜이리 흐리지 할 때의 밝기가 250cd ~ 400cd다. 그렇다면 맑고 쨍쨍한 날은 밝기가 훨씬 더 심하지 않을까? 우리가 보는 수준으로 보이려면 최소한 2000cd 는 되어야 한다. 그러니까 저런 보급형 밝기에서 HDR 은 있으나 마나라는 소리이다... 판단은 구매하시는 여러분의 몫 



4. 프리싱크와 지싱크



 게임을 하다가 화면이 아래처럼 깨지는 현상을 본 적이 다들 한 번 쯤은 있을 것이다. 이를 티어링 현상이라고 한다. 이 현상이 발생하는 원인은 모니터에서 받은 신호와 그래픽카드가 쏴준 신호가 완벽하게 일치하지 않을때 발생을 한다. 타이밍이 안맞는 것이다. 모니터의 주사율과 프레임의 차이가 클 수록 이 현상이 더 잘 발생한다. 예를들면 모니터는 144Hz인데 실제 프레임은 2000Hz (예)를 쏴준다고 하면 이 현상이 발생한다. 


 이를 동기화 시켜주는 기술이 바로 프리싱크와 지싱크이다. 그래픽카드의 성능을 살짝 억제해서 프레임을 동기화 시켜주는 역할을 한다.

 프리싱크와 지싱크가 궁극적으로 하는 일을 똑같다. 다만 순수 지싱크는 모니터에 전용 모듈을 박았고, 프리싱크는 보드 통합방식으로 작동을 한다는 것이다. 전용 모듈이 박힌 지싱크가 조금 더 좋기는 하다... 만 요즘은 엔비디아 그래픽카드에서도 프리싱크 기술을 사용할 수 있게 하는 [ 어댑티드 싱크 ] 라는 기술이 있다.

 그러니 딱히 비싼돈 주면서 지싱크 전용 모니터를 찾을 필요가 1도 없다.


 이렇게 해서 모니터 고르는 방법 1,2편에 대해 작성을 해 보았다. 지금 내 머릿속에 생각나는 것들을 적었기 때문에 부족하거나 혹시 잘못된 정보가 있을 수도 있다. 저보다 많이 알고 계신 분들께서 피드백을 해주시면 즉각 반영하도록 하겠다.


 아무쪼록 이 글이 여러분들이 모니터를 고르는데 있어서 조금이나마 도움이 되었으면 좋겠다.

다들 좋은 모니터 고르시길 바란다.


 긴 글 읽어주셔서 감사드립니다.



유용한 IT정보 / 전자제품 리뷰
포털에서 MilkyeWay를 검색해주세요👍
유용한 정보였다면 ❤️ 클릭 부탁드려요 😄

이 댓글을 비밀 댓글로

초보자를 위한 모니터 고르는 꿀팁 - 1편

Posted by 돼지로운생활
2019. 8. 8. 10:11 IT/컴퓨터

모니터를 구매하는데 있어 몇가지의 단어들과 해당 단어의 의미를 알고 있으면 모니터를 구매하는데 도움이 되는 경우가 많다. 실제로 글쓴이도 초반에 해당 용어들을 알고나서 모니터를 고르는데 수월해졌다.

 오늘을 그 방법에 대해서 알아보자.


모니터 고르는 방법 1편




1. 모니터의 제조사와 유통사

 지금 적힌 순서는 절대로 순위가 아닌 참고표이다. 품질을 브랜드로만 나눈다는건 무의미하다. 바로 아래 나오는 삼성전자와 LG전자가 그렇다. 품질과 목적에 따라 라인이 나눠지기때문에 브랜드만 보고 진입했다가는 가격에 비해 좋지 않은 모니터를 고를 가능성이 매우매우 높다. 이건 확실하다. 

 위 두 브랜드처럼 라인업이 다양한 곳일수록 그 차이가 더욱 심하다.


 - 삼성전자, LG전자 

 두 곳은 모두 돈만 쏟아부으면 최고의 제품과 AS를 받을 수 있는 곳이다. 


- DELL, HP 

 DELL모니터의 경우는 회사에서 사용중인데 나쁘다는 생각 해본적이 없다. 모니터로 알아주는 브랜드라고 생각한다. 그렇다고 AS가 나쁘지도 않다. HP의 경우 역시 회사에서 함께 사용을 하고 있는데 두 곳중 하나의 브랜드만 골라야 한다면 DELL을 고를 것 같다. 물론 HP도 충분히 좋다.


- 알파스캔

 평판이 나쁘지 않은 브랜드이다. 실제로도 PC방에 가보면 많이 사용하고 있는 모니터이지만 절대스펙을 놓고 본다면 위의 브랜드보다는 마감이나 스펙부분에서 조금은 딸린다고 생각하지만 역시 고가품은 삼성 LG 저가라인이랑은 비교할 수 없다.


- 벤큐, MSI, ASUS 

 한때 오버워치가 엄청 유행하던 시절 벤큐 모니터를 프로게이머들이 사용한다고 해서 인기가 미친듯이 폭주했던 시절이 있었다. 사실 그 시절에도 본인은 TN패널을 좋아하지 않아서 보지 않았는데, 품질 자체는 나쁘지는 않았다. 그런데 AS가 좋지 않다는 평을 사용하는 친구들에게서 많이 들었다. MSI는 사실 사용자가 그렇게 많은 편은 아니라 뭐라고 말은 못하겠다. 브랜드값을 어느정도 하고 스펙만을 봤을때는 나쁘지 않았다. 하지만 AS가... ASUS의 경우는 게이밍 모니터의 경우는 쓸만하다. 그 외에 제품은 피하자.


- 한성, 크로스오버, 레안텍, 와사비망고 등...

 가성비로 유명한 제품들이다. 해당 제품군은 확실하게 뽑기운이 적용이 된다. 이런 브랜드의 패널은 대부분 대기업(삼성, LG)의 B급 패널을 가져다 사용한다. 그래서 뽑기운이 적용이 된다. 하지만 이런 제품들을 잘 뽑으면 좋은 스펙의 모니터를 사용할 수 있다. 다만 마감이 대기업군에 비해 부족하고, AS가 부족한 건 어쩔 수 없다. 어느정도 셀프 정비를 할 수 있는 사람들이 제품을 구입해서 뽑기가 잘 된다면 정말 만족하고 사용할 수 있는 라인업이다. 자신이 정말 전자기기는 아무것도 모른다면 생각을 좀 해보자. 정신적 스트레스가 상당할 수 있다.



2. 패널 종류


 3가지의 패널이 있다. TN, IPS, VA

일반 사용자가 봤을때 색감이나 시야각, 잔상등을 느끼는게 바로 이 부분이다.


일반적인 선호도는 IPS>VA>TN이다.


광시야각 : IPS > VA > TN 

 - 광시야각이란 정면이 아닌 모니터를 중앙에 두고 상하좌우에서 봤을때 화면이 잘 보이냐 안보이냐를 뜻한다.

IPS랑 TN의 차이는 정말 어마무시하다. TN은 정면이 아니면 거짓말 조금 보태서 안보인다.


명암비 : VA > IPS > TN 

 - TN모니터를 보면 바로 물빠진 색감이라는 생각이 든다. 패널자체의 특성이기 때문에 어쩔 수 없다. 본인은 TN의 이 물빠짐 색감이 너무나도 마음에 안들어서 TN모니터는 항상 거른다. 요즘에는 TN도 색감이 좋아졌다 하는데, VA모니터 보면 그거보다 몇배는 더 좋아보인다. 

영상을 좋아한다면 VA, 일반적인 다목적은 IPS, 온니 게임이라면 TN


응답속도 : TN > IPS > VA

 - 응답속도는 TN을 따라올 수가 없다. 괜히 오버워치같은 슈팅게임에서 TN패널이 사랑받은게 아니다. VA패널의 특징인 잔상을 볼 수가 없다. 사람이 체감보다 역체감이 심한데, VA를 쓰다가 TN을 쓰면 그 체감이 쉽게 와닿지가 않는데 반대로 TN을 쓰다 VA를 쓰고 슈팅게임 FPS게임을 하면 말도안되게 체감이 된다. 

 VA는 잔상이 남아서 빠르게 화면이 전개되는 게임을 오랜시간 하다보면 눈이 아프다. IPS는 그냥 무난하다. 


주용도 

 - TN : 게임

 - IPS : 다목적

 - VA : 영상



3. 모니터 해상도



 요즘은 4K를 넘어서 8K도 나오는 시대이다. 아직도 FHD를 쓰는 분들이 설마 계신가? 물론 본인도 FHD 모니터도 사용한다ㅎㅎ 

 해상도를 이야기해보자면 화면상에 나타나는 이미지를 모니터의 가로*세로의 화소수로 표현을 한 것을 말한다. 실제로 휴대폰으로 카메라를 켜고 모니터에 가까이 가져가면 픽셀들이 보인다. 

 제일 많이 쓰는 FHD의 해상도는 1920 * 1080이다. 즉, 가로 1920개 세로 1080개의 픽셀이 모니터에 존재하는 것이다. 당연히 해상도가 높아질수록 이 픽셀의 밀집도가 높아지는 것이다. 


 흔히들 모니터 해상도를 설명할 때 하나의 이미지를 두고 4K는 꽉 차게 QHD는 조금 더 작게 FHD는 절반처럼 이미지를 잘.라.서. 보여주는데, 사실 이렇게 표현하는건 맞지 않다. 4K와 FHD가 같은 인치수(27인치) 라고 한다면 당연히 같은 모니터 크기에 들어가있는 픽셀의 밀집도가 4K가 월등히 높기 때문에, 더욱 깨끗하게 보이는 것이다. 쉽게 사진에 모자이크를 할껀데 10*10개로 할꺼냐 5*5개로 할꺼냐의 차이와 비슷하다고 할 수 있다. 궁금하다면 실제로 모자이크를 해보면 그 차이를 알 수 있다.



 아, 그리고 게이밍용으로 4K를 사용한다 하는데 솔직히 개인적으로는 추천하지 않는다. 여러분의 그래픽카드와 CPU가 그 해상도에서 충분한 프레임을 뽑아주기가 쉽지가 않다. 이정도를 넉넉하게 돌릴 수 있는 분들이라면 이 글을 보지도 않을 것이다... 


해상도별 권장 인치수

 작은 모니터에 해상도만 높으면 눈만 아프다. 뭐든지 딱 알맞게 좋은게 좋은거라고 생각한다. 


~27인치 : FHD

27~32인치 : QHD

32인치 ~ : UHD



4. 응답속도


 대부분 GTG라는 용어로 표기가 되어있거나 응답속도라고 적혀있다. 단위는 ms(밀리세컨드)를 사용한다. 

수치가 낮을수록 응답속도가 빠르다. 일반적인 사용자들은 1ms~5ms의 차이를 체감하기는 어렵다. 그러니 5ms의 제품을 구매해도 무방하다. 글을 보시는 분들중에서 내 눈은 그 차이를 구분할 수 있다 하시는 분들은 1ms를 구매하시면 된다. 간단하다. 

 하지만 6ms~10ms는 대부분이 체감할 수 있다. 잔상이 느껴진다고 느낄 수 있는 것이다. 본인같은 경우는 대부분 1ms~5ms의 제품을 사용한다.


※ 오버드라이브

 스펙을 보다보면 오버드라이브(1ms)라는 내용이 있는 제품들이 있을 것이다. 무슨 뜻일까?


 오버드라이브란 쉽게말해 컴퓨터의 오버클럭과 비슷한 내용이라고 생각하면 된다. 전압을 모니터에 더 넣어줘서 더 빠른 응답속도를 얻어내는 기술이다. 간단하게 예로 보면 응답속도 : 5ms(GTG)/1ms(OD) 라고 적혀있는게 기본 응답속도는 5ms이지만 오버드라이브를 사용하면 1ms로 작동을 한다는 뜻이다.



 그렇다면 무조건 오버드라이브를 사용하는게 좋으냐!? 오버클럭을 해보신 분들은 아시겠지만 당연히 더 많은 전력을 넣어주다보니 제품의 수명과 어느정도 연관이 있다. 대부분의 제조사가 제품의 수명에 그렇게 큰 영향을 주지 않는다고 하는데, 그건 아무도 모르는 일이다.

 그래서 꼭 1ms를 사용해야겠다한다면 리얼 1ms 제품군을 추천한다. 

 

2편보러가기 ← 클릭!


나머지 내용들은 2편에서 이어서 작성을 할 예정이다.

긴 글 읽어주셔서 감사하다는 말씀을 드린다. 

(__)꾸벅

 


유용한 IT정보 / 전자제품 리뷰
포털에서 MilkyeWay를 검색해주세요👍
유용한 정보였다면 ❤️ 클릭 부탁드려요 😄

이 댓글을 비밀 댓글로

[Java Secure Coding] TOCTOU 해결 보안 코딩 방법

Posted by 돼지로운생활
2019. 6. 13. 13:37 개발자의 길/WEB

 하나의 자원에 동시다발적으로 여러 프로세스가 접근해서 컨트롤을 하게 되는 경우가 생긴다. 이러한 점들로 인해 프로그램이 교착상태, 경쟁조건 및 기타 등등의 오류가 발생할 수 있다.


 처음에 코딩을 할 때 아무 생각없이 바로 File Delete 를 실행했었는데, 생각해보면 동시에 해당 파일에 접근할 수 있다는 생각을 하지 않고 코딩을 했다. 나중에 들어온 사용자가 먼저 들어온 사용자보다 먼저 작업을 해버리면 파일이 꼬여버리게 된다. 이러한 상태를 방지하기 위한 코딩방법이다.


 1. 동기화 구문을 통해 한번에 하나의 스레드만 공유자원(예:파일)에 접근 가능하도록 해야한다.

 2. 필요 없는 부분은 구문으로 감싸지 않아 성능에 최대한 영향이 적도록 한다.


일반적으로 


File file = new File(URL);

if(file.exist()){

file.delete();

}


이렇게 파일이 이미 생성이 존재하는 상태라면 파일을 삭제하는 명령어를 사용할텐데, 저렇게하면 안전하지 않다. 


똑같은 삭제를 하더라도 아래와같이


File file = new File(URL);


if(file.exist()){

FileDelete(file);

}


//Delete 동기화 함수 사용

private synchronized void FileDelete(File file){

file.delete();

}


이러한 방식으로 사용을 한다면 TOCTOU 문제 없이 안정적으로 코딩을 진행할 수 있다.


※ 다중 Thread로 공유자원에 접근을 할 때에는 Thread safe 함수를 사용하자.



유용한 IT정보 / 전자제품 리뷰
포털에서 MilkyeWay를 검색해주세요👍
유용한 정보였다면 ❤️ 클릭 부탁드려요 😄

이 댓글을 비밀 댓글로

JAVA 이미지 픽셀 컬러 추출

Posted by 돼지로운생활
2019. 6. 10. 16:15 개발자의 길/WEB

이미지의 특정 부분의 픽셀을 뽑아내야 할 때가 있다.

 오늘은 간단히 이미지의 특정 픽셀의 컬러를 추출하는 방법을 포스팅하려 한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static getImgPixel (String url) {  
 
        BufferedImage image = null;  
 
        try {  
            image = ImageIO.read(new File(url));
            int x = image.getWidth(null);
            int y = image.getHeight(null);
            Color color = new Color(image.getRGB(x-1, y-1));   //이미지의 맨 마지막 픽셀의 값
 
           int red = color.getRed();
           int blue = color.getBlue();
           int green = color.getGreen();
           int alpha = color.getBlue();
 
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        return image;  
 
}  
 
cs


 이러한 방법을 이용해서 겹쳐있는 이미지에서 특정한 이미지만 뽑아낼 수도 있다.

이 방법은 다음 포스팅에 이어서 적도록 하겠다.


유용한 IT정보 / 전자제품 리뷰
포털에서 MilkyeWay를 검색해주세요👍
유용한 정보였다면 ❤️ 클릭 부탁드려요 😄

이 댓글을 비밀 댓글로

Java WAS서버에서 이미지(Image) 처리하기

Posted by 돼지로운생활
2019. 6. 5. 23:12 개발자의 길/WEB
 회사의 구조가 조금 특이하다. 관리자용 페이지는 내부망에 연결이 되어있고, 실제 고객이 보는 페이지는 당연히 인터넷망에 연결이 되어있다. 이렇다보니 이미지를 다룰 때 관리자 페이지에서 이미지를 보여주는데 문제가 있었다.
 요즘은 WAS, WEB 서버가 분리되어 있는 경우가 대부분이라 WAS에서 이미지를 처리하는 경우가 거의없다. 그런데 그 일을 해야하는 경우가 생겨서 포스팅을 한다.
 
 지금처럼 이런 경우가 생긴다면 WAS Server에서 Java로 이미지를 읽고 이를 스트림형태로 페이지에 보내주면 된다. 아래의 소스가 이러한 예제를 보여준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void getIMG(HttpServletRequest req, HttpServletResponse res){
    ServletOutputStream imgout = res.getOutputStream();
    String imgPath = "was/img/location";
    String imgName = req.getParameter("img_nm"); // JSP에서 넘겨주는 파라미터 이름
    //이미지의 확장자명까지 넘어왔을시 확장자 체크 없이 진행
    File f = new File(imgPath + File.separator + imgName);
    if(! f.exists()){
        //파일이 없는 경우 체크하여 이후 로직실행
        //생략
    }
    FileInputStream input = new FileInputStream(imgPath);
    int length;
    byte[] buffer = new byte[10];
    while( (length = input.read(buffer)) != -1)
        imgout.write(buffer, 0length);
}
cs


 딱히 코드에 대한 설명이 필요 없을 정도로 간단한 소스이다. 다 필요없이 경로랑 파일명을 알고 있다면 11~15줄까지만 코드가 있으면 돌아간다.(2번째줄 포함) 


 이걸 페이지에서 부를 때 조금 다른 방법이 img태그를 처리할 때 나타난다.


1
2
3
4
5
<!--일반적인 경우 WEB서버에서 콜할때-->
<img src="/img/location/milkye.png"/
 
<!--WAS서버에서 콜할때-->
<img src="/getImg"/
cs

 img태그의 src 부분에 서블릿 경로를 지정해주면 알아서 불러오게 된다.



유용한 IT정보 / 전자제품 리뷰
포털에서 MilkyeWay를 검색해주세요👍
유용한 정보였다면 ❤️ 클릭 부탁드려요 😄

이 댓글을 비밀 댓글로

GET 방식 막는 방법 (URL 직접접속 차단, 서버에서 방식 확인)

Posted by 돼지로운생활
2019. 5. 30. 00:11 개발자의 길/WEB

 주소창에 URL을 입력해서 접근하는 경우가 있다. 만약 GET방식이 막혀있지 않다면 직접 접근을 통해 파라미터를 넘길 수 있기 때문에 취약한 점들이 많다. GET방식을 막는 여러 방법을 찾아보다가 이렇게 직접 URL접근을 막는 방법이 있어서 가져왔다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
<%
 String strReferer = request.getHeader("referer");
 
 if(strReferer == null){
%>
 <script language="javascript">
  alert("정상적인 경로를 통해 다시 접근해 주십시오.");
  document.location.href="return jsp or URL";
 </script>
<%
  return;
 }
%>
cs



 추가로 JAVA 서버단에서 이러한 방식을 추가해서 막을 수 있다. (JSP에서도 가능)

1
2
request.getMethod().equals("GET")
request.getMethod().equals("POST")
cs

 만약 여기서 POST 방식만 허용을 하고 싶다면 1번 코드의 값이 True이면 retrun 시켜버리면 된다.

이렇게 클라이언트와 서버에서 이중으로 체크를 해준다면 조금 더 안전하게 사용할 수 있을 것이다.





유용한 IT정보 / 전자제품 리뷰
포털에서 MilkyeWay를 검색해주세요👍
유용한 정보였다면 ❤️ 클릭 부탁드려요 😄

이 댓글을 비밀 댓글로

jQuery를 이용해 visibility 설정하기

Posted by 돼지로운생활
2019. 5. 27. 22:54 개발자의 길/WEB

<div id="box"> 

하위 태그 작성

.

.

.

</div>


이러한 div가 있을때 값을 display(visibility)를 설정하는 방법


<Display를 이용한 방법>

$ (function(){


$("#box").css("display","none"); // 보여주지 않음

$("#box").css("display","block"); // 값을 보여줌


});



여기서 또 한가지 display 대신에 visibility 를 이용해 설정을 하는 경우도 있다.

차이점은 페이지가 로드될 때 하위 요소의 데이터를 다 읽어오냐 안읽어오냐의 차이로 구분할 수 있다.


display → 페이지가 로드 될 때 none 값이라면 하위요소 (데이터)를 읽어오지 않음

visibility → hidden이건 visibility건 상관없이 페이지가 로드되면 하위요소(데이터)를 읽어옴


<Visibility를 이용한 방법>

 $ (function(){


$("#box").css("visibility","hidden"); // 보여주지 않음

$("#box").css("visibility","visibility"); // 값을 보여줌


});


두 속성값은 상황에 알맞게 사용을 하면 된다.





유용한 IT정보 / 전자제품 리뷰
포털에서 MilkyeWay를 검색해주세요👍
유용한 정보였다면 ❤️ 클릭 부탁드려요 😄

이 댓글을 비밀 댓글로

html window.open 파라미터 넘기는 2가지 방법

Posted by 돼지로운생활
2019. 4. 26. 13:27 개발자의 길/WEB

안녕하세요. 오늘은 JavaScript의 window.open을 사용할 때 파라미터 넘기는 방법에 대해서 포스팅을 하려고 합니다.


 대부분 window.open으로 어떠한 인자값을 넘길 때는 GET방식을 주로 사용합니다.


ex) /testpage.php?arg1=test&arg2=test2


 하지만 이렇게 쓰다보면 사용자가 뒤에 있는 파라미터 값을 바꿀 수 있기 때문에 이를 막기 위해서는 POST 방식을 사용해서 window.open을 사용할 수 있습니다.



<script language="JavaScript">
function open_pop(arg1, arg2){
    var frmPop= document.frmPopup;
    var url = 'popup.php';
    window.open('','popupView','옵션');  
     
    frmPop.action = url;
    frmPop.target = 'popupView'//window,open()의 두번째 인수와 같아야 하며 필수다.  
    frmPop.arg1.value = arg1;
    frmPop.arg2.value = arg2;  
    frmPop.submit();   
     
}
</script>



출처: https://happyman73.tistory.com/36 [작은악마`s Blog]


<form name=frm>

<input type=hidden name=arg1/>

<input type=hidden name=arg2/>

</form>




유용한 IT정보 / 전자제품 리뷰
포털에서 MilkyeWay를 검색해주세요👍
유용한 정보였다면 ❤️ 클릭 부탁드려요 😄

이 댓글을 비밀 댓글로