반응형
  • 수치형(numerical) 데이터: 나이, 몸무게, 키
  • 범주형(categorical) 데이터: 혈액형, 성별

많은 머신 러닝 알고리즘은 인풋 데이터, 즉 입력 변수의 값이 수치형 데이터여야 합니다. 저희가 배운 선형 회귀도 손실 함수를 구하고, 경사 하강법을 적용하려면 인풋 데이터가 수치형 데이터여야겠죠? 그럼 범주형 데이터가 있을 때는 어떻게 해야 할까요?

범주형 데이터를 수치형 데이터로 바꿔 주면 됩니다. 어떻게 바꿔 주는 게 좋을까요? 가장 먼저 떠오르는 방법은 1, 2, 3… 과 같은 자연수를 각 카테고리에 지정해 주는 건데요, 예를 들어 A형은 1, AB형은 2, B형은 3, O형은 4. 이런 식으로 데이터를 변환하는 거죠. 이제 혈액형은 숫자 값을 가지게 되니까 입력 변수로 쓸 수 있겠죠?

하지만 이렇게 데이터를 바꿔 주면 혈액형에 크고 작다는 개념이 생깁니다. 예를 들어 ‘A형은 1이니까 가장 작고, O형은 4니까 가장 크고, AB형, B형은 그 사이다’라는 관계가 생기는 거죠. 머신 러닝 알고리즘은 이런 엉뚱한 관계도 학습하기 때문에 오히려 예측에 방해가 될 수 있습니다.

그래서 범주형 데이터를 수치형 데이터로 바꿀 때는 이 방법을 사용하지 않고, One-hot encoding이라는 방법을 사용합니다.

One-hot encoding은 각 카테고리를 하나의 새로운 열로 만들어 주는 방법입니다. 예를 들어 혈액형이라는 열에는 A형, AB형, B형, O형 네 카테고리가 있으니까 이걸 4개의 새로운 열로 만들어 주는 방법입니다.

그다음엔 주어진 데이터가 어떤 혈액형인지에 따라 새로운 열들의 값을 0 또는 1로 채워 줍니다. 처음 데이터 행은 B형이니까 B형 열을 1로, 그리고 나머지 열을 0으로 설정해 주고, 다음 데이터 행은 O형이니까 O형 열을 1로, 나머지 열을 0으로 설정해 주는 거죠. 이제 이 열들은 0과 1, 두 값만 가지기 때문에 범주형 데이터에게 크고 작은 관계가 생기는 것을 막을 수 있는 겁니다.

결론적으로 one-hot encoding을 하면 범주형 데이터에게 크고 작음의 엉뚱한 관계가 생기는 걸 방지하면서도 수치형 데이터로 바꿔 줄 수 있는 거죠.

반응형
반응형

템플릿 변수 (Template Variable)

{{ variable }}

템플릿 변수는 템플릿이 렌더될 때 해당 변수가 의미하는 값으로 변환됩니다. 뷰(View)에서 가공한 데이터를 템플릿으로 넘겨주면 템플릿에서는 템플릿 변수를 사용해 넘겨받은 데이터에 접근할 수 있습니다.

템플릿 변수의 점(.) 연산자

템플릿 변수는 점(.)을 사용해서 변수 안쪽 속성에 접근할 수 있습니다.

user = {"name" : "우재", "coffee" : True}

예를 들어 위와 같은 user 변수가 있다면, user.name으로 "우재"라는 안쪽 값에 접근 할 수 있다는 거죠. 이와 같은 점(.) 연산자는 다음과 같은 순서로 변수의 안쪽 속성에 접근을 시도합니다.

  1. 변수를 사전형(dict)으로 생각하고 점(.) 연산자로 Key값 조회
  2. 변수를 객체로 생각하고 내부 속성값 조회 또는 함수 호출
  3. 변수를 리스트(list)로 생각하고 점(.) 연산자로 Index 조회

Django에서 템플릿의 점 연산자를 만나면 자동으로 위의 경우대로 순서대로 처리하며 알맞은 값으로 변환되지만 내가 접근 하려는 템플릿 변수가 어떤 자료형인지 알고 점(.)연산자를 사용해야지만 예기치 못한 에러를 방지 할 수 있습니다.

템플릿 필터 (Template Filter)

{{ variable|filter }}

템플릿 변수에 파이프(|)를 쓰고 템플릿 필터를 사용하면 템플릿 변수를 특정 형식으로 변환 할 수 있습니다.

{{ variable|filter:args }}

