분류 전체보기 38

in-memory DB는 왜 더 빠를까

in-memory DB는 disk-based DB와 달리 말 그대로 메모리에 데이터를 저장한다. 외부 저장 장치에 데이터를 저장하지 않고 메모리에서 데이터를 읽고 쓴다. 메모리 디스크 간 병목이 없기 때문에 disk-based DB보다 훨씬 속도가 빠르다. 외부 저장 장치에 데이터를 저장하여 사용할 경우에는 왜 느린가? 외부 저장 장치에 있는 데이터를 읽고자 할 경우, 해당 데이터를 곧바로 사용할 수 없다. 데이터를 읽어서 메모리에 올리고, 메모리에 올라간 데이터를 읽어서 사용할 수 있다. (약간 옆으로 새는 이야기라서 회색 처리) 만약 HDD를 외부 저장 장치로 사용한다면 액츄에이터가 액츄에이터 암을 움직이고, 액츄에이터 암의 끝에 달려 있는 헤드를 통해 데이터를 읽고 쓰게 된다. in-memory D..

프로그래밍 2020.04.26

[단상] 코로나 바이러스 이후의 변화

자율성 : good to have 에서 must have로 한글과 영어를 섞어 쓰는 걸 썩 좋아하지 않는데 말하고자 하는 바를 간결하게 전달하기가 까다로워 그냥 영어로 썼다. 코로나 바이러스가 창궐하기 전까지 자율성은 있으면 좋은 것에 가까웠다. 남이 시키지 않아도 스스로 자신의 상태를 점검하고, 업무부터 취미까지 생활 전반에 대한 계획을 짜고, 주도적으로 제안하고 행동하는 것. 오프라인에는 각종 세미나, 컨퍼런스가 넘쳐난다. 웹에는 더 많은 자료가 있다. 적당한 사양의 컴퓨터만 있으면 웹에 있는 방대한 지식을 얻을 수 있다. 수많은 유명 대학교의 강의를 무료로 들을 수도 있고, 현직 도수치료사의 생생한 근육 설명을 들을 수도 있다. 시간과 의지만 있으면 소위 "가성비" 좋게 자기 계발을 할 수 있다. ..

일상 2020.04.21

[토막팁] global gitignore & MySQL charset default 설정

1. global gitignore git을 써본 적이 있다면 .gitignore의 존재를 알 것이다. .gitignore에 추가된(작성된) 디렉토리들은 말 그대로 무시되며, untracked files에도 내역이 보이지 않는다. http://gitignore.io/ 같은 사이트를 쓰면 편리하다. 운영체제와 프로그래밍 언어 등을 고르면 적당한 .gitignore를 손쉽게 만들 수 있다. 그런데, global gitignore도 존재한다. https://help.github.com/en/github/using-git/ignoring-files#configuring-ignored-files-for-all-repositories-on-your-computer You can also create a global..

프로그래밍 2020.04.18

[토막팁] 깃헙 빨간색 하이라이팅의 정체

sql 파일을 깃헙에 올렸는데, 다른 컬럼은 괜찮은데 timestamp라는 컬럼만 빨갛게 표시가 되었다. 예약어(reserved word)일 경우 빨간색으로 하이라이팅이 되는데, 항상 정확한 건 아니다. 예약어: 프로그래밍 언어가 이미 문법적인 의미로 사용하고 있기 때문에 식별자로 사용할 수 없는 단어 실제로 예약어가 될 수 없는 위치에 사용되어, 예약어로 동작할 수 없음에도 불구하고 하이라이터가 빨갛게 표시를 할 수도 있기 때문이다. 예를 들어 for 같은 경우 대부분의 프로그래밍 언어에서 예약어이다. 하지만 주석에 있는 for가 빨간색으로 칠해진다면? 주석은 당연히 무시되므로 하이라이팅이 되었다고 해서 for를 주석에 못 쓰는 건 아니다.

프로그래밍 2020.04.16

HTTP란 무엇인가

HTTP란 무엇인가? HTTP는 HyperText Transfer Protocol의 약자이다. 프로토콜은 컴퓨터와 컴퓨터가 통신을 할 때 지켜야 할 절차나 규약이다. HTTP는 월드 와이드 웹에서 정보를 주고받을 수 있는 규약이다. 클라이언트 PC의 웹 브라우저, 그리고 웹 서버는 HTTP 프로토콜을 사용하여 정보를 주고 받는다. 이때 이 주고받는 정보들을 HTTP 메시지라고 부른다. HTTP 메시지는 요청(Request)과 응답(Response) 두 가지 형태가 있다. HTTP 메시지의 구성 요소 - 요청 정보 행(request line) / 응답 정보 행(status line) : 메세지의 종류 또는 상태를 표시한다. Ex) GET /example/something.html HTTP/1.1 Ex2) ..

프로그래밍 2020.03.24

body-parser가 필요한 이유

