프론트엔드

🧨 우당탕탕 Axios 인터셉터 만들기

-- 토큰 만료와의 혈투 기록 -- 프론트엔드를 하다보면, 그 어떤 api보다도 나를 가장 괴롭히는게 등장한다 바로 토큰 만료(401) 이번 글은 “처음에 대충 회사 코드 ctrl c + ctrl v 했다가 혼나서 결국 프로젝트 갈아엎고 다시 처음부터 axios 인터셉터 설계하게 된 이야기” 시작은 항상 \복붙이었다. 솔직히 말하면 인터셉터 만들 여유보다는 화면 구성하고싶은 맘이 조급했다. 백오피스를 마이그레이션 하라는 지시를 받았고, 인터셉터 그까이거 그냥 사용하던거 쓰면 되는거 아님? 당연히 이렇게 시작했다. 나는 그냥 옛날 코드 가져와 붙였고, 아무 생각 없이 진행하고 있었다. 근데 코드리뷰에서 멘토님이 한 말씀 기존거 가져다쓰지 마시고 처음부터 머리 박아가면서 만들어보시죠. 네..? 다시요..? 그렇게 나는 다시 401을 맞았다. 그래서 진짜로 인터셉터가 어떤 구조로 작동해야 하는지, 토큰 로직은 어떻게 구성해야 하는지 기본부터 다시 뜯어보기로 했다. 사실 이번 인턴 면접에서 토큰 기반 인증에 관한 질문이 있었고, (현 멘토님이 내 면접관이셨다) 한 페이지에서 여러 요청이 동시에 401 에러가 나오면 어떻게 해결하는지에 대해 여쭤보셨다. 나는 그것까지는 생각을 해본 적이 없어서 잘 모르겠다고 답 했었고?? 두고두고 맘에 남았다. 그래서 기존 프로젝트 axios 인터셉터 보고 “오 이렇게 만드는구나. 설계가 잘 되어있구나” 하고 그대로 갖다 썼던 마음이 큰 것 같다. 첫 삽질: 401 해결하려다 403 맞기 나는 빠르게 at 만료 감지를 만들고, refresh api도 붙였다. 그리고 좀 기다려서 만료되었을 때 나의 시나리오 오래된 at로 api 호출 서버가 401 던짐 인터셉터가 refresh 호출 새 토큰으로 요청 재시도 … 되어야 하는데 만료된 at로 api 호출 -> 401 err 자동적으로 refresh api 호출 -> 403 err 아니 왜 재발급 한번도 못했는데 왜 403 나옴? 이 악몽같은 현상으로 하루종일 삽질만 했다. 재발급 시마다 alert도 띄워보고, Authorization 헤더도 다시 붙여보고, 인터셉터 바깥에서 refresh 호출 성공하는것도 확인했는데,, 원인이 걍 퐝당했음. at와 rt의 유효기간이 같았던 것임!!! 아!뿔!싸! 기존 인터셉터도 이거 처리가 안되어있더라! 너무 모르겠어서 jwt.io에서 token 까보고 알았다. at가 만료되었을 때 rt도 만료가되어 refresh를 할 수 있는 시간이 없었던 것이다. accessToken 만료 → refresh 요청 시도 근데 refreshToken도 이미 만료 → 403 그래서 당연히 403이 나는 구조였다. 근데 백엔드를 바꿔달라고 할 수가 없는 상황 이걸 계기로 오랜만에 조금 머리를 굴려보았다. 자동 재발급? 그건 좀 아닌것같아요. 처음에는 이런 식의 자동 로직을 생각했다. 사용자가 뭘 하든 at 만료 5분전에 자동으로 refresh 하자 근데 이 생각을 말씀드렸더니 멘토님이 말씀하셨다. 사용자가 아무 행동도 안하는데 알아서 재발급 하는건 아닌 것 같아요! 맞말임. 아무래도 백오피스다보니까 보안적인 부분도 고려를 했어야했다. 그래서 방향을 바꿨다. 사용자가 실제 api 요청 시 만료 시간이 5분 이하라면 그때 refresh 하자 즉 활성 사용자만 재발급 → 비활성 사용자 세션은 종료 동시 요청 문제 → Pending Queue 도입 다음 문제는 이거였다. 이거는 내가 면접 때 질문을 받고 대답을 못했던 그 문제이기도 한데 A API 요청 시 → 토큰 만료 → refresh 시작 그 사이에 B API 요청 → 또 토큰 만료 → refresh 또 호출 이러면 refresh api가 동시에 여러번 호출되며 경합이 발생한다. 그래서 필수적으로 refresh 중엔 다른 요청을 멈춰서 줄세우는 로직이 필요하였다. 그것이 바로 pending queue ~~내가 자료구조 수업에서 듣고 코테 풀때만 쓰던 큐를 진짜 써보는 날이 오다니~~ 요약하자면 refresh 중이면 → 요청을 queue 에 쌓아둠 refresh 끝나면 → queue에 있던 요청들을 새 토큰으로 재요청 이렇게 하면 동시 재발급 요청 문제는 해결된다. 세션 만료 경고가 여러 번 뜨는 문제 아 근데 산넘어 산이라더니 에베레스트가 나옴 refresh 실패(401/403) → 로그아웃 처리할 때 다음과 같은 코드가 있었다. 근데 api 여러개가 동시에 터지면서 alert이 여러개가 떴던것임! alert 확인 버튼 연타함 그래서 로그아웃이 한 번만 실행되게 하기 위해서 zustand에 isLoggingOut state를 추가하여 해결하였다. 근데 왜 isLoggingOut 초기화가 안돼요? 문제 발생 두번째 세션 만료 로그아웃 때, 401 떴는데 로그아웃이 안되더라 그건 내가 isLoggingOut 상태값을 zustand persist 미들웨어에 넣어놨기 때문이었다. 그래서 persist partialize 설정해서 해결하였다. ㅎㅎ 바보 최종 Axios 인터셉터 코드 삽질 끝에 만들어진 인터셉터 구조는 다음과 같다. 토큰 만료 5분 이하 → refresh refresh 동안 다른 요청은 pending queue refresh 실패 → 로그아웃 alert 중복 방지 → isLoggingOut accessToken, refreshToken 상태는 zustand에서 관리 Authorization 헤더 자동 주입 정리하자면.. 이번에 인터셉터를 처음부터 설계하면서 느낀 점: 토큰 구조를 이해해야 한다 세션 만료 UX까지 고려해야 한다 동시 요청 문제까지 잡아야 한다 상태관리까지 연계해야 한다 인터셉터는 그냥 훅 두 개가 아니라 프로젝트의 전체 인증 흐름을 담당하는 중요한 부분임을 깨달았다. 그리고 무엇보다: 절대… 생각 안하고 코드 복붙부터 시작하지 말자.

