prototype 프로퍼티 모든 함수는 객체로서 prototype 프로퍼티를 가지고 있다. prototype 프로퍼티는 함수가 생성될 때 만들어지며 constructor 프로퍼티 하나만 있는 객체를 가리킨다. constructor 프로퍼티는 prototype 프로퍼티를 참조하며 서로 참조하는 관계를 가진다. 함수의 다양한 형태 자바스크립트에서 함수 표현식에서 함수이름은 필수 사항이 아니다. 함수이름을 붙이지 않은 것을 익명함수라고 하고 대표적으로 콜백함수가 있다. 콜백함수 콜백 함수란 코드를 통해 명시적으로 호출되는 함수가 아닌 어떤 이벤트나 특정 시점에 도달했을때 시스템에서 호출되는 함수를 말한다. 이벤트 발생 -> 이벤트 핸들러가 함수 호출 -> 콜백함수 (개발자가 등록) window.onload 이..
JavaScript - 1 자바스크립트는 하나의 숫자형 Number 타입만 존재하고 double과 같이 64비트 실수로 저장한다. var num = 5 / 2; console.log(num); // 2.5 console.log(Math.floor(num)); // 2 console.log(Math.ceil(num)); // 3 in 키워드를 사용하였을 경우 property의 키 값에 해당된다 배열의 경우 인덱스, 프로퍼티의 경우 key 값 var str = "my test"; for (str_temp of str) { console.log(str_temp); } // m y t e s t 출력 for (str_temp in str) { console.log(str_temp); 객체 객체 생성 두가지 방법..
숫자 맞히기 게임 참고 사이트 Number guessing game We have selected a random number between 1 and 100. See if you can guess it in 10 turns or fewer. We'll tell you if your guess was too high or too low. Enter a guess: 데이터를 저장할 변수를 추가한다. 변수는 let 키워드를 통해 생성할 수 있다. 상수는 const 키워드를 통해 생성할 수 있다. let randomNumber = Math.floor(Math.random() * 100) + 1; const guesses = document.querySelector('.guesses'); const lastRe..
저번 포스팅에서 Spring MVC 흐름을 알아 보았다. [ Request 흐름 ] 그림으로 보면 Servlet Container에 진입하기 전 Web Server (Apache) 에 필터가 존재하여 요청과 응답을 거르는 역할을 한다. Dispatcher Servlet에 요청이 전달되기 전과 후에 url 패턴에 맞는 모든 요청에 대해 부가 작업을 처리할 수 있는 기능을 제공하고, 스프링 컨테이너에서 관리되는 것이 아닌 웹 컨테이너에 의해 관리되는 특징이 있다. ( Spring Bean 으로 등록 가능하다. ) [ Filter ] 필터를 사용하기 위해서는 아래 코드와 같은 Filter 인터페이스를 구현하여 사용해야 한다. public interface Filter { public default void i..
파이썬 크롤링 라이브러리로 크게 BeautifulSoup4, requests, , selenium, scrapy 등이 있다. [ BeautifulSoup4 ] BeautifulSoup4는 파이썬 내장 모듈인 requests, urllib를 이용해 HTML 을 받아오고 beautifulSoup로 추출한다. 장점 쉽고, 빠르고(병렬 처리시), 간단하다. 단점 HTML을 받아오기 때문에 SPA (ex. vue.js에서 라우팅 기능을 사용하여 페이지를 하나만 유지시키는 것)이나 js가 적용된 페이지를 크롤링하기엔 어렵다. [ lxml ] 기본적으로 BeautifulSoup에서는 BeautifulSoup(html, 'html.parser') 와 같이 html parser 를 사용할수도 있지만 lxml 모듈을 설치..
[ Spring MVC ] Spring에서 제공하는 웹 모듈로 Model, VIew, Controller 구성요소를 사용해 클라이언트의 요청을 처리하고 다양한 리턴 응답을 할 수 있는 프레임워크이다. [ MVC 흐름도 ] 클라이언트의 요청은 DispatcherServlet에게 전달된다. DispatcherServlet은 해당 요청을 분석하여 HandlerMapping 목록에서 이 요청을 처리할 수 있는 핸들러를 가져온다. DispatcherServlet은 HandlerAdapter 목록 중 2번 과정에서 가져온 핸들러를 지원(support)하는 HandlerAdapter를 가져온다. DispatcherServlet은 3번 과정에서 가져온 HandlerAdapter.handle()을 호출한다. Handle..
[ 크롤링, 스크래핑, 파싱의 차이 ] [ 웹 크롤링 ] 크롤러라는 봇이 존재하며, 조직적, 자동화된 방법으로 www 을 탐색하는 프로그램이며, 여러 인터넷 사이트를 수집 후 분류하고 분류 한 데이터를 저장한 뒤 인덱싱하는 작업을 말한다. [ 웹 스크래핑 ] 웹 크롤러로 페이지의 정보를 얻고 구역별로 HTML의 태그의 정보로 데이터를 추출하는 것을 의미하며 크롤링은 웹 스크래핑의 방법 중 하나이다. [ 파싱 ] 어떠한 웹 페이지에 대해 내가 원하는 데이터를 특정패턴, 순서로 추출하여 정보로 가공한다. [ 결론 ] 크롤링은 여러 웹페이지를 탐색하고 스크래핑을 통해 특정 페이지의 정보를 추출 후 파싱하여 우리가 원하는 데이터 형태로 가공한다. [ 웹 스크래핑의 한계 ] 웹 페이지가 수정될 경우 스크래핑이 중..
[ JPA ] JPA ( Java Persistence API )로 자바 진영의 ORM 기술 표준이다. JPA는 인터페이스의 모음이다. (JPA 2.1 기준 HIbernate, EclipseLink, DataNucleus 의 표준 명세를 구현했다.) [ ORM ] ORM (Object-Relational Mapping) 로 객체는 객체데로 RDB는 RDB대로 설계 후 ORM 프레임워크가 중간에서 매핑한다. [ 장점 ] 생산성 : CRUD의 편의 제공 유지보수 : 클래스의 필드가 바뀌었을 때 SQL문을 일일히 수정할 필요가 없다. ( JPA를 사용하면 SQL문을 사용하지 않는다) 패러다임의 불일치 해결 : 동일한 트랜잭션안에서 조회한 엔티티는 메모리에 위치가 같음을 보장 더보기 String memberId..
[ Lambda ] [ 람다함수 ] 프로그래밍 언어에서 사용되는 개념으로 익명함수를 지칭하며 함수를 단순하게 표현하는 방법. [ 장점 ] 코드의 간결성 : 복작한 식을 단순히 표현 가능. 지연연산 수행 : 지연실행 함으로 불필요한 연산을 최소화한다. 지연실행이란 프로그램이 실행될 때 메소드가 메모리에 올라가 있는 상태가 아닌 코드에서 필요할때만 실행되는 (Lazy Loading)것을 의미한다 병렬처리 가능 : 멀티쓰레드를 활용하여 병렬처리 가능. (Stream 이용) [ 단점 ] 람다식의 호출이 까다롭다. 람다 Stream 사용 시 for, while 문보다 비효율적일 수 있다. for, while 문은 break를 통해 탈출조건을 만들 수 있지만 stream.forEach()의 경우 조건이 만족됬다할지..
빌드 관리 도구 프로젝트에서 작성한 코드와 xml, yml, properties, jar 파일을 JVM이나 Tomcat이 인식할 수 있도록 패키징 해주는 빌드 과정을 빌드 자동화 도구라고 말할 수 있으며 앱 개발 시 다양한 외부 라이브러리를 설치하고 해당 라이브러리를 사용한다. 이때 라이브러리를 모두 다운받지 않고 빌드도구 설정파일에 의해 필요한 라이브러리 종류와 버전과 종속성을 명시하여 명시된 내용을 바탕으로 다운로드 해주는 도구를 빌드 관리 도구라고 한다. [ Maven ] 더보기 Java 용 프로젝트 관리도구로서 Apache의 Ant 대안으로 만들어짐. 프로젝트, 빌드 순서, 외부 라이브러리 종속성 관계를 pom.xml에 명시 외부 저장소에서 필요한 라이브러리와 플러그인을 설치 후 로컬 캐시에 모두..