hasumang의 등록된 링크

 hasumang로 등록된 티스토리 포스트 수는 59건입니다.

[NodeJS] Uncaught ReferenceError [내부링크]

안녕하세요! Uncaught Reference Error는 변수가 정의되지 않았을 경우에 나타나는 에러입니다. 코드에서 확인해볼 부분을 알려드릴게요! 1. 변수를 제대로 정의한게 맞는지 확인하기 2. 변수 선언을 함수, 조건문, 반복문과 같이 중괄호 안에 넣었는지 3. 지정된 배열의 크기를 넘어선 부분을 불러왔는지 1. 변수를 제대로 정의한게 맞는지 확인하기 에러 메세지에서 변수가 정의되어있지 않다고 나와있으니 당연히 가르키는 변수가 제대로 정의된건지 확인해야해요. 일단 이름부터 다시 확인해보세요! const arr=1; 로 정의해놓은거를 arr이 아니라 다른 이름으로 불러왔을 수 있습니다. 예를 들어서 arr이 아니라 ar 로 불러오는 오타가 발생했을 수 있어요. 아니면 개발하다가 변수 명이 바뀌었는데..

해커톤에 참여하기전, 백엔드 개발자라면 필수로 알아야하는 툴 6가지 정리! [내부링크]

안녕하세요! 이번에는 해커톤에 참여하기전, 필수로 알아야하는 툴에 대해서 정리해보겠습니다. 사실 이번에 알려드릴 툴은 정말 간단하고 기본적인 툴이라서 다들 많이 접해보셨을 것 같아요. 그렇지만! 해커톤에 참여하고 싶은데 너무 초보라서 두려운 분들을 위해서 이번 글을 작성해보려합니다. 사실 오늘 제가 말씀드릴 프로그램들은 해커톤이 아니라 개발할 때, 기획할때 꼭 알아야하는 ! 필수 ! 프로그램이에요. 그래서 백엔드 개발자가 프로젝트할때 꼭 알아야하는 툴 정리로 보시면 되겠습니다~! 1. PostMan PostMan은 API를 개발할 때 꼭 필요한 툴입니다. GET, POST, DELETE와 같은 요청을 마음대로 보낼 수 있습니다. 로컬에서 개발할 때는 주로 https://localhost:3000/api주..

GitHub PR 충돌 간편하게 해결하기 (Github Desktop) [내부링크]

안녕하세요! 오늘은 GitHub PR 충돌을 간편하게 해결하는 법에 대해서 포스팅해보려합니다~! ️GitHub Desktop️ Github Desktop 을 사용하면 빠르고 편리하게 해결할 수 있습니다. 다음은 제가 작업했던 레포지토리를 가져왔습니다. 깃헙데스크탑을 처음 설치하시면 깃헙 계정에 로그인하고 어떤 레포지토리를 관리할건지 설정하는 창이 나올겁니다. 그때 충돌을 해결하고 싶은 레포지토리를 선택하시면 됩니다. 그러면 제 화면과 같이 나옵니다. 충돌을 해결하는 방법은 1. Current Branch를 합치고 싶은 브랜치로 설정한 후에 Branch 에서 Merge into Current Branch를 선택합니다. 2. PR을 받을 브랜치 (main)을 선택합니다. 저는 hyolim 브랜치의 내용을..

AWS EC2 개념 및 배포하기 [내부링크]

안녕하세요! 오늘은 개인프로젝트를 배포했던 경험을 작성해보겠습니다. 사실 배포는 5월 초쯤 했는데 그동안 이것저것 다른거 준비할게 많아서 이제야 블로그를 작성하네요..! 1. AWS란? AWS는 Amazon Web Service의 약자로 고객에게 클라우드 컴퓨팅을 제공하고 있습니다. 클라우드 컴퓨팅 관련해서 정리한 내용입니다. 쉽게말해서 웹 서버를 배포하기위한 모든 자원을 제공해주는 서비스입니다. 로컬에서 개발한 웹 서비스를 다른 사용자들이 볼 수 있도록 배포하기 위해서 필요한 서비스입니다. 왜냐하면 우리는 웹서비스만 실행시키고 있을 컴퓨터를 하나 사서 사용하는 것보다는 대기업에서 이미 마련해둔 컴퓨터를 사용하는 것이 비용이나 관리 측면에서 훨씬 편하기 때문입니다. https://hasumang.tist..

클라우드 컴퓨팅(Cloud Computing)이란? [내부링크]

클라우드 컴퓨팅은 컴퓨팅 리소스를 인터넷을 통해 서비스로 사용할 수 있는 주문형 서비스입니다. 기업에서 직접 리소스를 조달하거나 구성, 관리할 필요가 없으며 사용한 만큼만 비용을 지불하면 됩니다. 만약에 여러분이 열심히 웹 서비스를 완성했다고 가정해봅시다. 이제 이 웹을 다른 사람들도 이용할 수 있도록 서버에 올려야겠죠? 그러면 리소스(자원)이 필요합니다. 예를 들어서, 웹 서비스 하나를 올리기 위해서 리눅스용 컴퓨터를 하나 장만해야해요. 프로젝트가 커질수록 더 많은 컴퓨터들이 필요하겠죠. 그런데 중간에 고장나면 다시 사야하는 불편함도 있어요. 그리고 컴퓨터에 서버를 올리고 유지하려면 전기세도 나갑니다. 심지어 이 프로젝트가 장기적인게 아니라면요? 그러면 짧은 시간동안 서버에 올리기 위해 컴퓨터 하나를 ..

[NodeJS] Passport 인증 구현하기 - Session [내부링크]

안녕하세요! 세션을 이용해서 인증하는 Passport에 대해서 알아보겠습니다. 이번 포스팅은 생활코딩님의 passport.js를 바탕으로 작성했습니다. 1. passport 인증 구현 passport란 사용자 인증 절차에 대한 로직을 간단하게 구현할 수 있도록 도와주는 Node.js 미들웨어입니다. 간단한 부분부터 차근차근 알아보겠습니다. 첫 단계에서 알아볼 과정은 main.js에서 어떻게 passport를 사용하는가에 관련된 내용입니다. main.js에서는 passport와 passport전략을 불러오고 각 요청에 알맞게 할당하면 됩니다. //main.js var passport = require('passport'), LocalStrategy=require('passport-local').Strate..

TWILIO 계정 승인받기 [내부링크]

오늘은 twilio 미들웨어를 업그레이드 한 후, 계정을 승인받았던 과정에 대한 이야기입니다. 출석체크 자동화 프로그램을 사용하기 위해서 본격적으로 twilio를 쓰기 위해서는 계정을 업그레이드 해야했다. 무료 계정에서는 내 핸드폰 번호로 얼마든지 메세지를 보낼 수 있었다. 하지만 불특정 다수에게 문자 메세지를 보내기 위해서는 계정을 업그레이드 해야한다. 그래서 twilio 홈페이지에 들어가서 $20 을 지불하고 계정을 업그레이드했다. 업그레이드 하고 몇 분 지나고나서 twilio로 문자 보내는 기능이 먹통됐다. 에러 메세지는 Permission denied 였다. 당황스러워서 구글링 하던 도중 돈을 더 내니까 잘됐다는 stackoverflow의 글을 확인했다. twilio의 계정을 upgrade할 때는..