2025년 11월 19일 15:33

프론트엔드

피크민 블룸은 어떻게 꽃길🌸을 남길까?



걷기만 했는데 꽃이 심어졌다. 어떻게 작동하는 걸까? 프론트 개발자 입장에서 추정해봤다. 위치 수집과 저장 꽃을 심기 시작하면, 앱은 사용자의 위치를 실시간으로 추적하기 시작한다. 이때 예상되는 기술 흐름은 다음과 같다: CLLocationManager를 통한 실시간 위치 수집 일정 간격으로 좌표를 샘플링하여 배열에 저장 -> 너무 가까운 위치는 무시하여 노이즈 제거 앱을 닫아도 백그라운드에서 계속 추적 (배터리 최적화 필요) 저장 포맷은 아마도? 꽃을 심은 경로는 단순 좌표가 아닌 시간 + 위치 + 심은 꽃 종류 등 메타데이터가 포함되어 있을 가능성이 높다. 지금 5월이라 또 가정의 달이라고, 이달의 꽃은 카네이션, 장미 등등.. 난리났다. 각각 꽃 이름을 다 고유명사로 짓기에는 한계가 있을테니 시즌-꽃-색상 이렇게 짓지 않았을까? 25-5-rose-red (25년 5월 시즌 빨간색 장미꽃) 지도 위 시각화 꽃을 심고 나면, 지도 위에 꽃잎들이 길을 따라 자동 배치된다. 이를 구현하려면 다음과 같은 절차가 필요하다: MKPolyline 또는 커스텀 캔버스를 이용해 라인을 그림 일정 간격으로 꽃 모양 아이콘을 offset에 따라 반복 배치 아이콘은 애니메이션 또는 이미지 뷰로 간단하게 처리 가능 성능 문제는? 꽃이 많아지면 오브젝트 수도 급격히 증가 -> 렌더링 최적화 필수 과거 기록도 남기려면 서버 측에 저장하고, 맵 확대 시에만 불러오는 식의 lazy loading 전략이 유력 그래서 아이폰 12 mini 에서는 꽃을 오래 심으면 앱이 자꾸 꺼진다 ㅜㅜ 실시간 위치 추적과 일반 걸음 기록은 다르다 피크민 블룸은 항상 걸음을 기록하지만, 꽃을 심을 때만 파란 위치 아이콘이 뜨는 것을 보면 두 기능은 서로 다르게 작동한다. 🌱 일반 걸음 기록 아이폰에서 피트니스 API 또는 HealthKit과 연동되어 걸음 수만 수집 이때는 정확한 위치 정보는 사용하지 않음 -> 아이폰 상단에 파란색 위치 아이콘이 뜨지 않음 🌸 꽃을 심을 때는 실시간 GPS 추적 사용자가 ‘꽃 심기’ 버튼을 누르는 순간부터, CLLocationManager가 실시간으로 위치를 추적하며 경로를 저장 -> 아이폰 상단에 파란 위치 추적 아이콘이 표시됨 이후 종료 버튼을 누르면 기록이 서버에 업로드되거나 저장됨 맵 전체가 아닌, 현재 위치 중심 반경 N미터만 렌더링한다 피크민 블룸을 실행하면, 꽃이 원형으로 촤라락 펼쳐지듯 한 번에 맵에 나타난다. 이걸 보면 전체 데이터를 로딩하는 게 아니라, 현재 위치 기준 반경 약 200~300m 정도만 요청하고 시각화하는 것으로 보인다. (더 넓을수도?) 예상되는 흐름 앱 실행 / 맵 이동 감지 현재 위치를 기준으로 일정 반경 (ex. 200m) 설정 서버에 꽃 정보 요청 응답 받은 꽃 데이터 기준으로 렌더링 경로 따라 꽃 아이콘 배치 종류별로 다른 텍스처 사용 일정 간격마다 반복 표시 사용자가 이동할 경우, 일정 거리 이상 벗어나면 새 요청 * 이전에 본 영역은 로컬 캐시로 보여줌 왜 반경 단위로 렌더링할까? 퍼포먼스 때문: 전체 도시 데이터를 한 번에 불러오면 부하가 너무 큼 프라이버시 때문: 다른 유저의 꽃 경로를 멀리까지 보여줄 필요 없음 인터랙션 유도: 근처만 보여줘야 걷고 이동하게 만들 수 있음 결론 피크민 블룸은 단순한 위치 기반 게임이 아니라, 실시간 GPS 추적 + 사용자 입력 이벤트 + 거리 기반 로딩 전략이 모두 섞인 정교한 구조를 갖고 있다. 이런 구조를 보면 ‘걷기’라는 일상적인 활동도 얼마나 다양하게 확장 가능한지 실감하게 된다.

