Programming110 [Azure] Azure Storage - Blob Storage 우리 제품은 Saas이고 당연히 멀티 테넌시 아키텍쳐가 적용되어 있다. 고객 테넌트마다 많은 파일이 생성되고 저장되고 있다. 네트워크 드라이브에 수십만 개의 파일이 쌓였고 File Explorer에서나 프로그램에서 개별 파일에 접근하기 힘들어지기 시작했다. 그렇게 대안을 찾았고 그것이 바로 Azure Storage의 Blob Storage다. 지난 달 프로토타입을 개발해서 시범 적용을 끝냈고, 드디어 오늘 대부분의 기능에 적용해서 배포를 완료했다. 사용법 아래 방법으로 Azure Portal - Azure Storage 에서 Container를 추가한다. https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal.. 2022. 4. 15. [.NET] FormData를 이용한 file upload 이번에 제품의 file upload 기능을 개선하게 되었다. 분명 예전에 upload API prototype을 구현했던 것 같은데 기록을 안 해두니 까먹었다. 요즘 내 블로그에서 가장 인기 글은 file download 관련된 글이다. (놀랍게도 의무교육 스킵하는 법이 아니다!) https://jjester.tistory.com/106 upload도 많이들 찾아오기를 바라며 잘 기록해야지. HTML Form Element을 이용해 서버로 request를 할 수 있다. FormData를 통해 쉽게 사용할 수 있기도 하다. jquery ajax()를 이용해서 formData를 서버에 전달할 수 있다. 이때 formData에는 이 포함되어 file도 전달한다. Client $.ajax({ url: url t.. 2022. 3. 19. [MS-SQL] SQL로 파일 이동/삭제하기(xp_cmdshell) 놀랍게도 SQL로 파일을 이동/삭제할 수 있는 방법이 있었다. xp_cmdshell 을 사용해서 윈도우 command를 활용하는 방법이다. 윈도우 CMD 명령어 모음 먼저 아래 쿼리를 실행해서 xp_cmdshell 사용을 설정해야 한다. EXEC sp_configure 'show advanced options', '1' RECONFIGURE EXEC sp_configure 'xp_cmdshell', '1' RECONFIGURE 그리고 아래와 같이 사용하면 된다. DECLARE @cmd sysname; -- 파일 삭제 SET @cmd = 'del "' + @RootDir + '\' + @FileName + '"'; EXECUTE sys.xp_cmdshell @cmd; -- 파일 이동하기(@RootDir1 .. 2022. 3. 6. [C#] Disposable 패턴 요즘 메모리를 효율적으로 사용하는 작업을 진행하고 있다. Visual Studio의 diagnostic tools로 메모리 사용량을 확인할 수 있다. IDisposable 인터페이스를 통해 메모리를 낮추는 데 성공했다(ID: 2). (그런데 정작 개발 서버에서는 잘 동작하지 않아서 GC.Collect() 사용을 고민 중이다.) Dispose 패턴에서는 반드시 finalizer를 구현해야 한다. => 사용자가 Dispose() 메서드를 올바르게 호출할 것이라고 믿으면 안 됨. IDisposable.Dispose() 는 반드시 다음과 같은 작업을 수행해야 한다. 모든 비관리 리소스를 정리한다. 모든 관리 리소스를 정리한다. 객체가 이미 정리되었음을 나타내기 위한 플래그 설정. finalizer 호출 회피(G.. 2022. 2. 4. Github profile Wakatime 연동하기 Github profile에 Wakatime을 연동했다. https://wakatime.com/ VS, VSC, SSMS 등에서 Extensions을 설치하면 프로그래밍 시간을 측정해준다. github profile에 연동된 것을 볼 수 있다. 이번주는 이관업무 때문에 SQL이 압도적이다. 😂 연동하는 법은 아래 링크를 참고하면 된다. https://github.com/anuraghazra/github-readme-stats#wakatime-week-stats 꼭!! wakatime profile 설정에서 다음과 같이 공개 설정해두어야 github에서 볼 수 있다. 2021. 11. 18. [MS-SQL] JSON Parsing하기 DB에 저장된 JSON string을 다루는 밥법에 대한 Documentation -- JSON_VALUE를 사용하면 원하는 value를 가져올 수 있다. SELECT JSON_VALUE('{"columns": [{ "name": "1" },{ "name": "2" }]}', '$.columns[1].name'); -- JSON_MODIFY로 수정을 할 수 있다. -- append를 사용하면 원하는 value를 추가할 수도 있다!🤗 SELECT JSON_MODIFY('{"columns": [{ "name": "1" },{ "name": "2" }]}', 'append $.columns', JSON_QUERY('{"name": "3" }')); 다음과 같이 결과를 확인할 수 있다. PostgreSQL 14.. 2021. 11. 11. [MS-SQL] 대소문자 구별해서 치환하기 REPLACE() 사용 시 Case-sensitive 하게 Replace 하기 위해서 COLLATE SQL_Latin1_General_CP1_CS_AS 를 사용하면 된다. SELECT REPLACE('NULL and null' COLLATE SQL_Latin1_General_CP1_CS_AS, 'NULL', ''); NULL 과 null 중에 대문자 NULL 만 replace 된 것을 확인할 수 있다. 2021. 11. 6. [MS-SQL] 모든 테이블 조회 MS SQL Server에서 모든 테이블을 조회하는 쿼리는 다음과 같다. SELECT SCHEMA_NAME(t.schema_id) AS 'Schema', t.name AS 'TableName', c.name AS 'ColumnName' FROM sys.columns c JOIN sys.tables t ON c.object_id = t.object_id WHERE c.name LIKE '%Early%' ORDER BY TableName, ColumnName; 2021. 9. 26. [C#] List<T>를 ArrayList로 변환하기 이것도 알고나면 간단한데 ArrayList를 잘 사용하지 않다보니 잘 모르고 있었다. Constructor를 활용하면 간단하다. ArrayList arrayList = new ArrayList(list); 2021. 9. 25. 이전 1 ··· 4 5 6 7 8 9 10 ··· 13 다음