전체 글
-
멀티스레드 환경에서의 데이터 전송에 대한 안정성 향상 방법프로그래밍 2024. 10. 10. 13:08
멀티스레드 환경에서 우리는 데이터를 처리해야 할 경우가 있다. 서버 측의 경우 kafka, rabbitmq, redis 등 대기열로 처리할 수 있는 충분한 솔루션이 있으므로 이슈가 많지는 않지만, 클라이언트, 서버 모두 이슈가 있을 수 있다. 먼저, 멀티스레드는 이벤트(코루틴) 스레드라던지, 직접 생성한 Background Thread가 될 수 도 있도 있다.모두 비동기적 작업이라는 면에서 동일하게 보아도 되겠다. 따라서 동기 작업이 아니므로 절차적으로 진행되지 않고, 여러 스레드가 동시적으로 같은 메모리를 점유할 수 있으므로 항상 경쟁상태가 발생할 수 있는 것을 염두에 두어야 한다. 클라이언트에서 한가지 예를 보자. 파일을 공유하기 위해 서버에 연속적으로 파일 전송을 하는 http 리퀘스트가 있다고 가..
-
테이블 캐시를 관리하는 방법프로그래밍 2024. 10. 4. 20:51
개발자는 종종 데이터 조회를 위해 DB 조회 쿼리를 작성하고 조회 성능에 민감하게 된다. 각종 DB 튜닝 작업 - 인덱스, 서브쿼리 제거, 임시 테이블 사용 등등 - 을 진행하고 그럼에도 불구하고 성능 문제 및 리소스 문제로 고통 받는 경우가 있다. 아래에 설명할 테이블 Cache 방법은 효율적인 Cache를 하기 위한 방법 중 하나이다. 우리가 테이블 Cache 또는 조회 결과를 캐시 할 때는 먼저 몇 가지 사전 조건이 걸린다. 1. 조회 데이터가 얼마나 자주 변경 되는가?2. 조회 데이터가 얼마나 자주 사용 되는가? 만약, 해당 조회가 자주 변경되는 내용이라면 Cache는 큰 도움이 되지 않을 것이다.또한, 그러한 데이터라면 Cache를 고려하지 않을 것이다. 그럼 자주 변경되지 않으면서 자주 사용되..
-
EF Core Code First Entity Model을 작업하는 방법프로그래밍 2024. 9. 24. 14:46
EF Core를 사용하는 경우 개발자는 Entity에 대한 Model작업을 해야 한다. 여기서는 EF Core Code First를 수행하는 방법과 도움이 되는 요소를 설명하고자 한다. Code First시에는 두 가지 방법이 존재한다. 첫째, Attribute를 사용하는 방법.둘째, ModelBuilder를 사용하는 방법. 필자는 처음 EF를 접했을 때 첫째 방법으로만 개발을 진행하였고, Attribute로 설정할 경우 몇 가지 어려움이 있었다. 첫 번째 방법의 문제는 Attribute속성을 적용할 경우 에러에 대한 핸들링이다.Attribute로 선언할 경우 SaveChange에서 오류가 발생하는 것이 아닌 Add, Update, Delete에서 문제가 발생한다.주로 Add, Delete 에서 문제가 ..
-
python + .net core integration, use pythonnet프로그래밍 2024. 7. 26. 15:04
파이썬가 .net core에 대한 통합 방법은 여러가지가 있다. ironpython을 사용하는 방법.process stdio를 사용하는 방법. 오늘은 .net에서 python 인터프린터 구현인 pythonnet을 소개한다. 먼저 pythonnet은 python의 .net 인터프린터 구현인 만큼 process stdio를 사용하는 방법보다 효율적이고 성능면에서 보다 나은 방법인다. 아래의 기본적인 사용코드를 보자. PythonEngine.Initialize(); using (Py.GIL()) { dynamic np = Py.Import("numpy"); Console.WriteLine(np.cos(np.pi * 2)); dynamic sin = np...
-
Node 앱을 위한 타입스크립트 설정프로그래밍 2024. 3. 26. 19:41
원문 : TypeScript로 노드 앱 구축 | 전체 TypeScript (totaltypescript.com) Build a Node App with TypeScript Learn how to set up TypeScript to bundle a Node app using pnpm, Node.js, TypeScript, and ES Modules for a seamless development experience. www.totaltypescript.com Node 앱을 위한 타입스크립트 설정에 대해 배웁니다.
-
Javascript 최적화프로그래밍 2024. 3. 26. 19:39
원문 : 롬그르크 (romgrk.com) romgrk --> I often feel like javascript code in general runs much slower than it could, simply because it’s not optimized properly. Here is a summary of common optimization techniques I’ve found useful. Note that the tradeoff for performance is often readabil romgrk.com 유용한 최적화 방법에 대한 자세한 설명
-
for-scope-task프로그래밍 2024. 3. 6. 18:17
1. for(var i=0; i { var r = await StartTestConvert(i); Console.WriteLine(r); }); } Console.ReadLine(); static Task StartTestConvert(int i) { return Task.FromResult(i); } 이것과 2. for(var i=0; i { var r = await StartTestConvert(n); Console.WriteLine(r); }); } Console.ReadLine(); static Task StartTestConvert(int i) { return Task.FromResult(i); } 이것의 차이는? 1번 코드의 for문 안의 Task는 백그라운드 작업이다. 따라서, 동시성이 없다..