기본 콘텐츠로 건너뛰기

5월, 2024의 게시물 표시

WCF를 IIS에서 호스팅하기

개발 중인 프로그램을 PoC(Proof of Concept) 환경에 맞게 수정 중에 있습니다. PoC를 수행하는 장소의 여건 상 서버를 두지 못하여 서버에서 운영하던 WebService를 로컬 장비에서 운영하기로 했습니다. 먼저 NGINX로 WebService를 구동하려고 했는데 도무지 WCF에 대한 환경 설정을 할 수가 없어서 포기하고 IIS로 하기로 했습니다. (NGINX에서 WCF WebService를 운영하는 방법을 알고 계시면 공유 부탁합니다.) 로컬 장비에(Windows 10)에서 IIS를 설치( [참조 사이트] )하고 사이트를 생성하여 접근하니 아래와 같은 오류가 발생했습니다. 이 구성 섹션은 이 경로에서 사용할 수 없습니다. 섹션이 부모 수준에서 잠겨 있는 경우 이 오류가 발생합니다. 이러한 잠금은 기본적으로 설정(overrideModeDefault="Deny")되거나 overrideMode="Deny" 또는 레거시 allowOverride="false"와 함께 위치 태그를 사용하여 명시적으로 설정합니다. 열심히 구글링해서 찾아본 해결책들은 아무런 도움이 되지 않았습니다. 퇴근 시간이 다가올수록 짜증도 같이 올라옵니다. 여러가지 해결책들 중에서 WCF 서비스를 활성화 시켜보라 는 글을 보고 윈도우즈 기능 켜기/끄기 에서 WCF 서비스를 찾아 HTTP 활성화 를 체크하고 사이트에 접근하니 드디어 제대로 동작합니다. 기존에 사용하던 MS-SQL Server도 설치하지 못하기 때문에 SQLite로 변경하기로 했습니다. Web.config에서 connectionString 섹션을 SQLite에 맞게 변경합니다. <connectionStrings> <add name="ARS" providerName="System.Data.SQLite" connectionString="data ...

Undo, Redo 개선

요즘 대부분의 프로그램에서 Undo, Redo 기능을 지원하고 있습니다. 고객사에서 Undo 기능이 제대로 동작하지 않는다고 오류 접수를 해서 코드를 확인해 보니 아래와 같이 되어 있었습니다. public class UndoRedoData { /// 현재 화면에 보이는 아이템의 레퍼런스 public CommentUserInfo Item { get; set; } /// 아래는 Undo, Redo를 하기 위한 속성들 public List<Point> PointSet { get; set; } public double LineSize { get; set; } public DoubleCollection DashSize { get; set; } public Double Opacity { get; set; } public Controls.Common.PaintSet paint { get; set; } public double Angle { get; set; } } 이 코드를 보는 순간 '잘못 되었구나'라는 생각이 들었습니다. Item 속성 밑에 있는 것들은 모두 CommentUserInfo 클래스의 속성들 중 일부였습니다. 아마도 이 코드를 작성한 개발자는 Undo, Redo 기능을 개발하면서 필요한 속성들을 그때 그때 추가한 것 같았습니다. 'LineSize는 적용되는데 DashSize는 적용 안되네'하고 DashSize를 추가하고 마찬가지로 Opacity, Angle도 그렇게 추가한 것 같았습니다. 나중에 추가 기능이 필요해서 CommentUserInfo에 속성을 추가하면 UndoRedoData에도 속성을 추가해야 합니다. 관리해야 할 지점이 2군데가 되고 그만큼 버그가 발생할 확률도 높아집니다. 이런 식의 작업은 계속 속성들을 추가할 것이고 결국에는 CommentUserInfo와 같아질 것입니다. 따라서 UndoRedoData에 ...

[Jenkins] Change Assembly

프로그램의 Build Number를 바꾸기 위해 Change Assembly Version이라는 Plugin을 사용했었습니다. 하지만 아래 그림처럼 Jenkins에서 설정한 Parameter를 적용할 수가 없어서 다른 방법을 찾다가 PowerShell을 이용해서 적용하는 방법을 찾았습니다. 아래 그림처럼 Parameter를 사용하려고 했지만 적용되지 않았습니다. 아래 PowerShell 코드를 사용하면 매개 변수로 설정한 Parameter를 적용할 수 있습니다. COMPANY라는 Parameter는 PowerShell에서 $env:COMPANY 로 접근할 수 있습니다. # Get the AssemblyInfo.cs $assemblyInfo = Get-Content -Path .\$env:COMPANY\Properties\AssemblyInfo.cs # Replace last digit of AssemblyVersion $assemblyInfo = $assemblyInfo -replace "^\[assembly: AssemblyVersion\(`"([0-9]+)\.([0-9]+)\.([0-9]+)\.[0-9]+`"\)]", ('[assembly: AssemblyVersion("$1.$2.$3.' + $env:BUILD_NUMBER + '")]') Write-Host ($assemblyInfo -match '^\[assembly: AssemblyVersion') # Replace last digit of AssemblyFileVersion $assemblyInfo = $assemblyInfo -replace "^\[assembly: AssemblyFileVersion\(`"([0-9]+)\.([0-9]+)\.([0-9]+)\.[0-9]+`"\)]", (...