방로그
WIKI
28 posts
개발자의 성장을 위한 사고력, 분해력, 소통력

현대 소프트웨어 개발 환경은 기술적 복잡성이 증가하고, 프로젝트 규모가 확대되며, 다기능 팀 기반 협업이 심화되는 특징을 보입니다. 이러한 변화 속에서 개발자의 전문성은 특정 프로그래밍 언어나 도구의 숙련도를 넘어, 보다 근본적인 지적 역량과 대인 관계 능력에 의해 좌우됩니다. 특히 웹 개발과 같이 프론트엔드, 백엔드, 인프라 등 다양한 기술 영역을 포괄하면서 성능, 코드 재사용성, 유지보수성, 보안 등 다차원적인 품질 속성을 요구하는 분야에서는 이러한 핵심 역량이 더욱 중요합니다. 이 글에서는 소프트웨어 개발자가 지속적으로 성장하고 경쟁력을 유지하기 위해 필수적으로 갖춰야 할 세 가지 핵심 역량인 효과적 사고력, 체계적 문제 분해 능력, 그리고 명확한 의사소통 능력의 중요성을 분석하고, 이를 개발자가 실무에서 내재화할 수 있는 방법을 살펴봅니다. 1. 효과적 사고력: 분석적 탐구와 시스템적 통찰 효과적 사고력은 기술적 도전을 깊이 있게 이해하고 최적의 해결책을 찾기 위한 근본적인…

April 02, 2025
WIKI
브레드크럼(Breadcrumbs), 웹에서 필수 도구인가, 재평가 대상인가?

웹사이트 내비게이션의 해골물, 브래드크럼(Breadcrumbs). 사용자의 현재 위치를 알려주고 상위 경로로의 복귀를 돕는 이 UI 패턴은 그 직관성 덕분에 오랫동안 사랑받아 왔습니다. 하지만 웹 기술과 사용자 형태가 변화하면서, 는 다소 극단적인 주장까지 제기되고 있습니다. 하지만 저는 이 사망 선고가 다소 성급하다고 생각합니다. 하지만 브레드크럼의 역할과 필요성이 과거와 달라졌으며, 그 적용에 있어 이전보다 훨씬 신중한 접근이 필요하다는 점에는 전적으로 동의합니다. 이 글에서는 브레드크럼 효용성에 대해 논의하고, 현대 웹 개발 환경에서의 가치와 고려 사항에 대한 제 관점을 공유하고자 합니다. 브레드크럼 효용성에 대한 회의론: 타당한 지적들 여러 사이트의 글 등에서 제기되는 브레드크럼 회의론의 근거는 주목할만 합니다. 1. 향상된 웹사이트 아키텍처 명확한 주 내비게이션, 플랫 구조, 효과적인 태깅 시스템 등은 사용자가 정보 구조 내에서 길을 잃을 가능성을 줄였습니다. 물론 현대…

March 27, 2025
WIKI
HAProxy란 무엇이고 Nginx/Envoy와는 무슨 차이가 있을까?

현대의 웹 어플리케이션 환경에서 성능, 안정성, 그리고 확장성은 더 이상 선택이 아닌 필수입니다. 트래픽이 폭증하고 서비스 아키텍처가 복잡해짐에 따라, 유입되는 요청을 다수의 백엔드 서버로 분산하고, 예기치 않은 서버 장애 상황에서도 서비스 중단을 최소화하는 기술의 중요성은 아무리 강조해도 지나치지 않습니다. 이러한 과제를 해결하기 위한 오픈 소스 솔루션 중 하나가 바로 HAProxy입니다. HAProxy(High Availability Proxy)는 고성능 TCP/HTTP 로드 밸런서 및 프록시 서버로서, 수많은 글로벌 고트래픽 웹사이트에서 그 성능과 안정성을 입증하며 핵심 인프라 구성 요소로 자리 잡았습니다. 이 글에서는 HAProxy의 개념과 주요 기능을 소개하고, Nginx와 Envoy와 같은 다른 솔루션과의 비교를 통해 각각의 특징과 적합한 사용 사례를 알려드리겠습니다. HAProxy의 핵심 기능 HAProxy는 트래픽 관리와 서비스 가용성 극대화를 위한 풍부하고 강력한 …

March 26, 2025
WIKI
머신러닝 모델의 과적합(Overfitting)