2025년 05월 03일 16:53

취준

[취준] 카카오모빌리티 2024 주니어 개발자 영입

🟡 서류 카카오모빌리티 2024 주니어 개발자 영입 채용 공고가 떠서 지원하게 되었습니다. 9/19에 채용 공고를 확인했고, 마침 이력서와 포트폴리오가 준비되어 있어서 바로 지원하게 되었습니다. 이력서: https://resume.minjae-dev.com 포트폴리오: https://portfolio.minjae-dev.com 저는 Frontend Engineer 파트로 지원을 하였고 자기소개서는 필수가 아니어서 자기소개서는 제출하지 않았습니다! 많이 준비가 되지 않았다고 생각했는데, 감사하게도 서류 합격 메일이 도착했습니다. 백엔드 파트는 거의 다 붙여준 것 같았고, 프론트엔드 파트는 떨어지신 분이 몇 있으신 듯 했습니다. 🟡 온라인 코딩테스트 서류 합격 다음주인 10/5에 온라인 코딩테스트를 수행하였습니다. 코딩테스트는 코딜리티에서 진행하였고, 따로 캠은 키지 않았습니다. 140분동안 진행되었으며, 총 3문제가 출제되었습니다. 1, 3번 문제는 기본적인 알고리즘 문제였고, 2번 문제는 React 문제였습니다. 제가 알고리즘은 좀 약했기에 React로 하는 코딩테스트는 저에게 기회라고 느껴졌습니다. 알고리즘 문제는 난이도가 평이했으며, React 문제는 생각보다 난이도가 있었다고 생각이 듭니다. 제가 사용해 보지 않았던 React hook이 나와서 처음에 좀 헤맸지만 그래도 어찌저찌 풀었던 기억이 있습니다. 알고리즘은 2문제 다 풀었고, React는 요구사항을 모두 다 지키지는 못했지만 한 개의 요구사항를 제외하고 모두 accept가 떴습니다. 🟡 2차 코딩테스트 10/13 2차 코딩테스트를 보고 왔습니다. 한양대학교 HIT관에서 진행하였으며, 170분 동안 3문제를 풀어야 했습니다. 총 240명이서 테스트를 치뤘는데, 프론트엔드, 데이터사이언스, MLOps 포지션으로 구성되었습니다. 백엔드는 전 타임에 240명이 보았다고 합니다. 문제 유형은 React 1문제, 알고리즘 2문제였습니다. 저는 알고리즘은 자신 없었기 때문에 알고리즘은 풀 시도조차 하지 않았고, 2시간 50분동안 React 문제에만 집중하였습니다. 그래서 떨어졌습니다 ㅜㅜ 아깝지도 않음 다음에 코테 고수되면 또보자 모빌리티야~~

