분류 전체보기
-
TIL.94 Javascript_Promise 이해하기TIL/Javascript 2021. 1. 10. 21:07
Promise? “A promise is an object that may produce a single value some time in the future” 프로미스는 자바스크립트 비동기 처리에 사용되는 객체입니다. 여기서 자바스크립트의 비동기 처리란 ‘특정 코드의 실행이 완료될 때까지 기다리지 않고 다음 코드를 먼저 수행하는 자바스크립트의 특성’을 의미 Promise가 필요한 이유? 프로미스는 주로 서버에서 받아온 데이터를 화면에 표시할 때 사용합니다. 일반적으로 웹 애플리케이션을 구현할 때 서버에서 데이터를 요청하고 받아오기 위해 아래와 같은 API를 사용합니다. $.get('url 주소/products/1', function(response) { // ... }); 위 API가 실행되면 서버에다..
-
TIL.93 Javascript 비동기 처리 이해하기TIL/Javascript 2021. 1. 9. 22:25
비동기 처리? 자바스크립트의 비동기 처리란 특정 코드의 연산이 끝날 때까지 코드의 실행을 멈추지 않고 다음 코드를 먼저 실행하는 자바스크립트의 특성을 의미합니다 비동기 처리의 첫 번째 사례 비동기 처리의 가장 흔한 사례는 제이쿼리의 ajax입니다. 제이쿼리로 실제 웹 서비스를 개발할 때 ajax 통신을 빼놓을 수가 없습니다. 보통 화면에 표시할 이미지나 데이터를 서버에서 불러와 표시해야 하는데 이때 ajax 통신으로 해당 데이터를 서버로부터 가져올 수 있기 때문입니다. 그럼 ajax 코드를 잠깐 살펴보겠습니다. function getData() { var tableData; $.get('https://domain.com/products/1', function(response) { tableData = r..
-
TIL.92 Javascript_Reduce 함수TIL/Javascript 2021. 1. 8. 23:41
reduce() 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다. reduce를 덧셈 함수이긴 하나 그 부분만 있는 것이아니다. 대부분의 사이트에서 reduce 사용 예시를 덧셈으로 들고 있기 때문이다. 하지만 reduce는 map과 함께 굉장히 중요하고 강력한 녀석으로 맵리듀스라는 프레임워크도 있을 정도이다. 배열.reduce((누적값, 현잿값, 인덱스, 요소) => { return 결과 }, 초깃값); 이전값이 아니라 누적값이라는 것에 주의하셔야 합니다. 누적값이기 때문에 다양하게 활용할 수 있습니다. const array1 = [1, 2, 3, 4]; const reducer = (accumulator, currentValue) => accumula..
-
TIL.91 Javascript_Filter 함수TIL 2021. 1. 7. 12:54
Filter() 배열을 순회하며 요소마다 조건 확인 후 조건을 만족하는 원소들로 구성된 새로운 배열 리턴한다 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다. 이름 그대로 요소를 걸러내는 것을 목적으로 한다. let newArray = arr.filter(callback(currentValue[, index, [array]]) { // return element for newArray, if true }[, thisArg]); 반환 값 테스트를 통과한 요소로 이루어진 새로운 배열. 어떤 요소도 테스트를 통과하지 못했으면 빈 배열을 반환합니다. parameter 눈으로 확인하기 let numbers = [1, 4, 9] let parameters = numbers.filter((..
-
TIL.89 Javascript_map 함수TIL/Javascript 2021. 1. 5. 13:52
map() method는 호출 배열의 모든 요소에 대해 제공된 함수를 호출 한 결과로 채워진 새 배열을 만듭니다 . 배열.map((요소, 인덱스, 배열) => { return 요소 }); map함수는 callbackFunction을 실행한 결과를 가지고 새로운 배열을 만들 때 사용한다. array.map(callbackFunction(currenValue, index, array), thisArg) callbackFunction, thisArg 두개의 매개변수가 있고 callbackFunction은 currentValue, index, array 3개의 매개변수를 갖는다. currentValue : 배열 내 현재 값 index : 배열 내 현재 값의 인덱스 array : 현재 배열 thisArg : ca..
-
TIL.88 Decorator(토큰 인가)_Unit TestTIL/Python 2021. 1. 4. 16:35
유닛 테스트를 작성하다 보면 토큰 인가를 구현하여 우리 서비스에 대한 접근을 허가하고자 할때 utils.py를 이용한 토큰 인가를 데코레이터로서 활용한다. 이를 이용해 유료/무료 서비스 가입자 인지, 우리 서비스를 이용하고 있는 회원이 맞는지 등을 토큰을 이용해 검증하고 그에 맞는 접근 권한을 부여한다. 그럼 유닛테스트에서는 이를 어떻게 구현 할 수 있을까? 정답은 없고 다양한 방법이 있겠지만 두 가지 방법을 알아보도록 하자. 1. setUp에 토큰을 생성하고 setUp 메서드를 활용하는 방법 (추가로 아래와 같은 오류가 날때는 setUp의 테이블 id를 생성하거나 지워보자 id값을 기본적으로 추가할때마다 자동으로 올라가는점을 잊지말자) django.db.utils.IntegrityError: (1062..
-
MySQL.3 루트비밀번호 초기화MySQL 2021. 1. 3. 12:26
하루에 한번 반드시 내 로컬 DB가 초기화되는 현상이 4일간 지속되었다. 이거 설마 로컬 DB 털릴게 아닐까하고 공유기 비밀번호도 바꿔보고 뻘짓을 열심히하던 도중 순간 유닛테스트 진행 하고 나서 테이블이 새로 생성되는거을 발견하여 확인해보니 유닛테스트 클래스의 종속 관계를 잘못설정해서 실제 DB에 접근하고 있었던 것이었다!!!! 이건 추후 정리해보면 재밌을것같다. 따라서 MySQL root@localhost 비밀번호를 변경하려 한다 무수히 많은 방법이 나오지만 여기서 정리하는 방법이 정답이라 할 수 없지만 아래 방법으로 정상적으로 해싱까지 완벽히 마무리되어 저장되는것을 확인 할 수 있었다. 참고로 루트 비밀번호를 초기화하는 과정이 있지만 나는 비밀번호를 잊어버린것이 아니기에 mysql 접속은 문제가 없었..
-
TIL.86 Mocking, PatchingTIL 2021. 1. 2. 23:37
왜? Mocking을 사용해야 할까 프로젝트 진행간 KaKao 소셜 로그인 API를 맡아 진행하던 중 프론트에서 카카오플랫폼으로 요청하여 얻은 kakao_token을 전달받고 전달받은 kakao_token을 이용해 카카오플랫폼으로 전달받은 kakao_token을 이용하여 토큰에 해당하는 유저 정보를 가져와보았다. 2차 프로젝트 시작 전부터 소셜 로그인 API를 구현해보고자 목표를 세웠다. 한가지 아쉬운점은 현재 진행하는 Clone 프로젝트는 항공 예약을 주된 기능으로 사용하여 kakao_token을 이용해 카카오 서버에서 받은 유저 정보를 모두 활용하여 바로 우리 서비스에 가입시킬수 없었다. 현재 프로젝트 중인 서비스에 가입하기 위해선 카카오에서 제공하지 않는 english_name, phone_numb..