비주얼 스튜디오 코드로 개발한 C# 닷넷 프로그램의 코어 덤프 보는 방법을 메모해 둔다.윈도우에서 Exception으로 프로그램이 죽는 경우 코어 덤프를 남기는 방법은 "윈도우 10에서 프로그램 비정상 종료 시 덤프를 남기도록 설정하는 방법"을 참조한다. 위의 그림과 같이 코어 덤프가 남는 경우 비주얼스튜디오로 열어 볼 수도 있지만 VS Code만 가지고 작업하는 환경이라면 닷넷 덤프를 활용할 수 있다. 우선 위의 그림처럼 "dotnet tool install -g dotnet-dump" 명령으로 닷넷 덤프 프로그램을 설치한다. 파워쉘이나 콘솔 창에서 "dotnet-dump analyze .\AppTest.exe.6204.dmp"처럼 코어 덤프를 열고 필요한 명령을 내릴 수 있다. 프로그램을 실행하면 ..
시간이 갈수록 DBMS 개발사에서 개발자가 사용에 편리하도록 기능을 추가하고 수정하는 경향은 당연한 듯 보이지만 각 DBMS의 특성 때문에 어쩔 수 없이 서로 다른 문법을 유지할 수밖에 없는 것은 개발자가 감수해야 하는 상황으로 보인다. C# 닷넷으로 개발한다면 DbProviderFactories를 이용하여 서로 다른 DBMS를 사용하는 환경 속에서도 응용 프로그램의 변경을 최소화할 수 있는데 이 경우에도 DBMS 간의 SQL 차이 있는 부분은 어쩔 수 없이 서로 다른 SQL을 사용해야 한다. 물론 단순 SELECT, INSERT, UPDATE, DELETE 명령을 사용한다면 하나의 응용 프로그램 로직으로 여러 가지의 DBMS에 대응할 수 있다. 본 포스팅에서는 SQLite3와 SQL Server의 SQ..
"무료 DB SQL Server Express 설치 및 사용" 글에 이어지는 포스팅입니다.소규모 시스템에 적용하기 좋은 DBMS인 SQL Server Express를 설치하고 네트워크 설정과 DB 생성, DB 사용자 추가 등으로 개발 준비를 마쳤으면 본격적인 개발에 앞서 주요 DB 기능 들이 정상적으로 동작하는지 간단한 프로그램을 통해서 테스트를 수행하고자 한다. 닷넷 8.0 이상의 SDK와 VS Code 환경에서 진행한다. 위의 그림처럼 콘솔 창에서 작업 폴더로 이동하여 "dotnet new console -n SqlTest2" 명령으로 SqlTest2라는 이름 C# 콘솔 프로젝트를 생성한다. VS Code로 해당 폴더를 열면 위의 그림처럼 콘솔 프로젝트 템플릿으로 만들어진 파일들을 확인할 수 있는..
이번 TMB 걷기 여행의 마지막 고개인 발므 고개(Col de Balme, 2,191m)에 오르니 만감이 교차합니다. 첫날부터 오늘까지 계속 화창한 날씨로 알프스의 아름다움을 만끽할 수 있었던 감사도 있었지만, TMB 2일 차에 거의 탈진 상태로 산장에 도착했던 경험과 클래식 TMB 경로가 아닌 곳을 걸었던 TMB 3일 차, 4일 차의 아찔한 기억은 어려운 가운데서도 결코 잊을 수 없는 소중한 기억으로 남았습니다. 발므 고개에서 바라보는 프랑스 샤모니 방향의 풍경은 가까이는 케이블카 종점을 중심으로 널찍한 초지가 펼쳐져 있고 그 뒤로는 빙하를 머리에 이고 있는 고봉들이 자리하고 있습니다. 저희가 발므 고개에 도착한 시간이 오전 10시경이었는데 딸랑딸랑 워낭 소리를 내며 한 무리의 소떼들이 케이블카 정류..
오픈 소스 DBMS가 시장의 절반을 넘기고 있는 상황에서 상업용 DBMS를 만드는 업체들의 전략도 변화하고 있다. 이른바 개발자를 포섭하는 전략이다. 이전에도 마이크로소프트에서 SQL Server Express를 무료로 배포하기는 했지만 등록을 해야 하거나 재배포는 허락하지 않는 상황이었다. 그러나 2012 버전부터는 등록이 필요 없고 재배포도 가능하다. 상용 프로그램에 번들해서 재배포도 가능한 것이다. 용량 제한이나 시스템 자원 제한이 방해가 되지 않는 다면 얼마든지 사용할 수 있다. 제한 없이 사용하고 싶어서 SQL Server Standard나 SQL Server Enterprise 라이선스를 구매한다면 응용 프로그램은 변경하지 않고 새로운 DBMS에 바로 적응할 수 있으니 나름 똑똑한 개발자 포섭..
"무료 SQL Server Developer 설치하기"와 "SQL Server Developer 외부 연결과 DB/DB 사용자 생성하기" 글에 이어지는 포스팅입니다. DBMS 설치, DB 생성, DB 사용자 추가 및 권한 부여 등으로 DB 접속을 수행하는 프로그램 개발 준비가 되었다면 C# 언어를 통해서 해당 DB에 접속하여 테이블 생성, 데이터 추가 및 삭제, 검색 등을 수행하고자 한다. 닷넷 코어 8.0 이상의 SDK 환경과 텍스트 편집기를 도구로 사용한다. 파워쉘을 열고 위의 그림처럼 C# 콘솔 프로그램을 추가하고 해당 프로젝트에 Microsoft.Data.SqlClient 패키지를 추가한다. dotnet new console -n SqlTest cd SqlTest dotnet add packag..
"무료 SQL Server Developer 설치하기"글에 이어지는 포스팅입니다. 앞선 글에서는 무료 DBMS인 SQL Server Developer를 설치하고 DB 인스턴스를 생성한 다음 윈도우 인증으로 해당 데이터베이스 인스턴스에 연결 성공한 것까지 진행했다. 이번에는 외부에서 네트워크로 데이터베이스 인스턴스에 연결하여 개발을 위한 DB를 생성하고 해당 DB에 접근하여 테이블을 생성, 삭제 및 변경할 수 있는 사용자를 추가하는 과정을 다루고자 한다. 일단 powershell을 열고 위와 같이 "netstat -a | select-string LISTEN" LISTENING 상태의 포트들 즉, 서비스 상태인 TCP 포트들을 확인할 수 있는데 목록에는 SQL Server의 기본 포트인 1433을 찾을 수..
오랜만에 SQL Server DBMS와의 만남을 갖게 되었다. 오랜 시간 오픈 소스 DBMS만 사용해서 그런지 감회가 새롭다. 상당한 시간이 흐른 사이에 SQL Server에도 많은 변화가 있었던 모양이다. 위의 그림처럼 기능이 제한되며 Stand alone 환경에서 주로 사용하는 SQL Server Express 말고도 2016 버전부터는 SQL Server Developer 에디션을 배포하고 있었다. SQL Server Enterprise 에디션과 기능은 동일하면서도 무료이다. 물론 개발과 테스트 용도로 사용할 수 있고 실제 현장(프로덕션 시스템, Production System)에서는 사용할 수 없다. 프로그램 개발자 입장에서는 반가운 환경이 아닐 수 없다. 설치 프로그램 다운로드는 https:..
이순신 장군의 도시라 할 수 있는 충남 아산시를 걷고 있는 백의종군길 4코스는 장군의 묘소를 들른 다음에는 음봉천을 따라서 내려간다. 동천 2교로 음봉천을 건넌 이후로는 동천 2리 방향으로 이동하여 방현리로 이어지는 고개를 넘어간다. 아산시 염치읍 방현리로 넘어온 길은 방현리의 들길을 가로질러 송곡리를 거쳐 염치읍 백암리에 위치한 현충사에서 여정을 마무리한다. 이충무공 묘소 입구를 지난 길은 장군의 묘역으로 이어진다. 홍살문은 "붉은색은 악귀를 쫓고 화살은 액운을 물리친다"는 의미로 능 앞에 세우기도 하고 효자나 열녀가 있는 마을 입구에도 세웠다고 한다. 어찌 보면 일본의 신사 앞에 세우는 도리이와 비슷하게 보이는데 홍살문이 신라 때부터 있었던 것으로 미루어 보면 홍살문과 도리이가 모두 인도 불교 건축에..
이 충무공의 도시라 해도 무리가 없는 충남 아산시로 진입한 백의종군길은 봉재저수지를 지나면서 아산시 둔포면에서 음봉면을 들어가고 음봉면로 도로를 따라 고개를 넘어 이충무공 묘소에 이른다. 주한 미군 대상 렌털 하우스가 많은 유에스빌리지 외곽을 돌아서 가는 길은 둔포면 둔포리에서 운교리로 넘어간다. 호기심에 조용한 마을을 가로지르는 기존의 백의종군길보다는 리본을 따라서 가는 지금의 길로 가니 친절하게 데크길도 마련해 놓았다. 운교리로 넘어가는 길에 배추처럼 생긴 것을 심어 놓았는데 근처에서 밭일하시는 분이 담배라고 알려 주신다. 재배와 판매가 엄격히 관리되는 작물인데 수확과 건조 과정이 모두 수작업이다 보니 전국적으로 재배 면적이 줄고 있다고 한다. 놀랍게도 잎담배 수입량이 84%에 이른다고 한다. 수입량..
백의종군길 4코스는 급한 경사나 오르막이 없는 평탄한 길이지만 33Km라는 거리는 만만한 거리가 결코 아니다. 서울에서 출발하여 수원, 오산을 거쳐 평택까지 내려온 길은 드디어 충청남도 아산시로 진입한다. 현충사와 이순신 장군의 무덤이 있는 곳이라 백의종군길 표식도 촘촘하고 친절하게 되어 있다. 평택역에서 시작하는 백의종군길 4코스는 평택시 원평동을 경기도의 마지막 지역으로 하여 길을 시작한다. 원평동이라는 이름은 원래 평택의 중심지였다는 의미라고 한다. 평택역이 생기면서 원래는 이곳으로 사람들이 모이고 번화가를 이루었으나 1946년에 대홍수가 나면서 번화가의 중심이 역 반대편으로 넘어갔다고 한다. 길 시작 지점에서 만나는 빨간색 이순신 백의종군길 리본은 걷는 이의 힘을 돋우고 기분을 환하게 밝혀준다...
오산을 지나서 평택까지 내려온 백의종군길 3코스는 삼남로 도로를 따라 내려가며 신도시 건설 현장을 가로질러 내려간다. 삼남로는 평택제천 고속도로를 지나서 45번 국도와 교차하는 동삭교차로부터는 동삭로를 따라 내려가고 경기대로를 만나면서 통복시장 지역으로 들어가서 원평노을지하차도를 통해 평택역 뒤편으로 돌아가 여정을 마무리한다. 염봉재 고개로 오르는 길은 이 지역이 농촌 지역이라는 것을 보여주듯이 농업용 수로가 삼남로 도로를 가로지르고 있다. 이런 형태로 4차선 대로를 가로지르는 수로는 처음 보는 것 같다. 삼남로 한쪽으로는 노란색의 아기똥풀이 존재감을 드러낸다. 양귀비과의 식물로 줄기나 잎을 자르면 아기똥색의 액체가 나온다고 붙은 이름이다. 4월이면 우리나라 도로변 곳곳에서 어렵지 않게 만날 수 있는 두..
오산시로 넘어오며 경부선 철길을 가로지른 백의종군길 3코스는 오산천을 건너서 1번 국도인 오산로를 따라 내려가다가 경기대로를 거쳐 동부대로를 따라 진위에 이른다. 진위면 행정복지센터를 지나면 삼남로를 따라서 큰 흔치 고개를 넘는다. 오산대교로 오산천을 건너며 바라보는 오산천의 모습은 참 좋은 모습이다. 자연 하천 옆으로 연둣빛 여린 잎을 내고 있는 버드나무도 좋고 화창한 천변 산책길을 걷는 사람들의 모습도 좋다. 용인에서 발원하여 평택 진위천으로 합류한다. 수달도 산다고 한다. 옛 1번 국도인 오산로를 따라서 오산역 방향으로 이동하는 길은 옛 1번 국도라는 이름값을 하는 듯 구도심이 이어진다. 오산 오색시장도 지난다. 오산시장, 오산중앙시장으로 불리던 전통 시장인데 그 역사가 정조대왕까지로 거슬러 올라간..
서울에서 시작한 이순신 백의종군로는 3코스를 걸으며 이제 화성시의 동쪽 끝자락을 출발하여 오산시를 거쳐 평택까지 내려간다. 대부분이 시가지를 가로지르는 길이다. 서울에서 출발했던 지난 1,2 코스의 걷기 강도에 충격을 받아서인지 몰라도 경기도 화성에서 출발하는 3코스 걷기 시작점에서는 묘한 긴장감이 흐른다. 그래서, 이른 아침에는 아직 쌀쌀하지만 복장도 많이 가벼워졌다. 사월 초파일을 한 달여 남겨둔 시점에 용주사 앞에는 벌써 연등이 달리기 시작했다. 용주사 건너편으로는 정조 부부와 사도세자 부부의 무덤인 융릉과 건릉이 있지만 길은 융건릉을 뒤로하고 동남 방향으로 이동한다. 용주사 현판 앞을 지나서 용주로 도로를 따라 동쪽으로 걷는다. 용주사는 정조가 중건한 능침사찰이라고 하는데 능침사찰은 왕릉 인근에 ..
닷넷 프로젝트를 수행하다 보면 기본적으로 솔루션 파일(*.sln 또는 *.slnx)과 함께 프로젝트 파일(*.csproj)을 템플릿을 통해서 제작하는 것으로 시작한다. 그런데 개발 과정에서 간단하게 실제 동작을 테스트 해보고 싶은 경우에 개발 중인 프로젝트에 코드를 삽입해서 실행시키는 것은 조금 부담되는 것이 사실이다. 이런 경우에 기존 프로젝트와는 별개로 *.cs로 간단한 테스트 코드를 하나 작성해서 빌드하고 실행시켜 보는 것이 효과적이다. 예를 들면 C 프로그램을 "cc -o testpgm testpgm.c" 처럼 간단하게 빌드하는 것처럼 C# 프로그램도 빌드하고 싶은 것이다. 일단 닷넷 10부터는 기본적으로 "dotnet run testpgm.cs" 처럼 수행하면 프로젝트 파일 없이 개별 코드를 바..