본문 바로가기

프로그래밍376

자바스크립트 CryptoJS.HmacSHA256를 C# HMACSHA256 클래스 대응 자바스크립트 함수 var hash = CryptoJS.HmacSHA256(message, secretKey); var signature = CryptoJS.enc.Hex.stringify(hash); C# 대응 함수 private string GetMacSha256() { string strKey = "key_문자열"; byte[] bytesKey = Encoding.ASCII.GetBytes(strKey); string message = "변환할 메시지"; HMACSHA256 hmac = new HMACSHA256(bytesKey); byte[] data = Encoding.ASCII.GetBytes(message); MemoryStream stream = new MemoryStream(data); s.. 2021. 10. 28.
MYSQL 그룹별 RANK함수 구현하기 요구사항 2020년1월~2021년 현재까지 주문상태는 결제완료 상점코드별 월단위 판매금액 순 100위까지의 고객의 정보를 추출 판매금액이 동일할 경우 같은 등수로 처리 추출정보 : 상점코드, 년월, 고객명, 판매금액, 판매수량 환경 : AWS ARORA DB 문제 : RANK() 함수가 지원되지 않아 직접 구현해야 함 SELECT * FROM ( SELECT A.* , CASE @SHOP WHEN SHOP_NO THEN CASE @MON WHEN MON THEN IF(@SALE_AMT > SALE_AMT, @RANK := @RANK + 1, @RANK) ELSE @RANK := 1 END ELSE @RANK := 1 END AS RNK , @SHOP := SHOP_NO , @MON := MON , @SA.. 2021. 3. 16.
Mysql 칼렌더 덤프 데이터 만들기 Mysql 용 일자별 데이터 생성하는 덤프 데이터 만들기 select * from (select adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date from (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0, (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select .. 2021. 2. 17.
C# WEB URL로 PDF 다운받아 Base64문자열 변환하기 PDF 파일 다운받아서 Base64 문자열로 변환하기 string pdfUrl = "URL_TO_PDF"; using(WebClient client = new WebClient()) { var bytes = client.DownloadData(pdfUrl); string base64String = Convert.ToBase64String(bytes); } stackoverflow.com/a/44560717 2021. 2. 17.
visual studio에서 오라클 접속하기 2020년 1월 13일 현재 visual studio 2019는 아직 미지원 상태임 먼저 버전에 맞는 오라클 다운로드 주소 : https://www.oracle.com/database/technologies/net-downloads.html 오라클 공식 홈페이지 : 상단 검색란에 visual studio 입력하여 검색 결과 중 "Oracle Developer Tools for Visual Studio" 찾아서 클릭 visual studio 버전에 맞는 ODT (Oracle Developer Tools) 설치 visual studio 서버 탐색기 > 데이터베이스에 연결 > 데이터소스 (ODP.NET) 선택하고 아래 정보 입력 > 위에서 TNS 연결을 하거나 EZ Connect 선택하여 연결(Oracle C.. 2020. 1. 13.
IT 용어 정리 MES 공부하다가 나온 용어들을 정리한다. PLM (Product Life-cycle Management, 제품수명주기관리)PLM 필수 기능 7가지 1. 문서 관리 2. 시각화 3. 워크플로 4. 분산된 협업 5. 다중 CAD (Computer Aided Design) 데이터 관리 6. 완전한 BOM (Bill of Material) 관리 7. 변경 및 구성 관리 CAD (Computer Aided Design) : 제품수명주기관리 컴퓨터 기하학 저작 도구 BOM (Bill of Material) : 자재 명세서, 제품을 구성하는 모든 부품 목록 BPR (Business Process Reengineering, 업무 프로세스 재설계) MES (Manufacturing Execution System, 생산.. 2018. 8. 30.
PLM (Product Life-cycle Management, 제품수명주기관리) PLM (Product Life-cycle Management, 제품수명주기관리) PLM 필수 기능 7가지 1. 문서 관리 2. 시각화 3. 워크플로 4. 분산된 협업 5. 다중 CAD (Computer Aided Design) 데이터 관리 6. 완전한 BOM (Bill of Material) 관리 7. 변경 및 구성 관리 ※ CAD (Computer Aided Design) : 제품수명주기관리 컴퓨터 기하학 저작 도구 ※ BOM (Bill of Material) : 자재 명세서, 제품을 구성하는 모든 부품 목록 2018. 8. 30.
MSSQL 모든 상위 부서 찾기 프로시저 사원코드로 최상위 부서까지 모든 상위 부서를 구해야 할 때 사용한다. 기본적인 하이라키 구조 예제는 많은데역순 하이라키 구조 예제가 별로 없어서 기록을 남겨둠 SOME_TABLE 이라는 가상의 테이블을 대상으로 하였다. 주요 컬럼은 ID, P_ID, CODE 이며 ID, P_ID 는 부모/자식의 하이라키 구조 핵심CODE 는 사원코드/부서코드 중 하나이다. 즉, SOME_TABLE은 부서와 사원 정보가 같이 들어 있는 테이블이다. 부서 코드만 있는 구조라면 WHERE CODE = @P_CODE 부분을 적절히 바꿔주면 되겠다. IF OBJECT_ID('SP_PROC') IS NOT NULLDROP PROC SP_PROCGO CREATE PROC SP_PROC(@P_CODE VARCHAR(32))ASBEGI.. 2018. 5. 7.
새로운 근로기준법 유연 근무제 정리 PC-OFF 개발 관련하여유연 근무제 내용을 정리한다. 1. 법정 근무시간 정의 >> 1주 = 7일 >> 기본 근로 시간 8시간/일 40시간/주 >> 연장근무 12시간/주 초과 불가 >> 52시간/주 초과 불가 >> 12시간/일 초과 불가 2. 표준/시차 근무제 2.1 법정 근로시간 : 8시간/일, 40시간/주 2.2 [2.1] 항 초과 될 시 연장 근로 3. 탄력적 근무제 3.1 2주 단위 3.1.1 조건 a. 1주 48시간 초과 불가 b. 2주 이내 일정 기간 평균이 주 40시간 초과 불가 3.1.2 연장근로 a. 1주 최대 60시간 (48시간 + 12시간) 3.2 3개월 단위 3.2.1 조건 a. 1주 52시간 초과 불가 b. 1일 12시간 초과 불가 c. 3개월 이내 단위기간 평균이 주 40시간 .. 2018. 4. 20.
mssql log 파일 축소 USE DBName ALTER DATABASE DBNameSET RECOVERY SIMPLE; DBCC SHRINKFILE (DBName_log, 10); ALTER DATABASE DBNameSET RECOVERY FULL; 2018. 3. 27.
'Microsoft.CSharp.RuntimeBinder.Binder.Convert' 멤버가 필요한 컴파일러가 없습니다. .NET 2.0 을 .NET 4.7.1 로 올리는거 테스트하다가 나온 에러 참조에 어셈블리 > Microsoft.CSharp.dll 을 추가하니 해결됨. 2018. 3. 22.
C# XML 내용 안전하게 읽기 XML 파일을 로드 시도하는 부분에 보안 이슈가 있어서 처리한 내용 XML 파일을 검증 없이 로드하다가 공격 코드에 노출될 수 있어서 처리한 함수 public static Stream GenerateStreamFromString(string s) { MemoryStream stream = new MemoryStream(); StreamWriter writer = new StreamWriter(stream); writer.Write(s); writer.Flush(); stream.Position = 0; return stream; } public static XmlDocument XmlLoadIgnoreDTD(string xml) { Stream stream = GenerateStreamFromString.. 2018. 2. 28.
C# SecureString 클래스를 이용한 문자열 보호 비밀번호를 일반 문자열에 담고 처리하다가 발생할 수 있는 보안 이슈에 대응하기 위해 SecureString을 사용함 아래와 같은 문제가 발생할 수 있음 문자열에 노출되지 않아야 할 정보를 담고 처리하지 말아야 한다. 메모리를 읽을 수 있으면 그대로 노출된다.메모리에서 디스크로 교체되면 암호화 되지 않은 내용이 스왑 파일에 남음가비지에 의해 제거되지 않고 남은 상황에서 응용프로그램이 비정상 종료될 경우 메모리 덤프에 민감 정보가 포함될 수 있음 //String -> SecureStringpublic static SecureString ConvertStringToSecureString(string str){ var secureStr = new SecureString(); if (str.Length > 0) .. 2018. 2. 27.
C# 파일명 유효성 체크 보안성 심사하다가 파일명과 관련한 사항이 검토되어 처리한 소스임 파일명으로 사용할 수 없는 문자나 특수문자를 걸러내는 내용임 public static string ReplaceFileName(string s){Regex regex = new Regex(string.Format("[{0}]", Regex.Escape(new string(Path.GetInvalidFileNameChars())))); s = regex.Replace(s, "");return s;} MSDN에 있는 내용임. 2018. 2. 26.
C# 파일 경로 유효성 체크 파일 경로 체크 시 보안성 관련 문제를 해결하다가 찾은 소스경로로 사용할 수 없는 문자가 있는지 확인해서 빈 문자열로 바꿔줌 public string ReplacePath(string s){Regex regex = new Regex(string.Format("{0}", Regex.Escape(new string(Path.GetInvalidPathChars())))); s = regex.Replace(s, "");return s;} MSDN 권고 소스임.. 2018. 2. 26.
C# 싱글톤 패턴 예제 모음 멀티스레드에 안전하지 않은 싱글톤 패턴 using System; public class Singleton{ private static Singleton instance; private Singleton() {} public static Singleton Instance { get { if (instance == null) { instance = new Singleton(); } return instance; } }} 멀티스레드에 안전한 싱글톤 패턴 public sealed class Singleton{ private static Singleton instance = null; private static readonly object padlock = new object(); Singleton() { } p.. 2018. 2. 21.
MSSQL 클러스터드 인덱스 생성 스크립트 스크립트로 인덱스 생성하기 USE AdventureWorks2012; GO -- Create a new table with three columns. CREATE TABLE dbo.TestTable (TestCol1 int NOT NULL, TestCol2 nchar(10) NULL, TestCol3 nvarchar(50) NULL); GO -- Create a clustered index called IX_TestTable_TestCol1 -- on the dbo.TestTable table using the TestCol1 column. CREATE CLUSTERED INDEX IX_TestTable_TestCol1 ON dbo.TestTable (TestCol1); GO 2018. 2. 2.
Setup 프로젝트 빌드 오류 property keycode is non nullable case : Crystal Report 포함된 Setup 프로젝트 빌드 시 error solution 1. solution 탐색기 2. crystalreports***_***.msm 파일의 property 창 3. 속성창 MergeModuleProperties 확장(Expand) 4. Keycode 항목이 비어 있는지 확인 5. 값 입력 6. project build 7. success!! 8. Yeah~~. 한참 헤맸는데 속성창에 확장이 있는지 몰랐음.잘 봤으면 보였을 텐데. 어쨌든 해피엔딩~~ 2018. 1. 19.
C# DataGridView 에서 선택된 DataRow 꺼내기 할때마다 찾아야 해서 기록용으로 남겨둠 제발 좀 잊지 말자 DataRow r = (this.datagridview1.CurrentRow.DataBoundItem as DataRowView).Row; 잘 기억할 것!!! 2018. 1. 11.
Visual Studio 원격 디버거 다운로드 주소 찾기가 힘들어서 링크를 달아놓음 visual studio 2013 버전https://msdn.microsoft.com/ko-kr/library/hh441469.aspx#BKMK_Installing_the_Remote_Tools visual studio 2017 버전https://www.visualstudio.com/ko/downloads/?rr=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fvisualstudio%2Fdebugger%2Fremote-debugging 중간에 보면 Visual Studio 2017용 원격 도구 가 있다. 2015 버전은 로그인 해야 나온다.아래는 전체 링크 모여 있는 주소https://docs.microsoft.com/en-us/visualst.. 2018. 1. 4.