분류 전체보기 19

전역 상태(zustand)에서 배열 concat의 side effect, 해결 방안 (feat. React Strict Mode)

문제 상황공공데이터 API에서 받은 하루 동안의 특정 경로의 고속버스 운행 리스트 데이터를 전역 상태인 useTowardBusListStore()에 Array concat으로 기존 배열 데이터 + 받은 데이터를 저장하고 있었다.zustand로 전역 store를 만들었으며, 아래에서 useForwardBusListStore의 concat 함수 코드만 보면 된다.concat 함수를 보면 원래 state list에 새로 들어온 list를 합치는 작업을 한다.forwardBusList: [...state.forwardBusList, ...newforwardBusList]import { create } from 'zustand';import type { ForwardBusListState } from './ind..

Vite Proxy with Base URL & CORS 해결

Vite에서 proxy를 쓰는데 github page 배포와 같이 base url이 필수적인 세팅에서는 어떻게 proxy 경로 구성해야 하는지 설명 찾기가 힘들어서 이번 기회에 글로 남겨놓으려 한다.배포 환경에서도 proxy를 이용하고 싶었는데 github page에서는 지원하지 않는 것인지 실패했고, vercel의 경우 vercel.json을 통한 추가 경로 설정으로 성공했다. (참고 : https://velog.io/@jeajea0127/Vercel에서-proxy-설정하기)netlify에서도 비슷한 추가 설정으로 가능한 것 같다 : https://github.com/vitejs/vite/discussions/17381#discussioncomment-9939768github page는 정적 페이지 배..

10분 만에 웹사이트에 PWA 적용해서 웹앱 만들기!

사실 처음 붙잡았을 때는 오류 해결하느라 1시간 정도 걸렸고, 글로 정리해서 작성하는 데는 미루다 일주일 넘게 걸렸다... 그래도 manifest.json 등록하는 것은 정말로 금방 할 수 있다!!PWA란?Progressive Web Apps 의 약자로 브라우저 기반의 웹을 앱처럼 바로 설치해서 사용 가능한 기술이다.윈도우라면 윈도우 프로그램처럼 설치되고 작업 표시줄에 등록도 가능하고, 모바일이라면 진짜 별도의 앱처럼 설치된다.브라우저에서 제공하는 기능이고, 캐시 정보 등은 브라우저에 저장되면서 설치되는 듯하다.아직까지 한글 정보는 많이 없고 설명이 적어 MDN 공식 문서가 가장 좋았다. MDN 문서 중에서도 번역되지 않은 부분이 많아 나중에 기여해보면 좋을 것 같다.https://developer.mo..

[우아한테크코스 7기] 프리코스 1주차 회고 - 프론트엔드

프리코스 참가와 1주차우아한테크코스에 한 번은 도전해보고 싶다고 생각하던 차에 동아리에서 하는 사람들도 많이 보여서 같이 스터디하며 성장히기 위해 지원했다.다른 부트캠프들과 다르게 프리코스를 다함께 풀어나가면서 더 좋은 코드에 대해 고민할 수 있는 시간을 가질 수 있다는 것이 좋아 보였다. 하지만 그만큼 시간이 많이 들어서 학기와 병행하는 건 매우 힘들다..자기소개서 작성프로그래머가 되려는 이유와 지원 동기 2000자오랜 시간 몰입했던 경험 그리고 도전 2000자프리코스 목표 설정 1000자도합 5000자에 달하는 자소서를 쓰면서 생각보다 글로 녹여내 쓸만한 경험이 많이 없다는 것을 느꼈다. 블로그를 좀 더 열심히 쓰면서 글을 많이 모아두어야겠다.요구사항요구사항은 기능 요구사항, 입출력 요구 사항, 프로..

대외활동 2024.10.30

인프런 판교 퇴근길 밋업 with 개발바닥 참여 후기

소개인프런에서 주기적으로 크게 진행하는 행사인 판교 퇴근길 밋업에 드디어 선정되어 다녀오게 되었다!! 아직 학부생인데도 선발되어 정말 감사했고 좋은 경험이었다. 가서 보니 최종 지원자가 713명이었고 이 중 100명에 선발된 것!특히 이번엔 블로그와 링크드인 통해서 알고 있었던 인프랩 CTO 향로님과 개발바닥 유튜브 운영하시는 호돌님이 진행하신다 해서 큰 기대를 안고 갔었다. 일정은 개발바닥의 고민 상담 이후 식사하며 네트워킹 순서로 진행되었다.이번에는 특정 주제가 있는 것이 아니라 다양한 개발자 분들의 고민을 미리 신청할 때 받아 10개를 추려 향로님 & 호돌님이 직접 답변해주는 방식이었다.그런데 두 분 다 오랜 개발 경력 동안 쌓인 게 많으셨는지 답변을 진짜 줄줄이 계속 해주셔서 10개 중 6개밖에 ..

React Component와 객체지향의 차이에 관하여

소개글과연 객체지향, OOP에서 말하는 객체와 React Component를 동일선 상에 놓고 봐도 되는가?KUIT 교내 개발 동아리에서 WEB 파트장을 하다 이런 질문을 받게 되었다. 좋은 질문을 남겨준 이름 모를 부원 분께도 감사하며, 파트장을 하며 오히려 알아가는 것이 많아 힘들지만 재밌다.지금까지 받은 질문 중에서 가장 많이 찾아보고 고민했음에도, 아직까지 스스로 명확한 답을 내리지 못한 상태이다. 이 질문 덕에 React 공식 문서부터 각종 번역본, React 개발자 분의 블로그(overreact)까지 탐독하게 되었다.(이 글을 읽는 다른 개발자 분들의 의견도 매우 궁금한 상황이고 틀린 내용이 있다면 꼭 댓글 달아 주시면 정말 감사하겠습니다!!)JS Deep Dive 책을 다 읽고 이해한다면 더..

Fixed Menu, 메뉴 바 상단 고정 구현 시 content에 margin-top을 주면 위험한 이유 (feat. margin collapsing)

소개KUIT 교내 개발 동아리에서 WEB 파트장을 맡아 운영 중이다. WEB 파트 부원들에게 준 2주차 미션이 당근마켓 화면 HTML, CSS로 클론코딩하기였다.미션 결과물 코드리뷰를 하다 좋은 질문들이 많이 나와 공부가 많이 되었는데, 그 중에 fixed menu, 메뉴 바 상단 고정 구현 할 때 menu bar 아래 content에 margin-top을 주면 위험할수도 있겠다는 생각이 들었고, 그 이유에 대해서도 많이 찾아보게 되어서 글을 써보았다.질문코드와 함께 보는 것이 편할 수도 있을 것 같아 추가한 github discussion 주소이다.만들고자 하는 화면은 아래 이미지처럼 당근마켓의 한 화면을 구현하되, 스크롤을 내려도 맨 상단 바가 항상 위에 고정되도록 하는 것이었다. 일반적인 블로그나 ..

블로그에 대한 사견

블로그 글은 일단 쓰고 공개하는 것이 중요하다.항상 생각하지만 정말 실천하기 어렵다.블로그를 위한 노력들을 돌이켜 보면 첫 시작은 네이버 블로그였다. 2021년쯤 한창 개발자 열풍이 불고 기술블로그를 너도나도 하는 시기에 개발 공부와 함게 시작했었고, 지금 보니 글을 140여개나 올렸었다. 이걸로 군대 면접 때 쏠쏠히 써먹었지만 입대하고서는 버려졌다..이때도 네이버 블로그가 마크다운을 지원 안 하는 것 때문에 노션 글을 옮기기가 너무 불편해서 github blog를 직접 만들려다가 마음에 안 들어서 테마 가져오고 뒤엎고를 반복했었다.그러다 velog도 써봤는데 마크다운 인식은 가장 잘 해주지만 테마 자유도가 떨어지고 기능이 아직 많이 없는 데다 이미지도 복붙이 안 되는 문제 때문에 tistory로 넘어오..

Asrock H110M-HDV 보드 + Linux Ubuntu 22.04 WOL (wake on lan) 설정하기

1. Asrock H110M BIOS 설정2. Ubuntu 22.04 WOL 설정안 쓰는 컴퓨터에 우분투를 깔아서 홈서버를 만든 적이 있다.문제는 24시간 동안 켜 놓으니 전기세나 발열은 둘째 치더라도 소음이 너무 커서 잠자기 힘들어서 해결할 방법을 고민했었다. 물론 구형 HDD에 구형 쿨러를 쓰는 탓도 있겠다.1. 쿨러교체 + HDD를 SSD로 교체, M.2 NVMe to SATA converter가 필요2. 본체를 바깥으로 빼고 벽단자 잘 찾아서 공유기 연결하기 or 선을 길게 빼기3. WOL 설정하고 필요할 때만 켜서 쓰기 or 취침 시간에 자동 종료, 자동 켜지게 구성하기1번은 소음 크기는 줄일 수 있어도 소음 자체는 줄이지 못하고, 2번은 사용 중인 것을 제외하고 살아 있는 벽단자가 없었다. 블..

[JavaScript, Node.js] 프론트엔드(JavaScript Runtime)에서의 Race Condition

JS와 관련해서 흥미로운 사실을 찾았다. 시스템프로그래밍이나 OS 수업에서 한 번쯤 들어봤을 race condition이 프론트엔드에서도 발생할 수 있다는 것이다. Race Condition? race condition은 두 개 이상의 프로세스, 스레드가 공유되는 자원(critical section)에 접근해서 값을 쓰려고 할 때 발생한다. race condition이 발생하면 공유 자원의 값이 의도치 않게 변경되는 문제점이 생긴다. 백엔드에서의 레이스 컨디션은 실제 바뀐 값으로 권한 상승 등이 일어날 수 있어 CTF에서도 종종 출제되고 보안적으로 상당히 심각하게 다뤄지는 문제이다. 반면 프론트엔드에서는 보여지는 화면만 바뀌는 것이니 그렇게까지 위험하지는 않을 것 같고, Race Condition이 발생..