블로그 그냥 만들어도되고 이전해도 되고 한데쓰던거 귀찮아서 그냥 쓰고 있었다. 그런데 자꾸 광고를 누르고 간다는 사람들이 있어서웬 광고 하고 있었는데 알고보니 모바일웹에서 티스토리 자체 배너광고가 돌고 있었다. 스킨 업로드로 간단히 display: none 해봤는데/m에는 커스텀 스킨이 적용이 안되고 있었다.딱 보고 그것도 못알아차리다니 실격이다 실격... 암튼 그래서 그냥 설정에서 모바일웹 자동연결 꺼봤더니 사라졌다... 별 어이없는 일이 다있다
CORS? SOP?1. SOP(동일 출처 정책, Same-Origin Policy)웹 보안 모델의 핵심으로, 다른 출처의 리소스에 대한 접근을 제한브라우저에서 실행되는 JavaScript가 다른 출처의 API나 리소스에 접근하지 못하도록 함동일 출처의 정의: 프로토콜, 호스트, 포트가 모두 같은 경우 참고링크SOP의 목적: 악의적인 스크립트가 민감한 정보에 접근하는 것을 방지하기 위함2. CORS(교차 출처 리소스 공유, Cross-Origin Resource Sharing)SOP의 제한을 일부 해제하기 위한 보안 정책서버측에서 특정 출처에 대한 접근을 허용할 수 있게 해줌동작방식:클라이언트 측 요청: 요청이 발생할 때 브라우저는 요청이 안전한지 확인하기 위해 CORS 확인서버 측 응답: 특정 클라이언트..
0. Closure + HOC클로저: 이벤트가 발생할 때마다 이전의 상태를 기억해야 하기 때문에 클로저가 필요. 반환된 함수가 실행될 때마다 클로저를 사용하여 함수 실행여부를 결정할 수 있음고차 함수: 인자로 실행하려는 함수를 받아, 이 함수를 조건에 따라 실행하는 새로운 함수를 반환1. Debouncingtype Debounce = (...args: T) => void;function debounce(func: (...args: T) => void, delay: number): Debounce { let timer: ReturnType | null = null; return (...args: T) => { if (timer !== null) clearTimeout(timer); timer..
1.Q1: OOP는 Stateful 프로그램에는 적합하지만, Stateless 프로그램에는 적합도가 떨어지는 편인가?A1: ① Stateful과 Stateless의 개념 Stateful 프로그램은 내부에 상태(state)를 유지하며, 그 상태에 따라 프로그램의 동작이 달라집니다. 예를 들어, 은행 계좌의 잔액 정보를 저장하고 그에 따라 입출금 작업을 수행하는 시스템은 상태를 유지해야 합니다. 반면에 Stateless 프로그램은 내부에 상태를 유지하지 않습니다. 즉, 각 요청이나 함수 호출은 이전의 상태에 영향을 받지 않고 독립적으로 처리됩니다. 예를 들어, 단순한 계산기 프로그램은 입력값에 따라 결과를 반환하지만, 내부에 상태를 저장하지 않습니다.A1: ② 객체지향 프로그래밍(OOP)과 Stateful ..
1. 싱글톤 패턴이란? Zustand 는 싱글톤 패턴?싱글톤 패턴(Singleton Pattern)은 소프트웨어 디자인 패턴 중 하나로, 하나의 클래스에서 단 하나의 인스턴스만 생성되도록 보장하는 패턴입니다. 즉, 애플리케이션 전체에서 특정 클래스의 객체가 오직 하나만 존재하고, 어디서든 이 객체에 접근할 수 있는 전역적인 접근점을 제공합니다. 정의:싱글톤 패턴은 클래스의 인스턴스를 하나로 제한하고, 해당 인스턴스가 전역적으로 사용될 수 있도록 하는 디자인 패턴입니다. 동작 방식:• 클래스 내에 하나의 인스턴스만을 생성하며, 외부에서 해당 인스턴스를 직접 생성할 수 없도록 생성자를 private으로 설정합니다.• 클래스가 처음 호출되면 내부적으로 인스턴스를 생성하고, 이후부터는 동일한 인스턴스를 반환하여..
자주써도 헷갈리는 parallel routes 와 intercepting routes 로기본적인 modal 만드는 법을 정리해보려고 합니다. 1. Parallel RoutesParallel Routes 는 모달을 만들기 위한 기능은 아닙니다.공식문서에 따르면, Parallel Routes를 사용하면 동일한 레이아웃 내에서 하나 이상의 페이지를 동시에 또는 조건부로 렌더링할 수 있습니다. 대시보드나 피드와 같이 앱의 매우 동적인 섹션에 유용합니다. 예를 들어 대시보드에서 Parallel Routes를 사용하여팀 페이지와 분석 페이지를 동시에 렌더링할 수 있습니다 라고 합니다.만드는 법은 아래처럼 @ 를 붙여서(슬롯이라고 합니다) 폴더를 생성하고 page.tsx 만들면 됩니다.app/ ├─ @moda..
git config --global --list 실행시뭔가 좀 꼬여가지고 대충 아래와 같이 나오는 상황이었는데credential.helper 를 지우고 싶었습니다...filter.lfs.clean=git-lfs clean -- %ffilter.lfs.smudge=git-lfs smudge -- %ffilter.lfs.process=git-lfs filter-processfilter.lfs.required=truecredential.helper=cachegit config --global --unset credential.helpergit credential-cache exit위 명령어는 글로벌 Git 설정에서 credential.helper 항목을 삭제하고 캐시된 인증 정보도 삭제합니다. macOS 키체..
supabase 하나의 프로젝트에 여러 배포사이트 OAuth 연결하기supabase 대시보드 > Authentication > URL Configuration 으로 이동Site URL 에는 대표 주소든 뭐든 아무거나 하나 입력하단 Redirect URLs 에 위 Site URL 과 다른, 원하는 주소를 주소/** 형식으로 입력OAuth provider login 코드에 아래 내용 추가const getURL = () => { let url = process?.env?.NEXT_PUBLIC_SITE_URL ?? // 변수명 이거 아니어도 되고 암튼 env에 있는 걸로 process?.env?.NEXT_PUBLIC_VERCEL_URL ?? // vercel 에서 자동으로 생성 'http://..
여기 에 작성했던 내용중 부족한 내용이 있었습니다.컴포넌트와 값을 반환하는 커스텀 훅 사용시 주의사항을 다시 정리합니다.1. useCallback 사용리렌더링 통제가 어렵습니다.반환할 컴포넌트를 useCallback 처리합니다.function usePreferTheme({ mode }: UsePreferThemeProps) { const [selectedTheme, setSelectedTheme] = useState([]); const handleThemeChange = () => { // setSelectedTheme() 어쩌구 등등.. } // useCallback 사용! const PreferThemeToRender = useCallback(() => { ..
수파베이스 db 복제하고 싶을때(단 backup.gz 파일 있어야함)0. psql 설치brew install libpqecho 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.zshrcsource ~/.zshrc1. zip 해제gunzip path/to/your/file/db_dump.backup.gz2. psql 명령어로 백업 파일 복원하기psql -h 호스트명 -p 포트명 -U 사용자명 -d 디비이름 -f path/to/your/file/db_dump.backup• -h: 호스트 이름 (Supabase에서 제공하는 데이터베이스 호스트)• -p: 포트 번호• -U: PostgreSQL 사용자 이름• -d: 대상 데이터베이스 이름• -f: 복원할 백업 파일의..