메모이제이션 (Memoization) 메모이제이션은 컴퓨터 프로그래밍에서 사용되는 기법 중 하나로, 이전에 계산한 결과를 저장하여 동일한 입력에 대한 함수 호출시 다시 계산하지 않고 저장된 결과를 반환하는 것이다. 주로 계산비용이 큰 함수의 성능을 개선하기 위해 사용되며, 해시테이블 또는 캐시라는 데이터 구조를 사용하여 구현한다. 함수의 입력값을 해시화하여 해당 값과 연결된 값을 저장하고, 다음에 동일한 입력 값으로 함수가 호출되면 캐시에서 결과 값을 찾아 반환한다. 재귀함수 예시코드 function factorial(n) { if (n === 0 || n === 1) { return 1; } else { return n * factorial(n - 1); } } // 메모화된 팩토리얼 함수 const ..
토큰 (Token) 이란? 토큰은 정보를 나타내는 작은 조각으로, 보통 문자열 형태로 표현된다. 컴퓨터 시스템에서 토큰은 인증, 권한부여, 데이터 교환등 다양한 컨텍스트에서 활용된다. 토큰기반 인증방식 (Token-Based Authentication) 사용자 인증을 위해 사용되는 방식중 하나로, 인증상태를 서버에서 관리하는 대신, 토큰이라는 정보조각을 사용하여 인증을 처리한다. 토큰은 일반적으로 JSON Web Token (JWT)포맷을 따르며, 클라이언트와 서버간 통신에서 사용된다. 토큰기반 인증방식 작동방식 로그인 (Login): 사용자가 애플리케이션에 로그인을 시도한다. 이때 사용자가 제공한 신원 정보(일반적으로는 아이디와 비밀번호)를 서버에 제출한다. 인증 (Authentication): 서버는..
❓ 문제 상황 보통 개발자 도구에서 오류가 나는것은 잘못된 코드를 작성한 것이지만 간혹 확장 프로그램때문에 생기는 오류가 있다. 난 이전부터 보이던 오류를 해결하지못하다가 확장프로그램을 하나씩 비활성 시켜보면 문제를 찾아냈다. 💡 문제 해결 스택 오버플로우에서 Uncaught TypeError: Cannot read properties of undefined (reading 'getInlineAnchor') 라는 오류는 크롬의 확장프로그램에서 나는 충돌이라는 것을 알고 나의 확장프로그램을 하나씩 비활성시켜보며 알아낸 결과 https://chrome.google.com/webstore/detail/terabox-download-assistan/dpadflhmiohjfhhaehelneimpllfbpcg?hl..
💬 들어가며 이전에 만들었던 web 홈페이지를 리팩토링 하는중, lighthouse를 통해 성능최적화까지 진행중에 있었다. 이전에 다른 프로젝트를 마무리하며 진행하다가 알게된 한가지 팁을 소개하고자 한다. ❓ 문제 상황 SEO 검색엔진 최적화 부분에서 사진과 같이 문서에 메타설명이 없음. 이라고 뜰 때 해결하는 아주 간단한 방법이다. SEO 란? SEO (Search Engine Optimization)의 약자로 "검색엔진 최적화" 를 뜻한다. 웹 사이트나 웹 페이지가 검색 엔진 경과 페이지(SERP)에서 높은 순위에 나타나도록 최적화 하는 프로세스를 가르킨다. 이 프로세스는 유용한 콘텐츠를 제공하고 웹 사이트를 검색 엔진 알고리즘에 친화적으로 만들어 사용자들이 검색 결과에서 해당 웹페이지를 더 쉽게 찾..
JSON (JavaSCript Object Notation ) 데이터를 표현하는 방식중 많이 사용되는 JSON은 데이터를 간단한 텍스트 형식으로 표현하는 방법이다. 객체와 배열을 사용하여 데이터를 구성하고, 객체는 이름-값 쌍을 포함한다. 배열은 값의 순서 목록을 포함한다. JSON은 JavaSCript에서 사용하는 형식으로, 데이터 교환과 스크립트에서 사용하기 쉬우며, 다양한 프로그래밍 언어에서도 지원된다. 형식은 다음과 같다. { "name": "John", "age": 30, "city": "New York" } XML ( Extensible Markup Language ) XML은 데이터를 마크업언어로 표현한 언어이다. HTML 코딩시 사용하는 마크업 언어와 같이 데이터를 구성한다. 태그는 데이터..
Application을 만들때 가장 중요한 통신에는 동기와 비동기가 있다. 그의 차이점은 여기서 확인하자. https://strap.tistory.com/75 동기, 비동기란? 동기(Synchronous) 동기방식은 어떠한 일을 처리하는 동안 다음 작업이 수행하지 못하고 첫번째 작업이 끝난 후 다음동작이 가능한 것을 말한다. 순서대로 하나씩 작업을 처리할 수 있는 방식을 말 strap.tistory.com 웹 비동기 통신 종류중 JS에서 사용되는 HTTP 통신을 알아보자. Ajax (Asynchronous JavaScript And XML) Ajax는 JavaScript를 사용하여 서버로 데이터를 보내고, 서버에서는 XML, JSON 등의 데이터 형식으로 응답한다. 이 데이터를 사용하여 웹 페이지의 일부..
오버로딩 ( Over Loading ) 오버로딩은 한 클래스 내에 여러 같은 이름의 메소드르 정의해, 프로그램의 가독성을 증가시키는 방법이다. 오버로딩의 특징 메소드 이름이 같다 파라미터 개수가 달라야한다 파라미터 갯수가 같다면, 데이터 타입이 달라야한다. public class Overloading{ void test(){ System.out.println(" 매개변수 없음 "); } void test(int a, int b){ System.out.println(" 매개변수 없음 " + a + b); } void test(string abc){ System.out.println(" 매개변수 없음 " + abc); } } 이렇게 메소드의 이름을 같게하고 매개변수의 갯수를 다르게 혹은 타입을 다르게 선언하..
리눅스 디렉터리 리눅스 다음 그림과 같이 계층적인 트리 구조를 가지고 있으며, 각각의 디렉터리는 파일 시스템의 일부분을 나타낸다. 리눅스 파일 시스템은 루트 디렉터리에서 시작하며, 다음과 같은 하위 디렉터리들로 구성된다. 참고로 리눅스의 디렉토리는 윈도우의 폴더와 같은 역할을 한다. 디렉토리 별 기능 디렉터리 기능 /bin 시스템에서 사용하는 기본적인 실행 가능한 명령어들이 저장되어 있는 디렉터리 (mv, cd, rm등) /sbin 시스템 관리용 명령어들이 저장되어 있는 디렉터리 (ifconfig, e2fsck, ethtool, halt ) /usr/bin 일반 사용자들이 사용가능한 명령어 파일들이 존재하는 디렉토리 /usr/sbin /bin 에 제외된 명령어와 네트워크관련 명령어가 들어있는 디렉토리 /..
❓ 문제 상황 이전부터 내 vscode에는 심각한 문제가 있었다... 다름아닌 .history 폴더가 생기고 ctrl + s 저장을 할 때마다 history가 저장되어 용량을 계속잡아 먹었다. 팀 프로젝트를 진행할때에도 실수로 .history를 올리곤 했다. (물론 추후엔 .gitignore에 추가하여 없앴지만) 아무튼 귀찮은 이 파일을 제거하는 방법을 찾았다. 💡 문제 해결 1. vscode를 열고 "파일" > "기본설정" 탭으로 간다. 2. "설정" 메뉴에서 "Files: Exclude" 검색 3. (가장 상단에 있음) Files:Exclude에 패턴추가하기 마지막에 보이는 것 처럼 **/.history 추가하기 그 후 vscode를 재실행 하면 .historty 폴더가 제거된 것을 확인 할 수 있다..
동기(Synchronous) 동기방식은 어떠한 일을 처리하는 동안 다음 작업이 수행하지 못하고 첫번째 작업이 끝난 후 다음동작이 가능한 것을 말한다. 순서대로 하나씩 작업을 처리할 수 있는 방식을 말하는 것이다. 🤔 : 동기는 동시에 일어나는 이라는 의미를 갖고있어. 비동기 (Asynchronous) 비동기방식은 반대로 요청을 다른 작업을 하는 와중에 다음 동작을 수행할 수 있다. 첫번째 작업이 수행되고 응답을 기다리는동안 뒤의 동작을 먼저 실행하여 동시에 작업을 처리할 수 있는 방식이다. 🤔 : 비동기는 동시에 일어나지 않는 이라는 의미를 갖고있어. 🙋♂️ 여기서 잠깐. 동기는 동시적으로 일어나는 뜻, 비동기는 동시에 일어나지 않다는 뜻. 이상하게 들릴 수 있지만 여기서 말하는 동시는 작업의 요청과 ..