[23/05/17 개발일지] 배포하기 [내부링크]

안녕하세요! 오랜만에 개발일지를 작성하네요ㅎㅎ 제가 만든 프로그램이 이사님께서 회사에 유용한 프로그램이니 배포하면 좋을 것 같다고 말씀해주셔서 이제 배포해보려 합니다~~! NodeJS 교과서라는 책에서 배웠던 내용을 바탕으로 배포해보겠습니다! (두근) 1. [개발] morgan 수정 morgan 미들웨어가 개발용으로 되어있기 때문에 배포용으로 바꿔줍니다ㅎㅎ 이때 process.env.NODE_ENV를 활용하면 배포 환경인지 개발환경인지 판단할 수 있습니다. 2. [개발] Express-session 수정 배포환경일때 https 적용을 위해서 proxy와 cookie.secure를 true로 바꿔줬습니다! 3. [개발] pm2 배포할때 서버가 중간에 끊어지면 안되기 때문에 pm2를 사용하도록 하겠습니다. ..

AI EXPO 2023 국제인공지능대전 후기 [내부링크]

안녕하세요! 오늘은 AI EXPO 2023 국제인공지능대전을 다녀온 후기를 작성해보겠습니다cc 삼성동 코엑스에서 열린 AI EXPO에 다녀왔습니다~! 인공지능을 배우고 알아가는 단계라 다양한 기술들을 보면서 눈을 넓히고 싶어서 신청했습니다 :) 대학생의 신분으로 참여했기때문에 마지막 날인 23년 5월 12일에 참여했습니다! 생각보다 사람들이 정말 많아서 놀랐습니다. 3시쯤 도착해서 5시에 나왔는데 정말 사람들이 북적이고 배울게 많았습니다. 여러 부스를 돌아다니며 메모했던 내용과 느낀점을 간략하게 남겨보려 합니다ㅎㅎ 1. RPA AI EXPO에서 처음으로 간 부스는 바로 RPA를 다루는 회사였습니다. RPA란 디지털 로봇 또는 봇이라고도 알려져 있는 가상 소프트웨어 로봇을 사용해 시간이 많이 드는 수작업..

[2023/04/28 개발일지] 문자 인증 기능 구현하기 [내부링크]

오늘 할 일 1. 인증 번호 생성하기 2. twillio 패키지 이용해서 문자 보내기 1. 라우터 정리 출석부를 불러오는 기능에만 집중해서 하다보니 초기 설정과 달리 인증과정을 생략한채 라우터를 설정했습니다. 인증과정이 있다고 가정하고 다시 라우터를 설정하겠습니다. -> 완료! ( 앞에 포스팅했던거랑 살짝 달라졌어요. 자세한건 github 참고,, ) 2. 인증했을 경우, 다시 메인페이지로 alert와 함께 보내기 문제 : send를 사용하면.. alert는 되는데 메인페이지로 가진 못하고, redirect를 사용하면 메인페이지로 가는데 alert가 안됩니다ㅠㅠ 해결 : 안되는줄 알았는데 되더라구요! 저는 노드 개발을 하면서 쿼리처리도 못하는 바보였습니다!^^ res.redirect 할때 뒤에 쿼리를 붙..

[2023/04/27 개발일지] 구글 스프레드시트 데이터 처리하기(2) [내부링크]

