Programming109 [.NET] 대량 데이터 Insert하기(SqlBulkCopy.WriteToServer) 최근 결제 모듈의 성능을 개선하는 업무를 하고 있다. 기존의 방식은 몇 만건이 되는 결제를 1건에 1번씩 결제 API를 호출하는 방식이었다. 우리가 이용하는 PG사에서 너무 버겁다고 항의했다고 한다. 그래서 대량으로 결제 API로 변경하기로 했다. 열심히 구현을 하던 중 문제가 발생했다. 결제 정보를 가져오는 API에서 15만 건의 데이터를 가져와서 DB에 Insert 해야 하는데 성능이 나오지 않는 것이다. 이것저것 시도해보다가 결국 갓택오버플로우의 힘을 빌렸다. SqlClient의 SqlBulkCopy Class를 이용하는 방법이 있다고 한다. WriteToServer method를 이용하여 C# DataTable을 DB 테이블로 bulk로 Insert 할 수 있는 기능이었다. 효과는 굉장했다! da.. 2021. 9. 23. [.NET] Generic Method의 T(Type Parameter) Property 접근하기 Generic Method를 생성했는데 T.Property로 접근할 수 없다. 다음과 같은 컴파일 에러가 발생한다. 1. Interface를 이용하는 방법 공통 IExample class를 만들고, Generic method에는 where generic type constraint로 generic type을 특정해주면 된다. public interface IExample { public int Property1 { get; } } public class A : IExample { public int Property1 { get; set; } public string A1 { get; set; } } public class B : IExample { public int Property1 { get; set.. 2021. 9. 22. [MS-SQL] DELETE, UPDATE 문에서 Alias 사용 간단한데 늘 헷갈리는 DELETE, UPDATE 문에서 Alias 사용하는 법 DELETE a FROM TableA a JOIN TableB b ON a.ID = b.ID UPDATE a SET a.COLUMN1 = b.COLUMN2 FROM TableA a JOIN TableB b ON a.ID = b.ID 처음에는 오라클과 달라서 몰랐지만, 지금은 자꾸 까먹어서 모르고… 결국 SQL 0개국어 2021. 9. 17. Azure Blazor Server 배포하기 Visual Studio 2019에서 Build - Publish 을 클릭한다. 1. Azure로 배포할 예정이니 Azure를 선택한다. 2. Azure App Service를 선택한다. 3. Azure App Service를 선택한다. App Service가 없다면 + 버튼을 클릭하면 자동으로 생성된다. 4. 오잉? Github Action으로 CI/CD를 설정해준다…! 해보자. Finish를 클릭한다. 5. Service Dependencies 섹션에 Azure SignalR Service를 설정한다. 이게 끝이다.😀 아래 링크에서 action을 배포 내역을 확인 할 수 있다. https://github.com/HanJaeJoon/Blazor/actions/workflows/WhoTooBlazorSe.. 2021. 9. 3. AWS EC2 Ubuntu Blazor Server 배포 먼저 아래 포스트를 참고하여 AWS EC2 Ubuntu 인스턴스를 만든다. https://jjester.tistory.com/139 필수 프로그램 설치 sudo apt update git sudo apt install git nginx sudo apt install nginx .NET 5.0 SDK & Runtime wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb sudo apt-get update; \ sudo apt-g.. 2021. 8. 27. AWS EC2 Ubuntu 인스턴스 생성하기 EC2 인스턴스 생성하기 AWS 관리 콘솔에서 EC2를 선택한다. 인스턴스 시작을 누르고 프리티어 인스턴스를 생성한다. 보안 그룹 인바운드 규칙을 추가한다. 443 포트로 인바운드되는 HTTPS, 80 포트로 인바운드되는 HTTP 요청을 허용한다. HTTPS, 443 포트, 0.0.0.0/0 HTTP, 80 포트, 0.0.0.0/0 키 페어를 생성한다. Putty를 사용할 예정이므로 .ppk를 선택한다. EC2 인스턴스 대시보드에서 연결 버튼으로 클릭하면 연결할 수 있으니 생략해도 좋다. EC2 인스턴스에 연결하기 Putty를 설치한다. Putty 다운로드 Host Name을 설정한다. EC2 Ubuntu의 경우 default user name은 ubuntu이다(AWS 참고). Host Name: my-.. 2021. 8. 26. [Visual Studio 2019] Hot Reload 기능 추가(Apply Code Changes) Visual Studio을 업데이트를 했더니 Hot Reload 기능이 생겼다. 서버 소스코드를 수정하고 🔥모양의 Apply Code Changes 버튼을 누르면 수정사항이 적용된다!!! 신세계다… 은근히 c# 코드를 수정하고 디버깅 중지/재시작에 많은 시간이 낭비되고 있었다는게 체감이 된다. 마치 python 개발하는 것 같은 느낌이든다. 역시 MS는 대단해.👍👍👍 (주가도 대단해) .NET의 미래는 밝다. Reference https://docs.microsoft.com/en-us/visualstudio/releases/2019/release-notes 2021. 8. 19. [git] Repository 복사하기(git clone --mirror) 복사할 repository를 새로운 repository로 복제(mirroring)하려면 다음과 같다. git clone --mirror cd git remote set-url --push origin git fetch -p origin git push --mirror 2021. 8. 16. [css] 모달을 항상 가운데로 정렬하기 outer div는 modal의 background layer다. jsfiddle에서 잘 보이도록 1000px로 고정시켜놨고 실제로는 100%를 사용한다. inner div에는 modal의 내용이 들어간다. 요즘 잘 듣고있는 악뮤의 낙하 뮤직비디오를 넣었다. 아래 fiddle에서 직접 확인할 수 있다. HTML CSS .outer { position: absolute; top: 0; left: 0; height: 1000px; /*100%*/ width: 1000px; /*100%*/ background-color: gray; } .inner { position: fixed; top: 0; bottom: 0; left: 0; right: 0; margin: auto; width: 500px; height.. 2021. 8. 15. 이전 1 ··· 5 6 7 8 9 10 11 ··· 13 다음