본문 바로가기

Language

(101)
<자바스크립트> 프라미스 체이닝과 에러 1. 프라미스 체이닝 * 체이닝 - 콜백에서 언급했듯이 비동기 작업을 순차적으로 처리해야할 상황이 있다. 이 때 프라미스 체이닝을 사용하며 효율적으로 이를 다룰 수 있다. new Promise(function(resolve, reject) { setTimeout(() => resolve(1), 1000); }).then(function(result) { console.log(result); // 1 return result * 2; }).then(function(result) { console.log(result); // 2 return result * 2; }).then(function(result) { console.log(result); // 4 return result * 2; }); - setT..
<자바스크립트> 프라미스 1. 프라미스 * 소개 - 제작 코드(producing code) : 원격에서 스크립트를 불러오는 것 같이 시간이 걸리는 코드 - 소비 코드(consuming code) : 제작 코드의 결과를 사용하는 코드 - 프라미스(promise) : 제작 코드와 소비코드를 연결해 주는 자바스크립트 객체 - 프라미스 문법은 다음과 같다. let promise = new Promise(function(resolve, reject) { // executor }); - 실행자(executor)의 인수 resolve와 reject는 자바스크립트가 자체적으로 제공하는 콜백이다. - 인수로 넘겨준 resolve와 reject중 하나를 반드시 호출해야 한다. - resolve(value) : 성공적으로 일이 끝난 경우 결과를 v..
<자바스크립트> 콜백 1. 콜백 * 소개 - 실무에서 비동기 동작처리를 할 때 생기는 문제를 먼저 살펴보자. - 대표적인 비동기 동작으로 스크립트나 모듈을 로딩하는 것이 있다. function loadScript(src) { let script = document.createElement('script'); script.src = src; document.head.append(script); } - 위는 src에 있는 스크립트를 불러와서 다큐먼트에 추가하는 함수이다. 이 안에는 우리가 사용하고 싶은 harryFunc라는 함수가 들어있다고 가정하자. loadScript('/harry/script.js'); harryFunc(); - 위에서 정의한 함수를 사용하여 스크립트를 불러오고 함수를 실행했다. 그러나 안타깝게도 에러가 발..
<자바스크립트> try catch & 에러 1. try catch * 소개 - try catch문법은 에러를 잡아서 다룰 수 있게 도와준다. try { // ... } catch (err) { // ... } - 위와 같은 꼴을 하고 있으며, 먼저 try 내부의 코드를 실행한다. 에러가 없으면 catch를 건너뛰고 에러가 있으면 임의의 인자 err에 에러객체를 담아 catch를 실행한다. - 이렇게 하면 에러가 발생하더라도 스크립트가 죽지 않고 에러를 별도로 처리할 수 있다. - try catch는 런타임 에러에만 동작하므로 우선 실행 가능한 코드를 작성해야한다. - try catch는 동기적으로 작동하므로 try내부에 스케줄 된 코드를 작성하면 에러를 잡아내기 힘들다. 이럴 때는 스케줄된 함수 내부에 try catch를 작성하면 된다. * 에러..
<자바스크립트> 클래스의 기본과 상속 1. 클래스 기본 문법 * 클래스란 - 클래스는 객체 지향 프로그래밍에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀이다. - 클래스는 전부 혹은 일부를 그 클래스 특성으로부터 상속받는 서브클래스를 가질 수 있으며, 클래스는 각 서브클래스에 대해 수퍼클래스가 된다. - 동일한 종류의 여러 객체를 생성할 때 new function을 사용할 수도있지만 자바스크립트의 클래스 문법을 사용하면 객체 지향 프로그래밍의 다양한 기능을 사용할 수 있다. * 기본 문법 - 클래스를 만드는 기본 문법은 다음과 같다. class MyClass { constructor() { ... } method1() { ... } method2() { ... } method3() { ... } ... } - 위와 같이 ..
<자바스크립트> 프로토타입 1. 프로토타입 상속 - 개발에서 기존의 객체가 가지고 있는 기능을 확장해서 비슷한 객체를 만들어야 하는 일이 흔하다. 이 때 사용할 수 있는 것이 프로토타입 상속이다. * [[Prototype]] - 자바스크립트 객체는 [[Prototype]] 이라는 숨김 프로퍼티를 갖는다. 이는 null 또는 다른 객체에 대한 참조가 되며, 다른 객체를 참조할 경우 그 대상을 프로토타입이라 부른다. - 객체에서 프로퍼티를 읽으려고 할 때, 해당 프로퍼티가 없으면 자동으로 프로토타입에서 그 프로퍼티를 찾는데, 이를 '프로토타입 상속'이라 부른다. - __proto__를 통해 값을 설정할 수 있다. __proto__는 [[Prototype]] 그 자체는 아니며, [[Prototype]]의 getter이자 setter이다..
<자바스크립트> JSON과 메서드 1. JSON - 복잡한 객체를 다룰 때, 객체를 보내거나 출력하는 상황에서 객체는 문자열로 전환되어야 한다. 이러한 상황을 유연하게 대처하기위해 JSON이 등장했다. - JSON(JavaScript Object Notation)은 값이나 객체를 나타내주는 범용 포맷이다. - 현재에는 라이브러리를 이용하여 다른 언어에서도 사용하게 되어 JSON을 데이터 교환 목적으로 많이 사용한다. - 대표적인 메서드로 .stringfy(객체를 JSON으로 변경)와 .JSON.parse(JSON을 객체로 변경)이 있다. 2. JSON.stringfy * stringfy - stringfy메서드는 말 그대로 객체를 문자열인 JSON으로 변경하는 메서드이다. let student = { name: 'Harry', age: ..
<파이썬> 2차원 배열 정렬 1. 기본적인 리스트 정렬 * sort 정렬 - sort는 리스트에서 제공되는 기본적인 메서드이다. 주로 아래와 같이 사용한다. lst = [2, 3, 5, 6, 1, 4] lst.sort() print(lst) # [1, 2, 3, 4, 5, 6] - sort 는 기본적으로 오름차순 정렬이다. 인자로 key, reverse를 넣어서 변형이 가능하다. lst = [2, 3, 5, 6, 1, 4] lst.sort(reverse=True) print(lst) # [6, 5, 4, 3, 2, 1] - 위는 reverse를 True로 하여 내림차순 정렬을 시행한 것이다. * key 사용하기 - 이번에는 key를 사용해보자. key는 함수의 결과에 따라 정렬을 할 수 있다. lst = ["one", "two", ..
<자바스크립트> 구조 분해 할당 * 배열 분해 - 개발을 하다보면 객체나 배열의 원소들을 변수로 받아야 할 상황이 있다. 이 때 유용하게 쓰이는 것이 구조 분해 할당이다. - 배열의 원소가 변수로 각각 할당되는 예시를 보자. let arr = ["Harry", "Yoon"] let [firstName, lastName] = arr; console.log(firstName) // Harry console.log(lastName) // Yoon - 배열의 원소가 각각 firstName과 lastName에 순서대로 할당되었음을 알 수 있다. - 이렇게 하면 배열의 요소를 인덱스로 이용해서 하나하나 할당하는 것보다 훨씬 효율적이다. - 위의 경우 배열 대신 "Harry Yoon".split(' ') 을 넣더라도 동일하게 동작할 것이다. - 배..
<파이썬> 리스트 컴프리헨션 * 소개 - 기존에 리스트의 원소를 반복작업으로 추가할 때 for문을 사용해서 하나하나 추가했으나, 최근에 문제를 풀며 리스트 컴프리헨션의 필요성을 느꼈다. 반복되는 원소를 넣을 때 리스트 컴프리헨션을 사용하면 한 줄만에 리스트를 초기화 및 제작할 수 있다. - 리스트 컴프리헨션은 쉽게 말해서 [](대괄호) 안에 반복문을 넣어서 쉽게 원소들을 넣는 것을 일컫는다. 추가적으로 조건문도 사용할 수 있다. array = [i for i in range(5)] print(array) # [0, 1, 2, 3, 4] - 기본적으로 위와 같이 사용한다. 가장 앞의 i는 ',' 를 붙여가며 넣을 원소를 의미한다. - 뒤의 반복문은 원소를 어떤식으로 바꿔가며 넣을지를 의미한다. - 가장 쉽게 쓰는 방법은 일단 대괄호를..