안녕하세요! 오늘은 구글스프레드 시트 관련 백엔드 작업을 끝내보겠습니다.....! < 오늘 할 일 > 1 : 학생의 전체 출석률 출력하기 2 : 학생의 1주차~11주차의 출석률 출력하기 1. 전체 출석률 출력하기 express-session과 nunjucks의 res.locals를 이용해서 개발할 예정입니다! 중간에 2번 에러가 났었지만 금방 해결했습니다. 생각보다 빠르게 성공했습니다! /auth/pnum에서 req.session 활용해서 사용자 정보가 들어가있는 행의 값을 전달 /show에서 req.session으로 받은 정보를 바탕으로 출석부 데이터를 받아온뒤 가공하고 res.locals로 전달 show.html에서 넌적스로 전달받은 값을 나타냄 2. throw new Error('This cell ..

[2023/04/25 개발일지] 구글 스프레드시트 데이터 처리하기 [내부링크]

안녕하세요! 오늘은 백엔드 구현와 프론트엔드 수정을 해보겠습니다. < 오늘 할 일 > 1 : 학생의 데이터가 어느 행에 위치해있는지 알아내기 2 : 학생의 전체 출석률 출력하기 3 : 학생의 1주차~11주차의 출석률을 세션에 담기 1. 개발할 기능들을 라우터, 미들웨어, 컨트롤러로 나누기 오늘 할 일들을 처리하려면 그 전에 라우터, 미들웨어, 컨트롤러에 어떤 기능들을 구현할 것인지를 정해야한다. 그냥 개발하는게 아니라 나름대로의 요청을 어떻게 받을지 계획해야한다. 라우터: 엔드포인트와 해당 엔드포인트에서 실행돼야 할 로직을 연결해주는 역할 컨트롤러: 미들웨어의 일종이지만 메인 로직을 담당하므로 분리해서 관리 미들웨어: 메인 로직의 컨트롤러 앞뒤로 추가적인 일을 담당 웹 서비스 개발이 처음이라 구조를 이상..

[2023/04/23 개발 일지] 구글 스프레드 연동하기 [내부링크]

오늘은 백엔드 개발을 시작합니다. 오늘 할 일 : googleapis 모듈 활용해서 구글 스프레드랑 백엔드 연동하기 1. NodeJS가 css 파일 못 찾음 예전에 개발 환경은 설정했었기때문에 구글 스프레드만 연동하면 될거라 생각했습니다... app.js를 실행하고보니 css 파일을 못찾아서 메인 화면이 깨져있었습니다. express와 css를 연동하는 방법을 열심히 구글링 했습니다. 찾아보니 일반 html에 link를 사용하면 css가 안불러와진다는 사실을 알았습니다. 근데 왜 부트스트랩은 잘 됐을까요????? 이유는 이따가 찾기로 하고 일단 이 현상을 해결하겠습니다. public이라는 폴더를 만든다. public 폴더 안에 css 폴더를 만들고 css 파일을 만든다. server.js 파일에서 app..

[2023/04/19 개발일지] frontend 개발 [내부링크]

오늘 할 일 : frontend main.html, show.html 만들기 원래는 로그인 페이지를 따로 구현하려했는데 로그인을 따로 구현하기보다는 한 페이지 내에서 모든걸 해결하는게 낫다고 판단했습니다. 그 이유는 로그인을 통해서 할 수 있는 서비스가 현재는 출석률 확인밖에 없는데 그 작업은 로그인을 하지 않아도 충분히 해결할 수 있기 때문입니다. 이름, 전화번호, 인증번호 입력 부분은 부트스트랩을 이용해서 클릭할 경우 디자인이 변경되도록 설정했습니다. 프론트엔드는 디자인 측면에서 고민했던 부분은 많았지만 구현이 어려웠던 부분은 없었습니다. 심플하게 제작해야 깔끔하고 예쁘게 나와서 최대한 깔끔하게 디자인했습니다. main.html에서 인증을 완료할 경우 show.html로 넘어가면서 자신의 출석률을 알..

[NodeJS] 노드 내장 객체 타이머 (setTimeout, setInterval, setImmediate) [내부링크]

안녕하세요! 오늘은 노드 내장 객체 타이머에 대해서 알아보겠습니다. 1. 타이머 종류 타이머 기능을 제공하는 함수들은 다음과 같이 setTimeout,setInterval,setImmediate가 있습니다. 이때, 노드에서 타이머 객체는 global 객체 안에 들어있습니다. 그리고 타이머 함수들은 모두 아이디를 반환합니다. 반환된 아이디는 변수에 저장됩니다. setTimeout(콜백 함수, 밀리초) : 주어진 밀리초(1000분의 1초) 이후에 콜백 함수를 실행 setInterval(콜백 함수, 밀리초) : 주어진 밀리초마다 콜백 함수를 반복 실행 setImmediate(콜백 함수) : 콜백 함수를 즉시 실행합니다. setTimeout( 콜백 함수, 0)와 setImmediate(콜백 함수)의 차이점은 특..

[2023/04/17 개발 일지] 개발 환경 세팅 [내부링크]

안녕하세요! 오늘은 출석체크 자동화 프로그램 개발하기 편하도록 개발 환경을 세팅해보려합니다. < 오늘 할 일> 1. 깃허브 연동 깃을 사용하면 여러 이점들이 많기 때문에 깃을 배운 이후의 모든 프로젝트를 깃에 연동시켜놨어요. 이번에도! 깃을 사용할 예정입니다. 깃허브에 들어가서 레포지토리를 하나 만들고 만든 레포지토리를 VSCode에서 열면 끝입니다. VSCode에서 새창 만들기하면 Clone git repository가 나오는데 그거 클릭하고 레포지토리 주소 붙여넣으면 알아서 잘 만들어주고 잘 연동시켜줍니다. https://github.com/rimi3226/automation_check GitHub - rimi3226/automation_check: The program developed to aut..

출석체크 자동화 프로젝트 설계 [내부링크]

안녕하세요! 지금까지 아주 조금 배운 웹 개발 지식을 활용해서 출석체크 자동화 프로그램을 제작해보려합니다. 지금까지 팀으로 프로젝트를 진행했었는데 이번은 혼자서 처음으로 해보는 것이고, 이런 개발 기록이 처음이라서 서투를 수 있습니다. 1. 개발 계기 저는 2023년 8월 말에 예정되어있는 교환학생을 가기 위해서 이번 년도 2월 말부터 아르바이트를 시작했습니다. 근로장학생은 아니고 인천대학교 외국어교육센터에서 주 5일 (10:00~18:00) 아르바이트로 근무하며 학생들의 출결관리, 어학 상담, 프로그램 홍보 및 진행을 맡고있습니다. 신입생들을 대상으로 하는 STEP-UP 프로그램에는 2~300명정도 학생들이 있습니다. 이 학생들을 관리할때 제일 중요한 부분은 출석입니다. 출석에 따라서 장학금이 지급되기..

[NodeJS] 내장 객체 console [내부링크]

안녕하세요! NodeJS의 내장 객체는 모듈 선언(import, require) 필요 없이 사용가능한 객체입니다. 오늘은 console.log로 자주 쓰이는 NodeJS 내장 객체인 console에 대해서 알아보겠습니다. 1. console 이란? console 객체는 터미널이나 커멘드 프롬프트에 메세지를 출력하기 위해 사용합니다. 보통 개발할때 디버깅을 위해 사용합니다. 변수에 값이 제대로 되어있는지, 어떤 에러가 발생했는지 콘솔에 출력해보며 디버깅합니다. 대표적으로 console.log를 많이 사용하지만, console 객체에는 다양한 메서드가 있습니다. console.log(내용): 콘솔에 메시지를 출력합니다. console.error(에러 내용): 콘솔에 오류 메시지를 출력합니다. console...

[NodeJS] 내장 객체 - global [내부링크]

안녕하세요! NodeJS의 내장 객체는 모듈 선언(import, require) 필요 없이 사용가능한 객체입니다. 오늘은 NodeJS 내장 객체인 global에 대해서 알아보겠습니다. 1. global이란? global 객체는 전역 변수 및 함수에 대한 접근을 제공하는 객체 global 함수는 전역 객체이므로 모든 파일에 접근 가능 JavaScript의 window 객체와 유사 노드에서는 DOM이나 BOM이 없어서 window와 document 객체 사용 불가능 따라서 노드에서 window와 document를 아우르는 객체인 global을 사용 global 생략 가능 원래는 global.console이지만 global을 생략한 console 객체만 입력해도 사용 가능 REPL을 이용해 global 내부 ..

[NodeJS] 모듈 (CommonJS & ECMAScript) [내부링크]

안녕하세요! 오늘은 NodeJS의 두가지 형식의 모듈에 대해 알아보려합니다. 각각의 모듈을 알아보기 전에, 모듈의 정의부터 알아보겠습니다! 1. 모듈이란? 모듈이란 특정한 기능을 하는 함수나 변수들의 집합입니다. 모듈은 자체로도 하나의 프로그램으로 사용할 수 있고, 다른 프로그램의 부품으로도 사용할 수 있습니다. < 장점 > 여러 프로그램에서 만들어놓은 모듈을 재사용할 수 있다. 파일별로 코드를 모듈화하며 정리할 수 있다. 노드에서는 크게 두 가지 형식의 모듈을 사용합니다. CommonJS모듈과, ECMAScript 모듈에 대해서 알아보겠습니다. 2. CommonJS 모듈 CommonJS 모듈은 NodeJS에서 가장 널리 쓰이는 모듈입니다. CommonJS에서 원하는 기능을 실행하는 모듈을 어떤 파일에서..

[NodeJS] REPL이란? [내부링크]

안녕하세요! 오늘은 REPL에 대해서 포스팅해보겠습니다. 1. REPL 정의 REPL이란 Read 읽고, Eval 평가하고, Print 결과물을 반환하고, Loop 반복한다의 약자입니다. 자바스크립트는 브라우저 콘솔탭에서 실행이 가능하듯, 노드에서는 REPL이라는 콘솔에서 실행이 가능합니다. 한마디로 REPL은 NodeJS 코드를 직접 입력할 수 있는 입출력장치입니다. 2. REPL 사용법 윈도우에서는 명령 프롬프트, 맥이나 리눅스에서는 터미널을 열고 node을 입력하면 됩니다. 저는 주로 VSCode에서 자주 개발하는데요, VSCode에서는 Ctrl+`을 누르면 사용할 수 있습니다. 만약, REPL을 종료하고 싶다면 Ctrl+C를 두번 누르거나, REPL 창에 .exit을 입력하면 됩니다. 3. 예제 ..

[NodeJS 에러 해결] EADDRINUSE [내부링크]

안녕하세요. 오늘은 NodeJS에서 개발하다가 흔하게 겪을 수 있는 에러인 EADDRINUSE에 대해서 알아보겠습니다. //에러 내용 node:events:491 throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE: address already in use :::3000 at Server.setupListenHandle [as _listen2] (node:net:1741:16) at listenInCluster (node:net:1789:12) at Server.listen (node:net:1877:7) at Function.listen (실행 파일명,에러 발생한 코드 위치) at Object. (실행 파일명,에러 발생한 코드 위치) at ..

[JavaScript] 널 병합/옵셔널 체이닝 [내부링크]

안녕하세요. 오늘은 널 병합(??) 연산자와 옵셔널 체이닝(?.) 연산자에 대해서 알아보겠습니다. 1. 널 병합 연산자 널 병합 연산자(??)는 falsy 값(0,'',false,NaN,null,undefinced) 중 null과 undefined만 따로 구분합니다. 밑의 예제를 보면 || 연산자의 경우 변수 a에 falsy 값인 0이 들어가있기 때문에 falsy 값이 아니라 뒤에 있는 값인 1을 변수 b에 대입했습니다. 하지만 널 병합 연산자의 경우 falsy값 중에서 null과 undefined만 구분하기 때문에 a가 null이나 undefined가 아니므로 b는 a인 0이 대입됩니다. const A = X ?? Y ; 1. X가 null ,undefined 인 경우 -> A = X; 2. X가 nu..

[JavaScript] Async/Await [내부링크]

안녕하세요, 오늘은 프로미스를 더 간략하게 하는 async/await에 대해서 알아보겠습니다. 프로미스는 콜백헬을 없앨 수 있지만 .then을 계속해서 써야하기 때문에 보이는게 그리 단순해보이지 않을 수 있습니다. 코드를 더 간편하게 보이도록 하기 위해서 나타난 것이 async/await입니다. 1. async async 키워드는 function 앞에 위치합니다. async function 함수는 항상 프로미스를 반환합니다. 프로미스가 아닌 값을 반환하더라도 resolve 값을 해당 반환값으로 만들어서 프로미스가 반환되도록 합니다. //프로미스가 아닌 정수형 반환 async function func1(){ return 1; } //명시적으로 프로미스 반환 async function func2(){ ret..

[JavaScript] 프로미스 (Promise) [내부링크]

안녕하세요! 오늘은 자바스크립트의 프로미스에 대해서 알아보겠습니다. 1. 동기 vs 비동기 코드는 기본적으로 동기적으로 실행됩니다. 동기적으로 실행된다는 말은 코드가 위에서부터 아래 순서대로 실행된다는 말입니다. 하지만 프로그래밍을 하다보면 코드 순서 상관없이 필요한 상황에 필요한 코드가 작동돼야하는 상황이 반드시 옵니다. 이때 코드를 병렬으로 처리하는 것이 비동기적으로 실행한다고 말합니다. 비동기적으로 코드를 실행하려면 여러가지 방법이 있습니다. ajax, setTimeout, callback 와 같은 방법으로 개발자들은 비동기 처리를 진행합니다. 프로미스(promise)는 세 방법 중에서 callback을 해결하기 위해서 나타났습니다. //동기 : 1 2 3 console.log(1); console..

[JavaScript] 구조분해할당 [내부링크]

안녕하세요! 오늘은 구조분해할당에 대해서 포스팅하겠습니다. 구조 분해 할당을 사용하면 객체와 배열로부터 속성이나 요소를 쉽게 꺼낼 수 있습니다. 1. 배열 밑의 코드는 구조 분해 할당을 이용한 예제입니다. 원래 방식은 하나하나 직접 인덱싱하는 방법이고, 구조 분해 할당은 할당받을 변수를 왼쪽에, 분해할 대상을 오른쪽에 자리를 맞추는 방식입니다. 배열 ex의 0번 자리에 a변수가 들어가있으므로 a=1입니다. b,c,d,e,f 변수도 똑같습니다. //원래 방식 const ex=[1,2,3,4,5] const a=ex[0]; const b=ex[1]; const c=ex[2]; //구조 분해 할당 방식 const [a,b,c,d,e]=ex; console.log(a); //1 구조 분해 할당에서는 ...을 사..

[JavaScript] 화살표 함수 [내부링크]

안녕하세요, 오늘은 자바스크립트의 화살표 함수에 대해서 알아보겠습니다. 화살표 함수(arrow function)은 기존의 함수를 깔끔하고 편리하게 쓸 수 있도록 하는 함수입니다. function {} 대신에 => 기호로 함수를 선언 변수에 대입할 경우 재사용 가능 화살표 함수 내부에 return 문만 있는 경우, 중괄호({ })와 return 생략 가능 매개변수가 하나일 경우 매개변수를 묶는 소괄호( ) 생략 가능 위에 있는 특징들을 활용해서 모두 같은 기능을 하는 함수를 다른 방식으로 구현했습니다. //기존 방식 function add(x,y){ return x+y; } //화살표 함수 기본 형태 const add=(x,y)=>{ return x+y; } //return과 중괄호 생략 const add..

[JavaScript] 백틱 ` 사용법 (템플릿 문자열, 함수 호출) [내부링크]

안녕하세요. 오늘은 자바스크립트에서 백틱 `을 어떻게 쓰면 좋을지에 대해서 알아보겠습니다. 백틱의 사용법은 두가지가 있습니다. 템플릿 문자열과 함수 호출입니다. 1. 템플릿 문자열 원래 문자열은 작은 따옴표(' ')나 큰 따옴표(" ")를 사용해서 나타냅니다. 이때 문자열과 변수를 이어서 쓸 경우 +를 활용해서 나타냅니다. 하지만 백틱(`)을 사용하면 한번에 깔끔하게 나타낼 수 있습니다. 백틱(`)을 사용하면 문자열 안에 변수를 넣을 수 있기 때문입니다. //백틱 사용 const x='x'; const y='y'; const z='z'; console.log(`${x}는 x, ${y}는 y, ${z}는 z이다. `); //x는 x, y는 y, z는 z이다. 2. 함수 호출 백틱(`)은 함수를 호출할때도 ..

