전체 글
Dreams without goals are just dreams.
-
0과 1로 숫자를 표현하는 방법이번 시간에는 컴퓨터가 0과 1로 숫자를 표현하는 방법에 대해 알아보는 시간을 가져보자. 이미 알고 있는 분들도 있을 수 있겠지만 컴퓨터는 사람과 달리 기본적으로 0과 1밖에 이해하지 못한다. 여기서 0과 1이라고 하는 것은 컴퓨터가 주고받는 전기신호의 강도가 약하면 0, 강하면 1로 인식하게 된다. 그런데 0과 1밖에 이해하지 못하는 컴퓨터가 어떻게 3 + 4 혹은 그 이상의 복잡한 연산을 수행할 수 있는 걸까? 이 질문의 답에 대해 알아보는 시간이 오늘 포스팅의 핵심 주제이다. 정보 단위 먼저 컴퓨터가 이해하는 정보 단위에 대해 알아보자. 컴퓨터가 이해하는 가장 작은 정보 단위를 비트(bit)라고 한다. 위의 이미지와 같이 전구가 꺼지면 0, 켜지면 1로 이해하는 것이다..
[CS] 0과 1로 숫자를 표현하는 방법0과 1로 숫자를 표현하는 방법이번 시간에는 컴퓨터가 0과 1로 숫자를 표현하는 방법에 대해 알아보는 시간을 가져보자. 이미 알고 있는 분들도 있을 수 있겠지만 컴퓨터는 사람과 달리 기본적으로 0과 1밖에 이해하지 못한다. 여기서 0과 1이라고 하는 것은 컴퓨터가 주고받는 전기신호의 강도가 약하면 0, 강하면 1로 인식하게 된다. 그런데 0과 1밖에 이해하지 못하는 컴퓨터가 어떻게 3 + 4 혹은 그 이상의 복잡한 연산을 수행할 수 있는 걸까? 이 질문의 답에 대해 알아보는 시간이 오늘 포스팅의 핵심 주제이다. 정보 단위 먼저 컴퓨터가 이해하는 정보 단위에 대해 알아보자. 컴퓨터가 이해하는 가장 작은 정보 단위를 비트(bit)라고 한다. 위의 이미지와 같이 전구가 꺼지면 0, 켜지면 1로 이해하는 것이다..
2024.05.27 -
컴퓨터 구조의 큰 그림이번 시간에는 컴퓨터 구조의 큰 그림에 대해 알아보는 시간을 배워보자. 이번 포스팅에서는 컴퓨터 구조에 대한 세세한 지식보단 컴퓨터 구조를 배우기 앞서 앞으로 어떤 것을 어떻게 배울 것인지에 대한 로드맵에 대해 알아보는 시간이다. 📢 해당 포스팅에서 낯선 컴퓨터 용어가 종종 등장할 수 있지만 모두 암기하면서 읽지 않아도 되니 가볍게 읽어주길 바란다. 컴퓨터 구조는 크게 2가지로 나눌 수 있다. 위의 그림에서 알 수 있듯이, 첫 번째는 컴퓨터가 이해하는 정보이고 두 번째는 컴퓨터의 네 가지 핵심 부품이다. 그럼 먼저 컴퓨터가 이해하는 정보란 무엇인가에 대해 알아보자. 컴퓨터가 이해하는 정보에는 또 크게 두 가지가 있다. 그 둘은 데이터와 명령어이다. 물론 각 항목에 대해서 나중..
[CS] 컴퓨터 구조의 큰 그림컴퓨터 구조의 큰 그림이번 시간에는 컴퓨터 구조의 큰 그림에 대해 알아보는 시간을 배워보자. 이번 포스팅에서는 컴퓨터 구조에 대한 세세한 지식보단 컴퓨터 구조를 배우기 앞서 앞으로 어떤 것을 어떻게 배울 것인지에 대한 로드맵에 대해 알아보는 시간이다. 📢 해당 포스팅에서 낯선 컴퓨터 용어가 종종 등장할 수 있지만 모두 암기하면서 읽지 않아도 되니 가볍게 읽어주길 바란다. 컴퓨터 구조는 크게 2가지로 나눌 수 있다. 위의 그림에서 알 수 있듯이, 첫 번째는 컴퓨터가 이해하는 정보이고 두 번째는 컴퓨터의 네 가지 핵심 부품이다. 그럼 먼저 컴퓨터가 이해하는 정보란 무엇인가에 대해 알아보자. 컴퓨터가 이해하는 정보에는 또 크게 두 가지가 있다. 그 둘은 데이터와 명령어이다. 물론 각 항목에 대해서 나중..
2024.05.18 -
컴퓨터 구조를 알아야 하는 이유오늘은 컴퓨터 구조에 대해 본격적으로 알아보는 시간을 가지기 전, 컴퓨터 구조를 왜 알아야 하는지부터에 대해 알아보는 시간을 가져보자. 해당 포스팅에서는 어려운 내용에 대해선 다루지 않을 예정이므로, 편한 마음으로 읽어주었으면 한다. 처음 프로그래밍을 배우면 무엇부터 배울까?처음 개발을 배우게 된다면 우리는 무엇부터 배울까? 보통은 "프로그래밍 언어의 문법부터 학습한다"라는 대답이 나올 것이다. 왜냐면 프로그래밍을 한다는 것은 코드를 적는 것이다. 그렇다면 개발자는 당연히 코드만 잘 작성하면 되는 거 아닌가?라는 생각을 하기 때문이다. 따라서 컴퓨터 구조를 굳이 왜 알아야 할까?라는 생각을 가질 수도 있다. 하지만 좋은 개발자가 되기 위해서는 프로그래밍 실력과 컴퓨터의 ..
[CS] 컴퓨터 구조를 알아야 하는 이유컴퓨터 구조를 알아야 하는 이유오늘은 컴퓨터 구조에 대해 본격적으로 알아보는 시간을 가지기 전, 컴퓨터 구조를 왜 알아야 하는지부터에 대해 알아보는 시간을 가져보자. 해당 포스팅에서는 어려운 내용에 대해선 다루지 않을 예정이므로, 편한 마음으로 읽어주었으면 한다. 처음 프로그래밍을 배우면 무엇부터 배울까?처음 개발을 배우게 된다면 우리는 무엇부터 배울까? 보통은 "프로그래밍 언어의 문법부터 학습한다"라는 대답이 나올 것이다. 왜냐면 프로그래밍을 한다는 것은 코드를 적는 것이다. 그렇다면 개발자는 당연히 코드만 잘 작성하면 되는 거 아닌가?라는 생각을 하기 때문이다. 따라서 컴퓨터 구조를 굳이 왜 알아야 할까?라는 생각을 가질 수도 있다. 하지만 좋은 개발자가 되기 위해서는 프로그래밍 실력과 컴퓨터의 ..
2024.04.17 -
장고 웹 채팅 서비스(실습) - 초간단 Echo 웹 소켓 구현 이번시간에는 간단한 실습으로, 초간단한 Echo 웹 소켓을 구현해 보자. 지난 시간에 장고 프로젝트를 만들었으니 프로젝트 생성에 대한 설명은 생략하고 이번엔 바로 애플리케이션을 만들어보자. app 생성 먼저 위의 명령어를 실행하여 새로운 장고 applicaion을 생성하자. 생성하고 나면 위의 우측 이미지에서 확인할 수 있듯이 새롭게 만든 app 다이렉토리가 생성된 것을 확인할 수 있다. 그리고 위의 이미지에 나온 순서처럼 settings.py와 app/urls.py 그리고 프로젝트 폴더 아래 있는 urls.py에 빨간색으로 표시된 부분의 코드를 추가해 주면 된다. 이때, app/urls.py 같은 경우는 처음에 app 폴더 아래에 urls...
장고 웹 채팅 서비스(실습) - 초간단 Echo 웹 소켓 구현장고 웹 채팅 서비스(실습) - 초간단 Echo 웹 소켓 구현 이번시간에는 간단한 실습으로, 초간단한 Echo 웹 소켓을 구현해 보자. 지난 시간에 장고 프로젝트를 만들었으니 프로젝트 생성에 대한 설명은 생략하고 이번엔 바로 애플리케이션을 만들어보자. app 생성 먼저 위의 명령어를 실행하여 새로운 장고 applicaion을 생성하자. 생성하고 나면 위의 우측 이미지에서 확인할 수 있듯이 새롭게 만든 app 다이렉토리가 생성된 것을 확인할 수 있다. 그리고 위의 이미지에 나온 순서처럼 settings.py와 app/urls.py 그리고 프로젝트 폴더 아래 있는 urls.py에 빨간색으로 표시된 부분의 코드를 추가해 주면 된다. 이때, app/urls.py 같은 경우는 처음에 app 폴더 아래에 urls...
2024.03.23 -
스프링이란? 스프링은 자바 플랫폼 기반 오픈소스 애플리케이션 프레임워크이다. 엔터프라이즈급 애플리케이션 개발에 필요한 모든 기능을 종합적으로 제공하며, 경량화된 설루션으로 개발자의 부담을 덜어준다. 주요 특징으로는 객체 생성 및 소멸 관리, 외존성 주입, AOP, MVC 웹 프레임워크 등이 있으며, 다양한 모듈을 통해 웹 개발, 데이터 접근, 트랜잭션 관리, 보안 등을 손쉽게 처리할 수 있다. 스프링 생태계 스프링은 어떤 특정한 하나의 프로그램이 아니라 여러 가지 여러 가지 기술들의 모음이라고 할 수 있다. 먼저 스프링이라고 하면 가장 먼저 떠오르는 것과 핵심이라고 할 수 있는 스프링 프레임워크가 있고 여러 기술들을 편리하게 사용할 수 있도록 도와주는 스프링 부트, 스프링 데이터, 스프링 세션 등과 같은..
[Spring] 스프링이란?스프링이란? 스프링은 자바 플랫폼 기반 오픈소스 애플리케이션 프레임워크이다. 엔터프라이즈급 애플리케이션 개발에 필요한 모든 기능을 종합적으로 제공하며, 경량화된 설루션으로 개발자의 부담을 덜어준다. 주요 특징으로는 객체 생성 및 소멸 관리, 외존성 주입, AOP, MVC 웹 프레임워크 등이 있으며, 다양한 모듈을 통해 웹 개발, 데이터 접근, 트랜잭션 관리, 보안 등을 손쉽게 처리할 수 있다. 스프링 생태계 스프링은 어떤 특정한 하나의 프로그램이 아니라 여러 가지 여러 가지 기술들의 모음이라고 할 수 있다. 먼저 스프링이라고 하면 가장 먼저 떠오르는 것과 핵심이라고 할 수 있는 스프링 프레임워크가 있고 여러 기술들을 편리하게 사용할 수 있도록 도와주는 스프링 부트, 스프링 데이터, 스프링 세션 등과 같은..
2024.03.10 -
스프링의 탄생 때는 2000년대 초반, 스프링(Spring)이 등장하기 전에는 자바 기반의 기업 애플리케이션을 개발할 때 주로 EJB(Enterprise JavaBeans)가 사용되었다. EJB는 자바 기술의 일부로서, 기업 환경에서 확장 가능하고 분산형 애플리케이션을 개발하기 위한 목적으로 만들어졌다. EJB의 탄생 EJB 이전의 자바 애플레키에션 개발에서는 주로 서블릿(Servlet)과 자바 서버 페이지(JSP)를 활용하여 웹 애플리케이션을 구축했다. 이러한 기술들은 간단하고 빠르게 웹 페이지를 생성하는 데에는 용이했지만, 분산 환경에서의 기능적인 요구사항을 다루기 어려웠다. 서블릿과 JSP는 주로 프레젠테이션 레이어에 중점을 두고 있었기 때문에, 엔터프라이즈 수준의 기능들을 갖춘 복잡한 비즈니스 로..
[Spring] 스프링의 탄생스프링의 탄생 때는 2000년대 초반, 스프링(Spring)이 등장하기 전에는 자바 기반의 기업 애플리케이션을 개발할 때 주로 EJB(Enterprise JavaBeans)가 사용되었다. EJB는 자바 기술의 일부로서, 기업 환경에서 확장 가능하고 분산형 애플리케이션을 개발하기 위한 목적으로 만들어졌다. EJB의 탄생 EJB 이전의 자바 애플레키에션 개발에서는 주로 서블릿(Servlet)과 자바 서버 페이지(JSP)를 활용하여 웹 애플리케이션을 구축했다. 이러한 기술들은 간단하고 빠르게 웹 페이지를 생성하는 데에는 용이했지만, 분산 환경에서의 기능적인 요구사항을 다루기 어려웠다. 서블릿과 JSP는 주로 프레젠테이션 레이어에 중점을 두고 있었기 때문에, 엔터프라이즈 수준의 기능들을 갖춘 복잡한 비즈니스 로..
2024.02.03 -
하이퍼파라미터의 원리와 이해 기계 학습에서 하이퍼파라미터(Hyperparameter)는 모델 학습 과정을 조절하는 데 사용되는 매개변수이다. 이는 모델의 구조나 학습 알고리즘에 직접적으로 영향을 미치지 않으며, 모델 학습을 조절하거나 최적화하는 데 사용된다. 일반적으로 하이퍼파리미터는 모델을 학습하기 전에 사전에 설정되어야 하며, 학습 중에는 조절되지 않는다. 📢 일반 파라미터와 하이퍼파라미터의 차이점은? 일반 파라미터는 모델이 학습하면서 조절되고 최적화되는 매개변수이며, 하이퍼파라미터는 모델의 학습 프로세스를 제어하고 조절하기 위한 고정된 매개변수이다. 하이퍼파라미터는 모델 학습 이전에 사람이 수동으로 설정하거나 조정하는 것이 일반적이다. 다음은 하이퍼파라미터의 한 종류인 Loss에 대해 알아보자. L..
[AI] 하이퍼파라미터의 원리와 이해하이퍼파라미터의 원리와 이해 기계 학습에서 하이퍼파라미터(Hyperparameter)는 모델 학습 과정을 조절하는 데 사용되는 매개변수이다. 이는 모델의 구조나 학습 알고리즘에 직접적으로 영향을 미치지 않으며, 모델 학습을 조절하거나 최적화하는 데 사용된다. 일반적으로 하이퍼파리미터는 모델을 학습하기 전에 사전에 설정되어야 하며, 학습 중에는 조절되지 않는다. 📢 일반 파라미터와 하이퍼파라미터의 차이점은? 일반 파라미터는 모델이 학습하면서 조절되고 최적화되는 매개변수이며, 하이퍼파라미터는 모델의 학습 프로세스를 제어하고 조절하기 위한 고정된 매개변수이다. 하이퍼파라미터는 모델 학습 이전에 사람이 수동으로 설정하거나 조정하는 것이 일반적이다. 다음은 하이퍼파라미터의 한 종류인 Loss에 대해 알아보자. L..
2024.01.28 -
장고 웹 채팅 서비스 - Channels 주요 구성 요소 Channels를 이용하여 장고 웹 채팅 서비스를 만들기에 앞서 Channels를 구성하는 주요 패키지에 대해 먼저 알아보는 시간을 가져보자. 패키지 목적 channels(필수) 장고의 통합 레이어 daphne(필수) ASGI 서버로써 채널스 4.0부터 장고/채널스 개발서버로서 사용된다. 또한 실서비스에서는 daphne 명령이나 gunicorn/uvicorn 명령을 사용하여, 장고 서버를 구동한다. channels_redis(옵션) Channels 구동에 필수는 아니지만, 채팅 서비스에서는 프로세스간 통신이 필요하기에 필수이다. 위의 표에서 확인할 수 있듯이, channels와 daphne는 필수 라이브러리이다. channels 버전 4.0부터 r..
[Django] 장고 웹 채팅 서비스 - Channels 주요 구성 요소장고 웹 채팅 서비스 - Channels 주요 구성 요소 Channels를 이용하여 장고 웹 채팅 서비스를 만들기에 앞서 Channels를 구성하는 주요 패키지에 대해 먼저 알아보는 시간을 가져보자. 패키지 목적 channels(필수) 장고의 통합 레이어 daphne(필수) ASGI 서버로써 채널스 4.0부터 장고/채널스 개발서버로서 사용된다. 또한 실서비스에서는 daphne 명령이나 gunicorn/uvicorn 명령을 사용하여, 장고 서버를 구동한다. channels_redis(옵션) Channels 구동에 필수는 아니지만, 채팅 서비스에서는 프로세스간 통신이 필요하기에 필수이다. 위의 표에서 확인할 수 있듯이, channels와 daphne는 필수 라이브러리이다. channels 버전 4.0부터 r..
2024.01.20 -
기계는 어떻게 학습할까? 지난 시간에 간단하게 머신 러닝에 대해 알아보았다. 머신 러닝에는 크게 지도학습, 강화학습 그리고 비지도 학습이 있다는 것을 배웠는데 이 중에서 가장 많이 사용되는 방식이 지도 방식이라고 했다. 그래서 오늘은 수학 점수를 이용해서 과학 점수를 예측하는 인공지능을 예로, 기계가 어떻게 학습을 하는지에 대해 살펴보는 시간을 가져보겠다. 학생의 수학 점수를 입력하면 해당 데이터로 학습하여 학생의 과학 점수를 예측하는 모델을 만들 것이고, 해당 모델이 어떻게 데이터를 통해 학습을 하는지 구체적인 과정에 대해 살펴보자. 📢 해당 글은 지도학습에 대해 코드로 작성하는 실습보단, 이론 위주로 설명하고 있기 때문에 글을 읽기 전 참고 바란다. 모델 선택 기계 학습을 시작할 때 모델 선택은 중요..
[AI] 기계는 어떻게 학습할까?기계는 어떻게 학습할까? 지난 시간에 간단하게 머신 러닝에 대해 알아보았다. 머신 러닝에는 크게 지도학습, 강화학습 그리고 비지도 학습이 있다는 것을 배웠는데 이 중에서 가장 많이 사용되는 방식이 지도 방식이라고 했다. 그래서 오늘은 수학 점수를 이용해서 과학 점수를 예측하는 인공지능을 예로, 기계가 어떻게 학습을 하는지에 대해 살펴보는 시간을 가져보겠다. 학생의 수학 점수를 입력하면 해당 데이터로 학습하여 학생의 과학 점수를 예측하는 모델을 만들 것이고, 해당 모델이 어떻게 데이터를 통해 학습을 하는지 구체적인 과정에 대해 살펴보자. 📢 해당 글은 지도학습에 대해 코드로 작성하는 실습보단, 이론 위주로 설명하고 있기 때문에 글을 읽기 전 참고 바란다. 모델 선택 기계 학습을 시작할 때 모델 선택은 중요..
2024.01.15 -
장고 웹 채팅 서비스 - 프로젝트 생성 이번 시간부터 장고의 Channels 라이브러리를 활용하여 웹 채팅 서비스를 구현할 것이다. 시작함에 앞서 이번 포스팅에서는 간단하게 장고의 프로젝트를 생성하고 개발 서버를 구동하는 내용을 다루겠다. 실습 코드는 모두 GitHub 저장소에 업로드하므로 필요하다면 아래에서 코드를 전부 다운로드할 수 있으니 참고하자. GitHub - Jack-Snider/Django-Channels: Making Web chatting site with Django ChannelsMaking Web chatting site with Django Channels. Contribute to Jack-Snider/Django-Channels development by creating an ..
[Django] 장고 웹 채팅 서비스(1) - 프로젝트 생성장고 웹 채팅 서비스 - 프로젝트 생성 이번 시간부터 장고의 Channels 라이브러리를 활용하여 웹 채팅 서비스를 구현할 것이다. 시작함에 앞서 이번 포스팅에서는 간단하게 장고의 프로젝트를 생성하고 개발 서버를 구동하는 내용을 다루겠다. 실습 코드는 모두 GitHub 저장소에 업로드하므로 필요하다면 아래에서 코드를 전부 다운로드할 수 있으니 참고하자. GitHub - Jack-Snider/Django-Channels: Making Web chatting site with Django ChannelsMaking Web chatting site with Django Channels. Contribute to Jack-Snider/Django-Channels development by creating an ..
2024.01.07 -
머신러닝이란? 머신러닝에 대해 알아보기 전에 먼저 인공지능에 대한 정의와 크게 어떤 분류로 나뉘어 있는지부터 확인해 보자. 인공지능(AI, Artificial Intelligence)은 인간의 학습과 의사 결정을 모방하거나 수행하는 시스템 또는 프로그램으로, 인간의 지능을 기계에 구현한 것을 의미한다. 인공지능은 주로 기계학습(Machine Learning)과 규칙기반(Rule-Based) 시스템으로 나눌 수 있다. 이 두 가지 접근 방식은 각기 다른 방식으로 작동하며, 다양한 문제에 대한 해결에 활용한다. 그럼 이 두 가지 방법에 대해 간단하게 살펴보자. 기계학습(Machine Learning) 기계학습은 데이터에서 패턴을 학습하여 모델을 구축하고, 이 모델을 사용하여 새로운 데이터에 대한 예측이나 결..
[AI] 머신러닝이란?머신러닝이란? 머신러닝에 대해 알아보기 전에 먼저 인공지능에 대한 정의와 크게 어떤 분류로 나뉘어 있는지부터 확인해 보자. 인공지능(AI, Artificial Intelligence)은 인간의 학습과 의사 결정을 모방하거나 수행하는 시스템 또는 프로그램으로, 인간의 지능을 기계에 구현한 것을 의미한다. 인공지능은 주로 기계학습(Machine Learning)과 규칙기반(Rule-Based) 시스템으로 나눌 수 있다. 이 두 가지 접근 방식은 각기 다른 방식으로 작동하며, 다양한 문제에 대한 해결에 활용한다. 그럼 이 두 가지 방법에 대해 간단하게 살펴보자. 기계학습(Machine Learning) 기계학습은 데이터에서 패턴을 학습하여 모델을 구축하고, 이 모델을 사용하여 새로운 데이터에 대한 예측이나 결..
2024.01.04 -
장고 템플릿(Template) 장고(Django)에서 템플릿은 웹 애플리케이션의 사용자 인터페이스를 구성하는 데 사용되는 파일이다. 템플릿은 HTML, CSS 및 일부 특수 구문을 포함하며, 동적으로 생성된 내용을 표시할 수 있도록 한다. 이를 통해 개발자는 서버에서 전달된 데이터를 템플릿에 적용하여 동적 웹 페이지를 생성할 수 있다. 장고의 템플릿 시스템은 Django의 모델, 뷰 컨트롤러(MVC) 아키텍처에서 뷰 부분에 해당한다. 템플릿은 뷰에서 전달된 데이터를 적절한 형식으로 표시하고, 사용자가 보는 웹 페이지의 모습을 결정한다. 템플릿 시스템의 설계 철학 장고에서 템플릿을 만들 때 설계 철학을 알면 보다 더 효율적인 설계를 할 수 있으므로, 장고에서 템플릿을 만들 때 추구하는 철학들에 대해 한 번..
[Django] 장고 템플릿(Template)장고 템플릿(Template) 장고(Django)에서 템플릿은 웹 애플리케이션의 사용자 인터페이스를 구성하는 데 사용되는 파일이다. 템플릿은 HTML, CSS 및 일부 특수 구문을 포함하며, 동적으로 생성된 내용을 표시할 수 있도록 한다. 이를 통해 개발자는 서버에서 전달된 데이터를 템플릿에 적용하여 동적 웹 페이지를 생성할 수 있다. 장고의 템플릿 시스템은 Django의 모델, 뷰 컨트롤러(MVC) 아키텍처에서 뷰 부분에 해당한다. 템플릿은 뷰에서 전달된 데이터를 적절한 형식으로 표시하고, 사용자가 보는 웹 페이지의 모습을 결정한다. 템플릿 시스템의 설계 철학 장고에서 템플릿을 만들 때 설계 철학을 알면 보다 더 효율적인 설계를 할 수 있으므로, 장고에서 템플릿을 만들 때 추구하는 철학들에 대해 한 번..
2024.01.02