본문 바로가기

공부

(56)
[Server] 하드 링크, 심볼릭 링크 요즘 웹서버와 리눅스 서버 두 가지를 동시에 공부를 진행하고 있어서 리눅스 서버 관련해서도 좀 적어보려고 한다. 물론 공부했던 부분 위주로 말이다. 참고로 CentOS로 공부 중이다. 개념 관련해서는 책 뿐만이 아니라 여기저기서 참고하여 내가 생각하는 토대로 한 번 정리해보았다. 링크라는 것은 어떻게 보면 기존 파일이 존재하고 다른 파일을 하나 만드는 건데 기존파일과 링크파일은 서로 내용은 같은 파일을 말한다고 볼 수 있다. 링크를 알기 위해서는 리눅스의 파일구조에 대해서 알아야하는데 Inode라는 것이 있다. 이 Inode는 유닉스 계통에서 사용하는 방식으로 모든 파일과 디렉터리가 가지는 고유번호를 말한다. 일단 이점을 알고 가야한다. 하드 링크 하드 링크는 사실상 '파일의 복제품'이라는 개념이다. 실..
[Node.js] 버퍼와 스트림 이전에 배웠던 언어들에서 주구장창 사용해왔지만 아직 정확하게 이해는 가지 않는 버퍼와 스트림에 대해서 확실하게 짚고 넘어갈겸 포스팅을 한다. 버퍼 그림으로 그리면 대충 이런 느낌인데 노드에서는 데이터를 전송할 때 버퍼에 저장해서 이 버퍼를 우리들이 다뤄서 데이터를 전송하는 방식이라고 한다. const buffer = Buffer.from('저를 버퍼로 바꿔보세요'); console.log('from()', buffer); console.log('length:', buffer.length); console.log('toString():', buffer.toString()); const array = [Buffer.from('띄엄 '), Buffer.from('띄엄 '), Buffer.from('띄어쓰기')..
[Node.js] 동기와 비동기 동기와 비동기에 관해서도 자세하게 설명이 되어있어 한 번 포스팅 해보려고 한다. 기본적으로 사용하는 메서드들은 대부분 비동기고 동기는 잘 없다. 아무래도 자원의 활용률이라던가 속도라던가 여러 부분에서 동기보다는 비동기가 좋아서 그런게 아닐까? 다만 둘 다 원한다면 사용은 가능하다. const readFile = require('fs'); const fs = require('fs'); console.log('시작'); fs.readFile('./readme2.txt', (err, data) => { if (err) {throw err;} console.log('1번',data.toString()); }); fs.readFile('./readme2.txt', (err, data) => { if (err) {..
[Node.js] Promise 이전 책 그러니까 Do it!에서는 기본적으로 사용하던 var을 이제는 사용하지 않고 const와 let을 사용하고 콜백 함수 보다는 Promise 방식을 많이 사용한다고 한다. 그에 관해서 간략하게 정리할 것이다. Node.js 교과서에서도 기존에 사용하던 것과 동일하게 파일 시스템을 사용했다. const fs = require('fs'); fs.readFile('./readme.txt', (err, data) => { if (err){ throw err; } console.log(data); console.log(data.toString()); }) 기본적으로 Node.js 교과서에서는 var 보다는 const와 let을 funciton 보다는 화살표 함수를 많이 사용한다. 나도 대세에 맞춰서 일단 ..
[C/C++] 영화감독 숌 (백준 1436) 문제 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀 다르게 만들기로 했다. 종말의 숫자란 어떤 수에 6이 적어도 3개이상 연속으로 들어가는 수를 말한다. 제일 작은 종말의 숫자는 666이고, 그 다음으로 큰 수는 1666, 2..
[C/C++] 체스판 다시 칠하기 (백준 1018) 문제 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M*N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8*8 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색으로 칠해져 있어야 한다. 따라서 이 정의를 따르면 체스판을 색칠하는 경우는 두 가지뿐이다. 하나는 맨 왼쪽 위 칸이 흰색인 경우, 하나는 검은색인 경우이다. 보드가 체스판처럼 칠해져 있다는 보장이 없어서, 지민이는 8*8 크기의 체스판으로 잘라낸 후에 몇 개의 정사각형을 다시 칠해야겠다고 생각했다. 당연히 8..
[C/C++] 덩치 (백준 7568) 문제 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x,y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x,y), (p,q)라고 할 때 x>p 그리고 y>q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56,177), (45,165) 라고 한다면 A의 덩치가 B보다 큰 셈이 된다. 그런데 서로 다른 덩치끼리 크기를 정할 수 없는 경우도 있다. 예를 들어 두 사람 C와 D의 덩치가 각각 (45, 181), (55,173)이라면 몸무게는 D가 C보다 더 무겁고, 키는 C가 더 크므로, "덩치"로만 볼 때 C와 D는 누..
[Node.js] Do it! Node.js 후기 갑작스럽게 후기를 쓰게 되어서 너무 안타깝다. 어제까지만 해도 조금 어렵긴했지만 재밌게 공부하고 있었는데... 세상일이 그렇게 마음대로 되지는 않나보다. 책 자체도 조금 옛날 책이기도 하고 해서 그런건가. 나는 Yes24를 즐겨쓴다. 크게 이유는 없고 옛날부터 꾸준히 사용해와서? 쓰게 된 것 같다. 최근에도 책을 5권 정도 구입했는데 아무튼 평점이 8.1이다. 8.1... 개인적인 생각으로는 그렇게 낮은 점수라고 생각하지는 않지만 책을 구매하기엔 이거보다 더 좋은 평점의 점수가 있지 않을까 생각이든다. 그리고 점수를 낮게준 사람들의 마인드도 너무 이해가 간다. 계속 말이 길어지는데 후기를 적게된 결론은 코드 때문이다. 기본적으로 나는 '처음 배우는 입장'에서 그냥 컴퓨터공학적인 지식을 조금 가지고 다른 ..