본문 바로가기

전체 글459

Python으로 만드는 LLM 기초 1. 기초 NLP 이론1. 토큰화 (Tokenization)정의자연어 문장을 컴퓨터가 처리할 수 있는 **단위(토큰)**로 나누는 과정이다.이 과정을 통해 단어, 서브워드, 글자 등으로 나눈다.주요 방식Whitespace Tokenization: 공백 기준 나눔 → I am happy → ['I', 'am', 'happy']WordPiece: 자주 쓰는 서브단어 단위로 쪼개기 (예: hugging → ['hug', '##ging'])Byte Pair Encoding (BPE): 자주 등장하는 문자 쌍을 병합 → 압축 효과 있음SentencePiece: 언어 독립적이며 띄어쓰기 없는 언어에도 잘 작동 (한국어, 일본어 등)중요 이유LLM은 정수 인덱스 기반 입력만 처리할 수 있음따라서 토큰화 후 정수 시퀀.. 2025. 4. 10.
Python 기초 1. 들여쓰기 = 코드 블록 (Java의 {} 역할)if x > 0: print("양수입니다") # ← 들여쓰기 된 줄만 if 블록중괄호 없이 들여쓰기로 코드 블록을 구분들여쓰기 안 하면 문법 오류 발생보통 공백 4칸 사용 (Tab은 피함)2. 변수 선언 시 타입 지정 안 함 (동적 타이핑)x = 10 # 정수x = "hello" # 문자열 (타입 변경됨)변수는 타입을 지정하지 않고, 값에 따라 자동으로 타입이 결정됨실행 도중에도 다른 타입의 값을 넣을 수 있음3. 세미콜론(;) 없음 → 한 줄에 한 문장print("hello") print("hello"); # 가능하긴 하지만 사용 XJava에서는 필수, Python에서는 생략이 원칙여러 줄 이어쓰기: \, 또는 괄호로 감.. 2025. 4. 10.
PHP 기본 들어가기 전,HTTP 프로토콜HTTP(HyperText Transfer Protocol)는 웹에서 데이터를 주고받는 규칙(프로토콜)입니다.이 프로토콜을 통해 웹 브라우저와 서버가 서로 통신하며, 사용자가 원하는 웹 페이지를 화면에 표시할 수 있습니다.HTTP의 특징비연결성(Connectionless)요청을 보낸 후 응답을 받으면 연결을 종료합니다. (요청마다 새로운 연결이 생성됨)무상태성(Stateless)각각의 요청이 독립적으로 처리되며, 이전 요청과의 연관성이 없습니다.(예: 로그인 상태 유지하려면 세션 또는 쿠키 사용 필요)텍스트 기반 프로토콜사람이 읽을 수 있는 형태로 요청과 응답을 주고받음HTTP 요청(Request)클라이언트(브라우저)가 서버에 정보를 요청할 때 HTTP 요청을 보냅니다. HT.. 2025. 4. 9.
Git 기본 사용법 (CLI) Git을 사용하여 로컬 프로젝트를 초기화하고, GitHub에 파일을 업로드git init - 로컬 프로젝트에서 Git 초기화git add . - 모든 파일을 스테이지에 추가git commit -m "메시지" - 커밋git remote add origin - 원격 저장소 연결git push -u origin main - GitHub에 푸시1. Git 저장소 초기화 (git init)로컬 프로젝트에서 Git을 사용하려면 먼저 Git 저장소를 초기화해야 합니다. 프로젝트 폴더 내에서 다음 명령어를 실행합니다:git init이 명령어는 .git 디렉토리를 생성하여, 해당 폴더를 Git 저장소로 변환합니다.2. 파일 스테이징 (git add)Git에 변경된 파일을 추가하려면 git add 명령어를 사용하여 파일.. 2025. 4. 9.
JAVA 1. 기초 문법과 흐름 제어Java 언어 개요JDK, JRE, JVM, 바이트코드 이해변수와 자료형기본형 vs 참조형, Wrapper 클래스연산자산술, 논리, 비교, 비트, instanceof 등조건문 & 반복문if, switch, for, while, do-while배열과 문자열배열 선언과 조작, String, StringBuilder, StringBuffer메서드매개변수, 반환값, 오버로딩1. Java 언어 개요Java는 Sun Microsystems(현재는 Oracle)에 의해 1995년에 개발된 객체 지향 프로그래밍 언어이다."Write Once, Run Anywhere"라는 철학을 바탕으로, 한 번 작성한 코드를 다양한 운영체제에서 실행할 수 있도록 설계되었다.주요 특징플랫폼 독립성 (JVM 덕.. 2025. 4. 7.
React Native 1. React Native 소개1.1 React Native란?React Native는 모바일 애플리케이션 개발을 위한 프레임워크로, Facebook이 개발한 오픈 소스 라이브러리입니다. React Native는 JavaScript와 React를 사용하여 네이티브 모바일 앱(Android, iOS)을 개발할 수 있게 해줍니다. React Native는 한 번의 코드 작성으로 Android와 iOS 앱을 동시에 개발할 수 있는 장점을 제공합니다.주요 특징: React Native는 JavaScript로 앱을 작성하며, 이 앱을 네이티브 컴포넌트로 변환하여 Android와 iOS에서 실행됩니다. 즉, 앱의 UI와 로직은 JavaScript로 작성되지만, 실제 렌더링은 네이티브 코드에서 이루어집니다.핵심 원.. 2025. 4. 5.
Java sealed class sealed class란?sealed class는 자식 클래스가 누군지만 명시적으로 "봉인(seal)"할 수 있는 클래스.즉, "이 클래스는 상속할 수 있는데 지정된 몇몇 클래스만 상속 가능하게 한다"는 뜻!기본 문법public sealed class Shape permits Circle, Rectangle { // ...}public final class Circle extends Shape { // ...}public final class Rectangle extends Shape { // ...}주요 키워드sealed상속은 가능하지만, 허용된 클래스만 상속 가능permits허용된 자식 클래스 목록 명시final더 이상 상속 불가non-sealed이 클래스는 다시 누구나 상속 가.. 2025. 4. 4.
java Record .record "불변 객체 + 자동 코드 생성"Java/Spring에서 record와 유사한 것들   Lombok @Data / @Value 클래스getter/setter/toString 등 자동 생성불변은 @Value, 가변은 @Data, 별도 의존성 필요Java Bean (POJO)수동으로 getter/setter 생성코드 양 많고, 불변 객체 아님DTO 클래스 (전통 방식)controller ↔ service 사이 데이터 전달용가변 객체, 코드 반복 많음Value Object 패턴equals/hashCode 기반 값 비교용 클래스record가 VO 구현에 딱 적합함Sealed Class (Java 17+)상속을 제한한 클래스 계층record는 값 자체 표현, sealed는 계층 구조 record v.. 2025. 4. 4.
Zustand(persist, Zukeeper, Redux DevTools 등) 1. Zustand를 왜 쓰는가?Zustand는 이런 상황에서 유용:컴포넌트 간 상태 공유가 필요할 때 (예: 로그인 상태, 장바구니)Redux처럼 복잡한 설정 없이 바로 쓰고 싶을 때상태가 많아지고 컴포넌트에 prop drilling이 많아졌을 때2. 기본 개념Zustand는 다음 3가지를 중심:store전역 상태 저장소setState상태를 변경하는 함수getState상태를 조회하는 함수 (일반적으로 내부에서만 사용)Zustand는 store를 만들고, 그 상태를 사용하는 것.3. 기본 사용법// store.tsimport { create } from 'zustand'type BearState = { bears: number increase: () => void}export const useBear.. 2025. 4. 2.
React Native 보안 체크리스트 취약점 유형❗ 네트워크 평문 통신 (MITM)설명: HTTPS 대신 HTTP 또는 SSL 미설정 시, 중간자 공격에 노출방어전략:✅ 모든 API 요청은 HTTPS 사용✅ SSL 핀닝 적용 (react-native-ssl-pinning)✅ 인증서 유효성 검증 (서명, CN 확인 등)취약점 유형❗ 민감 정보 평문 저장설명: 토큰, 비밀번호, 사용자 정보가 암호화 없이 저장될 경우 노출 위험방어전략:✅ react-native-encrypted-storage, SecureStore, Keychain 사용✅ AsyncStorage에는 민감 정보 절대 저장 금지✅ 저장 시 AES 기반 암호화 적용취약점 유형❗ 디버그 코드 유출설명: __DEV__, console.log, debugger 코드가 빌드에 포함되면 정보.. 2025. 4. 1.
웹 보안 및 모바일 보안 01. 웹 보안의 개요웹 서비스 구조웹 클라이언트 (브라우저) ↓ HTTP웹 서버 ↔ 웹 애플리케이션 ↔ DB보안 필요성모든 구성 요소에서 공격 가능성 존재특히 웹 애플리케이션 ↔ DB 사이에 취약점 많음네트워크 구간은 SSL/TLS로 보호 가능하지만, 애플리케이션과 DB 보안은 별도 대책 필요02. 웹 보안 위협 요소1. SQL Injection (SQL 삽입 공격)쿼리에 악성 SQL문을 삽입해서 인증 우회나 데이터 탈취예시:SELECT * FROM users WHERE id = '$id' AND pw = '$pw';입력값에 ' OR '1'='1 넣으면 무조건 참이 돼서 인증 우회 가능방어법Prepared Statement (매개변수 바인딩)입력값 검증최소 권한 DB 계정 사용2. XSS (Cr.. 2025. 4. 1.
이메일 보안 이메일 보안이메일의 문제점이메일은 여러 서버/라우터를 거쳐 전송되며, 내용이 노출될 수 있음.마치 엽서처럼 내용이 쉽게 도청/변조될 위험이 있음.해결책: 보안 도구PGP (Pretty Good Privacy)S/MIME (Secure/Multipurpose Internet Mail Extension)→ 이메일에 기밀성, 인증, 무결성, 부인방지 기능 제공PGP (Pretty Good Privacy)개요이메일을 암호화 + 전자서명해서 보안 보장대칭키(세션키) + 공개키 암호 방식을 하이브리드로 사용메일 내용 암호화 → 서명 → 압축 → ASCII 변환(Radix-64) 순서로 전송제공 보안 서비스(주요 알고리즘)인증메시지 해시 → 개인키로 서명 → 수신자가 공개키로 검증SHA, DSA, RSA기밀성세션키로.. 2025. 4. 1.