분류 전체보기 477

컴퓨터과학이 여는 세계(이광근, 2015) 노트

컴퓨터과학이 여는 세계 - YES24 컴퓨터과학이 여는 세계 - YES24 컴퓨터/소프트웨어의 근본을 알려주는 교양과학서로 디지털 문명을 탄생시킨 동시대 청년 과학도 이야기이다. 정보이론, 암호, 개인인증 등 컴퓨터과학이 보여주는 풍경 아래 흐르는, 원천 아 www.yes24.com 고민할 부분 1. 알게된 점 2. 느낀 점 3. 떠오르는 질문들 01. 마음의 도구 02. 400년의 축적 컴퓨터의 디자인이 출현한 원조 논문의 배경과 내용(p.20) 컴퓨터는 20세기 수학자들의 큰 꿈이 철저하게 좌절되는 과정에서 나온 부산물이었다(p.25) 도대체 컴퓨터의 모델을 튜링기계라 부르고, 컴퓨터 분야의 노벨상을 튜링상이라고 부르는 연유는 뭘까? (p.27) 크루크 궤델의 불완전성 정리, '기계적인 방식만으론 수..

람다 대수 Lambda Calculus란 무엇인가? (ft. Church Encodings)

(참고) What is Lambda Calculus? (ft. Church Encodings) - YouTube what is lambda calculus 람다 계산법이란, 계산을 이해하는 한 가지 수학적인 모델이다. 람다 계산법은 3개의 간단한 규칙으로 구성된다. 람다 계산법은 Ocaml, Haskel 같은 함수형 프로그래밍 언어에 큰 영향을 주었다. lambda calculus의 규칙들 1. Variable 변수 x, y, z와 같은 변수를 둔다. 2. Abstraction 추상화 λ 람다 기호와 함께 무언가를 함수로 정의한다. 함수의 유일한 기본 데이터 형식은 함수이다. λ를 사용하는 기본적인 방식은 λ parameter.return 형태이다. 즉, λx.x는 f(x) = x를 표현하는 방식이며, ..

노마드코더 ReactJS | #3 State

#3 State 준비물 #3.0 Understanding State step 1. 바인딩 Total click : {counter} Click me step 2. UI 업데이트 function render(){ ReactDOM.render(, root);// 페이지에 위치시키기 } React.JS는 딱 변경된 부분만 업데이트된다. => 이걸 이용해서 인터렉티브한 웹을 만들 수 있다. #3.1 setState part One 1. 컴포넌트를 추가하고 싶을 때 {} 안에 넣으면 됨 2. UI를 업데이트하고 싶다면, render()를 호출할 것 리랜더링을 하는 더 효율적인 방식이 있을까? 어디에 데이터를 받을 수 있을까? 리액트 js에는 적절한 툴이 있음. const data = React.useState()..

한 권으로 읽는 컴퓨터 구조와 프로그래밍 | 3장 메모리와 디스크의 핵심 : 순차 논리

들어가며 순차 논리 Sequential Logic을 이용해서 "기억"이 생긴다 순차 논리 Sequential Logic은 "시간"을 만들어내고 "과거"를 기억하는 회로이다. "기억"이라는 목적을 달성하기 위해 어떤 기술이 만들어졌을까? 그 역사를 추적해보자. 시간 표현과 상태 기억 주기 함수를 이용하면 시간을 측정할 수 있다. 컴퓨터에서도 시간을 측정하기 위한 주기적인 전기 신호가 필요한데, 어떻게 신호를 만들어낼까? 발진자 osciliator 인버터(NOT)를 사용한 트릭 0이 들어갔다가 인버터를 지나 1이 되고 다시 1이 들어가면 인버터를 지나 0이 되고 를 무한 반복하는 feedback loop 결국 0과 1 사이를 무한히 oscillate (진동한다) 한다 크리스탈 발진자가 발진자를 만드는 효율적..

Unit Test | 유닛 테스트를 통해 신뢰할 수 있는 프로그램 만들기

참고 50. unittest - 단위테스트 ## 1. 테스트와 단위테스트 - 테스트란? - 소프트웨어가 요구사항에 의해 개발된 산출물이 요구사항과 부합하는지 여부를 검증하기 위한 작업 - 단위 테스트란? - 모듈 ... wikidocs.net [파이썬] 단위 테스트의 기본 (unittest) Engineering Blog by Dale Seo www.daleseo.com 컴공 수업을 들으면서, 신뢰할 수 있는 프로그램을 만드는 것이 중요하다는 걸 배웠다. 이를 위한 주요한 방법이 단위테스트인데, 안그래도 낯선 언어인 OCaml로 하자니 잘 손이 가지 않았다. 그래서 익숙한 언어인 파이썬으로 시작해보려고 한다!! unittest 단위테스트 단위테스트는 모듈이나 개별 코드가 예상대로 작동하는지 확인하는 과정..

드림코딩 엘리 | 어떤 기준으로 회사를 선택해야 할까?

내가 구글보다 스타트업을 선택한 이유 | 회사를 선택하는 방법 (feat. 플랫폼잉글리시) - YouTube #1 무엇을 만드는가? 회사에서 어떤 제품을 만들고 있는가? 구글 - 구글맵 스타트업 - 쉽게 디자인할 수 있는 소프트웨어 구글은 유지보수 + 기능 추가 처음부터 개발을 시작하는 건 드문 일이다. #2 어떤 스택을 사용하는가? 내가 잘 할 수 있는 스택인지 경력에 추가하고 싶은 스택인지 -> 마이너한 스택을 사용하고 있는 경우, 나중에 이직에 어려움을 겪을 수 있음 #3 누구와 일하는가? 팀원, 동료 개발 커뮤니티, 오픈챗 면접을 볼 때 확인할 수 있다. 면접을 보면서 회사를 판단할 수 있기도 하다. #4 어떻게 일하는가? 일하는 방식, 프로세스를 배워갈 수 있다. 개발 블로그가 있는지 확인해볼 ..

Computer Science 2022.04.08

한 권으로 읽는 컴퓨터 구조와 프로그래밍 | 15장 훌륭한 프로그래머가 되기 위한 팁과 경험담

들어가며 프로그래머가 된다는 것에 대한 철학적인 문제와 실용적인 문제 가치 제안 "내가 가치를 더하고 있는가?" 사이드 프로젝트를 통해 다양한 기술을 잘 배워두기 도구 만들기 - 가능하다면 기존 도구를 개선할 것 코드를 배포하는 생태계에 가치를 더하면서 생태계를 더럽히지 말 것 rule of least astonishment : 사용자 인터페이스/소프트웨어가 가능한 한 사람들의 예상과 다른 결과를 내놓지 말아야한다는 규칙 소프트웨어 개발의 발자취 간추린 역사 UNIX 운영체제 : 최소주의와 모듈화 => 첫번째 이식 가능한 운영체제가 되었음. PC : 1980년대 중반부터. FOSS Free and Open Source Software Copyleft : 다른 사람이 소프트웨어를 자유롭게 변경할 수 있도록..

드림코딩 엘리 | 서버 사이드 랜더링 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