일부 필터는 필터 뒤에 인자를 필요로 합니다. Django는 약 60개의 내장 템플릿 필터를 제공하며 개발자가 직접 필터를 정의해서 사용하는 것도 가능합니다. 아래는 몇 가지 내장 템플릿 필터입니다.

default

참조하는 템플릿 변수가 비어 있거나 불린형 False일 경우 변환되는 값을 지정합니다.

{{ variable|default:"coffee" }}

변수가 비어 있거나 False면 coffee 라는 텍스트로 대체 됩니다.

capfirst

맨 첫글자를 대문자로 바꿔 줍니다.

{{ variable|capfirst }}

random

반복 가능한 템플릿 변수에 대해 무작위로 하나를 추출해 변환합니다.

{{ variable|random }}

만약 variable이 참조하는 값이 [ "a", "b", "c", "d" ] 인 리스트형이라면 템플릿 변수가 리스트 내의 하나의 원소로 대체 됩니다.

upper & lower

템플릿 변수를 대문자(upper) 또는 소문자 (lower)로 변환합니다.

{{ variable | upper }} , {{ variable | lower }}

ljust & rjust

주어진 길이 내에서 공백을 넣어 왼쪽 정렬(ljust) 또는 오른쪽 정렬(rjust)을 한 문자열로 변환합니다.

{{ variable|ljust:"length" }}, {{ variable|rjust:"length" }}

variable이 "codeit" 일 때 {{ variable|ljust:"10" }} 이라면 "codeit "이 됩니다. 공백을 표시해서 보면 "codeit_ _ _ _"이런 형태인거죠.마찬가지로 만약 {{ variable|rjust:"10" }} 이라면 " codeit"이 되겠죠?

이 밖에도 몇 가지 필터가 더 있는데 모두 외울 필요는 당연히 없고 필요할 때 찾아서 사용하면 됩니다. 더 많은 템플릿 필터에 대한 정보는 아래 Django 공식 문서를 참고하세요. https://docs.djangoproject.com/en/2.2/ref/templates/builtins/#ref-templates-builtins-filters

템플릿 태그 (Template Tag)

{% tag %}

템플릿 태그는 템플릿을 작성할 때 반복문, 조건문 등의 로직을 사용해서 마치 프로그래밍을 하듯 템플릿을 작성할 수 있게 해줍니다. Django가 기본적으로 제공하는 태그가 있지만, 개발자가 직접 태그를 정의해서 사용할 수도 있습니다.

{% tag %} ~ {% endtag %}

태그의 형태는 단독으로 사용하는 템플릿 태그와 여는 태그와 닫는 태그가 필요한 템플릿 태그가 있습니다. 아래는 몇 가지 기본 템플릿 태그입니다.

for

{% for obj in values %} ~ {% endfor %}

반복 가능한 객체를 반복하며 템플릿을 작성 할 수 있습니다. 아래처럼 말이죠.

{% for food in foods %}
    <li> {{ food.name }} </li>
{% endfor %}

만약 목록을 역순으로 반복하고 싶다면 아래와 같이 사용 할 수 있습니다.

{% for food in foods reversed %}
    <li> {{ food.name }} </li>
{% endfor %}

반복 가능한 객체가 비어 있거나 존재하지 않을 때는 아래와 같이 사용 할 수 있습니다. 아래는 만약 foods라는 객체가 비어있다면 {% empty %} 구문이 실행됩니다.

{% for food in foods %}
    <li> {{ food.name }} </li>
{% empty %}
    <li> There is no food. </li>
{% endfor %}

if

{% if value1 %} ~ {% elif value2 %} ~ {% else %} ~ {% endif %}

파이썬에서 사용하던 조건문과 형태가 비슷하죠? 실제로 사용 할 때도 우리가 아는 조건문의 형태로 사용하면 됩니다.

{% if hungry %}
    <p> Let's eat! </p>
{% elif sleepy %}
        <p> You need some coffee. </p>
{% else %}
    <p> Go back to work. </p>
{% endif %}

with

{% with value1=value2 %} ~ {% endwith %}

복잡한 변수가 있을 때 '별명'을 붙이기 위해 사용합니다. with 구문 내에서는 value1을 value2 대신 사용할 수 있습니다.

이 밖에도 몇 가지 템플릿 태그가 더 있는데, 필터와 마찬가지로 필요할 때 찾아서 사용하면 됩니다. 템플릿 태그에 대한 더 많은 정보는 아래 Django 공식 문서를 참고하세요. https://docs.djangoproject.com/en/2.2/ref/templates/builtins/#ref-templates-builtins-tags

사용자 정의 필터와 태그

. https://docs.djangoproject.com/en/2.2/howto/custom-template-tags/

반응형

