Computer Science 387

드림코딩 엘리 | 서버 사이드 랜더링 SPA, CSR, SSR, SSG, TTV, TTI

서버사이드 렌더링 (개발자라면 상식으로 알고 있어야 하는 개념 정리 ⭐️) - YouTube 클라이언트 사이드 렌더링 CSR 서버 사이드 렌더링 SSR 웹의 역사 1990s 까지는 Static Sites였다. 서버에 이미 배포되어있는 HTML을 보여주는 형식 다른 링크를 클릭하면, 다시 서버에서 받아와서 화면 전체를 업데이트 해야했음 1996년 문서 내에서 다른 문서를 담는 iframe이 도입되었음 부분적으로 업데이트하는 것이 가능해짐 1998년 XMLHttpRequest JSON 형태로 가볍게 필요한 데이터만을 받아올 수 있다. 이를 JS에서 Html으로 변환해준다. 2005년 AJAX로 공식화됨 이것이 SPA Single Page Application 사용자가 한 페이지에 머무르면서 부분적으로만 업데..

Computer Science 2022.04.07

드림코딩 엘리 | 코드 퀄리티를 높이는 방법! DRY, YAGNI, KISS

코딩 잘하는 팁 세가지 (이걸 알면 코드가 깔끔해 진다) - YouTube 1. DRY DRY VS WET DRY Don't Repeat Yourself WET Waste Everyone's Time / Write Everything Twice / Write Every Time Every piece of knowledge must have a single, unambiguous, authoritative representation within a system - The Pragmatic Programmer 코드를 바라볼 때 코드나 기능, 로직 등이 단 한 곳에서 명확하고 신뢰할 수 있도록 존재해야 한다. DRY is about the duplication of knowledge of intent. It'..

Computer Science 2022.04.06

드림코딩 엘리 | 코드리뷰란? 코드리뷰에서 중요한 것은 무엇일까?

코딩 실력 향상을 위한 코드 리뷰? - YouTube 코드리뷰는 개발자로 성장하는 데 매우 중요한 요소! 코드 리뷰는 어떻게 하는 것이고, 코드 리뷰에서는 어떤 점들이 중요할까? 코드리뷰란 팀 구성원이 기능을 구현하거나 문제를 수정했을 때 수정된 코드 사항을 바로 제품에 반영하는 것과 반대되는 개념이다. 코드리뷰를 진행하는 경우 내가 작성한 코드를 잘 읽을 수 있는 선임자, 코드 오너에게 코드 리뷰를 요청하게 된다. 코드 리뷰를 진행한 뒤에야 코드를 마스터 브랜치, 제품에 포함할 수 있도록 한다. 코드 리뷰가 중요한 이유 1. 더 좋은 코드 퀄리티를 보장하기 위함 2. 결점을 초기에 발견할 수 있다. 3. 배움과 지식을 전파한다. 4. 상호간의 책임감을 갖고 일할 수 있다. 5. 효율적인 검증이 가능하다..

Computer Science 2022.04.06

참고 자료 | 함수형 언어로 imperative language interpreter 만들기

c0deful/haskal-interpreter: simple imperative language interpreter in Haskell (github.com) GitHub - c0deful/haskal-interpreter: simple imperative language interpreter in Haskell simple imperative language interpreter in Haskell. Contribute to c0deful/haskal-interpreter development by creating an account on GitHub. github.com 여기 보면, memory, env, error, type, main에 대한 내용도 잘 나와있다. Writing an Interp..

한 권으로 읽는 컴퓨터 구조와 프로그래밍 | 2장 전자 회로의 조합 논리

2장 - 전자 회로의 조합 논리 - 컴퓨터는 어떤 논리로 비트를 다루는가 비트 초기 계산 장치 하드웨어 : 비트에 대해 동작하는 모든 물리적인 장치 -> 이 중 조합 논리 combinational logic을 구현한 하드웨어 디지털 컴퓨터의 사례 아날로그와 디지털의 차이 아날로그 analog : 연속적인 것. 실수를 표현할 수 있음 디지털 digital : 이산적 discrete. 하나하나 다른 존재로 구분된다. 하드웨어에서 크기가 중요 하드웨어에서는 전자를 움직이는 물리적 한계 때문에, 부품을 가능한 한 가깝게 위치시키는 것이 중요하다. 그래서 컴퓨터에서는 작게 만들려고 함. 컴퓨팅 장치의 역사는 하드웨어를 작게 만들려는 노력으로 점철되어 있다. 디지털을 사용하면 더 안정 잡음 내성을 갖는 디지털 회로..

Data Structure | Zipper Tree (feat. 함수형 언어)

https://en.wikipedia.org/wiki/Zipper_(data_structure) Zipper (data structure) - Wikipedia A zipper is a technique of representing an aggregate data structure so that it is convenient for writing programs that traverse the structure arbitrarily and update its contents, especially in purely functional programming languages. The zipper was describ en.wikipedia.org 목표 * Zipper 트리 구조 이해 * 그림 / 코드로 표현..

한 권으로 읽는 컴퓨터 구조와 프로그래밍 | 1장 컴퓨터 내부의 언어 체계

들어가며 - 정확한 문법을 파고들기보다는, 컴퓨터 세계에 있는 여러 문제와 해법을 살펴본다. - 코딩 : 기계적인 활동? - 프로그래밍 : 문제를 관찰하고 해법을 결정 - 엔지니어링 : - 컴퓨터과학 : 계산에 대해 연구하는 학문 - 컴퓨터 과학의 영역 : 사용자 > 어플리케이션 프로그래밍 > 시스템 프로그래밍 > 컴퓨터 하드웨어 > 논리 설계 > 회로 설계 > 기초 과학 : 시스템 프로그래밍 : 하드웨어와의 상호작용 : 논리 : 컴퓨터 하드웨어는 논리로 표현됨. 논리는 전자 회로로부터 만들어진다. part 1. 컴퓨터 하드웨어 part 2. 하드웨어에서 소프트웨어가 작동하는 방식 part 3. 프로그래밍 기술 1장. 컴퓨터 내부의 언어 체계 언어란 무엇인가 - 기호가 들어갈 상자 - 상자에 들어갈 기호..

TDD( Test Driven Development )이란?

참고) 테스트 코드와 TDD 🧪(feat. 프론트엔드, 백엔드를 위한 테스트 코드) - YouTube 서론 개발자에게 기능에 해당하는 테스트 작성하는 게 매우 중요한 역량 - 기능 구현 코드 - 코드를 작성하면 된다. => 제대로 구현했는지 어떻게 검증할까? 테스트 코드 테스트 코드를 통해 향상할 수 있는지 리팩토링 기능 구현 + 테스트 작성 본론 > What is Testing 소프트웨어 테스팅 - 제품/서비스의 품질을 확인하고 - 소프트웨어의 버그를 검토 - 제품이 예상하는 대로 동작하는지 확인 > Test의 프로세스 - source code - test code : requirement가 있어야 함 - 패스 여부 -> 리팩토링 > TDD Test-driven development 코드 작성 전에 테..

OCaml Tutorial | String 다루기

- 내가 원하는 것 - 파이썬처럼 f"{variable_name}" + "HI" + " " 하기 OCAML Tutorial 18/33: The String Module in OCAML - YouTube # String.length "String";; - : int = 6 # let s = "we are checking the String module";; val s : string = "we are checking the String module" # String.length s;; - : int = 33 # String.sub s 3 3 ;; - : string = "are" # String.sub s 3 12;; - : string = "are checking" # "this"^" "^"is";; -..