[JavaScript] const, let, var 변수 선언 / 블록 스코프 vs 함수 스코프 [내부링크]

안녕하세요, 자바스크립트에서 어떻게 변수 선언을 하는지, 각각의 방법은 어떤 것이 다른지 알아보도록 하겠습니다. 1. 변수 선언 방법 자바스크립트는 변수를 선언할때 const, let, var를 사용합니다. 경우에 따라 쓰이는 곳이 다릅니다. 이를 알기 위해선 블록 스코프와 함수 스코프 에 대해서 알아야합니다. //변수 선언 방법 var x=3; const x=3; let x=3; 2. 블록 스코프 vs 함수 스코프 블록 스코프는 블록 밖에서 변수에 접근할 수 없는 것을 의미하고 함수 스코프는 함수 밖에서 변수에 접근할 수 없다는 것을 의미합니다. 이때 블록의 범위는 if, while, for, function 등에서 볼 수 있는 중괄호 사이 입니다. 예를 들어서 밑의 코드와 같이 if 안에 변수를 선언..

JavaScript와 Html(script 태그, 이벤트, 콘솔) [내부링크]

안녕하세요! 오늘은 자바 스크립트와 HTML에 대해서 알아보겠습니다. JavaScript는 HTML 위에서 동작하는 언어입니다. HTML과 JavaScript의 가장 큰 차이점은 HTML은 정적이고, JavaScript는 동적이라는 점입니다. HTML은 쉽게 말해서 웹페이지를 구성하는 뼈대 작업하는 언어입니다. HTML로 구성된 페이지가 사용자와 상호작용할 수 있도록 Javascript로 HTML 위에 코딩해야합니다. 1. script 태그 javascript를 HTML위에서 사용하려면 어떻게 해야할까요? 2. 이벤트 상호작용하는 사이트를 만들기 위해서는 사용자의 동작을 확인할 수 있어야합니다. 자바스크립트에서는 이벤트를 활용해서 사용자의 동작을 확인합니다. 이벤트 종류는 다양하게 있습니다. 밑의 이벤트..

