본문 바로가기

Development20

데이터 파이프라인의 흐름 컴퓨터 과학에서 파이프라인은 한 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 형태로 연결된 구조를 가리킨다. 데이터 파이프라인의 기본적인 흐름 필요 데이터 요구사항 확인, 어떤 데이터를 수집할지 선정 데이터가 왜 필요한지, 어느 시점에 수집 할 지 있는지 파악 데이터 파이프라인을 구축하기 전에 어떤 데이터를 수집해야 하는지목적과 방향을 정하는 것 데이터 수집 데이터 전처리 저장 데이터 시각화 분석 데이터 파이프라인 아키택쳐 아키택쳐 만드는 툴을 이용해 처음으로 만들어봤는데 여간 힘든게 아니다... 하지말까.. 아키택쳐에서 쓰이는 서비스들은 따로 공부하면서 업로드 할 예정이다. 데이터 파이프 라인 구성 방안 파이프라인을 설계하기 앞서 고려해야하는 사항 회사내의 데이터적 요구사항에 대한 빠른대응.. 2021. 12. 29.
[CS50] 6강 자료구조 하버드 cs50 강의의 최종장 강의의 시작은 malloc과 포인터에 대한 복습으로 시작하고, malloc으로 선언한 배열의 크기를 조정할 수 있는 realloc 사용하는 방법을 배운다. // tmp라는 포인터에 기존에 정의한 list 배열에 // int크기(4byte) 5개의 메모리주소를 재 정의후 기존 배열 값들을 복사한다. int *tmp = realloc(list, 5*sizeof(int)); 연결 리스트 일반적으로 자료 구조란 C나 C++, 자바, 파이썬에 있는 프로그래밍 구조일 뿐이다. 컴퓨터 메모리에 정보를 각기 다른 방법으로 저장할 수 있도록 해준다. 배열에서는 각 인덱스의 값이 메모리상에 나란히 붙어서 저장되어 있다. 그래서 중간중간 데이터를 추가하려 할 때 realloc으로 배열의 길이를.. 2021. 12. 28.
[CS50] 5강 메모리 메모리 주소 컴퓨터는 숫자를 10진수나 2진수가 아닌 16진수로 표기할 때가 많다. 컴퓨터에서 데이터를 처리하기 위해 16진수를 사용할 때 장점이 있기 때문이다. 이미지를 표현할 때 RGB형태로 데이터를 갖고 있는데 css를 다룰 때 한 번쯤은 봤을 #FFFFFF 문자열이다. 이것이 의미하는것이 16진수들인데 R : G : B = FF : FF : FF 인 것이다. 컴퓨터는 8개 비트가 모인 바이트 단위로 정보를 표현한다. 2개의 16진수는 1byte의 2진수로 변환되기 때문에 정보를 표현하기 매우 유용하다. 앞서 16진수를 말한 이유는 메모리의 주소는 16진수로 표현한다. 메모리에 수많은 주소를 표현하기에 아주 적절한 단위일 것이다. 포인터 C에서 포인터를 사용할 때는 아래처럼 변수명 앞에 ' * '를.. 2021. 12. 23.
[CS50] 제 4강 알고리즘 강의에서는 알고리즘을 배우면서 중요한 것은 알고리즘의 흐름, 개념을 잘 얻어가는 것이라고 한다. 강의는 경험인 것이고 익힘은 계속 적용해 나가면서 익히는 것이다. 검색 알고리즘 메모리를 바이트의 격자 배열로 취급하면 우리가 원하는 대로 사용할 수 있다. 서랍을 열어서 원하는 물건을 찾는다고 한다면 우리는 서랍을 한 번에 하나씩 열어가면서 찾을 것이다. 정렬되어있는 것을 알지 못하기 때문에 서랍을 한 개씩 여는 방법을 사용한다. - 선형 검색 혹은 정렬되어있는 것을 알고 있다면 반 씩 쪼개서 찾아가는 방법을 사용할 수 있다. - 이진 검색 이진 검색은 처음에 강의에서 알려준 전화번호부에서 이름 찾는 방식과 동일한 방법이다. 검색해야 하는 조건을 반씩 줄일 수 있기 때문에 선형 검색보다 높은 효율을 낼 수 .. 2021. 12. 20.
[CS50] 제 3-2강 배열 이전 3-1에서는 배열이 어떤 역할을 하게 맡게 될지 알게 되었다면 3-2강에서는 직접 배열을 배워본다. 문자열과 배열 자료형들은 각각 할당된 메모리를 갖고 있다. 하드웨어적으로 메모리를 쉽게 얘기하면 여러 바이트들의 묶음이라고 설명한다. char타입의 메모리는 메모리 안의 저장공간인 수많은 작은 칸 중 하나를 요청한다. 각 칸은 어떤 방식으로든 0과 1을 표현하고 있을 것이다. 이제 실제로 코드를 작성해본다. "HI!"를 출력하고 싶은데 C는 기본적으로 문자열(string)이라는 자료형이 없다. 그래서 표현 할 수 있는 코드는 이렇게 작성될 수 있다. char c1 = 'H'; char c2 = 'I'; char c3 = '!'; 이런 코드는 디자인적으로도, 메모리 저장 방식에도 문제가 있다. 또 같은.. 2021. 12. 20.
[CS50] 제 3-1강 배열 강의는 3강으로 되어있지만 내용이 길어 두 편으로 나눈다. 3-1의 내용은 이전에 배웠던 컴파일의 흐름을 좀 더 자세하게 익히고 디버깅하는 방법, 그리고 코드의 디자인이 중요한 이유, 러버덕이 무엇인지를 간단히 설명한다. 컴파일의 흐름과 코드의 디자인이 중요한 이유에 대해 알고나서 배열에 대해 강의를 시작하는데 키야아아아! 기가막힌다. 한낱 배열이 아닌 배열이 킹갓코드임을 알 수 있게 해주는, 메모리에서 저장방식과 알고리즘의 기본 초석이 되는 중요한 배열이라는 것이다. 이것이 하버드의 강의인가? 나도 배웠는데 기억을 못하는 걸까? 혹은 내가 제대로 공부하지 않은걸까? 아마 셋 모두 해당하지 않을까 싶고 반성해본다. 일단 본문에서 다루는 내용은 배열이 왜 중요한 지 알 수 있게끔 해주는 컴파일의 흐름, 디.. 2021. 12. 19.