-
Linux
쉘 스크립트 한글 인코딩 에러의 원리: 바이트 레벨에서 이해하기
쉘 스크립트 한글 인코딩 에러의 원리: 바이트 레벨에서 이해하기실무에서 윈도우 환경에서 작성한 쉘 스크립트를 리눅스 서버에 올렸을 때 "bad interpreter" 에러나 한글이 깨지는 경험, 한 번쯤 겪어보셨죠? 단순히 "인코딩이 안 맞아서"라고 넘기기엔 아까운, 흥미로운 원리가 숨어있습니다. 오늘은 바이트 레벨까지 파고들어 왜 이런 일이 생기는지 정리해 보겠습니다. 문자 인코딩의 기본 원리컴퓨터는 문자를 직접 저장할 수 없습니다. "한"이라는 글자를 저장하려면 인코딩 과정을 거쳐 바이트로 변환해야 하고, 읽을 때는 디코딩 과정을 거쳐 다시 문자로 복원합니다.문자 "한" → [인코딩] → 바이트 배열 → [저장/전송] → 바이트 배열 → [디코딩] → 문자 "한" 핵심은 인코딩과 디코딩에 같은 규칙을..
-
네트워크
[Network] 개발자가 알아야 할 DNS 핵심: System, Server, and Records
[Network] 개발자가 알아야 할 DNS 핵심: System, Server, and Records최근 프로젝트 배포 과정에서 로컬 IP 대신 도메인을 연결하는 작업을 진행하며, 문득 익숙하게 쓰던 'DNS'라는 용어의 정확한 개념과 레코드 타입별 차이를 명확히 정리해 둘 필요성을 느꼈다. 단순히 "도메인 연결해 주세요"를 넘어, 엔지니어로서 DNS의 작동 원리와 레코드별 기술적 차이를 이해하고 있어야 더 효율적인 아키텍처를 설계할 수 있기 때문이다. 이 글은 실무에서 마주친 DNS System과 Server의 구분, 그리고 가장 빈번하게 사용되는 주요 레코드(A, CNAME)의 개념을 기록하기 위한 기술 노트다.1. 용어의 재정의: System vs Server흔히 "DNS에 등록한다"라고 표현하지만..
-
일상
아이디어는 숲을 키우고, 실행은 그 숲에 길을 낸다
아이디어는 숲을 키우고, 실행은 그 숲에 길을 낸다좋은 아이디어가 많은데도, 왜 아무것도 달라지지 않을까? 대부분의 문제는 아이디어 부족이 아니라 실행 부족에서 생긴다. 길이 나야 움직일 수 있다. 아이디어는 숲을 키우고, 실행은 그 숲에 길을 낸다.아이디어는 숲을 만든다아이디어는 혼자 있을 때보다, 다른 생각을 만날 때 커진다.합쳐지고, 변형되고, 가지를 뻗는다. 그렇게 머릿속엔 숲이 생긴다.이 단계에서 중요한 건 “더 많이”다.가능성을 넓히고, 연결하고, 낯선 조합을 허용하는 일이다.하지만 숲은 넓기만 하면 길을 잃기 쉽다.좋은 아이디어가 많을수록, 오히려 아무것도 시작하지 못할 때가 있다.실행은 길을 낸다실행은 선택이다.아이디어를 줄이고, 좁히고, 단순하게 만드는 과정이다.실행이 시작되면 질문이 바..
-
Java
Java 언어의 본질과 컴퓨터 시스템에서의 동작 원리: JAVA_HOME 환경변수
Java 언어의 본질과 컴퓨터 시스템에서의 동작 원리: JAVA_HOME 환경변수Java를 처음 접하면서 가장 먼저 마주치는 것이 바로 환경변수 설정입니다. 단순해 보이는 이 설정 과정에는 사실 Java 언어가 컴퓨터 시스템에서 어떻게 동작하는지에 대한 핵심 원리가 숨어있습니다. 오늘은 JAVA_HOME 환경변수를 통해 Java의 본질과 컴퓨터에서의 역할을 깊이 있게 탐구해 보겠습니다. 🖥️ Java는 컴퓨터에서 어떤 존재인가?프로그래밍 언어로서의 JavaJava는 단순한 프로그래밍 언어가 아닙니다. 더 정확히 말하면 플랫폼입니다. 이 플랫폼은 다음과 같은 계층 구조로 컴퓨터 시스템에 위치합니다.응용 프로그램 (Your Java Application) ↓Java 가상 머신 (JVM - Ja..
-
DB
Windows에서 MariaDB 환경변수 설정하기
Windows에서 MariaDB 환경변수 설정하기MariaDB를 Windows에 MSI로 설치했는데 명령 프롬프트에서 mariadb --version 명령어가 작동하지 않나요? 저도 처음에 같은 문제를 겪었는데, 이는 환경변수 설정 때문입니다. 오늘은 이 문제를 해결하는 방법을 차근차근 알아보겠습니다.🤔 환경변수가 뭔가요?환경변수를 이해하기 위해 일상생활 예시로 설명해 보겠습니다.엄마가 "가위 좀 가져와!"라고 했을 때를 생각해 보세요.환경변수가 없다면: "어디 있는 가위요? 거실 서랍? 부엌 서랍? 공부방?"환경변수가 있다면: 엄마가 미리 "가위는 거실 서랍 → 부엌 서랍 → 공부방 순서로 찾아봐"라고 알려준 상태컴퓨터도 마찬가지입니다. PATH 환경변수는 실행 파일들이 어디에 있는지 컴퓨터에게 알려..
-
HTML, CSS
벡터 이미지와 픽셀(래스터) 이미지, 무엇이 다를까?
벡터 이미지와 픽셀(래스터) 이미지, 무엇이 다를까?개발을 진행하다 보면 "벡터 이미지"와 "픽셀(래스터) 이미지"라는 용어를 자주 접하게 됩니다. 이 두 가지는 이미지가 만들어지는 방식부터 실제로 화면에 표시되는 과정까지 완전히 다릅니다. 오늘은 이 둘의 차이점과 각각의 장단점, 그리고 언제 어떤 포맷을 선택해야 하는지 쉽게 정리해 보겠습니다.1. 벡터 이미지란?벡터 이미지는 점, 선, 곡선, 면 등 기하학적 요소를 수학적인 공식(좌표, 방정식 등)으로 정의해서 이미지를 만듭니다.대표적인 포맷으로는 SVG, AI, EPS 등이 있습니다.예시로고, 아이콘, 간단한 일러스트, 폰트 등특징이미지를 아무리 확대하거나 축소해도 절대 깨지지 않습니다.파일 크기가 복잡성에 따라 다르지만, 단순한 그래픽은 파일 용량..
-
Cloud
Cloud: CSP와 MSP란 무엇일까?
Cloud: CSP와 MSP란 무엇일까?클라우드 캠프에 참여하면서 처음으로 클라우드라는 세계에 본격적으로 발을 들이게 되었고, 그 과정에서 자연스럽게 CSP와 MSP라는 용어를 접하게 되었습니다. 클라우드 서비스가 점점 일상화되고 있지만, 막상 관련 용어들은 헷갈리는 경우가 많죠. 이 글을 통해 두 용어의 차이와 각각의 역할을 명확하게 이해해 보세요.CSP(Cloud Service Provider): 클라우드의 뼈대가 되는 회사먼저 CSP는 Cloud Service Provider의 약자로, 말 그대로 ‘클라우드 서비스를 직접 제공하는 회사’입니다. 우리가 흔히 알고 있는 아마존 웹 서비스(AWS), 마이크로소프트 애저(Azure), 구글 클라우드(GCP) 같은 글로벌 기업들이 대표적인 CSP입니다. 국..
-
네트워크
RTSP와 RTP란?
RTSP와 RTP란?1. RTSP란 무엇인가?RTSP(Real-Time Streaming Protocol)는 실시간 오디오와 비디오 데이터를 네트워크로 제어하는 표준 프로토콜입니다. 쉽게 말해, RTSP는 영상이나 음성 데이터를 실시간으로 전송하는 시스템에서 "리모컨" 역할을 하는 제어 프로토콜입니다. 사용자는 RTSP를 통해 영상 재생, 일시정지, 정지 등 다양한 명령을 내릴 수 있습니다.주요 특징실시간 스트리밍 데이터 제어재생, 일시정지, 정지, 빨리감기 등 다양한 제어 기능 지원서버-클라이언트 구조로 동작실제 데이터 전송은 주로 RTP(Real-time Transport Protocol)가 담당2. RTP란 무엇인가? (간략 소개)RTP는 "Real-time Transport Protocol"의 약..
-
JavaScript
실무에서 자주 쓰는 HTTP 클라이언트, Axios 완벽 이해하기
실무에서 자주 쓰는 HTTP 클라이언트, Axios 완벽 이해하기프론트엔드와 백엔드 개발을 하다 보면, 서버와 데이터를 주고받는 일이 정말 많습니다.특히 Node.js 환경이나 React 같은 프론트엔드 프레임워크에서는 REST API와의 통신이 필수죠.이때 가장 많이 쓰는 도구가 바로 Axios입니다.이번 글에서는 실전 예시와 함께, Axios를 어떻게 활용하는지그리고 각 요청 방식의 정확한 개념과 코드를 쉽게, 하지만 전문 용어는 놓치지 않고 설명해 드릴게요.Axios란 무엇인가?Axios는 Promise 기반의 HTTP 클라이언트 라이브러리입니다.즉, 서버와 데이터를 주고받을 때(REST API 호출 등) 복잡한 코드를짧고 간결하게 만들어주는 도구입니다.Promise 기반이기 때문에 async/aw..
-
JavaScript
왜 async/await가 필요할까?
왜 async/await가 필요할까?앞선 글에서 Promise를 통해 콜백 지옥에서 벗어날 수 있다는 것을 배웠어요.▶️ https://felixnote.tistory.com/105 하지만 Promise의 .then()을 계속 이어 붙이면, 여전히 코드가 길어지고 복잡해질 수 있습니다.이럴 때 async/await는 비동기 코드를 마치 순서대로 한 줄씩 처리하는 동기 코드처럼 읽기 쉽게 만들어줍니다. JavaScript: 콜백 지옥, 그리고 Promise의 필요성콜백 지옥, 그리고 Promise의 필요성자바스크립트에서 비동기 작업(예: 서버에서 데이터 받아오기, 파일 읽기 등)을 처리할 때, 예전에는 콜백(callback) 함수를 많이 사용했습니다. 하지만 콜백을 여felixnote.tistory.com..
-
JavaScript
콜백 지옥, 그리고 Promise의 필요성
콜백 지옥, 그리고 Promise의 필요성자바스크립트에서 비동기 작업(예: 서버에서 데이터 받아오기, 파일 읽기 등)을 처리할 때, 예전에는 콜백(callback) 함수를 많이 사용했습니다. 하지만 콜백을 여러 번 중첩해서 사용하다 보면 코드가 복잡해지고 관리하기 어려워지는 콜백 지옥(callback hell) 문제가 발생합니다.콜백 지옥이란?콜백 지옥은 비동기 작업이 연속적으로 일어날 때 콜백 함수가 계속 중첩되어 코드가 오른쪽으로 점점 밀려나고, 읽기도, 유지보수도 어려워지는 현상입니다.콜백 지옥 예시getUser(userId, function(user) { getPosts(user, function(posts) { getComments(posts, function(comments) { ..
-
DB
ANSI 표준 SQL, 왜 필요했을까?
ANSI 표준 SQL, 왜 필요했을까?데이터베이스를 공부하거나 실무에서 다루다 보면 “ANSI 표준 SQL”이라는 말을 자주 듣게 됩니다. 하지만 표준 SQL이 왜 만들어졌고, 실제로 어떤 의미가 있으며, 벤더(회사) 별로는 어떻게 다르게 쓰이는지 궁금한 분들이 많을 것입니다. 이 글에서는 ANSI 표준 SQL의 탄생 배경, 필요성, 현재의 위치, 그리고 주요 벤더별 차이점을 한눈에 정리합니다.1. ANSI 표준 SQL의 탄생 배경과 필요성SQL의 시작1970년대 IBM에서 관계형 데이터베이스를 위해 SQL(Structured Query Language)이 개발됨.문제 발생1980년대 중반, 여러 벤더(Oracle, IBM, Microsoft 등)가 각자 조금씩 다른 SQL 문법을 사용해,데이터베이스 간..
-
개발
문법적 설탕(Syntactic Sugar)
문법적 설탕(Syntactic Sugar)프로그래밍을 공부하다 보면 “문법적 설탕”이라는 재미있는 용어를 자주 접하게 됩니다. 이 개념은 단순한 용어를 넘어, 우리가 코드를 더 쉽게 쓰도록 도와주는 중요한 역할을 합니다. 이번 글에서는 문법적 설탕의 탄생부터 오늘날의 의미와 실제 예시까지, 한 번에 정리해 보겠습니다.문법적 설탕의 탄생: 1964년 한 과학자의 아이디어Peter J. Landin의 통찰“문법적 설탕(syntactic sugar)”이라는 말은 1964년, 영국의 컴퓨터 과학자 Peter J. Landin이 처음 사용했습니다. Landin은 여러 프로그래밍 언어 개발에 참여하며, 언어의 의미와 구조를 논리적으로 정의하는 데 큰 기여를 했습니다.설탕이란 무엇일까?Landin은 프로그래밍 언어의..
-
JavaScript
JavaScript: Class, 객체지향 프로그래밍의 기초부터 실습까지
JavaScript: Class, 객체지향 프로그래밍의 기초부터 실습까지JavaScript를 배우다 보면 ‘클래스’라는 개념을 만나게 됩니다. 클래스를 제대로 이해하려면 먼저 객체지향 프로그래밍(OOP)의 핵심을 파악하는 것이 중요합니다.JavaScript에 왜 클래스가 생겼을까?JavaScript는 원래 프로토타입 기반 언어입니다. 그래서 클래스 없이도 객체를 만들 수 있었죠. 그런데 ES6부터 클래스 문법이 추가된 이유는 무엇일까요? 클래스 도입의 주요 이유익숙함: Java, C++ 등 클래스 기반 언어에 익숙한 개발자들이 더 쉽게 적응하도록가독성: 더욱 보기 편하고 이해하기 쉬운 코드 작성문법적 설탕(Syntax Sugar): 기존에 하던 일을 더 간단하게 표현객체지향 프로그래밍(OOP)이란?객체란..
-
일상
실리콘밸리에서 주목받는 바이브 코딩(Vibe Coding)이란?
바이브 코딩이란?바이브 코딩(Vibe Coding)은 기존의 "정확히 어떤 코드를 어떻게 써야 한다"는 방식이 아니라,개발자가 자연어로 원하는 느낌, 흐름, 의도(=바이브, vibe)를 설명하면AI가 이를 해석해서 코드를 만들어주는 새로운 프로그래밍 패러다임입니다.즉, 코드 한 줄 한 줄을 직접 작성하는 대신"이런 스타일로, 이런 결과가 나오는 프로그램을 만들어줘"라고 감각적으로 설명하면AI가 알아서 코드의 뼈대, 구조, 심지어 디테일까지 제안해 주거나 만들어주는 방식이죠.왜 바이브 코딩이 주목받는가?1. AI 코딩 도구의 발전GPT, 코파일럿(Copilot), Cursor, 윈드서프(Windsurf) 등 첨단 AI 도구들이개발자의 "설명"만으로 실제 코드 생성이 가능한 수준까지 발전했습니다.오픈AI의 ..