인심 좋은 산청에서의 하룻밤 휴식을 보낸 우리는 이른 새벽 난이도가 상급인 지리산 둘레길 7코스 성심원, 운리 구간을 걷는다. 상급 난이도이기는 하지만 아침재와 웅석봉 하부 헬기장에 이르는 약 5Km의 오르막길을 지나면 그 이후는 완만한 내리막의 임도를 걷는 무난한 코스이기도 하다. 어제저녁 둘레길 6코스를 끝내고 산청읍내로 돌아가는 길에서는 성심원 앞에서 친절한 마을 주민을 만나 그분의 차를 얻어 타고 편하게 읍내로 나갈 수 있었다. 가끔씩 이곳에서 버스를 놓치거나 어디서 버스를 타는지 모르는 사람들을 태워 주신다고 하셨다. 오늘 새벽에는 산청 터미널에서 원지 정류장으로 가는 버스를 타고 성심원 앞에서 하차하여 여정을 시작한다. 정류장 이름은 성심원이 아니라 "풍현"이었다. 무료 버스인 산청 농어촌 ..
댐이 아닌 농업용 저수지로는 국내 최대라는 충남 예산의 예당호 느린 호수길 걷기를 다녀왔다. 호수 둘레가 40Km에 이르니 걷기를 위한 좋은 산책로가 있지 않을까 싶었는데, 호수 북서쪽을 따라서 조성한 7Km 정도의 데크길 말고는 딱히 산책로가 존재하지는 않았다. 걸어보니 호수 서쪽을 장악하고 있는 것은 자동차 도로이기 때문에 산책로가 만들어지기에는 무리이지 않았나 싶다. 그나마 흙바닥이 아닌 데크길을 통해서라도 호수 옆을 걸을 수 있다는 점이 감사했다. 순환형 산책로가 아니고 개인적으로는 갔던 길을 그대로 돌아오는 것도 좋아하지 않아서 "예당관광지 12 주차장"에 자동차를 세워두고 후사리 버스 정류장에서 호수 중간 지점까지는 시내버스로 이동하기로 했다. 예당호의 명물이라는 출렁다리를 지나서 걷기를 끝..
함양군을 지나서 산청군으로 들어온 지리산 둘레길은 지리산 북쪽을 돌아서 남쪽으로 내려가기 시작한다. 둘레길 6코스는 산청군 읍내를 지난 다음에 선녀탕을 경유하는 코스와 계속 경호강을 따라가는 코스로 나뉘는데 우리는 경호강을 따라서 성심원으로 향한다. 6코스는 산청 주민들의 따뜻한 인심을 몸의 체험한 구간이었다. 대부분 평지로 난도는 높지 않다. 산중에서 점심을 해결했던 우리는 5코스를 끝내면서 수철마을에서 따뜻한 커피 한잔을 마실 수 있을 것이란 기대를 하고 있었다. 고동재 고갯길에서부터 카페 표지가 있었기 때문이다. 그러나, 겨울이라 그런지 동네에 있는 카페는 문을 열지 않은 모양이었다. 따뜻한 커피가 마시고 싶었던 옆지기는 많이 실망한 모양이다. 하는 수 없이 수철마을에서 잠시 정비를 하고 바로 6코..
동강마을에서 수철마을까지 걷는 지리산 둘레길 5코스는 난이도 중급이지만 왕산 자락의 쌍재와 고동재를 넘어가야 하는 만만치 않은 경로이다. 그렇지만, 고갯길을 넘는 과정에서 숲길을 통과하는 약간의 어려움이 있기는 하지만 위의 고도 변화 그림과 같이 완만하게 고도를 올리다가 고개를 지나면 완만하게 내려오는 걷기에 좋은 길이기도 하다. 이른 아침 함양 터미널에서 마천, 추성행 농어촌 버스를 타고 동강마을로 향한다. 오늘은 5코스, 6코스를 이어서 걸을 예정이라 조금 일찍 여정을 시작했다. 지방을 다니면 보통은 시외버스 터미널에서 농어촌 버스를 타기 마련인데, 함양군은 시외버스 터미널 근처이기는 하지만 약 2백 미터 정도 걸어가야 하는 위치에서 별도로 출발한다. 동강마을 정류장에서 내리면 엄천교를 통해서 유유..
의중마을에서 벽송사를 경유하는 코스와 용유담을 경유하는 코스로 나누어졌던 둘레길 4코스는 모전마을에서 합류하여 동강마을까지 임천을 따라서 평탄한 길을 걷는다. 숲길을 벗어나 도로와 마을길을 걸으니 계곡 주위를 돌아보며 여유 있게 걸을 수 있는 경로이다. 좌측으로는 법화산(993m), 우측으로는 와불산(1,214m)을 두면서 동북쪽으로 계곡을 빠져나가는 모양새다. 뒤로는 용유담 위로 임천을 가로지르는 용유교가 계곡 사이를 이어주고 있다. 송전길을 따라 가는데 복주머니처럼 생긴 커다란 바위 하나가 나그네의 호기심을 자극한다. 길을 만들기 이전부터 저런 모습이었을까? 아니면, 길을 만들다가 생긴 것일까? 임천 건너편 마을을 보니, 마치 지금 히말라야가 있는 네팔을 걷고 있는 것이 아닌가 하는 착각이 들 정도..
2026년 새해에 떠난 지리산 둘레길 걷기, 이제는 경상남도 지역으로 들어서서 걷기를 이어간다. 함양 지역의 둘레길 4코스는 출발 전에 벽송사를 거쳐서 갈지 아니면 임천을 따라서 와불산 아랫자락의 숲길과 용유담을 거쳐 갈지를 결정해야 한다. 벽송사를 거쳐 가는 방법이 오르막을 포함하고 있기 때문에 어려워 보이지만 쭉 올라갔다가 내려오는 단순한 경로이기 때문에 의외로 괜찮은 선택일 수 있다. 우리는 용유담 경유 코스를 선택했는데 오르락내리락하는 숲길을 걷느라 체력 소모가 적지 않았다. 두 코스를 모전 마을에서 합류한다. 금계 마을 입구에서 둘레길 4코스의 전체적인 그림을 살펴보고 본격적으로 걷기에 나선다. 멀리 보이는 천왕대불이 아침 햇살을 받아 선명하게 시야에 들어온다. 채석장 한쪽 면에 불상을 새겨 놓..
난이도가 상에 해당하는 지리산 둘레길 3코스 인월 - 금계 구간도 어느덧 절반을 넘기면서 마지막 고비인 등구재를 지나면 전라북도 남원시 산내면에서 경상남도 함양군 마천면으로 진입한다. 전라남도 구례군까지 더해 3개 도에 걸친 거대한 지리산 자락의 한축인 경상남도 함양군으로 들어서는 것이다. 등구재를 넘어서 창원마을 이후에 다시 숲길을 통해서 약간의 고갯길을 통과하면 목적지인 금계마을에 닿는다. 서진암 입구에는 넓은 쉼터가 마련되어 있어서 김밥을 먹으며 넉넉한 휴식 시간을 가질 수 있었다. 오늘은 3코스의 종점인 금계마을의 펜션을 숙소로 예약했기 때문에 버스 시간에 쫓기지 않고 여유를 갖고 쉴 수 있었다. 장항마을을 지나며 이어지던 포장길은 서진암 입구에서 끝나고 이제부터는 숲길 걷기에 나서야 한다. 서룡..
지리산 둘레길 3코스는 난이도가 "상"인 어느 정도 마음의 준비를 해야 하는 코스이다. 초반에는 람천을 따라 걷는 평탄한 길이지만 배너미재를 넘어가야 하는 난관이 있다. 산을 내려와 장항마을에 도착하며 남원시 인월면에서 산내면으로 건너가고 60번 지방도 천왕봉로를 가로지르면 삼봉산 자락에 위치한 서진암 입구까지 오르막길을 이어간다. 예전에 지리산을 오를 때면 구례구역에 새벽에 도착하는 기차를 타고 여행을 시작했는데, 이제는 밤 기차에서 잠을 자다가 새벽에 내리는 그런 기차는 운행하지 않는다. 고속열차를 타고 남원역에 내려서 지리산 둘레길을 걷는다는 생각을 하니 감회가 새롭다. 새벽 기차를 타고 내려와 화장실에서 물을 받아서 역 앞에서 밥을 해 먹고 산을 오르던 기억은 그저 낭만의 한 장면으로 남았다. ..
강천보를 지난 길은 단현동 마을길을 따라 남쪽으로 내려간다. 화창하던 하늘에 구름들이 몰려오니 길이 쌓인 눈과 함께 분위기가 왠지 을씨년스럽다. 단현동 마을길을 거쳐온 길은 여강길 표식을 따라서 여강길 1코스의 이름인 "옛 나루터길"의 유래인 옛 나루터들을 찾아 강변으로 나간다. 강변 산책로를 따라 찾아가는 첫 나루터는 "부라우 나루터"이다. 콘크리트 둔덕이 아닌 자연스러운 강변도 좋고 남한강을 옆에 두며 걷는 강변 숲길도 마음에 든다. 부라우 나루터는 강가 바위가 붉어서 붙은 이름이고 예전에는 중요한 나루터 중의 하나였다고 하는데 지금은 팻말만 남아있고 강물은 유유히 흐른다. 고려 때부터 일제 강점기 이전까지만 해도 남한강은 수운의 핵심 물길로 세곡을 안전하게 나르고 목재와 도자기 등을 실은 배들이 저..
2025년을 보내면서 여주 여행을 다녀왔다. 여주를 가로질러 흐르는 남한강을 여강이라 불렀는데 여강 주위를 도는 길이다. 11코스까지 있고 300리, 140Km에 이른다고 한다. 필자는 여강 주위의 코스 위주로만 조금씩 걸을 예정이다. 시작은 1코스 옛나루터길로 여주역에서 경강선 전철을 내려서 여정을 시작할 수 있으니 좋았다. 시내에서 강변으로 나가서 강변을 걸으며 여주대교, 이호대교, 남한강교를 지나고 소금산을 거쳐 도리마을에 이르는 여정이다. 여주역 앞에 자리한 "사랑으로 가는길, 행복으로 가는 길" 조형물. 팔을 벌려 환영하는 모습, 손을 들어 인사하는 모습 가운데 선글라스를 쓴 견공이 여행가방을 끌고 가는 모습이 익살스럽다. 만남의 반가움이 가득한 인물들의 표정에서 사랑, 행복을 엿볼 수 있었다..
겨울비가 내리는 2025년 막바지 서울 추억 여행을 다녀왔다. 필자의 청춘의 추억이 떠다니는 장소들을 옆지기와 조용히 다녀왔다. 이전에는 삶의 한 복판에 있던 공간인데 이제는 추억 여행지가 되었다는 점이 감회가 새롭다. 대중교통을 타고 이곳저곳을 돌아다니지만 추억 여행이라는 의도 때문인지, 지리를 대충 알고 있는 까닭인지, 빡빡하지 않은 시간 계획 때문인지 마음은 충분히 가볍다. 추억 여행의 시작은 4호선 충무로역이다. 복도에서 우리나라의 영화계를 주름잡았던 배우들의 모습을 만나니 그때 그 시절의 추억이 새록새록 돋아난다. 복도를 지나 지상으로 올라가면 대한극장이 있었지만 66년 역사의 대한극장은 2024년에 문을 닫았다. 대한극장, 스카라 극장, 피카디리 극장, 단성사, 서울극장, 명보극장 등 극장 거..
2025년 끝자락, 겨울비가 그친 주말에 아산 나들이에 나섰다. 아산에 여러 가지 볼거리가 있지만 가볍게 걸을 수 있는 신정호 둘레길과 온양온천 전통시장을 다녀오기로 했다. 신정호는 1호선 전철 온양온천역에서 600번이나 610번을 타면 대중교통으로 어렵지 않게 닿을 수 있다. 호수 주변으로 무료 주차장이 여러 곳에 조성되어 있어서 자동차로 가기에도 부담이 없는 곳이다. 신정호는 남북으로 길게 뻗어 있는데 신정호 관광단지가 있는 북동쪽 주차장이 있는 곳에서 신정호 호수 둘레길 걷기를 시작한다. 한쪽으로는 메타세쿼이아가 쭉쭉 뻗어서 호수에 그림자를 드리우고 있고 날씨가 맑지 않아도 그 나름의 평화로운 분위기를 자아낸다. 깔끔하게 조성되어 있는 호수 둘레길은 약 4.8Km 정도이므로 가볍게 걸을 수 있는 ..
설봉산 걷기를 끝내고 카페에서 넉넉한 휴식 시간을 가지며 오후 시간을 구상해 보았는데 걸어서 갈 수 있는 이천시립박물관과 관고 전통 시장이 시야에 들어왔다. 많은 정보가 없는 상태에서 선택한 곳이었는데 두 군데 모두 상상 이상으로 좋았다. 설봉 공원 길을 따라 내려가면서 상단이 한옥 형식으로 지어진 이천 시립 박물관을 찾았다. 커피를 마시던 카페가 위치한 경기 도자 미술관의 전시를 둘러볼까 하는 생각도 있었다. "호모 세라미쿠스"라는 기획전도 열리고 있었는데 옆지기는 그리 마음에 닿지 않았던 모양이다. 그런데, 이천 시립 박물관은 이천의 역사뿐만 아니라 상설 전시 공간에서는 역사를 따라 다양한 도자기 전시를 만날 수 있었다. 상상 이상의 만족도 최상의 박물관이었다. 친절한 안내는 덤이었다. 입구에 "유네..
2025년의 가을 세찬 바람과 함께 흘러 떠나고 있다. 그 끝자락에서 경기도 이천으로 걷기 여행을 떠났다. 경강선 전철을 타면 닿을 수 있는 곳이다. 설봉산을 중심으로 걷는, 많이 힘들지도 너무 가볍지도 않은 여행이었다. 이천역에서 설봉산까지는 3Km 내외의 거리로 걸어갈 수도 있지만, 버스를 타기로 했다. 이천역에서 내리면 버스들이 기다리고 있는데 대부분의 버스가 설봉산 인근으로 간다고 해도 과언이 아니다. "설봉산 입구" 정류장에서 하차하면 된다. 10분 정도 걸린다. 관고 1교를 넘어서서 설봉호에서 내려오는 물길을 따라 올라가는 것으로 설봉산 걷기를 시작한다. 관고동이라는 이름이 특이한데 원래는 관아 뒤에 있는 마을이라고 해서 관후동이라 했고, 이후에 관아의 창고가 있는 마을이라고 관후동이라고 불..
■ 목차├ 1. SimpleToDoList 들어가기├ 2. 프로그램 동작 및 구조├ 3. 어노테이션과 코드 생성기├ 4. 프로그램 시작 및 종료와 JSON 파일 읽고 쓰기└ 5. 뷰와 아발로니아 요소들 1. SimpleToDoList 들어가기크로스플랫폼 닷넷 UI 프레임워크인 아바로니아 맛보기를 넘어서서 본격적인 활용에 들어가기 위한 학습 방법으로 필자는 예제 프로그램 리뷰를 하나씩 수행하기로 했다. 기술 자료가 넉넉하고, 비주얼스튜디오의 WPF 디자이너와 같은 도구가 있다면 넘어갈 수도 있는 문제겠지만 지금까지 접하지 않았던 새로운 도구와 친숙해지는 방법은 역시 예제를 통하는 것이 좋은 방법이 아닌가 싶다. 공식 예제 코드는 깃허브 https://github.com/AvaloniaUI/Avalonia...
■ 목차├ 1. DialogManagerSample 들어가기├ 2. 프로그램 동작 및 구조├ 3. 대화창 서비스 구현 방법└ 4. 뷰와 아발로니아 요소들 1. DialogManagerSample 들어가기크로스플랫폼 닷넷 UI 프레임워크인 아바로니아 맛보기를 넘어서서 본격적인 활용에 들어가기 위한 학습 방법으로 필자는 예제 프로그램 리뷰를 하나씩 수행하기로 했다. 기술 자료가 넉넉하고, 비주얼스튜디오의 WPF 디자이너와 같은 도구가 있다면 넘어갈 수도 있는 문제겠지만 지금까지 접하지 않았던 새로운 도구와 친숙해지는 방법은 역시 예제를 통하는 것이 좋은 방법이 아닌가 싶다. 공식 예제 코드는 깃허브 https://github.com/AvaloniaUI/Avalonia.Samples 에서 받을 수 있다. 커뮤..
■ 목차├ 1. MvvmDialogSample 들어가기├ 2. 프로그램 동작 및 구조├ 3. 두 가지 Interaction 구현 방법└ 4. 뷰와 아발로니아 요소들 1. MvvmDialogSample 들어가기크로스플랫폼 닷넷 UI 프레임워크인 아바로니아 맛보기를 넘어서서 본격적인 활용에 들어가기 위한 학습 방법으로 필자는 예제 프로그램 리뷰를 하나씩 수행하기로 했다. 기술 자료가 넉넉하고, 비주얼스튜디오의 WPF 디자이너와 같은 도구가 있다면 넘어갈 수도 있는 문제겠지만 지금까지 접하지 않았던 새로운 도구와 친숙해지는 방법은 역시 예제를 통하는 것이 좋은 방법이 아닌가 싶다. 공식 예제 코드는 깃허브 https://github.com/AvaloniaUI/Avalonia.Samples 에서 받을 수 있다...
■ 목차├ 1. ValueConversionSample 들어가기├ 2. 프로그램 동작 및 구조├ 3. 세 가지 변환기 구현 방법└ 4. 뷰와 아발로니아 요소들 1. ValueConversionSample 들어가기크로스플랫폼 닷넷 UI 프레임워크인 아바로니아 맛보기를 넘어서서 본격적인 활용에 들어가기 위한 학습 방법으로 필자는 예제 프로그램 리뷰를 하나씩 수행하기로 했다. 기술 자료가 넉넉하고, 비주얼스튜디오의 WPF 디자이너와 같은 도구가 있다면 넘어갈 수도 있는 문제겠지만 지금까지 접하지 않았던 새로운 도구와 친숙해지는 방법은 역시 예제를 통하는 것이 좋은 방법이 아닌가 싶다. 공식 예제 코드는 깃허브 https://github.com/AvaloniaUI/Avalonia.Samples 에서 받을 수 있..
■ 목차├ 1. ValidationSample 들어가기├ 2. 프로그램 동작 및 구조├ 3. UI 항목 검증 세 가지 방법└ 4. 뷰와 아발로니아 요소들 1. ValidationSample 들어가기크로스플랫폼 닷넷 UI 프레임워크인 아바로니아 맛보기를 넘어서서 본격적인 활용에 들어가기 위한 학습 방법으로 필자는 예제 프로그램 리뷰를 하나씩 수행하기로 했다. 기술 자료가 넉넉하고, 비주얼스튜디오의 WPF 디자이너와 같은 도구가 있다면 넘어갈 수도 있는 문제겠지만 지금까지 접하지 않았던 새로운 도구와 친숙해지는 방법은 역시 예제를 통하는 것이 아닌가 싶다. 공식 예제 코드는 깃허브 https://github.com/AvaloniaUI/Avalonia.Samples 에서 받을 수 있다. 커뮤니티에서 발굴해 놓..
■ 목차├ 1. CommandSample 들어가기├ 2. 프로그램 동작 및 구조├ 3. 서브 뷰 내포시키기├ 4. 뷰와 아발로니아 요소들└ 5. ReactiveUI와 CommunityToolkit.Mvvm 1. CommandSample 들어가기크로스플랫폼 닷넷 UI 프레임워크인 아바로니아 맛보기를 넘어서서 본격적인 활용에 들어가기 위한 학습 방법으로 필자는 예제 프로그램 리뷰를 하나씩 수행하기로 했다. 기술 자료가 넉넉하고, 비주얼스튜디오의 WPF 디자이너와 같은 도구가 있다면 넘어갈 수도 있는 문제겠지만 지금까지 접하지 않았던 새로운 도구와 친숙해지는 방법은 역시 예제를 통하는 것이 아닌가 싶다. 공식 예제 코드는 깃허브 https://github.com/AvaloniaUI/Avalonia.Sample..
■ 목차├ 1. BasicMvvmSample 들어가기├ 2. 프로그램 동작 및 구조├ 3. 뷰와 아발로니아 요소들└ 4. ReactiveUI와 MVVM 패턴 1. BasicMvvmSample 들어가기크로스플랫폼 닷넷 UI 프레임워크인 아바로니아 맛보기를 넘어서서 본격적인 활용에 들어가기 위한 학습 방법으로 필자는 예제 프로그램 리뷰를 하나씩 수행하기로 했다. 기술 자료가 넉넉하고, 비주얼스튜디오의 WPF 디자이너와 같은 도구가 있다면 넘어갈 수도 있는 문제겠지만 지금까지 접하지 않았던 새로운 도구와 친숙해지는 방법은 역시 예제를 통하는 것이 아닌가 싶다. 공식 예제 코드는 깃허브 https://github.com/AvaloniaUI/Avalonia.Samples 에서 받을 수 있다. 커뮤니티에서 발굴해 ..
닷넷 기반의 크로스 플랫폼 UI인 아발로니아를 VS2022에서 맛보기로 했다. 아발로니아 UI 사이트에서는 윈도우 플랫폼에서는 VS2022를 추천하고 있고 맥이나 리눅스에서는 젯브레인 라이더를 추천하고 있으니, 일단 윈도우에서 추천하는 VS2022로 아발로니아 UI 개발을 맛보기로 했다. VS2022 커뮤니티 버전을 설치하고 위의 그림과 같이 "Avalonia for Visual Studio"를 설치한다. 아발로니아 확장을 정상적으로 설치하면 새 프로젝트 만들기 화면에서 "avalonia"를 검색하면 위의 그림처럼 여러 연관 템플릿을 확인할 수 있다. "Avalonia .NET MVVM App"을 선택한다. 프로젝트 폴더를 선택하고 [다음]을 누른다. 닷넷 코어 버전을 프레임워크에서 선택하고 나머지는 ..
VS Code에서 아발로니아 UI(AvaloniaUI, "아발로니아 UI에 대한 고찰" 참조)를 응용을 빌드하고 실행하는 과정을 수행하려면 일단 닷넷 SDK와 아발로니아 프로젝트 템플릿을 준비해야 한다. 닷넷 SDK는 위의 그림처럼 명령창을 열어서 "dotnet --list-sdks"로 간단히 확인할 수 있으며("설치된 닷넷 SDK와 닷넷 런타임을 확인하기" 참조), 아발로니아 프로젝트 템플릿도 "dotnet new install Avalonia.Templates" 명령으로 간편하게 설치할 수 있다. 설치 결과를 보면 많이 사용하는 "Avalonia .NET App", "Avalonia .NET MVVM App" 템플릿 이외에도 여러 템플릿이 있음을 확인할 수 있다. 닷넷 SDK 버전은 "Avalonia..
프로그램 개발 후 필요가 있을 때 일시적으로 사용하는 프로그램이 아니라면 시간이 흐름에 따라 문제가 발생하는지 꼭 확인할 필요가 있다. Long Run Test, Aging Test와 연관된다고 할 수 있다. 코어 덤프로 프로그램이 죽는다면 어디가 문제인지 명확하지만 메모리 누출, 핸들 누출등이 있다면 조금은 난감한 상황이 될 수 있다. 재현이 빠르게 될 수 있다면 어떻게든 문제를 찾을 수 있겠지만 장시간 수행 시켜야 알 수 있다면 정말 난감할 수 있다. 그럼에도 메모리 누출, 핸들 누출, CPU 과점 등은 얼마간의 모니터링으로 그 추세를 판단할 수 있다. 본 포스팅은 윈도우의 성능 모니터를 통해서 간편하게 프로그램과 연관된 시스템 자원 정보를 로그로 남기는 과정을 다루고자 한다. 윈도우+R 단축키로 p..
닷넷 기반의 크로스플랫폼 프로그램을 개발하려다 보니 자연스레 닷넷 SDK와 닷넷 코어 또는 닷넷 런타임이라는 용어를 자주 접하게 된다. 윈도우 전용이라 할 수 있는 닷넷 프레임워크는 "설치된 닷넷 프레임워크 버전 확인하기"에서와 같이 조금 복잡하게 확인하지만 닷넷 SDK와 닷넷 런타임은 조금 더 간단하게 확인할 수 있다. 그리고 명령어도 크로스플랫폼이다. 윈도우+r 단축키로 실행창에서 cmd를 구동시켜서 "dotnet --info" 명령을 수행하면 위의 그림처럼 설치된 SDK와 런타임을 한 번에 확인할 수 있다. 리눅스에서는 콘솔창에서 해당 명령을 수행하면 된다. 위의 그림은 우분투에서 "dotnet --info" 명령을 수행한 결과이다. SDK나 런타임 설치 내역만 조회하려면 다음의 명령을 사용한다..
프로그램 개발 및 유지 보수의 생산성을 높이고, 협업으로 시너지를 높일 수 있는 아키텍처는 지속적으로 개발되어 왔는데 대표적인 예들은 아래와 같다.MVC (Model, View, Controller)MVP (Model, View, Presenter)MVI (Model, View, Intent)MVVM (Model, View, View Model)이번에 다룰 MVVM은 MVC에서 파생된 것으로 차이점이라면 MVC 모델에서는 Controller가 입력을 받는다면 MVVM에서는 View에서 입력을 받는다. 무엇보다 WPF 응용에서 가장 널리 사용하는 프로그래밍 패턴이다. 물론 크로스플랫폼 UI인 아발론 UI에서도 MVVM을 채용하고 있다. MVVM은 각 요소를 독립적으로 개발 및 테스트를 진행할 수 있도록 만..
VSCode의 인기는 나날로 늘어가고 있는 모양새다. 이런저런 용도로 개발자에게 큰 도움을 주는 도구가 되어 가고 있다. 통합 개발 환경에서도 텍스트 편집기에서도 소스코드를 열면 언어별 문법 요소에 따라 색상을 구분해서 출력해 주는데 이런 기능을 Syntax Highlighting이라 부른다. 그런데, 개인적인 취향 또는 특정한 필요에 따라서 이 색상을 변경할 경우가 있다, 이번 포스팅은 문법 구분 색상을 바꾸는 방법을 간단히 메모한다. 파일> 기본 설정> 설정 메뉴 또는 Ctrl+, 단축키로 설정창을 연다. 설정 창에서 확장> CSS 언어 기능> JSON을 선택하고 우측에서 [settings.json에서 편집]을 클릭한다. 편집창이 열리면 위의 그림처럼 "editor.tokenColorCustomiza..
필자가 아날로니아 UI를 사용하는 크로스플랫폼 앱을 개발하기 위한 사전 단계로 WPF 프로그램을 만드는 과정을 밟아 보고자 한다. 비주얼스튜디오 2019를 사용하고 있는 관계로 비주얼스튜디오를 기반으로 프로그램을 만들어 본다. Window+R 단축키로 "devenv"를 입력하여 비주얼스튜디오 2019를 실행시킨다. [새 프로젝트 만들기]를 선택하고 위의 그림처럼 템플릿 검색창에 wpf를 입력하면 연관된 다양한 템플릿을 만날 수 있는데 C# 기반의 닷넷 코어를 사용하는 템플릿을 선택하고 [다음]을 누른다. 프로젝트 구성은 원하는 폴더와 이름으로 적절히 입력한 다음에 [다음]으로 진행한다. 끝으로 적용할 닷넷 버전을 선택하고 [만들기]를 클릭하면 지정한 템플릿으로 프로그램을 생성한다. 프로젝트가 생성되면 위..
C# 닷넷 환경에서 개발한 프로그램을 윈도우나 리눅스, 맥에 그대로 실행하는 데 있어 가장 큰 장애가 되는 것은 UI 프레임워크이다. WinForms 기반으로 뚝딱뚝딱 프로그램을 만들었던 경험이 있던 개발자가 닷넷 환경을 생각하며 리눅스에서 프로그램을 실행하면 아주 간단한 프로그램이야 별 차이 없이 동작하는 것처럼 보이기도 하지만 UI가 조금이라고 복잡해지고 깊이가 있으면 화면이 깨지거나 아예 실행이 실패하기도 한다. 그래서, 크로스플랫폼을 지원하는 UI 프레임워크를 찾아보다가 아발로니아 UI를 만나게 되었다. 크로스플랫폼을 바이너리 레벨, 즉, 런타임 레벨로 지원하는 것은 아니다. 하나의 소스 코드로 여러 가지 플랫폼에서 구동하는 프로그램을 작성하고자 하는 개발자에게 적절한 솔루션이다. 소스 코드는..