[백준 15651] 완전탐색_브루스포스(Brute Force) [내부링크]

안녕하세요. 오늘은 알고리즘 중에서 완전탐색 브루스포스에 대해서 포스팅하겠습니다! 완전탐색은 문제를 해결하기 위해 확인해야하는 모든 경우를 전부 탐색하는 방법입니다. 예를 들어, 4가지 숫자로 이뤄진 금고의 비밀번호를 알고자한다면 0000부터 9999까지 모든 경우의 수를 직접 시도해보는 방법이 브루스 포스 알고리즘입니다. 브루스포스 알고리즘 유형은 보통 다음과 같습니다. N개중 (중복을 허용해서/중복없이) M개를 (순서 있게 나열하기/순서 상관없이 고르기) 15651번은 브루스포스 유형 중 N개중 중복을 허용해서 M개를 순서있게 나열하는 방법입니다. https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다...

토익 일주일만에 155점 올리기! 꿀팁 및 경험담 [665->820] [내부링크]

안녕하세요! 오랜만에 블로그에 포스팅해보려합니다. 오늘은 일주일 벼락치기로 토익 155점 올린 꿀팁을 공유해볼게요! 저는 교환학생 준비때문에 토익 800점이 필요한 상황이었어요. 그래서 처음에 800점만 넘기자는 목표를 세웠습니다. 제가 본 시험은 2월 19일 시험이었어요. 원래는 그 전부터 공부하려했지만 어쩌다보니 2월 13일부터 준비했습니다. 예전에 봤던 시험(21.11.28)은 600점만 넘기면 됐어서 공부를 안하고 봤었던 시험이에요. 사실 저 당시에 기말고사 때문에 정신 없어서 시험 전날 카톡으로 토익시험있다는 알림와서 알았습니다...ㅎ 1. 자신의 강,약점 파악 토익을 벼락치기 하기로 마음 먹으셨다면 제일 처음에 자신이 어느 부분을 잘하는지, 어느 부분이 약한지 파악하셔야해요. 저는 2년 전에 ..

[백준 출력] \, ', " cout 에러&이스케이프 시퀀스 알아보기 [내부링크]

백준 출력 관련 문제들(10171[고양이],10172[개],25083[새싹])을 풀다보면 \(역슬래쉬), '(작은 따옴표), "(큰따옴표) 출력이 안되는 에러를 접할 수 있다. 이는 이스케이프 시퀀스(Escape Squence)와 관련이 있다. 이스케이프 시퀀스(Escape Squence) 이스케이프 시퀀스란 백슬래시(\) 뒤에 한 문자나 숫자 조합이 오는 문자 조합이다. 줄 바꿈 문자, 작은따옴표, 또는 문자 상수의 다른 특정 문자를 나타내려면 이스케이프 시퀀스를 사용해야한다. 이스케이프 시퀀스는 주로 탭이나 줄바꿈을 나타낼때 사용되지만 인쇄할 수 없는 문자인 ', ",\ 를 표현하기 위해 사용되기도 한다. 이스케이프 시퀀스의 종류는 다음과 같다. 따라서 \, ', "를 출력하기 위해서는 다음과 같은 ..

[백준 10926] Trigraph ignored 에러 [내부링크]

Q10926 문제 준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오. 입력 첫째 줄에 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어진다. 아이디는 알파벳 소문자로만 이루어져 있으며, 길이는 50자를 넘지 않는다. 출력 첫째 줄에 준하의 놀람을 출력한다. 놀람은 아이디 뒤에 ??!를 붙여서 나타낸다. 처음에는 단순하게 string 변수 하나 생성해서 cout으로 출력하려했다. 하지만 warning: trigraph ignored [-Wtrigraphs] 와 같은 에러가 발생했다. Trigraph 란? Trigr..

[백준 1008] cout 소수점 자릿수 정하기 [내부링크]

백준 1008번 문제는 사칙연산 중 나눗셈을 코딩으로 구현하는 문제입니다. 덧셈, 뺄셈, 곱셈과 같은 다른 사칙연산 문제들은 문제 그대로 풀어도 잘 풀렸지만 백준 1008번 문제는 한번 더 생각을 해봐야하는 문제라서 포스팅해보려합니다. Q.1008 문제 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다. (10의 -9제곱) 이 문제를 보고 고려해야할 점은 두가지입니다. 첫번째는 자료형, 두번째는 소수점자릿수입니다. 1. 자료형 C++에는 자료형이 다양하게 있습니다. 그 중에서 보통 숫자는 정수를 다루는 i..

혼공단 4주차 미션! [내부링크]

안녕하세요ㅎㅎ 오늘은 혼공단 미션 인증을 위해서 블로그 포스팅하려합니다. 먼저 혼자 공부하는 SQL p.226~228의 테이블을 생성해볼게요! SELECT로 확인해보니 buy 테이블이 잘 만들어진 것을 확인할 수 있습니다. 이번에는 데이터를 입력해보겠습니다! 데이터 입력 결과입니다!

웹 개발 POST Error (ENOTFOUND) [내부링크]