'개발자알면좋은 내용들' 카테고리의 다른 글

트리용어  (4) 2024.03.15
반응형
  • 최신 정보 습득: 프로그래밍 분야는 매우 빠르게 변화하기 때문에, 최신 기술 트렌드를 따라가기 위해서는 영어로 된 자료를 직접 읽고 이해해야 합니다.
  • 문제 해결: 코딩 과정에서 발생하는 에러 메시지나 해결 방법은 대부분 영어로 제공됩니다.
  • 커뮤니케이션: 해외 개발자들과 소통하거나 오픈 소스 프로젝트에 참여하려면 영어 능력이 필수적입니다.
  • 더 나은 코드 작성: 프로그래밍 관련 자료와 커뮤니티에서 영어로 작성된 코드를 읽고 분석하면서 더 나은 코드 작성 능력을 키울 수 있습니다.

프로그래머가 기르면 좋은 영어 능력

  • 빠르고 정확한 독해: 프로그래밍 관련 문서, 코드, 커뮤니티 게시글 등을 빠르게 읽고 이해할 수 있는 능력.
  • 기술 용어 이해: 프로그래밍 관련 용어와 개념을 정확하게 이해할 수 있는 능력.
  • 기본적인 영문법: 영문법을 어느 정도 이해하고 있어야 합니다.
  • 간단한 영문 작성: 코드에 대한 주석이나 간단한 문서를 영어로 작성할 수 있는 능력.

프로그래머를 위한 영어 학습 방법

  • 프로그래밍 관련 영어 자료 활용: 프로그래밍 관련 책, 문서, 코드, 커뮤니티 게시글 등을 읽고 공부합니다.
  • 영어로 코딩: 해설이 있는 영어 코딩 강좌를 수강하거나, 개인 프로젝트를 진행하면서 영어로 코딩합니다.
  • 해외 개발자들과 소통: 온라인 커뮤니티나 SNS를 통해 해외 개발자들과 소통하며 영어 실력을 향상시킵니다.
  • 영어 학습 앱 활용: 영어 학습 앱을 활용하여 기본적인 영어 단어와 문장을 익힙니다
반응형
반응형

프로그래밍에서는 라이브러리나 프레임워크, 심지어 프로그래밍 언어까지 선택해야 할 것이 많습니다. 그리고 이 선택들은 되돌리기 어려울 뿐 아니라, 선택지가 많고 빠르게 바뀌어서 결정하기 쉽지 않죠. 올바른 선택을 위해서는 트렌드를 읽고 스스로 판단할 수 있는 능력을 길러야 합니다..

활발한 기술

기술의 선순환을 기억하세요.

  1. 좋은 기술은 많은 사람들이 사용합니다.
  2. 많은 사람들이 사용하면 커뮤니티가 활발해 지고, 좋은 토론과 자료들이 많이 만들어 집니다.
  3. 좋은 토론과 자료를 통해, 더 많은 사람들이 기술을 선택하게 됩니다.

정리하자면, 좋은 기술이 활발해지기도 하고, 활발한 기술이 좋은 기술이기도 합니다. 활발한 기술은 좋은 자료를 쉽게 찾을 수 있고, 커뮤니티에서도 빠른 답변을 기대할 수 있기 때문에 빠르게 배우고 빠르게 문제를 해결할 수 있습니다. 혹은, 이미 나와 같은 일을 겪은 사람들의 질문과 답변도 많이 발견할 수 있을 겁니다.

인정받는 기술

잘 모를 땐, 대세를 따르는 것도 하나의 방법입니다.

여러 회사들이 선택한 기술은 주로 뛰어난 개발자들의 많은 고민과 상의 끝에 내려진 결정입니다. 물론 규모나 목적에 따라 더 적합한 기술이 달라질 수 있겠지만, 참고하면 좋습니다.

StackShare를 통해 유명한 회사들이 사용하는 기술을 알 수 있습니다. 하나의 회사에서 사용하는 기술들을 모아서 “기술 스택(Stack)”이라고 표현하기도 하니 참고하세요.

기업에서 직접 만들거나 관리하는 기술도 있습니다. 예를 들어 React는 페이스북에서, AngularJS는 구글에서 관리를 하고 있죠. Java는 오라클의 소유이고, Swift는 애플에서, Go는 구글에서 만든 언어입니다.

든든한 지원군이 있으면 기술이 안정적으로 성장할 가능성이 높습니다. 각 회사의 뛰어난 개발자들이 기술 발전을 위해 노력할테니까요.

유망한 기술

