"서브버전(Subversion) 브랜치 만들기"에 이어진 포스팅이다. 위의 그림처럼 메인 트렁크(Trunk)에서 분기하여 생성한 브랜치(Branch)와 트렁크가 각각 독립적으로 개발을 진행한 상태에서 브랜치에서 새롭게 개발한 기능을 메인 트렁크에 반영하고자 한다. 일단, 트렁크의 작업 사본 폴더로 이동하여 최종 상태로 SVN Update 하고 커밋하지 않은 변경 사항이 있다면 커밋을 수행하여 머지과정의 충돌(Conflict)을 최소화한다. 트렁크 작업 사본 폴더의 작업 준비를 마쳤으면 TortoiseSVN > Merge를 선택한다. 브랜치의 리비전을 지정해서 머지하는 방법도 있지만 트렁크 트리와 브랜치 트리와의 차이를 현재의 작업 사본에 반영하는 방식으로 수행한다. "Merge two differe..
깃(Git)이나 서브버전(Subversion, SVN)과 같은 형상 관리 도구를 사용하는 다양한 장점이 있지만 그중의 하나가 브랜치나 태그의 개념으로 소스 코드를 독립적으로 관리할 수 있다는 것이다. 예를 들어 서브버전을 형상 관리 도구로 사용하며 메인 프로그램을 1차로 완성할 때까지는 통상 Trunk에서 개발을 진행하며 리비전(Revision)을 쌓아간다. 프로그램의 1차 완성 이후에 발생하는 소소한 버그나 개선사항도 물론 Trunk에서 진행한다. 그런데, 조금 덩어리가 큰 기능을 추가하는 경우에는 Trunk에서 수행하는 소소한 수정과 덩어리가 큰 새로운 개발을 병행하기에는 무리가 있다. 이런 경우에는 브랜치(Branch)를 생성해서 기존 프로그램의 소소한 수정은 트렁크에서 계속 진행하고 새로운 개발은..
연일 폭염이 맹위를 떨치고 있다. 올해 여름에는 시원한 나라로 해외여행을 떠날까? 하는 생각에 남반구에 있는 호주나 북유럽 국가를 후보로 걷기 좋은 트레일을 찾아보기도 했다. 별로 마음에 들지는 않지만 백두산이나 내몽골 패키지여행도 생각해 보았다. 그렇지만, 사람들이 몰려 나가는 시기인 만큼 항공권도 비싸고 이것도 저것도 마음에 들지 않는다. 결국, 폭염 속이지만 서해랑길의 남은 코스들을 마무리하는 것은 어떨까! 하는 생각에 이르렀다. 이열치열이라고 흘러내리는 땀과 한 몸이 되는 여행을 생각한 것이다. 서해랑길 95코스 이후로는 인천 시내를 가로지르며 강화도까지 이동하는데, 많은 코스에서 숲길을 걷는다는 것도 한번 도전해 볼까? 생각을 하게 했다. 서해랑길 95코스 시작점인 인천 1호선 선학역까지는 지난..
핸드폰에서 세로로 찍은 사진을 사진 뷰어나 그래픽 편집 도구로 확인하면 위의 그림처럼 문제없이 보인다. 그런데, 해당 그림을 C# PictureBox 컨트롤에 적용하면 위의 그림처럼 그림이 자동으로 회전된다. 이 문제는 PictureBox 컨트롤이 JPG나 PNG 파일에 있는 Exif(Exchangeable image file format) 형식을 제대로 지원하지 않아서 생기는 것이다. 핸드폰이나 기타 도구에서 이미지를 저장할 때 가로 형태로 이미지를 저장하고 Orientation 정보(0x112)에 이미지는 90도 회전했다는 식으로 설정했는데 PictureBox 컨트롤이 그 정보를 처리하지 않는다는 것이다. public class MyPictureBox : PictureBox{ private void ..
"C# 배포시 난독화를 해야 할까? - ConfuserEx 사용법" 포스팅에 연관된 글이다. 최근 C# 프로그램을 빌드해서 배포하는 과정에서 난독화를 추가했더니 윈도우 보안(Microsoft Defender)에서 악성 코드로 오탐지되어 당황스러운 상황에 처한 적이 있었다. 할 수 없이 관련 정보를 검색해 보니 유사한 사례를 겪은 사용자도 있었고 최신 프로그램을 배포하는 깃허브 사이트도 있었다. https://github.com/mkaring/ConfuserEx 우선 최신까지 난독화 프로그램을 업데이트하고 있는 곳은 위의 깃허브 사이트이다. 원래 배포하던 https://github.com/yck1509/ConfuserEx를 포크 해서 업데이트하며 버전을 1.6까지 올려서 배포하고 있다. 그리고, Confu..