로그인 페이지 구현을 하면서 있었던 에러들에 대해 다뤄보겠습니다. 백엔드는 nodejs에서 express모듈을 활용해 구현했고 프론트엔드는 adduser.html을 통해서 구현했습니다. adduser.html에서 POST를 통해 통신을 보내는 과정에서 에러가 발생했습니다. 에러 내용은 다음과 같습니다. Error : getaddrinfo ENOTFOUND localhost:3306 code : ENOTFOUND errno : -3008 해결방법은 다음과 같습니다. html파일에서 post 보낼 때 action에 주소를 전체 다 쓰는 법입니다. 코드는 다음과 같습니다. //javascript const app = express() app.use(express.urlencoded({ extended: tru..

혼공단 3주차! [내부링크]

혼공단 3주차 미션을 업로드해보겠습니다~! ️기본 미션️ pg. 195 확인 문제 4번 풀기! 입니다. Q4. 다음 SQL은 회원으로 가입만 하고, 한 번도 구매한 적이 없는 회원의 목록입니다. 빈칸에 들어갈 가장 적합한 것을 고르시오. SELECT DISTINCT M.mem_id, B.prod_name, M.mem_name, M.addr FROM member M LEFT OUTER JOIN buy B ON M.mem_id=B.mem_id ____________________________ ORDER BY M.mem_id; A. WHERE B.prod_name IS NULL

HTTP Response status code [내부링크]

안녕하세요! 오늘은 HTTP Response status code에 대해서 알아보겠습니다. HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP에서 반환되는 코드가 바로 HTTP Response status code입니다. HTTP Reponse status code는 100부터 599까지 5개의 주제로 나뉘어져있습니다. Informational responses (100 – 199) Successful responses (200 – 299) Redirection messages (300 – 399) Client error responses (400 – 499) Server error responses (500 – 599) 중요한 HTTP Response statu..

express로 웹 서버 만들기 [npm] [내부링크]