머신러닝 모델의 성능은 학습 데이터로부터 일반화하여 새로운 데이터에 얼마나 잘 적용되는가에 따라 결정됩니다. 그러나 학습 데이터의 세부적인 특성이나 노이즈까지 과도하게 학습하면, 새로운 데이터에서 성능이 급격히 떨어지는 현상이 발생합니다. 이를 과적합(Overfitting) 이라고 합니다. 이 글에서는 과적합의 정의, 주요 원인, 정확한 진단 방법, 효과적인 방지 전략 및 실제 사례를 통해 이해를 돕겠습니다. 과적합이란? 과적합이란 머신러닝 모델이 학습 데이터를 너무 세밀하게 학습하여, 실제로는 중요하지 않은 노이즈나 특이사항까지 반영함으로써 일반화 성능이 떨어지는 현상입니다. 예를 들어, 학생이 문제의 원리를 이해하지 않고 단지 특정 문제의 답만 외우는 경우와 유사합니다. 결과적으로 새로운 문제에는 제대로 대응할 수 없습니다. 과적합의 주요 특징 학습 데이터에서는 뛰어난 성능을 보이지만, 검증 또는 테스트 데이터에서는 성능이 크게 떨어집니다. 특히 모델의 구조가 복잡하거나 파라…

March 19, 2025
WIKI
지도 학습과 비지도 학습

“기계가 스스로 학습한다” 라는 말은 이제 흔히 들리지만, 정작 ‘어떤 방식으로 학습하는 걸까?’ 라는 질문을 던지면 막막해하는 분들도 많습니다. 머신러닝에는 여러 학습 방식이 있지만, 그중에서도 가장 기본이 되는 두 축은 지도 학습(Supervised Learning) 과 비지도 학습(Unsupervised Learning) 입니다. 이 글에서는 두 가지 방법을 쉽게 이해되도록 소개하려고 합니다. 지도 학습(Supervised Learning) 주요 개념 지도 학습이란, 입력 데이터와 그에 대응하는 정답(레이블) 을 함께 제시해 모델을 학습시키는 방식입니다. 예컨대 강아지 사진에 “강아지”라는 레이블을, 고양이 사진에 “고양이”라는 레이블을 붙여 주면, 모델이 둘 각각의 특징을 학습한 뒤 새로운 사진이 들어왔을 때 해당 이미지가 강아지인지 고양이인지 예측할 수 있게 됩니다. 또한 스팸 메일 필터링, 음성 인식, 이미지 분류, 금융 시장에서의 시계열 예측(회귀 문제) 등에서 폭넓게…

March 17, 2025
WIKI
Anthropic MCP

요즘 AI가 우리 일상에 깊이 들어옵니다. 그래서 AI가 데이터를 자유롭게 다루는 능력이 얼마나 중요한지 새삼 느끼게 됩니다. 예전에는 AI가 파일이나 데이터베이스, 클라우드에서 정보를 가져오려면 개발자가 복잡한 코드를 작성해야 했습니다. 이는 전자기기마다 플러그가 달라서 콘센트에 맞추려면 계속 새 어댑터를 만들어야 하는 상황과 비슷합니다. 이런 비효율을 해결하기 위해 Anthropic이 내놓은 해결책이 바로 모델 컨텍스트 프로토콜(Model Context Protocol, MCP) 입니다. MCP는 AI, 특히 대형 언어 모델(LLM)이 데이터 소스와 도구에 쉽게 접근할 수 있도록 도와줍니다. 다양한 기기를 하나의 포트에 연결하듯, MCP는 AI와 데이터 소스를 매끄럽게 연결합니다. 이러한 혁신 덕분에 AI는 더 정확하게 작동하고 실시간으로 반응하며 사용자 맞춤형 답변을 제공합니다. 이번 글에서는 MCP가 무엇인지, 어떻게 작동하는지, 왜 주목해야 하는지, 그리고 비슷해 보일 수…

March 11, 2025
WIKI
Create React App의 종료

2025년 2월 14일, React 팀은 Create React App(이하 CRA)의 공식 종료를 발표하며 프론트엔드 개발자 커뮤니티에 큰 파장을 일으켰습니다. 2016년 처음 등장한 이래로, CRA는 React 프로젝트를 시작하는 가장 간편한 방법으로 자리 잡았지만, 이제는 그 역할을 내려놓고 더 현대적인 도구로의 전환을 맞이했습니다. 이 소식은 단순한 도구의 종료가 아니라, 웹 개발의 흐름이 변화하고 있음을 보여줍니다. 왜 이런 결정이 내려졌는지, 어떤 대안이 우리를 기다리고 있는지, 그리고 이 변화가 개발자들에게 어떤 기회를 열어줄지 이 글에서 자세히 다뤄보겠습니다. 만약 여러분이 React로 프로젝트를 시작하거나 유지하고 있자면, 이 글이 중요한 길잡이가 될 것입니다. 1. Create React App의 종료 배경 CRA는 React의 개발의 문턱을 낮춘 혁신적인 도구였습니다. 과거에는 React 프로젝트를 시작하려면 Webpack으로 빌드 시스템을 설정하고, Babel…

