typescript5 [JS] 브라우저에서 유저의 언어 식별 const userLang = navigator.language || navigator.userLanguage; // 'ko' 또는 'en'과 같은 형식 반환console.log("User language:", userLang);if (userLang.startsWith("ko")) { console.log("한국어");} else { console.log("영어");} navigator.language: 대부분의 브라우저의 기본 언어 나타냄.navigator.userLanguage: 오래된 버전(Internet Explorer)의 기본 언어를 나타냄. 2024. 11. 4. [Next] 간단한 룩업테이블 리팩토링 실전 예시 리팩토링 전:'use client'import { ReactNode, useState } from 'react'import ShopBoardTypeSelector from '@/components/Shops/ShopBoardTypeSelector'import SimpleOrderBoard from '@/components/Shops/SimpleOrderBoard'import GeneralOrderBoard from '@/components/Shops/GeneralOrderBoard'import { MenuBoardType, Shop } from '@/components/Shops/interface'import { Menu } from '@/components/Menus/interface'import Sh.. 2024. 5. 28. [AWS] CDK를 처음 접할 때 알면 좋은 것들 cdk v2 기준입니다(2024년 3월 8일 기준 최신 버전). 1. bin/cdk.ts파일에 env 설정하기#!/usr/bin/env nodeimport 'source-map-support/register';import * as cdk from 'aws-cdk-lib';import { CdkStack } from '../lib/cdk-stack';const app = new cdk.App();new CdkStack(app, 'CdkStack', { env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: process.env.CDK_DEFAULT_REGION },});다른 방법도 있긴 하지만, 팀적으로 공통적인 환경을 구성하려면 가장 간단한 방법이라고 생각.. 2024. 3. 8. [TypeScript] Decorator를 이용한 코드 변경 class TestClass { test() { console.log('test!'); } } 위와 같은 클래스가 존재할 때, test() 메소드를 실행시키면 test! 가 터미널에 찍힐 것이다. 이를 test? 로 출력하기 위해 데코레이터로 코드를 바꾸어 실행 결과를 바꿀 수 있다. function Test(target: any, key: string, descriptor: PropertyDescriptor) { const stringified = String(descriptor.value); const matches = stringified.match(/\{([^}]+)\}/); const extracted = matches[1].replace('!', '?'); const execute = new .. 2023. 11. 7. [Node] node로 크롤러 개발 이슈들 정리 개발할 것 특정 웹사이트 크롤링 개발 언어 python의 셀레니움도 생각헀지만, 너무 흔하고 이미 해본 것이라 신선함도 느껴볼 겸 puppeteer를 써보기로 했다. puppeteer는 구글이 개발했다고 한다. 바로 신뢰도 200%. 타입스크립트로 진행했다. 무한스크롤 관련 이슈를 제외하면 개발 자체 난이도는 높지 않았다. 프로세스가 멈추었는지 여부를 보여주기 위해 프로그레스바를 이용해 진행 상태의 시각적 효과를 추가했다. 빌드는 webpack을 이용했다. 전달 방식에 대한 고민 첫 번째 생각 분명 상대방 컴퓨터의 node 설치관련 문제가 있을 거라 생각했다. 그래서 pkg라는 라이브러리로 바이너리 실행파일을 만들어 전달하려고 했지만, puppeteer가 문제였다. 직접 브라우저를 조작하여 크롤링하기 때.. 2023. 5. 15. 이전 1 다음