2024년 10월 09일 23:25

CS

[SQLD] 속성(Attribute)

SQLD 1과목 – 속성(Attribute) 속성(Attribute)이란? 속성(Attribute) 은 엔터티가 가지는 고유한 성질이나 특징으로, 👉 데이터 모델에서는 컬럼(Column) 으로 표현된다. 업무에서 관리하고자 하는 정보 중 더 이상 분리되지 않는 최소 단위의 데이터 인스턴스를 구성하는 요소 예시 엔터티: 학생 속성: 학번, 이름, 학과 인스턴스: 학번=2021001, 이름=홍길동, 학과=컴퓨터공학 엔터티 · 인스턴스 · 속성 · 속성값의 관계 하나의 엔터티는 2개 이상의 인스턴스로 구성 → 테이블은 2행 이상 하나의 엔터티는 2개 이상의 속성을 가짐 → 테이블은 2컬럼 이상 하나의 속성은 각 인스턴스마다 1개의 속성값만 가짐 → 한 컬럼에 여러 값 ❌ 속성의 특징 ⭐ 속성은 다음 조건을 만족해야 한다. ① 업무적으로 필요하고 관리할 가치가 있음 의미 없는 데이터 ❌ ② 주식별자에 함수적으로 종속 주식별자 값이 정해지면 속성 값은 하나로 결정 ③ 단일값(Atomic)이어야 함 더 이상 쪼갤 수 없는 값 여러 값 저장 ❌ ④ 다중값 속성은 별도 엔터티로 분리 전화번호 여러 개 → 전화번호 엔터티 분리 ⑤ 인스턴스마다 반드시 하나의 값 NULL 허용 여부는 도메인 문제 구조적으로는 1값 원칙 원자성(Atomicity) 원자성이란 하나의 속성은 더 이상 분해되지 않는 하나의 값만 가진다는 성질 도메인(Domain) 도메인은 속성이 가질 수 있는 값의 범위 데이터 타입 길이 허용 값 제약 조건 (NOT NULL, CHECK 등) 함수적 종속성 (FD: Functional Dependency) ① 함수적 종속이란? 어떤 속성 A의 값이 정해지면 다른 속성 B의 값이 유일하게 결정 표현: A → B 예시 학번 → 이름 주민번호 → 생년월일 ② 완전 함수적 종속 (Full FD) 복합키 전체에 의해 결정 PK: 주문번호 + 제품번호 수량은 주문번호 그리고 제품번호가 모두 있어야 결정됨 👉 완전 함수적 종속 ③ 부분 함수적 종속 (Partial FD) 복합키의 일부에 의해 결정 PK: 학번 + 과목 강사는 과목만으로 결정됨 👉 부분 함수적 종속 키(Key) 관련 개념 정리 키(Key) 인스턴스를 유일하게 식별하는 속성 또는 속성 집합 기본키(PK) 각 인스턴스를 유일하게 구분 NULL ❌, 중복 ❌ 복합키(Composite Key) 2개 이상의 속성 조합으로 하나의 행 식별 속성의 분류 ⭐⭐⭐ ① 속성의 특성에 따른 분류 기본 속성 업무에서 원래부터 존재 사용자가 직접 입력 계산 ❌ 예: 이름, 생년월일, 원금 설계 속성 시스템 설계/운영을 위해 생성 현실 세계에는 없음 자동 생성되는 경우 많음 예: 삭제여부, 상태코드, 구분코드 파생 속성 다른 속성으로 계산·추론 저장 안 해도 계산 가능 예: 나이, 이자, 총판매액 ② 엔터티 구성방식에 따른 분류 기본키 속성(PK) 외래키 속성(FK) 일반 속성 ③ 분해 여부에 따른 분류

