April 8, 2023 • ☕️☕️ 11 min read
신기한 바닷속 세상 🪸
hyphens
CSS 속성은 텍스트가 여러 줄로 나뉘었을 때 단어를 어떻게 하이픈으로 이을지 결정하는 속성이다.
hyphens: 'none'
hyphens: 'manual'
line-break
등)를 명시적으로 정의한 문자가 있는 경우에만 하이픈으로 연결한다.hyphens: 'auto'
­
라는 HTML entity가 있다.
이 엔티티는 소프트 하이픈(soft hyphen)이라고도 불리는데, 웹 문서 내에서 단어를 줄바꿈 할 수 있는 위치를 제안하는데 사용된다.
줄바꿈을 적절한 위치에서 수행하여 가독성을 높이는데 사용할 수 있다.
import { useEffect, useRef } from "react";
const usePrevious = <T,>(value: T): T | undefined => {
const ref = useRef<T>();
useEffect(() => {
ref.current = value;
});
return ref.current;
};
export default usePrevious;
리소스를 지연 로드할 때 사용한다.
로딩 상태, ssr 여부등을 설정할 수 있다.
import dynamic from "next/dynamic";
const DynamicComponent = dynamic(() =>
import("../components/hello").then((mod) => mod.Hello)
);
자사 제품을 사내에서 직원들이 일상적으로 사용해보고 문제점을 확인해보는 방법. 사용자 관점에서 제품의 품질과 UX를 확인할 수 있다.
영어로는 dogfooding
, Eating your own dog food
라고도 한다.
credential
뚫어주기일반적으로 Cookie는 같은 도메인만 신뢰할 수 있기 때문에, 서버에서 프론트로 Cookie를 보낼 때 CORS 에러가 날 수 있다. 이런 상황에서 Cookie를 사용하기 위해서는, 프론트에서 credentials
값을 include
로 설정해준다.
👩🏫 axios
에서는 withCredentials
를 true
로 설정하면 된다.
백엔드에서는, allowCredentials
를 true
로 설정해서 헤더의 Access-Control-Allow-Origin
과 Access-Control-Allow-Credentials
값을 설정해준다.
로컬에서는 서버 설정 없이도 Cookie를 사용할 수도 있다. vite나 webpack에서 proxy 서버를 사용하면 서버를 한대 띄워주는데, 그 서버로 모든 요청이 오고가기 때문에 CORS 에러가 나지 않는다.
Ref https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials
__dirname
process.cwd()
Project
├── main.js
└──lib
└── script.js
파일 구조가 위와 같을 때, 각 실행결과는 다음과 같다.
// ./main.js
require("./lib/script.js");
console.log(__dirname); // C:\Project
console.log(process.cwd()); // C:\Project
// ./lib/script.js
console.log(__dirname); // C:\Project\lib
console.log(process.cwd()); // C:\Project
isNaN
대신…isNaN
은 NaN
객체인지 여부만을 검사하므로 숫자인지 여부는 확실히 알 수 없다.
그래서 query param에 페이지 등 숫자 parameter의 유효성을 체크할 때 isNaN
으로 검사하면 Infinity
등을 넣은 케이스를 방지할 수 없다.
제대로 숫자만 검증하려면 필요에 따라 isFinite
, isInteger
등을 사용한다.
ReactElement
은 React에서 JSX
또는 React.createElement
로 생성된 element의 타입이다. type
과 props
속성을 가지고 있다.
type Key = string | number
interface ReactElement<P = any, T extends string | JSXElementConstructor<any> = string | JSXElementConstructor<any>> {
type: T;
props: P;
key: Key | null;
}
React 팩토리(함수, class)의 property에 값을 할당하면 ReactElement.type
으로 그 값에 접근할 수 있다.
Ref https://prismic.io/blog/nextjs-ssr-vs-ssg
Next.js는 feature가 deprecate되었을 때 Next.js 코드베이스를 업그레이드시켜줄 수 있도록 codemod 변환을 제공한다.
codemod는 프로그램 단의 코드베이스 변환기로, 모든 파일을 수동으로 바꾸는 대신 많은 양의 코드를 자동으로 바꿔준다.
npx @next/codemod@latest <transform> <path>
transform
- 변환할 패키지의 이름path
- 변환할 파링 또는 디렉토리--dry
- 코드는 수정되지 않는다.--print
비교하여 바뀐 결과를 출력한다.Ref https://nextjs.org/docs/advanced-features/codemods
console.debug()
로 개발자도구의 debug 패널의 각 탭에 콘솔을 찍어준다.
이때 노출시킬 log level을 조절할 수 있다.
console.debug("디버그 메세지");
console.info("정보 메세지");
console.warn("경고 메세지");
console.error("에러 입니다.");
Ref
projects
search
Ref ChatGPT (ㅋㅋ)
%{all_commits}
를 추가하면 커밋 메시지가 알아서 쏙쏙! (Ref)요즘 많은 회사들에서 빠르게 생겨나고 있는 것 같다.
진짜 20년 전에 상상만 하던 세계가 현실로..? 😲
Ref https://www.youtube.com/watch?v=pBdwrB4rEA4
자바스크립트에도 드디어 deepClone을 할 수 있는 메서드가 생겼다. 이름은 structuredClone()
structuredClone()
메서드는 값을 깊은 복사할 수 있다. 또한 변환 가능한 객체의 기존 값을 새로운 객체에 복제하지 않고 ‘전달’할 수 있다. ‘전달된’ 객체는 기존 객체와 분리되며, 새로운 객체로 생성된다. 이때 기존 객체에는 더 이상 접근할 수 없다.
예제로 자세히 살펴보자.
// 값이 있는 객체를 생성하고 순환 참조를 시킨다.
const original = { name: "MDN" };
original.itself = original;
// 해당 객체를 structuredClone한다.
const clone = structuredClone(original);
console.assert(clone !== original); // 두 객체는 같지 않다. (참조가 다르다.)
console.assert(clone.name === "MDN"); // 두 객체는 같은 값(`name`)을 가지고 있다.
console.assert(clone.itself === clone); // 순환 참조는 유지된다.
Ref https://developer.mozilla.org/en-US/docs/Web/API/structuredClone
왠지 마음이 편안해지고 예쁘다 ㅎㅎ
Ref https://uicolors.app/create
일론 머스크가 또…
Ref
Ref https://ykss.netlify.app/translation/10_web_development_trends_in_2023/
아무래도 ChatGPT, Copilot 등의 등장으로 이 업계가 뒤숭숭하긴 한 것 같다. 그런데 이 저자가 지적한, ‘망한다면 프론트가 아니라 백엔드다.‘라는 말은 뭔가 그럴듯하면서도 웃기다.
Ref
조금 긴 휴가를 내고 케언즈에 다녀왔다 ㅎㅎ 그레이트 배리어 리프와 열대우림까지. 비행기까지 미뤄서(돈 더 내고…💸) 보고 오길 잘했다! 부재 동안 흔쾌히 일을 맡아주신 최고ㅈㅇ선배님 감사합니다 🙇♀️ 사진은 스노클링하며 만난 상어! (직접 찍은 건 아니지만 )
이번 주말에는 드디어 공원 비비큐도 해먹고, 반딧불 투어도 다녀왔다. 오랜만에 돼지고기 넘나 맛났고 반딧불은 짱 신기했다. 반딧불 이모지가 있음 좋겠다.
날씨가 점점 선선해지고 있다! 그리고 이곳의 달은 정말 크다.
브리즈번에서의 마지막 블로그. 안녕 👋