카테고리
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252F20240824_133320.jpg%3Falt%3Dmedia%26token%3D0912b347-5bfa-4ff7-9f2c-e7f20bfa662a&w=640&q=75)
2024 FeConf 후기
2024 FeConf 는 세종대 광개토관에서 개최되었습니다. 어린이 대공원역에서 도보로 10분정도 걸린듯합니다. 예약자 이름만 말하면 바로 체크인을 해주셔서 쉽게 체크인을 했습니다. 저는 회사 동료의 취소표로 간거라서 혹시 절차가 까다롭지 않을까 걱정했는데 괜한 걱정이
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fstale.jpg%3Falt%3Dmedia%26token%3D18279e51-704b-4e6c-8fc2-c437027ec353&w=640&q=75)
[React] ReactQuery 의 staleTime, cacheTime
stale 은 곰팡이가 피고, 상했다는 뜻이다. useQuery 로 가져온 데이터가 얼마 뒤에 상할지가 staleTime 이다. 상한 데이터는 어떻게해야할까? 상한 데이터는 버리고, 서버에서 다시 신선한 데이터를 가지고 와야하겠지. (참고) ReactQuery v5 부
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fsuspense.png%3Falt%3Dmedia%26token%3Ddd6b3cdb-9431-4893-82b5-5d9a9119eee1&w=640&q=75)
[React] Suspense 의 원리 및 사용법
1. Suspense 란? React 의 는 비동기 처리 상태를 나타내기 위해 사용되는 컴포넌트이다.props 는 fallback, children 을 갖는다. 비동기가 진행중일때는 fallback 을 보여주고, 비동기가 완료되면 children 을 보여준다. 2. S
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fenum.webp%3Falt%3Dmedia%26token%3Db3af82ef-3a5a-4d37-9e87-151293b8a8fb&w=640&q=75)
[Rust] Enum 사용방법 (초급)
1. 타입스크립트의 Enum 러스트의 Enum 과 타입스크립트의 Enum 에 대해서 비교해서 설명을 해보자면,타입스크립트의 Enum 은 Tree-Shaking 이 안돼고, 코드를 빌드할때 추가적인 자바스크립트 코드를 생성해 성능상으로도 안좋습니다. 하지만 러스트의 En
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fiterator.png%3Falt%3Dmedia%26token%3D817be7ca-6aea-4396-932d-48d701373858&w=640&q=75)
[Rust] Iterator 사용법 [iter, map, collect]
Rust 에서 iter() 와 map(), collect() 같은 함수들은 타입스크립트와 비슷하면서도 다릅니다.이 함수들이 러스트의 소유권과 어떤 관계가 있는지 살펴보고 어떻게 동작하는지 익혀보겠습니다. iter() iter() 메서드는 vec 를 Iterator<
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fesm-cjs.png%3Falt%3Dmedia%26token%3Dfed3848d-d211-4e05-9695-2e5e4dace01f&w=640&q=75)
[Utility] CJS 와 ESM 에 대해서 알아보자 (CommonJS, ESModule)
Node.js 에는 두 가지 모듈시스템이 있습니다. CommonJS 와 ESM 이죠. 이 두 시스템에 대해서 알아보겠습니다. 1. CommonJS 와 EcmaScript Module 은 뭘까? 1-1. CommonJS (CJS) CommonJs 는 Node.js 의
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fdate.png%3Falt%3Dmedia%26token%3Dec55e6df-b2e9-4dd5-b87e-23658fc45195&w=640&q=75)
[Javascript] Date 객체의 모든 것을 알아보자
Javascript Date Date 는 날짜, 시간 관련 기능을 가지고 있는 자바스크립트 내장 클래스입니다. Date 함수에 대해서 알아보기 전에 더 깊은 이해를 위해서 시간과 날짜에 대한 기본적인 내용을 먼저 알아보겠습니다. 1. 세계 표준시간 1-1. UTC, G
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fdnd.webp%3Falt%3Dmedia%26token%3D10e384b0-5df7-4489-ad40-7b796f3039b8&w=640&q=75)
[React] 모바일 드래그 앤 드랍 구현하기
0. 들어가면서 모바일에서 Drag and Drop(DnD) 기능을 구현하면서 만난 문제와 해결하는 과정을 정리하였습니다. 1. Drag and Drop 드래그 앤 드랍의 이해를 돕기 위해 용어 정리, 기본적인 기능 순서로 살펴보겠습니다. 1.1. 용어 정리 DnD
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Ftailwind-custom.png%3Falt%3Dmedia%26token%3Dc47770a9-db9f-4eba-8f4c-024926f64930&w=640&q=75)
[CSS] tailwind theme 커스터마이징 방법
1. tailwind 테마 Theme Configuration - Tailwind CSS 1-1. 테마 확장법 theme 속성은 가장 기본적인 props 이다. 기본 테마 는 정해져 있으며 기본 테마를 변경하거나 확장할 수 있다. 테마를 확장하는 방법은 extends
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Frust-fs.jpg%3Falt%3Dmedia%26token%3Dba6e7e00-b270-4c26-ac4c-53043406b7a9&w=640&q=75)
[Rust] fs, File 로 파일 조작하기
1. Rust 에서 fs, File 사용하기 1-1. 파일 생성 1-1-1. 파일생성하기 파일 생성 관련 동작은 fs::File 에 정의 되어 있다. use std::fs::{File}; let result = File::create("bg_test"); matc
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fpath.png%3Falt%3Dmedia%26token%3D7f9a5153-861e-42eb-b2c7-4eee20b70ac1&w=640&q=75)
[Rust] Path, PathBuf 제대로 짚고 넘어가기
1. PathBuf, Path 사용하기 PathBuf 와 Path 는 String 과 &str 관계와 유사합니다. PathBuf 는 경로 인스턴스를 소유하고 있고, Path 는 인스턴스의 레퍼런스를 가리킵니다. 또한 동작이나 매서드 자체도 String, &str 와 유
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fenv.webp%3Falt%3Dmedia%26token%3D7a19b87c-4899-4dac-831c-2ec5b7b74eaa&w=640&q=75)
[Rust] 맥, 윈도우의 환경변수 가져오기
맥, 윈도우 환경 변수 가져오기 use std::env; let result = env::var("HOME"); if let Ok(value) = result { println!("{}", value); } std::env 의 정적 메서드인 var 를 사용
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fif-let-pattern.png%3Falt%3Dmedia%26token%3D3b1dd2bc-edc7-4b7a-a421-d42caf207064&w=640&q=75)
[Rust] if let 패턴매칭
if let 패턴매칭 을 사용하면 러스트에서 Option, Result 같은 타입의 분기처리를 간편하게 할 수 있습니다. match 패턴매칭과는 다르게 if let 패턴매칭은 모든 분기가 철저하게 핸들링 되는것을 보장하지 않습니다. // 1. match 를 사용했
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fderef.jpg%3Falt%3Dmedia%26token%3Ded155c6a-d001-4ddf-8b76-bceeaed13eb3&w=640&q=75)
[Rust] Deref Trait 과 deref coercion
Deref Trait 의 역할 Deref Trait 을 구현하면 참조 및 역참조를 커스텀 할 수 있습니다. 그래서 Deref Trait 은 보통 스마트 포인터를 구현할 때 사용합니다. Deref Trait 은 std::ops::Deref 에서 import 할 수 있
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fcss-flex.jpg%3Falt%3Dmedia%26token%3Db89c2a02-248e-4da4-ab95-950d2e88b2a1&w=640&q=75)
[CSS] flex 박스 안에서 text-overflow: ellipsis 적용하기
flex 박스안에 존재하는 text 에 ellipsis 적용하기 한줄로 줄이는 방법 .one_line { overflow: hidden; // 박스에서 넘치는 텍스트를 숨긴다. white-space: nowrap; // 줄바꿈이 없어진다. text-overf
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fslow.png%3Falt%3Dmedia%26token%3Db33b2ead-2519-435e-8c32-077c6ff3cecc&w=640&q=75)
[Utility] vercel 호스팅 nextjs ssr 에서 서버 응답 속도가 느린 문제 [진행중...]
왜이렇게 느리지?? 내 블로그는 1가지 고질적인 문제가 있었는데 블로그에 처음 접속할때 속도가 너무 느리다는 것이였다. 체감상 3초~5초 정도 걸리는데 이건 사실 말이 안되는 수치이다. 네트워크 요청을 보면 자바스크립트 번들 크기도 엄청 작고 뭐 별로 불러오고 있는것
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fframer.png%3Falt%3Dmedia%26token%3D02f98333-f8bc-4d9b-b80a-5c931ad53e31&w=640&q=75)
[Utility] framer-motion 의 delay 사용법 [A부터 Z까지]
framer-motion 에서 delay 사용방법 transition 에서 delay 를 사용하면 애니메이션이 시작하는 타이밍을 늦출 수 있다. 즉 delay 는 애니메이션을 특정 시간만큼 지연시킨다. 주로 여러 요소에서 애니메이션을 순서대로 실행 시킬 때 delay
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fframer.png%3Falt%3Dmedia%26token%3D83e3e7d2-07bd-4692-9517-2ae3d6f2f109&w=640&q=75)
[Utility] framer-motion Reorder 에서 Item 의 크기가 바뀔때 애니메이션이 발생하는 버그
framer-motion 의 reorder 와 drag and drop 을 활용해 드래그로 순서를 변경할 수 있는 리스트를 만들었다. 각 리스트는 input 태그로 되어있어서 값을 입력할 수 있다. 텍스트의 길이가 늘어나면 input 의 height 도 증가하고 hei
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fgabia_logo_1200.jpg%3Falt%3Dmedia%26token%3D2958e320-5c51-4a4e-829f-6ad64e89c338&w=640&q=75)
[Utility] vercel+가비아 도메인 구매후 연동하기 A-Z 까지 모든 것!
1. 도메인 구매 가비아 에 접속해서 원하는 도메인을 구매한다. 구매 단계에서 네임서버는 가비아 네임서버를 그냥 써도 되지만 나는 vercel 로 배포할꺼라서 vercel 네임서버를 써봤다. 타사네임서버 사용을 선택한다음 아래와 같이 vercel dns 의 주소를 입
![Post image](/_next/image?url=https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ftft-backoffice.appspot.com%2Fo%2FpostImage%252Fgritql.png%3Falt%3Dmedia%26token%3D44513ee6-5fc9-40dc-838c-67d052ebe00c&w=640&q=75)
[Utility] gritql 를 사용해 90,000줄 코드 리펙토링하기
gritql 은 선언적 쿼리 언어이다. 코드에서 쿼리에 매칭되는 부분을 찾아내거나 변경할 수 있어 리펙토링할때 사용한다. gritql 이 좋은 이유는 Rust 로 작성되어 매우 빠르며, AST 와 Rust 를 gritql 문법으로 추상화했기 때문에 Rust 와 AST 를 몰라도 사용할 수 있다.
![Post image](/_next/image?url=%2Fcat.jpeg&w=640&q=75)
러스트
as_str() 메서드를 사용했을때 소유권이 이동하지 않는 이유 러스트에서 String 변수를 &str (String Slice 라고 부름) 타입의 변수로 사용할때 as_str() 메서드를 사용한다. 이때 소유권이 이동하지 않는 이유에 대해 알아보자. let s: St