분류 전체보기(113)
-
다시 시작하는 마음으로
SM/SI에 들어온지도 벌서 1년이 지나 2년을 향해가고 있다. 개발자를 준비하다가 방향을 틀어 서비스 기획자가 되어 이제는 회사 생활이 익숙해진 상황이 새삼 낮설게 느껴진다. 참 열심히 개발자를 준비했는데 이제 다시 코드를 치라고 하면 어떻게 뭐 부터 시작해야할지 감조차 오지 않는다. 그래도 개발을 배우면서 정말 기본적인 내용은 기획자로서 좋은 자양분이 되었고 개발 소통을 하는데 있어서 큰 어려움은 없었다. 역시 뭐든지 해두면 어디에서든 써먹을 곳이 생긴다는 말이 생각난다. 다시 이 블로그에 글을 쓰게될 일이 있을 줄 몰랐다. 막상 다시 들어와서 이런저런 글을 살펴보니 그 당시에 나의 마음이 온전히 느껴진다. 다시 글을 쓰게된 이유는 오늘 서비스 기획 멘토링에서 도메인 지식에 대한 어필이 제일 중요하..
2025.07.09 -
Tailwind CSS는? zustand 라이브러리는?
왜 이름이 Tailwind일까 싶었다. "Tailwind"란 용어는 비행기가 날개 끝에서 생성되는 역기류인 "tailwind"와 관련이 있습니다. 마찬가지로 Tailwind CSS는 개발자가 스타일을 쉽게 작성하고 효율적으로 디자인할 수 있도록 도와줍니다. 라고한다. zustand 라는 라이브러리를 접하게 되었다. 참고로 Zustand는 독일어로 상태를 뜻한다. 나는 이상하게 별개 다 궁금하다. 그리고 barebone이라는 단어가 최소한이라는 뜻인데 여기 캐릭이 곰이라 bearbones라고 써있다. 말그대로 최소한의 설정으로 상태 관리를 해준다는 의미이다. 마침 기업에서 쓴 기술 블로그 글이 있어 읽어 보았다. 읽어보니 Zustand가 아닌 Jotai를 다루고 있었다. https://blog.hwahae..
2023.09.26 -
웹팩을 이해해보자
webpack.config.js를 만들어서 require는 node.js에서 외부 파일을 불어오는 방법 path는 node.js에서 경로 활용할 수 있도록 만들어줌 path 모듈을 불러와줘 경로를 최적화해주는 normalize라는 메소드가 있음 join은 string 형식의 인자들을 현재 운영체제에 맞춰 경로를 설정해줌 resoleve는 경로 지정과 최적화를 동시에 해줌 index.js에 우리가 쓴 js를 모아둔다. __dirname, dist 현재 폴더에 dist 폴더를 만들어줘 파일 name은 bundle.js야 여기에 다 모아둠 entry 이름을 받아서 [name]에 넣어줄 수 있다. html도 번들링 해줄 수 있다. 이런 세부 설정이 가능 일단 여기까지 https://www.youtube.com/..
2023.09.25 -
[백준/node.js] 1654번 랜선 자르기 (왜 안될까..?)
const input = require("fs") .readFileSync("/dev/stdin") .toString() .replaceAll("\r", "") .split("\n"); const n = input[0].split(" ").map(Number)[0]; const k = input[0].split(" ").map(Number)[1]; const arr = [...input].slice(1).map(Number); let start = 1; let end = arr.sort()[arr.length - 1]; let result = 0; while (start parseInt(line / mid)) .reduce((a, b) => a + b, 0); if (total < k) { end = m..
2023.09.25 -
'json-server'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는배치 파일이 아닙니다.
디팬던시에 해당 라이브러리가 있는지 확인하자.
2023.09.23 -
Property 'title' does not exist on type 'EventTarget'.ts(2339)
"use client"; import { useRouter } from "next/navigation"; export default function Create() { const router = useRouter(); return ( { e.preventDefault(); const title = (e.target as HTMLFormElement).elements.title.value; const body = (e.target as HTMLFormElement).elements.body.value; const options = { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ title, b..
2023.09.21