Language 23

Python 패키지 관리 - requirements.txt 활용 및 패키지 일괄 삭제

[환경]- Python 버전: 3.11- pip 버전: 22.3 Python 프로젝트를 진행하다 보면 패키지 관리를 효율적으로 해야 할 필요가 있다. 특히 여려 환경에서 같은 패키지를 설치하거나, 불필요한 패키지를 한 번에 삭제해야 하는 경우가 생긴다. 이에 대한 간단한 방법을 정리해본다.   1. 패키지 정보 저장 및 다른 환경에서 설치Python 프로젝트에서 일반적으로 패키지 정보를 저장하는 방식으로 requirements.txt를 많이 활용한다. 1) 패키지 목록 저장하기현재 설치된 패키지 목록을 requirements.txt 파일로 저장하려면 다음 명령어를 실행한다.pip freeze > requirements.txt(이 명령어에서 pip freeze는 현재 Python 환경에 설치된 모든 패키지..

Language/Python 2025.03.08

[ASP.NET MVC5] Action Filter의 개념과 활용

ASP.NET MVC에서 Action Filter는 컨트롤러의 액션 메서드 실행 전후에 특정 작업을 수행할 수 있는 강력한 기능이다. 이번 포스팅에서는 Action Filter의 개념, 주요 기능, 그리고 활용 방법을 간단한 예제와 함께 알아보고자 한다.  1. Action Filter란?Action Filter는 컨트롤러의 액션 메서드 실행 전후에 동작하는 로직을 캡슐화하여 제공하는 특수한 클래스이다.이를 통해 공통 작업을 중앙에서 관리하고 코드의 재사용성을 높일 수 있다.  2. 주요 특징2.1 액션 메서드 실행 전후 작업 관리Action Filter는 다음과 같은 단계에서 작업을 수행할 수 있다:- OnActionExecuting: 액션 메서드가 실행되기 전에 호출된다. (예: 사용자 인증, 요청 ..

Language/ASP.NET 2025.01.12

[ASP.NET MVC5] 페이지별 사용자 접근 권한 확인(Action Filter 활용)

ASP.NET MVC5에서 특정 페이지에 접근 가능한 유저인지 확인하는 기능은 보안과 사용자 경험의 핵싱 요소중 하나이다. 이번 포스팅에서는 ASP.NET MVC5에서 제공하는 사용자의 권한 부여 여부에 따른 페이지 접근을 제어하는 방법을 알아보고자 한다.   1. 데이터베이스 테이블 설계권한 확인을 위해 아래와 같은 테이블 구조를 사용할 수 있다. (예시)CREATE TABLE Users ( UserId INT PRIMARY KEY, UserName NVARCHAR(100));CREATE TABLE PagePermissions ( PageId INT PRIMARY KEY, PageUrl NVARCHAR(200));CREATE TABLE UserPermissions ( UserId INT, ..

Language/ASP.NET 2025.01.12

ASP.NET에서 데이터 전송 및 상태 관리 방법 비교: ViewBag, Session, TempData..

ASP.NET에서의 데이터 전송 및 상태 관리  웹 애플리케이션을 개발할 때, 여러 페이지 간에 데이터를 전달하거나, 특정 데이터 상태를 유지할 필요가 자주 있다.ASP.NET에서는 이를 위한 다양한 방식이 제공된다. 여기서는 ViewBag, Session, TempData와 그 외의 옵션들에 대해 살펴보고, 각 방법의 특징과 사용 예시를 정리해보고자 한다.      1. ViewBagViewBag은 컨트롤러에서 뷰로 데이터를 전달하기 위한 동적 객체이다.- 생존 범위: 단일 요청 사이클, 같은 페이지 요청에서만 유효하며, 새로고침이나 다른 페이지 요청 시 데이터가 초기화된다.- 사용 예시: 단순히 컨트롤러에서 뷰로 데이터를 전달할 때 유용하다. public ActionResult Index(){ Vie..

Language/ASP.NET 2024.11.02

C#에서 비동기 프로그래밍 이해하기 - Task와 async/await의 활용

await doAsync();...public async void doAsync() {...}public async Task doAsync() {...}  1. Task란?C#에서 Task는 비동기 작업을 나타내는 클래스이다. .NET의 비동기 프로그래밍을 지원하는 핵심 요소 중 하나로, 백그라운드 스레드에서 작업을 수행하거나 I/O 바운드 작업을 비차단 방식으로 처리할 수 있게 도와준다. Task클래스는 다음과 같은 역할을 한다. - 비동기 작업을 표현: 백그라운드에서 실행되는 작업을 나타내며 작업의 시작 및 완료 여부를 추적할 수 있다.- 작업 생명주기 관리: 작업의 상태를 관리하고 완료된 작업의 결과를 반환할 수 있다.- 결과 반환 기능: 작업 결과를 반환해야 하는 경우 Task 형식을 사용하여 비..

Language/C# 2024.10.26

[ASP.NET MVC5] Controller POST, DELETE 요청 메서드 만들기

1. 개요 일반적인 HTTP 요청의 메서드는 'GET', 'POST', 'PUT', 'DELETE' 가 있고,ASP.NET MVC5의 Controller 클래스에서 아래와 같이 각 메서드별 Restful API를 만들 수 있다. 사실 모든 API를  'GET' 과 같은 단일 메서드로 만들고 처리해도 동작은 하지만, 이는 좋은 RESTful API 설계가 아니다.(HTTP 요청 메서드를 구별해야하는 이유)  기본적으로 ASP.NET MVC5에서 'PUT', 'DELETE' 메서드를 만든 후 요청 테스트를 해보면, 아래처럼 404 Not Found 응답을 반환한다.  이는 ASP.NET MVC5의 'ExtensionlessUrlHandler-Integrated-4.0' 핸들러가 보안과 안정성의 이유로 인해 ..

Language/ASP.NET 2024.06.29

[C#] iteration 안에 await문을 넣으면 안되는 이유

await 키워드를 for 루프 내부에서 사용하면 예상치 못한 동작 또는 오류가 발생할 수 있다. 특히 UI 애플리케이션이나 비동기 코드와 같은 특정 상황에서는 더욱 그렇다. 이는 await 키워드가 비동기 작업이 완료될 때까지 함수의 실행을 일시 중단하는 데 사용되기 때문이다. 부적절하게 사용하면 루프가 의도치 않은 방식으로 작동할 수 있다. 다음은 잘못된 코드의 예시이다: async Task ProcessItemsAsync(List items) { for (int i = 0; i < items.Count; i++) { ... // 비동기 작업(예: HTTP 요청)을 대기한다. await SomeAsyncMethod(); ... } } 위의 예에서는 루프 내에서 비동기 작업을 대기하면 해당 작업이 완료..

Language/C# 2024.01.18

[.NET] Garbage Collector의 영향과 Timer 클래스의 안전한 사용 방법

이 포스트에서는 C#에서 Garbage Collector의 영향과 이에 따른 Timer클래스의 안전한 사용 방법에 대해 정리해보고자 한다. Garbage Collector(GC)의 역할 Garbage Collector는 .NET Framework에서 메모리 관리를 자동화하는 중요한 요소이다. GC는 더 이상 사용되지 않는 객체들을 감지하고 이들을 메모리에서 해제하여 리소스 누수를 방지한다. 하지만 때때로 GC의 작동 방식으로 인해 예상치 못한 결과가 발생할 수 있다. 특히 Timer 클래스와 같이 주기적으로 호출되어야 하는 기능을 구현할 때에 주의가 필요하다. Timer 클래스의 일반적인 사용 방법과 GC의 영향 보통 Timer클래스를 사용하여 반복적인 작업을 수행하도록 프로그램을 구현할 수 있다. 예를..

Language/C# 2023.07.20

[.NET] System.Threading.Timer Class에 대해

해당 포스팅은 Timer Class의 공식문서를 직접 번역하면서, 부연설명을 추가하여 작성한 포스팅이다. 정의 Namespace: System.Threading Assembly: System.Runtime.dll 지정된 간격으로 thread pool thread에서 메서드를 실행하기 위한 메커니즘을 제공한다.이 클래스는 상속할 수 없다. *(스레드 풀이란? 이전 포스팅 참고) public sealed class Timer : MarshalByRefObject, IAsyncDisposable, IDisposable Inheritance Object → MarsharByRefObject → Timer Implements IDisposable, IAsyncDisposable 예제 다음 예제에서는 시그니처가 T..

Language/C# 2023.07.20

[.NET] Thread Pool에 대해 이해하기

C# .NET에서 비동기 작업을 효율적으로 처리하는 방법 중 하나는 ThreadPool을 사용하는것이다. 이 포스팅에서는 C# .NET에서 Thread Pool의 개념과 활용 방법에 대해 중점적으로 다뤄보려고 한다. Thread Pool이란? Thread Pool은 C# .NET에서 비동기 작업을 처리하기 위해 사용되는 기능이다. 기본적으로는 미리 생성된 작업자 스레드(worker thread)의 풀을 유지하면서, 작업이 들어오면 이 작업자 스레드들이 비동기적으로 작업을 처리한다. 스레드 생성과 스레드 소멸에 따른 오버헤드를 피하고, 스레드를 재사용함으로써 성능을 향상시키는 장점을 가지고 있다. Thread Pool의 사용 이점 스레드 생성 및 소멸 오버헤드 감소: 미리 생성된 스레드 풀을 사용하여 스레..

Language/C# 2023.07.20
반응형