CS 105

함수형 프로그래밍에 대해서 설명해주세요.

함수형 프로그래밍이 뭔가요? 🤔함수형 프로그래밍(Functional Programming)은 함수를 중심으로 프로그램을 구성하는 패러다임이에요!마치 요리를 할 때의 차이라고 생각해보세요:절차적 프로그래밍: "재료 썰어 → 볶아 → 간 맞춰 → 완성!" 📝객체지향 프로그래밍: "요리사가 냄비로 볶기를 실행한다" 👨‍🍳함수형 프로그래밍: "썰기(재료) → 볶기() → 간맞추기() = 완성된 요리" 🔧핵심 철학: "움직이는 부분(변하는 것)을 최소화해서 코드를 이해하기 쉽게 만들자!" ✨ 함수형 프로그래밍의 핵심 개념 2가지 🎯1. 부수 효과(Side Effect) 최소화 🚫부수 효과란 함수가 값을 반환하는 것 외에 다른 일을 하는 것이에요전역 변수 수정 📝파일 읽기/쓰기 💾네트워크 통신 🌐..

TDD란 무엇인지 설명해주세요.

TDD란 무엇인지 설명해주세요 🧪프론트엔드 개발자라면 꼭 알아야 할 개발 방법론! 테스트 주도 개발에 대해 알아보자 💻TDD가 뭔가요? 🤷‍♂️TDD(Test-Driven Development)는 테스트를 먼저 작성하고, 그 다음에 실제 코드를 작성하는 개발 방법론이에요!일반적인 개발 방식과 완전히 반대라고 생각하면 돼요:기존 방식: 코드 작성 → 테스트 작성 → 버그 발견 → 수정 🔄TDD 방식: 테스트 작성 → 코드 작성 → 통과 → 리팩토링 ✨마치 요리할 때 레시피를 먼저 정하고 요리하는 것과 비슷해요! 🍳Red-Green-Refactor 사이클 🔄TDD의 핵심은 이 3단계를 반복하는 거예요:1. 🔴 Red - 실패하는 테스트 작성"이런 기능이 있으면 좋겠다!" 하는 테스트를 먼저 써요..

useRef는 언제 사용하나요?