March 07, 2025
WIKI
DLLM 기존 LLM과의 차이점과 새로운 가능성

안녕하세요, 최근 자연어 처리(NLP) 분야에서 최근 주목 받고 있는 DLLM (Diffusion Language Model) 에 대해 이야해보고자 합니다. DLLM은 확산 언어 모델로, 기존의 대규모 언어 모델(LLM)과는 다른 독창적인 접근 방식을 취합니다. 이 글에서는 DLLM의 개념과 작동 원리를 소개하고, 기존 LLM과의 주요 차이점을 비교하며, 이 새로운 모델이 가져올 가능성을 탐구해보겠습니다. 1. DLLM이란? DLLM은 확산 언어 모델의 줄임말로, 이미지 생성에서 성공을 거둔 확산 모델(Diffusion Model) 의 원리를 텍스트 데이터에 적용한 신개념 언어 모델입니다. 확산 모델은 데이터에 점진적으로 노이즈를 추가하고 이를 제거하는 과정을 통해 데이터의 분포를 학습하는 방식으로 작동합니다. DLLM은 이 아이디어를 텍스트에 맞게 변형하여, 텍스트를 왜곡한 후 원래 상태로 복원하면서 언어의 구조와 의미를 학습합니다. 쉽게 말해, DLLM은 텍스트에 노이즈를 더하…

March 06, 2025
WIKI
React에서 발생하는 Abstraction Leak, 어떻게 해결할까?

React 애플리케이션을 개발하다 보면, useState의 setter 함수를 자식 컴포넌트에 직접 내려주어 데이터를 업데이트하는 패턴을 흔히 볼 수 있습니다. 처음에는 간단해 보이지만, 코드가 복잡해지고 상태 구조가 변동될 때 abstraction leak(추상화 누수)이 발생할 위험이 큽니다. 이 글에서는 abstraction leak이 무엇인지, 왜 문제가 되며, 어떻게 해결할 수 있는지 알아보겠습니다. Tip: 혹시 TypeScript 프로젝트에서 React.Dispatch

December 31, 2024
WIKI
React에서 가장 어려운 부분?

React를 처음 배우는 분들은 React가 복잡하고 어려울 것이라고 생각하기 쉽습니다. 하지만 실제로 React 자체는 엄격한 알고리즘과 명확한 로직을 제공하기 때문에 복잡도가 크게 높지 않습니다. 오히려 문제는 React ‘바깥’에 있습니다. 예를 들어, “어떤 기준으로 컴포넌트를 설계할지?”, “라이브러리를 사용해야 할지, 직접 구현해야 할지?”, “어떤 상태관리 전략이 적합할지?” 등 상황과 맥락마다 답이 달라지는 질문들이 쏟아지죠. 이 글에서는 모달 다이얼로그 예시를 통해, 아이디어에서부터 프로덕션 수준까지 개발 과정을 어떻게 밟을 수 있는지 살펴보겠습니다. 1. 가장 간단한 구현: 스파이크(Spike) 1) 스파이크란 무엇인가? ‘스파이크(Spike)’는 특정 문제나 기능에 대해, 가장 빠르고 단순하게 구현해보며 가능성을 탐색하는 과정입니다. 이때는 코드를 깔끔하게 유지하거나 최적화하는 것보다는 “일단 돌아가는지(동작하는지) 테스트”하는 데 집중합니다. 2) 간단한 모달…

December 29, 2024
WIKI
MSP(Managed Service Provider)란 무엇이며, 왜 중요한가?

오늘날 많은 기업이 디지털 전환(Digital Transformation)을 가속화하고 있습니다. 클라우드, 빅데이터, 보안 솔루션 등 점점 복잡해지는 IT 환경을 성공적으로 운영하기 위해서는 전문적인 관리와 유지·보수가 필수적입니다. 바로 이 지점에서 MSP(Managed Service Provider) 가 큰 역할을 하게 됩니다. 이번 글에서는 MSP란 무엇인지, 왜 기업에 중요한지, 그리고 어떻게 활용할 수 있는지 알아보겠습니다. MSP란? MSP(Managed Service Provider) 는 기업이 보유한 IT 인프라, 시스템, 애플리케이션 등을 전문적으로 대신 관리·운영해주는 서비스 공급자를 말합니다. 과거에는 서버 호스팅이나 네트워크 유지보수를 대행하는 모델이 많았으나, 최근에는 클라우드 운영, 보안, 애플리케이션 관리, 빅데이터 분석, 컨테이너 오케스트레이션(Kubernetes) 등으로 그 영역이 더욱 다양해지고 있습니다. 주요 특징 외부 전문성 활용: 기업 내부에…