2026년 02월 09일 11:08

CS

[SQLD] 엔터티(Entity)

SQLD 1과목 – 엔터티(Entity) 엔터티(Entity)란? 엔터티(Entity) 는 현실 세계에서 독립적으로 식별 가능한 객체나 사물로, 👉 업무적으로 분석·관리해야 하는 대상들의 집합이다. 엔터티는 하나의 대상이 아니라 여러 인스턴스를 포함하는 개념적 집합 데이터 모델링에서 가장 기본이 되는 구성 요소 인스턴스(Instance)란? 인스턴스(Instance) 는 엔터티를 구성하는 개별 사례(실제 데이터) 이다. 엔터티가 학생이라면 인스턴스는 홍길동 학생 한 명의 정보 예시 엔터티(Entity): 학생 속성(Attribute): 학번, 이름, 학과 식별자(Identifier): 학번 인스턴스(Instance): - 학번 = 2021001 - 이름 = 홍길동 - 학과 = 컴퓨터공학 엔터티의 특징 ⭐ 엔터티는 다음 조건을 만족해야 한다. ① 유일한 식별자 존재 각 인스턴스는 식별자로 구분 가능해야 함 이름처럼 중복 가능한 값 ❌ 사번, 학번처럼 유일한 값 ⭕ ② 해당 업무에서 관리할 필요가 있음 설계하려는 업무 시스템과 직접적인 관련이 있어야 함 업무에서 쓰이지 않는 정보는 엔터티로 부적절 ③ 인스턴스들의 집합 엔터티는 2개 이상의 인스턴스가 지속적으로 존재 인스턴스가 1개뿐이라면 엔터티로 보기 어려움 ④ 반드시 속성을 가짐 엔터티는 2개 이상의 속성을 가짐 하나의 인스턴스는 각 속성에 하나의 값만 가짐 ⑤ 업무 프로세스에 의해 이용됨 실제 업무에서 조회·등록·변경·삭제되는 대상이어야 함 사용되지 않는 엔터티는 잘못 설계된 것 ⑥ 다른 엔터티와 최소 1개 이상의 관계 엔터티는 업무상 의미 있는 관계를 가져야 함 관계가 전혀 없다면 엔터티 정의 또는 관계 설정 오류 가능 엔터티의 분류 ① 유형 / 무형에 따른 분류 유형 엔터티 물리적 형태가 있는 실체 비교적 안정적 예: 고객, 사원, 학생, 상품 개념 엔터티 물리적 형태는 없지만 관리해야 하는 개념 예: 부서, 조직, 회원등급, 요금제 사건 엔터티 업무 수행 과정에서 발생하는 사건·활동 발생량 많음, 분석·통계에 활용 예: 주문, 청구, 가입, 신청 ② 발생 시점에 따른 분류 기본 엔터티 업무에서 원래부터 존재 독립적으로 생성 다른 엔터티의 부모 역할 고유한 주식별자 보유 예: 고객, 사원, 상품 중심 엔터티 기본 엔터티를 기반으로 생성 업무에서 핵심 역할 데이터 발생량 많음 예: 계약, 주문, 대출 행위 엔터티 중심 엔터티의 변화·흐름 기록 2개 이상의 부모 엔터티에서 발생 데이터 증가·변경 빈번 예: 주문이력, 결제이력, 거래이력 엔터티 명명 규칙 엔터티 이름을 정할 때는 다음 원칙을 따른다. 현업에서 사용하는 용어 사용 약어 사용 최소화 단수 명사 사용 엔터티마다 고유한 이름 부여 엔터티의 의미가 명확히 드러나게 명명

