전체 글
Swift를 공부하다보면 'in'이 들어간 코드를 자주 보게된다. 물론 코드의 흐름상 이거겠지 하고 사용하는 중이지만 정말 용도가 무엇인지 궁금하여 한번 검색해봤다. 결론부터 말하자면 익명함수에서 사용한다. 아래와 같이 함수명이 있는 경우는 상관 없지만 func say(s:String)->() { // body } 익명함수의 경우 함수 선언부가 없기 때문에 in을 대신해서 사용한다. { (s:String)->() in // body } 참고자료 https://stackoverflow.com/questions/30379108/swift-in-keyword-meaning
MVC (Model-View-Controller) MVC는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴이다. 어플리케이션을 Model, View, Controller 세 개의 영역으로 분할하고 각 구성 요소에게 고유한 역할을 부여하는 개발 방식이다. MVC 패턴을 도입한다면 '비즈니스 로직' 영역과 'UI 영역'이 분리되므로 서로 영향을 주지 않고 유지보수가 가능하다. MVC 패턴 구조를 살펴보면서 각 모델이 무슨 역할을 하는지 확인해보자. Model 앱이 포함해야할 정보, 데이터가 무엇인지를 정의한다. 데이터베이스, 처음의 정의하는 상수, 초기화 값, 변수 등을 뜻한다. 데이터 상태 변경에 따라 일반적으로 View에게 알린다. 필요에 따라 화면을 변경할 수..
구글에서 "zero-day exploit" 즉 "제로데이 취약점"에 대한 보안 수정 프로그램을 발표했다. Chrome version 99.0.4844.84 "zero-day exploit"란"한 번도 본 적 없는, 보안 취약점"을 의미하며, 관계자들도 파악하지 못한 상태로 이름처럼 이를 고칠 시간이 0일(제로데이)라는 뜻이다. 이번 업데이트에서 감춘 취약점은 시스템을 완벽히 통제할 수 있는 심각한 보안사항 문제이다. 더욱 문제인 점은 이미 몇 번 해당 취약점을 활용한 공격이 있었다는 것이다. 그렇다면 '크롬' 브라우저만 문제인 것일까? 결론부터 말하자면 아니다. 대다수의 브라우저도 문제가 된다. 왜냐하면 취약점은 '크롬'에 있는 것이 아닌 Chromium의 V8 Js Engine에 있기 때문이다. 우리가..
실행 컨텍스트는 Js를 한다면 꼭 알아야 하는 중요한 핵심 개념 중 하나다. 이 글을 기회로 한번 정리해보고자 한다. 실행 컨텍스트에서 알아야 할 기본 개념인 Stack & Queue를 먼저 알아보자. 스택 stack : 출입구가 하나뿐인 깊은 우물 같은 데이터 구조 / a, b, c, d 순서로 데이터가 들어가면 나올 때는 d, c, b, a로 나온다. 큐 queue : 양쪽 모두 열려있는 파이프 같은 데이터 구조 / a, b, c, d 순서로 데이터가 들어가면 나올때는 a, b, c, d로 나온다. 실행 컨텍스트란? 실행할 코드에 제공하는 환경 정보를 모아 놓은 객체 동일한 환경에 있는 코드들을 실행할 때 필요한 환경 정보들을 모아 컨텍스트를 구성하고, 콜 스택에 쌓아 올린 후, 가장 위에 쌓여있는 ..
ES6 모듈은 자바스크립트 코드를 담고 있는 하나의 파일입니다. 즉, 하나의 파일 = 하나의 모듈이라고 볼 수 있다. //hello.js export function hello(name) { console.log(`hello ${name}`); } export 키워드를 이용하여 모듈 내의 특정 코드를 외부에서 사용할 수 있다. //app.js import { hello } from './hello.js'; hello('dpark'); // hello dpark 출력 import 키워드를 이용해서 export 한 코드들을 가지고 올 수 있다. 다른 모듈에서 내보낸 코드를 하나의 모듈에서 import 하게 되면 도 모듈은 서로 의존하게 되는 '의존 관계'를 맺어 '의존성 그래프'가 형성이 된다. '의존성 그..
RESTful API란 웹상에서 사용되는 여러 자원을 HTTP URI로 표현하고 그 리소스에 대한 행위를 HTTP Method를 통해 해당 자원에 대한 CRUD 명령을 적용한 것이다. 간단하게 정의하면 정보를 주고받음에 있어서 개발자들끼리 널리 주고받는 형식이다. REST (REpresentational State Transfe) 웹에 존재하는 모든 리소스(데이터, 이미지 등..)에 공유한 URI를 부여하여 자원에 대한 주소를 지정하는 방법론이다. API (Application Programming Interface) API는 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청 명령을 받을 수 있는 수단을 의미한다. 여기에 API가 붙은 RESTful API는 REST의 특징을 지키면서 API를 제공..
1. arr.join([separator]) : 배열을 문자열로 - 배열의 모든 요소를 연결해 string으로 리턴 - separator를 통해 문자열을 구분한다.(separator가 빈 문자열이면 요소들 사이에 아무 문자 없이 연결된다.) let a = ['바람', '비', '불']; let myVar1 = a.join(); // '바람,비,불' let myVar2 = a.join(', '); // '바람, 비, 불' let myVar3 = a.join(' + '); // '바람 + 비 + 불' let myVar4 = a.join(''); // '바람비불' 2. str.split([separator[, limit]]) : 문자열을 배열로 - separator (선택사항) : 원본 문자열을 끊어야 하는 ..
Promise, async & await는 왜 생겨나게 되었을까? 아마 코딩을 공부한다면 무조건 한 번은 보았을 위의 그림 같이 하나의 비동기 비동기 계산이 다른 비동기 계산의 결과에 의해 처리되어야 하는 경우가 많다. 이러한 경우가 계속 중첩이 되다 보면 위의 그림과 같은 콜백 지옥을 만나게 되는 이를 보다 명료한 코드로 작성하고 예외처리를 손쉽게 하기 위해 만들어졌다. Promise 정의 Promise 객체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타낸다. 프로미스를 사용하면 비동기 메서드에서 마치 동기 메서드처럼 값을 반환할 수 있다. 다만 최종 결과를 반환하는 것이 아니고, 미래의 어떤 시점에 결과를 제공한다. (MDN) 완료되면 하나의 값을 결과로 반환하는데 실패하여 정상..