산업 트렌드가 바뀌면, 기술이나 경험의 활용도가 갑자기 커지거나 줄어들기도 합니다. 개발자의 실력과 관계 없이 입지가 늘어날 수도, 줄어들 수도 있는 거죠. 그래서 기술을 선택할 때는 이 점을 고려해야 합니다.

단순히 프로그래밍 분야의 트렌드만 파악할 것이 아니라, IT 혹은 산업 전반에 대한 이해를 가지고 판단해야 더 정확하게 판단할 수 있습니다. IT 산업은 워낙 변화의 속도가 빠르기 때문에, 늘 귀를 열어두어야 하고요. 가트너에서는 매년 10대 전략 기술 트렌드를 발표합니다.

 

 

반응형
반응형
 

Stack Overflow - Where Developers Learn, Share, & Build Careers

Stack Overflow | The World’s Largest Online Community for Developers

stackoverflow.com

 

 

StackShare - Tech Stack Intelligence

StackShare is a Tech Stack Intelligence platform and community helping teams to make data-driven technology decisions.

stackshare.io

 

 

 

반응형

'개발에 필요한 자료집' 카테고리의 다른 글

개발자 공부하는 유트브 모음  (0) 2024.03.20
CSS 자료창고  (0) 2024.03.19
현업자가 알려준 기술블로그  (0) 2024.03.10
파이썬 자료창고  (2) 2024.03.08
반응형

 

 

프로그래밍의 여러 영역은 서로괘 밀접하게 연결되어있다

 

비슷한 접근방식괴 문제를 해결방법을 공유하고 있기 떄문에

 

하나만 잘해도 다른하나도 더쉅게 할수있는게 프로그래밍

 

 

뛰어난 서버개발자를데리고 애플케이션을 만들라고하면 조금만 시간을주면 금방적응해서 잘할수있다

 

 

 

 

내가 만약 개발자를 하고싶다면 무조건 사진안에 있는 기술들을 완벽히

다루는게 좋다

 

개발자 첫시작이라고 볼수있다

ㅍㄹ

 

 

 

A. 프로그래밍의 다양한 분야

01. 컴퓨터 사이언스의 기본기

- 프로그래밍의 여러 영역은 서로 꽤 밀접하게 연결되어 있음 => 비슷한 접근 방식과 문제 해결 방식을 공유하고 있기 때문

- 뛰어난 서버 개발자를 데려와서 애플리케이션 개발을 맡기더라도 조금만 적응하면 곧 잘 하게 되며, Java를 잘 다루는 사람은 C++도 금방 배운다.

- 따라서, 프로그래밍의 기본적인 개념이 튼튼하면 어떤 새로운 기술이나, 언어, 환경이 나오더라도 빠르게 적응할 수 있음

- 컴퓨터 사이언스의 가장 기본이 되는 과목으로는 객체 지향 프로그래밍, 알고리즘, 자료 구조 정도가 있음 => 컴퓨터 사이언스의 선택이 아닌 필수 과목

- 이 외에도 컴퓨터 구조, 운영 체제, 컴파일러, 웹 개발, 데이터베이스, 네트워크 등 다양한 과목이 존재함

02. 소프트웨어 공학

- 개발자는 코딩 외에도 많은 일들을 한다.

- 프로그램을 만든다고 가정 => 어떤 기능을 누구와 언제까지 만들지 정해야 함

- 개발자끼리만 협업하는 것이 아닌 기획자, 디자이너, 마케터 등등과 함께 일을 진행함 => 일의 순서에 따라 협업하는 도중 문제가 생길 수 있음

- 이러한 전반적인 프로세스를 다루는 분야가 ‘소프트웨어 공학’임 => 새로운 제품, 서비스, 도구 등을 만드는 것에 대한 학문. 기획, 제작, 테스트, 출시, 사후관리의 모든 프로세스를 포함한다.

- 기획 : 어떤 것을 만들지 정하는 단계 => 어떻게 하면 기획자가 원하는 것을 개발자에게 정확하게 전달할 수 있을지

- 개발 : 기획한 것을 만드는 단계 => 어떤 것을 만들지, 어떻게 구현할지, 어떻게 분업할지

- 테스트 : 개발이 기획대로 잘 되었는지 확인하는 단계 => 어떻게 소프트웨어의 문제점을 출시 전에 효율적으로 찾아낼 수 있을지

- 배포 : 개발된 제품/서비스를 사용자가 사용하는 단계 => 어떻게 각 사용자의 실행 환경에 맞는 소프트웨어를 잘 배포할 수 있을지

- 유지/보수 : 출시된 서비스를 변화시키는 단계 => 어떻게 하면 만들어진 소프트웨어를 쉽게 변경할 수 있을지

