전체 글 208

브라우저에서 업데이트된 스크립트 파일 미 적용 문제와 해결책

종종 웹 프로젝트를 진행하면서, 새로운 JS나 CSS 파일을 서버에 반영했음에도 불구하고 브라우저에서 이전 파일이 여전히 사용되는 문제가 발생된다. 이러한 문제가 발생하는 주된 이유는 브라우저가 이전에 다운로드한 파일을 캐싱하여 재사용하기 때문이다. 캐시는 성능 향상을 위해 사용되지만, 개발 중에는 새로운 코드나 리소스를 반영하기 위해 캐시를 무효화하는 것이 필요할 수 있다. 이러한 문제를 해결하기 위해 몇 가지 효과적인 해결 방법들을 소개한다. 1. 새로고침(F5) or 강력 새로고침(Ctrl + F5): 웹 페이지를 갱신하여 브라우저가 최신 파일을 가져오도록 하는 간단하면서도 효과적인 방법이다. 사용자 경험이나 앱 환경에서도 유용한 방법 중 하나이다. 2. Cache 비활성화 (개발자 도구 사용 필요..

FrontEnd 2023.12.06

[Software] Porting, Converting에 대

소프트웨어 공학에서, "포팅(Porting)"과 "컨버팅(Converting)"의 개념이 나오는데, 두 가지 개념이 비슷한 듯 하나 서로 다른 개념이다. 각각의 의미와 차이점에 대해 살펴보자. 포팅 (Porting) 포팅은 한 플랫폼에서 다른 플랫폼으로 소프트웨어를 이식하는 작업을 의미한다. 일반적으로 플랫폼은 운영 체제(OS)나 하드웨어 아키텍처를 가리킨다. 포팅은 기존에 작성된 소프트웨어를 새로운 환경에서도 동작하도록 변경하는 프로세스를 포함한다. 소스 코드를 수정하거나 기존 코드를 새로운 환경에 맞게 컴파일하거나 재작성하는 것이 일반적인 포팅 방법이다. 이렇게 함으로써, 소프트웨어는 다른 운영 체제나 하드웨어에서도 동작할 수 있게 된다. 포팅은 크로스 플랫폼 호환성을 갖춘 소프트웨어를 제공하는 데 ..

[Python] pip 명령어 문제 해결: Fatal error in launcher: Unable to create process using '"'

python에서 package를 설치하기 위해 pip명령어 사용시, 아래와 같이 에러가 뜰 때가 있다. 이에 대해 찾아보니 경로 때문에 발생하는 오류라는데 간단하게 해결 가능하다. pip 명령어 앞에 python -m 을 붙여준다. >python -m pip install “-m” Option? -m : 라이브러리 모듈을 스크립트로 실행 그러면 아래와 같이 pip명령어가 정상 동작함을 확인할 수 있다. [상세설명] 먼저 python -m pip는 python으로 지정한 Python 인터프리터를 사용하여 pip를 실행한다. 따라서 /usr/bin/python3.7 -m pip는 /usr/bin/python3.7에 있는 인터프리터에 대해 pip를 실행하고 있음을 의미한다. -m 플래그와 작동 방식에 대해서는..

블로킹(Blocking), 논블로킹(Non-blocking)에 대해

블로킹과 논블로킹은 프로그래밍에서 자주 사용되는 두 가지 동작 모델 또는 방식을 나타낸다. 이 두 개념은 주로 입출력(IO) 작업, 네트워킹, 멀티스레딩 등과 관련이 있으며, 어떻게 코드가 실행되고 제어가 처리되는지에 영향을 미친다. 아래에서 각 개념을 상세히 살펴보자. 1. 블로킹(Blocking) 블로킹은 어떤 작업이 완료될 때까지 프로그램이 다음 작업으로 진행하지 않고 대기하는 동작 방식을 의미한다. 주로 입출력 작업에서 발생하며, 예를 들어 파일을 읽거나 네트워크에서 데이터를 받아올 때 블로킹 작업이 발생할 수 있다. 블로킹 호출을 하면 해당 호출이 완료 될 때까지 제어가 호출한 코드에 반환되지 않는다. 이는 다른 작업들도 대기 상태에 놓이게 하고, 전반적으로 프로그램의 응답성을 저하시킬 수 있다..

HackerRank 문제풀이 - 11 (Sherlock and Anagrams)

1. 문제 문제는 다음과 같다. 한 문자열의 문자를 재배열하여 다른 문자열을 형성할 수 있는 경우 두 문자열은 서로의 애너그램 이라고 한다. 문자열이 주어졌을때, 서로의 애너그램인 문자열의 하위 문자열 쌍의 수를 찾아야 한다. 2. 1차 문제풀이 2.1 풀이 과정 function sherlockAndAnagrams(s) { let count = 0; for(let len = 1; len orgStr: ${orgStr}, compareSt..

[.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

[.NET] Garbage Collector에 대해

C# .NET에서 메모리 관리는 개발자에게 큰 부담이 될 수 있다. 이러한 부담을 줄이기 위해 C# .NET은 자동 메모리 관리 기능인 Garbage Collector를 제공한다. 이 포스팅에서는 Garbage Collector의 개념과 작동 방식에 대해 알아보고, C#에서 메모리 누수를 방지하는 방법을 정리해보고자 한다. Garbage Collector란? Garbage Collector(GC)는 동적으로 할당된 메모리 중에서 더 이상 사용되지 않는 객체를 감지하고, 이러한 객체들의 메모리를 자동으로 해제하여 시스템 자원을 최적화하는 역할을 한다. 개발자는 메모리 해제를 명시적으로 관리할 필요가 없으며, GC가 대신 처리한다. Garbage Collector 작동 방식 Mark and Sweep 알고리..

Language/C# 2023.07.20

[SQL] Inner Join에서 조인 조건이 같을 시, 테이블 순서의 영향이 있을까?

1. 개요 SQL에서 Inner Join을 수행할 때, 조인 조건이 동일한 경우 테이블의 순서를 바꿔도 쿼리 결과는 동일하다. Inner Join은 두 개 이상의 테이블을 공통된 열을 기준으로 결합하는 연산이다. 조인 조건이 동일하다면 어떤 테이블을 먼저 명시하더라도 결과는 동일하게 나타난다. 2. 예제 예를 들어, A, B, C라는 세 개의 테이블이 있다고 가정해보자. 각각의 테이블은 다음과 같은 구조를 가지고 있다. 테이블 A: id | name | age ---+--------+----- 1 | John | 30 2 | Sarah | 25 테이블 B: id | address | city ---+-------------+------- 1 | 123 Main St | NY 2 | 456 Elm St |..

DataBase 2023.07.10
반응형