2026년 02월 09일 10:31

CS

[SQLD] 데이터 모델의 이해

SQLD 1과목 – 데이터 모델의 이해 데이터 모델링이란? 데이터 모델링(Data Modeling) 은 현실 세계의 업무(비즈니스 프로세스) 와 데이터 요구사항을 추상화하고 구조화하여 표현하는 과정이다. 데이터 모델링의 목적 데이터 모델링의 핵심 목적은 다음과 같다. 데이터의 구조를 명확히 정의 데이터의 속성과 제약 조건을 규정 데이터 간 관계를 표현 데이터 중복, 오류, 혼란을 줄여 일관성 있는 관리 가능 👉 결과적으로 설계 기준을 명확히 하여 개발자·기획자·업무 담당자 간 의사소통을 돕는다. 데이터 모델링의 특징 ① 단순화 (Simplification) 현실 세계의 복잡한 내용을 그대로 옮기지 않음 불필요한 세부사항 제거 핵심만 남겨 이해와 설명을 쉽게 함 ② 추상화 (Abstraction) 현실 세계를 일정한 규칙·표기법으로 표현 같은 방식으로 표현하면 누구나 비슷하게 이해 가능 ③ 명확화 (Clarity) 애매한 표현을 줄이고 정확하게 정의 오해 없는 의사소통 가능 데이터 모델링의 3가지 요소 데이터 모델링은 아래 3요소로 구성된다. ① 엔터티 (Entity) 업무에서 관리해야 할 사물, 사람, 개념 예: 회원, 주문, 상품 ② 속성 (Attribute) 엔터티가 가지는 특징이나 정보 값으로 표현 가능 예: 회원명, 주문일자, 가격 ③ 관계 (Relationship) 엔터티 간의 연관성 예: 회원은 주문을 한다 데이터 모델링의 3가지 관점 ① 데이터 관점 데이터가 어떻게 저장·구조화·관리되는지에 초점 ② 프로세스 관점 ⭐ 시스템이 무슨 일을 하는지 데이터가 어떻게 처리·변환·이동되는지 업무 흐름 중심 ③ 데이터 + 프로세스 관점 데이터와 업무 흐름을 통합적으로 이해 프로세스가 어떤 데이터를 생성·변경·사용하는지 정의 데이터 모델링 시 유의점 ① 중복 (Duplication) 동일 데이터는 한 곳에서만 관리 중복 저장 → 관리 비용 증가, 오류 발생 ② 비유연성 (Inflexibility) 업무 변경 시 테이블 구조를 계속 수정하는 구조 ❌ 데이터 구조는 업무 프로세스와 분리해서 설계 ③ 비일관성 (Inconsistency) 데이터 간 모순 발생 중복이 없어도 업데이트 오류 규칙 미정의 로 발생 가능 데이터 모델링의 3단계 ⭐⭐ ① 개념적 모델링 업무 중심, 전사적 관점 핵심 엔터티 도출 추상화 수준 가장 높음 ERD 초안 작성 ② 논리적 모델링 ⭐ 속성, 식별자, 관계를 구체적으로 정의 정규화 수행 재사용성과 표준화 가능 쿼리 구조도 재사용 가능 ③ 물리적 모델링 논리 모델을 실제 DB 구조로 구현 성능, 저장 구조, 보안 고려 추상화 수준 가장 낮음 스키마와 3단계 구조 스키마(Schema)란? 데이터베이스에 저장되는 데이터의 구조와 제약 조건 메타데이터 스키마 3단계 구조 스키마 독립성 논리적 독립성 - 개념 스키마 변경 → 외부 스키마 영향 ❌ 물리적 독립성 - 내부 스키마 변경 → 개념/외부 영향 ❌ ERD(Entity Relationship Diagram) 엔터티와 관계를 시각적으로 표현 Peter Chen 제안 실무에서는 IE / Barker 표기법 사용