December 26, 2024
WIKI
스크롤은 건드리지마!!

원문 출처: [https://dontfuckwithscroll.com] 모멘텀 스크롤(일명 부드러운 스크롤, 관성 스크롤) 플러그인은 웹 전반에 걸쳐 만연한 문제입니다. 이들은 향상된 경험을 표방하지만, 실제로는 웹 브라우징 경험을 크게 해치고 있습니다. 사용성, 접근성, 성능을 망가뜨리는 이들 효과는 결국 사이트를 덜 직관적이고 덜 효율적으로 만듭니다. 아래는 모멘텀 스크롤 플러그인이 웹을 망치는 10가지 이유입니다. 1. 사용자 기대를 저버린다 사용자는 스크롤 방식에 익숙합니다. 웹의 초창기부터 스크롤은 단순하고 직관적이었습니다: 마우스 휠 혹은 트랙패드를 움직이면 콘텐츠가 즉각 반응합니다. 하지만 모멘텀 스크롤은 이 기본적인 동작을 훼손합니다. 사용자가 스크롤할 때 즉각적 반응 대신 어색한 애니메이션이 개입하고, 기존의 근육 기억(muscle memory)을 무너뜨립니다. 마치 자동차의 핸들이 반대로 작동하는 것처럼, 불편하고 어색한 경험을 강요합니다. 영향: 사용자는 익숙한…

December 10, 2024
WIKI
프론트엔드 클린 아키텍처 패턴과 클린 코드

현대의 프론트엔드 개발은 단순히 화면을 그리는 것을 넘어 복잡한 상태 관리, 다양한 API 연동, 글로벌 디자인 시스템 통합 등 다층적인 요구사항을 다룬다. 간단한 MVP 수준에서 수십, 수백 개의 컴포넌트와 로직으로 확장되는 상황은 흔하다. 이때 단순히 ‘동작하는 코드’ 이상으로, 유지보수 가능한(Clean), 확장성 있는(Extensible), 일관성 있는(Consistent) 아키텍처를 갖추는 것은 필수가 된다. 본 포스팅에서는 프론트엔드 아키텍처 패턴과 클린 코드의 중요성과 이를 실무에 적용하는 방법을 사례와 함께 다룬다. 프론트엔드 아키텍처 패턴이란? 프론트엔드 아키텍처 패턴은 코드베이스를 모듈화하고, 명확한 책임 분리를 통해 애플리케이션 복잡성을 제어하는 설계 원칙이다. 이를 적용하면 다음과 같은 효과를 기대할 수 있다. 유지보수성 향상: 특정 모듈 수정 시 다른 부분에 최소한의 영향만 미치므로, 에러 추적과 버그 수정이 용이하다. 협업 효율 극대화: 명확한 디렉토리 구…

December 08, 2024
WIKI
Zustand v5 주요 변경 사항

Zustand는 React 환경에서 경량 상태 관리를 지원하는 인기 있는 라이브러리입니다. 최근 업데이트된 Zustand v5는 성능 개선과 최신 React 환경과의 호환성을 강화하는 다양한 변경 사항을 도입했습니다. 이번 글에서는 Zustand v5의 주요 변경 사항과 함께 이전 버전에서 마이그레이션하는 방법을 다룹니다. 1. 주요 변경 사항 1.1 기본 내보내기 제거 이전 버전에서 지원되던 기본 내보내기()가 제거되었습니다. 이제 Zustand는 **명시적 내보내기()**만을 지원합니다. 1.2 React 18 이상 필수 Zustand v5는 React 18 이상 버전에서만 동작합니다. 따라서 React 17 이하를 사용하는 프로젝트는 React를 업그레이드해야 합니다. 1.3 의존성 추가 React 18의 기본 상태 관리 기능인 를 적극 활용하며, 일부 함수(, )는 이 패키지를 필요로 합니다. 해당 기능을 사용할 경우, 를 설치해야 합니다. 1.4 TypeScript 4.…

November 21, 2024
WIKI
navigator.onLine을 활용한 네트워크 상태 관리

웹 애플리케이션을 개발하다 보면 사용자의 네트워크 상태에 따라 기능을 다르게 동작시켜야 하는 경우가 자주 있습니다. 예를 들어 사용자가 오프라인 상태일 때는 데이터를 로컬에 저장하고, 다시 온라인 상태로 전환되면 서버와 동기화해야 할 수 있습니다. 이러한 기능은 특히 모바일 앱이나 네트워크가 불안정한 환경에서 웹 애플리케이션을 사용하는 사용자에게 매우 유용합니다. React에서는 JavaScript의 속성을 활용하여 이러한 네트워크 상태를 쉽게 감지하고 처리할 수 있습니다. 이란? 은 브라우저의 객체에 속한 속성으로, 현재 브라우저가 온라인 상태인지 오프라인 상태인지를 나타냅니다. 이 속성은 간단하게 네트워크 연결 여부를 확인할 수 있게 해줍니다. 이를 통해 네트워크 상태에 따른 로직을 작성할 수 있으며, 오프라인에서 온라인으로 전환될 때 자동으로 데이터를 서버와 동기화하거나 사용자에게 적절한 메시지를 표시할 수 있습니다. : 네트워크에 연결된 상태 : 네트워크에 연결되지 않은…

November 18, 2024
WIKI
레거시 코드 정리, 왜 필요하며, 어떻게 접근할 것인가?

소프트웨어 개발은 지속적으로 변화하는 기술 트렌드와 비즈니스 요구에 따라 진화합니다. 그러나 오래된 코드베이스, 즉 레거시 코드는 이러한 변화에 적응하기 어렵고, 유지보수와 확장성 측면에서 다양한 문제를 일으킬 수 있습니다. 이번 글에서는 레거시 코드를 왜 정리해야 하는지부터, 그 개념과 효과적인 정리 방법론에 대해 알아보겠습니다. 레거시 코드란 무엇인가? 레거시 코드는 다음과 같은 특징을 가진 기존의 코드입니다. 오래된 기술 스택: 구형 언어나 프레임워크를 사용합니다. 낮은 가독성: 복잡한 구조와 일관성 없는 코딩 스타일로 인해 이해하기 어렵습니다. 부족한 테스트 커버리지: 자동화된 테스트가 부족하여 변경 시 위험이 큽니다. 문서화 부족: 코드에 대한 주석이나 문서가 부족하여 새로운 개발자가 이해하기 어렵습니다. 레거시 코드를 정리해야 하는 이유 1. 유지보수성 향상 레거시 코드는 복잡하고 이해하기 어려워 수정이나 개선이 어렵습니다. 이를 정리하면 코드를 더 쉽게 이해하고 수정할…

November 06, 2024
WIKI
Git 2.47 주요 변경 사항 요약

Git 2.47이 공식 출시되면서 몇 가지 중요한 기능 개선과 추가 기능이 포함되었습니다. 이 글에서는 Git 2.47의 주요 기능을 살펴보고, 이러한 기능이 개발자들에게 어떤 이점을 줄 수 있는지 분석해 보겠습니다. 1. 증분 멀티팩 인덱스 (Incremental Multi-Pack Indexes) Git 2.47에서 가장 주목할 만한 기능은 증분 멀티팩 인덱스입니다. 기존 멀티팩 인덱스(MIDX)를 개선하여, 전체 인덱스를 갱신할 필요 없이 새 팩 파일을 효율적으로 추가할 수 있습니다. 이는 대규모 저장소에서 효율적인 객체 조회를 가능하게 하여, 개발자들이 클론이나 체크아웃 작업을 더 빠르게 수행할 수 있도록 합니다. 주요 이점: 증분 방식으로 추가되는 팩은 인덱싱 속도를 크게 높여, 대규모 프로젝트에서 속도와 저장 공간을 절약할 수 있습니다. 특히 협업 시 저장소의 복사 및 다운로드 시간이 감소해 전체 워크플로우가 더 원활해집니다. 사용 사례: 대형 기업 프로젝트나 오픈 소스…

October 16, 2024
WIKI
Perplexity

Perplexity AI 리뷰 소개 Perplexity AI는 기존 검색 엔진과 차별화된 인공지능 기반 검색 도구입니다. 단순히 키워드에 맞는 웹페이지를 나열하는 것이 아니라, 사용자의 질문을 이해하고 관련 정보를 종합하여 직접적인 답변을 제공하는 검색 플랫폼입니다. 주요 기능 1. 맞춤형 검색 사용자는 원하는 정보에 따라 검색 옵션을 선택할 수 있습니다. 최신 인터넷 정보를 원하면 검색, 학술적인 정보를 원하면 또는 검색, 동영상 검색을 원하면 를 선택하여 보다 정확한 검색 결과를 얻을 수 있습니다. 2. 대화형 인터페이스 및 정확성 Perplexity AI는 대화형 인터페이스를 통해 사용자의 질문을 자연스럽게 받아들이고, 신뢰할 수 있는 출처에서 정보를 수집하여 답변의 정확성을 높입니다. 특히, 출처 링크를 함께 제공하여 사용자가 직접 정보를 확인할 수 있다는 점이 매우 유용합니다. 3. 연관 질문 제시 Perplexity AI는 사용자의 질문에 대한 답변을 제공하…

September 28, 2024
WIKI
BFF(Backend For Frontend) 패턴

오늘날 웹과 모바일 애플리케이션 개발은 다양한 플랫폼에서 최적의 사용자 경험을 제공해야 한다는 도전 과제를 가지고 있습니다. 이를 해결하기 위해 등장한 BFF(Backend For Frontend) 패턴은 각 프론트엔드의 요구에 맞춘 맞춤형 백엔드를 제공함으로써 개발 효율성과 사용자 경험을 향상시키는 방법입니다. 이 글에서는 BFF 패턴의 개념, 장단점, 구현 방법 등을 자세히 알아보겠습니다. 1. BFF 패턴의 등장 배경 기존 아키텍처의 한계 기존 모놀리식 아키텍처는 모든 기능과 서비스를 하나의 코드베이스에 포함하는 방식으로, 각 플랫폼의 특수한 요구사항을 반영하기 어렵다는 문제점이 있습니다. 특히 다양한 클라이언트(웹, 모바일, 데스크탑)를 지원할 때 모든 요청을 동일한 백엔드에서 처리하게 되면, 필요 이상의 데이터를 전송하거나 클라이언트 요구에 맞지 않는 형식의 응답을 줄 수밖에 없었습니다. 프론트엔드 개발의 복잡성 증가 현대 애플리케이션은 다양한 기기와 플랫폼에서 일관된 경…

September 26, 2024
WIKI
함수형 프로그래밍 (Functional Programming)

소개 함수형 프로그래밍(Functional Programming, FP)은 순수 함수를 조합하고, 공유 상태, 변경 가능한 데이터, 부작용을 피하여 소프트웨어를 구축하는 프로그래밍 패러다임입니다. 이는 명령형 프로그래밍과는 대조적인 선언적 프로그래밍 스타일로, 코드가 “어떻게” 동작하는지보다 “무엇을” 하는지를 강조합니다. 개요 함수형 프로그래밍은 1930년대 람다 계산법(Lambda Calculus)에 근간을 두고 있으며, 1950년대에 개발된 Lisp 언어를 통해 처음으로 실용화되었습니다. 이 패러다임은 수학적 함수의 개념을 중심으로 프로그래밍을 구성하며, 상태 변경과 데이터 변경을 피하는 것을 강조합니다. 핵심 개념 1. 순수 함수 순수 함수는 다음 특성을 가진 함수를 말합니다: 같은 입력에 대해 항상 같은 출력을 반환합니다. 부작용(side effects)이 없습니다. 즉, 함수 외부의 상태를 변경하지 않습니다. 예시 (JavaScript): 2. 불변성 불변성은 생성된 후…

August 01, 2024
WIKI
서버 문제를 디버깅하기 위한 리눅스 명령어

문제의 원인을 조사하는 것은 어려운 작업입니다. 하지만 유용한 리눅스 명령어들을 알고 있다면 문제의 원인을 찾는데 도움 받을 수 있습니다. Disk 디스크 용량 체크 파일 시스템의 디스크 사용량을 보여줍니다. 즉, 마운트된 각 파티션의 총 크기, 사용된 공간 및 사용 가능한 공간을 표시합니다. 디스크 공간을 차지하는 항목 확인 파일별 공간 사용량을 추정합니다. 아래 예제의 은 현재 디렉토리만 확인하는 옵션입니다. 현재 I/O 모니터링 현재 쓰기, 일기를 가장 많이 수행하고 있는 프로세스를 확인합니다. image3 Network tcpdump CLI에서 실행되는 데이터 네트워크 패킷 분석 프로그램입니다. 이를 통해 사용자는 네트워크를 통해 전송 또는 수신되는 TCP/IP 및 기타 패킷을 확인할 수 있습니다. BSD를 라이센스로 하며 무료 소프트웨어입니다. 문제의 원인이 클라이언트 측인지 서버 측인지 아니면 방화벽에 있는지 모르는 상황에서 는 송수신된 각 패킷을 확인하…

June 10, 2023
WIKI
LoRA 학습법 (colab)

Google Colab을 통해 Stable Diffusion LoRA 학습 방법을 소개하려고 합니다. 준비 google driver 계정 학습할 이미지 (중복되지 않은 최소 20장의 퀄리티 있는 이미지) 원하는 주제의 이미지만 추가할 것 (ex: 아이오닉6를 학습하려면 아이오닉6만 있는 것이 좋음) 테스트 이미지 아이오닉6 Data Maker Data Maker 접속 LoRA 학습 전에 데이터를 정형화하는 작업을 진행해야합니다. 새창으로 Data Maker에 접속해주세요. Setup project_name을 입력하고 Setup 타이틀 왼쪽에 있는 실행 버튼을 누릅니다. 정상적으로 완료됐다면 아래와 같은 메시지가 나옵니다. 그리고 Google Driver에 접속하면 Loras > > dataset 폴더들이 생성되어 있는 것을 확인할 수 있습니다. dataset 폴더 안에 앞서 준비한 이미지를 업로드합니다. Curate your image 중복된 이미지 및 퀄리티가 낮은 이미지…

April 16, 2023
WIKI
DALL-E 및 사용 후기

OpenAI에서 개발한 이미지 생성 AI입니다. 텍스트 설명을 기반으로 관련된 이미지를 생성하는 능력을 가지고 있습니다. DALL-E의 이름은 살바도르 달리와 월-E의 결합에서 생각해냈다고 합니다. DALL-E 1 DALL-E 1은 GAN과 같이 이미를 생성하는 모델이기는 하나, 그 구조는 GAN보다는 GPT-3에 가깝습니다. GPT-3는 잘 알려진 대로 Transfomer의 Decoder 부분만을 사용하는 Generative 모델로, 입력받은 단어의 token의 sequence를 가지고 다음 단어 token을 차례차례 예측하는 방식입니다. 더물어 매우 많은 데이터로 pre-train 하여 각 단어 간의 관계를 학습한 후 실제 사용 시는 이보다 적은 데이터로 fine-tuning 하게 됩니다. DALL-E 1에서도 이런 기본 작동 방식은 같지만 달라진 부분은 출력에서 예측하는 결과가 token이 아니라 이미지의 picxel이라는 것입니다. 입력받은 이미지를 256x256…

April 15, 2023
WIKI
LLM (Large Language Model) 및 사용 후기

대규모 데이터 셋을 학습하여 자연어 처리(NLP) 성능을 향상시키는 인공지능 모델입니다. LLM은 텍스트 생성, 요약, 기계 번역, 감정 분석 등 다양한 어플리케이션에서 뛰어난 성능을 발휘합니다. 대화형 인공지능의 성능이 갑자기 높아지게 된 이유 기존에 인공지능을 학습 시키기 위한 방법으로 주로 사용되던 것은 규칙 기반(Rule-based) 접근법과 RNN(Recurrent Neural Network) 및 LSTM(Long Short-Term Memory) 과 같은 순차적 모델입니다. 규칙 기반(Rule-based) 접근법 이 방법은 개발자가 직접 대화의 규칙과 패턴을 정의하여 인공지능이 사용자와 대화를 할 수 있도록 하는 방식입니다. 이러한 규칙은 “if-then”과 같은 조건문을 사용하여 구현됩니다. 예를 들어, 사용자가 “안녕”이라고 입력하면, 인공지능은 “안녕하세요!”라고 응답하는 식입니다. 규칙 기반 시스템은 간단한 대화를 처리하는 데는 효과적일 수 있으나, 복잡한 대…

April 08, 2023
WIKI
브라우저 주소창에 google.com을 입력한다면?

브라우저 주소창에 google.com을 입력하면 어떤 일이 일어날까? 1. 브라우저는 캐싱된 DNS 기록들을 통해 google.com과 대응되는 IP 주소가 있는지 확인합니다. DNS(Domain Name System) 는 URL들의 이름과 IP 주소를 저장하고 있는 데이터베이스입니다. 인터넷에 있는 모든 URL들에는 고유의 IP 주소가 지정되어 있습니다. 이 IP 주소를 통해서 해당 웹 사이트를 호스팅하고 있는 서버 컴퓨터에 접근할 수 있습니다. 예를 들어 google.com의 IP 주소를 알아보기 위해서는 아래의 커맨드를 터미널에 작성하면 해당 사이트의 IP 주소를 알려줍니다. 현재 제가 있는 지역에서 해당 명령어를 작성했을 때 142.251.42.206가 나왔고 IP 주소를 브라우저에서 검색했을 때 google.com의 결과와 같았습니다. 여기서 non-authoritative answer이란, name 서버가 도메인에서 만든 원본 소스 파일을 갖고 있지 않다는 뜻입니다…

November 12, 2022
WIKI
구글 검색 너란 녀석...

다들 한 번쯤은 구글을 써보았을 것입니다. 그런데 궁금하지 않으신가요? 구글은 어떻게 30조 개가 넘는 웹 페이지들 속에서 사용자가 입력한 검색어에 맞는 결과물을 10개로 추려서 보여줄까요? 그것도 평균 0.5초 만에!! 사용자가 검색어를 입력할 때마다 구글이 그 많은 웹 페이지에 접속하진 않습니다. 대신 DB에 각 웹페이지의 정보를 저장해 두고 알고리즘을 이용해서 무엇을 보여줄지 정합니다. 크롤링 구글의 알고리즘은 인터넷 상의 모든 웹페이지를 DB에 저장하는 것으로 시작합니다. 이를 위해 Spider라는 프로그램을 이용해 웹 페이지를 크롤링합니다. 크롤은 기어 다닌다는 뜻입니다. 크롤링은 인터넷에 있는 모든 웹 페이지를 찾을 때까지 지속됩니다. Spider는 일단 몇 개의 웹 페이지를 크롤링해서 색인이라고 하는 웹 페이지 목록에 추가합니다. 그리고 각 웹 페이지에서 외부 링크를 따라가서 또 새로운 웹 페이지를 색인에 추가합니다. 그렇게 해서 더는 새로운 웹 페이지를 찾을 수 없을…

October 29, 2022
WIKI
CI/CD란?

CI/CD 란 용어를 알고 계신가요? 요즘 같이 빠르게 진화하고 변화하는 시대에는 어떻게 하면 시장과 고객의 요구에 빠르게 반응해서 제품을 출시, 업데이트할 것인가가 큰 과제입니다. 이 같은 고민을 해결하기 위해 많은 기업들이 CI/CD를 개발 프로세스로 사용하고 있습니다. 대부분의 it회사에서 CI/CD 환경에서 일하고 있기 때문에 개발자라면 CI/CD 란 무엇인지 정확하게 알아두면 좋습니다. CI/CD? 애플리케이션 개발 단계부터 배포 때까지 배포 때까지 이 모든 단계들을 자동화를 통해 조금 더 효율적이고 빠르게 사용자에게 빈번히 배포할 수 있도록 만드는 것을 말합니다. CI( Continuous Integration ) - 지속적인 통합 버그 수정이나 신규 기능들이 메인 Repository에 주기적으로 Build 되고 Test가 되어서 Merge 되는 것을 말합니다. 이 방식은 1991년 Grady Booch에 의해 처음으로 사용되었습니다. 후에는 Extreme Progra…

October 22, 2022
WIKI
캐시가 뭐에요? 먹는건가요?

이번에 회사 서비스에 redis란 것을 도입하게 되었습니다. 데이터를 메모리에서 처리함으로써 더 빠른 연산을 도모하고 DB의 부하를 덜기 위한 것(캐싱) 이었습니다. redis 문서가 잘 되어 있어서 서비스에 도입하는 데까진 문제가 없었습니다. 하지만 redis를 도입하면서도 스스로에게 캐시가 뭐냐고 물었을 때 누구나 말할 수 있는 간단한 답밖에 하지 못한다는 것을 깨달았다. 그래서 이번 기회에 캐시란 무엇인가 정리해보고자 합니다. 캐시? 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓은 임시 장소를 일컫습니다. 원본 데이터에 접근하는데 걸리는 시간이 캐시의 접근 시간보다 오래 걸리는 경우나 값을 다시 계산하는데 걸리는 시간을 단축시키고 싶은 경우 사용한다. 예를 들자면, 다이소 본점에 가서 물티슈 하나 사는 것보다 집 앞에 있는 다이소에 가는 게 더 빠르게 사 올 수 있습니다. 캐시에는 어떤 정보를 담아야 할까? 캐시에 담을 정보를 생각할 때 많이 고려하는 법칙이 있다. 파레토의…

October 15, 2022
WIKI