useRef가 뭔가요? 🤔useRef는 React의 훅 중 하나로, 값을 저장하는 상자 같은 역할을 해요!하지만 useState와는 다르게 값이 바뀌어도 컴포넌트가 다시 렌더링되지 않아요 🎪마치 메모장과 화이트보드의 차이라고 생각하면 돼요useState = 화이트보드 📋: 내용이 바뀌면 모든 사람이 봐야 함 (리렌더링)useRef = 개인 메모장 📝: 내용이 바뀌어도 다른 사람은 몰라도 됨 (리렌더링 없음) useRef 사용 시나리오 2가지 🎭1. DOM 요소에 접근할 때 👆실생활 예시: 로그인 페이지에서 아이디 입력창에 자동으로 커서가 깜빡이게 하고 싶을 때!const LoginPage = () => { const inputRef = useRef(null); useEffect(() => ..

클래스풀 IP 주소 체계에 대해서 설명해주세요.

클래스풀 vs 클래스리스 IP 주소 체계 🌐백엔드 개발자라면 꼭 알아야 할 네트워킹 기초! IP 주소가 어떻게 구분되는지 알아보자 💻클래스풀 주소 체계 - 옛날 방식 📚클래스풀 주소 체계는 IP 주소를 미리 정해진 크기로 나누는 방식이에요. 마치 아파트 단지를 A동(대형), B동(중형), C동(소형)으로 나누는 것과 비슷해요! 🏢A클래스 - 대기업용 🏭범위: 1.0.0.0 ~ 126.255.255.255특징: 첫 번째 숫자만 네트워크, 나머지 3개는 호스트예시: 구글, 아마존 같은 대기업이 사용수용 가능: 약 1,600만 개의 기기 연결 가능! 😱B클래스 - 중견기업용 🏬범위: 128.0.0.0 ~ 191.255.255.255특징: 앞의 2개 숫자는 네트워크, 뒤의 2개는 호스트예시: 대학교..

Node와 Element의 차이에 대해 설명해주세요.

🌳 DOM의 가족관계: Node vs Element 완벽 이해하기!안녕하세요! 오늘은 프론트엔드 개발에서 헷갈리기 쉬운 Node와 Element의 차이에 대해 알아보겠습니다 🚀🤔 DOM이 뭐길래?웹페이지를 가족 족보처럼 생각해보세요! 📜HTML 문서는 하나의 큰 가족 트리이고, 이 트리의 모든 구성원들이 바로 Node예요!👥 Node: DOM 가족의 모든 구성원개념DOM 트리를 구성하는 모든 요소들의 총칭이에요! 🌳Node의 가족 구성원들Document Node 📄: 집안의 대가족 (HTML 전체 문서)Element Node 🏷️: 실제 가족 구성원 (, 등 태그)Text Node 📝: 가족의 대화 내용 (텍스트)Comment Node 💭: 가족의 속삭임 (주석)Attribute No..

대칭키 및 비대칭키 암호화 방식에 대해서 설명해주세요.

🔐 암호화의 두 얼굴: 대칭키 vs 비대칭키 완전 정복!안녕하세요! 오늘은 백엔드 개발에서 꼭 알아야 할 암호화 방식에 대해 알아보겠습니다 🚀🤔 암호화가 뭐길래?일상생활로 예를 들어볼게요! 친구에게 비밀편지를 보낸다고 생각해보세요 📝평문: "오늘 치킨 먹자!"암호문: "dkfej dCls ahwkwk!"키: 암호문을 만들고 해독하는 비밀번호🔑 대칭키 암호화 (Symmetric Key)개념같은 열쇠 하나로 잠그고 여는 방식이에요! 🗝️실생활 예시집 현관문 🏠: 같은 열쇠로 잠그고 열어요은행 금고 💰: 같은 비밀번호로 잠그고 열어요카카오톡 비밀채팅 💬: 같은 암호로 메시지를 보내고 받아요장점 ✅속도가 빨라요! ⚡컴퓨터 자원을 적게 사용해요대용량 데이터 처리에 좋아요단점 ❌키 전달이 위험해요 ..

테스트 주도 개발이 무엇인가요?

테스트 주도 개발이 무엇인가요?백엔드와 관련된 질문이에요.테스트 주도 개발(Test Driven Development) 은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스입니다. 개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성합니다. 그 이후에는 테스트 케이스를 통과하기 위한 최소한의 코드를 생성하고, 작성한 코드를 리팩토링하는 과정을 반복합니다.테스트 주도 개발 사이클에는 다음과 같이 몇 가지 의식할 부분들이 존재하는데요.일단 간단하고, 해보기 쉬운 것을 먼저 시도합니다.실패하는 테스트를 통과하기 위해서는 최소한의 코드를 작성해야 합니다.테스트를 점점 구체화할수록 프로덕션 코드는 점점 범용적으로 됩니다. (커버 가능한 케이스가 점점 많아집니다.)실패하는 테스트가 있을 때만 프..

전역 상태 관리 라이브러리는 왜 사용하나요?

전역 상태 관리 라이브러리, 왜 쓸까요? 🤔안녕하세요! 오늘은 프론트엔드 개발을 하면서 한 번쯤 고민해봤을 전역 상태 관리 라이브러리에 대해 이야기해보려고 해요.1. 컴포넌트 간 상태 공유가 쉬워져요! 🔄Props Drilling의 지옥에서 탈출 😵‍💫일반적인 React 개발을 하다 보면 이런 상황을 만나게 돼요:할아버지 컴포넌트 → 아버지 컴포넌트 → 아들 컴포넌트 → 손자 컴포넌트사용자 정보를 손자 컴포넌트에서 써야 하는데, 중간에 있는 아버지와 아들 컴포넌트는 그 정보가 전혀 필요 없어요. 하지만 props로 계속 전달해야 하죠. 마치 택배를 전달하는 중간 배송기사들처럼요! 📦전역 상태 관리를 쓰면? 손자 컴포넌트가 직접 창고(전역 스토어)에서 필요한 물건을 가져올 수 있어요.실생활 예시 ..

HTML Doctype이 무엇인지 설명해주세요.

HTML Doctype이 무엇인지 설명해주세요.프론트엔드와 관련된 질문이에요.HTML의 은 웹 브라우저에 해당 문서가 어떤 HTML 버전을 기반으로 작성되었는지 알려주는 역할을 하는 선언문입니다. 문서의 최상단에 위치하며, 브라우저가 HTML 문서를 해석하고 렌더링하는 방식을 결정합니다. 대소문자를 구분하지 않지만, 강조하기 위해 대문자를 사용하는 경우가 많습니다.과거에는 HTML의 다양한 버전(ex. XHTML 1.1, HTML 4.01 등)이 존재했기 때문에 브라우저가 문서를 올바른 방식으로 해석하기 위해, 적절한 방식으로 Doctype을 직접 지정해야 했습니다. HTML5에 접어들어서는 선언 방식이 단순화되어 으로 간단하게 선언할 수 있습니다. 이 선언문은 HTML5를 사용하고 있음을 명시합니다.D..

시스템 콜이란 무엇인가요?

시스템 콜을 쉽게 설명해드릴게요! 🎯시스템 콜(System Call)은 프로그램이 운영체제에게 "도와주세요!"라고 요청하는 방법이에요! 📞일상생활로 비유하면 은행 창구와 비슷해요고객(프로그램)이 금고(하드웨어)에 직접 접근할 수 없음반드시 은행 직원(운영체제)을 통해서만 거래 가능고객이 "돈을 출금해주세요"라고 요청(시스템 콜)하면 직원이 처리해줌 💰왜 이런 번거로운 과정이 필요할까요? 🤔보안과 안정성 때문이에요! 🔐만약 모든 프로그램이 하드웨어에 직접 접근할 수 있다면악성 프로그램이 중요한 파일을 삭제할 수 있음 😱한 프로그램의 오류가 전체 시스템을 다운시킬 수 있음메모리나 CPU를 무분별하게 사용할 수 있음그래서 운영체제가 문지기 역할을 하는 거예요! 🚪이중 모드: 사용자 모드 vs 커널..