본문 바로가기

분류 전체보기

(192)
대용량 리스트를 처리하면서 느낀 점 1. 비동기 작업은 최대한 세분화하자 2. 병렬 처리는 너무 남발하지 말자(선택과 집중,, 정말 필요한 곳에만 쓰자) 3. Linq를 너무 믿지 말자(ToList 형변환.. 안 쓰는 방안 찾느라 너무 힘들었다.) 4. 특별하지 않아보이는 코드가 한 줄이라도 의심하면서 보자(treeList.dataSource = List; 이 한 줄 없애느라 힘들었다)
[DevExpress] GridControl DataSource에 대용량 데이터 세팅할 시, 느린 이슈 해결하는 방법 행이 몇만건 되는 데이터를 GridControl DataSource에 바로 대입해서 세팅하려고 하니 몇초나 걸려서 이를 개선하는 작업을 했다. 몇 줄 안 되는 코드로 바꾸기만 했는데 시간이 빠르게 단축됐다. 아래는 해당 코드이다~.~treeList.DataSource = new List();if (!(treeList.DataSource is List dataSource)) return; dataSource.AddRange(넣으려는 리스트);treeList.RefreshDataSource();앗 보니까 treeList네 ㅎ 어쨌든 같지 않을까 ㅎ
IEnumerable 리스트를 Linq를 사용 안 하고 빠르게 List로 변환하는 방법 행이 몇만개 되는 IEnumerable 리스트를 List로 변환해야 한 적이 있었다. 처음에는 Linq의 ToList 메소드를 그대로 사용했더니 정말 오래걸렸다,, 그래서 Linq의 ToList 메소드를 사용 안 하고 List로 변환하는 다른 방안을 찾기 시작했다,, 찾은 결과 임의의 ConcurrentBag 리스트를 이용하니 속도가 빨라진 것을 체감할 수 있었다. 아래는 테스트 코드~.~ var concurrentBagList = new ConcurrentBag(); Parallel.ForEach(totalCodes, new ParallelOptions { MaxDegreeOfParallelism = Convert.ToInt32(Math.Ceiling((System.Environment.Processo..
P/Invoke(Platform Invoke) C# .Net에서 Native DLL(Unmanaged DLL)에 있는 함수를 호출하는 것을 Platform Invoke 혹은 줄여서 P/Invoke라 부른다. 예를 들어, C#에서 Windows 운영체제의 Win32 API를 호출한다거나, 기존 C/C++로 작성된 Native DLL의 함수를 호출할 필요가 있을 때, P/Invoke 방식을 사용한다. P/Invoke를 사용하기 위해서는 1. 먼저 DLLImplrt를 사용하여 어떤 DLL에서 함수를 가져올지를 지정하고, 2. 해당 함수의 원형을 C# 메서드 원형으로 정의해 준다. 3. 이때 C# 메서드는 statice extern으로 지정한다. +Win32에 있는 함수들을 C# 메서드 원형으로 변환하기 위해서는 pinvoke.net 사이트를 이용하면 편리..
Hashtable, Dictionary 목적 1. List 형태의 인덱스 대신 객체를 Key 값으로 등록 후 사용 2. Key 값을 기준으로 등록함으로 Value값의 검색이 간편함 3. Key 값의 경우 중복 불가 Hashtable과 Dictionary의 차이점 - Hashtable은 선언 시 Key와 Value의 Data Type을 정의하지 않지만 Dictionary은 선언 시 Data Type을 정의해줘야 한다. → Hashtable의 경우 여러 가지 Data형을 넣어서 사용할 수 있지만 Data Type 관련해서 코드를 신경 써줘야 한다. → Dictionary의 경우 Data Type을 지정하기 때문에 맞는 Type만 입력 가능하지만 안정적이라는 장점이 있다. [참고] https://cwkcw.tistory.com/121
DataSet, DataTable DataSet은 (DB의)DataBase DataTable은 (Db의)Table 한마디로 DataSet안에 여러 개의 DataTable이 들어갈 수 있다. (DataSet의 경우 DataTable을 모아놓은 자료 구조라고 보면 될 것 같다.) [참고] https://byul91oh.tistory.com/314 https://cwkcw.tistory.com/122
Avast - URL:Malvertising에 감염되었기 때문에 search.naver.com 연결을 안전하게 중단했습니다. 뭐 사려고 네이버에 검색해서 블로그 후기나 스토어팜 가서 구경하려고 했는데 avast 프로그램에서 차단을 했는지 저런 메세지가 뜨고 네이버 url에 접속조차 하지 못했다.. 찾아보니 avast에서 예외 설정을 해주면 된다고 해서 했더니 접속이 잘 된다. 메뉴 -> 설정 -> 일반 -> 예외에서 search.naver.com을 등록해주면 된다. [출처] https://blog.avastkorea.com/1457
List Comprehension(리스트 컴프리헨션) 새로운 리스트를 간편하게 만들어주는 기능 new_list = [변수 활용 for 변수 in 반복대상 if 조건 products = ['JOA-2020', 'JOA-2021', 'SIRO-2021', 'SIRO-2022'] recall = [] # 리콜 대상 제품 리스트 for p in products: if p.startswith('SIRO'): # 제품명이 SIRO 로 시작하는가? recall.append(p) print(recall) products = ['JOA-2020', 'JOA-2021', 'SIRO-2021', 'SIRO-2022'] recall = [p for p in products if p.startswith('SIRO')] print(recall) 위와 같이 여러 줄에 해당하는 코드를..