본문 바로가기

전체글32

플러터에서 함수를 인자로 전달하는 방법 플러터에서 값이 아닌 function(함수)를 argument(인자)로 넘겨야 하는 경우가 발생한다. 예시 상황 1. 부모 위젯에서 자식 위젯에게 부모 위젯의 state를 변경하는 액션 함수를 넘긴다. 2. 자식 위젯에서 버튼을 클릭하면 넘겨 받은 액션 함수를 실행시킨다. 3. 부모 위젯의 state가 변경된다. 자식 위젯 정의 final void Function(String name) onPressed; class TestWidget extends StatefulWidget { final void Function(String name) onPressed; const TestWidget({super.key, required this.onPressed}); @override State createState.. 2024. 3. 17.
MySQL Error [1248]: Every derived table must have its own alias 에러 원인 1. MySQL은 파생 테이블이나 서브쿼리로 생성된 각 테이블에 대해 alias(별칭)이 필요하다. 2. 이 별칭은 쿼리 내에서 해당 테이블을 참조할 때 사용된다. 에러 쿼리 SELECT * FROM (SELECT point FROM post WHERE category = 'B' AND today_rank = 1) 해결 alias를 지정해준다. SELECT * FROM (SELECT point FROM post WHERE category = 'B' AND today_rank = 1) AS p 2024. 3. 16.
MySQL Error [1093]: You can't specify target table 테이블명 for update in FROM clause 에러 원인 MySQL은 UPDATE, DELETE의 경우 SELECT와 달리 자기 테이블의 데이터를 바로 사용할 수 없다. 상황 A 카테고리에서 1등 게시글의 포인트 점수와, B 카테고리에서 1등 게시글의 포인트의 차이를 계산해서 gap column을 업데이트 하고 싶다. 테이블 정의 CREATE TABLE post ( id BIGINT AUTO_INCREMENT PRIMARY KEY, category VARCHAR(1) NOT NULL, today_rank BIGINT NOT NULL, point INT NOT NULL, gap INT NULL ); 에러 발생 쿼리 UPDATE post SET gap = point - (SELECT point FROM post WHERE category = 'B' AN.. 2024. 3. 16.
스프링부트 3 querydsl 설정 starter 설정 gradle 설정 build.gradle > dependencies에 다음을 추가한다. // querydsl setting implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" 추가된 build.gr.. 2024. 3. 16.
검색엔진에 티스토리 favicon 적용하는 법 파비콘 설정은 아래의 경로에서 할 수 있다.블로그 관리 페이지 > 사이드 메뉴 > 관리 > 블로그     브라우저 탭에서 적용된 favicon 확인 가능  검색엔진에 반영되는 시간구글에 검색해보면 여전히 적용이 안되어 있다.  검색엔진에 적용되는 시간이 필요하기 때문에 며칠 기다리면 적용된 모습을 볼 수 있다. 2024. 3. 15.
number 와 bigint에 관하여 (feat. nestjs) BigInt는 ECMAScript2020(ES11)에 추가된 새로운 타입이다.  BigInt는  Number 타입으로 표현할 수 없는 매우 큰 정수를 다룰 수 있다.  먼저 Number에 대해 알아보자 1. Number는 32 또는 -3.25와 같은 부동소숫점 숫자를 나타낸다. 2. 자바스크립트 코드 내에서 255와 같은 숫자 리터럴은 정수가 아닌 부동소수점 값이다.255 === 255.0 // true 3. 자바스크립트의 Number 타입은 Java나 C#의 double과 같은 64비트 이중 정밀도 바이너리 형식 IEEE 754 값이다. 4. 이는 분수 값을 나타낼 수 있음을 의미하지만, 저장된 숫자의 크기와 정밀도에는 일정한 제한이 있다. 5. 소숫점 이하 17자.. 2024. 3. 14.
github에 잘못 올린 파일 삭제하는 방법 github에 올라가면 안되는 파일을 모르고 commit 후 push한 상황이다. ㅜㅜ 잘못 올린 파일명은 test.tsx이다. 실패한 방법 1. 파일을 프로젝트 폴더에서 직접 삭제한다. 프로젝트 폴더에서 우클릭 후 git bash를 열자 2. git diff 명령어로 test.tsx파일이 삭제된 것을 확인한다. $ git diff diff --git a/test.tsx b/test.tsx deleted file mode 100644 index b32c9dd..0000000 --- a/test.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import React from "react"; - -const Test = () => { - return test; -}; - -export defa.. 2024. 3. 13.
useFormState hook으로 Form 상태를 다루자 useFormState란? form action의 결과를 기반으로 state를 업데이트 할 수 있도록 제공하는 hook이다. useFormState의 parameter와 returns에 대해 알아보자 const [state, formAction] = useFormState(fn, initialState, permalink?); Parameter fn 1. form이 submit 되었을 때 호출되는 함수 2. 이전 state와 FormData를 argument로 받는다. async function increment(previousState: number, formData: FormData) { return previousState + 1; } initialState 초기값 permalink (optiona.. 2024. 3. 10.
자바스크립트 Set를 활용하여 중복을 제거하자! 개념 - 자료구조에서의 Set란 순서가 없으며 중복되지 않은 데이터의 집합이다. - 즉 Set는 동일한 요소가 존재할 수 없다. - 배열은 데이터를 순서있게 저장하고 index를 통해 저장된 데이터에 접근한다. - 배열에는 동일한 값을 다른 index에 여러 번 저장 가능하다. - Set는 인덱스를 통해서 접근할 수 없다. - 자바스크립트 Set는 ES6에 추가된 기능이다. - 자바스크립트의 Set은 요소를 삽입한 순서대로 반복 할 수 있다. 어디에 사용하면 좋을까? - 여러 상품 목록에서 추출한 키워드 리스트가 필요할 때, 배열 대신 Set에 저장한다면 중복을 제거할 수 있다. - 사용자 ID, 이메일 주소 등 고유해야하는 값들을 관리할 때 사용할 수 있다. Set 생성 - Set는 class이므로 n.. 2024. 3. 7.