분류 전체보기 50

[Spring] Spring Security 맛보기

미루고 미루던 Spring Security를 슬슬 공부할 때가 된 듯 하다.... 그날이 왔도다1. Spring Security란Spring Security는 Spring 기반의 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크이다.로그인, 보안을 위한 인증 • 인가들을 개발하기 위해선 Spring Security를 많이 사용한다.2. Spring Security 원리Spring Security의 흐름은 다음과 같다.요청(Request) → 필터(Filter) → 인증(Authentication) → 인가(Authorization)(1) 요청(Request)여기서 요청(Request)란 클라이언트가 서버로 보내는 모든 HTTP 요청을 의미한다.서버는 한 번 인증했다고 해서 계속 로그인 상태임을 기억하..

티스토리에서 수식 쓰기

티스토리에 딱히 수식을 쓰는 기능이 없는 것 같아서 찾다가 쓴 글 1. 블로그 관리 > 스킨 편집 > html 편집 클릭2. 태그 안에 수식 관련 script 붙여넣기그냥 이거 복붙해서 붙여넣기하고 저장하면 된다. 저기에 붙여넣으면 된다. 3. 수식 작성하기수식 작성하는데 도움 받을 수 있는 사이트는 여기다.https://editor.codecogs.com/ Equation Editor for online mathematics - create, integrate and downloadDownload svg gif png pdf emf 5 pt 9 pt 10 pt 12 pt 18 pt 20 pt 50 80 100 110 120 150 200 300 Transparent White Black Red Gree..

Etc🏄‍♀️ 2025.12.10

[Algorithm] 시간복잡도에 대해 알아보기

아무리 사교육을 흔들어 제껴도 수학을 70점을 넘어본 적이 없는 내가 너무 어려워서 작성하는 글사실 log도 뭔지 잘 모름... 어카지더보기로그(log) : 어떤 수를 만들기 위해 밑을 몇 번 거듭제곱해야 하는지를 나타내는 수학적 개념 \(a^x = n \) 에서 \(x\)를 \(log_a(n)\)로 표현한다.1. 시간복잡도 정의시간복잡도란 입력값(N)이 커질수록 알고리즘의 수행 시간이 얼마나 빨라지거나 느려지는지 확인하는 지표를 의미한다.입력 크기 n이 증가함에 따라 연산 횟수가 증가하는 증가율(Growth Rate)를 수학적으로 표기한다. 이 증가율을 점근적 표기법(Aysmptotic Notation)을 사용하는데, 개발에선 대부분 빅오(Big-O)표기법을 가장 많이 사용한다.표기법기호의미용도Big-..

sort()에 대해 알아보기

생각보다 sort()를 사용할 일이 많은데 사용할때마다 헷갈려서 다시 정리한다. 딱 대1. sort()는 2가지 모드로 움직인다첫번째는 기본 정렬 모드두번째는 비교함수(콜백) 정렬 모드내가 많이 사용한건 비교함수 정렬이었는데 일단 둘 다 알아보자! 1️⃣ 기본 정렬 - 아무것도 넘기지 않을 때기본적으로 이렇게 생겼다.arr.sort();sort()에 아무 비교 함수(Comparison Function)를 전달하지 않으면 배열의 요소들은 문자열로 변환된 뒤 유니코드 값에 따라 정렬된다.이러한 경우 문자열 배열에선 예상대로 작동할 순 있지만 숫자 배열은 이상하게 배열할 수 있다. (1) 문자열 배열각 문자열을 유니코드 값에 따라 비교하므로 일반적인 사전 순 정렬과 동일하게 작동한다.const fruits =..

[Supabase] cron (스케줄링) 설정하기

Supabase로 스케줄링을 작성할 수 있다고 해서 서비스를 이용해보기로 했다.도전!! 1. Database > Extensions 클릭기본적으로 제공하는 기능은 아니고 확장형 기능이기 때문에pg_cron을 활성화해야 한다. 지금은 활성화했기 때문에 바로 위에 올라와서 보이지만.. 안보인다면 검색창에 pg_cron 검색 후 활성화할 것 2. 스케줄링 실행할 함수 만들기내 로직에는 기존의 테이블 데이터 전부 삭제 → 랜덤 주제 테이블에서 새로운 row선택 → 새로운 주제 insert였기 때문에 다음과 같이 작성했다. 1. 랜덤 주제 INSERTCREATE OR REPLACE FUNCTION dalmuri.get_random_topic_fix() RETURNS VOID LANGUAGE plpgsqlSET..

[Supabase] 내 테이블의 계정(User), 역할(Role)과 권한(Policy)에 대해 알기