2026년 02월 09일 09:20

CS

[정보처리기사] 정보시스템 구축관리

정보시스템 구축관리 소프트웨어 생명주기 / 개발 모델 소프트웨어 생명주기 모델 비용 산정 / 일정 관리 비용 산정 모델 COCOMO 유형 표준 / 품질 모델 ISO / 국제 표준 품질 특성 (ISO 9126) 프로세스 성숙도 / 평가 모델 SPICE CMMI 테스트 / 품질 보증 테스트 종류 알파 / 베타 테스트 보안 / 접근 제어 접근 제어 모델 네트워크 / 보안 시스템 IPSec 네트워크에서의 안전한 연결을 설정하기 위한 통신 규칙 또는 프로토콜 세트 보안 장비 클라우드 / 신기술 악성코드 / 보안 위협 (Malware) 네트워크 공격 / 서비스 거부 공격 (DoS) 서비스 거부 공격(DoS / DDoS) DoS (Denial of Service) 하나의 공격자가 시스템 자원을 고갈시켜 정상 서비스 불가 상태로 만듦 DDoS (Distributed DoS) 여러 대의 좀비 PC가 동시에 공격 분산 공격, 탐지 및 차단 어려움

2026년 02월 04일 07:26

CS

[정보처리기사] 비트 연산자, 연산자 우선순위

비트 연산자 & 연산자 우선순위 비트 연산자란? 비트 연산자는 정수 값을 2진수(비트) 단위로 변환한 뒤 연산을 수행하는 연산자이다. 즉, 숫자를 그대로 계산하는 게 아니라 0과 1로 바꿔서 한 칸씩 비교한다. 비트 연산자 종류와 의미 2.1 AND 연산자 & 두 비트가 모두 1일 때만 1 그 외는 모두 0 예제 👉 결과: 4 2.2 OR 연산자 | 둘 중 하나라도 1이면 1 예제 👉 결과: 7 2.3 XOR 연산자 ^ 서로 다를 때만 1 같으면 0 예제 👉 결과: 3 2.4 NOT 연산자 ~ 모든 비트를 반전 0 → 1, 1 → 0 예제 4 → 00000100 ~4 → 11111011 👉 결과: -5 (2의 보수 체계) 2.5 시프트 연산자 > 왼쪽 시프트 > 비트를 오른쪽으로 이동 2로 나누는 효과 예제 👉 결과: 2 연산자 우선순위란? 하나의 식에 여러 연산자가 있을 때 어떤 연산을 먼저 계산할지 정해 놓은 규칙이다. 📌 핵심 우선순위가 높을수록 먼저 계산된다. 괄 → 단 → 산 → 시 → 관 → 비 → 논 → 대 ( ) 단항 ++ -- ! ~ 산술 \* / % + - 시프트 > 관계 >= 비트 & ^ | 논리 && 8. 대입 =

2026년 02월 04일 06:27