안녕하세요! 오늘은 npm으로 아주 간단한 웹 서버를 만들어보겠습니다. 웹서버를 만들기 전에 노트북에 Node.js와 npm이 설치되어있어야합니다. 보통 Node.js를 설치하면 npm도 같이 설치됩니다. 저는 현재 맥북 M1 을 사용중이기 때문에 homebrew로 Node.js를 설치했습니다. brew install node homebrew가 노트북에 깔려있는 상태에서 위의 명령어를 터미널에 입력하면 node가 다운로드 됩니다. Visual Studio Code에서 서버를 생성하겠습니다. 먼저, 웹 서버를 구축할 폴더를 생성합니다. 저는 폴더 명을 make_server로 설정하겠습니다. 그 다음 Ctrl+` 단축키로 터미널을 열어서 디렉토리가 make_server를 제대로 가리키도록 합니다. 이제 서버..

SQL 기본 문법 [SELECT] - 혼공단 2주차 [내부링크]

안녕하세요! 이번 포스팅에서는 혼공단 2주차겸 SQL 기본문법 SELECT에 대해서 다뤄보겠습니다. 시작하기에 앞서 본 포스팅은 혼자 공부하는 SQL 책의 내용을 바탕으로 구성되었습니다. 데이터베이스 또한 책의 자료를 사용했습니다. https://www.hanbit.co.kr/support/supplement_survey.html?pcode=B6846155853 한빛출판네트워크 더 넓은 세상, 더 나은 미래를 위한 아시아 출판 네트워크 :: 한빛미디어, 한빛아카데미, 한빛비즈, 한빛라이프, 한빛에듀 www.hanbit.co.kr 이곳에서 예제 소스를 다운받아 market_db.sql 파일을 실행합니다. market_db이 제대로 생성된 것을 확인할 수 있습니다. 이때 sql 파일을 실행시키고 좌측에 있는..

데이터베이스 기본 개념 (DB,DBMS,SQL) - 혼공단 1주차 [내부링크]

안녕하세요! 오늘은 혼공단 1주차 블로그 포스팅 겸 데이터 베이스의 개념에 대해서 다뤄보겠습니다. 혼자 공부하는 SQL 책 확인문제는 첨부된 파일 확인해주세요! 01-1. DBMS ( Database Management System ) DB (Database, DB, 데이터베이스) : 데이터들의 집합 DBMS (Database Management System) : 데이터 베이스를 관리하고 운영하는 소프트웨어 특징 : 여러명의 사용자가 사용, 응용프로그램과의 공유 종류 : MySQL, MariaDB, Oracle, SQL Server 발전 과정 : 종이 -> 파일 -> DB 사용하는 언어 : SQL 분류 : 계층형(Hierarchical), 망형(Network), 관계형(Relational = RDBMS)..

MySQL 맥북(macOS)에서 다운로드하는 방법 [내부링크]

안녕하세요! 요즘 혼공단 9기로 SQL을 공부하며 활동중입니다! [혼자 공부하는 SQL] 책을 이용해서 공부하고 있는데 책에는 window에서 MySQL을 다운로드 받는 법만 나와있더라구요. 저는 현재 맥북 m1 Air를 사용중이기 때문에 맥북에서 MySQL을 다운로드 해야합니다. 그래서 이번에는 맥북에서 MySQL을 다운로드 하는 방법을 포스팅해보겠습니다! 1. homebrew 설치 MySQL을 다운로드하려면 homebrew가 필요합니다! 밑에 있는 사이트에서 다음 코드를 복사한 후 터미널 앱에서 실행합니다. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" https://brew...

[C++] cin, cout, getline 예제로 알아보기 [내부링크]

안녕하세요! 오늘은 C++ 기본 입출력에 대해서 포스팅하겠습니다. python에서는 print( ), C언어에서는 printf( ); 를 출력으로 썼던 것 처럼 c++에서는 cout을 사용합니다. 그리고 입력 받을때는 cin을 사용합니다. cin과 cout은 모두 iostream이라는 헤더파일을 include 해야 사용할 수 있습니다! iostream에는 표준 입출력을 진행하기 위한 다양한 객체들이 존재합니다. 그 중에서 저희는 cin과 cout을 이용하는 것입니다. 그리고 cout과 cin를 사용할때 충돌을 방지하기 위해 소속을 밝혀줘야합니다. cin과 cout 앞에 std:: 를 붙여주면 소속을 밝힐 수 있습니다. 하지만 매번 std::를 붙이기엔 코드를 짤 때 불편하기 때문에 c++에서는 names..

인생 첫 해커톤 c 수상 후기 c [내부링크]

c 해커톤이란 ? c 해커톤 ( hackathon ) 이란 해킹과 마라톤의 합성어로, 정해진 시간 내에 집중적으로 작업해서 의미있는 결과물을 만들어내는 소프트웨어 행사이다. c 해커톤에 지원한 이유 c 예전부터 꼭 해커톤에 참가하고 싶었다. 밤을 새서 개발이라는 말 자체가 호기심을 자극했다. 그저 해커톤 후기들만 보는 것이 아니라 실제로 그 현장에 있고 싶었고 하루 24시간을 온전히 개발하는 경험도 쌓아보고 싶었다. 무엇보다 24시간 만에 프로젝트 개발이라니!!! 지금까지 해온 프로젝트들은 모두 몇달에 걸쳐서 진행했었다. 하지만 해커톤은 하루만에 모든 것을 해야한다. 극한의 집중력으로 개발하는 경험을 쌓고싶었다. 마침!!! 그때 학교 복도에 중앙동아리 멋쟁이 사자처럼에서 주최하는 찰떡콩떡해커톤을 발견했다..

혼공단 SQL 시작! [내부링크]

인스타그램에서 혼공단 모집 글을 보고 평소 관심있었던 SQL에 대해 공부하기 위해 신청했습니다. SQL의 커리큘럼은 다음과 같습니다~ 신청 후 메일로 합격했다는 소식을 접했습니다!! 2023년도 열심히 살기 위해 혼공단 활동을 성실하게 해보도록 노력하겠습니다!!!

내돈내산 전주 맛집 투어~! 한옥마을 먹방 여행(12/26~12/28) [내부링크]

2022년을 끝마치며 전주 여행을 다녀왔다. 여행 동안 전주 한옥마을의 모든 음식을 먹었다고 얘기할 수 있을 정도로 많이 먹었다. 이번 포스팅에서는 이번 여행에서 먹었던 음식들을 리뷰해보려한다! 1. 임실치즈 닭꼬치 전주 한옥마을의 닭꼬치는 유명하다. 옛날에 한옥마을에 놀러왔을때도 줄이 길었는데 이번에도 역시 길었다. 첫째날과 둘째날 모두 줄을 서서 먹었다. 닭꼬치의 맛은 세가지였다. 순한맛, 매운맛, 아주 매운맛이었다. 쭉쭉 늘어나는 치즈와 함께 달콤하고 매운 닭꼬치는 정말 맛있다!!!! 첫째날은 매운맛, 둘째날은 순한맛을 먹었다. 둘 다 정말 맛있다. 매운맛은 맵찔이인 나에게 살짝 매웠다. 순한맛은 따로 하얀 소스가 있는 것이 아니라 매운맛 양념에서 매운맛을 뺀 소스이다. 원래 사진을 찍고..

10. 리눅스 시그널(signal) 예제로 알아보기(2/2) c [내부링크]

이번 포스팅에서는 지난 포스팅에 이어서 시그널에 대해 알아보겠습니다! sigprocmask를 활용해서 프로그램 출력이 0.000 0.000, 1.000 1.000과 같은 수의 쌍이 되도록 코드를 작성해보겠습니다. 이번 예제에서 여러개의 신호를 다룰 예정입니다. 많은 신호를 다루기 위해서는 신호를 집합으로 표시하는 자료 형식이 필요합니다. 이때 우리는 sigset_t라는 자료형을 사용합니다. sigset_t을 이용해서 신호를 block, unblock, pending할 수 있습니다. 이러한 작업을 하기위해 다양한 함수가 있습니다. int sigfillset(sigset_t *set) : set에 리눅스에 있는 모든 시그널이 들어간다. (다루지 못하는 SIGSTOP,SIGKILL은 못들어간다.) int si..

10. 리눅스 시그널(Signal) 예제로 알아보기 (1/2) c [내부링크]

지난 포스팅에서 시그널의 개념에 대해 알아보았습니다. 이번 시간에는 SIGNAL 관련 예제를 알아보겠습니다~ 1. 무한 루프 프로그램에게 시그널 보내기 #include #include #include int main(){ while(1){ printf("pid : %d \n",getpid()); sleep(1); } return 0; } 다음은 무한으로 자신의 PID를 출력하는 프로그램입니다. 프로그램을 실행시키고 시그널을 보내겠습니다! 이때 [PID]에는 출력되는 자신의 pid를 입력하시면 됩니다. (ex. 2601) SIGINT -> (1) Ctrl+C 누르기 (2) 터미널에 $kill -SIGINT [PID] SIGSTOP-> (1) Ctrl+Z 누르기 (2) 터미널에 $kill -SIGSTOP [..

10. 리눅스 시그널(Signal) 개념 알아보기c [내부링크]

안녕하세요! 오늘은 리눅스의 시그널(Signal) 개념에 대해 알아보겠습니다! 시그널이란 리눅스 시스템 상에서 외부에 발생한 비동기적인 이벤트를 프로세스에게 알려주는 일종의 소프트웨어적인 인터럽트 역할을 하는 것을 의미합니다!! 프로그램이 실행되면서 floating point error, power failure, alarm clock rings, death of a child process, Ctrl-C, Ctrl-Z와 같은 예상하지 못한 이벤트들이 발생합니다. 시그널은 이런 비동기적인(asynchronous)한 이벤트들을 알려주기 위한 수단입니다! 시그널이 전달되는 방식은 다음과 같습니다. 프로세스에 시그널이 들어올 경우 프로세스는 다음 세가지 방법 중 하나를 선택합니다. ignore it : 무시하..

9. 리눅스 프로세스(Process) 예제로 알아보기 (1/2) [내부링크]

안녕하세요! 이번 포스팅에서는 리눅스 관련 개념인 프로세스의 예제를 다뤄보겠습니다~ 먼저 시작하기에 앞서 프로세스를 관리해줄 System Call들을 살펴보겠습니다! 1. Process Management System Calls getpid : 프로세스의 ID를 얻는다. getppid : 부모 프로세스의 ID를 얻는다. fork : child 프로세스를 만들기 위해 부모 프로세스를 복제한다. exec : code, data, stack 등을 replace를 교체한다. exit : 프로세스를 종료한다. 종료할 때 상태 변수를 바꾸기 위해 사용한다. wait : 자식 프로세스를 위해 대기한다. 2. fork() 출력 예제 [myfork] fork 하는 순간 parent 프로세스에서 리턴 한 번, child ..

9. 리눅스 프로세스(Process) 개념 알아보기 [내부링크]

안녕하세요! 오늘은 리눅스의 프로세스에 대해 알아보겠습니다! ! 1. 프로세스의 정의 프로세스란 프로그램이 수행되고 있는 상태를 의미합니다. 따라서 프로그램 != 프로세스 != 프로세서 인거죠. 그럼 각각의 정의를 알아보겠습니다! 프로세스 (Process) : 프로그램이 실행중인 상태 프로그램 (Program) : 어떤 문제를 해결하기 위해 컴퓨터에게 주어지는 처리 방법과 순서를 기술한 일련의 명령문의 집합체 프로세서 (Processor) : 프로그램들이 실행할 수 있도록 해주는 하드웨어 프로세스는 두가지 abstractions있습니다. 혼자 CPU를 독자적으로 수행하는 것 같은 착각 시스템 메모리를 프로그램 혼자 쓰는 것 같은 착각 이러한 현상은 여러개 프로세스를 빠르게 스위칭하고 가상 메모리 시스템에..

8. 리눅스 시스템 콜 예제로 알아보기(2/2) [내부링크]

지난 포스팅에 이어서 빠르게 시스템 콜 예제 두 개를 더 보겠습니다!! 3. mycp 프로그램 작성 mycp 프로그램은 첫번째 인자로 지정된 파일을 두번째 인자로 지정한 파일로 복사하는 프로그램입니다. mycp source-file dest-file 명령어를 입력했을때 실행되도록 만들어봅시다. 이때, dest-file의 모드는 rw-rw-rw-로 세팅해야합니다. 사용자,그룹,외부인 모두 읽고 쓰는 것만 할 수 있는 모드입니다. #include #include #include #include #include #include #include int main(int argc,char *argv[]){ int fd_read,fd_write; char buffer[BUF_SZ]; if(argc != 3){ pri..

8. 리눅스 시스템 콜 예제로 알아보기(1/2) [내부링크]

안녕하세요! 오늘은 리눅스에서 중요한 개념인 시스템콜(system call) 관련된 예제를 실습해보겠습니다. 시스템 콜에 대해 아주 간단하게 개념을 한번 보고 예제 시작하겠습니다~! 시스템콜이란 ? 어플리케이션이 커널에 있는 기능들을 사용할 때 system call이 일어납니다. 커널 리눅스 운영체제에서 프로세스 및 애플리케이션 간의 CPU, RAM 공유할 수 있도록 관리해주는 시스템 주변 기기 관리 어플리케이션으로 부터 시스템콜 처리 컴퓨터가 켜졌을 경우 disk로부터 바로 로딩 리눅스는 User Space, Kernel Space 이렇게 두개로 나뉘어져있습니다. 이때 User Space에서 Kernel Space까지 가서 함수를 불러오는 것이 시스템콜입니다! 우리 보통 C언어에서 #include 하잖..

9. 리눅스 프로세스(Process) 예제로 알아보기 (2/2) [내부링크]

지난 포스팅에 이어서 리눅스 프로세스 관련 예제에 대해 살펴보겠습니다! 지난번 포스팅에서 프로세스 제작 사이에 숫자를 프린트 하는 것 까지 했습니다! 6. Execve() 실행 파일 만들기 exec() 호출을 이용해 ls 명령어를 -l 옵션과 -a 옵션을 줘서 실행시켜보겠습니다! #include #include int main(){ char *new_argv[]={"ls","-l","-a",NULL}; execve("/bin/ls",new_argv,NULL); printf("Hello World! \n"); //출력안됨 return 0; } 이 코드에서 주의해서 볼 부분이 있습니다. 바로 printf("Hello world! \n"); 이 코드입니다! 위의 코드에서 printf는 실행되지 않습니다. 그 ..

7. 리눅스 깃 Git 초보를 위한 정리와 실습 (2/2) [내부링크]

오늘은 지난 포스팅 에 이어서 깃 관련 실습을 더 진행해보겠습니다! 시작하기에 앞서 이전에 해왔던 깃 커밋에 관련된 기록을 확인해봅시다. git log 맨 밑에서부터 first_init -> myapp.c is added -> myfuncs.h is added 시간 순서대로 커밋 메시지를 확인할 수 있습니다. 우리는 이제 checkout 관련 실습을 해보겠습니다. 14. checkout 예전 상황으로 다시 돌아가기 git checkout 4de2 #git checkout [hash] git log에서 노란색 글씨로 적혀있는 commit 4de2411~~~ 이부분에서 우리는 커밋 해시를 알 수 있습니다. 이 해시를 이용해서 이전 상황으로 돌아가봅시다. ls 또는 tree 명령어를 실행해보면 myfuncs...

M1 맥북에 리눅스 가상환경 설치하기 ( UTM ) + 데스크탑 [내부링크]

안녕하세요. 오늘은 M1 맥북에 리눅스 가상환경을 설치해보겠습니다. 버전은 20.04를 설치할 예정입니다. 저는 22년 8월에 22.04를 깔려고 시도를 했다가 데스크탑이 제대로 깔리지 않아 좀 고생을 했습니다ㅜ 제가 UTM으로 리눅스를 설치할 당시에는 22 버전이 사소한 오류가 많았습니다ㅜ 그래서 이번 포스팅에서는 20.04에 대해 다뤄보겠습니다. 버전 20.04로 다운받으세요!!! 가상환경 설치하다가 무한루프 되는 이유도 함께 적었으니 혹시 안되는 분은 참고하세요. 1. UTM을 맥북에 설치합니다. https://mac.getutm.app/ UTM Securely run operating systems on your Mac mac.getutm.app 2. linux ubuntu 홈페이지에 가서 ubu..

7. 리눅스 깃 Git 초보를 위한 정리와 실습 (1/2) [내부링크]

팀 프로젝트를 하기 위해 개발자는 깃(Git)을 필수적으로 다뤄야한다. 이번 포스팅은 깃을 아예 처음 접하는 분들을 위한 포스팅이다. 필자는 리눅스 터미널에서 진행했다. 먼저, 예제에 들어가기 전에 깃을 사용하기 위해서 깃을 간단히 소개하겠다. 깃(Git)은 쉽게 말해서 타임캡슐이다. 타임캡슐에 과거의 정보를 담아 보관하듯, 깃에 과거의 개발 과정을 담아 보관한다. 깃이 필요한 이유는 과거의 개발 과정을 담는 것에 있다. 코딩을 하다보면 코드를 잘못 건들여서 에러가 나는 경우가 있는데 이 경우에 깃을 활용한다면 에러가 나기 전의 과정으로 되돌아갈 수 있다. 여러 사람들이 함께 깃을 사용하는 경우 효과는 극대화된다. 해당 파일을 수정할때 과거의 기록이 모두 남기 때문에 1. 어떤 사용자가 어느 부분을 수정..

하와이 여행 1일차_8/1_호놀룰루 [내부링크]

2019년 코로나 19가 발생했다. 당시 고등학교 2학년이었던 나는 안일하게도 수능이 끝나면 당연히 코로나가 끝나 있을 것이라 생각했다. 고등학교 수학여행으로 갔던 일본이 나의 10대 마지막 해외여행이 되었다. 성인이 된 이후 첫 해외여행을 계획했다. 장소는 하와이로, 기간은 여름방학 8월 2주정도로 잡았다. '친구 따라 강남 간다'라는 말이 있듯이 나는 친구가 하와이 간다는 걸 따라갔다. 2학년 1학기 동안 주 6일 동안 알바와 과외를 공부와 병행하며 돈을 모았다. 적어도 하와이를 다녀올 수는 있겠구나라는 생각이 들 정도로 모였다. 나름 MBTI J인 사람이지만 이번 여행은 내 인생에 있어서 제일 계획을 대충 세운 여행이다. 한학기동안 일을 병행하며 공부한 게 힘들었던 건지 일상이 정신없이 바빠서 그..