본문 바로가기

전체 글56

Big-O 표기법이란? 주요 시간복잡도 코드 예시(python) 알고리즘 평가 점근 표기법(Big-O Natation) 알고리즘 분석에서 시간복잡도(Time complexity)에 사용되는 방법, 절대적인 시간보다 성장성에 의미를 둔다. 1. List operations -리스트의 길이가 n일 때 ❣️ Operation Code Average Case 인덱싱 my_list[index] O(1) 정렬 my_list.sort()sorted(my_list) O(n\lg{n} 뒤집기 my_list.reverse() O(n) 탐색 element in my_list O(n) 끝에 요소 추가 my_list.append(element) O(1) 중간에 요소 추가 my_list.insert(index, element) O(n) 삭제 del my_list[index] O(n) 최솟값,.. 2022. 10. 22.
python 탐색 알고리즘(선형탐색, 이진탐색) 예시 코드 탐색 알고리즘 : 알고리즘을 이용하여 어떤 원소가 리스트 안에 포함되어 있는 지 확인 선형 탐색(Linear Search) : 리스트의 처음부터 끝까지 순서대로 하나씩 탐색 진행 -시간 복잡도 → O(n) def linear_search(element, some_list): for i in range(len(some_list)): if some_list[i] == element: return i print(linear_search(2, [2, 3, 5, 7, 11])) print(linear_search(0, [2, 3, 5, 7, 11])) print(linear_search(5, [2, 3, 5, 7, 11])) print(linear_search(3, [2, 3, 5, 7, 11])) print(l.. 2022. 10. 22.
Test Code(Jest사용한 테스트 코드 작성법 및 유용한 메서드) Test Code 📓 테스트 코드란? 이름에서 알 수 있듯이 내가 작성한 코드가 실제로 제대로 동작하는 지 테스트하는 코드 필요성 애플리케이션의 모든 기능을 테스트하거나 코드를 변경할 때마다 테스트하기 어려울 것이므로 테스트 자동화가 필요하다. 작성한 코드가 실행되는 과정을 정의하고 테스트할 시나리오들을 정의해 중요한 변경 사항이 생길 때마다 자동으로 테스트를 실행하도록 설정하는 것 장점 단위 테스트를 시행하면 개발단계 초기에 문제를 발견할 수 있음 작성한 코드들에 대하여 수시로 빠르게 검증 받을 수 있음 코드 리팩토링이나 업그레이드 등 변경사항이 있을 때 기존 기능이 제대로 작동하는지 확인할 수 있음 기능에 대한 불확실성을 감소시킬 수 있음 단점 정의해둔 부분만 테스트할 수 있고 사용자가 보는 화면을 .. 2022. 10. 20.
Nodemailer 에러콜렉터의 에러해결 Error: Invalid login: 535-5.7.8 Username and Password not accepted. Learn more at(2022.10.18최신!) 에러 1 : Missing credentials for "PLAIN” 🤓 원인 ? : nodemailer에서 패스워드 부분 잘 못되어서 생긴 에러 ! 🤔 해결방법 const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'sasha.gwak@gmail.com', pass: process.env.EMAIL_PASS, // 비밀번호 맞는지 재확인 필요 ! }, tls: { rejectUnauthorized: false } }) 에러 2 ⭐️ : Error: Invalid login: 535-5.7.8 Username and Password not accepted. Learn more at 🤓 원인 ? : 구글 보안 정책에.. 2022. 10. 18.
Session을 MongoDB에 저장하기 📓 Session을 DB에 저장하는 이유? 세션이 메모리에 저장되는데 실제 서버의 경우 수천, 수십 만명의 사용자가 있는 상황에서 그 모든 정보를 메모리에 저장한다면 메모리가 빠르게 오버플로우되는 문제가 발생할 수 있음 ❣️ 1. 패키지 설치 express 세션 readme 에서 세션 스토어 목록을 확인한 뒤 사용할 DB에 따라 맞는 패키지 설치 npm install -save connect-mongodb-session ❣️ 2. app.js /* DB */ const mongoose = require('mongoose'); const User = require('./models/user'); const MONGODB_URI = process.env.mongodb_URI; /* session */ con.. 2022. 10. 13.
MongoDB 클러스터 생성 및 서버와 연결하기 오늘은 MongoDB의 기본! 클러스트를 생성하고, 서버와 연결하는 과정을 정리해보았다. 먼저, MongoDB페이지로 들어간다. ❣️ 1. 새로운 클러스트를 구축 할 수있는 페이지 열기 ❣️ 2. 지역 한국으로 선택! ❣️ 3. 클러스트 tier 선택 → 나는 무료버전으로 진행! ❣️ 4. 클러스트 네임 지정 ❣️ 5. Security → Database Access → Database Users 에서 사용자 만들어서 read and write 권한 부여해주기→ atlas로 설정해줘도 되지만 읽고쓰는 권한이 더 현실적임 Node가 나중에 DB 읽고 쓸 수는 있지만 관리할 권한은 없는 것으로 간주하도록 역할을 설정해 줘야하고, node를 통해 데이터베이스 관리를 진행하지는 않을 것이기 때문이다 ❣️ 6. .. 2022. 10. 11.
Javascript call, apply, bind method 설명 및 예제 call 모든 함수에서 사용할 수 있으며, this를 특정값으로 지정할 수 있음 ∙ 기본 문법 : fun.call([thisObj[, arg[, arg2[, ...]]]]) ❣️ 예시 1 const mike = { name: "Mike" }; const tom = { name: "Tom" }; function showThisName(){ console.log(this.name); } showThisName(); showThisName.call(mike); // mike showThisName.call(tom); // tom // 첫번째 매개변수로 객체를 제공하면 this가 그 객체에 묶임 ❣️ 예시 2 const mike = { name: "Mike" }; const tom = { name: "Tom" .. 2022. 10. 8.
나머지 매개변수(Rest parameters), 전개구문(Spread syntax) Spread syntax 이름 그대로 객체 혹은 배열들을 펼칠 수 있게 해줌 ❣️ 예시 1 let arr1 = [1, 2, 3]; let arr2 = [4, 5, 6]; let result = [0. ...arr1, ...arr2, 7, 8, 9]; // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ❣️ 예시 2 let user = {name: 'Mike', age:30 }; let user2 = {...user}; user2.name = "Tom"; console.log(user.name); // "Mike" console.log(user2.name); // "Tom" Arguments ∙ 함수로 넘어온 모든 인수에 접근 ∙ 함수내에서 이용 가능한 지역 변수 ∙ Array 형태의 객체로 ∙ .. 2022. 10. 8.
String methods, Array methods(문자열, 배열 메서드 정리📓) Node.js를 사용하면서 Javascript를 쓸때 부족함을 계속 느끼고 있어서 사람들을 모아 중급 자바스크립트 강의를 들으며 정리한지도 3일째! 오늘은 쪽지 시험날으로 복습도 할 겸 정리했던 개념을을 조금 포스팅 해보려고 한다. 스터디를 하며 이전에 알던 개념도 있고, 새로 알게된 부분도 있지만 언제나 정리해나가는 과정은 항상 꼭 필요하고 생각한다. 오늘도 화이팅~~! 💜 String methods toUpperCase() : 모든 문자 대문자로 반환 toLowerCase() : 모든 문자 소문자로 반환 indexOf(text) : 배열을 문자로 받아 몇번째 위치하는 지 알려줌 let desc = "Hi guys. Nice to meet you."; desc.indexOf('to'); // 14 //.. 2022. 10. 6.