본문 바로가기

분류 전체보기38

[CS50] 제 3-2강 배열 이전 3-1에서는 배열이 어떤 역할을 하게 맡게 될지 알게 되었다면 3-2강에서는 직접 배열을 배워본다. 문자열과 배열 자료형들은 각각 할당된 메모리를 갖고 있다. 하드웨어적으로 메모리를 쉽게 얘기하면 여러 바이트들의 묶음이라고 설명한다. char타입의 메모리는 메모리 안의 저장공간인 수많은 작은 칸 중 하나를 요청한다. 각 칸은 어떤 방식으로든 0과 1을 표현하고 있을 것이다. 이제 실제로 코드를 작성해본다. "HI!"를 출력하고 싶은데 C는 기본적으로 문자열(string)이라는 자료형이 없다. 그래서 표현 할 수 있는 코드는 이렇게 작성될 수 있다. char c1 = 'H'; char c2 = 'I'; char c3 = '!'; 이런 코드는 디자인적으로도, 메모리 저장 방식에도 문제가 있다. 또 같은.. 2021. 12. 20.
[2021.12.18] 반성하자 cs강의 이력 수정 헉헉 토요일이라고 왜 들뜬걸까..? 최소한의 공부라고 생각했던 CS강의를 듣고 정리하다 잠들었다. 아침에 비로소 어제 한 일을 적는 나를 반성해본다.. 2021. 12. 19.
[CS50] 제 3-1강 배열 강의는 3강으로 되어있지만 내용이 길어 두 편으로 나눈다. 3-1의 내용은 이전에 배웠던 컴파일의 흐름을 좀 더 자세하게 익히고 디버깅하는 방법, 그리고 코드의 디자인이 중요한 이유, 러버덕이 무엇인지를 간단히 설명한다. 컴파일의 흐름과 코드의 디자인이 중요한 이유에 대해 알고나서 배열에 대해 강의를 시작하는데 키야아아아! 기가막힌다. 한낱 배열이 아닌 배열이 킹갓코드임을 알 수 있게 해주는, 메모리에서 저장방식과 알고리즘의 기본 초석이 되는 중요한 배열이라는 것이다. 이것이 하버드의 강의인가? 나도 배웠는데 기억을 못하는 걸까? 혹은 내가 제대로 공부하지 않은걸까? 아마 셋 모두 해당하지 않을까 싶고 반성해본다. 일단 본문에서 다루는 내용은 배열이 왜 중요한 지 알 수 있게끔 해주는 컴파일의 흐름, 디.. 2021. 12. 19.
[2021.12.17 ] 루비 bundle명령어 버전 에러, github 비밀번호 지원중단 C기초 2강 포트 폴리오 ppt, pdf, 수정을 마무리 했다. 기존 깃허브 read.me 파일들 정리를 90퍼센트 완료했다. 병원갈 일이 생겨 병원을 갔다왔다. bundle 명령어 버전 에러 해결 GitHub 비밀번호 지원이 중단되서 새로운 방식으로 인증을 해야한다. Git Push 에러 jekyll bundle 버전 에러 해결하기 포트폴리오를 만들고 이력서 제작을 위해 여기저기 알아보다가 우선 깃헙에서 지원하는 .io를 사용하기로 했고 그 과정에서 정적 페이지를 만드는데 파이썬 루비를 알게 되었고, jekyll serve 라는 명령어를 사용해야하는데 내게 실행되고 있는 bundle과 페이지 작성에 쓰인 bundle과의 호환이 맞지 않는다고 에러가 발생했다. 내가 사용하는 번들이 오히려 높은 버전이라 .. 2021. 12. 18.
[CS50] 제 2강 - C언어 CS50 2강에서는 C언어 기초를 배운다. 코딩에 사용되는 언어는 여러 가지가 있지만 C언어를 가장 기초적으로 알려준다. 1강에서 배운 알고리즘 기초를 어떻게 컴퓨터가 인간의 언어를 받아들이고 해석하는지 알려준다. 소스 코드 -> 번역을 수행하는 알고리즘 프로그램 = 컴파일러 -> 머신 코드 (2진법) 인간이 작성하는 소스코드는 컴파일러라는 프로그램이 기계어로서 최종적으로는 2진법 문장으로 변환시켜준다. "clang" 은 코드를 컴파일하는 프로그램의 이름이다. 어셈블리어를 출력하지만 어쨌든 머신 코드이다. 강의 중간중간 교수님은 학생들에게 질문이 있냐고 묻는데 #include int main (void) { printf("hello world"); } 코드가 이렇게 작성되어있었고, 질문 중 하나가 두 번.. 2021. 12. 18.
[21.12.16] CS , 포트포워딩 CS50강의 제 1강 정리 이전에 만들어 두었던 개인적인 포트폴리오 ppt를 수정 개발은 열심히 했었는데 ppt를 너무 대충 만들고 방치해둔게 아까워서 수정하고 다시 만들고 있다. VM웨어를 사용하고 지금 공유기에서 고정IP를 사용하지 않다보니 IP가 변경되었다. 그걸 모르고 이것저것 건들다가 가상머신에서 띄운 리눅스서버의 IP게이트웨이를 잘못 건드려서 인터넷이 연결이 안되서 고생했다. 덕분에 포트포워딩에 대해 한번 더 이해하게 됐고 인바운딩, 아웃바인딩에 대해 다시 공부할 수 있었다. 포트 포워딩은 컴퓨터 네트워크에서 패킷이 라우터나 방화벽과 같은 네트워크 게이트웨이를 가로지르는 동안 하나의 IP 주소와 포트 번호 결합의 통신 요청을 다른 곳으로 넘겨주는 네트워크 주소 변환(NAT)의 응용이다. - 출.. 2021. 12. 16.