body-parser가 필요한 이유 작년에 토이 프로젝트로 express를 활용한 웹 앱을 만들면서, "프로그래밍을 배운지도 반 년은 되었으니 예전보다 역시 작업 속도가 빨라졌네" 하며 조금 기분 좋아했었는데, body-parser 때문에 거하게 삽질을 하고 나서 반성하는 시간을 가진 적이 있다. 분명히 클라이언트 쪽에서 서버 쪽으로 json을 잘 보내주는데, 정작 서버 쪽에서는 undefined가 들어오는 상황이었다. app.get('/something', (req, res) => { console.log(req.body) // undefined }) 어느 부분의 로직이 잘못된 건지 몇 번을 코드를 뒤적거렸다. 뭔가 이상해서 예전에 만들었던 토이 프로젝트의 코드를 열어서 어떤 차이점이 있는지 살펴보았다..

프로그래밍 2020.03.19

Big-O 표기법

칸아카데미에서 점근적 표기법 강의를 보고 정리했다. Big-O 표기법 알고리즘이 얼마나 오래 걸리는지를 표현하는 대표적인 방법 중 하나이다. 알고리즘의 실행 시간은 컴퓨터가 코드를 실행하는 속도에 의존한다. 그리고 이 속도는 컴퓨터 자체의 성능, 사용된 언어, 컴파일러 등에 의존적이다. 따라서 단순히 "이 알고리즘은 30분 쯤 걸려요" 같은 말은 할 수가 없는 것이다. 입력값의 크기를 n이라고 할 때, 알고리즘을 실행하기 위한 연산의 횟수를 n에 대한 식, 즉 일종의 함수로 표현할 수 있다. 알고리즘의 실행 시간을 입력값의 크기에 대한 함숫값으로 생각할 수 있는 것이다. 이 때 입력값의 크기에 따라 함숫값이 얼마나 빨리 커지는지를 실행시간의 성장률이라고 부른다. 성장률을 파악할 때, 계수와 상수는 불필요..

프로그래밍 2020.03.19

sequelize 마이그레이션 버그를 고쳐 보자.

이 글은 2019년 9월 11일에 작성했던 글입니다. 토이 프로젝트를 진행하다가 조금 쉬고 싶어서 sequelize 이슈에서 처리할만한 것이 있는지 뒤적거렸다. 그러다 이 버그를 발견했다. 마이그레이션을 할 때 이름에 온점(.)이 들어가있는 테이블에 인덱스를 추가하려고 하면 에러가 난다는 것이었다. $ npx sequelize-cli db:migrate 같은 형태로 마이그레이션을 실행하기 때문에, 비쥬얼 스튜디오 코드의 기본 디버거 기능은 부적합했다. node --inspect의 힘을 빌려서 크롬 디버거를 활용하기로 했다. 디버깅 준비하기 먼저 sequelize-cli가 어떻게 실행되는지 확인하기 위해 node_modules/.bin/sequelize-cli.cmd 파일을 확인했다. @IF EXIST "..

프로그래밍 2020.03.18

primary key, natural key, surrogate key

- 아래 글은 2019년 11월부터 2개월간 칸아카데미 서포터즈로 활동하면서 작성한 글입니다. 1. primary key primary key는 어떤 고유한 한 행(row)을 가리키는 key다. primary key는 반드시 고유한 값을 가져야 하며, null 값을 가질 수 없다. primary key가 있으면 query 실행 속도가 상대적으로 더 빠르다. 또한 복수의 table 사이의 연결고리 역할도 할 수 있다. 그런데 왜 빠를까? 다들 빠르다고만 하지 왜 빠른지는 설명해주는 글이 잘 없어서, 구글의 힘을 빌렸다. 개인적으로는 아래 글이 쉽게 설명해줘서 좋았다. https://dba.stackexchange.com/questions/100749/how-does-unique-key-help-to-imp..

프로그래밍 2020.03.18

SQL이란 무엇인가

SQL이란 무엇인가? - 아래 글은 2019년 11월부터 2개월간 칸아카데미 서포터즈로 활동하면서 작성한 글입니다. SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 언어이다. 질의어 중 가장 인기있는 것이기도 하며, 많은 DBMS들이 SQL을 지원한다. 세 문장을 찬찬히 뜯어보자. 일단, 데이터베이스는 데이터베이스 관리 시스템이 아니다. DB != DBMS 데이터베이스는 말 그대로 데이터베이스 자체이다. 여러 사람/프로그램이 쓸 것을 염두에 두고 만들어진 정보의 집합이다. 일상 생활에서 우리는 정보를 저장해두고 쓸 일이 아주 많다. 페이스북, 은행, 쇼핑몰 등 다양한 서비스에서 유저들의 정보를 데이터베이스에 저장한다다. 그렇게 저장해둔 정보는 필요할 때 조회하거나, ..

프로그래밍 2020.03.18
반응형