프로그래밍
-
Apache MINA와 WebSocket으로 SSL통신하기.프로그래밍/Java 2020. 6. 9. 23:36
Apache MINA는 Java에서 흔히 쓰는 비동기 쓰레드 방식의 Server이다. 이전에 작성했던 포스팅에 이어서 작성한다. https://syudal.tistory.com/entry/Apache-MINA와-WebSocket으로-통신하기 Apache MINA와 WebSocket으로 통신하기. Apache MINA는 아래와 같은 구조를 띄고 있다. IoService와 IoHandler사이에 IoFliter들을 추가하여 원하는 스타일의 소켓 통신을 할 수 있다. WebSocket같은 경우에도 HandShake과정과 같은 구현을 IoFliter를.. syudal.tistory.com 대부분의 사이트에서 HTTPS가 강제됨에 따라, 일반 웹소켓 요소(ws://)가 들어가 있으면 ERR_SSL_PROTOCOL..
-
HttpWebRequest 루트 인증서와 해당 도메인 인증서 확인하기.프로그래밍/C# + Unity 2020. 5. 18. 19:20
RemoteCertificateValidationCallback은 HTTPS 인증서를 확인할 수 있게 해준다. 단, 'UNITYTLS_X509VERIFY_FLAG_NOT_TRUSTED'라는 메시지가 나오면서 Unity상에서는 위와 같은 방법을 사용할 수 없다. 왜냐하면 현재와 같이 루트 인증서와 비교하여 검증하기 위해 OpenSSL/MbedTLS를 사용하는 대신 시스템별 TLS API를 통해 검증을 수행함으로써 이 문제를 해결할 수 있을지 모르지만, 이 해결방법은 서로 다른 운영체제에서 작동되지 않을 가능성이 크기 때문에 Unity상에서 구현을 하지 않았다고 한다. https://docs.microsoft.com/ko-kr/dotnet/api/system.net.security.remotecertific..
-
[OpenCVSharp] bgr과 inrange함수프로그래밍/C# + Unity 2020. 2. 16. 11:01
일반적으로 빛의 삼원색을 꼽으라면 rgb라고 순서대로 일컽는다. 하지만, OpenCV는 조금 다르다. 기본적인 채널이 bgr로 구성되는데, 이는 Windows에서 ColorREF를 0x00bbggrr로 지정하는 것에 기인하여 현재까지도 OpenCV에서는 rgb가 아닌 bgr로 사용한다. 출처 : https://www.learnopencv.com/why-does-opencv-use-bgr-color-format/ 익숙한 RGB로 변환하기 위해서는 CvtColor함수를 사용하면 된다. Cv2.CvtColor(src, dst, ColorConversionCodes.BGR2RGB); 두서에 bgr을 설명한 이유는 inrange함수를 처음 사용할 때, 적잖이 당황했기 때문이다. inrange 함수를 쉽게 설명하면..
-
스마트 에디터2 사진 업로드 오류 해결프로그래밍/Web(CSS + HTML + JS + PHP ) 2019. 12. 22. 15:14
네이버에서 관리하는 오픈소스중 하나인 스마트 에디터는 JavaScript로 구현된 웹 기반의 WYSIWYG 편집기이다. 현재 네이버는 자신들이 새로 개발한 스마트 에디터3를 사용하고 있지만, 스마트 에디터2도 쓸만하다. 하지만, 사진 업로드 예제를 수행하던 중 아래와 같은 오류가 발생했다. 서버 URL 셋팅을 제대로 하였지만, 자꾸 위와 같은( [가이드]사진 업로더할 서버URL셋팅이 필요합니다.-onAjaxError )와 같은 에러가 날 괴롭혔다. 오류를 보기위해 로직을 (attach_photo.js파일 onAjaxError함수.) 아래와 같이 변경하였다. 1 2 3 function onAjaxError (e){ alert("[가이드]사진 업로더할 서버URL셋팅이 필요합니다.-onAjaxError"+e...
-
[C#] 기본 연결이 닫혔습니다. 보내기에서 예기치 않은 오류가 발생했습니다.프로그래밍/C# + Unity 2019. 11. 18. 17:40
C#에서 HttpWebRequest를 이용하여 서버와 통신할 때, '기본 연결이 닫혔습니다. 보내기에서 예기치 않은 오류가 발생했습니다.'와 같은 오류가 나온다면, 해결방법은 다음과 같다. 1. 해당 프로젝트의 프레임워크 버전을 4.5.2이상으로 올린다. 2. 아래 코드를 적용한다. 1 2 3 4 ServicePointManager.SecurityProtocol |= SecurityProtocolType.Ssl3; ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls; ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11; ServicePointManager.SecurityPr..
-
[Unity] Easy Save Plugin to PlayerPrefs프로그래밍/C# + Unity 2019. 11. 4. 14:23
Unity에는 EasySave라는 저장을 편리하게 해주는 유료 플러그인이 있다. Easy Save의 특정 기능을 꼭 써야만하는게 아니라면, Unity 내장 함수인 PlayerPrefs와 JsonUtility만으로도 EasySave의 거의 모든 기능을 사용할 수 있다. EasySave의 암호화 후 저장기능을 사용하지 않을 거라면, 파일 읽기/쓰기를 하는 아래의 코드는 같은 결과를 내놓는다. 1 2 3 4 5 6 7 8 9 //쓰기 ES3.SaveRaw(savedata, inputField.text + ".sav", settings); File.WriteAllText(inputField.text + ".sav", savedata); //읽기 result = ES3.LoadRawString("Save/" + ..
-
typeof switch (패턴일치)프로그래밍/C# + Unity 2019. 11. 4. 13:50
C#의 switch문은 C99나 C++와는 달리 강력한 기능을 지원한다. 이는 C# 7.0이전에도 string을 switch문에 넣을 수 있었고, 현재 C# 7.0이후로는 '패턴일치'라는 강력한 기능을 통해 코드를 간결하지만, 직관적으로 표현할 수 있게 되었다. https://stackoverflow.com/questions/708911/using-case-switch-and-gettype-to-determine-the-object Using Case/Switch and GetType to determine the object Possible Duplicate: C# - Is there a better alternative than this to ‘switch on type’? If you want to..
-
매개변수 List<T>의 비밀프로그래밍/C# + Unity 2019. 8. 27. 22:01
C#의 List는 Array를 간편하게 .Add/.Insert/.Remove/.Clear 해주며 비슷한 기능을 하는 Arraylist보다 더 안전하고 더 잘 수행한다. 하지만 List를 매개변수로 사용하게 되면 함정이 존재한다. List는 참조 형식의 클래스이므로, 매개변수로 사용하고 값을 변경하게 되면 서브루틴 뿐만 아니라, 루틴에도 영향을 끼친다. 쉽게 설명하자면, List b = a;라는 코드를 작성하고 b를 변경하면 a도 함께 변경된다. 이는 참조형식의 클래스에서 나타나는 특징이다. 이를 해결하는 방법은 간단하다. 참조 형식이므로 새로 객체를 만들어주면 그만이다. ※ 반목문으로 일일히 복사하는 방법도 있겠지만, 추천하지 않는다. 1 List copy = new List(original); cs