전체 글

Dev, sec, ops
·Programming/NodeJS
3.5 파일 시스템 접근하기 fs 모듈은 파일 시스템에 접근하는 모듈이다. 즉 파일을 생성하거나 삭제하고 읽거나 쓸 수 있다. 또한 폴더도 만들거나 지울 수 있다. // readme.txt 저를 읽어주세요. const fs = require('fs'); fs.readFile('./readme.txt', (err, data) => { if (err) { throw err; } console.log(data); console.log(data.toString()); }); /* 실행 결과 저를 읽어주세요. */ fs 모듈을 불러온 뒤 읽을 파일의 경로를 지정한다. 여기서 파일의 경로가 현재 파일 기준이 아니라 node 명령어를 실행하는 콘솔 기준이다. readFile의 결과물은 버퍼라는 형식으로 제공되기 때문..
·Programming/NodeJS
3.5 노드 내장 모듈 사용하기 노드는 웹 브라우저에서 사용되는 자바스크립트보다 더 많은 기능을 제공한다. 운영체제 정보에도 접근할 수 있고 클라이언트가 요청한 주소에 대한 정보도 가져올 수 있다. 3.5.1 os 웹 브라우저에 사용되는 자바스크립트는 운영체제의 정보를 가져올 수 없지만, 노드는 os 모듈 정보가 담겨 있어 정보를 가져올 수 있다. // os.js const os = require('os'); console.log('운영체제 정보---------------------------------'); console.log('os.arch():', os.arch()); console.log('os.platform():', os.platform()); console.log('os.type():', ..
·Programming/NodeJS
3. REPL 사용하기 자바스크립트는 스크립트 언어이므로 미리 컴파일하지 않아도 즉석에서 코드를 실행할 수 있다. 노드도 콘솔을 제공하는데 입력한 코드를 읽고(Read), 해석하고(Eval), 결과물을 반환하고(Print), 종료할 때까지 반복한다(Loop)고 해서 REPL이다. 노드의 REPL을 사용하려면 윈도에서는 CMD, 맥이나 리눅스에서는 터미널을 열고 node를 입력한다. VS에서는 Ctrl+'키를 누르면 터미널을 켤 수 있다. 프롬포트 모양이 >로 바뀌었다면 자바스크립트 코드를 입력할 수 있다. 입력한 코드를 REPL이 읽고(Read) 해석한(Eval) 뒤 바로 결과물을 출력(Print)했다. 그리고 종료되기 전까지 입력을 기다린다.(Loop) REPL은 여러 줄의 코드를 실행하기에는 불편한 ..
·Programming/NodeJS
2. 프런트엔드 자바스크립트 이번에는 HTML에서 script 태그 안에 작성하는 부분에 대한 것을 다룬다. 2.1 AJAX AJAX는 비동기적 웹 서비스를 개발할 때 사용하는 기법이다. 쉽게 말해 페이지 이동 없이 서버에 요청을 보내고 응답을 받는 기술이다. 요즘에는 XML 대신 JSON을 많이 사용한다. 보통 AJAX 요청은 jQuery나 axios 같은 라이브러리를 이용해서 보낸다. 프런트엔드에서 사용하려면 HTML 파일을 하나 만들고 그 안에 script태그를 추가해야 한다. axios.get('https://www.zerocho.com/api/get') .then((result) => { console.log(result); console.log(result.data); // {} }) .cat..
·Programming/NodeJS
2. ES2015+ ES2015란 ECMA라는 국제 기구에서 만든 표준문서인 ES의 6번째 개정판 문서에 있는 표준 스펙을 말한다. 6번째 버전이 2015년에 나왔기 때문에 ES2015이고 ES6라고도 한다. 2015을 기점으로 매년 문법 변경 사항이 발표되고 있으며 새로운 문법 상세에 대해 활발한 논의가 이뤄지고 있다. 2023년을 기준으로 ES2023까지 나왔다. 2.1 const, let var 대신 이제 const와 let이 대체한다. if (true) { var x = 3; } console.log(x); // 3 if (true) { const y = 3; } console.log(y); // Uncaught ReferenceError: y is not defined x는 정상적으로 출력되지만..
·Programming/NodeJS
1. 핵심 개념 이해하기 Node.js는 Chrome V8 Javascript 엔진으로빌드된 자바스크립트 런타임이다. 1.1 서버 노드를 통해 다양한 자바스크립트 애플리케이션을 실행할 수 있지만, 노드는 서버 애플리케이션을 실행하는데 제일 많이 사용한다. 서버란 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램을 말한다. 서버는 클라이언트의 요청에 대해 응답을 한다. 1.2 자바스크립트 런타임 런타임이란 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻한다. 따라서 노드는 자바스크립트 프로그램을 컴퓨터에서 실행할 수 있다. 기존에는 자바스크립트 프로그램을 웹 브라우저 위에서만 실행할 수 있었다. 브라우저는 자바스크립트 런타임을 내장하고 있으므로 자바스크립트 코드를 실행 할..
JavaScript란? JS(JavaScript)란 객체 기반의 스크립트 프로그래밍 언어이다. JS는 HTML의 특정 요소들을 사용하여 이벤트에 따라 어떤 동작을 하도록 기능을 조작할 수 있다. Javascript의 탄생 초기 웹사이트들은 HTML, CSS로만 만들어진 정적 웹사이트였다. (넷스케이프도 마찬가지) 1995년 넷스케이프에서 HTML, CSS만 사용하지 않고 웹 사이트를 사용자와 상호작용할 수 있길 원하였고, 그로 인해 10일만에 Javascript가 탄생하게 되었다. 처음에는 모카(Mocha), 그 후 라이브 스크립트(LiveScript), 최종적으로 (JavaScript)로 변경 Javascript 특징 1. 객체 기반의 스크립트 언어 2. 동적이며 타입 명시가 필요 없는 인터프리티 언어..
문제를 풀려면 encile을 복호화하여 flag.png를 복구해야 한다. 즉, flag.png를 암호화한 rot128.py 코드를 살펴보자.*복호화하려면 암호화된 코드를 알아야 함!* #!/usr/bin/env python3hex_list = [(hex(i)[2:].zfill(2).upper()) for i in range(256)]with open('flag.png', 'rb') as f:    plain_s = f.read()plain_list = [hex(i)[2:].zfill(2).upper() for i in plain_s]enc_list = list(range(len(plain_list)))for i in range(len(plain_list)):    hex_b = plain_list[i] ..
최하호
haho