분류 전체보기
-
CS50x 2023 - Lecture 8 - HTML, CSS, JavaScriptIT/CS50x 2023 2024. 3. 2. 12:45
TCP/IP TCP/IP는 인터넷상 한 지점에서 다른 지점으로 데이터가 어떻게 전송되어야 하는지, 어떻게 전송되고 있는지/전송되었는지 알려주는 표준 프로토콜이다. TCP(Transmission Control Protocol)는 전송 제어 프로토콜이고, IP(Internet Protocol)은 인터넷 프로토콜이며, 둘을 같이 써서 TCP/IP라고 한다. TCP: 데이터를 순서가 매겨진 패킷들로 분해하여 전송될 수 있게 하며, 분해된 패킷들은 수신 컴퓨터에서 순서대로 재조립된다. 보내지는 데이터가 어떤 유형의 인터넷 서비스에 사용되는지에 따라, 해당 데이터에 포트번호를 할당하는 역할도 한다.(e.g. SMTP(email): 25번포트, HTTP(웹검색): 80번포트...) 이러한 역할들로 데이터 손실이나 손..
-
CS50x 2023 - Lecture 7 - SQLIT/CS50x 2023 2024. 3. 1. 18:56
Processing csv files using Python SQL이지만 앞부분은 파이썬의 남은 부분들을 다루고 있음. 파이썬으로 아래처럼 생긴 csv파일을 읽어내서 간단한 연산을 하는 코드를 짠다. 위 csv파일에서 language 컬럼에 있는 C, Python, Scratch가 각각 몇번 나왔는지 세어주는 것이 아래 코드이다. 3번줄: "favorites.csv" file을 read mode로 읽음 4번줄: 읽어낸 파일을 dictionary 형태로 가져옴 5번줄: 카운트 결과물을 담아낼 빈 dictionary를 만듦 6~11번줄: language 컬럼을 한줄 한줄 읽어내어, 읽어낸 스트링을 favorite에 담고, 이것이 counts의 key value로 있으면 값에 1을 더하고, key value로..
-
CS50x 2023 - Lecture 6 - PythonIT/CS50x 2023 2023. 12. 26. 19:34
파이썬은 컴파일러로 실행되는 C와는 대조적으로 인터프리터(Interpreter)로 실행된다. 컴파일러는 전체 소스 코드를 한 번에 번역하여 실행 파일로 만드는 반면, 인터프리터는 소스 코드를 한 줄씩 읽어들여 번역하고 즉시 실행한다는 차이가 있다. 그래서 파이썬을 돌릴때는 C에서의 '> make 파일명' 처럼 별도의 컴파일을 하지 않아도 된다. Python과 C의 소소한(하지만 강력한) 문법적 차이들: 파이썬에서의 데이터 타입에는 bool, float, int, str 등이 있으며, C에서 사용되었던 long, double등은 없다. 통일해서 쓴다. printf 대신 print를 쓰며, print 구문에 parameter를 dynamic하게 받는 syntax는 다음과 같다. > printf(f"hello..
-
CS50x 2023 - Lecture 5 - Data StructuresIT/CS50x 2023 2023. 12. 25. 00:25
enqueue: queue에 추가시키는것 dequeue: queue에서 빼는것 FIFO(First in first out): 먼저 들어간값이 먼저 나옴 LIFO(Last in first out): 마지막으로 들어간값이 먼저 나옴. (기존것들은 계속 쌓인다는 문제가 있음) Resizing Arrays 아래 코드는 array를 resize하는 예시이다. 6번째 줄에서 list라는 이름의 array에 integer 3개가 들어가는 memory를 malloc펑션을 이용하여 allocation해주고 있다. 그 아래 7~10번째에서는 memory allocation error의 방지를 위한 안전장치를 설정해두었다. (return 1하여 프로그램을 종료함) 12~14번째 줄에서 list란 이름의 각 자리에 정수 1,..
-
CS50x 2023 - Lecture 4 - MemoryIT/CS50x 2023 2023. 12. 24. 00:34
Hexadecimal(16진수) 16진수(Hexadecimal)는 0부터 9까지의 숫자와 A부터 F까지의 알파벳으로 이루어진 숫자 체계이다. 2진수와의 변환에 유용하며, 컴퓨터 메모리 주소와 색상 코드 등을 표현하는 데에 자주 사용된다. 10진법과의 혼동을 피하기 위해 앞에 0X를 붙여서 표현하는것이 관례이다. (e.g. 0X10는 10진법으로 16임) 6번째 라인에서 보다시피 format을 %p로 하고 출력하려는 n앞에 &를 붙이면, 저 integer가 현재 저 c file을 러닝하는 space의 메모리의 주소값을 hex형태로 출력할 수 있다. pointer 포인터란 C언어에서 쓰이는 개념으로, 변수 등의 메모리상 주소를 나타낸다. 아래 예시의 6번째 줄은 int n의 주소를 *p로 받는 모습이다. 변..
-
CS50x 2023 - Lecture 3 - AlgorithmsIT/CS50x 2023 2023. 12. 23. 19:24
Linear/Binary search Linear search: 리스트나 배열에서 원하는 값을 찾기 위해 처음부터 끝까지 순차적으로 탐색하는 방법 Binary search: 오름차순으로 정렬된 리스트에서 특정 값을 찾는 알고리즘으로, 중간 값과 비교하여 검색 범위를 반으로 줄여가면서 값을 찾아나가는 방법 Running time 아래 표기법들이 알고리즘의 성능을 분석하고 비교하는 데에 사용되는데, 알고리즘의 실행 시간이 입력 크기에 따라 어떻게 증가하는지에 대한 예측하는것임. Big O가 일반적으로 가장 널리 사용되는 표기법이다. Big O 표기법 (O 표기법): 알고리즘의 시간 복잡도의 상한선을 나타냄(알고리즘이 실행될 때 필요한 최대시간/worst case) Omega 표기법 (Ω 표기법): 알고리즘의..
-
CS50x 2023 - Lecture 2 - ArraysIT/CS50x 2023 2023. 12. 23. 01:08
Compiling 사실 이 make 라는 컴파일 명령어를 매뉴얼하게 풀면 아래와 같다. clang 컴파일러를 써서 -o(for output) 옵션으로 hello를 hello.c로 컴파일 한다는것이고, cs50 library를 쓴다는 것이다. 참고로 저렇게 hello.c라고 명명해주지 않으면 그냥 디폴트로 a.out이란 파일이 생긴다.(a for assemble) Compiling의 4단계는 다음과 같다. 1. preprocessing: 코드에서 가장 먼저 처리해야될 부분을 찾아 처리하는것. #등 특수문자로 시작되는 헤더파일 등을 코드에서 찾아 실제 위치에서 가져온 뒤, 현재 작업중인 파일로 복붙한다. 그래서 해당 코드가 헤더파일(대체로 library)에서 쓰는 함수들을 온전히 쓸 수있도록. 이렇게 복붙하..
-
CS50x 2023 - Lecture 1 - CIT/CS50x 2023 2023. 12. 22. 00:30
Introduction / From Scratch to C Compiling Compiling이란, 사람이 작성한 코드인 source code를 컴퓨터가 읽을수 있는 binary형태인 machine 코드로 바꿔주는 작업 Correctness, Design, Style Visual Studio Code / Hello world visual studio code로 hello.c 파일을 만들고, make 해서 compile된 프로그램이 같은이름으로 생길걸 확인. 실제 실행은 이 컴파일된 위의 파일(프로그램)로 됨. Libraries, Documentation stdio.h (Standard input/output) 예시로 library개념을 설명. 이미 짜놓아진 코드를 library로 불러오는거임. 저 예시의..