- 결국은 어떻게 하면 이 모든 프로세스가 매끄럽게 진행될 수 있을지 고민하게 됨

- 소프트웨어 공학은 이론에만 머물러 있으면 안 되며 실질적으로 이루어져야 함

03. 프로세스 관리

- 관리자, 기획자, 디자이너, 개발자, 테스터가 의사소통 중 문제 발생 => 협업 방식 고안

- 협업 방식에는 크게 폭포수(waterfall) 방식애자일(agile) 방식이 있음

- 폭포수(Waterfall) 방식 : 각 단계를 완료하고 다음 단계로 넘어가는 고전적인 방식

- 폭포수 방식의 장점 : 이해하기 쉽고 관리하기가 편함

- 폭포수 방식의 단점 : 만들고자 하는 게 복잡해질 경우 각 단계를 한 번에 완벽히 끝내기가 힘들 수 있음 => 프로그램이 복잡하면 의도한 대로 완벽한 전달이 불가함. 의도하지 않은 방향으로 진행해도 완성되어 다음 단계로 넘어가기 전까지는 문제를 발견할 수 없음

- 애자일(Agile) 방식 : agile은 재빠른, 민첩한이라는 의미. 잘못된 방향으로 너무 멀리 가기 전에 재빨리 결과물을 만들어서 미리미리 확인하고 고치면서 진행하는 방식 => 기획자가 자신이 상상한 것과 비슷한지 직접 써보며 의견을 덧붙일 수 있음

- 기능 변경이 유연한 애자일 방식은 서비스든 제품이든 복잡해지고 변화 주기가 짧은 요즘 시대에 더 효율적이고 적합한 협업 방식임 => Scrum이나 Kanban같은 구체적인 실행 방법도 생김

- 애자일 방식의 단점 : 프로그램을 만들어 소통하고 추가로 개발하는 과정이 반복되다보니 폭포수 방식보다 관리하기가 훨씬 복잡함

- 상황에 따라 폭포수 방식과 애자일 방식을 섞어 쓰거나 변형해서 쓰기도 한다.

반응형
반응형

SQL 소개

SQL(Structured Query Language)은 데이터베이스 관리 및 조작을 위한 표준 프로그래밍 언어입니다. 데이터베이스 관리 시스템(DBMS)에서 데이터를 저장, 검색, 수정, 삭제하는 데 주로 사용됩니다.

데이터베이스 관리 시스템(DBMS)

DBMS는 데이터를 효율적으로 저장하고 관리하기 위한 소프트웨어 시스템입니다. SQL을 사용하여 이러한 시스템과 상호 작용하며 데이터를 조작하고 분석합니다.

SQL의 중요성

SQL은 데이터 중심의 현대 세계에서 필수적인 역할을 합니다. 웹 개발, 데이터 분석, 데이터베이스 관리 등 다양한 분야에서 그 중요성이 강조됩니다.

기본 구조

SQL은 다양한 명령문을 통해 데이터베이스와 소통합니다. 이러한 명령문에는 데이터 정의 언어(DDL), 데이터 조작 언어(DML), 데이터 제어 언어(DCL) 등이 포함됩니다.

 

SQL 개요

SQL의 역사

SQL은 1970년대 초 IBM에서 개발되었습니다. 데이터의 관계형 모델을 기반으로 하여, 구조화되고 효율적인 데이터 관리를 가능하게 했습니다. SQL은 데이터베이스 관리를 위한 표준 언어로 널리 채택되었습니다.

SQL의 특징

  • 표준화된 언어: SQL은 ANSI와 ISO에 의해 표준화되었습니다. 이로 인해 다양한 데이터베이스 시스템에서 호환성을 갖습니다.
  • 광범위한 사용: 데이터 관리, 분석, 웹 개발 등 다양한 분야에서 중요한 역할을 합니다.
  • 확장성과 유연성: 다양한 데이터베이스 요구사항에 맞춰 확장할 수 있습니다.

SQL과 다양한 데이터베이스 시스템

SQL은 MySQL, PostgreSQL, SQL Server, Oracle 등 다양한 시스템에서 사용됩니다. 기본 구조와 명령어는 대부분의 시스템에서 일관되게 유지됩니다.

반응형
반응형

조코딩 기술뉴스

네이버 뉴스

 

 

IT/과학 : 네이버 뉴스

모바일, 인터넷, SNS, 통신 등 IT/과학 분야 뉴스 제공

news.naver.com

다음뉴스

 

IT

다음뉴스

news.daum.net

 

 

 

 

 

 

 

 

 

 

 

 

 

https://velog.io/@logbook02/posts

 

반응형

+ Recent posts