본문 바로가기

분류 전체보기

(135)
연산자 연산자란 연산자는 하나 이상의 표션식을 대상으로 산술,할당,비교,논리,타입,지수연산등을 하나의 값으로 만드는작업을 수행한다. 연산자는 피연산자를 연산하여 새로운 값을 만드는데 피연산자는 값으로 평가될 수 있는 표현식이여야한다. 연산자의 부수효과 대부분의 연산자는 다른 코드에 영향을 주지않으나 일부 연산자는 다른 코드에 영향을 주는 부수효과를 가지고 있다. 대표적으로 부수효과가 있는 연산자는 할당 연산자(=), 증감연산자(++/--),delete연산자가있다. 연산자 예시 = 변수 값이 변하는 부수효과가있으며, 변수를 사용하는 다른 코드에 영향을 준다. ++/-- 피연산자의 값을 재할당하여 변수를 사용하는 다른코드에 영향을 준다. delete 객체의 프로퍼티를 삭제하는 부수효과가있다.객체를 사용하는 다른코드..
Data Type 데이터타입은 값의 종류를 말하며, 자바스크립트의 모든 값은 데이터타입을 갖는다. 자바스크립트는 ES6에서 7개의 데이터 타입을 제시하며, 원시타입과 객체타입으로 분류할 수 있다. JavaScript의 데이터타입의 종류 Data(자료)란 프로그램이 처리할수 있는 모든것으로 자효형태에 따라 나눠놓은것을 자료형(DataType)이라 한다. 자바스크립트의 데이터 타입은 원시타입과 객체타입으로 나뉜다. 원시타입(Primitive dataType): 객체가 아닌 기본자료형이라고 하며, 변경불가능한 값으로 값에 의해 전달(pass-by-value)된다. 객체(참조)타입(Object type, Reference type):객체를 기반으로 하는 자료형으로, 참조에의한 전달(pass-by-reference)방식으로 전달된..
Nodejs 분명 nodejs는 크롬의 v8엔진을 사용한 런타임이라고 배웠다.근데 면접스터디에서 팀원이 "nodejs가 뭐에요?"라는 질문을했고, 나는 "자바스크립트를 기반의 크롬의 v8엔진을 탑재한 내pc에서 동작하는 서버입니다"라고 대답했다.그리고 팀원의 "엄밀히 말하면 틀렸습니다. 서버가 아닙니다" 라는 대답.다시공부하자..0. 등장 배경1. nodeJs란?nodejs를 한문장으로 말하자면크롬 브라우저의 V8 javascript 엔진을 탑재한 server side 오픈소스 javascript runtime이다.서버를 만드는 런타임 환경이지 nodejs가 서버는 아니다.JavaScript브라우저(크롬,사파리.웨일)에서 HTML의 생성부터 페이지의 기능을 동적으로 처리되도록 만들어주는 브라우저에서 실행되는 프로그..
SSH 오늘은 인턴 첫날~ 떨리는 마음으로 회사에갔다 오후 두시반에 미팅을 잡았기에 첫날이라 많이 배우지 못 할 줄 알았는데, 초기세팅부터 많은것을 알려주셨다. (git-Fork, Sem Ver, ssh를 이용한 git 레포지토리 접근, git subModule, bitBucket, SSH 등..) 그중 오늘의 목표는 SSH와 bitBucket, NVM으로 노드 버전 낮추고 ProseMirror과제파일 실행하기였다. 오늘한것 중 한번도 해보지않았던것은 SSH라서 오늘의 배운것으로 골랐다. 1.SSH Secure Shell(암호화된 셀)의 약자로, 네트워크를 통해 안전하게 원격으로 다른 컴퓨터에 접속하고 명령을 실행하는 프로토콜 및 프로그램이다. 즉, 암호화를통해 데이터를 보호하고 무단접근을 방지하여, 원격으로 ..
표현식과 문 변수는 하나의 값을 저장하기위해 확보한 메모리공간자체 또는 그 메모리 공간을 식별하기위해 붙인 이름으로 변수에 할당되는 것이 값이다. 1. 값(value) 과 리터럴(literal) 1. 값 값은 표현식(statement)을 평가(evaluate),참조하여 생성된 결과를 말한다. 모든 값은 데이터타입을 가지며 메모리에 2진수(bit)로 저장된다. 2. 리터럴 리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호("", ., [], {})를 사용하여 값을 생성하는 표기법이다. js에서 3은 단순한 숫자가 아니라 숫자 리터럴이다. 사람이 이해하는 숫자 3을 사용해 숫자 리터럴 3을 코드에 기술하면 자바스크립트 엔진이 이를 평가하여 숫자 값 3을 생성한다. 리터럴의종류 종류 예시 종류 예시 정수 1 객체 {..
Hoisting(호이스팅) 1. 호이스팅이란? 호이스팅이란 인터프리터가 모든(함수,변수)선언문의 메모리공간을 선언전에 미리 할당하여 상단으로 올려서 선언문을 유효범위의 최상단으로 옮겨진것처럼 작동하는 자바스크립트의 독특한 특징을 말한다. ✅ 유효범위? 변수에 접근할 수 있는 범위 ✅ block-level-scope? {}로 쌓여진 범위, let,const로 변수생성시 유효한 범위. ✅ function-level-scope? function(){}의 {}내의 범위, var로 변수생성이 유효한 범위. ✅ 유효범위의 최상단? 변수가 함수안에 정의: 선언문이 함수의 최상단으로 호이스팅 된다. 변수가 함수밖에 정의: 선언문이 전역의 최상단으로 호이스팅 된다. 아래의 코드를 보면는 인터프리터에의해 위에서부터 한줄씩 실행되기때문에 refere..
variable(변수) 애플리케이션은 데이터를 다루는데 변수는 이 데이터를 관리하기위해 사용하는 중요한 용어이다. 1. 변수에 대해서 변수는 하나의 값을 저장한 메모리공간으로 그 메모리공간을 식별하기 위해 붙인 이름이다. 메모리에 저장된 값을 식별할 수 있는 고유명을 변수명이라하고, 변수에 저장된 값을 변수 값이라 한다. 변수에 값을 저장하는것을 할당(assignment), 값을 읽어오는 것을 참조(reference)라 한다. 변수명을 사람이 이해하기 쉽게 지음으로써 가독성을 높일수있다. 2. 변수 선언과 호이스팅 쓰다보니 길어져서 따로 작성하였다. 변수를 사용하려면 반드시 변수를 선언해야한다. 변수를 선언하면 값을 저장할 메모리 공간을 확보(allocate)하고 변수명과 확보한 메모리 공간의 주소를 연결하여 값을 저장할 수 ..
텍스트 문자열 연결하기 1. 텍스트 문자열의 연결 alert함수에 텍스트를 입력하면 같은 텍스트가 항상 출력된다. 그렇다고 항상 텍스트를 교체하기는 귀찮은데 이럴때는 변수를 사용하면 변수값에따라 내용을 바꿀 수 있다. let name = "김"; console.log("안녕하세요" + name + "씨"); // "안녕하세요 김 씨" 2. 텍스트 + 텍스트 String 과 String를 합치면 String이다. 만약 띄어쓰기를 넣고싶다면 " "를 사용하면 띄어쓰기를 포함한 문자열이 출력된다. console.log("안녕" + "하세요"); console.log("안녕" + "하" + "세요"); console.log("안녕" + "하세" + "" + "요"); //위의 3가지 다 '안녕하세요' console.lo..
Math Expression 1. 수학 표현식 JavaScript는 코드에 숫자 데이터타입과 사칙연산같은 수학 표현식을 사용하여 숫자를 계산할 수 있다. 2. 생소한 수학 표현식 1. ++ / - - ++는 변수의 값에 1을 간단하게 더할 수 있게 해준다. 반대로 -- 는 변수에서 1을 빼준다. 참고로 const를 사용하면 값을 재할당을 할수 없어 에러가 뜬다. 증감연산자를 사용하는경우 ++/--의 위치에따라 다르게 사용하기때문에 주의해야한다. ++를 하면 1이 붙어서 나올것같지만 실제로는 다른값이 나올수 있다. 1) number++ 아래의 코드는 어떤 값이 나올까? let a = 1; let aPlus = a++; 나는 1과 2가 나올줄 알았는데, 답은 2와 1이였다. 이렇게 나온 이유는 대개 코드는 위에서부터 스캔하기도하지만 동..
Return 1. 함수의 return(반환) 위에 사용한 return은 함수의 값을 반환한것인데, 처음 공부했을때 이 return이라는게 이해가 안갔었다. 아래의 인용글은 처음 공부했을때 레플릿의 설명이 이해가안됬던 부분이 이다. 모든함수가 return을 포함해야하는건 아닙니다. 함수내부에 return 키워드를 생략할 수 도 있습니다. 하지만 이경우에도 함수는 무언가를 반환하고 있습니다. 함수가 반환을 생략하면 undefined라는 값을 반환합니다. return를 생략해도된다고해서 처음 공부했을때 모든함수에 변수선언만하고 return을 안써서 왜안뜨냐며 헤맸었다. 함수는 값을 불러오려고 쓰는것인데 함수내부에 점수는 이거다라고 변수선언을 해놓고 그 값을 반환하지 않으면 함수는 내 놓을 값이 없어서 undefined를 ..
Function 1. 함수란? 함수는 하나의 특정한 작업을 수행하도록 설계된 독립적인 블록이다. 블록이란 코드에서 {}로 쌓인 부분을 말한다. 블록내에서 정의된 변수를 외부에서 호출할 경우 접근할 수 없다. (반면 전역함수의 경우 모든 전역변수와 함수에 접근이 가능하다.) 이 블록에서 작동하는 범위를 함수의 유효범위라하며, 자바스크립트는 함수를 블록대신 사용할 수 있다. 1-1. 함수의 형태 함수의 형태는 function이란 키워드로 시작하여 함수의 이름을 선언하고 ()를 붙인뒤 {를 붙여 함수의 시작을 알린다. 함수에서 실행할 내용은 {}안에 작성하며 함수의 body라고 한다. body의 내용은 들여쓰기를 하는데 함수내부의 코드임을 알기 쉽게하기위하여 들여쓰는것이다. 함수의 값으로 반환할 것이 있다면 return문을 ..
JavaScript의 데이터타입 JavaScript의 데이터타입의 종류 Data(자료)란 프로그램이 처리할수 있는 모든것으로 자효형태에 따라 나눠놓은것을 자료형(DataType)이라 한다. 자바스크립트의 데이터 타입은 원시타입과 객체타입으로 나뉜다. 원시타입(Primitive dataType): 객체가 아닌 기본자료형이라고 하며, 변경불가능한 값으로 값에 의해 전달(pass-by-value)된다. 객체(참조)타입(Object type, Reference type):객체를 기반으로 하는 자료형으로, 참조에의한 전달(pass-by-reference)방식으로 전달된다. 자바스크립트는 객체기반의 스크립트 언어로 원시타입을 제외한 모든것이 객체로 이루어져있다. 원시타입 객체타입 Number Object String Boolean Null Und..
JavaScript의 역사 javaScript란? 웹사이트와 상호작용하여 페이지를 동적이게 만드는 언어로 .js라는 확장자를 가진다. 사용자가 브라우저에서 행하는것을 처리하고, 데이터를 저장하거나, 네트워크 요청(req)과 응답(res)를 처리할 수 있다. (java와는 아무 상관이 없다) 1. 자바스크립트의 역사 1. 탄생과 변명(?) 1995년 넷스케이프 커뮤니케이션즈가 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍언어를 도입하기로 결정하고 브렌던 아이크가 자바스크립트를 개발하게 된다. 1996년 3월 모카(moca)로, 9월에는 라이브스크립트(liveScript)로, 12월에는 자바스크립트(javaScript)라는 이름으로 바뀌었다. 2. 표준화 1996년 8월 마이크로소프트는 javascri..
Git 사용하기 1. github 회원가입 2. 로컬에 프로젝트 폴더 생성 원하는 위치에 폴더를 만들거나 데스크톱에 원하는 명의 폴더를 생성하면된다. 3. git repository 생성 아래의 이미지에 나온대로 하면된다. 4. git init 터미널을 열고 로컬에 생성한 프로젝트 폴더로 이동한후에 아래의 명령어를 입력한다. cd 폴더명 git init git 메인 브랜치 명 변경하기 굳이안해도 된다고생각하지만 가끔 메인으로 바꿔서 해달라는 요청이있어서 바꾼적이 있다. 아래의 명령어를 입력하면 master로 뜨던 브랜치명이 main으로 변경된다. git branch -M main 5. git 레포주소와 로컬 연결하기 git remot add origin repository address위의 명령어를 입력하면 주소가 연동..
jekyll 블로그 잔디 안심어지는 문제 깃허브 블로그를 만들어서 글을 쓰고있는데 잔디가 안심어지는 문제가 있었다.이제서야 수정하는이유는 공부하면서 만들었던 프로젝트용 레포를 지워버렸더니 잔디가 텅 비어버려서2,3월달은 펑펑 놀아버린 사람이 되었기때문....... 지금까지 추가되지않았던 블로그 기록이라도 살려야겠다.  검색을 해보니 잔디가 심어지지않는 기장 주된이유는 이 두가지라고 한다.email주소가 다르다merge되는 브랜치가 master(main)이 아니다. 일단 내경우는 위의 2가지 이유때문은 아니였다.좀 더 찾아보니 Fork한 레포지토리는 잔디가 안심어진다고한다.  나도 유튜브보고 jekyll 테마를 포크한거라 안심어지는거였다.그럼 이제 어떻게 해야하지..? 찾아보니 git mirror를 사용하면 커밋 내용까지 복사할 수 있다고한다.1..
Git이란? 1.Git 이란? Git은 분산 버전 관리 시스템(VCS)으로, 실시간으로 프로젝트 파일의 변경사항을 추적하는 시스템이다. 개발자들은 프로젝트를 진행하며 자신의 프로젝트를 자신의 컴퓨터에 저장하고, 변경사항을 기록하며, 나중에 각 버전의 프로젝트를 병합 할 수 있어 협업할때 유용하다. 또한 특정 시점으로 돌아갈 수 있어 다음 프로젝트르 진행하다 수정 요청을 받은 곳으로 다시 돌아가서 작업 할 수도 있다. 2. Git 설치 Git 은 command-line-interface(CLI)를 사용한다. CLI란? 커맨드 라인 인터페이스로 명령 줄 인터페이스라고 하며, 터미널(도스창)을 통해 사용자와 컴퓨터가 상호작용 하는 방법을 말한다. 2-1.Git을 OS에 맞춰 다운로드 다운로드 링크: https://git-..
create()와 save() mongoDB를 쓰다가 비슷한 기능을 하는 두 메소드를 발견했다. 어떤때에 create를 쓰고 어떤때에 save를 쓰는건지 궁금해져서 알아보았다. 1. 공통점 두 메서드 모두 데이터베이스에 새로운 데이터를 만드는 model 메서드이다. 2. 차이점 1. create() create() 메소드는 save()와 달리, 새로운 document를 만들어 데이베이스에 바로 저장한다. 모델 생성과 저장을 한 번에 처리할 수 있어, 코드를 간결하게 유지할 수 있다. create()를 호출할때 생성할 객체르 전달 하면 된다. //create() 사용 const Join = async (req, res) => { await User.create({ name, email, password, }); };2. save() s..
세션을 몽고디비에 연결하기 1. Session 설치하기 express-session npm i express-session을 입력하여 node.js에서 사용할 수 있도록 설치한다. const session = require('express-session')을 입력하여 불러온다. 쿠키에 세션id만 저장되고, 세션데이터는 쿠키가아닌 서버에 저장된다. 2. MongDB 연결하기 connect-mongo 설치 명령어를 터미널에 입력한다. npm install connect-mongo yarn add connect-mongoconnect-mongo를 import해준다. const session = require("express-session"); const MongoStore = require("connect-mongo");..
MongoDB 1. MongoDB란? 1. 개념 다목적용 NoSQL로 JSON과 닮은 형태의 Document 기반으로 데이터를 저장하는 데이터베이스이다. Document란? 도큐먼트는 HTML과 같은 특정 형식의 태그 구조를 의미한다. mongoDB가 데이터를 저장하는 최소 단위이다. 필드와 값의 쌍으로 구성되며, 관계를 갖는 데이터를 중첩 도큐먼트와 배열을 사용하여 1개의 도큐먼트로 표현할 수 있다. { field : value } 2. 특징 1. 도큐먼트 데이터베이스 mongoDB는 JSON(JavaScript Object Notation) 형식으로 데이터를 관리하므로 NoSQL 데이터베이스 중 도큐먼트 데이터베이스로 분류된다. 데이터 입출력 시에는 JSON 형식의 도큐먼트를 사용하나 데이터베이스 저장 시에는 이진..
transaction transaction이란? CS에서 트랜잭션은 더이상 쪼갤수없는 가장작은 엄무처리 단위를 말한다. DB에서 트랜잭션은 여러 SQL을 하나의 Operation으로 실행될 수록 있도록 하는 논리적 작업 단위로 데이터의 정합성을 보장한다. 즉, 데이터베이스의 상태를 변화시키기 위한 작업수행의 논리적 단위이다. 트랜잭션 사용시 범위를 최소화 해야한다. 비즈니스 로직의 시작부터 실행하는 것이 아니라 DBMS에 데이터를 저장하는 작업의 시작부터 걸어야한다. 연산이 길어지면 lock을 잡는 시간도 길어지고 최악의 경우엔 DB 커넥션 풀이 고갈될 수 있다. 트랜잭션의 성질(ACID) 1. 원자성(Atomicity) 트랜잭션은 All or nothing의 성질로, 연산이 중간에 중단되지 않는 것을 보장한다. 논리적인 작..
Database 1. DB(DataBase) 1. 의의 데이터(data): 자료로 단순한 정보들의 나열. 데이터베이스(database): 논리적연관성이있는 데이터를 모은 데이터의 집합으로 데이터의 저장 형태를 말한다. 데이터의 중복을 최소화하여 목적에 맞게 효율적으로 관리하기위해 사용한다. 일반적인 데이터베이스는 ISOS로, 데이터베이스의 시스템적 특징을 말할때는 R1C3으로 정의한다. 약자 정의 I(integrated Data) 통합 데이터 : 데이터 중복이 최소화 된 데이터 S(Stored Data) 저장 데이터 : 컴퓨터가 접근할 수 있는 매체에 저장된 데이터 O(Operational Data) 운영 데이터: 고유한 업무를 수행하는데 필요한 데이터 S(Shared Data) 공용 데이터: 여러 응용 시스템이 공동으..
카테고리설정 에러 드디어 블로그 사이드바에 카테고리를 만들었다. 하지만 카테고리 목록을 눌러보니 날 반겨준건 404notfound와 css가 적용이안된 화면이었다 404 NOT FOUND 경로에 문제가 있다고 생각해 경로설정을 해주었고 그렇게 해결되었다. 그렇게 찾아가며 카테고리를 만들었는데 나는 이 카테고리가 마음에 들지 않았다. 단순히 강의만보고 html로만 만들었기에 뭔가 좀더 꾸미고 한번에 적용할 수 있게 만들고 싶었다. (글쓸때마다 사이드바 네비게이션 독스쓰는게 너무 귀찮았..) 새로만든 카테고리 에러들 역시나 새롭게 만든 카테고리에서도 에러가 빠방빠방 터졌다. 텅빈 나의 카테고리 글... 경로연결 안함 카테고리 하나는 뜨고 나머지는 전부 빈화면이여서 비교해보니 카테고리 세분화를 해놓고 경로연결을 안해두었다. {..
블로그 설정 에러 요즘 다시 github블로그를 써보려고 손대고 있는데 새로운 에러를 발견했다. 스크린샷을 잘못찍어서 밑에줄이 안보이는데 syntax Error이 떴다. 135번째 줄은 사진 맨아래의 url인데 문제는 들여쓰는 위치를 맞추지않아서였고...들여쓰기 중요하구나.. 해결한줄 알았는데 또다른 YAML 에러가 발생. found character 어쩌구 하는데 8번째 줄에 문제가 있다고 한다 Double check indentation Most of the time the error comes from unexpected indentations in the YAML file. A YAML file use spaces as indentation, you can use 2 or 4 spaces for indentatio..
블로그 로컬호스트 에러 깃허브 블로그에 첫글을 쓰는것까지는 쉬웠지만 로컬호스트를 연결하는데서 정말 많은 시간이 걸렸다.지금보면 간단한거같은데 당시에는 정말 많이 헤맸다.거의 다 해결한거같지만 앞으로의 과정을 써볼까 한다.rbenv 설치 에러ruby 가상환경을 설치하고 모든 문제가 풀리는 줄 알았다.sj@gimsujeong-ui-MacBookPro ~ % rbenv versions system* 2.7.6 (set by /Users/sj/.rbenv/version)Ruby gem으로 bundler를 설치하기위해gem install bundler 를 치자 또 에러가 났다.ERROR: While executing gem ... (NoMethodError) undefined method `invoke_with_build_ar..