Supabase로 TABLE을 생성하여 CRUD를 하려 하는데 뭘 할때마다권한이 없다접근이 제한되었다스키마에 당신이 작성한 TABLE이 존재하지 않는다등 내 기준 쌩뚱맞은 에러가 너무 많이 난다.아무래도 내가 SQL을 아주 많이 까먹은 것 같은데....다시 복습 겸 정리해야겠다. 1. 내가 현재 접속한 계정(User) 알기SELECT current_user;이라고 접속하면이렇게 뜨는데 그럼 여태까지 postgreSQL의 최상위 관리자 계정에서 설정을 진행했다는 뜻이므로 절대 이 계정으로 접속되어 있으면 안된다..가 정석이지만 Supabase에선 postgres가 아닌 다른 계정으로 접속할 수 없다고 한다.물론 일반적인 PostgreSQL에선 계정을 바꿀 순 있다. 아니 오히려 바꿔서 해야 한다..!2. ..

[SQL] Connection Pool이란 무엇인가

이번에 Supabase를 개발하면서, connection pool이 사용량을 넘어서 DB가 과부하로 폭발한 적이 있었다. 그래서 connection pool을 기본 15에서 30으로 늘렸더니 괜찮아 졌는데...connection pool이 정확하게 뭔지 알아보자.(자꾸 Connection Poop라고 쓰게됨;)1. Connection Pool이란DB Connection이란 애플리케이션과 데이터베이스 서버가 서로 통신할 수 있도록 하는 '연결 통로'이다. DB에 대한 연결 정보를 입력하면, DriveManager 클래스를 이용하여 Connection 객체가 생성된다. 이 통로를 통해 SQL을 보내고 결과를 네트워크로 반환할 수 있다. 보통 Connection 객체 하나가 하나의 트랙잭션 단위를 담당하게 된..

[Supabase] Supabase에 대해 알아보기, 기본 세팅

프로젝트 기능 중 오늘의 주제에 대해 자유롭게 말하는 기능이 있다. 랜덤한 주제를 가지고 오는 openAPI를 찾아서 연결하고 싶었는데 그런건 없어 보여서 나를 위해서 직접 만들기로 했다.아직 라즈베리파이로 DB구축을 덜 끝내서 그거 끝내고 openAPI로 만들까 하다가.. 찾다보니 Supabase라는걸 알게됬다. 1. Supabase란복잡한 서버 구축 없이도 PostgreSQL을 통하여 DB구축 및 로그인 인증, 스토리지, 실시간 API를 제공하는 Backend as a Service이다. 기존의 개발자들이 DB 생성, 사용자 인증 등을 매번 각각 개발해야 했다면 Supabase는 이를 패키지화 해서 제공하기 때문에 매우 편리하다. 또한 일정 용량정도는 무료이기 때문에 간단한 서비스를 만든다면 Supa..

[Dalmuri] Supabase로 랜덤 주제 open API 만들기

지금 작성하고 있는 dalmuri 프로젝트 내에 랜덤 주제를 던지면 그것에 대해 자유롭게 이야기하는 기능을 만들고 있다.저 문구에 매일 다른 내용으로 바뀌고 자유롭게 이야기하는것을 구성한다.라즈베리파이를 외부에서 연결 후 DB를 구축하고 싶었는데, 좋은 시스템을 찾는 와중 Supabase라는걸 알게 되었다..Supabase에 대한 설명은 추후에 작성한다... 어찌됬건 Supabase를 통해 open API를 만들고, 그 open API를 내 프로젝트에 불러 위 위젯에 문구를 띄우는 방식으로 만들기로 생각했다. 들어가기 전에! 먼저 Supabase에 프로젝트를 만들었다는 가정 하에 작성한다...1. Supabase에서 TABLE 생성테이블에는 ID, 내용, 그리고 insert time이 들어가 있다. 랜..

JavaScript 화살표 함수 괄호 사용법 정리(+익명 함수)

어떤건 () => {} 이렇게 쓰고 어떤건 () => ({}) 이렇게 쓰고 어떤건 ({}) 이렇게 쓰니 뭐를 어떤 상황에서 써야 하는지 헷갈려서 정리한다. 1. (입력) => {명령문} — 블록형 화살표 함수화살표 함수는 익명 함수의 형태 중 하나로, 익명함수에 대해서도 알아야 한다. 익명 함수에 대한 설명은 여기를 참고할 것. 기본적으로 화살표 함수는 다음과 같이 생겼다.(매개변수(= 입력)) => {실행문, 명령문}소괄호()에는 전달되는 매개변수를 입력하고, 중괄호{}에는 실행할 여러줄의 코드를 작성할 수 있다. 1️⃣ 중괄호{} 안의 내용이 1줄로 끝난다면 중괄호를 생략할 수 있다.const addOne = x => x + 1⚠️ 주의! 중괄호를 쓴다면 반드시 return을 작성해야 한다. 2️⃣ ..